updated page and added subscribe

This commit is contained in:
Rushil Umaretiya 2020-08-20 16:05:08 -04:00
parent 3b5f0c0fe6
commit aca9dd95a6
110 changed files with 21827 additions and 0 deletions

View File

@ -0,0 +1,75 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
/*
Plugin Name: Child Theme Configurator
Plugin URI: http://www.childthemeconfigurator.com
Description: When using the Customizer is not enough - Create child themes and customize styles, templates, functions and more.
Version: 2.5.6
Author: Lilaea Media
Author URI: http://www.lilaeamedia.com
Text Domain: child-theme-configurator
Domain Path: /lang
License: GPLv2
Copyright (C) 2014-2018 Lilaea Media
*/
// define CTC constants
defined( 'LF' ) or define( 'LF', "\n" );
defined( 'CHLD_THM_CFG_DIR' ) or define( 'CHLD_THM_CFG_DIR', dirname( __FILE__ ) );
defined( 'CHLD_THM_CFG_URL' ) or define( 'CHLD_THM_CFG_URL', plugin_dir_url( __FILE__ ) );
defined( 'CHLD_THM_CFG_OPTIONS' ) or define( 'CHLD_THM_CFG_OPTIONS', 'chld_thm_cfg_options' );
// activate autoloader
spl_autoload_register( 'chld_thm_cfg_autoload' );
function chld_thm_cfg_autoload( $class ) {
$base = str_replace( 'ChildThemeConfigurator', '', $class );
$file = dirname( __FILE__ ) . '/includes/classes/' . ( '' == $base ? 'Core' : $base ) . '.php';
if ( file_exists( $file ) )
include_once( $file );
}
// load CTC Core for admin calls
if ( is_admin() )
add_action( 'plugins_loaded', 'ChildThemeConfigurator::init', 5 );
// handle CTC Preview
if ( isset( $_GET['preview_ctc'] ) ):
// replace core preview function with CTCP function for quick preview
remove_action( 'setup_theme', 'preview_theme' );
new ChildThemeConfiguratorPreview();
endif;
// append timestamp to linked stylesheets to force cache refresh
add_filter( 'style_loader_src', 'chld_thm_cfg_version', 10, 2 );
function chld_thm_cfg_version( $src, $handle ) {
// only filter links for current theme
if ( is_child_theme() && strstr( $src, get_stylesheet() ) && ( $ver = wp_get_theme()->Version ) )
$src = preg_replace( "/ver=(.*?)(\&|$)/", 'ver=' . $ver . "$2", $src );
return $src;
}
// remove configuration data on uninstall
register_uninstall_hook( __FILE__, 'chld_thm_cfg_uninstall' );
function chld_thm_cfg_uninstall() {
foreach( array(
'',
'_configvars',
'_dict_qs',
'_dict_sel',
'_dict_query',
'_dict_rule',
'_dict_val',
'_dict_seq',
'_dict_token',
'_sel_ndx',
'_val_ndx',
'_debug',
) as $key )
delete_site_option( CHLD_THM_CFG_OPTIONS . $key );
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,57 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
/*
Class: ChildThemeConfiguratorAnalysis
Plugin URI: http://www.childthemeconfigurator.com/
Description: Theme Analyzer Class
Version: 2.1.3
Author: Lilaea Media
Author URI: http://www.lilaeamedia.com/
Text Domain: child-theme-configurator
Domain Path: /lang
License: GPLv2
Copyright (C) 2014-2018 Lilaea Media
*/
class ChildThemeConfiguratorAnalysis {
private $params;
private $url;
private $response;
private $analysis;
function __construct(){
$this->params = array(
'template' => isset( $_POST[ 'template' ] ) ? $_POST[ 'template' ] : '',
'stylesheet' => isset( $_POST[ 'stylesheet' ] ) ? $_POST[ 'stylesheet' ] : '',
'preview_ctc' => wp_create_nonce(),
'now' => time(),
);
$this->analysis = array();
}
function is_child(){
return $this->params[ 'template' ] !== $this->params[ 'stylesheet' ];
}
function fetch_page(){
$this->url = home_url( '/' ) . '?' . build_query( $this->params ); //get_home_url()
$args = array(
'cookies' => $_COOKIE,
'user-agent' => $_SERVER[ 'HTTP_USER_AGENT' ],
'sslverify' => apply_filters( 'https_local_ssl_verify', false )
);
$this->response = wp_remote_get( $this->url, $args );
if ( is_wp_error( $this->response ) ):
$this->analysis[ 'signals' ][ 'httperr' ] = $this->response->get_error_message();
else:
$this->analysis[ 'signals' ] = array();
$this->analysis[ 'body' ] = $this->response[ 'body' ];
endif;
}
function get_analysis(){
return $this->analysis;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,149 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
class ChildThemeConfigurator {
static $instance;
static $plugin = 'child-theme-configurator/child-theme-configurator.php';
static $oldpro = 'child-theme-configurator-plugins/child-theme-configurator-plugins.php';
static $ctcpro = 'child-theme-configurator-pro/child-theme-configurator-pro.php';
static function init() {
defined( 'LILAEAMEDIA_URL' ) or
define( 'LILAEAMEDIA_URL', "http://www.lilaeamedia.com" );
defined( 'CHLD_THM_CFG_DOCS_URL' ) or
define( 'CHLD_THM_CFG_DOCS_URL', "http://www.childthemeconfigurator.com" );
define( 'CHLD_THM_CFG_VERSION', '2.5.6' );
define( 'CHLD_THM_CFG_PREV_VERSION', '1.7.9.1' );
define( 'CHLD_THM_CFG_MIN_WP_VERSION', '3.7' );
define( 'CHLD_THM_CFG_PRO_MIN_VERSION', '2.2.0' );
defined( 'CHLD_THM_CFG_BPSEL' ) or
define( 'CHLD_THM_CFG_BPSEL', '2500' );
defined( 'CHLD_THM_CFG_MAX_RECURSE_LOOPS' ) or
define( 'CHLD_THM_CFG_MAX_RECURSE_LOOPS', '1000' );
defined( 'CHLD_THM_CFG_MENU' ) or
define( 'CHLD_THM_CFG_MENU', 'chld_thm_cfg_menu' );
// verify WP version support
global $wp_version;
if ( version_compare( $wp_version, CHLD_THM_CFG_MIN_WP_VERSION, '<' ) ):
add_action( 'all_admin_notices', 'ChildthemeConfigurator::version_notice' );
return;
endif;
if ( file_exists( trailingslashit( dirname( CHLD_THM_CFG_DIR ) ) . self::$oldpro )
|| file_exists( trailingslashit( dirname( CHLD_THM_CFG_DIR ) ) . self::$ctcpro ) ):
// check if old version is installed
add_action( 'admin_init', 'ChildThemeConfiguratorUpgrade::check_version' );
endif;
// setup admin hooks
if ( is_multisite() )
add_action( 'network_admin_menu', 'ChildThemeConfigurator::network_admin' );
add_action( 'admin_menu', 'ChildThemeConfigurator::admin' );
// add plugin upgrade notification
add_action( 'in_plugin_update_message-' . self::$plugin,
'ChildThemeConfigurator::upgrade_notice', 10, 2 );
// setup ajax actions
add_action( 'wp_ajax_ctc_update', 'ChildThemeConfigurator::save' );
add_action( 'wp_ajax_ctc_query', 'ChildThemeConfigurator::query' );
add_action( 'wp_ajax_ctc_dismiss', 'ChildThemeConfigurator::dismiss' );
add_action( 'wp_ajax_pro_dismiss', 'ChildThemeConfiguratorUpgrade::ajax_dismiss_notice' );
add_action( 'wp_ajax_ctc_analyze', 'ChildThemeConfigurator::analyze' );
// initialize languages
add_action( 'init', 'ChildThemeConfigurator::lang' );
// prevent old Pro activation
if ( isset( $_GET[ 'action' ] )
&& isset( $_GET[ 'plugin' ] )
&& 'activate' == $_GET[ 'action' ]
&& self::$oldpro == $_GET[ 'plugin' ] )
unset( $_GET[ 'action' ] );
}
static function ctc() {
// create admin object
if ( !isset( self::$instance ) ):
self::$instance = new ChildThemeConfiguratorAdmin( __FILE__ );
endif;
return self::$instance;
}
static function lang() {
// initialize languages
load_plugin_textdomain( 'child-theme-configurator', FALSE, basename( CHLD_THM_CFG_DIR ) . '/lang' );
}
static function save() {
// ajax write
self::ctc()->ajax_save_postdata();
}
static function query() {
// ajax read
self::ctc()->ajax_query_css();
}
static function dismiss() {
self::ctc()->ajax_dismiss_notice();
}
static function analyze() {
self::ctc()->ajax_analyze();
}
static function network_admin() {
$hook = add_theme_page(
__( 'Child Theme Configurator', 'child-theme-configurator' ),
__( 'Child Themes', 'child-theme-configurator' ),
'install_themes',
CHLD_THM_CFG_MENU,
'ChildThemeConfigurator::render'
);
add_action( 'load-' . $hook, 'ChildThemeConfigurator::page_init' );
}
static function admin() {
$hook = add_management_page(
__( 'Child Theme Configurator', 'child-theme-configurator' ),
__( 'Child Themes', 'child-theme-configurator' ),
'install_themes',
CHLD_THM_CFG_MENU,
'ChildThemeConfigurator::render'
);
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'ChildThemeConfigurator::action_links' );
add_action( 'load-' . $hook, 'ChildThemeConfigurator::page_init' );
}
static function action_links( $actions ) {
$actions[] = '<a href="' . admin_url( 'tools.php?page=' . CHLD_THM_CFG_MENU ). '">'
. __( 'Child Themes', 'child-theme-configurator' ) . '</a>' . LF;
return $actions;
}
static function page_init() {
// start admin controller
self::ctc()->ctc_page_init();
}
static function render() {
// display admin page
self::ctc()->render();
}
static function version_notice() {
deactivate_plugins( plugin_basename( __FILE__ ) );
unset( $_GET[ 'activate' ] );
echo '<div class="notice-warning notice is-dismissible"><p>' .
sprintf( __( 'Child Theme Configurator requires WordPress version %s or later.', 'child-theme-configurator' ),
CHLD_THM_CFG_MIN_WP_VERSION ) . '</p></div>' . LF;
}
static function upgrade_notice( $current, $new ){
if ( isset( $new->upgrade_notice ) && strlen( trim ( $new->upgrade_notice ) ) )
echo '<p style="background-color:#d54d21;padding:1em;color:#fff;margin: 9px 0">'
. esc_html( $new->upgrade_notice ) . '</p>';
}
}

View File

@ -0,0 +1,399 @@
<?php
/**
Some portions based on msgpack.php
Copyright (c) 2015-2017 Eugene Leonovich
The MIT License (MIT)
Some portions based on base91.php
Copyright (c) 2005-2006 Joachim Henke
http://base91.sourceforge.net/
*/
class ChildThemeConfiguratorPacker {
const NON_UTF8_REGEX = '/(
[\xC0-\xC1] # Invalid UTF-8 Bytes
| [\xF5-\xFF] # Invalid UTF-8 Bytes
| \xE0[\x80-\x9F] # Overlong encoding of prior code point
| \xF0[\x80-\x8F] # Overlong encoding of prior code point
| [\xC2-\xDF](?![\x80-\xBF]) # Invalid UTF-8 Sequence Start
| [\xE0-\xEF](?![\x80-\xBF]{2}) # Invalid UTF-8 Sequence Start
| [\xF0-\xF4](?![\x80-\xBF]{3}) # Invalid UTF-8 Sequence Start
| (?<=[\x0-\x7F\xF5-\xFF])[\x80-\xBF] # Invalid UTF-8 Sequence Middle
| (?<![\xC2-\xDF]|[\xE0-\xEF]|[\xE0-\xEF][\x80-\xBF]|[\xF0-\xF4]|[\xF0-\xF4][\x80-\xBF]|[\xF0-\xF4][\x80-\xBF]{2})[\x80-\xBF] # Overlong Sequence
| (?<=[\xE0-\xEF])[\x80-\xBF](?![\x80-\xBF]) # Short 3 byte sequence
| (?<=[\xF0-\xF4])[\x80-\xBF](?![\x80-\xBF]{2}) # Short 4 byte sequence
| (?<=[\xF0-\xF4][\x80-\xBF])[\x80-\xBF](?![\x80-\xBF]) # Short 4 byte sequence (2)
)/x';
var $enctab = array(
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '#', '$',
'%', '&', '(', ')', '*', '+', ',', '.', '/', ':', ';', '<', '=',
'>', '?', '@', '[', ']', '^', '_', '`', '{', '|', '}', '~', '"'
);
var $dectab;
var $buffer;
var $offset;
function __construct(){
$this->dectab = array_flip( $this->enctab );
}
function reset( $buffer = '' ){
$this->buffer = $buffer;
$this->offset = 0;
}
public function pack( $value ) {
switch ( gettype( $value ) ) {
case 'array': return array_values( $value ) === $value
? $this->packArray( $value )
: $this->packMap( $value );
case 'string': return preg_match( self::NON_UTF8_REGEX, $value )
? $this->packBin( $value )
: $this->packStr( $value );
case 'integer': return $this->packInt( $value );
case 'NULL': return $this->packNil();
case 'boolean': return $this->packBool( $value );
}
throw new PackingFailedException( $value, 'Unsupported type.' );
}
public function packNil() {
return "\xc0";
}
public function packBool( $val ) {
return $val ? "\xc3" : "\xc2";
}
public function packArray( array $array ) {
$size = count( $array );
$data = self::packArrayHeader( $size );
foreach ( $array as $val ) {
$data .= $this->pack( $val );
}
return $data;
}
private static function packArrayHeader( $size ) {
if ( $size <= 0xf ) {
return chr( 0x90 | $size );
}
if ( $size <= 0xffff ) {
return pack( 'Cn', 0xdc, $size );
}
return pack( 'CN', 0xdd, $size );
}
public function packMap( array $map ) {
$size = count( $map );
$data = self::packMapHeader( $size );
foreach ( $map as $key => $val ) {
$data .= $this->pack( $key );
$data .= $this->pack( $val );
}
return $data;
}
private static function packMapHeader( $size ) {
if ( $size <= 0xf ) {
return chr( 0x80 | $size );
}
if ( $size <= 0xffff ) {
return pack( 'Cn', 0xde, $size );
}
return pack( 'CN', 0xdf, $size );
}
public function packStr( $str ) {
$len = strlen( $str );
if ( $len < 32 ) {
return chr( 0xa0 | $len ) . $str;
}
if ( $len <= 0xff ) {
return pack( 'CC', 0xd9, $len ) . $str;
}
if ( $len <= 0xffff ) {
return pack( 'Cn', 0xda, $len ) . $str;
}
return pack( 'CN', 0xdb, $len ) . $str;
}
public function packBin( $str ) {
$len = strlen( $str );
if ( $len <= 0xff ) {
return pack( 'CC', 0xc4, $len ) . $str;
}
if ( $len <= 0xffff ) {
return pack( 'Cn', 0xc5, $len ) . $str;
}
return pack( 'CN', 0xc6, $len ) . $str;
}
public function packInt( $num ) {
if ( $num >= 0 ) {
if ( $num <= 0x7f ) {
return chr( $num );
}
if ( $num <= 0xff ) {
return pack( 'CC', 0xcc, $num );
}
if ( $num <= 0xffff ) {
return pack( 'Cn', 0xcd, $num );
}
if ( $num <= 0xffffffff ) {
return pack( 'CN', 0xce, $num );
}
}
// treat negative integers as strings
return $this->packStr( (string) $num );
//throw new PackingFailedException( $num, 'Unsupported type.' );
}
function unpack() {
$this->ensureLength( 1 );
$c = ord( $this->buffer[ $this->offset ] );
++$this->offset;
// fixint
if ( $c <= 0x7f ) {
return $c;
}
// fixstr
if ( $c >= 0xa0 && $c <= 0xbf ) {
return $this->unpackStr( $c & 0x1f );
}
// fixarray
if ( $c >= 0x90 && $c <= 0x9f ) {
return $this->unpackArray( $c & 0xf );
}
// fixmap
if ( $c >= 0x80 && $c <= 0x8f ) {
return $this->unpackMap( $c & 0xf );
}
switch ( $c ) {
case 0xc0: return null;
case 0xc2: return false;
case 0xc3: return true;
// MP_BIN
case 0xc4: return $this->unpackStr( $this->unpackU8() );
case 0xc5: return $this->unpackStr( $this->unpackU16() );
case 0xc6: return $this->unpackStr( $this->unpackU32() );
// MP_UINT
case 0xcc: return $this->unpackU8();
case 0xcd: return $this->unpackU16();
case 0xce: return $this->unpackU32();
// MP_STR
case 0xd9: return $this->unpackStr( $this->unpackU8() );
case 0xda: return $this->unpackStr( $this->unpackU16() );
case 0xdb: return $this->unpackStr( $this->unpackU32() );
// MP_ARRAY
case 0xdc: return $this->unpackArray( $this->unpackU16() );
case 0xdd: return $this->unpackArray( $this->unpackU32() );
// MP_MAP
case 0xde: return $this->unpackMap( $this->unpackU16() );
case 0xdf: return $this->unpackMap( $this->unpackU32() );
}
throw new UnpackingFailedException( sprintf( 'Unknown code: 0x%x.', $c ) );
}
private function unpackU8() {
$this->ensureLength( 1 );
$num = $this->buffer[ $this->offset ];
++$this->offset;
return ord( $num );
}
private function unpackU16() {
$this->ensureLength( 2 );
$hi = ord( $this->buffer[ $this->offset ] );
$lo = ord( $this->buffer[ $this->offset + 1 ] );
$this->offset += 2;
return $hi << 8 | $lo;
}
private function unpackU32() {
$this->ensureLength( 4 );
$num = substr( $this->buffer, $this->offset, 4 );
$this->offset += 4;
$num = unpack( 'N', $num );
return $num[ 1 ];
}
private function unpackStr( $length ) {
if ( !$length ) {
return '';
}
$this->ensureLength( $length );
$str = substr( $this->buffer, $this->offset, $length );
$this->offset += $length;
return $str;
}
private function unpackArray( $size ) {
$array = array();
for ( $i = $size; $i; --$i ) {
$array[] = $this->unpack();
}
return $array;
}
private function unpackMap( $size ) {
$map = array();
for ( $i = $size; $i; --$i ) {
$map[ $this->unpack() ] = $this->unpack();
}
return $map;
}
private function ensureLength( $length ) {
if ( !isset( $this->buffer[ $this->offset + $length - 1 ] ) ) {
throw new InsufficientDataException( $length, strlen( $this->buffer ) - $this->offset );
}
}
public function decode( $d )
{
$l = strlen( $d );
$v = -1;
$n = 0;
$o = '';
$b = 0;
for ( $i = 0; $i < $l; ++$i ):
$c = $this->dectab[ substr( $d, $i, 1 ) ];
if ( !isset( $c ) )
continue;
if ( $v < 0 ):
$v = $c;
else:
$v += $c * 91;
$b |= $v << $n;
$n += ( $v & 8191 ) > 88 ? 13 : 14;
do {
$o .= chr( $b & 255 );
$b >>= 8;
$n -= 8;
} while ( $n > 7 );
$v = -1;
endif;
endfor;
if ( $v + 1 )
$o .= chr( ( $b | $v << $n ) & 255 );
return $o;
}
public function encode( $d )
{
$l = strlen( $d );
$n = 0;
$o = '';
$b = 0;
for ( $i = 0; $i < $l; ++$i ):
$b |= ord( substr( $d, $i, 1 ) ) << $n;
$n += 8;
if ( $n > 13 ):
$v = $b & 8191;
if ( $v > 88 ):
$b >>= 13;
$n -= 13;
else:
$v = $b & 16383;
$b >>= 14;
$n -= 14;
endif;
$o .= $this->enctab[ $v % 91 ] . $this->enctab[ $v / 91 ];
endif;
endfor;
if ( $n ):
$o .= $this->enctab[ $b % 91 ];
if ( $n > 7 || $b > 90 )
$o .= $this->enctab[ $b / 91 ];
endif;
return $o;
}
}
class PackingFailedException extends RuntimeException {
private $value;
public function __construct( $value, $message = null, $code = null, Exception $previous = null ){
parent::__construct( $message, $code, $previous );
$this->value = $value;
}
public function getValue(){
return $this->value;
}
}
class UnpackingFailedException extends RuntimeException {
}
class InsufficientDataException extends UnpackingFailedException {
public function __construct( $expectedLength, $actualLength, $code = null, Exception $previous = null ){
$message = sprintf( 'Not enough data to unpack: need %d, have %d.', $expectedLength, $actualLength );
parent::__construct( $message, $code, $previous );
}
}

View File

@ -0,0 +1,186 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
error_reporting( E_ALL );
ini_set( 'display_errors', 1 );
/**
* Provides methods required for preview to work without customizer options.
* This only loads when CTC preview is loaded.
*/
class ChildThemeConfiguratorPreview {
protected $theme;
protected $original_stylesheet;
protected $stylesheet;
protected $template;
protected $priorities = array();
protected $handles = array();
protected $queued = array();
protected $registered;
public function __construct(){
add_action( 'setup_theme', array( $this, 'setup_theme' ) );
add_filter( 'wp_redirect_status', array( $this, 'wp_redirect_status' ), 1000 );
// Do not spawn cron (especially the alternate cron) while running the Customizer.
remove_action( 'init', 'wp_cron' );
// Do not run update checks when rendering the controls.
remove_action( 'admin_init', '_maybe_update_core' );
remove_action( 'admin_init', '_maybe_update_plugins' );
remove_action( 'admin_init', '_maybe_update_themes' );
}
public function check_wp_queue(){
global $wp_filter;
if ( empty( $wp_filter[ 'wp_enqueue_scripts' ] ) )
return;
// Iterate through all the added hook priorities
$this->priorities = array_keys( $wp_filter[ 'wp_enqueue_scripts' ]->callbacks );
// add hook directly after each priority to get any added stylesheet handles
foreach ( $this->priorities as $priority )
add_action( 'wp_enqueue_scripts', array( $this, 'get_handles' ), $priority );
}
public function get_handles(){
global $wp_styles;
// remove priority from stack
$priority = array_shift( $this->priorities );
if ( !is_object( $wp_styles ) )
return;
// get handles queued since last check
$this->handles[ $priority ] = array_diff( $wp_styles->queue, $this->queued );
// add new handles to queued array
$this->queued = array_merge( $this->queued, $this->handles[ $priority ] );
}
public function setup_theme() {
// are we previewing? - removed nonce requirement to bool flag v2.2.5
if ( empty( $_GET['preview_ctc'] ) || !current_user_can( 'switch_themes' ) )
return;
$this->original_stylesheet = get_stylesheet();
$this->theme = wp_get_theme( isset( $_GET[ 'stylesheet' ] ) ? $_GET[ 'stylesheet' ] : NULL );
if ( ! $this->is_theme_active() ):
add_filter( 'template', array( $this, 'get_template' ) );
add_filter( 'stylesheet', array( $this, 'get_stylesheet' ) );
// @link: https://core.trac.wordpress.org/ticket/20027
add_filter( 'pre_option_stylesheet', array( $this, 'get_stylesheet' ) );
add_filter( 'pre_option_template', array( $this, 'get_template' ) );
// swap out theme mods with preview theme mods
add_filter( 'pre_option_theme_mods_' . $this->original_stylesheet, array( $this, 'preview_mods' ) );
endif;
add_action( 'wp_head', array( $this, 'check_wp_queue' ), 0 );
// impossibly high priority to test for stylesheets loaded after wp_head()
add_action( 'wp_print_styles', array( $this, 'test_css' ), 999999 );
// pass the wp_styles queue back to use for stylesheet handle verification
add_action( 'wp_footer', array( $this, 'parse_stylesheet' ) );
send_origin_headers();
// hide admin bar in preview
show_admin_bar( false );
}
/**
* Retrieves child theme mods for preview
*/
public function preview_mods() {
if ( $this->is_theme_active() ) return false;
return get_option( 'theme_mods_' . $this->get_stylesheet() );
}
public function parse_stylesheet() {
echo '<script>/*<![CDATA[' . LF;
$queue = implode( "\n", $this->queued );
global $wp_styles;
$registered = implode( "\n", array_keys( $wp_styles->registered ) );
echo 'BEGIN WP QUEUE' . LF . $queue . LF . 'END WP QUEUE' . LF;
echo 'BEGIN WP REGISTERED' . LF . $registered . LF . 'END WP REGISTERED' . LF;
if ( is_child_theme() ):
// check for signals that indicate specific settings
$file = get_stylesheet_directory() . '/style.css';
if ( file_exists( $file ) && ( $styles = @file_get_contents( $file ) ) ):
// is this child theme a standalone ( framework ) theme?
if ( defined( 'CHLD_THM_CFG_IGNORE_PARENT' ) ):
echo 'CHLD_THM_CFG_IGNORE_PARENT' . LF;
endif;
// has this child theme been configured by CTC? ( If it has the timestamp, it is one of ours. )
if ( preg_match( '#\nUpdated: \d\d\d\d\-\d\d\-\d\d \d\d:\d\d:\d\d\n#s', $styles ) ):
echo 'IS_CTC_THEME' . LF;
endif;
// is this child theme using the @import method?
if ( preg_match( '#\@import\s+url\(.+?\/' . preg_quote( get_template() ) . '\/style\.css.*?\);#s', $styles ) ):
echo 'HAS_CTC_IMPORT' . LF;
endif;
endif;
else:
// Check if the parent style.css file is used at all. If not we can skip the parent stylesheet handling altogether.
$file = get_template_directory() . '/style.css';
if ( file_exists( $file ) && ( $styles = @file_get_contents( $file ) ) ):
$styles = preg_replace( '#\/\*.*?\*\/#s', '', $styles );
if ( preg_match_all( '#\@import\s+(url\()?(.+?)(\))?;#s', $styles, $imports ) ):
echo 'BEGIN IMPORT STYLESHEETS' . LF;
foreach ( $imports[ 2 ] as $import )
echo trim( str_replace( array( "'", '"' ), '', $import ) ) . LF;
echo 'END IMPORT STYLESHEETS' . LF;
elseif ( !preg_match( '#\s*([\[\.\#\:\w][\w\-\s\(\)\[\]\'\^\*\.\#\+:,"=>]+?)\s*\{(.*?)\}#s', $styles ) ):
echo 'NO_CTC_STYLES' . LF;
endif;
endif;
endif;
/**
* Use the filter api to determine the parent stylesheet enqueue priority
* because some themes do not use the standard 10 for various reasons.
* We need to match this priority so that the stylesheets load in the correct order.
*/
echo 'BEGIN CTC IRREGULAR' . LF;
// Iterate through all the added hook priorities
foreach ( $this->handles as $priority => $arr )
// If this is a non-standard priority hook, determine which handles are being enqueued.
// These will then be compared to the primary handle ( style.css )
// to determine the enqueue priority to use for the parent stylesheet.
if ( $priority != 10 && !empty( $arr ) )
echo $priority . ',' . implode( ",", $arr ) . LF;
echo 'END CTC IRREGULAR' . LF;
;
if ( defined( 'WP_CACHE' ) && WP_CACHE )
echo 'HAS_WP_CACHE' . LF;
if ( defined( 'AUTOPTIMIZE_PLUGIN_DIR' ) )
echo 'HAS_AUTOPTIMIZE' . LF;
if ( defined( 'WP_ROCKET_VERSION' ) )
echo 'HAS_WP_ROCKET' . LF;
echo ']]>*/</script>' . LF;
}
// enqueue dummy stylesheet with extremely high priority to test wp_head()
public function test_css() {
wp_enqueue_style( 'ctc-test', get_stylesheet_directory_uri() . '/ctc-test.css' );
}
public function woocommerce_unforce_ssl_checkout( $bool ){
return FALSE;
}
public function wp_redirect_status( $status ) {
return 200;
}
public function is_theme_active() {
return $this->get_stylesheet() == $this->original_stylesheet;
}
public function get_template() {
return $this->theme()->get_template();
}
public function get_stylesheet() {
return $this->theme()->get_stylesheet();
}
public function theme() {
return $this->theme;
}
}

View File

@ -0,0 +1,371 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
/*
Class: ChildThemeConfiguratorUI
Plugin URI: http://www.childthemeconfigurator.com/
Description: Handles the plugin User Interface
Author: Lilaea Media
Author URI: http://www.lilaeamedia.com/
Text Domain: chld_thm_cfg
Domain Path: /lang
License: GPLv2
Copyright (C) 2014-2018 Lilaea Media
*/
class ChildThemeConfiguratorUI {
var $warnings = array();
var $swatch_txt;
var $colors;
function __construct() {
// always load dict_sel for UI
$this->css()->load_config( 'dict_sel' );
add_filter( 'chld_thm_cfg_files_tab_filter', array( $this, 'render_files_tab_options' ) );
add_action( 'chld_thm_cfg_tabs', array( $this, 'render_addl_tabs' ), 10, 4 );
add_action( 'chld_thm_cfg_panels', array( $this, 'render_addl_panels' ), 10, 4 );
add_action( 'chld_thm_cfg_related_links', array( $this, 'render_lilaea_plug' ) );
add_action( 'chld_thm_cfg_before_tabs', array( $this, 'render_current_theme' ), 5 );
add_action( 'chld_thm_cfg_before_tabs', array( $this, 'render_debug_toggle' ), 100 );
add_action( 'chld_thm_cfg_file_form_buttons', array( $this, 'render_file_form_buttons' ), 10, 1 );
add_action( 'chld_thm_cfg_admin_notices', array( $this, 'get_colors' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 99 );
add_filter( 'chld_thm_cfg_localize_array', array( $this, 'filter_localize_array' ) );
add_action( 'all_admin_notices', array( $this, 'all_admin_notices' ) );
$this->swatch_txt = __( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 'child-theme-configurator' );
}
// helper function to globalize ctc object
function ctc() {
return ChildThemeConfigurator::ctc();
}
function css() {
return ChildThemeConfigurator::ctc()->css;
}
function render() {
// load web fonts for this theme
if ( $imports = $this->css()->get_prop( 'imports' ) ):
$ext = 0;
foreach ( $imports as $import ):
$this->ctc()->convert_import_to_enqueue( $import, ++$ext, TRUE );
endforeach;
endif;
//$themes = $this->ctc()->themes;
//$child = $this->css()->get_prop( 'child' );
//$hidechild = apply_filters( 'chld_thm_cfg_hidechild', ( count( $this->ctc()->themes ) ? '' : 'disabled' ) );
//$enqueueset = ( isset( $this->css()->enqueue ) && $child );
$this->ctc()->debug( 'Enqueue set: ' . ( $this->enqueue_is_set() ? 'TRUE' : 'FALSE' ), __FUNCTION__, __CLASS__ );
//$imports = $this->css()->get_prop( 'imports' );
//$id = 0;
$this->ctc()->fs_method = get_filesystem_method();
add_thickbox();
include ( CHLD_THM_CFG_DIR . '/includes/forms/main.php' );
}
function enqueue_is_set(){
return isset( $this->css()->enqueue ) && $this->css()->get_prop( 'child' );
}
function maybe_disable(){
echo apply_filters( 'chld_thm_cfg_maybe_disable', ( count( $this->ctc()->themes[ 'child' ] ) ? '' : 'ctc-disabled' ) );
}
function supports_disable(){
if ( defined( 'CHLD_THM_CFG_PRO_VERSION' ) && version_compare( '2.2.0', CHLD_THM_CFG_PRO_VERSION, '<' ) )
return TRUE;
return ( !defined( 'CHLD_THM_CFG_PRO_VERSION' ) );
}
function all_admin_notices(){
do_action( 'chld_thm_cfg_admin_notices' );
}
function get_colors(){
global $_wp_admin_css_colors;
$user_admin_color = get_user_meta( get_current_user_id(), 'admin_color', TRUE );
$this->colors = $_wp_admin_css_colors[ $user_admin_color ]->colors;
}
function render_current_theme(){
include ( CHLD_THM_CFG_DIR . '/includes/forms/current-theme.php' );
}
function render_debug_toggle(){
include ( CHLD_THM_CFG_DIR . '/includes/forms/debug-toggle.php' );
}
function render_file_form_buttons( $template ){
include ( CHLD_THM_CFG_DIR . '/includes/forms/file-form-buttons.php' );
}
function render_theme_menu( $template = 'child', $selected = NULL ) {
include ( CHLD_THM_CFG_DIR . '/includes/forms/theme-menu.php' );
}
function render_file_form( $template = 'parnt' ) {
global $wp_filesystem;
if ( $theme = $this->ctc()->css->get_prop( $template ) ):
$themeroot = trailingslashit( get_theme_root() ) . trailingslashit( $theme );
$files = $this->ctc()->get_files( $theme, 'child' == $template ? 'template,stylesheet,txt' : 'template' );
// This include is used for both parent template section and the child files section
$ctcpage = apply_filters( 'chld_thm_cfg_admin_page', CHLD_THM_CFG_MENU );
if ( defined( 'DISALLOW_FILE_EDIT' ) && DISALLOW_FILE_EDIT ):
$linktext = __( 'The Theme editor has been disabled. Template files must be edited offline.', 'child-theme-configurator' );
$editorbase = '';
$editorlink = '';
else:
$linktext = __( 'Click here to edit template files using the Theme Editor', 'child-theme-configurator' );
$editorbase = apply_filters( 'chld_thm_cfg_editor_base', ( is_multisite() ? network_admin_url( 'theme-editor.php' ) : admin_url( 'theme-editor.php' ) ) . '?' ) . 'theme=' . $this->ctc()->css->get_prop( 'child' );
$editorlink = '<a href="' . $editorbase . '&file=%s" title="%s">%s</a>';
endif;
$counter = 0;
sort( $files );
ob_start();
foreach ( $files as $file ):
$templatefile = $file; //preg_replace( '%\.php$%', '', $file );
include ( CHLD_THM_CFG_DIR . '/includes/forms/file.php' );
endforeach;
$inputs = ob_get_contents();
ob_end_clean();
if ( $counter ):
include ( CHLD_THM_CFG_DIR . '/includes/forms/fileform.php' );
endif;
else:
echo $template . ' theme not set.';
endif;
}
function render_image_form() {
if ( $theme = $this->ctc()->css->get_prop( 'child' ) ):
$themeuri = trailingslashit( get_theme_root_uri() ) . trailingslashit( $theme );
$themeroot = trailingslashit( get_theme_root() ) . trailingslashit( $theme );
$files = $this->ctc()->get_files( $theme, 'img' );
$counter = 0;
sort( $files );
ob_start();
foreach ( $files as $file ):
$imagesize = getimagesize( $themeroot . $file ); // added 2.3.0
$templatefile = preg_replace( '/^images\//', '', $file );
include( CHLD_THM_CFG_DIR . '/includes/forms/image.php' );
endforeach;
$inputs = ob_get_clean();
if ( $counter ) include( CHLD_THM_CFG_DIR . '/includes/forms/images.php' );
endif;
}
function render_settings_errors() {
include ( CHLD_THM_CFG_DIR . '/includes/forms/settings-errors.php' );
}
function render_help_content() {
global $wp_version;
if ( version_compare( $wp_version, '3.3' ) >= 0 ):
$screen = get_current_screen();
// load help content via output buffer so we can use plain html for updates
// then use regex to parse for help tab parameter values
$regex_sidebar = '/' . preg_quote( '<!-- BEGIN sidebar -->' ) . '(.*?)' . preg_quote( '<!-- END sidebar -->' ) . '/s';
$regex_tab = '/' . preg_quote( '<!-- BEGIN tab -->' ) . '\s*<h\d id="(.*?)">(.*?)<\/h\d>(.*?)' . preg_quote( '<!-- END tab -->' ) . '/s';
$locale = get_locale();
$dir = CHLD_THM_CFG_DIR . '/includes/help/';
$file = $dir . $locale . '.php';
if ( !is_readable( $file ) ) $file = $dir . 'en_US.php';
ob_start();
include( $file );
$help_raw = ob_get_clean();
// parse raw html for tokens
preg_match( $regex_sidebar, $help_raw, $sidebar );
preg_match_all( $regex_tab, $help_raw, $tabs );
// Add help tabs
if ( isset( $tabs[ 1 ] ) ):
$priority = 0;
while( count( $tabs[ 1 ] ) ):
$id = array_shift( $tabs[ 1 ] );
$title = array_shift( $tabs[ 2 ] );
$content = array_shift( $tabs[ 3 ] );
$tab = array(
'id' => $id,
'title' => $title,
'content' => $content,
'priority' => ++$priority,
);
$screen->add_help_tab( $tab );
endwhile;
endif;
if ( isset( $sidebar[ 1 ] ) )
$screen->set_help_sidebar( $sidebar[ 1 ] );
endif;
}
function render_addl_tabs( $active_tab = NULL, $hidechild = '', $enqueueset = TRUE ) {
include ( CHLD_THM_CFG_DIR . '/includes/forms/addl_tabs.php' );
}
function render_addl_panels( $active_tab = NULL, $hidechild = '', $enqueueset = TRUE ) {
include ( CHLD_THM_CFG_DIR . '/includes/forms/addl_panels.php' );
}
function render_lilaea_plug() {
include ( CHLD_THM_CFG_DIR . '/includes/forms/related.php' );
}
function render_files_tab_options( $output ) {
$regex = '%<div class="ctc\-input\-cell ctc-clear">.*?(</form>).*%s';
$output = preg_replace( $regex, "$1", $output );
return $output;
}
function render_notices( $msg ) {
include ( CHLD_THM_CFG_DIR . '/includes/forms/notices.php' );
}
function get_theme_screenshot() {
foreach ( array_keys( $this->ctc()->imgmimes ) as $extreg ):
foreach ( explode( '|', $extreg ) as $ext ):
if ( $screenshot = $this->ctc()->css->is_file_ok( $this->ctc()->css->get_child_target( 'screenshot.' . $ext ) ) ):
$screenshot = trailingslashit( get_theme_root_uri() ) . $this->ctc()->theme_basename( '', $screenshot );
return $screenshot . '?' . time();
endif;
endforeach;
endforeach;
return FALSE;
}
function cmp_theme( $a, $b ) {
return strcmp( strtolower( $a[ 'Name' ] ), strtolower( $b[ 'Name' ] ) );
}
function enqueue_scripts() {
wp_enqueue_style( 'chld-thm-cfg-admin', CHLD_THM_CFG_URL . 'css/chldthmcfg.css', array(), CHLD_THM_CFG_VERSION );
// we need to use local jQuery UI Widget/Menu/Selectmenu 1.11.2 because selectmenu is not included in < 1.11.2
// this will be updated in a later release to use WP Core scripts when it is widely adopted
if ( !wp_script_is( 'jquery-ui-selectmenu', 'registered' ) ): // selectmenu.min.js
wp_enqueue_script( 'jquery-ui-selectmenu', CHLD_THM_CFG_URL . 'js/selectmenu.min.js',
array( 'jquery','jquery-ui-core','jquery-ui-position' ), CHLD_THM_CFG_VERSION, TRUE );
endif;
wp_enqueue_script( 'chld-thm-cfg-spectrum', CHLD_THM_CFG_URL . 'js/spectrum.min.js', array( 'jquery' ), CHLD_THM_CFG_VERSION, TRUE );
wp_enqueue_script( 'chld-thm-cfg-ctcgrad', CHLD_THM_CFG_URL . 'js/ctcgrad.min.js', array( 'jquery' ), CHLD_THM_CFG_VERSION, TRUE );
wp_enqueue_script( 'chld-thm-cfg-admin', CHLD_THM_CFG_URL . 'js/chldthmcfg' . ( SCRIPT_DEBUG ? '' : '.min' ) . '.js',
//wp_enqueue_script( 'chld-thm-cfg-admin', CHLD_THM_CFG_URL . 'js/chldthmcfg.js',
array(
'jquery-ui-autocomplete',
'jquery-ui-selectmenu',
'chld-thm-cfg-spectrum',
'chld-thm-cfg-ctcgrad'
), CHLD_THM_CFG_VERSION, TRUE );
$localize_array = apply_filters( 'chld_thm_cfg_localize_script', array(
'converted' => $this->css()->get_prop( 'converted' ),
'ssl' => is_ssl(),
'homeurl' => home_url( '/' ) . '?ModPagespeed=off&' . ( defined( 'WP_ROCKET_VERSION' ) ? '' : 'ao_noptimize=1&' ) . 'preview_ctc=1', // WP Rocket serves cached page when ao_nooptimize is present v2.3.0
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'customizerurl' => admin_url( 'customize.php' ),
'theme_uri' => get_theme_root_uri(),
'theme_dir' => basename( get_theme_root_uri() ),
'page' => CHLD_THM_CFG_MENU,
'themes' => $this->ctc()->themes,
'source' => apply_filters( 'chld_thm_cfg_source_uri', get_theme_root_uri() . '/'
. $this->css()->get_prop( 'parnt' ) . '/style.css', $this->css() ),
'target' => apply_filters( 'chld_thm_cfg_target_uri', get_theme_root_uri() . '/'
. $this->css()->get_prop( 'child' ) . '/style.css', $this->css() ),
'parnt' => $this->css()->get_prop( 'parnt' ),
'child' => $this->css()->get_prop( 'child' ),
'addl_css' => $this->css()->get_prop( 'addl_css' ),
'forcedep' => $this->css()->get_prop( 'forcedep' ),
'swappath' => $this->css()->get_prop( 'swappath' ),
'imports' => $this->css()->get_prop( 'imports' ),
'converted' => $this->css()->get_prop( 'converted' ),
'copy_mods' => $this->ctc()->copy_mods,
'is_debug' => $this->ctc()->is_debug,
'_background_url_txt' => __( 'URL/None', 'child-theme-configurator' ),
'_background_origin_txt' => __( 'Origin', 'child-theme-configurator' ),
'_background_color1_txt' => __( 'Color 1', 'child-theme-configurator' ),
'_background_color2_txt' => __( 'Color 2', 'child-theme-configurator' ),
'_border_width_txt' => __( 'Width/None', 'child-theme-configurator' ),
'_border_style_txt' => __( 'Style', 'child-theme-configurator' ),
'_border_color_txt' => __( 'Color', 'child-theme-configurator' ),
'swatch_txt' => $this->swatch_txt,
'load_txt' => __( 'Are you sure you wish to RESET? This will destroy any work you have done in the Configurator.', 'child-theme-configurator' ),
'important_txt' => __( '<span style="font-size:10px">!</span>', 'child-theme-configurator' ),
'selector_txt' => __( 'Selectors', 'child-theme-configurator' ),
'close_txt' => __( 'Close', 'child-theme-configurator' ),
'edit_txt' => __( 'Edit Selector', 'child-theme-configurator' ),
'cancel_txt' => __( 'Cancel', 'child-theme-configurator' ),
'rename_txt' => __( 'Rename', 'child-theme-configurator' ),
'css_fail_txt' => __( 'The stylesheet cannot be displayed.', 'child-theme-configurator' ),
'child_only_txt' => __( '(Child Only)', 'child-theme-configurator' ),
'inval_theme_txt' => __( 'Please enter a valid Child Theme.', 'child-theme-configurator' ),
'inval_name_txt' => __( 'Please enter a valid Child Theme name.', 'child-theme-configurator' ),
'theme_exists_txt' => __( '<strong>%s</strong> exists. Please enter a different Child Theme', 'child-theme-configurator' ),
'js_txt' => __( 'The page could not be loaded correctly.', 'child-theme-configurator' ),
'jquery_txt' => __( 'Conflicting or out-of-date jQuery libraries were loaded by another plugin:', 'child-theme-configurator' ),
'plugin_txt' => __( 'Deactivating or replacing plugins may resolve this issue.', 'child-theme-configurator' ),
'contact_txt' => sprintf( __( '%sWhy am I seeing this?%s', 'child-theme-configurator' ),
'<a target="_blank" href="' . CHLD_THM_CFG_DOCS_URL . '/how-to-use/#script_dep">',
'</a>' ),
'nosels_txt' => __( 'No Styles Available. Check Parent/Child settings.', 'child-theme-configurator' ),
'anlz1_txt' => __( 'Updating', 'child-theme-configurator' ),
'anlz2_txt' => __( 'Checking', 'child-theme-configurator' ),
'anlz3_txt' => __( 'The theme "%s" generated unexpected PHP debug output.', 'child-theme-configurator' ),
'anlz4_txt' => __( 'The theme "%s" could not be analyzed because the preview did not render correctly.', 'child-theme-configurator' ),
'anlz5_txt' => sprintf( __( '<p>First, verify you can <a href="%s">preview your home page with the Customizer</a> and try analyzing again.</p><p>If that does not work, try temporarily disabling plugins that <strong>minify CSS</strong> or that <strong>force redirects between HTTP and HTTPS</strong>.</p>', 'child-theme-configurator' ), admin_url( '/customize.php' ) ), // . '?page=' . CHLD_THM_CFG_MENU ),
'anlz6_txt' => __( 'Click to show/hide PHP debug output', 'child-theme-configurator' ),
// php error description modified v2.3.0
'anlz7_txt' => __( '<p><strong>PLEASE NOTE:</strong></p><p><em>The analyzer reveals errors that may otherwise go undetected. Unless this is a fatal error, WordPress may appear to work correctly; however, PHP will continue to log the error until it is resolved. Please contact the author of any theme or plugin</em> <strong>mentioned above</strong> <em>and cut/paste the error from the text area.</em> <strong>Do not use a screen capture as it may cut off part of the error text.</strong> <em>Additional information about the error may also be available in the <a href="http://www.childthemeconfigurator.com/child-theme-faqs/" target="_blank">CTC documentation</a>.</em></p>', 'child-theme-configurator' ),
'anlz8_txt' => __( 'Do Not Activate "%s"! A PHP FATAL ERROR has been detected.', 'child-theme-configurator' ),
'anlz9_txt' => __( 'This theme loads stylesheets after the wp_styles queue.', 'child-theme-configurator' ),
'anlz10_txt' => __( '<p>This makes it difficult for plugins to override these styles. You can try to resolve this using the "Repair header template" option (Step 6, "Additional handling options", below).</p>', 'child-theme-configurator' ),
'anlz11_txt' => __( "This theme loads the parent theme's <code>style.css</code> file outside the wp_styles queue.", 'child-theme-configurator' ),
'anlz12_txt' => __( '<p>This is common with older themes but requires the use of <code>@import</code>, which is no longer recommended. You can try to resolve this using the "Repair header template" option (see step 6, "Additional handling options", below).</p>', 'child-theme-configurator' ),
'anlz13_txt' => __( 'This child theme does not load a Configurator stylesheet.', 'child-theme-configurator' ),
'anlz14_txt' => __( '<p>If you want to customize styles using this plugin, please click "Configure Child Theme" again to add this to the settings.</p>', 'child-theme-configurator' ),
'anlz15_txt' => __( "This child theme uses the parent stylesheet but does not load the parent theme's <code>style.css</code> file.", 'child-theme-configurator' ),
'anlz16_txt' => __( '<p>Please select a stylesheet handling method or check "Ignore parent theme stylesheets" (see step 6, below).</p>', 'child-theme-configurator' ),
'anlz17_txt' => __( 'This child theme appears to be functioning correctly.', 'child-theme-configurator' ),
'anlz18_txt' => __( 'This theme appears OK to use as a Child theme.', 'child-theme-configurator' ),
'anlz19_txt' => __( 'This Child Theme has not been configured for this plugin.', 'child-theme-configurator' ),
'anlz20_txt' => __( '<p>The Configurator makes significant modifications to the child theme, including stylesheet changes and additional php functions. Please consider using the DUPLICATE child theme option (see step 1, above) and keeping the original as a backup.</p>', 'child-theme-configurator' ),
'anlz21_txt' => __( "This child theme uses <code>@import</code> to load the parent theme's <code>style.css</code> file.", 'child-theme-configurator' ),
'anlz22_txt' => __( '<p>Please consider selecting "Use the WordPress style queue" for the parent stylesheet handling option (see step 6, below).</p>', 'child-theme-configurator' ),
'anlz23_txt' => __( 'This theme loads additional stylesheets after the <code>style.css</code> file:', 'child-theme-configurator' ),
'anlz24_txt' => __( '<p>Consider saving new custom styles to a "Separate stylesheet" (see step 5, below) so that you can customize these styles.</p>', 'child-theme-configurator' ),
'anlz25_txt' => __( "The parent theme's <code>style.css</code> file is being loaded automatically.", 'child-theme-configurator' ),
'anlz26_txt' => __( '<p>The Configurator selected "Do not add any parent stylesheet handling" for the "Parent stylesheet handling" option (see step 6, below).</p>', 'child-theme-configurator' ),
'anlz27_txt' => __( "This theme does not require the parent theme's <code>style.css</code> file for its appearance.", 'child-theme-configurator' ),
'anlz28_txt' => __( "This Child Theme was configured to accomodate a hard-coded stylesheet link.", 'child-theme-configurator' ),
'anlz29_txt' => __( '<p>This workaround was used in earlier versions of CTC and can be eliminated by using the "Repair header template" option (see step 6, "Additional handling options", below).</p>', 'child-theme-configurator' ),
'anlz30_txt' => __( 'Click to show/hide raw analysis data. Please include contents below with any support requests.', 'child-theme-configurator' ),
'anlz31_txt' => __( 'This child theme was configured using the CTC Pro "Genesis stylesheet handling" method.', 'child-theme-configurator' ),
'anlz32_txt' => __( '<p>This method has been replaced by the "Separate stylesheet" and "Ignore Parent Theme" options ( selected below ) for broader framework compatability.</p>', 'child-theme-configurator' ),
'anlz33_txt' => __( '<p>%1Click Here%2 to view the theme as viewed by the Analyzer.</p>', 'child-theme-configurator' ),
'anlzrtl_txt' => __( 'This theme uses a RTL (right-to-left) stylesheet that is not being loaded in the child theme.', 'child-theme-configurator' ), // added 2.3.0
'anlzrtl2_txt' => __( 'Use the Web Fonts tab to add a link to the parent RTL stylesheet. See the documentation for more information.</p>', 'child-theme-configurator' ), // added 2.3.0
'anlzcache1_txt' => __( 'Both WP Rocket and Autoptimize plugins are enabled.', 'child-theme-configurator' ),
'anlzcache2_txt' => __( 'The combination of these two plugins interferes with the Analysis results. Please temporarily deactivate one of them and Analyze again.', 'child-theme-configurator' ),
'anlzconfig_txt' => __( '<p><strong>The WordPress configuration file has been modified incorrectly.</strong> Please see <a href="http://www.childthemeconfigurator.com/child-theme-faqs/#constants" target="_blank">this FAQ</a> for more information.</p>', 'child-theme-configurator' ),
'dismiss_txt' => __( 'Dismiss this notice.', 'child-theme-configurator' ),
) );
wp_localize_script(
'chld-thm-cfg-admin',
'ctcAjax',
apply_filters( 'chld_thm_cfg_localize_array', $localize_array )
);
}
function filter_localize_array( $arr ) {
$arr[ 'pluginmode' ] = !$this->ctc()->is_theme();
return $arr;
}
}
?>

View File

@ -0,0 +1,293 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
class ChildThemeConfiguratorUpgrade {
private static $old;
private static $version = '1.0.0';
//private static $lilaeaupdateurl = 'http://www.lilaeamedia.com/updates/update.php?product=intelliwidget-pro';
private static $lilaeaupdateurl = 'http://www.lilaeamedia.com/updates/update-replace.php';
private static $update;
static function get_version(){
$info = get_plugins( '/' . dirname( self::$old ) );
if ( isset( $info[ basename( self::$old ) ] ) )
self::$version = $info[ basename( self::$old ) ][ 'Version' ];
}
static function check_version(){
if ( is_admin() && current_user_can( 'install_plugins' ) && !self::has_dismissed() ):
if ( file_exists( trailingslashit( dirname( CHLD_THM_CFG_DIR ) ) . ChildThemeConfigurator::$oldpro ) ):
self::$old = ChildThemeConfigurator::$oldpro;
self::get_version();
if ( isset( $_REQUEST[ 'ctc_pro_upgrade' ] ) && wp_verify_nonce( $_REQUEST[ 'ctcnonce' ], 'ctc_pro_upgrade' ) ):
self::do_upgrade();
else:
self::upgrade_notice();
endif;
else:
// check if old version is installed but inactive
self::$old = ChildThemeConfigurator::$ctcpro;
self::get_version();
if ( self::$version < CHLD_THM_CFG_PRO_MIN_VERSION ):
// do upgrade if user requests it
if ( isset( $_REQUEST[ 'ctc_pro_upgrade' ] ) && wp_verify_nonce( $_REQUEST[ 'ctcnonce' ], 'ctc_pro_upgrade' ) ):
self::do_upgrade();
else:
// otherwise show notice
self::upgrade_notice();
endif;
endif;
endif;
endif;
}
static function upgrade_notice(){
if ( isset( $_GET[ 'action' ] )
&& 'activate' == $_GET[ 'action' ]
&& isset( $_GET[ 'plugin' ] )
&& self::$old == $_GET[ 'plugin' ] )
unset( $_GET[ 'action' ] );
deactivate_plugins( self::$old, FALSE, is_network_admin() );
add_action( 'all_admin_notices', 'ChildThemeConfiguratorUpgrade::admin_notice' );
}
static function admin_notice(){
$update_key = isset( $_POST[ 'ctc_update_key' ] ) ? sanitize_text_field( $_POST[ 'ctc_update_key' ] ) : self::get_update_key();
if ( isset( $_GET[ 'invalidkey' ] ) || empty( $update_key ) ):
//
$input = '<input type="text" name="ctc_update_key" value="" autocomplete="off" placeholder="' . __( 'Enter your Update Key', 'child-theme-configurator' ) . '" />';
if ( isset( $_GET[ 'invalidkey' ] ) ):?><div class="notice-error notice is-dismissible"><p><?php printf( __( 'Sorry, we could not validate your Update Key. Please try again or, if you need assistance, please %s', 'child-theme-configurator' ), sprintf( '<a href="%s/contact/" target="_blank">%s</a>', LILAEAMEDIA_URL, __( 'contact us.', 'child-theme-configurator' ) ) ); ?></p></div><?php endif;
else:
//
$input = '<input type="hidden" name="ctc_update_key" value="' . esc_attr( $update_key ) . ' " />';
endif;
?><div class="notice-warning notice is-dismissible ctc-pro-upgrade-notice"><form action="" method="post"><?php wp_nonce_field( 'ctc_pro_upgrade', 'ctcnonce' ) ?>
<p><strong><?php echo sprintf( __( 'Child Theme Configurator Pro version %s', 'child-theme-configurator' ), self::$version ) . __( ' is not compatible with the installed version of Child Theme Configurator and has been deactivated.', 'child-theme-configurator' ); ?>
</strong></p>
<p><?php _e( 'You can upgrade to the latest version by clicking the button below. After validating the Update Key from your order, WordPress will retrieve the plugin from our website and install it automatically. If you no longer wish to use the premium version, you can dismiss this notice by clicking the close icon (x) at the top right.', 'child-theme-configurator' ); ?></p>
<p><?php echo $input; ?> <input type="submit" name="ctc_pro_upgrade" value="<?php _e( 'Upgrade Now', 'child-theme-configurator' ); ?>" class="button button-primary" /></p></form>
<script>
jQuery( document ).ready(function($){
$( document ).on( 'click', '.notice-dismiss', function(){ //.iwpro-upgrade-notice
$.post(
'<?php echo admin_url( 'admin-ajax.php' ); ?>',
{ '_wpnonce': '<?php echo wp_create_nonce( 'ctc_pro_dismiss' ); ?>', 'action': 'ctc_pro_dismiss' }
);
});
});
</script></div>
<?php
}
/**
* ajax callback to dismiss upgrade notice
*/
static function ajax_dismiss_notice() {
if ( wp_verify_nonce( $_POST[ '_wpnonce' ], 'ctc_pro_dismiss' ) )
update_user_meta( get_current_user_id(), 'ctc_pro_upgrade_notice' , CHLD_THM_CFG_VERSION );
die(0);
}
static function has_dismissed(){
$dismissed = get_user_meta( get_current_user_id(), 'ctc_pro_upgrade_notice', TRUE );
if ( $dismissed == CHLD_THM_CFG_VERSION )
return TRUE;
return FALSE;
}
static function reset_dismissed(){
delete_user_meta( get_current_user_id(), 'ctc_pro_upgrade_notice' );
}
static function get_update_key(){
if ( $options = get_site_option( CHLD_THM_CFG_OPTIONS ) )
return $options[ 'update_key' ];
return FALSE;
}
static function set_update_key( $key ){
if ( !( $options = get_site_option( CHLD_THM_CFG_OPTIONS ) ) )
$options = array();
$options[ 'update_key' ] = $key;
update_site_option( CHLD_THM_CFG_OPTIONS, $options );
}
static function do_upgrade(){
// if $old == $new upgrade
/*
*/
// otherwise install
// set Install transient
// do install
// delete old version
// if upgrade
add_filter( 'site_transient_update_plugins', 'ChildThemeConfiguratorUpgrade::injectUpdate' ); //WP 3.0+
add_filter( 'transient_update_plugins', 'ChildThemeConfiguratorUpgrade::injectUpdate' ); //WP 2.8+
// Clear the version number cache when something - anything - is upgraded or WP clears the update cache.
add_filter( 'upgrader_post_install', 'ChildThemeConfiguratorUpgrade::clearCachedVersion' );
add_action( 'delete_site_transient_update_plugins', 'ChildThemeConfiguratorUpgrade::clearCachedVersion' );
$key = isset( $_REQUEST[ 'ctc_update_key' ] ) ? sanitize_text_field( $_REQUEST[ 'ctc_update_key' ] ) : self::get_update_key();
//Query args to append to the URL. Plugins can add their own by using a filter callback (see addQueryArgFilter()).
$args = array(
'installed_version' => self::$version,
'key' => $key,
'product' => dirname( self::$old ),
);
//Various options for the wp_remote_get() call. Plugins can filter these, too.
$options = array(
'timeout' => 10, //seconds
'headers' => array(
'Accept' => 'application/json'
),
);
//The plugin info should be at 'http://your-api.com/url/here/$slug/info.json'
$url = add_query_arg( $args, self::$lilaeaupdateurl );
$result = wp_remote_get(
$url,
$options
);
//Try to parse the response
$pluginInfo = NULL;
if ( !is_wp_error( $result )
&& isset( $result[ 'response' ][ 'code' ] )
&& ( $result[ 'response' ][ 'code' ] == 200 )
&& !empty( $result['body'] ) ):
$pluginInfo = json_decode( $result['body'] );
if ( empty( $pluginInfo ) || version_compare( $pluginInfo->version, self::$version, '<' ) ):
$query = array( 'invalidkey' => 1 );
$url = add_query_arg( $query );
wp_redirect( $url );
die();
endif;
// create update object
$update = new StdClass;
$update->id = 0;
$update->slug = $pluginInfo->slug;
$update->new_version = $pluginInfo->version;
$update->url = $pluginInfo->homepage;
$update->package = $pluginInfo->download_url;
if ( !empty( $pluginInfo->upgrade_notice ) )
$update->upgrade_notice = $pluginInfo->upgrade_notice;
self::$update = $update;
// add update to cache
wp_update_plugins();
// run upgrader
$title = __( 'Update Plugin', 'child-theme-configurator' );
$plugin = self::$old;
//$nonce = 'ctc_pro_upgrade'; //'upgrade-plugin_' . $plugin;
$nonce = 'upgrade-plugin_' . self::$old;
$url = 'update.php?action=upgrade-plugin&plugin=' . urlencode( self::$old )
. '&ctc_pro_upgrade=1&ctcnonce=' . $_REQUEST[ 'ctcnonce' ];
wp_enqueue_script( 'updates' );
include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
require_once( ABSPATH . 'wp-admin/admin-header.php' );
$upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact( 'title', 'nonce', 'url', 'plugin' ) ) );
//return;
$upgrader->upgrade( $plugin );
include(ABSPATH . 'wp-admin/admin-footer.php');
self::set_update_key( $key );
endif;
}
static function injectUpdate( $updates ){
if ( !empty( self::$update ) ):
if ( !is_object( $updates ) ):
$updates = new StdClass();
$updates->response = array();
endif;
$updates->response[ self::$old ] = self::$update;
elseif ( isset( $updates, $updates->response ) ):
unset( $updates->response[ self::$old ] );
endif;
return $updates;
}
static function clearCachedVersion( $args = NULL ){
self::$update = NULL;
return $args;
}
/**
* deletes old version of plugin without removing option settings
*/
static function delete_old_version() {
if ( isset( $_REQUEST[ 'deleted' ] ) ) return;
$slug = dirname( self::$old );
// clean up hooks from < 2.2.0
wp_clear_scheduled_hook( 'check_plugin_updates-' . $slug );
delete_option( 'external_updates-' . $slug );
// remove old Pro version
if ( current_user_can( 'delete_plugins' ) ):
$redir = NULL;
if ( isset( $_GET[ 'action' ] ) ):
// unset action parameter if it is for old CTC Pro
if ( 'activate' == $_GET[ 'action' ]
&& isset( $_GET[ 'plugin' ] )
&& self::$old == $_GET[ 'plugin' ] ):
unset( $_GET[ 'action' ] );
// handle two-step FTP Authentication form
elseif ( 'delete-selected' == $_GET[ 'action' ]
&& isset( $_GET[ 'verify-delete' ] )
&& isset( $_GET[ 'checked' ] )
&& self::$old == $_GET[ 'checked' ][ 0 ] ):
unset( $_GET[ 'action' ] );
unset( $_GET[ 'checked' ] );
unset( $_GET[ 'verify-delete' ] );
unset( $_REQUEST[ 'action' ] );
unset( $_REQUEST[ 'checked' ] );
unset( $_REQUEST[ 'verify-delete' ] );
$redir = self_admin_url( "plugins.php?activate=true" );
elseif ( 'activate' != $_GET[ 'action' ] ):
return;
endif;
endif;
// deactivate old Pro version
deactivate_plugins( self::$old, FALSE, is_network_admin() );
// remove uninstall hook so that options are preserved
$uninstallable_plugins = (array) get_option( 'uninstall_plugins' );
if ( isset( $uninstallable_plugins[ self::$old ] ) ):
unset( $uninstallable_plugins[ self::$old ] );
update_option( 'uninstall_plugins', $uninstallable_plugins );
endif;
unset( $uninstallable_plugins );
// remove old Pro version
$delete_result = delete_plugins( array( self::$old ) );
//Store the result in a cache rather than a URL param due to object type & length
global $user_ID;
set_transient( 'plugins_delete_result_' . $user_ID, $delete_result );
// force plugin cache to reload
wp_cache_delete( 'plugins', 'plugins' );
// if this is two-step FTP authentication, redirect back to activated
if ( $redir ):
if ( is_wp_error( $delete_result ) )
$redir = self_admin_url( "plugins.php?deleted=" . self::$old );
wp_redirect( $redir );
exit;
endif;
endif;
}
}

View File

@ -0,0 +1,24 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Additional stylesheets
$stylesheets = $this->get_files( $this->get_current_parent(), 'stylesheet' );
if ( count( $stylesheets ) ):?>
<div class="ctc-input-cell ctc-section-toggle" id="ctc_additional_css_files"> <strong>
<?php _e( 'Parse additional stylesheets:', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell-wide ctc-section-toggle-content" id="ctc_additional_css_files_content">
<p style="margin-top:0">
<?php _e( 'Stylesheets that are currently being loaded by the parent theme are automatically selected below (except for Bootstrap stylesheets which add a large amount data to the configuration). To further reduce overhead, select only the additional stylesheets you wish to customize.', 'child-theme-configurator' ); ?>
</p>
<ul>
<?php foreach ( $stylesheets as $stylesheet ): ?>
<li>
<label>
<input class="ctc_checkbox" name="ctc_additional_css[]" type="checkbox"
value="<?php echo $stylesheet; ?>" />
<?php echo esc_attr( $stylesheet ); ?></label>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>

View File

@ -0,0 +1,46 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
if ( !defined( 'CHLD_THM_CFG_PRO_VERSION' ) ):
?><div id="get_pro_panel" class="ctc-option-panel<?php echo 'get_pro' == $active_tab ? ' ctc-option-panel-active' : ''; ?>" >
<div class="ctc-input-row clearfix">
<div class="ctc-input-cell"><div style="padding:0 40px">
<a target="_blank" href="<?php echo LILAEAMEDIA_URL; ?>/product/hook-highlighter/" title="<?php _e( 'Learn more about Hook Highlighter', 'child-theme-configurator' ); ?>">
<img src="<?php echo CHLD_THM_CFG_URL . 'css/hook-highlighter-box.png'; ?>" width="430" height="430" /></a>
<p><?php _e( '<strong>Now with time and memory benchmarks!</strong>', 'child-theme-configurator' ); ?></p>
<p><?php _e( 'Hook Highlighter provides insight into the internal program flow of WordPress when activated on any front-facing page of a website.', 'child-theme-configurator' ); ?></p>
<p><?php _e( 'Display action and filter hooks, program files and backtrace information inline for the current page.', 'child-theme-configurator' ); ?></p>
<p><a target="_blank" href="<?php echo LILAEAMEDIA_URL; ?>/product/hook-highlighter/" title="<?php _e( 'Learn more about Hook Highlighter', 'child-theme-configurator' ); ?>">
<?php _e( 'Learn more', 'child-theme-configurator'); ?><i class="dashicons dashicons-external" style="text-decoration:none"></i></a></p>
<hr style="margin:20px 0" />
<a target="_blank" href="<?php echo LILAEAMEDIA_URL; ?>/product/premium-support-install-set-troubleshoot/" title="<?php _e( 'Learn more about Premium Support', 'child-theme-configurator' ); ?>"><img src="<?php echo CHLD_THM_CFG_URL . 'css/ctc-support.jpg'; ?>" width="430" height="430" /></a>
<p><?php _e( 'Maybe you are having trouble getting your child theme to work, or just dont want to mess with it ... <strong>Let us set it up for you!</strong>', 'child-theme-configurator' ); ?> <a target="_blank" href="<?php echo LILAEAMEDIA_URL; ?>/product/premium-support-install-set-troubleshoot/" title="<?php _e( 'Learn more about Premium Support', 'child-theme-configurator' ); ?>">
<?php _e( 'Learn more', 'child-theme-configurator'); ?><i class="dashicons dashicons-external" style="text-decoration:none"></i></a></p>
</div></div>
<div class="ctc-input-cell-wide">
<a target="_blank" href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/child-theme-configurator-pro/" title="<?php _e( 'Learn more about CTC Pro', 'child-theme-configurator' ); ?>"><img src="<?php echo CHLD_THM_CFG_URL . 'css/pro-banner.jpg'; ?>" width="610" height="197" /></a>
<h1><?php _e( 'Customizing WordPress just got even easier.', 'child-theme-configurator' ); ?></h1>
<p><?php _e( 'Thousands of users have already seen the benefits of using Child Theme Configurator. If you spend any amount of time customizing WordPress, CTC Pro will help maximize your productivity.', 'child-theme-configurator' ); ?></p>
<h1><?php _e( 'Designed by Developers Who Use It Every Day.', 'child-theme-configurator' ); ?></h1>
<p><?php _e( 'We\'ve packed in more features to make design work quicker and easier with <strong>Child Theme Configurator Pro.</strong>', 'child-theme-configurator' ); ?></p>
<ul>
<li><h3><?php _e( 'Customize Plugin Stylesheets', 'child-theme-configurator' ); ?></h3>
<p><?php _e( 'Apply the power of CTC\'s top-rated interface to your site\'s plugin styles. All new design makes it much easier to get the results you want.', 'child-theme-configurator' ); ?></p></li>
<li><h3><?php _e( 'Quick Preview', 'child-theme-configurator' ); ?></h3><p><?php _e( 'Preview your child theme with a single click.', 'child-theme-configurator' ); ?></p></li>
<li><h3><?php _e( 'Color Palettes', 'child-theme-configurator' ); ?></h3><p><?php _e( 'Keep the colors you select just a click away. No more searching for hex codes and RGB values.', 'child-theme-configurator' ); ?></p></li>
<li><h3><?php _e( 'Find related styles', 'child-theme-configurator' ); ?></h3><p><?php _e( 'Use the "All Styles" panel to edit groups of selectors from a single combined list.', 'child-theme-configurator' ); ?></p></li>
<li><h3><?php _e( 'Find styles by Nav Menu', 'child-theme-configurator' ); ?></h3><p><?php _e( 'Tweak menus quickly and easily.', 'child-theme-configurator' ); ?></p></li>
<li><h3><?php _e( 'Most recent edits', 'child-theme-configurator' ); ?></h3><p><?php _e( 'Return to recently edited selectors from a toggleable sidebar.', 'child-theme-configurator' ); ?></p></li>
<li><h3><?php _e( 'Add Child Theme Files', 'child-theme-configurator' ); ?></h3>
<p><?php _e( 'Create new template and script files right from the admin.', 'child-theme-configurator' ); ?></p></li>
<li><h3><?php _e( 'Top-rated Online Support', 'child-theme-configurator' ); ?></h3></li>
<li><h3><?php _e( 'Online Documentation', 'child-theme-configurator' ); ?></h3></li>
<li><h3><?php _e( 'Tutorial Videos', 'child-theme-configurator' ); ?></h3></li>
</ul>
<h1><?php _e( 'Upgrade Offer', 'child-theme-configurator' ); ?></h1>
<p class="larger"><?php _e( 'Use coupon code', 'child-theme-configurator' ); ?><code><strong><?php _e( 'wordpress-org', 'child-theme-configurator' ); ?></strong></code><?php _e( 'and get <strong>20% off entire order</strong>.', 'child-theme-configurator' ); ?></p>
<h3><a target="_blank" href="<?php echo LILAEAMEDIA_URL; ?>/cart/?add-to-cart=4549" title="<?php _e( 'Order Now', 'child-theme-configurator' ); ?>"><?php _e( 'Order Now', 'child-theme-configurator' ); ?></a></h3><small><?php _e( '*Prices and offers subject to change.', 'child-theme-configurator' ); ?></small>
</div>
</div></div><?php
endif;

View File

@ -0,0 +1,9 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
if ( !defined( 'CHLD_THM_CFG_PRO_VERSION' ) ):
?><a id="get_pro" href="?page=<?php echo CHLD_THM_CFG_MENU; ?>&amp;tab=get_pro"
class="nav-tab<?php echo 'get_pro' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Upgrade', 'child-theme-configurator' ); ?>
</a><?php
endif;

View File

@ -0,0 +1,8 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Backup Input Cell
?>
<label class="ctc-input-cell smaller<?php echo 'child' == $template && !$this->ctc()->fs && is_writable( $themeroot . $backup ) ? ' writable' : ''; ?>">
<input class="ctc_checkbox" id="ctc_file_<?php echo $template . '_' . ++$counter; ?>"
name="ctc_file_<?php echo $template; ?>[]" type="checkbox"
value="<?php echo $templatefile; ?>" /><?php echo __( 'Backup', 'child-theme-configurator' ) . ' ' . $label; ?></label>

View File

@ -0,0 +1,12 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Additional stylesheets
?><br/>
<?php
foreach ( $this->get_files( $this->css()->get_prop( 'child' ), 'backup' ) as $backup => $label ): ?>
<label>
<input class="ctc_checkbox" id="ctc_revert_<?php echo $backup; ?>" name="ctc_revert" type="radio"
value="<?php echo $backup; ?>" />
<?php echo __( 'Restore backup from', 'child-theme-configurator' ) . ' ' . $label; ?></label>
<br/>
<?php endforeach;

View File

@ -0,0 +1,8 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
if ( $childname = $this->css()->get_prop( 'child_name' ) ): ?>
<div class="ctc-input-cell">
<h3><?php echo __( 'Currently loaded', 'child-theme-configurator' ). ': ' . $childname; ?></h3>
</div>
<?php endif;

View File

@ -0,0 +1,9 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
?>
<label for="ctc_is_debug" style="font-size:9px;float:right">
<input class="ctc_checkbox" id="ctc_is_debug" name="ctc_is_debug" type="checkbox"
value="1" <?php echo checked( $this->ctc()->is_debug, 1 ); ?> autocomplete="off" />
<?php _e( 'Debug', 'child-theme-configurator' ); ?>
</label>

View File

@ -0,0 +1,45 @@
<?php
$errorstrings = array(
'1' => __( 'Zip file creation failed.', 'child-theme-configurator' ),
'2' => __( 'You do not have permission to configure child themes.', 'child-theme-configurator' ),
'3' => __( '%s does not exist. Please select a valid Parent Theme.', 'child-theme-configurator' ),
'4' => __( 'The Functions file is required and cannot be deleted.', 'child-theme-configurator' ),
'5' => __( 'Please select a valid Parent Theme.', 'child-theme-configurator' ),
'6' => __( 'Please select a valid Child Theme.', 'child-theme-configurator' ),
'7' => __( 'Please enter a valid Child Theme directory name.', 'child-theme-configurator' ),
'8' => __( '<strong>%s</strong> exists. Please enter a different Child Theme template name.', 'child-theme-configurator' ),
'9' => __( 'Your theme directories are not writable.', 'child-theme-configurator' ), // add_action( 'chld_thm_cfg_admin_notices', array( $this, 'writable_notice' ) );
'10' => __( 'Could not upgrade child theme', 'child-theme-configurator' ),
'11' => __( 'Your stylesheet is not writable.', 'child-theme-configurator' ), // add_action( 'chld_thm_cfg_admin_notices', array( $this, 'writable_notice' ) );
'12' => __( 'A closing PHP tag was detected in Child theme functions file so "Parent Stylesheet Handling" option was not configured. Closing PHP at the end of the file is discouraged as it can cause premature HTTP headers. Please edit <code>functions.php</code> to remove the final <code>?&gt;</code> tag and click "Generate/Rebuild Child Theme Files" again.', 'child-theme-configurator' ),
'13' => __( 'Could not copy file: %s', 'child-theme-configurator' ),
'14' => __( 'Could not delete %s file.', 'child-theme-configurator' ),
'15' => __( 'could not copy %s', 'child-theme-configurator' ), //unused
'16' => __( 'invalid dir: %s', 'child-theme-configurator' ), //unused
'17' => __( 'deleted: %s != %s files', 'child-theme-configurator' ), //unused
'18' => __( 'newfiles != files', 'child-theme-configurator' ), //unused
'19' => __( 'There were errors while resetting permissions.', 'child-theme-configurator' ), // add_action( 'chld_thm_cfg_admin_notices', array( $this, 'writable_notice' ) );
'20' => __( 'Could not upload file.', 'child-theme-configurator' ),
'21' => __( 'Invalid theme root directory.', 'child-theme-configurator' ),
'22' => __( 'No writable temp directory.', 'child-theme-configurator' ),
'23' => __( 'PclZip returned zero bytes.', 'child-theme-configurator' ),
'24' => __( 'Unpack failed -- %s', 'child-theme-configurator' ), // unused
'25' => __( 'Pack failed -- %s', 'child-theme-configurator' ), //unused
'26' => __( 'Maximum number of styles exceeded.', 'child-theme-configurator' ),
'27' => __( 'Error moving file: %s', 'child-theme-configurator' ),
'28' => __( 'Could not set write permissions.', 'child-theme-configurator' ), // add_action( 'chld_thm_cfg_admin_notices', array( $this, 'writable_notice' ) );
);
$writable_errors = array(
9,
11,
19,
28
);

View File

@ -0,0 +1,13 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
if ( 'child' == $template && !$this->ctc()->fs ): ?>
<input class="ctc_submit button button-primary" id="ctc_templates_writable_submit"
name="ctc_templates_writable_submit" type="submit"
value="<?php _e( 'Make Selected Writable', 'child-theme-configurator' ); ?>" />
<?php endif; ?>
<input class="ctc_submit button button-primary" id="ctc_<?php echo $template; ?>_templates_submit"
name="ctc_<?php echo $template; ?>_templates_submit" type="submit"
value="<?php echo ( 'parnt' == $template ? __( 'Copy Selected to Child Theme', 'child-theme-configurator' ) : __( 'Delete Selected', 'child-theme-configurator' ) ); ?>" />

View File

@ -0,0 +1,11 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// File Input Cell
?>
<label class="ctc-input-cell smaller<?php echo 'child' == $template && !$this->ctc()->fs && is_writable( $themeroot . $file ) ? ' writable' : ''; ?>">
<input class="ctc_checkbox" id="ctc_file_<?php echo $template . '_' . ++$counter; ?>"
name="ctc_file_<?php echo $template; ?>[]" type="checkbox"
value="<?php echo $templatefile; ?>" />
<?php echo 'child' == $template ? apply_filters( 'chld_thm_cfg_editor_link', $templatefile, $editorlink ) : $templatefile; ?></label>

View File

@ -0,0 +1,43 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Files Section
?>
<div class="ctc-input-row clearfix" id="input_row_<?php echo $template; ?>_templates">
<form id="ctc_<?php echo $template; ?>_templates_form" method="post" action="?page=<?php echo $ctcpage; ?>&amp;tab=file_options">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-cell"> <strong>
<?php echo 'parnt' == $template ? __( 'Parent Templates', 'child-theme-configurator' ) : __( 'Child Theme Files', 'child-theme-configurator' ); ?>
</strong>
<?php
if ( 'parnt' == $template ): ?>
<p class="howto">
<?php _e( 'Copy PHP templates from the parent theme by selecting them here. The Configurator defines a template as a Theme PHP file having no PHP functions or classes. Non-template files cannot be inherited by a child theme.', 'child-theme-configurator' ); ?>
</p>
<p class="howto"><strong>
<?php _e( 'CAUTION: If your child theme is active, the child theme version of the file will be used instead of the parent immediately after it is copied.', 'child-theme-configurator' );?>
</strong></p>
<p class="howto"> <?php printf( __( 'The %s file is generated separately and cannot be copied here.', 'child-theme-configurator' ),
sprintf( $editorlink, 'functions.php', 'Click to edit functions.php', '<code>functions.php</code>' )
);
else: ?>
<p class="howto">
<?php printf( $editorlink, 'functions.php', __( 'Click to edit functions.php', 'child-theme-configurator' ), __( 'Click to edit files using the Theme Editor', 'child-theme-configurator' ) ); ?>
</p>
<p class="howto">
<?php
echo ( $this->ctc()->fs ?
__( 'Delete child theme templates by selecting them here.', 'child-theme-configurator' ) :
__( 'Delete child theme templates or make them writable by selecting them here. Writable files are displayed in <span style="color:red">red</span>.', 'child-theme-configurator' )
); ?>
</p>
<?php
endif;
?>
</div>
<div class="ctc-input-cell-wide"> <?php echo $inputs; ?></div>
<div class="ctc-input-cell"> <strong>&nbsp;</strong> </div>
<div class="ctc-input-cell-wide" style="margin-top:10px;margin-bottom:10px">
<?php do_action( 'chld_thm_cfg_file_form_buttons', $template ); ?>
</div>
</form>
</div>

View File

@ -0,0 +1,91 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Files Panel
?>
<div id="file_options_panel"
class="ctc-option-panel <?php $this->maybe_disable(); echo 'file_options' == $active_tab ? ' ctc-option-panel-active' : ''; ?>">
<?php $this->render_file_form( 'parnt' ); ?>
<?php $this->render_file_form( 'child' ); ?>
<?php $this->render_image_form(); ?>
<div class="ctc-input-row clearfix" id="input_row_theme_image">
<form id="ctc_theme_image_form" method="post" action="?page=<?php echo CHLD_THM_CFG_MENU; ?>" enctype="multipart/form-data">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Upload New Child Theme Image', 'child-theme-configurator' ); ?>
</strong>
<p class="howto">
<?php _e( 'Theme images reside under the <code>images</code> directory in your child theme and are meant for stylesheet use only. Use the Media Library for content images.', 'child-theme-configurator' ); ?>
</p>
</div>
<div class="ctc-input-cell-wide">
<input type="file" id="ctc_theme_image" name="ctc_theme_image" value="" />
<input class="ctc_submit button button-primary" id="ctc_theme_image_submit"
name="ctc_theme_image_submit" type="submit"
value="<?php _e( 'Upload', 'child-theme-configurator' ); ?>" />
</div>
</form>
</div>
<?php if ( $screenshot = $this->get_theme_screenshot() ): ?>
<div class="ctc-input-row clearfix" id="input_row_screenshot_view">
<div class="ctc-input-cell"> <strong>
<?php _e( 'Child Theme Screenshot', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell-wide"> <a href="<?php echo $screenshot; ?>" class="thickbox"><img src="<?php echo $screenshot; ?>" height="150" width="200" style="max-height:150px;max-width:200px;width:auto;height:auto" /></a> </div>
</div>
<?php endif; ?>
<div class="ctc-input-row clearfix" id="input_row_screenshot">
<form id="ctc_screenshot_form" method="post" action="?page=<?php echo CHLD_THM_CFG_MENU; ?>" enctype="multipart/form-data">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Upload New Screenshot', 'child-theme-configurator' ); ?>
</strong>
<p class="howto">
<?php _e( 'The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG or GIF. It will be renamed <code>screenshot</code>.', 'child-theme-configurator' ); ?>
</p>
</div>
<div class="ctc-input-cell-wide">
<input type="file" id="ctc_theme_screenshot" name="ctc_theme_screenshot" value="" />
<input class="ctc_submit button button-primary" id="ctc_theme_screenshot_submit"
name="ctc_theme_screenshot_submit" type="submit"
value="<?php _e( 'Upload', 'child-theme-configurator' ); ?>" />
</div>
</form>
</div>
<div class="ctc-input-row clearfix" id="input_row_screenshot">
<div class="ctc-input-cell"> <strong>
<?php _e( 'Export Child Theme as Zip Archive', 'child-theme-configurator' ); ?>
</strong> <p class="howto"><?php _e( 'Click "Export Zip" to save a backup of the currently loaded child theme. You can export any of your themes from the Parent/Child tab.', 'child-theme-configurator' ); ?></p></div>
<div class="ctc-input-cell-wide"><?php
include ( CHLD_THM_CFG_DIR . '/includes/forms/zipform.php' );
?></div>
</div>
<?php if ( 'direct' != $this->ctc()->fs_method ): ?>
<div class="ctc-input-row clearfix" id="input_row_permissions">
<form id="ctc_permission_form" method="post" action="?page=<?php echo CHLD_THM_CFG_MENU; ?>">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Secure Child Theme', 'child-theme-configurator' ); ?>
</strong>
<p class="howto">
<?php _e( 'Attempt to reset child theme permissions to user ownership and read-only access.', 'child-theme-configurator' ); ?>
</p>
</div>
<div class="ctc-input-cell-wide">
<input class="ctc_submit button button-primary" id="ctc_reset_permission"
name="ctc_reset_permission" type="submit"
value="<?php _e( 'Make read-only', 'child-theme-configurator' ); ?>" />
</div>
</form>
</div>
<?php endif; ?>
<div class="ctc-input-row clearfix" id="input_update_key">
<?php // uses output buffer to modify and extend files tab actions
ob_start();
do_action( 'chld_thm_cfg_files_tab' );
$files_tab_options = apply_filters( 'chld_thm_cfg_files_tab_filter', ob_get_contents() );
ob_end_clean();
echo $files_tab_options;
?>
</div>
</div>

View File

@ -0,0 +1,12 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Image Input Cell
?>
<div class="ctc-input-cell" style="height:100px">
<label class="smaller">
<input class="ctc_checkbox" id="ctc_img_<?php echo ++$counter; ?>"
name="ctc_img[]" type="checkbox"
value="<?php echo $templatefile; ?>" />
<?php echo $templatefile; if ( is_array( $imagesize ) ): ?> ( <?php echo $imagesize[ 0 ]; ?> x <?php echo $imagesize[ 1 ]; ?> px ) <?php endif; ?></label>
<br/>
<a href="<?php echo $themeuri . $file; ?>" class="thickbox"><img src="<?php echo $themeuri . $file . '?' . time(); ?>" height="72" width="72" style="max-height:72px;max-width:100%;width:auto;height:auto" /></a></div>

View File

@ -0,0 +1,24 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Images Section
$ctcpage = apply_filters( 'chld_thm_cfg_admin_page', CHLD_THM_CFG_MENU );
?>
<div class="ctc-input-row clearfix" id="input_row_images">
<form id="ctc_image_form" method="post" action="?page=<?php echo $ctcpage; ?>&amp;tab=file_options">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Child Theme Images', 'child-theme-configurator' ); ?>
</strong>
<p class="howto">
<?php _e( 'Delete child theme images by selecting them here.', 'child-theme-configurator' );?>
</p>
</div>
<div class="ctc-input-cell-wide"> <?php echo $inputs; ?> </div>
<div class="ctc-input-cell"> <strong>&nbsp;</strong> </div>
<div class="ctc-input-cell-wide" style="margin-top:10px;margin-bottom:10px">
<input class="ctc_submit button button-primary" id="ctc_image_submit"
name="ctc_image_submit" type="submit"
value="<?php _e( 'Delete Selected', 'child-theme-configurator' ); ?>" disabled />
</div>
</form>
</div>

View File

@ -0,0 +1,86 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// backward compat
$css = $this->css();
// main CTC Page
?>
<style type="text/css">
.ctc-step-number {
background-color: <?php echo $this->colors[ 3 ];
?>;
}
.ctc-step-letter {
background-color: <?php echo $this->colors[ 2 ];
?>;
}
.ctc-step + strong {
color: <?php echo $this->colors[ 1 ];
?>;
}
.ctc-status-icon.success {
background:url(<?php echo admin_url( 'images/yes.png' );
?>) no-repeat;
}
.ctc-status-icon.failure {
background:url(<?php echo admin_url( 'images/no.png' );
?>) no-repeat;
}
.ctc-exit {
background:#f9f9f9 url(<?php echo includes_url( 'images/xit-2x.gif' );
?>) left top no-repeat;
}
</style>
<div class="wrap" id="ctc_main">
<?php do_action( 'chld_thm_cfg_related_links' ); ?>
<h2><?php echo apply_filters( 'chld_thm_cfg_header', __( 'Child Theme Configurator', 'child-theme-configurator' ) . ' ' . __( 'version', 'child-theme-configurator' ) . ' ' . CHLD_THM_CFG_VERSION ); ?></h2>
<?php
if ( $this->ctc()->is_post && !$this->ctc()->fs ):
//die( 'in fs prompt' );
echo $this->ctc()->fs_prompt;
else:
?>
<div class="clearfix" >
<?php do_action( 'chld_thm_cfg_before_tabs' ); ?>
</div>
<div id="ctc_error_notice">
<?php $this->render_settings_errors(); ?>
</div>
<?php
// if flag has been set because an action is required, do not render interface
if ( !$this->ctc()->skip_form ):
include ( CHLD_THM_CFG_DIR . '/includes/forms/tabs.php' );
?>
<div id="ctc_option_panel_wrapper" style="position:relative">
<div class="ctc-option-panel-container">
<?php
include ( CHLD_THM_CFG_DIR . '/includes/forms/parent-child.php' );
if ( $this->enqueue_is_set() ):
include ( CHLD_THM_CFG_DIR . '/includes/forms/rule-value.php' );
include ( CHLD_THM_CFG_DIR . '/includes/forms/query-selector.php' );
if ( $this->ctc()->is_theme() )
include ( CHLD_THM_CFG_DIR . '/includes/forms/webfonts.php' ); ?>
<div id="view_child_options_panel"
class="ctc-option-panel <?php echo 'view_child_options' == $active_tab ? ' ctc-option-panel-active' : ''; ?>"> </div>
<div id="view_parnt_options_panel"
class="ctc-option-panel <?php echo 'view_parnt_options' == $active_tab ? ' ctc-option-panel-active' : ''; ?>"> </div>
<?php
if ( $this->ctc()->is_theme() )
include ( CHLD_THM_CFG_DIR . '/includes/forms/files.php' );
endif;
if ( $this->enqueue_is_set() || $this->supports_disable() ):
do_action( 'chld_thm_cfg_panels', $active_tab );
endif;
?>
</div>
<?php do_action( 'chld_thm_cfg_sidebar' ); ?>
</div>
<?php
endif;
endif;
?>
<div id="ctc_debug_container">
<?php if ( $this->ctc()->is_debug ): ?>
<textarea id="ctc_debug_box"><?php echo $this->ctc()->get_debug(); ?></textarea>
<?php endif; ?>
</div>
</div>

View File

@ -0,0 +1,118 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
?>
<div class="notice-warning notice is-dismissible<?php echo ( 'upgrade' == $msg ? ' ctc-upgrade-notice' : '' ); ?>" style="display:block">
<?php
switch( $msg ):
case 'writable': ?>
<p class="ctc-section-toggle" id="ctc_perm_options">
<?php _e( 'The child theme is in read-only mode and Child Theme Configurator cannot apply changes. Click to see options', 'child-theme-configurator' ); ?>
</p>
<div class="ctc-section-toggle-content" id="ctc_perm_options_content">
<p>
<ol>
<?php
$ctcpage = apply_filters( 'chld_thm_cfg_admin_page', CHLD_THM_CFG_MENU );
if ( 'WIN' != substr( strtoupper( PHP_OS ), 0, 3 ) ):
_e( '<li>Temporarily set write permissions by clicking the button below. When you are finished editing, revert to read-only by clicking "Make read-only" under the "Files" tab.</li>', 'child-theme-configurator' );
?>
<form action="" method="post">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<input name="ctc_set_writable" class="button" type="submit" value="<?php _e( 'Make files writable', 'child-theme-configurator' ); ?>"/>
</form>
<?php endif;
_e( '<li><a target="_blank" href="http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants" title="Editin wp-config.php">Add your FTP/SSH credentials to the WordPress config file</a>.</li>', 'child-theme-configurator' );
if ( isset( $_SERVER[ 'SERVER_SOFTWARE' ] ) && preg_match( '%iis%i',$_SERVER[ 'SERVER_SOFTWARE' ] ) )
_e( '<li><a target="_blank" href="http://technet.microsoft.com/en-us/library/cc771170" title="Setting Application Pool Identity">Assign WordPress to an application pool that has write permissions</a> (Windows IIS systems).</li>', 'child-theme-configurator' );
_e( '<li><a target="_blank" href="http://codex.wordpress.org/Changing_File_Permissions" title="Changing File Permissions">Set write permissions on the server manually</a> (not recommended).</li>', 'child-theme-configurator' );
if ( 'WIN' != substr( strtoupper( PHP_OS ), 0, 3 ) ):
_e( '<li>Run PHP under Apache with suEXEC (contact your web host).</li>', 'child-theme-configurator' );
endif; ?>
</ol>
</p>
</div>
<?php
break;
case 'owner':
$ctcpage = apply_filters( 'chld_thm_cfg_admin_page', CHLD_THM_CFG_MENU ); // FIXME? ?>
<p>
<?php _e( 'This Child Theme has incorrect ownership permissions. Child Theme Configurator will attempt to correct this when you click the button below.', 'child-theme-configurator' ) ?>
</p>
<p>
<form action="" method="post">
<?php
wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<input name="ctc_reset_permission" class="button" type="submit" value="<?php _e( 'Correct Child Theme Permissions', 'child-theme-configurator' ); ?>"/>
</form>
</p>
<?php
break;
case 'enqueue': ?>
<p>
<?php _e( 'Child Theme Configurator needs to update its internal data. Please set your preferences below and click "Generate Child Theme Files" to update your configuration.', 'child-theme-configurator' ) ?>
</p>
<?php
break;
case 'max_styles':
echo sprintf( __( '<strong>However, some styles could not be parsed due to memory limits.</strong> Try deselecting "Additional Stylesheets" below and click "Generate/Rebuild Child Theme Files". %sWhy am I seeing this?%s', 'child-theme-configurator' ),
'<a target="_blank" href="' . LILAEAMEDIA_URL . '/child-theme-configurator#php_memory">',
'</a>' );
break;
case 'config': ?>
<p>
<?php _e( 'Child Theme Configurator did not detect any configuration data because a previously configured Child Theme has been removed. Please follow the steps for "CONFIGURE an existing Child Theme" under the "Parent/Child" Tab.', 'child-theme-configurator' ) ?>
</p>
<?php
break;
case 'changed': ?>
<p>
<?php _e( 'Your stylesheet has changed since the last time you used the Configurator. Please follow the steps for "CONFIGURE an existing Child Theme" under the "Parent/Child" Tab or you will lose these changes.', 'child-theme-configurator' ) ?>
</p>
<?php
break;
case 'upgrade':
$child = $this->css()->get_prop( 'child' );
?>
<?php if ( $child ): ?>
<div class="clearfix">
<?php endif; ?>
<h3>
<?php _e( 'Thank you for installing Child Theme Configurator.', 'child-theme-configurator' ); ?>
</h3>
<p class="howto">
<?php _e( 'A lot of time and testing has gone into this release but there may be edge cases. If you have any questions, please', 'child-theme-configurator' ); ?>
<a href="<?php echo LILAEAMEDIA_URL; ?>/contact" target="_blank">
<?php _e( 'Contact Us.', 'child-theme-configurator' ); ?>
</a></p>
<p class="howto">
<?php _e( 'For more information, please open the Help tab at the top right or ', 'child-theme-configurator' ) ?>
<a href="http://www.childthemeconfigurator.com/tutorial-videos/" target="_blank">
<?php _e( 'click here to view the latest videos.', 'child-theme-configurator' ); ?>
</a></p>
<?php if ( $child ): ?>
<p>
<?php _e( 'It is a good idea to save a Zip Archive of your Child Theme before using CTC for the first time. Click the "save backup" link ( see Step 2, below ) to export your themes.', 'child-theme-configurator' ); ?>
</p>
</div>
<?php endif;
break;
?>
<?php endswitch; ?>
</div>

View File

@ -0,0 +1,474 @@
<?php
if ( !defined( 'ABSPATH' ) )exit;
// Parent/Child Panel
?>
<div id="parent_child_options_panel" class="ctc-option-panel<?php echo 'parent_child_options' == $active_tab ? ' ctc-option-panel-active' : ''; ?>">
<form id="ctc_load_form" method="post" action="">
<?php if ( $this->ctc()->is_theme() ): ?>
<?php // theme inputs
wp_nonce_field( 'ctc_update' );
do_action( 'chld_thm_cfg_controls' );
?><input type="hidden" name="ctc_analysis" value=""/>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_child">
<div class="ctc-input-cell"><span class="ctc-step ctc-step-number">1</span>
<strong class="shift">
<?php _e( 'Select an action:', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<label>
<input class="ctc-radio ctc-themeonly" id="ctc_child_type_new" name="ctc_child_type" type="radio" value="new"
<?php echo ( 'new' == $this->ctc()->childtype ? 'checked' : '' ); ?> />
<strong>
<?php _e( 'CREATE a new Child Theme', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent sep">
<?php _e( 'Install a new customizable child theme using an installed theme as a parent.', 'child-theme-configurator' ); ?>
</p>
</label>
<!-- /div -->
<?php if ( count( $this->ctc()->themes[ 'child' ] ) ): ?>
<!-- div class="ctc-input-cell ctc-clear">&nbsp;</div>
<div class="ctc-input-cell-wide" -->
<label>
<input class="ctc-radio ctc-themeonly" id="ctc_child_type_existing" name="ctc_child_type" type="radio" value="existing"
<?php echo ( 'new' != $this->ctc()->childtype ? 'checked' : '' ); ?> />
<strong>
<?php _e( 'CONFIGURE an existing Child Theme', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent sep">
<?php _e( 'Set up a previously installed child theme for use with the Configurator or to modify current settings.', 'child-theme-configurator' ); ?>
</p>
</label>
<!-- /div>
<div class="ctc-input-cell ctc-clear">&nbsp;</div>
<div class="ctc-input-cell-wide" -->
<label>
<input class="ctc-radio ctc-themeonly" id="ctc_child_type_duplicate" name="ctc_child_type" type="radio" value="duplicate" />
<strong>
<?php _e( 'DUPLICATE an existing Child Theme', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent sep">
<?php _e( 'Make a complete copy of an existing Child Theme in a new directory, including any menus, widgets and other Customizer settings. The option to copy the Parent Theme settings (step 8, below) is disabled with this action.', 'child-theme-configurator' ); ?>
</p>
</label>
<!-- /div>
<div class="ctc-input-cell ctc-clear">&nbsp;</div>
<div class="ctc-input-cell-wide" -->
<label>
<input class="ctc-radio ctc-themeonly" id="ctc_child_type_reset" name="ctc_child_type" type="radio" value="reset" />
<strong>
<?php _e( 'RESET an existing Child Theme (this will destroy any work you have done in the Configurator)', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent">
<?php _e( 'Revert the Child theme stylesheet and functions files to their state before the initial configuration or last reset. Additional child theme files will not be removed, but you can delete them under the Files tab.', 'child-theme-configurator' ); ?>
</p>
</label>
</div>
<?php endif; ?>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_new_theme_option" style="display:none">
<div class="ctc-input-cell" style="clear:both"><span class="ctc-step ctc-step-number">2</span>
<strong>
<?php _e( 'Select a Parent Theme:', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent">
<a href="#" class="ctc-backup-theme">
<?php _e( 'Click here to save a backup of the selected theme.', 'child-theme-configurator' ); ?>
</a>
</p>
</div>
<div class="ctc-input-cell">
<?php $this->render_theme_menu( 'parnt', $this->ctc()->get_current_parent() ); ?>
<input type="button" class="button button-primary ctc-analyze-theme" value="<?php _e( 'Analyze', 'child-theme-configurator' ); ?>"/>
</div>
<div class="ctc-input-cell"><span class="ctc-analyze-howto"><span class="ctc-step ctc-step-number">3</span>
<strong>
<?php _e( 'Analyze Parent Theme', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent">
<?php _e( 'Click "Analyze" to determine stylesheet dependencies and other potential issues.', 'child-theme-configurator' ); ?>
</p>
</span>
</div>
<div class="ctc-input-cell ctc-clear">&nbsp;</div>
<div class="ctc-input-cell-wide ctc-analysis" id="parnt_analysis_notice">&nbsp;</div>
</div>
<?php if ( count( $this->ctc()->themes[ 'child' ] ) ): ?>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_existing_theme_option" style="display:none">
<div class="ctc-input-cell"><span class="ctc-step ctc-step-number">2</span>
<strong>
<?php _e( 'Select a Child Theme:', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent">
<a href="#" class="ctc-backup-theme">
<?php _e( 'Click here to save a backup of the selected theme.', 'child-theme-configurator' ); ?>
</a>
</p>
</div>
<div class="ctc-input-cell">
<?php $this->render_theme_menu( 'child', $this->ctc()->get_current_child() ); ?>
<input type="button" class="button button-primary ctc-analyze-theme" value="<?php _e( 'Analyze', 'child-theme-configurator' ); ?>"/>
</div>
<div class="ctc-input-cell"><span class="ctc-analyze-howto"><span class="ctc-step ctc-step-number">3</span>
<strong>
<?php _e( 'Analyze Child Theme', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent">
<?php _e( 'Click "Analyze" to determine stylesheet dependencies and other potential issues.', 'child-theme-configurator' ); ?>
</p>
</span>
</div>
<div class="ctc-input-cell ctc-clear">&nbsp;</div>
<div class="ctc-input-cell-wide ctc-analysis" id="child_analysis_notice">&nbsp;</div>
</div>
<?php
endif; ?>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_new_theme_slug" style="display:none">
<div class="ctc-input-cell" style="clear:both"><span class="ctc-step ctc-step-number">4</span>
<strong class="shift">
<?php _e( 'Name the new theme directory:', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell">
<input class="ctc_text ctc-themeonly" id="ctc_child_template" name="ctc_child_template" type="text" placeholder="<?php _e( 'Directory Name', 'child-theme-configurator' ); ?>" autocomplete="off" />
</div>
<div class="ctc-input-cell"><span class="howto">
<strong>
<?php _e( 'NOTE:', 'child-theme-configurator' ); ?>
</strong>
<?php _e( 'This is NOT the name of the Child Theme. You can customize the name, description, etc. in step 7, below.', 'child-theme-configurator' ); ?></span>
</div>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_theme_slug" style="display:none">
<div class="ctc-input-cell" style="clear:both"><span class="ctc-step ctc-step-number">4</span>
<strong class="shift">
<?php _e( 'Verify Child Theme directory:', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell"><code id="theme_slug_container">
</code>
</div>
<div class="ctc-input-cell">
<span class="howto">
<?php _e( 'For verification only (you cannot modify the directory of an existing Child Theme).', 'child-theme-configurator' ); ?>
</span>
</div>
</div>
<?php
$handling = $this->ctc()->get( 'handling' );
$ignoreparnt = $this->ctc()->get( 'ignoreparnt' );
$enqueue = $this->ctc()->get( 'enqueue' );
$this->ctc()->debug( 'handling: ' . $handling . ' ignore: ' . $ignoreparnt . ' enqueue: ' . $enqueue, 'parent-child.php' );
?>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_stylesheet_handling_container" style="display:none">
<div class="ctc-input-cell ctc-clear" id="input_row_stylesheet_handling"><span class="ctc-step ctc-step-number">5</span>
<strong class="shift">
<?php _e( 'Select where to save new styles:', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide sep">
<div id="child_handling_notice"></div>
<label>
<input class="ctc_radio ctc-themeonly" id="ctc_handling_primary" name="ctc_handling" type="radio"
value="primary" <?php checked( $handling, 'primary' ); ?> autocomplete="off" />
<strong>
<?php _e( "Primary Stylesheet (style.css)", 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent sep">
<?php _e( 'Save new custom styles directly to the Child Theme primary stylesheet, replacing the existing values. The primary stylesheet will load in the order set by the theme.', 'child-theme-configurator' ); ?>
</p>
</label>
</div>
<div class="ctc-input-cell ctc-clear">&nbsp;</div>
<div class="ctc-input-cell-wide">
<label>
<input class="ctc_radio ctc-themeonly" id="ctc_handling_separate" name="ctc_handling" type="radio"
value="separate" <?php checked( $handling, 'separate' ); ?> autocomplete="off" />
<strong>
<?php _e( 'Separate Stylesheet', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent">
<?php _e( 'Save new custom styles to a separate stylesheet and combine any existing child theme styles with the parent to form baseline. Select this option if you want to preserve the existing child theme styles instead of overwriting them. This option also allows you to customize stylesheets that load after the primary stylesheet.', 'child-theme-configurator' ); ?>
</p>
</label>
</div>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_parent_handling_container" style="display:none">
<div class="ctc-input-cell ctc-clear" id="input_row_parent_handling" title="<?php _e( 'Click to expand', 'child-theme-configurator' ); ?>"><span class="ctc-step ctc-step-number">6</span>
<strong class="shift">
<?php _e( 'Select Parent Theme stylesheet handling:', 'child-theme-configurator' ); ?>
</strong>
<p class="howto"></p>
</div>
<div class="ctc-input-cell-wide sep">
<div id="parent_handling_notice"></div>
<?php // deprecated enqueue values
if ( 'both' == $enqueue || 'child' == $enqueue ):
$enqueue = 'enqueue';
endif; ?>
<label>
<input class="ctc_checkbox ctc-themeonly" id="ctc_enqueue_enqueue" name="ctc_enqueue" type="radio"
value="enqueue" <?php checked( $enqueue, 'enqueue' ); ?> autocomplete="off" />
<strong>
<?php _e( 'Use the WordPress style queue.', 'child-theme-configurator' ); ?>
</strong>
</label>
<p class="howto indent sep">
<?php _e( "Let the Configurator determine the appropriate actions and dependencies and update the functions file automatically.", 'child-theme-configurator' ); ?>
</p>
<label>
<input class="ctc_checkbox ctc-themeonly" id="ctc_enqueue_import" name="ctc_enqueue" type="radio"
value="import" <?php checked( $enqueue, 'import' ); ?> autocomplete="off" />
<strong>
<?php _e( 'Use <code>@import</code> in the child theme stylesheet.', 'child-theme-configurator' ); ?>
</strong>
</label>
<p class="howto indent sep">
<?php _e( "Only use this option if the parent stylesheet cannot be loaded using the WordPress style queue. Using <code>@import</code> is not recommended.", 'child-theme-configurator' ); ?>
</p>
<label>
<input class="ctc_checkbox ctc-themeonly" id="ctc_enqueue_none" name="ctc_enqueue" type="radio"
value="none" <?php checked( $enqueue, 'none' ); ?> autocomplete="off" />
<strong>
<?php _e( 'Do not add any parent stylesheet handling.', 'child-theme-configurator' ); ?>
</strong>
<p class="howto indent sep">
<?php _e( "Select this option if this theme already handles the parent theme stylesheet or if the parent theme's <code>style.css</code> file is not used for its appearance.", 'child-theme-configurator' ); ?>
</p>
</label>
</div>
<div class="ctc-input-cell ctc-clear">
<strong style="float:right">
<?php _e( 'Advanced handling options', 'child-theme-configurator' ); ?>:</strong>
<p class="howto">
</p>
</div>
<div class="ctc-input-cell-wide">
<label><input class="ctc_checkbox ctc-themeonly" id="ctc_ignoreparnt" name="ctc_ignoreparnt" type="checkbox"
value="1" autocomplete="off" />
<strong><?php _e( 'Ignore parent theme stylesheets.', 'child-theme-configurator' ); ?></strong>
<p class="howto indent"><?php _e( 'Do not load or parse the parent theme styles. Only use this option if the Child Theme uses a Framework like Genesis and uses <em>only child theme stylesheets</em> for its appearance.', 'child-theme-configurator' ); ?></p></label>
</div>
<div id="ctc_repairheader_container" style="display:none">
<div class="ctc-input-cell ctc-clear">
<p class="howto">
</p>
</div>
<div class="ctc-input-cell-wide sep">
<label><input class="ctc_checkbox ctc-themeonly" id="ctc_repairheader" name="ctc_repairheader" type="checkbox"
value="1" autocomplete="off" />
<strong><?php _e( 'Repair the header template in the child theme.', 'child-theme-configurator' ); ?></strong>
<p class="howto indent"><?php _e( 'Let the Configurator (try to) resolve any stylesheet issues listed above. This can fix many, but not all, common problems.', 'child-theme-configurator' ); ?></p></label>
</div>
</div>
<div id="ctc_dependencies_container" style="display:none">
<div class="ctc-input-cell ctc-clear">
<p class="howto">
</p>
</div>
<div class="ctc-input-cell-wide sep">
<strong class="indent">
<?php _e( 'Do not force dependency for these stylesheet handles:', 'child-theme-configurator' ); ?>
</strong>
<p id="ctc_dependencies"></p>
<p class="howto indent">
<?php _e( 'By default, the order of stylesheets that load prior to the primary stylesheet is preserved by treating them as dependencies. In some cases, stylesheets are detected in the preview that are not used site-wide. If necessary, dependency can be removed for specific stylesheets above.', 'child-theme-configurator' ); ?>
</p>
</div>
</div>
<?php //do_action( 'chld_thm_cfg_enqueue_options' ); // removed for ctc 2.0 ?>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="ctc_child_header_parameters" style="display:none">
<div class="ctc-input-cell" ><span class="ctc-step ctc-step-number">7</span>
<strong>
<?php _e( 'Customize the Child Theme Name, Description, Author, Version, etc.:', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<button class="ctc-section-toggle button-secondary" id="ctc_theme_attributes" title="<?php _e( 'Click to toggle form', 'child-theme-configurator' ); ?>"><?php _e( 'Click to Edit Child Theme Attributes', 'child-theme-configurator' ); ?> &nbsp;</button></div>
<div class="ctc-clear ctc-section-toggle-content" id="ctc_theme_attributes_content">
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_child_name">
<div class="ctc-input-cell">
<strong>
<?php _e( 'Child Theme Name', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<input class="ctc_text ctc-themeonly" id="ctc_child_name" name="ctc_child_name" type="text" value="<?php echo esc_attr( $this->ctc()->get( 'child_name' ) ); ?>" placeholder="<?php _e( 'Theme Name', 'child-theme-configurator' ); ?>" autocomplete="off" />
</div>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_child_website">
<div class="ctc-input-cell">
<strong>
<?php _e( 'Theme Website', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<input class="ctc_text ctc-themeonly" id="ctc_child_themeuri" name="ctc_child_themeuri" type="text" value="<?php echo esc_attr( $this->ctc()->get( 'themeuri' ) ); ?>" placeholder="<?php _e( 'Theme Website', 'child-theme-configurator' ); ?>" autocomplete="off" />
</div>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_child_author">
<div class="ctc-input-cell">
<strong>
<?php _e( 'Author', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<input class="ctc_text" id="ctc_child_author" name="ctc_child_author" type="text" value="<?php echo esc_attr( $this->ctc()->get( 'author' ) ); ?>" placeholder="<?php _e( 'Author', 'child-theme-configurator' ); ?>" autocomplete="off"/>
</div>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_child_authoruri">
<div class="ctc-input-cell">
<strong>
<?php _e( 'Author Website', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<input class="ctc_text ctc-themeonly" id="ctc_child_authoruri" name="ctc_child_authoruri" type="text" value="<?php echo esc_attr( $this->ctc()->get( 'authoruri' ) ); ?>" placeholder="<?php _e( 'Author Website', 'child-theme-configurator' ); ?>" autocomplete="off" />
</div>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_child_descr">
<div class="ctc-input-cell">
<strong>
<?php _e( 'Theme Description', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<textarea class="ctc_text ctc-themeonly" id="ctc_child_descr" name="ctc_child_descr" placeholder="<?php _e( 'Description', 'child-theme-configurator' ); ?>" autocomplete="off" ><?php echo esc_textarea( $this->ctc()->get( 'descr' ) ); ?></textarea>
</div>
</div>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="input_row_child_tags">
<div class="ctc-input-cell">
<strong>
<?php _e( 'Theme Tags', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<textarea class="ctc_text ctc-themeonly" id="ctc_child_tags" name="ctc_child_tags" placeholder="<?php _e( 'Tags', 'child-theme-configurator' ); ?>" autocomplete="off" ><?php echo esc_textarea( $this->ctc()->get( 'tags' ) ); ?></textarea>
</div>
</div>
<div class="clearfix ctc-themeonly-container" id="input_row_child_version">
<div class="ctc-input-cell">
<strong>
<?php _e( 'Version', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell">
<input class="ctc_text" id="ctc_child_version" name="ctc_child_version" type="text" value="<?php echo esc_attr( $this->ctc()->get( 'version' ) ); ?>" placeholder="<?php _e( 'Version', 'child-theme-configurator' ); ?>" autocomplete="off"/>
</div>
</div>
</div>
</div>
<?php //if ( ! is_multisite() || ! empty( $this->ctc()->themes[ 'parnt' ][ $this->ctc()->get_current_parent() ][ 'allowed' ] ) ): ?>
<div class="ctc-input-row clearfix ctc-themeonly-container" id="ctc_copy_theme_mods" style="display:none">
<div class="ctc-input-cell">
<label for="ctc_parent_mods"><span class="ctc-step ctc-step-number">8</span><strong>
<?php _e( 'Copy Menus, Widgets and other Customizer Settings from the Parent Theme to the Child Theme:', 'child-theme-configurator' ); ?>
</strong> </label>
</div>
<div class="ctc-input-cell-wide howto">
<label for="ctc_parent_mods">
<input class="ctc_checkbox ctc-themeonly" id="ctc_parent_mods" name="ctc_parent_mods" type="checkbox"
value="1" />
<?php _e( "This option replaces the Child Theme's existing Menus, Widgets and other Customizer Settings with those from the Parent Theme. You should only need to use this option the first time you configure a Child Theme.", 'child-theme-configurator' ); ?>
<h3>
<?php _e( 'IMPORTANT: Some "premium" themes use unsupported options that cannot be copied with the free verson of CTC. If you purchased this theme from a website such as "ThemeForest," child themes may not work correctly. Click the "Upgrade" tab for more information.', 'child-theme-configurator' ); ?>
</h3>
</label>
</div>
</div>
<?php //endif; ?>
<div class="ctc-input-row clearfix" id="ctc_configure_submit" style="display:none">
<div class="ctc-input-cell"><span class="ctc-step ctc-step-number">9</span>
<strong class="shift">
<?php _e( 'Click to run the Configurator:', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<input class="ctc_submit button button-primary" id="ctc_load_styles" name="ctc_load_styles" type="submit" value="<?php _e( 'Configure Child Theme', 'child-theme-configurator' ); ?>" disabled/>
</div>
</div>
<?php
else :
// plugin inputs
wp_nonce_field( 'ctc_plugin' );
?>
<input class="ctc-hidden" id="ctc_theme_parnt" name="ctc_theme_parnt" type="hidden" value="<?php echo $this->ctc()->css->get_prop( 'parnt' ); ?>"/>
<input class="ctc-hidden" id="ctc_theme_child" name="ctc_theme_child" type="hidden" value="<?php echo $this->ctc()->css->get_prop( 'child' ); ?>"/>
<input class="ctc-hidden" id="ctc_action" name="ctc_action" type="hidden" value="plugin"/>
<input class="ctc-hidden" id="ctc_child_type" name="ctc_child_type" type="hidden" value="existing"/>
<div class="ctc-input-cell-wide ctc-analysis" id="child_analysis_notice">&nbsp;</div>
<div class="ctc-input-row clearfix" id="ctc_stylesheet_files">
<?php
$stylesheets = ChildThemeConfiguratorPro::ctcp()->get_css_files();
if ( count( $stylesheets ) ): ?>
<div class="ctc-input-cell ctc-section-toggle" id="ctc_additional_css_files">
<strong>
<?php _e( 'Parse Plugin stylesheets:', 'chld_thm_cfg' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide ctc-section-toggle-content" id="ctc_additional_css_files_content" style="display:block">
<p style="margin-top:0">
<?php _e( 'Select the plugin stylesheets you wish to customize below.', 'chld_thm_cfg' ); ?>
</p>
<ul>
<?php
foreach ( $stylesheets as $stylesheet => $label ): ?>
<li><label>
<input class="ctc_checkbox" name="ctc_additional_css[]" type="checkbox"
value="<?php echo $stylesheet; ?>" />
<?php echo $label; ?></label>
</li>
<?php
endforeach; ?>
</ul>
</div>
<?php
endif; ?>
</div>
<div class="ctc-input-row clearfix" id="ctc_configure_submit_plugins" style="display:none">
<div class="ctc-input-cell">
<strong class="shift">
<?php _e( 'Click to run the Configurator:', 'child-theme-configurator' ); ?>
</strong>
</div>
<div class="ctc-input-cell-wide">
<input class="ctc_submit button button-primary" id="ctc_load_styles_plugins" name="ctc_load_styles" type="submit" value="<?php _e( 'Configure Plugin Styles', 'child-theme-configurator' ); ?>" disabled/>
</div>
</div>
<?php endif; ?>
</form>
</div>

View File

@ -0,0 +1,99 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Query/Selector Panel
$ctcpage = apply_filters( 'chld_thm_cfg_admin_page', CHLD_THM_CFG_MENU );
?>
<div id="query_selector_options_panel"
class="ctc-option-panel <?php $this->maybe_disable(); echo 'query_selector_options' == $active_tab ? ' ctc-option-panel-active' : ''; ?>">
<p class="howto"><?php _e( 'To find and edit specific selectors within @media query blocks, first choose the query, then the selector. Use the "base" query to edit all other selectors.', 'child-theme-configurator' ); ?></p>
<form id="ctc_query_selector_form" method="post" action="?page=<?php echo $ctcpage; ?>">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-row clearfix" id="input_row_query">
<div class="ctc-input-cell"> <strong>
<?php _e( '@media Query', 'child-theme-configurator' ); ?>
</strong> <?php _e( '( or "base" )', 'child-theme-configurator' ); ?> <a href="#" class="ctc-rewrite-toggle rewrite-query"></a></div>
<div class="ctc-input-cell" id="ctc_sel_ovrd_query_selected">&nbsp;</div>
<div class="ctc-input-cell">
<div class="ui-widget">
<input id="ctc_sel_ovrd_query" />
</div>
</div>
</div>
<div class="ctc-input-row clearfix" id="input_row_selector">
<div class="ctc-input-cell"> <strong>
<?php _e( 'Selector', 'child-theme-configurator' ); ?>
</strong> <a href="#" class="ctc-rewrite-toggle rewrite-selector"></a></div>
<div class="ctc-input-cell" id="ctc_sel_ovrd_selector_selected">&nbsp;</div>
<div class="ctc-input-cell">
<div class="ui-widget">
<input id="ctc_sel_ovrd_selector" />
<div id="ctc_status_qsid" style="float:right"></div>
</div>
</div>
</div>
<div class="ctc-selector-row clearfix" id="ctc_sel_ovrd_rule_inputs_container" style="display:none">
<div class="ctc-input-row clearfix">
<div class="ctc-input-cell"><strong>
<?php _e( 'Sample', 'child-theme-configurator' ); ?>
</strong></div>
<div class="ctc-input-cell clearfix" style="max-height:150px;overflow:hidden">
<div class="ctc-swatch" id="ctc_child_all_0_swatch"><?php echo $this->swatch_txt; ?></div>
</div>
<div id="ctc_status_sel_val"></div>
<div class="ctc-input-cell ctc-button-cell" id="ctc_save_query_selector_cell">
<input type="submit" class="button button-primary ctc-save-input" id="ctc_save_query_selector"
name="ctc_save_query_selector" value="<?php _e( 'Save Child Values', 'child-theme-configurator' ); ?>" disabled />
<a class="ctc-delete-input" id="ctc_delete_query_selector" href="#"><?php _e( 'Delete Child Values', 'child-theme-configurator' ); ?></a>
<input type="hidden" id="ctc_sel_ovrd_qsid"
name="ctc_sel_ovrd_qsid" value="" />
</div>
</div>
<div class="ctc-input-row clearfix" id="ctc_sel_ovrd_rule_header" style="display:none">
<div class="ctc-input-cell"> <strong>
<?php _e( 'Property', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Baseline Value', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Child Value', 'child-theme-configurator' ); ?>
</strong> </div>
</div>
<div id="ctc_sel_ovrd_rule_inputs" style="display:none"> </div>
<div class="ctc-input-row clearfix" id="ctc_sel_ovrd_new_rule" style="display:none">
<div class="ctc-input-cell"> <strong>
<?php _e( 'New Property', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell">
<div class="ui-widget">
<input id="ctc_new_rule_menu" />
</div>
</div>
</div>
<div class="ctc-input-row clearfix" id="input_row_load_order">
<div class="ctc-input-cell"> <strong>
<?php _e( 'Order', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell" id="ctc_child_load_order_container">&nbsp;</div>
</div>
</div></form><form id="ctc_raw_css_form" method="post" action="?page=<?php echo $ctcpage; ?>">
<div class="ctc-selector-row clearfix" id="ctc_new_selector_row">
<div class="ctc-input-cell">
<div class="ctc-textarea-button-cell" id="ctc_save_query_selector_cell">
<input type="button" class="button" id="ctc_copy_selector"
name="ctc_copy_selector" value="<?php _e( 'Copy Selector', 'child-theme-configurator' ); ?>" /> &nbsp;
<input type="button" class="button button-primary ctc-save-input" id="ctc_save_new_selectors"
name="ctc_save_new_selectors" value="<?php _e( 'Save', 'child-theme-configurator' ); ?>" disabled />
</div>
<strong>
<?php _e( 'Raw CSS', 'child-theme-configurator' ); ?>
</strong>
<p class="howto"><?php _e( 'Use to enter shorthand CSS or new @media queries and selectors.', 'child-theme-configurator' );?></p><p class="howto"><?php _e( 'Values entered here are merged into existing child styles or added to the child stylesheet if they do not exist in the parent.', 'child-theme-configurator' ); ?></p>
</div>
<div class="ctc-input-cell-wide">
<textarea id="ctc_new_selectors" name="ctc_new_selectors" wrap="off"></textarea>
</div>
</div>
</form>
</div>

View File

@ -0,0 +1,16 @@
<span style="float:right;margin-left:2em;margin-top:-6px;text-shadow:1px 2px 0 #fff"><strong>
<?php _e( 'New user?', 'child-theme-configurator' ); ?>
<span style="color:#F1823B">
<?php _e( 'Click help', 'child-theme-configurator' ); ?>
</span></strong> <i class="dashicons dashicons-arrow-right-alt" style="color:#F1823B"></i></span>
<div style="float:right;font-size:12px;max-width:320px;line-height:1.2;padding:.5em;background:lightyellow;margin-top:-4px">
<strong><?php _e( 'Help us help you!', 'child-theme-configurator' ); ?></strong>
<?php printf( __( 'If you find this plugin useful, please support development by %supgrading%s or %sdonating.%s', 'child-theme-configurator' ),
'<a href="https://www.lilaeamedia.com/product/child-theme-configurator-pro/" target="_blank" rel="noreferrer noopener">', '</a>', '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8QE5YJ8WE96AJ" target="_blank" rel="noreferrer noopener">', '</a>' ); ?>
<!-- a href="<?php echo LILAEAMEDIA_URL; ?>/product/hook-highlighter/" target="_blank"
title="<?php _e( 'Hook Highlighter - See It In Action', 'child-theme-configurator' ); ?>"
style="float:right"><img src="<?php echo CHLD_THM_CFG_URL; ?>css/hook-highlighter-button.jpg"
height="54" width="240" style="margin-top:-10px"
alt="<?php _e( 'Hook Highlighter - See Below The Surface', 'child-theme-configurator' ); ?>" />
</a -->
</div>

View File

@ -0,0 +1,38 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Property/Value Panel
$ctcpage = apply_filters( 'chld_thm_cfg_admin_page', CHLD_THM_CFG_MENU );
?>
<div id="rule_value_options_panel"
class="ctc-option-panel<?php $this->maybe_disable(); echo 'rule_value_options' == $active_tab ? ' ctc-option-panel-active' : ''; ?>">
<p class="howto"><?php _e( 'To find and edit selectors containing specific values for a given property, first choose the property (e.g., "color"), then click "Selectors" for any resulting value. A dialog panel will open with the corresponding selectors, grouped by media query.', 'child-theme-configurator' ); ?></p>
<form id="ctc_rule_value_form" method="post" action="?page=<?php echo $ctcpage; ?>">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-row clearfix" id="ctc_input_row_rule_menu">
<div class="ctc-input-cell"> <strong>
<?php _e( 'Property', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell" id="ctc_rule_menu_selected">&nbsp;</div>
<div id="ctc_status_rule_val"></div>
<div class="ctc-input-cell">
<div class="ui-widget">
<input id="ctc_rule_menu"/>
<div id="ctc_status_rules" style="float:right"></div>
</div>
</div>
</div>
<div class="ctc-input-row clearfix" id="ctc_input_row_rule_header" style="display:none">
<div class="ctc-input-cell"> <strong>
<?php _e( 'Value', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Sample', 'child-theme-configurator' ); ?>
</strong> </div>
<div class="ctc-input-cell"> <strong>
<?php _e( 'Selectors', 'child-theme-configurator' ); ?>
</strong> </div>
</div>
<div class="ctc-rule-value-input-container clearfix" id="ctc_rule_value_inputs" style="display:none"> </div>
</form>
</div>

View File

@ -0,0 +1,97 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
if ( isset( $_GET[ 'error' ] ) || count( $this->ctc()->errors ) ):
include_once( CHLD_THM_CFG_DIR . '/includes/forms/errorstrings.php' );
$errors = $this->ctc()->errors;
if ( isset( $_GET[ 'error' ] ) )
$errors = array_merge( $errors,
explode( ',', sanitize_text_field( $_GET[ 'error' ] ) )
);
?>
<div class="error notice is-dismissible dashicons-before">
<h4>
<?php _e( 'CTC encountered an error:', 'child-theme-configurator' ); ?>
</h4>
<ul>
<?php
$writable_error = 0;
foreach ( $errors as $error ):
$errs = explode( ':', $error );
$errkey = array_shift( $errs );
if ( in_array( $errkey, $writable_errors ) )
$writable_error = 1;
if ( $errkey && isset( $errorstrings[ $errkey ] ) ):
$err = $errorstrings[ $errkey ];
// accommodate zero, one or two arguments
printf( '<li>' . $err . '</li>' . LF, array_shift( $errs ), array_shift( $errs ) );
endif;
endforeach;
?>
</ul>
</div>
<?php
if ( $writable_error ):
$this->render_notices( 'writable' );
endif;
elseif ( $msg = $this->ctc()->msg ):
$child_theme = wp_get_theme( $this->ctc()->get( 'child' ) );
?>
<div class="updated notice is-dismissible">
<?php
switch ( $msg ):
case '4':
?>
<p>
<?php printf( __( 'Child Theme <strong>%s</strong> has been reset. Please configure it using the settings below.', 'child-theme-configurator' ), $child_theme->Name ); ?> </p>
<?php
break;
case '7':
?>
<p>
<?php _e( 'Update Key saved successfully.', 'child-theme-configurator' ); ?>
</p>
<?php
break;
case '8':
?>
<p>
<?php _e( 'Child Theme files modified successfully.', 'child-theme-configurator' ); ?>
</p>
<?php
break;
default: ?>
<p class="ctc-success-response">
<?php echo apply_filters( 'chld_thm_cfg_update_msg', sprintf( __( 'Child Theme <strong>%s</strong> has been generated successfully.', 'child-theme-configurator' ), $child_theme->Name ), $this->ctc() ); ?>
<?php
if ( $this->ctc()->is_theme() ): ?>
<strong>
<?php _e( 'IMPORTANT:', 'child-theme-configurator' ); ?>
<?php
if ( is_multisite() && !$child_theme->is_allowed() ):
printf( __( 'You must %sNetwork enable%s your child theme.', 'child-theme-configurator' ),
sprintf( '<a href="%s" title="%s" class="ctc-live-preview">',
network_admin_url( '/themes.php' ),
__( 'Go to Themes', 'child-theme-configurator' ) ),
'</a>'
);
else :
printf( __( '%sPreview your child theme%s before activating.', 'child-theme-configurator' ),
sprintf( '<a href="%s" title="%s" class="ctc-live-preview">',
admin_url( '/customize.php?theme=' . $this->ctc()->css->get_prop( 'child' ) ),
__( 'Live Preview', 'child-theme-configurator' ) ),
'</a>'
);
endif;
?>
</strong>
</p>
<?php
endif;
endswitch;
?>
</div>
<?php
endif;

View File

@ -0,0 +1,41 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Tabs Bar
$active_tab = isset( $_GET[ 'tab' ] ) ? $_GET[ 'tab' ] : 'parent_child_options';
?>
<h2 class="nav-tab-wrapper clearfix">
<a id="parent_child_options" href=""
class="nav-tab<?php echo 'parent_child_options' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Parent/ Child', 'child-theme-configurator' ); ?>
</a><a id="query_selector_options" href=""
class="nav-tab <?php $this->maybe_disable(); echo 'query_selector_options' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Query/ Selector', 'child-theme-configurator' ); ?>
</a><a id="rule_value_options" href=""
class="nav-tab <?php $this->maybe_disable(); echo 'rule_value_options' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Property/ Value', 'child-theme-configurator' ); ?>
</a><?php
if ( $this->ctc()->is_theme() ):
?><a id="import_options" href=""
class="nav-tab <?php $this->maybe_disable(); echo 'import_options' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Web Fonts & CSS', 'child-theme-configurator' ); ?>
</a><?php
endif; ?><a id="view_parnt_options" href=""
class="nav-tab <?php $this->maybe_disable(); echo 'view_parnt_options' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Baseline Styles', 'child-theme-configurator' ); ?>
</a><a id="view_child_options" href=""
class="nav-tab <?php $this->maybe_disable(); echo 'view_child_options' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Child Styles', 'child-theme-configurator' ); ?>
</a><?php
if ( $this->ctc()->is_theme() ):
?><a id="file_options" href="" class="nav-tab <?php $this->maybe_disable(); echo 'file_options' == $active_tab ? ' nav-tab-active' : ''; ?>">
<?php _e( 'Files', 'child-theme-configurator' ); ?>
</a><?php
endif;
if ( $this->enqueue_is_set() || $this->supports_disable() ):
do_action( 'chld_thm_cfg_tabs', $active_tab );
endif;
?>
<i id="ctc_status_preview"></i>
</h2>

View File

@ -0,0 +1,19 @@
<?php
// Exit if accessed directly
if ( !defined( 'ABSPATH' ) ) exit;
?>
<select class="ctc-select" id="ctc_theme_<?php echo $template; ?>" name="ctc_theme_<?php echo $template; ?>"
style="visibility:hidden" <?php echo $this->ctc()->is_theme() ? '' : ' disabled '; ?> autocomplete="off" >
<?php
uasort( $this->ctc()->themes[ $template ], array( $this, 'cmp_theme' ) );
foreach ( $this->ctc()->themes[ $template ] as $slug => $theme )
echo '<option value="' . $slug . '"' . ( $slug == $selected ? ' selected' : '' ) . '>'
. esc_attr( $theme[ 'Name' ] ) . '</option>' . LF;
?>
</select>
<div style="display:none">
<?php
foreach ( $this->ctc()->themes[ $template ] as $slug => $theme )
include ( CHLD_THM_CFG_DIR . '/includes/forms/themepreview.php' ); ?>
</div>

View File

@ -0,0 +1,23 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Theme Preview
// Renders localized version of theme preview that is merged into
// jQuery selectmenu object for parent and child theme options
?>
<div id="ctc_theme_option_<?php echo $this->ctc()->sanitize_slug( $slug ); ?>" class="clearfix ctc-theme-option">
<div class="ctc-theme-option-left"><img src="<?php echo $theme[ 'screenshot' ]; ?>" class="ctc-theme-option-image"/></div>
<div class="ctc-theme-option-right">
<h3 class="theme-name"><?php echo $theme[ 'Name' ]; ?></h3>
<?php _e( 'Version: ', 'child-theme-configurator' ); echo esc_attr( $theme[ 'Version' ] );?>
<br/>
<?php _e( 'By: ', 'child-theme-configurator' ); echo esc_attr( $theme[ 'Author' ] );?>
<br/><?php if ( !is_multisite() || $theme[ 'allowed' ] ): ?>
<a href="<?php echo admin_url( '/customize.php?theme=' . $slug );?>" title="<?php _e( 'Preview', 'child-theme-configurator' );
if ( is_multisite() ) _e(' in default Site', 'child-theme-configurator'); ?>" class="ctc-live-preview" target="_blank">
<?php _e( 'Live Preview', 'child-theme-configurator' ); ?>
</a><?php else: ?>
<a href="<?php echo network_admin_url( '/themes.php?theme=' . $slug );?>" title="<?php _e( 'Go to Themes', 'child-theme-configurator' ); ?>" class="ctc-live-preview">
<?php _e( 'Not Network Enabled', 'child-theme-configurator' );?>
</a><?php endif; ?></div>
</div>

View File

@ -0,0 +1,37 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// @imports Panel
$ctcpage = apply_filters( 'chld_thm_cfg_admin_page', CHLD_THM_CFG_MENU );
?>
<div id="import_options_panel"
class="ctc-option-panel<?php $this->maybe_disable(); echo 'import_options' == $active_tab ? ' ctc-option-panel-active' : ''; ?>">
<form id="ctc_import_form" method="post" action=""><!-- ?page=<?php echo $ctcpage; ?>" -->
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<div class="ctc-input-row clearfix" id="ctc_child_imports_row">
<div class="ctc-input-cell">
<div class="ctc-textarea-button-cell" id="ctc_save_imports_cell">
<input type="button" class="button ctc-save-input" id="ctc_save_imports"
name="ctc_save_imports" value="<?php _e( 'Save', 'child-theme-configurator' ); ?>" disabled />
</div>
<strong>
<?php _e( 'Additional Linked Stylesheets', 'child-theme-configurator' ); ?>
</strong>
<p><?php _e( 'Use <code>@import url( [path] );</code> to link additional stylesheets. Child Theme Configurator uses the <code>@import</code> keyword to identify them and convert them to <code>&lt;link&gt;</code> tags. <strong>Example:</strong>', 'child-theme-configurator' );?></p>
<p><code>@import url(http://fonts.googleapis.com/css?family=Oswald);</code></p>
<strong>
<?php _e( 'Local Font Files', 'child-theme-configurator' ); ?>
</strong>
<p><?php _e( 'Use a relative path to link to webfont kit stylesheets you have uploaded to your Child Theme. <strong>Example:</strong>', 'child-theme-configurator');?></p>
<p><code>@import url(my_web_fonts/stylesheet.css);</code></p>
</div>
<div class="ctc-input-cell-wide">
<textarea id="ctc_child_imports" name="ctc_child_imports" wrap="off"><?php
foreach ( $this->css()->get_prop( 'imports' ) as $import ):
echo esc_textarea( $import . ';' . LF );
endforeach;
?></textarea>
</div>
</div>
</form>
</div>

View File

@ -0,0 +1,9 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
?>
<form id="ctc_export_theme_form" method="post" action="?page=<?php echo CHLD_THM_CFG_MENU; ?>">
<?php wp_nonce_field( apply_filters( 'chld_thm_cfg_action', 'ctc_update' ) ); ?>
<input class="ctc_submit button button-primary" name="ctc_export_child_zip" type="submit" value="<?php _e( 'Export Child Theme', 'child-theme-configurator' ); ?>" />
<input type="hidden" id="ctc_export_theme" name="ctc_export_theme" value="" />
</form>

View File

@ -0,0 +1,221 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Help Content
?>
<!-- BEGIN tab -->
<h3 id="ctc_tutorial">Hier starten: Anleitungs-Videos</h3>
<!-- p><iframe width="560" height="315" src="https://www.youtube.com/embed/xL0YmieF6d0?rel=0&modestbranding=1" frameborder="0" allowfullscreen></iframe></p>
<p><iframe width="560" height="315" src="https://www.youtube.com/embed/vhQ5oi20rYE?rel=0&modestbranding=1" frameborder="0" allowfullscreen></iframe></p -->
<p>Wir betten aus Leistungsgründen keine Anleitungsvideos mehr ein. <a href="http://www.childthemeconfigurator.com/tutorial-videos" target="_blank">Hier klicken, um die Videos anzuschauen.</a></p><!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_getting_started">Eltern/Kind-Tab</h3>
<ol><li><strong>Eine Aktion auswählen:</strong>
<ul><li><strong>Neues Kind-Thema ERZEUGEN</strong> - Installiere ein neues anpassbares Kind-Thema mit einem installierten Thema als Eltern.</li>
<li><strong>Bestehendes Kind-Thema ANPASSEN</strong> - Aufsetzen eines vorher installierten Kindthemas für den Konfigurator oder zum Ändern der aktuellen Einstellungen.</li>
<li><strong>Bestehendes Kind-Thema DUPLIZIEREN</strong> - Eine vollständige Kopie eines Kindthemas in ein neues Verzeichnis erstellen, inkl. Menüs, Widgets und anderer Einstellungen. Die Option zum Kopieren der Eltern-Einstellungen (Schritt 8 unten) ist mit dieser Aktion deaktiviert.</li>
<li><strong>Bestehendes Kind-Thema ZURÜCKSETZEN</strong> (dies wird all Ihre Arbeit im Konfigurator überschreiben) - Kind-Thema-Formatvorlage und Funktionsdateien auf ihren ursprünglichen Zustand setzen (vor der Initial-Konfiguration oder dem letzten Zurücksetzen).</li></ul></li>
<li><strong>Eltern-Thema auswählen</strong> falls Sie ein neues Kind-Thema erstellen; ein Kind-Thema auswählen, falls Sie anpassen, duplizieren, oder zurücksetzen möchten.</li>
<li><strong>Analysiere Kind-Thema</strong> - "Analysieren" klicken, um Formatvorlage-Abhängigkeiten und andere mögliche Probleme zu erkennen.</li>
<li><strong>Neues Verzeichnis benennen</strong> beim Erstellen eines neuen Kindthemas; ansonsten prüft es, ob das Verzeichnis korrekt ist. - Dies ist NICHT der Name des Kindthemas. Sie können den Namen, die Beschreibung etc. in Schritt 7 unten anpassen.</li>
<li><strong>Speicherort der neuen Stile auswählen:</strong><ul>
<li><strong>Primäre Formatvorlage (style.css)</strong> - Sichere neue angepasste Stile direkt in die primäre Formatvorlage des Kindthemas (ersetze vorhandene Werte). Die primäre Formatvorlage wird in der vom Thema definierten Reihenfolge geladen.</li>
<li><strong>Separate Formatvorlage</strong> - Sichere neue angepasste Stile in separate Formatvorlage und verwende bestehende Kindthemen-Stile als Basis. Diese Option wählen, wenn Sie die Original-Kindthemen-Stile behalten wollen (statt zu überschreiben). Diese Option erlaubt es Ihnen, nach der primären Formatvorlage geladene Formatvorlagen anzupassen.</li></ul></li>
<li><strong>Elternthema-Formatvorlage Behandlung auswählen:</strong><ul>
<li><strong>Benutze die WordPress Stil-Warteschlange.</strong> - Den Konfigurator die richtigen Aktionen und Abhängigkeiten auswählen lassen und Funktionendateien automatisch aktualisieren.</li>
<li><strong>Benutze @import</strong> in der Kind-Thema-Formatvorlage. - Diese Option nur benutzen, wenn die Eltern-Formatvorlage nicht mit der WordPress-Warteschlange geladen werden kann. Die Benutzung von <code>@import</code> ist nicht länger empfohlen.</li>
<li><strong>Keine zusätzliche Eltern-Formatvorlage-Behandlung hinzufügen.</strong> - Diese Option auswählen, wenn dieses Thema die Elternthema-Formatvorlage schon behandelt oder die Eltern-Thema <code>style.css</code>-Datei für die Darstellung/Anzeige nicht benutzt wird.</li></ul></li>
<li><strong>Kind-Thema-Name, Beschreibung, Autor, Version etc. anpassen</strong></li>
<li><strong>Kopieren der Elternthema-Menüs, Widgets und anderer Einstellungen in das Kind-Thema.</strong> - HINWEIS: Dies überschreibt alle im Kind-Thema vorgenommenen Änderungen und Einstellungen.</li>
<li><strong>Klicken Sie auf die Schaltfläche</strong> um den Konfigurator zu starten.</li>
<li><strong>WICHTIG: <a target="_blank" href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/how-to-use/#preview_activate" title="Testen Sie Ihr Kind-Thema vor der Aktivierung!">Testen Sie Ihr Kind-Thema immer mit der Live-Vorschau (Themen-Konfigurator) vor der Aktivierung!</a></strong></li>
</ol>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_query_selector">Abfrage/Selektor-Tab</h3>
<p>Es gibt zwei Wege, Eltern-Stile (Basiswerte) zu identifizieren und zu übersteuern. Der Child Theme Configurator lässt Sie Stile suchen nach <strong>Selektor</strong> oder nach <strong>Eigenschaft</strong>. Wenn Sie einen bestimmten Selektor ändern wollen (z.Bsp. h1), benutzen Sie den "Abfrage/Selektor"-Tab. Wenn Sie einen Wert Webseiten-weit ändern wollen (z.Bsp. die Farbe des Typs), benutzen Sie den "Eigenschaften/Wert"-Tab.</p>
<p>Der Abfrage/Selektor-Tab lässt Sie bestimmte Selektoren finden und bearbeiten. Zuerst finden Sie die Abfrage, die den gesuchten Selektor enthält, indem Sie in die <strong>Abfrage</strong> Autoauswahl-Box schreiben. Wählen Sie durch Mausklick oder "Eingabe"- bzw. "Tabulator"-Tasten. Selektoren sind in der <strong>Basis</strong> Abfrage standardmäßig.</p>
<p>Dann finden Sie den mit der Eingabe in der <strong>Selektor</strong> Autoauswahl-Box. Wählen Sie aus mit Mausklick oder der "Eingabe"- bzw. den "Tabulator"-Tasten.</p>
<p>Dies lädt alle Eigenschaften für diesen Selektor mit den Eltern-Werten auf der linken und den Kind-Werten auf der rechten Seite. Alle bestehenden Kind-Werte werden automatisch abgefüllt. Es gibt auch eine Musteransicht, welches die Kombination der Eltern- und Kindwerte Übersteuerungen anzeigt. Beachten Sie, dass der <strong>Rahmen</strong> und <strong>Hintergrundbild</strong> speziell behandelt werden.</p>
<p>Wenn Sie zusätzliche Eigenschaften zu einem bestehenden Selektor hinzufügen wollen, laden Sie zuerst den Selektor mit dem Abfrage/Selektor-Tab. Dann finden Sie die zu übersteuernde Eigenschaft mit der Eingabe in die <strong>Neue Eigenschaft</strong>-Auswahlbox. Wählen Sie mit einem Mausklick oder der Eingabe der ENTER- oder TAB-Taste. Dies wird der Auswahl eine neue Eingabezeile hinzufügen.</p>
<p>Das "Reihenfolge"-Feld enthält die Original-Reihenfolge des Selektors der Eltern-Formatvorlage. Sie können die Selektor-Reihenfolge ändern, indem Sie eine tiefere/höhere Zahl im Reihenfolge-Feld eingeben. Sie können auch Stil-Übersteuerungen forcieren (sogenannter !important-Schalter), indem Sie das "!" Kästchen neben der Eingabe anwählen. Benutzen Sie es nicht zu oft.</p>
<p>Klicken Sie auf "Sichern" um die Kind-Formatvorlage zu aktualisieren und die Änderungen im Wordpress-Admin zu speichern.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_new_styles">Rohes CSS hinzufügen</h3>
<p>Wenn Sie komplett neue Selektoren oder sogar @media-Queries hinzufügen wollen, können Sie formloses CSS im Textfeld "Rohes CSS" eingeben. Achten Sie auf eine korrekte Syntax (bspw. passende geschweifte Klammern etc.), damit der Parser die neuen Stile laden kann. Sie erkennen Fehler an einem roten "X", welches neben der Sichern-Schaltfläche erscheint.</p>
<p>Wenn Sie die Shorthand-Syntax für Eigenschaften und Werte bevorzugen (anstatt der Vorgaben durch den Kind-Thema-Konfigurator), können Sie diese hier auch eingeben. Der Parser wir diese Eingaben automatisch in normalisierten CSS-Code konvertieren.</p>
<p>Wenn Sie zusätzliche Eigenschaften zu einem bestehenden Selektor hinzufügen möchten, laden Sie zuerst den Selektor mit dem Abfrage/Selektor-Tab. Dann suchen Sie die Eigenschaft zum Übersteuern, indem Sie in die <strong>Neue Eigenschaft</strong>-Box schreiben. Wählen Sie mit einem Mausklick oder der Eingabe der ENTER- oder TAB-Taste. Dies wird der Auswahl eine neue Eingabezeile hinzufügen.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_property_value">Eigenschaften/Wert-Tab</h3>
<p>Es gibt zwei Wege, Eltern-Stile (Basiswerte) zu identifizieren und zu übersteuern. Der Child Theme Configurator lässt Sie Stile suchen nach <strong>Selektor</strong> oder nach <strong>Eigenschaft</strong>. Wenn Sie einen bestimmten Selektor ändern wollen (z.Bsp. h1), benutzen Sie den "Abfrage/Selektor"-Tab. Wenn Sie einen Wert Webseiten-weit ändern wollen (z.Bsp. die Farbe des Typs), benutzen Sie den "Eigenschaften/Wert"-Tab.</p>
<p>Der Eigenschaften/Wert-Tab lässt Sie bestimmte Werte für eine gewisse Eigenschaft finden und ermöglicht dann das Bearbeiten für individuelle Selektoren, welche diese Eigenschaft-/Wert-Kombination benutzen. Zuerst finden Sie die Eigenschaft, die Sie übersteuern möchten, indem Sie diese in der <strong>Eigenschaft</strong> Autoauswahl-Box eingeben. Wählen Sie durch Mausklick oder "Eingabe"- bzw. "Tabulator"-Tasten.</p>
<p>Dies lädt alle einzigartigen Werte dieser Eigenschaft in der Eltern-Formatvorlage mit einer Mustervorschau für diese Werte. Wenn Werte in der Kind-Formatvorlage existieren, die nicht in der Eltern-Formatvorlage enthalten sind, werden diese ebenfalls angezeigt.</p>
<p>Für jeden einzigartigen Wert, klicken Sie auf die "Selektoren"-Verknüpfung, um eine Liste der Selektoren mit dieser Eigenschaften-/Wert-Kombination anzuzeigen, nach Abfrage gruppiert mit einer Muster-Vorschau der Werte und Eingaben für die Kind-Werte. Alle bestehenden Kind-Werte werden automatisch abgefüllt.</p>
<p>Klicken Sie auf "Sichern" um die Kind-Formatvorlage zu aktualisieren und die Änderungen im Wordpress-Admin zu speichern.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_imports">Webschriftarten-Tab</h3>
<p>Sie können zusätzliche Formatvorlagen und Webschriftarten verknüpfen, indem Sie @import Regeln in das Textfeld auf dem Webschriftarten-Tab eingeben.</p>
<p><strong>Hinweis:</strong> Child Theme Configurator schreibt nicht mehr länger @import Regeln in die Formatvorlage. Stattdessen benutzt es das @import Schlüsselwort und stellt sie in die Warteschlange. WordPress wandelt sie dann um in &lt;link&gt; Tags im verarbeiteten HTML.</p>
<p>Wichtig: importieren Sie die Eltern-Formatvorlage nicht hier. Benutzen Sie die "Eltern-Formatvorlage-Behandlung"-Option auf dem Eltern/Kind-Tab.</p>
<p>Wenn Sie eine Formatvorlage unter "Zusätzliche Formatvorlegen einlesen" gewählt haben, als Sie das Kind-Thema erstellt haben, werden diese Stile für Übersteuerungen in der Kind-Formatvorlage zur Verfügung stehen.</p>
<p>WordPress lädt automatisch zusätzliche Formatvorlagen, wenn es das Eltern-Thema lädt, also müssen Sie @import rules dafür hier nicht hinzufügen.</p>
<p>Unten ist ein Beispiel, welche eine lokale angepasste Formatvorlage lädt (Sie müssen das "fonts"-Verzeichnis und die Formatvorlage hinzufügen), sowie die Schriftart "Open Sans" von Google Web Fonts:</p>
<blockquote><pre><code>&#64;import url(fonts/Formatvorlage.css);
&#64;import url(http://fonts.googleapis.com/css?family=Open+Sans:400,400italic,700,700italic);</code></pre></blockquote>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_files">Dateien-Tab</h3>
<h5>Eltern-Vorlagen</h5>
<p>Kopieren von PHP-Vorlagendateien des Eltern-Themes, indem Sie die Kästchen auswählen und "Auswahl zu gewählten Kind-Themen kopieren", und die Vorlage wird zum Kind-Themenverzeichnis hinzugefügt.</p>
<p><strong>ACHTUNG: Wenn Ihr Kind-Thema aktiv ist, wird nach dem Kopiervorgang sofort die Kind-Thema-Version der Datei anstatt der Eltern-Datei benutzt.</strong></p>
<p>Die <code>functions.php</code>-Datei wird getrennt erstellt und kann nicht hierher kopiert werden.</p>
<h5>Kind-Thema-Dateien</h5>
<p>Vorlagen, die vom Eltern-Thema kopiert wurden, sowie alle Formatvorlagen-Sicherungen, sind hier aufgelistet. Vorlagen können mittels des Themen-Editors im Design-Menü bearbeitet werden.</p>
<p>Löschen Sie Kind-Thema-Dateien, indem Sie die Kästchen anwählen und auf "Auswahl löschen" klicken.</p>
<h5>Kind-Thema-Bilder</h5>
<p>Diese Bilder befinden sich unter dem <code>Images</code>-Verzeichnis in Ihrem Kind-Thema-Verzeichnis und sind nur für Formatvorlagen vorgesehen. Benutzen Sie die Medienbibliothek für Inhaltsbilder.</p>
<p>Sie können neue Bilder mittels des "Bild hochladen"-Formulars hochladen. Löschen Sie Bilder durch die Auswahl der Kästchen und dem Klicken auf "Auswahl löschen".</p>
<h5>Kind-Thema Screenshot</h5>
<p>Sie können hier einen speziellen/angepassten Screenshot für das Kind-Thema hochladen.</p>
<p>Der Themen-Screenshot sollte ein 4:3-Verhältnis aufweisen (z.Bsp, 880px x 660px) JPG, PNG oder GIF. Es wird in <code>screenshot</code> umbenannt.</p>
<h5>Kind-Thema als ZIP-Archiv exportieren </h5>
<p>Sie können Ihr Kind-Thema für den Gebrauch auf einer anderen Wordpress-Webseite herunterladen, indem Sie auf "Export" klicken.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_preview">Vorschau und Aktivierung</h3>
<p><strong>WICHTIG: <a target="_blank" href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/how-to-use/#preview_activate" title="Testen Sie Ihr Kind-Thema vor der Aktivierung!">Testen Sie Ihr Kind-Thema vor der Aktivierung!</a></strong> Einige Themen (hauptsächlich kommerzielle Themen) laden Eltern-Formatvorlagen nicht korrekt oder laden Kind-Formatvorlagen automatisch oder PHP-Dateien. <strong>Im schlimmsten Fall wird bei Aktivierung Ihre Webseite unbrauchbar.</strong></p>
<ol>
<li>Navigieren Sie zu Design > Themen im Wordpress-Admin. Sie werden nun die neuen Kind-Themen als eine der installierten Themen sehen.</li>
<li>Klicken Sie auf "Live-Vorschau" unterhalb des Kind-Themas, um es in Aktion zu sehen.</li>
<li>Wenn Sie das Kind-Thema nun live schalten wollen, klicken Sie auf "Aktivieren."</li>
</ol>
<p><strong>MULTISITE NUTZER:</strong> Sie müssen Ihr Thema Netzwerk-aktivieren, um es in der Live-Vorschau zu sehen. Gehen Sie zu 'Themen' in der Netzwerk-Administration.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_permissions">Dateiberechtigungen</h3>
<p>Wordpress wurde für verschiedene Serverkonfigurationen entwickelt. Child Theme Configurator benutzt die WordPress Filesystem API, um Webseiten das Bearbeiten von Dateien zu ermöglichen, die Nutzerberechtigungen benötigen.</p>
<p>Allerdings, weil die meiste Funktionalität mittels AJAX(Hintergrund)-Anfragen passiert, muss die Kind-Formatvorlage auf dem Server beschreibbar sein.</p>
<p>Das Plugin erkennt automatisch Ihre Konfiguration und liefert eine Anzahl von Optionen, um diese Anforderung zu lösen. Benutzen Sie die zur Verfügung gestellten Verknüpfungen, um mehr zu erfahren, beispielsweise:</p>
<ol>
<li>Die Formatvorlage mithilfe des Plugins vorübergehend schreibbar machen.</li>
<li>Hinzufügen von FTP/SSH-Berechtigungen zur Wordpress-Konfigurationsdatei.</li>
<li>Auf einem Server die Schreibberechtigung manuell setzen.</li>
<li>Ihrem Webserver die Schreibberechtigung in gewissen Situationen erlauben.</li>
</ol>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_faq">FAQs</h3>
<<h5 id="broken_theme">HILFE! Ich habe eine Datei geändert und kann nun über nicht mehr über wp-admin einloggen, um es zu reparieren!</h5>
<p>Um aus einem defekten Thema herauszukommen, müssen Sie das problematische Themen-Verzeichnis umbenennen (via FTP, SSH oder Ihrem Webhoster-Kontrollpanel bzw. Dateimanager), so dass Wordpress es nicht mehr finden kann. WordPress wird dann einen Fehler generieren und zum Standard-Thema zurückkehren (aktuell Twenty-Fourteen).</p>
<p>Das Kind-Thema ist normalerweise in Ihrem Themen-Verzeichnis</p>
<code>[path/to/wordpress]/wp-content/themes/[child-theme]</code>
<p>Um dies in der Zukunft zu vermeiden, testen Sie Ihr Kind-Thema immer in der Live-Vorschau, bevor Sie es aktivieren.</p>
<h5 id="no-comments">Wie füge ich Kommentare hinzu?</h5>
<p><strong>Kommentare sind nicht beliebig erlaubt.</strong> Eine hohe Flexibilität bei der Vorschau und zum Ändern von Stilen erfordert ein kompliziertes Parsen (Auslesen) und Datenstrukturen. Kommentare zu unterhalten, die an ein bestimmtes Element in der Formatvorlage gebunden sind, ist sehr aufwändig im Vergleich zum Nutzen. Obwohl wir dies in der Zukunft als Funktion bringen wollen, <em>werden zurzeit noch alle Kommentare aus dem Code der Kind-Formatvorlage entfernt.</em></p>
<h5 id="menus_broken">Wieso werden meine Menüs inkorrekt angezeigt, wenn ich das neue Kind-Thema aktiviere?</h5>...oder...
<h5 id="header_broken">Wieso fehlt mein angepasster Header (custom header), wenn ich das neue Kind-Thema aktiviere?</h5>...oder...
<h5 id="background_broken">Wieso ändert sich mein angepasster Hintergrund zurück zum Standard, wenn ich das Kind-Thema aktiviere?</h5>...oder...
<h5 id="options_broken">Wieso verschwinden meine Themen-Optionen, wenn ich das Kind-Thema aktiviere?</h5>
<p>Diese Optionen sind für jedes Thema spezifisch und werden getrennt in der Datenbank gespeichert. Beim Erstellen eines neuen Kind-Themas sind diese Optionen leer.</p>
<p><strong>Viele dieser Optionen können in das Kind-Thema kopiert werden, indem man das Kästchen "Kopieren Eltern-Theme-Menüs, Widgets und andere Design-Optionen" anklickt, wenn Sie die Kind-Thema-Dateien auf dem Eltern/Kind-Tab erstellen.</strong></p>
<p>Wenn Sie andere Optionen setzen wollen, können Sie diese nach dem Aktivieren des Kind-Themas aktivieren, oder mittels der Live-Vorschau unter Design > Themen.</p>
<ul class="instructions">
<li><strong>Menüs: </strong> Gehen Sie zu Design > Menüs und klicken Sie den "Position"-Tab. Standardmäßig wird das Primärmenü die Verknüpfungen automatisch aus den bestehenden Seiten erstellen. Wählen Sie Ihr angepasstes Menü aus der Auswahlliste und klicken Sie "Neues Menü benutzen". Dies ersetzt das Standardmenü und Sie sehen die korrekten Verknüpfungen.</li>
<li><strong>Header (Kopf): </strong> Gehen Sie zu Design > Header. Einige Themen zeigen standardmäßig den Titel und die Tagline Ihrer "Allgemeinen Einstellungen". Wählen Sie "Bild auswählen" und finden Sie einen "Kopf" aus der Medienbibliothek oder mittels Hochladen. Dies ersetzt den Standard mit dem angepassten Bild.</li>
<li><strong>Hintergrund: </strong> Gehen Sie zu Design > Hintergrund und wählen Sie ein neues Hintergrundbild oder eine Farbe.</li>
<li><strong>Optionen: </strong> Jedes Thema behandelt Optionen speziell/anders. Meistens erstellen Sie einen Satz Optionen und speichern ihn in der Wordpress-Datenbank. Einige Optionen sind spezifisch für das aktive Thema (oder Kind-Thema), und einige nur für das Eltern-Thema bestimmt (d.h. das Kind-Thema kann sie NICHT übersteuern). Sie müssen sich beim Themen-Autor erkundigen, welche auf welche Art funktionieren.</li>
</ul>
</p>
<h5 id="existing_parent">Wie verschiebe ich bereits gemachte Änderungen an meinem Thema in mein Kind-Thema?</h5>
<p><a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/how-to-use/#child_from_modified_parent" class="scroll-to">Folgen Sie diesen Schritten</a>. </p>
<h5 id="web_fonts">Wie füge ich Webschriftarten hinzu?</h5>
<p>Die einfachste Methode ist das Einfügen des @import code, geliefert von <a href="http://www.google.com/fonts" title="Google Fonts">Google</a>, <a href="http://www.fontsquirrel.com/" title="Font Squirrel">Font Squirrel</a> oder jeder anderen Schriftartenseite auf dem Schriftarten-Tab. Die Schriftarten werden dann zum Gebrauch als Wert der <strong>font-family</strong> Eigenschaft zur Verfügung stehen. Stellen Sie sicher, dass Sie die Lizenz zum Gebrauch der Webschriftarten verstehen. </p>
<p>Sie können auch eine sekundäre Formatvorlage erstellen, welche die @font-face Regeln enthält, und diese auf dem Webschriftarten-Tab importieren. </p>
<h5 id="plugin">Funktionert das mit Plugins?</h5>
<p>Wir bieten eine Premium-Erweiterung an, die Sie Stile für jedes auf der Webseite installierte Plugin einfach verändern lässt. Der Child Theme Configurator Plugin Extension scannt Ihre Plugins und erlaubt die Erstellung von angepassten Formatvorlagen in Ihrem Kind-Thema. <a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/child-theme-configurator-pro/" title="Die Kontrolle über Ihre Plugin-Stile mit der Child Theme Configurator Plugin Erweiterung für WordPress übernehmen">Mehr erfahren <i class="genericon genericon-next"></i></a>
<h5 id="doesnt_work">Wieso funktioniert das in meinem (Hersteller des Themas hier einfügen) Thema nicht?</h5>
<p>Einige Themen (hauptsächlich kommerzielle Themen) laden die Eltern-Vorlagen-Dateien nicht korrekt oder laden Kind-Thema-Formatvorlagen oder PHP-Dateien automatisch.</p><p>Das ist unglücklich, weil es im besten Fall den Webmaster daran hindert, Anpassungen vorzunehmen (abgesehen von solchen durch die Themen-Optionen), die einen Upgrade überleben. <strong>Im schlimmsten Fall jedoch wird Ihre Webseite unbrauchbar, wenn Sie das Kind-Thema aktivieren.</strong> </p>
<p>Kontaktieren Sie direkt den Hersteller, um diese Kern-Funktionalität zu verlangen. Unserer Meinung nach sollten ALLE Themen (vor allem kommerzielle) die von Wordpress.org beschriebenen Themen-Tests erfüllen. </p>
<h5 id="missing_parent">Wieso hat das Eltern-Thema keine Stile, wenn ich auf "Eltern-CSS anzeigen" gehe?</h5>
<p>Ihr Eltern-Thema benutzt für die Formatvorlagen womöglich einen getrennten Ort. Wählen Sie individuelle Formatvorlagen aus dem "Zusätzliche Formatvorlagen auslesen"-Abschnitt des Eltern/Kind-Tabs und klicken Sie erneut auf "Neuaufbau Kind-Thema-Dateien". </p>
<h5 id="performance">Wird das meine Webseite verlangsamen?</h5>
Sobald die Kind-Formatvorlage erstellt ist, fügt CTC im Frontend nur ein wenig Zusatzlast hinzu, da die ganze Funktionalität im Admin enthalten ist.
Das Plugin lädt den Hauptteil des Codes im Admin nur, wenn Sie das Tool benutzen. Die größte Performance-Einbuße geschieht, wenn Sie die Kind-Themen-Dateien auf dem Eltern/Kind-Tab erstellen. </p>
<h5 id="where_are_styles">Wo sind die Stile? Der Konfigurator zeigt nichts an!</h5>
<p>Alle Stile werden dynamisch geladen. Sie müssen in den Textfelder etwas eingeben, um die Stile zum Bearbeiten auszuwählen.</p>
<p>"Base" ist die Abfragegruppe, die mit keiner bestimmten at-Regel verbunden sind.</p>
<p>Beginnen Sie mit einem Klick auf den "Abfage/Selektor"-Tab und der Eingabe von "base" in der ersten Box. In der zweiten Box können Sie dann mit der Eingabe beginnen, um die Stil-Selektoren zum Bearbeiten zu holen. </p>
<h5 id="preview-not-loading">Wieso zeigen die Vorschau-Tab "Formatvorlage kann nicht angezeigt werden"?</h5>
<p>Sie müssen ein Kind-Thema auf dem Eltern/Kind-Tab für die Ansicht der Vorschau laden. Das kann auch passieren, wenn Ihre WP_CONTENT_URL sich von $bloginfo('site_url') unterscheidet. Ajax kann keine domänenübergreifenden Abfagen machen. Überprüfen Sie, ob der Einstellungen > Allgemein > "WordPress Adresse (URL)"-Wert korrekt ist. (Oft fehlt das "www"" in der Domäne.) </p>
<h5 id="edit_manually">Kann ich das Kind-Thema manuell offline bearbeiten (oder mithilfe des Editors), oder muss ich unbedingt den Konfigurator benutzen?</h5>
<p>Sie können jede gewünschte Änderung an der Formatvorlage vornehmen. Stellen Sie nur sicher, die geänderte Formatvorlage mittels des Eltern/Kind-Panels zu importieren, ansonsten wird der Konfigurator Ihre Änderungen beim nächsten Gebrauch überschreiben. Folgen Sie den üblichen Schritten, aber wählen Sie die Auswahloption "Bestehendes Kind-Thema benutzen" als Kind-Thema-Option. Der Konfigurator wird die internen Daten aus der neuen Formatvorlage automatisch aktualisieren. </p>
<h5 id="update_child">Wenn das Eltern-Thema geändert wird (z.Bsp. Upgrade), muss ich das Kind-Thema aktualisieren?</h5>
<p>Nein. Das ist der Zweck von Kind-Themen. Änderungen am Eltern-Thema werden vom Kind-Thema automatisch geerbt.</p>
<p>Ein Kind-Thema ist keine Kopie eines Eltern-Themas. Es ist eine besondere Funktion von WordPress, die Sie bestimmte Stile und Funktionen übersteuern lässt, während der Rest intakt bleibt. Das einzige Mal, dass Sie nach einem Upgrade Änderungen machen müssen ist, wenn das Eltern-Thema Stile oder Funktionsnamen ändert oder entfernt. Qualitäts-Themen sollten alle veralteten Funktionen oder Stile in den Upgrade-Hinweisen erwähnen, so dass Nutzer von Kind-Themen die entsprechenden Anpassungen vornehmen können. </p>
<h5 id="functions">Wo sind die .PHP-Dateien?</h5>
<p>Der Konfigurator fügt dem Kind-Themenverzeichnis automatisch eine leere functions.php-Datei hinzu. Sie können Dateien des Eltern-Themas mittels des "Dateien"-Tabs kopieren. Wenn Sie neue Vorlagen und Verzeichnisse erstellen möchten, müssen Sie diese manuell via FTP oder SSH hochladen. Beachten Sie, dass ein Kind-Thema die Eltern-Vorlagen automatisch erbt, es sei denn, sie bestehen bereits im Kind-Thema-Verzeichnis. Kopieren Sie nur Vorlagen, die Sie auch wirklich anpassen möchten.</p>
<h5 id="specific_color">Wie ändere ich eine(n) bestimmte Farbe/Schriftarttyp/Hintergrund?</h5>
<p>Sie können einen bestimmten Wert global mittels des Eigenschaften/Wert-Tabs übersteuern. Siehe Eigenschaften/Werte, oben.</p>
<h5 id="add_styles">Wie füge ich Stile hinzu, die nicht im Eltern-Thema enthalten sind?</h5>
<p>Sie können Abfragen und Selektoren mittels des "Rohes CSS"-Textfelds auf dem Abfrage/Selektor-Tab hinzufügen. Siehe Abfrage/Selektor, oben. </p>
<h5 id="add_styles">Wie entferne ich Stile aus dem Eltern-Thema?</h5>
<p>Sie sollten eigentlich Stile aus dem Eltern-Thema nicht entfernen. Sie können allerdings die Eigenschaft auf "Erben"," "Keine," oder Null setzen (abhängig von der Eigenschaft). Das wird den Eltern-Wert negieren. Ein wenig Probieren wird nötig sein.</p>
<h5 id="remove_styles">Wie entferne ich einen Stil aus einem Kind-Thema?</h5>
<p>Löschen Sie den Wert aus der Eingabe der Eigenschaft, die sie entfernen möchten. Der Child Theme Configurator fügt Übersteuerungen nur für Eigenschaften mit Werten hinzu. </p>
<h5 id="important_flag">Wie setze ich den !important-Schalter?</h5>
<p>Wir empfehlen immer ein gutes, verschachteltes Design, anstatt auf globale Übersteuerungen zu vertrauen. Dazu haben Sie die Möglichkeit, die Lade-Reihenfolge von Kind-Formatvorlagen zu ändern, indem Sie einen Wert im "Reihenfolge"-Feld eingeben. Sie können Eigenschaften als wichtig setzen, indem Sie das Kästchen mit dem "!" neben jeder Eingabe setzen. Benutzen Sie es massvoll. </p>
<h5 id="gradients">Wie erstelle ich browser-unabhängige Farbverläufe?</h5>
<p>Der Child Theme Configurator benutzt eine standarisierte Syntax für Farbverläufe und unterstützt nur zweifarbige Verläufe ohne Zwischenstopps. Die Eingaben bestehen aus dem Startpunkt (z.Bsp. top, left, 135deg, etc.), der Startfarbe und der Endfarbe. Browser-spezifische Syntax wird automatisch erstellt, wenn Sie diese Werte speichern. Siehe Tricks/Fallen, unten, für weitere Informationen. </p>
<h5 id="responsive">Wie mache ich das Thema responsive?</h5>
<p>Die kurze Antwort ist, ein responsives Eltern-Thema zu benutzen. Einige übliche Methoden für responsives Design sind:
<ul class="instructions"><li>Vermeiden von festen Breiten und Höhen. Der Gebrauch von max- and min-height Werten und Prozenten sind Wege, das Design dem Browser des Benutzers anzupassen.</li>
<li>Die Kombination von floats und clears mit inline und relative-Positionen erlaubt den Elementen, sich der umgebenden Behälterbreite fließend anzupassen.</li>
<li>Anzeigen und Verbergen von Inhalt mittels JavaScript.</li></ul>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_glossary">Glossar</h3>
<ul>
<li id="parent_theme"><strong>Eltern-Thema</strong> Das Wordpress-Thema, welches Sie bearbeiten möchten. Wordpress lädt zuerst das Kind-Thema, dann das Eltern-Thema. Wenn ein Stil im Kind-Thema enthalten ist, übersteuert es das Eltern-Thema.</li>
<li id="child_theme"><strong>Kind-Thema</strong> Neues Thema, basierend auf einem Eltern-Thema. Sie können eine beliebige Anzahl von Kind-Themen von einem einzigen Eltern-Thema erstellen.</li>
<li id="class"><strong>Klasse</strong> Ein Begriff, der zum Organisieren von Objekten benutzt wird. Zum Beispiel, ein &lt;div&gt; könnte die "blue-text"-Klasse zugewiesen sein. Die Formatvorlage weist dann Mitgliedern der "blue-text"-Klasse den Wert "color: blue;" zu. Somit würde &lt;div&gt; als blauer Text im Browser dargestellt. Klassen-Selektoren beginnen mit einem Punkt.</li>
<li id="class"><strong>ID</strong> Eine einzigartige Zeichenkette, die ein bestimmtes Element bezeichnet. ID-Selektoren beginnen mit einem Hashtag (#).</li>
<li id="selector"><strong>Abfrage</strong> @media-Query-Anweisungen (siehe At-Regel unten).</li>
<li id="query"><strong>Selektor</strong> Kombination eines oder mehrere Elemente, Klassen, IDs oder andere Begriffe zum Identifizieren von Objektgruppen.</li>
<li id="property"><strong>Eigenschaft</strong> Einer von vielen standardisierten Begriffen, die dem Browser mitteilen, wie Objekte mit einem bestimmten Selektor anzuzeigen sind. Beispiele sind <strong>color</strong>, <strong>background-image</strong> und <strong>font-size</strong>.</li>
<li id="value"><strong>Wert</strong> Daten, die mit einer Eigenschaft korrespondieren.</li>
<li id="at-rule"><strong>At-Regel</strong> Ein CSS-Browser-Befehl, um die Standard-Funktionalität zu erweitern. Der Child Theme Configurator unterstützt zwei At-Regeln:
<ul>
<li id="at_import"><strong>@import</strong> Weist den Browser an, zusätzliche CSS-Informationen aus einer externen Quelle zu laden.</li>
<li id="at_media"><strong>@media (Media Query)</strong> Identifiziert Stilblöcke, die nur benutzt werden, wenn gewisse Browser-Eigenschaften zutreffen. Beispiele sind max-width, screen und print.</li>
</ul>
</li>
<li id="child_theme"><strong>Basis-Stil</strong> Ein Stil einer beliebigen Kind- oder Eltern-Vorlage, der durch die Formatvorlage des Kind-Themas übersteuert werden kann. Meistens stammen diese aus der Formatvorlage des Eltern-Themas.</li>
<li id="override"><strong>Übersteuerung</strong> Wenn ein Selektor in Kind- und Eltern-Thema besteht, bekommt derjenige aus dem Kind-Thema Priorität. Das ist eines der besonderen Merkmale des Kind-Thema-Konfigurators: es hilft dabei, <strong>exakte Übersteuerungen</strong> von Selektoren des Eltern-Themas zu erstellen, und eliminiert viele Stunden des mühsamen Versuchens.</li>
<li id="child_theme"><strong>Themenvorlage</strong> Eine PHP-Datei eines Themas ohne Funktionen und Klassen. Andere PHP-Dateien können nicht ohne Weiteres sicher überschrieben werden.</li>
</ul>
<!-- END tab -->
<!-- BEGIN sidebar -->
<h4>Unsere Plugins werden Sie nicht mit Spendeneinblendungen nerven...</h4>
<span style="font-size:smaller">...aber wir LIEBEN Empfehlungen.</span><br/><a href="http://wordpress.org/support/view/plugin-reviews/child-theme-configurator?rate=5#postform">Geben Sie uns 5 Sterne</a>
<h4>Wir stellen CTC Pro vor</h4>
<a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/child-theme-configurator-pro/" title="Erfahren Sie mehr über CTC Pro"><img src="<?php echo CHLD_THM_CFG_URL . 'css/pro-banner.jpg'; ?>" width="150" height="48" /></a>
<p style="font-size:smaller">Von Wordpress-Entwicklern entworfen, die es jeden Tag benutzen. CTC Pro stellt Plugin-Formatvorlagen und andere Funktionen zur Verfügung, die Ihre Arbeit schneller und einfacher machen. Das ist ein kostenloses Upgrade für Nutzer, die die Plugin-Erweiterung erworben haben. <a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/child-theme-configurator-pro/" title="Child Theme Configurator Pro">Mehr erfahren</a></p>
<h4 id="ctc_help_sidebar">Links/Verknüpfungen</h4>
<ul>
<li><a href="http://www.lilaeamedia.com/about/contact/">Uns kontaktieren</a></li>
<li><a href="http://www.childthemeconfigurator.com/">Plugin-Webseite</a></li>
<li><a href="http://codex.wordpress.org/Child_Themes">WordPress Codex</a></li>
<li><a href="http://wordpress.stackexchange.com/">WordPress Development (StackExchange)</a></li>
</ul>
<!-- END sidebar -->

View File

@ -0,0 +1,230 @@
<?php
if ( !defined( 'ABSPATH' ) ) exit;
// Help Content
?>
<!-- BEGIN tab -->
<h3 id="ctc_tutorial">Start Here: Tutorial Videos</h3>
<h3><a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/tutorial-videos" target="_blank">Click here to view videos. <i class="dashicons dashicons-external" style="text-decoration:none"></i></a></h3>
<hr/>
<a target="_blank" href="<?php echo LILAEAMEDIA_URL; ?>/product/hook-highlighter/" title="<?php _e( 'Learn more about Hook Highlighter', 'child-theme-configurator' ); ?>">
<img src="<?php echo CHLD_THM_CFG_URL . 'css/hook-highlighter-box.png'; ?>" width="430" height="430" style="width:50%;height:auto;max-width:250px;float:left;margin-right:2rem" /></a>
<p><?php _e( '<strong>Now with time and memory benchmarks!</strong>', 'child-theme-configurator' ); ?></p>
<p><?php _e( 'Hook Highlighter provides insight into the internal program flow of WordPress when activated on any front-facing page of a website.', 'child-theme-configurator' ); ?></p>
<p><?php _e( 'Display action and filter hooks, program files and backtrace information inline for the current page.', 'child-theme-configurator' ); ?></p>
<p><a target="_blank" href="<?php echo LILAEAMEDIA_URL; ?>/product/hook-highlighter/" title="<?php _e( 'Learn more about Hook Highlighter', 'child-theme-configurator' ); ?>">
<?php _e( 'Learn more', 'child-theme-configurator'); ?><i class="dashicons dashicons-external" style="text-decoration:none"></i></a></p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_getting_started">Parent/Child Tab</h3>
<ol><li><strong>Select an action:</strong>
<ul><li><strong>CREATE a new Child Theme</strong> - Install a new customizable child theme using an installed theme as a parent.</li>
<li><strong>CONFIGURE an existing Child Theme</strong> - Set up a previously installed child theme for use with the Configurator or to modify current settings.</li>
<li><strong>DUPLICATE an existing Child Theme</strong> - Make a complete copy of an existing Child Theme in a new directory, including any menus, widgets and other Customizer settings. The option to copy the Parent Theme settings (step 8, below) is disabled with this action.</li>
<li><strong>RESET an existing Child Theme</strong> (this will destroy any work you have done in the Configurator) - Revert the Child theme stylesheet and functions files to their state before the initial configuration or last reset.</li></ul></li>
<li><strong>Select a Parent Theme</strong> if creating a new Child Theme; select a Child Theme if configuring, duplicating or resetting.</li>
<li><strong>Analyze Child Theme</strong> - Click "Analyze" to determine stylesheet dependencies and other potential issues.</li>
<li><strong>Name the new theme directory</strong> if creating a new Child Theme; otherwise verify it the directory is correct. - This is NOT the name of the Child Theme. You can customize the name, description, etc. in step 7, below.</li>
<li><strong>Select where to save new styles:</strong><ul>
<li><strong>Primary Stylesheet (style.css)</strong> - Save new custom styles directly to the Child Theme primary stylesheet, replacing the existing values. The primary stylesheet will load in the order set by the theme.</li>
<li><strong>Separate Stylesheet</strong> - Save new custom styles to a separate stylesheet and use any existing child theme styles as a baseline. Select this option if you want to preserve the original child theme styles instead of overwriting them. This option also allows you to customize stylesheets that load after the primary stylesheet.</li></ul></li>
<li><strong>Select Parent Theme stylesheet handling:</strong><ul>
<li><strong>Use the WordPress style queue.</strong> - Let the Configurator determine the appropriate actions and dependencies and update the functions file automatically.</li>
<li><strong>Use @import</strong> in the child theme stylesheet. - Only use this option if the parent stylesheet cannot be loaded using the WordPress style queue. Using @import is not recommended.</li>
<li><strong>Do not add any parent stylesheet handling.</strong> - Select this option if this theme already handles the parent theme stylesheet or if the parent theme's style.css file is not used for its appearance.</li></ul></li>
<li><strong>Customize the Child Theme Name, Description, Author, Version, etc.</strong></li>
<li><strong>Copy Parent Theme Menus, Widgets and other Customizer Settings to Child Theme.</strong> - NOTE: This will overwrite any child theme options you may have already set.</li>
<li><strong>Click the button</strong> to run the Configurator.</li>
<li><strong>IMPORTANT: <a target="_blank" href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/how-to-use/#preview_activate" title="Preview your child theme before activating!">Always test your child theme with Live Preview (theme customizer) before activating!</a></strong></li>
</ol>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_query_selector">Query/Selector Tab</h3>
<p>There are two ways to identify and override baseline (parent) styles. The Child Theme Configurator lets you search styles by <strong>selector</strong> and by <strong>property</strong>. If you wish to change a specific selector (e.g., h1), use the "Query/Selector" tab. If you have a specific value you wish to change site-wide (e.g., the color of the type), use the "Property/Value" tab.</p>
<p>The Query/Selector tab lets you find specific selectors and edit them. First, find the query that contains the selector you wish to edit by typing in the <strong>Query</strong> autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys. Selectors are in the <strong>base</strong> query by default.</p>
<p>Next, find the selector by typing in the <strong>Selector</strong> autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys.</p>
<p>This will load all of the properties for that selector with the Original values on the left and the New values inputs on the right. Any existing new values will be automatically populated. There is also a Sample preview that displays the combination of Parent and Child overrides. Note that the <strong>border</strong> and <strong>background-image</strong> get special treatment.</p>
<p>If you wish to add additional properties to an existing selector, first load the selector using the Query/Selector tab. Then find the property you wish to override by typing in the <strong>New Property</strong> autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys. This will add a new input row to the selector inputs.</p>
<p>The "Order" field contains the original sequence of the selector in the parent theme stylesheet. You can change the selector order sequence by entering a lower or higher number in the "Order" field. You can also force style overrides (so called "!important" flag) by checking the "!" box next to each input. Please use judiciously.</p>
<p>Click "Save" to update the child stylesheet and save your changes to the WordPress admin.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_new_styles">Adding Raw CSS</h3>
<p>If you wish to add completely new selectors, or even new @media queries, you can enter free-form CSS in the "Raw CSS" textarea. Be aware that your syntax must be correct (i.e., balanced curly braces, etc.) for the parser to load the new styles. You will know it is invalid because a red "X" will appear next to the save button.</p>
<p>If you prefer to use shorthand syntax for properties and values instead of the inputs provided by the Child Theme Configurator, you can enter them here as well. The parser will convert your input into normalized CSS code automatically.</p>
<p>If you wish to add additional properties to an existing selector, first load the selector using the Query/Selector tab. Then find the property you wish to override by typing in the <strong>New Property</strong> autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys. This will add a new input row to the selector inputs.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_property_value">Property/Value Tab</h3>
<p>There are two ways to identify and override baseline (parent) styles. The Child Theme Configurator lets you search styles by <strong>selector</strong> and by <strong>property</strong>. If you wish to change a specific selector (e.g., h1), use the "Query/Selector" tab. If you have a specific value you wish to change site-wide (e.g., the color of the type), use the "Property/Value" tab.</p>
<p>The Property/Value tab lets you find specific values for a given property and then edit that value for individual selectors that use that property/value combination. First, find the property you wish to override by typing in the <strong>Property</strong> autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys.</p>
<p>This will load all of the unique values that exist for that property in the parent stylesheet with a Sample preview for that value. If there are values that exist in the child stylesheet that do not exist in the parent stylesheet, they will be displayed as well.</p>
<p>For each unique value, click the "Selectors" link to view a list of selectors that use that property/value combination, grouped by query with a Sample preview of the value and inputs for the new value. Any existing new values will be automatically populated.</p>
<p>Click "Save" to update the child stylesheet and save your changes to the WordPress admin.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_imports">Web Fonts Tab</h3>
<p>You can link additional stylesheets and web fonts by typing @import rules into the textarea on the Web Fonts tab.</p>
<p><strong>Note:</strong> Child Theme Configurator no longer writes @import rules to the stylesheet. Instead, it uses the @import keyword to identify and enqueue them in the script queue. WordPress then converts them to &lt;link&gt; tags in the rendered HTML.</p>
<p>Important: do not import the parent theme stylesheet here. Use the "Parent stylesheet handling" option from the Parent/Child tab.</p>
<p>If you selected any stylesheets under “Parse additional stylesheets” when you created your child theme, those styles will be available to create overrides in the Child Theme stylesheet.</p>
<p>WordPress will automatically load the additional stylesheets when it loads the parent theme, so you do not need to add @import rules for them here.</p>
<p>Below is an example that loads a local custom stylesheet (you would have to add the "fonts" directory and stylesheet) as well as the web font "Open Sans" from Google Web Fonts:</p>
<blockquote><pre><code>&#64;import url(fonts/stylesheet.css);
&#64;import url(http://fonts.googleapis.com/css?family=Open+Sans:400,400italic,700,700italic);</code></pre></blockquote>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_files">Files Tab</h3>
<h5>Parent Templates</h5>
<p>Copy PHP template files from the parent theme by checking the boxes and clicking "Copy Selected to Child Theme" and the templates will be added to the child theme directory.</p>
<p><strong>CAUTION: If your child theme is active, the child theme version of the file will be used instead of the parent immediately after it is copied.</strong></p>
<p>The <code>functions.php</code> file is generated separately and cannot be copied here.</p>
<h5>Child Theme Files</h5>
<p>Templates copied from the parent and any stylesheet backups are listed here. Templates can be edited using the Theme Editor in the Appearance Menu.</p>
<p>Remove child theme files by checking the boxes and clicking "Delete Selected".</p>
<h5>Child Theme Images</h5>
<p>Theme images reside under the <code>images</code> directory in your child theme and are meant for stylesheet use only. Use the media gallery for content images.</p>
<p>You can upload new images using the image upload form. Remove child theme images by checking the boxes and clicking "Delete Selected".</p>
<h5>Child Theme Screenshot</h5>
<p>You can upload a custom screenshot for the child theme here.</p>
<p>The theme screenshot should be a 4:3 ratio (eg., 880px x 660px) JPG, PNG or GIF. It will be renamed <code>screenshot</code>.</p>
<h5>Export Child Theme as Zip Archive </h5>
<p>You can download your child theme for use on another WordPress site by clicking "Export".</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_preview">Preview and Activate</h3>
<p><strong>IMPORTANT: <a target="_blank" href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/how-to-use/#preview_activate" title="Preview your child theme before activating!">Preview your child theme before activating!</a></strong> Some themes (particularly commercial themes) do not correctly load parent template files or automatically load child theme stylesheets or php files. <strong>In the worst cases they will break your website when you activate the child theme.</strong></p>
<ol>
<li>Navigate to Appearance > Themes in the WordPress Admin. You will now see the new Child Theme as one of the installed Themes.</li>
<li>Click "Live Preview" below the new Child Theme to see it in action.</li>
<li>When you are ready to take the Child Theme live, click "Activate."</li>
</ol>
<p><strong>MULTISITE USERS:</strong> You must Network Enable your child theme before you can use Live Preview. Go to 'Themes' in the Network Admin.</p>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_permissions">File Permissions</h3>
<p>WordPress was designed to work on a number of server configurations. Child Theme Configurator uses the WordPress Filesystem API to allow changes to sites that require user permission to edit files.</p>
<p>However, because most of the functionality occurs via AJAX (background) requests, the child theme stylesheet must be writable by the web server.</p>
<p>The plugin will automatically detect your configuration and provide a number of options to resolve this requirement. Use the links provided to find out more about the options available, including:</p>
<ol>
<li>Temporarily making the stylesheet writable through the plugin.</li>
<li>Adding your FTP/SSH credentials to the WordPress config file.</li>
<li>Setting the stylesheet write permissions on the server manually</li>
<li>Configuring your web server to allow write access in certain situations.</li>
</ol>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_faq">FAQs</h3>
<h5 id="existing_parent">How do I move changes I have already made to my theme into a Child Theme?</h5>
<p><a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/how-to-use/#child_from_modified_parent" class="scroll-to">Follow these steps</a>.</p>
<h5 id="constants_defined">When I run the analyzer I get "Constants Already Defined" notice in PHP Debug Output</h5>
<p>This is a misconfiguration created by the Bluehost auto-installer. <a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/child-theme-faqs/#constants" class="scroll-to">How to fix.</a></p>
<h5 id="broken_theme">HELP! I changed a file and now I am unable to access my website or login to wp-admin to fix it!</h5>
<p>To back out of a broken theme you have to manually rename the offending theme directory name (via FTP, SSH or your web host control panel file manager) so that WordPress can't find it. WordPress will then throw an error and revert back to the default theme (currently twenty-fourteen).</p>
<p>The child theme is in your themes folder, usually</p>
<code>[path/to/wordpress]/wp-content/themes/[child-theme]</code>
<p>To prevent this in the future, always test your child themes with Live Preview before activating them.</p>
<h5 id="no-comments">How do I add comments?</h5>
<p><strong>Arbitrary comments are not supported.</strong> Providing a high level of flexibility for previewing and modifying styles requires sophisticated parsing and data structures. Maintaining comments that bound to any particular element in the stylesheet is prohibitively expensive compared to the value it would add. Although we are working to include this as an option in the future, <em>currently all comments are stripped from the child theme stylesheet code.</em></p>
<h5 id="menus_broken">Why are my menus displaying incorrectly when I activate the new child theme?</h5>...or...
<h5 id="header_broken">Why is my custom header missing when I activate the new child theme?</h5>...or...
<h5 id="background_broken">Why does my custom background go back to the default when I activate the new child theme?</h5>...or...
<h5 id="options_broken">Why do my theme options disappear when I activate the new child theme?</h5>
<p>These options are specific to each theme and are saved separately in the database. When you create a new child theme, its options are blank.</p>
<p><strong>Many of these options can be copied over to the child theme by checking "Copy Parent Theme Menus, Widgets and other Options" when you generate the child theme files on the Parent/Child tab.</strong></p>
<p>If you want to set different options you can either apply them after you activate the child theme, or by using the "Live Preview" under Appearance > Themes.</p>
<ul class="instructions">
<li><strong>Menus: </strong> Go to Appearance > Menus and click the "Locations" tab. By default, the primary menu will generate the links automatically from the existing pages. Select your customized Menu from the dropdown and click "Use New Menu." This will replace the default menu and you will see the correct links.</li>
<li><strong>Header: </strong> Go to Appearance > Header. Some themes will show the "Title" and "Tagline" from your "General Settings" by default. Click "Choose Image" and find the header from the Media Library or upload a new image. This will replace default with your custom image.</li>
<li><strong>Background: </strong> Go to Appearance > Background and choose a new background color or image.</li>
<li><strong>Options: </strong> Every theme handles options in its own way. Most often, they will create a set of options and store them in the WordPress database. Some options are specific to the active theme (or child theme), and some are specific to the parent theme only (meaning the child theme CANNOT override them). You will have to find out from the theme author which are which.</li>
</ul>
</p>
<h5 id="web_fonts">How do I add Web Fonts?</h5>
<p>The easiest method is to paste the @import code provided by <a href="http://www.google.com/fonts" title="Google Fonts">Google</a>, <a href="http://www.fontsquirrel.com/" title="Font Squirrel">Font Squirrel</a> or any other Web Font site into the Web Fonts tab. The fonts will then be available to use as a value of the <strong>font-family</strong> property. Be sure you understand the license for any embedded fonts. </p>
<p>You can also create a secondary stylesheet that contains @font-face rules and import it using the Web Fonts tab. </p>
<h5 id="plugin">Does it work with plugins?</h5>
<p>We offer a premium extension to let you easily modify styles for any WordPress Plugin installed on your website. The Child Theme Configurator Plugin Extension scans your plugins and allows you to create custom stylesheets in your Child Theme. <a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/child-theme-configurator-pro/" title="Take Control of your Plugin Styles with Child Theme Configurator Plugin Extension for WordPress">Learn more <i class="genericon genericon-next"></i></a>
<h5 id="doesnt_work">Why doesn't this work with my (insert theme vendor here) theme?</h5>
<p>Some themes (particularly commercial themes) do not correctly load parent template files or automatically load child theme stylesheets or php files.</p><p>This is unfortunate, because in the best case they effectively prohibit the webmaster from adding any customizations (other than those made through the admin theme options) that will survive past an upgrade. <strong>In the worst case they will break your website when you activate the child theme.</strong> </p>
<p>Contact the vendor directly to ask for this core functionality. It is our opinion that ALL themes (especially commercial ones) must pass the Theme Unit Tests outlined by WordPress.org. </p>
<h5 id="missing_parent">Why doesn't the Parent Theme have any styles when I "View Parent CSS"?</h5>
<p>Your Parent theme is probably using a separate location for the stylesheets. Select individual stylesheets from the "Parse Additional Stylesheets" section of the Parent/Child tab and click "Generate Child Theme Files" again. </p>
<h5 id="performance">Will this slow down my site?</h5>
Once the child theme stylesheet is created, CTC adds very little overhead to the front-end since all of the functionality is in the admin.
The plugin only loads the bulk of the code in the admin when you are using the tool. The biggest performance hit occurs when you generate the Child Theme files from the Parent/Child tab. </p>
<h5 id="where_are_styles">Where are the styles? The configurator doesn't show anything!</h5>
<p>All of the styles are loaded dynamically. You must start typing in the text boxes to select styles to edit.</p>
<p>"Base" is the query group that contains styles that are not associated with any particular "At-rule."</p>
<p>Start by clicking the "Query/Selector" tab and typing "base" in the first box. You can then start typing in the second box to retrieve the style selectors to edit. </p>
<h5 id="preview-not-loading">Why do the preview tabs return "Stylesheet could not be displayed"?</h5>
<p>You have to load a child theme from the Parent/Child tab for the preview to display. This can also happen when your WP_CONTENT_URL is different than $bloginfo('site_url'). Ajax cannot make cross-domain requests by default. Check that your Settings > General > "WordPress Address (URL)" value is correct. (Often caused by missing "www" in the domain.) </p>
<h5 id="edit_manually">Can I edit the Child Theme stylesheet manually offline or by using the Editor or do I have to use the Configurator?</h5>
<p>You can make any manual changes you wish to the stylesheet. Just make sure you import the revised stylesheet using the Parent/Child panel or the Configurator will overwrite your changes the next time you use it. Just follow the steps as usual but select the "Use Existing Child Theme" radio button as the "Child Theme" option. The Configurator will automatically update its internal data from the new stylesheet. </p>
<h5 id="update_child">If the parent theme changes (e.g., upgrade), do I have to update the child theme?</h5>
<p>No. This is the point of using child themes. Changes to the parent theme are automatically inherited by the child theme.</p>
<p>A child theme is not a "copy" of the parent theme. It is a special feature of WordPress that let's you override specific styles and functions leaving the rest of the theme intact. The only time you need to make changes after an upgrade is if the parent removes or changes style or function names. Quality themes should identify any deprecated functions or styles in the upgrade notes so that child theme users can make adjustments accordingly. </p>
<h5 id="functions">Where are the .php files?</h5>
<p>The configurator automatically adds a blank functions.php file to the child theme directory. You can copy parent theme template files using the Files tab. If you want to create new templates and directories you will have to create/upload them manually via FTP or SSH. Remember that a child theme will automatically inherit the parent theme's templates unless they also exist in the child theme directory. Only copy templates that you intend to customize.</p>
<h5 id="specific_color">How do I change a specific color/font style/background?</h5>
<p>You can override a specific value globally using the Property/Value tab. See Property/Value, above.</p>
<h5 id="add_styles">How do I add styles that aren't in the Parent Theme?</h5>
<p>You can add queries and selectors using the "Raw CSS" textarea on the Query/Selector tab. See Query/Selector, above. </p>
<h5 id="add_styles">How do I remove a style from the Parent Theme?</h5>
<p>You shouldn't really "remove" a style from the Parent. You can, however, set the property to "inherit," "none," or zero (depending on the property). This will negate the Original value. Some experimentation may be necessary.</p>
<h5 id="remove_styles">How do I remove a style from the Child Theme?</h5>
<p>Delete the value from the input for the property you wish to remove. The Child Theme Configurator only adds overrides for properties that contain values. </p>
<h5 id="important_flag">How do I set the !important flag?</h5>
<p>We always recommend relying on good cascading design over global overrides. To that end, you have ability to change the load order of child theme styles by entering a value in the "Order" field. You can set properties as important by checking the "!" box next to each input. Please use judiciously. </p>
<h5 id="gradients">How do I create cross-browser gradients?</h5>
<p>The Child Theme Configurator uses a standardized syntax for gradients and only supports two-color gradients without intermediate stops. The inputs consist of origin (e.g., top, left, 135deg, etc.), start color and end color. The browser-specific syntax is generated automatically when you save these values. See Caveats, below, for more information. </p>
<h5 id="responsive">How do I make my Theme responsive?</h5>
<p>The short answer is to use a responsive Parent Theme. Some common methods for responsive design are:
<ul class="instructions"><li>Avoiding fixed width and height values. Using max- and min-height values and percentages are ways to make your designs respond to the viewer's browser size.</li>
<li>Combining floats and clears with inline and relative positions allow the elements to adjust gracefully to their container's width.</li>
<li>Showing and hiding content with Javascript.</li></ul>
<!-- END tab -->
<!-- BEGIN tab -->
<h3 id="ctc_glossary">Glossary</h3>
<ul>
<li id="parent_theme"><strong>Parent Theme</strong> The WordPress Theme you wish to edit. WordPress first loads the Child Theme, then loads the Parent Theme. If a style exists in the Child Theme, it overrides the Parent Theme.</li>
<li id="child_theme"><strong>Child Theme</strong> New Theme based on Parent Theme. You can create any number of Child Themes from a single Parent Theme.</li>
<li id="class"><strong>Class</strong> A term used to organize objects. For example, a &lt;div&gt; might be assigned the "blue-text" class. The stylesheet might then assign "color: blue;" to members of the "blue-text" class. Thus, the &lt;div&gt; would display text as blue in the browser. Class selectors begin with a period (.).</li>
<li id="class"><strong>ID</strong> A unique string used to identify a specific element. ID selectors begin with a hash (#).</li>
<li id="selector"><strong>Query</strong> @media query instruction (see At-rule, below).</li>
<li id="query"><strong>Selector</strong> Combination of html tag names, ids and classes used to identify objects or groups of objects.</li>
<li id="property"><strong>Property</strong> One of many standardized terms used to tell the browser how to display objects matching a given selector. Examples are <strong>color</strong>, <strong>background-image</strong> and <strong>font-size</strong>.</li>
<li id="value"><strong>Value</strong> Data corresponding to a Property.</li>
<li id="at-rule"><strong>At-rule</strong> CSS browser instruction to extend default functionality. The Child Theme Configurator supports two At-rules:
<ul>
<li id="at_import"><strong>@import</strong> Instructs the browser to load additional CSS information from an external source.</li>
<li id="at_media"><strong>@media (Media Query)</strong> Identifies blocks of styles that are used only when certain browser characteristics are true. Examples are max-width, screen and print.</li>
</ul>
</li>
<li id="child_theme"><strong>Baseline Style</strong> A style from any existing Parent Theme or Child Theme stylesheet that can be overridden by the Child Theme custom stylesheet. Most of the time these will come from the Parent Theme's stylesheets.</li>
<li id="override"><strong>Override</strong> When a selector exists in both the Child Theme and the Parent Theme, the Child Theme takes priority over the Parent theme. This is where the Child Theme Configurator stands out: it helps you create <strong>exact overrides</strong> of selectors from the Parent Theme, eliminating hours of trial and error.</li>
<li id="child_theme"><strong>Theme Template</strong> A Theme PHP file having no PHP functions or classes. Other PHP files cannot be safely overridden by a child theme.</li>
</ul>
<!-- END tab -->
<!-- BEGIN sidebar -->
<h4>We LOVE referrals!</h4><a href="http://wordpress.org/support/view/plugin-reviews/child-theme-configurator?rate=5#postform">Give Us 5 Stars</a>
<p style="font-size:smaller">If you would like to support the production of useful tutorials and continued improvement of our software, please consider <a target="blank" rel="noreferrer noopener" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8QE5YJ8WE96AJ">making a donation</a>.</p>
<h4>Upgrade to CTC Pro</h4>
<a href="https://www.lilaeamedia.com/product/child-theme-configurator-pro/" title="Learn more about CTC Pro"><img src="<?php echo CHLD_THM_CFG_URL . 'css/pro-banner.jpg'; ?>" width="150" height="48" /></a>
<p style="font-size:smaller">Designed by WordPress developers who use it every day, CTC Pro adds plugin stylesheets and other features to make design work quicker and easier. This is a free upgrade for users that purchased the Plugins Extension. <a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>/child-theme-configurator-pro/" title="Child Theme Configurator Pro">Learn more</a></p>
<h4 id="ctc_help_sidebar">Links</h4>
<ul>
<li><a href="<?php echo LILAEAMEDIA_URL; ?>/contact/">Contact us</a></li>
<li><a href="<?php echo CHLD_THM_CFG_DOCS_URL; ?>">Plugin Website</a></li>
<li><a href="http://codex.wordpress.org/Child_Themes">WordPress Codex</a></li>
<li><a href="http://wordpress.stackexchange.com/">WordPress Development (StackExchange)</a></li>
</ul>
<!-- END sidebar -->

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,203 @@
/*!
* CTC Gradient Functions
* Adapted from Iris
* Copyright (c) 20122014 Automattic.
* Licensed under the GPLv2 license.
*/
(function( $, undef ){
var _html, nonGradientIE, gradientType, vendorPrefixes, _css, Iris, UA, isIE, IEVersion;
UA = navigator.userAgent.toLowerCase();
isIE = navigator.appName === 'Microsoft Internet Explorer';
IEVersion = isIE ? parseFloat( UA.match( /msie ([0-9]{1,}[\.0-9]{0,})/ )[1] ) : 0;
nonGradientIE = ( isIE && IEVersion < 10 );
// we don't bother with an unprefixed version, as it has a different syntax
vendorPrefixes = ['-moz-', '-webkit-', '-o-', '-ms-' ];
testGradientType();
// Bail for IE <= 7
if ( nonGradientIE && IEVersion <= 7 ) {
$.fn.ctcgrad = $.noop;
$.support.ctcgrad = false;
return;
}
$.support.ctcgrad = true;
function testGradientType() {
var el, base;
if ( nonGradientIE ) {
gradientType = 'filter';
}
else {
el = $('<div id="ctcgrad-gradtest" />');
base = "linear-gradient(top,#fff,#000)";
$.each( vendorPrefixes, function( i, val ){
el.css( 'backgroundImage', val + base );
if ( el.css( 'backgroundImage').match('gradient') ) {
gradientType = i;
return false;
}
});
// check for legacy webkit gradient syntax
if ( gradientType === false ) {
el.css( 'background', '-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))' );
if ( el.css( 'backgroundImage').match('gradient') )
gradientType = 'webkit';
}
el.remove();
}
}
/**
* Only for CSS3 gradients. oldIE will use a separate function.
*
* Accepts as many color stops as necessary from 2nd arg on, or 2nd
* arg can be an array of color stops
*
* @param {string} origin Gradient origin - top bottom left right (n)deg
* @return {string} Appropriate CSS3 gradient string for use in
*/
function createGradient( origin, stops ) {
origin = ( origin.match(/(\d+deg|top|left|bottom|right)( (top|left|bottom|right))?/) ? origin : 'top');
stops = $.isArray( stops ) ? stops : Array.prototype.slice.call(arguments, 1);
if ( gradientType === 'webkit' )
return legacyWebkitGradient( origin, stops );
else
return vendorPrefixes[gradientType] + 'linear-gradient(' + origin + ', ' + stops.join(', ') + ')';
}
/**
* Stupid gradients for a stupid browser.
*/
function stupidIEGradient( origin, stops ) {
var type, self, lastIndex, filter, startPosProp, endPosProp, dimensionProp, template, html, filterVal;
origin = ( origin === 'left' ) ? 'left' : 'top';
stops = $.isArray( stops ) ? stops : Array.prototype.slice.call(arguments, 1);
// 8 hex: AARRGGBB
// GradientType: 0 vertical, 1 horizontal
type = ( origin === 'top' ) ? 0 : 1;
self = $( this );
lastIndex = stops.length - 1;
filter = 'filter';
startPosProp = ( type === 1 ) ? 'left' : 'top';
endPosProp = ( type === 1 ) ? 'right' : 'bottom';
dimensionProp = ( type === 1 ) ? 'height' : 'width';
// need a positioning context
if ( self.css('position') === 'static' )
self.css( {position: 'relative' } );
stops = fillColorStops( stops );
$.each(stops, function( i, startColor ) {
var endColor, endStop;
// we want two at a time. if we're on the last pair, bail.
if ( i === lastIndex )
return false;
endColor = stops[ i + 1 ];
//if our pairs are at the same color stop, moving along.
if ( startColor.stop === endColor.stop )
return;
endStop = 100 - parseFloat( endColor.stop ) + '%';
startColor.octoHex = new Color( startColor.color ).toIEOctoHex();
endColor.octoHex = new Color( endColor.color ).toIEOctoHex();
filterVal = "progid:DXImageTransform.Microsoft.Gradient(GradientType=" + type + ", StartColorStr='" + startColor.octoHex + "', EndColorStr='" + endColor.octoHex + "')";
});
return filterVal;
}
function legacyWebkitGradient( origin, colorList ) {
var stops = [];
origin = ( origin === 'top' ) ? '0% 0%,0% 100%,' : '0% 100%,100% 100%,';
colorList = fillColorStops( colorList );
$.each( colorList, function( i, val ){
stops.push( 'color-stop(' + ( parseFloat( val.stop ) / 100 ) + ', ' + val.color + ')' );
});
return '-webkit-gradient(linear,' + origin + stops.join(',') + ')';
}
function fillColorStops( colorList ) {
var colors = [],
percs = [],
newColorList = [],
lastIndex = colorList.length - 1;
$.each( colorList, function( index, val ) {
var color = val,
perc = false,
match = val.match(/1?[0-9]{1,2}%$/);
if ( match ) {
color = val.replace(/\s?1?[0-9]{1,2}%$/, '');
perc = match.shift();
}
colors.push( color );
percs.push( perc );
});
// back fill first and last
if ( percs[0] === false )
percs[0] = '0%';
if ( percs[lastIndex] === false )
percs[lastIndex] = '100%';
percs = backFillColorStops( percs );
$.each( percs, function( i ){
newColorList[i] = { color: colors[i], stop: percs[i] };
});
return newColorList;
}
function backFillColorStops( stops ) {
var first = 0,
last = stops.length - 1,
i = 0,
foundFirst = false,
incr,
steps,
step,
firstVal;
if ( stops.length <= 2 || $.inArray( false, stops ) < 0 ) {
return stops;
}
while ( i < stops.length - 1 ) {
if ( ! foundFirst && stops[i] === false ) {
first = i - 1;
foundFirst = true;
} else if ( foundFirst && stops[i] !== false ) {
last = i;
i = stops.length;
}
i++;
}
steps = last - first;
firstVal = parseInt( stops[first].replace('%'), 10 );
incr = ( parseFloat( stops[last].replace('%') ) - firstVal ) / steps;
i = first + 1;
step = 1;
while ( i < last ) {
stops[i] = ( firstVal + ( step * incr ) ) + '%';
step++;
i++;
}
return backFillColorStops( stops );
}
$.fn.ctcgrad = function( origin ) {
var args = arguments;
// this'll be oldishIE
if ( nonGradientIE )
$(this).css('filter',
stupidIEGradient.apply( this, args ));
else // new hotness
$( this ).css( 'backgroundImage', createGradient.apply( this, args ) );
};
}( jQuery ));

View File

@ -0,0 +1,7 @@
/*!
* CTC Gradient Functions
* Adapted from Iris
* Copyright (c) 20122014 Automattic.
* Licensed under the GPLv2 license.
*/
(function(i,f){var d,q,b,a,o,e,l,c,h;l=navigator.userAgent.toLowerCase();c=navigator.appName==="Microsoft Internet Explorer";h=c?parseFloat(l.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0;q=(c&&h<10);a=["-moz-","-webkit-","-o-","-ms-"];p();if(q&&h<=7){i.fn.ctcgrad=i.noop;i.support.ctcgrad=false;return}i.support.ctcgrad=true;function p(){var r,s;if(q){b="filter"}else{r=i('<div id="ctcgrad-gradtest" />');s="linear-gradient(top,#fff,#000)";i.each(a,function(t,u){r.css("backgroundImage",u+s);if(r.css("backgroundImage").match("gradient")){b=t;return false}});if(b===false){r.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))");if(r.css("backgroundImage").match("gradient")){b="webkit"}}r.remove()}}function n(r,s){r=(r.match(/(\d+deg|top|left|bottom|right)( (top|left|bottom|right))?/)?r:"top");s=i.isArray(s)?s:Array.prototype.slice.call(arguments,1);if(b==="webkit"){return m(r,s)}else{return a[b]+"linear-gradient("+r+", "+s.join(", ")+")"}}function g(x,A){var w,C,u,r,v,B,z,y,t,s;x=(x==="left")?"left":"top";A=i.isArray(A)?A:Array.prototype.slice.call(arguments,1);w=(x==="top")?0:1;C=i(this);u=A.length-1;r="filter";v=(w===1)?"left":"top";B=(w===1)?"right":"bottom";z=(w===1)?"height":"width";if(C.css("position")==="static"){C.css({position:"relative"})}A=j(A);i.each(A,function(D,F){var E,G;if(D===u){return false}E=A[D+1];if(F.stop===E.stop){return}G=100-parseFloat(E.stop)+"%";F.octoHex=new Color(F.color).toIEOctoHex();E.octoHex=new Color(E.color).toIEOctoHex();s="progid:DXImageTransform.Microsoft.Gradient(GradientType="+w+", StartColorStr='"+F.octoHex+"', EndColorStr='"+E.octoHex+"')"});return s}function m(r,s){var t=[];r=(r==="top")?"0% 0%,0% 100%,":"0% 100%,100% 100%,";s=j(s);i.each(s,function(u,v){t.push("color-stop("+(parseFloat(v.stop)/100)+", "+v.color+")")});return"-webkit-gradient(linear,"+r+t.join(",")+")"}function j(t){var s=[],u=[],r=[],v=t.length-1;i.each(t,function(y,A){var w=A,z=false,x=A.match(/1?[0-9]{1,2}%$/);if(x){w=A.replace(/\s?1?[0-9]{1,2}%$/,"");z=x.shift()}s.push(w);u.push(z)});if(u[0]===false){u[0]="0%"}if(u[v]===false){u[v]="100%"}u=k(u);i.each(u,function(w){r[w]={color:s[w],stop:u[w]}});return r}function k(z){var u=0,y=z.length-1,t=0,w=false,r,x,s,v;if(z.length<=2||i.inArray(false,z)<0){return z}while(t<z.length-1){if(!w&&z[t]===false){u=t-1;w=true}else{if(w&&z[t]!==false){y=t;t=z.length}}t++}x=y-u;v=parseInt(z[u].replace("%"),10);r=(parseFloat(z[y].replace("%"))-v)/x;t=u+1;s=1;while(t<y){z[t]=(v+(s*r))+"%";s++;t++}return k(z)}i.fn.ctcgrad=function(r){var s=arguments;if(q){i(this).css("filter",g.apply(this,s))}else{i(this).css("backgroundImage",n.apply(this,s))}}}(jQuery));

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,964 @@
# Copyright (C) 2015 Child Theme Configurator
# This file is distributed under the same license as the Child Theme Configurator package.
msgid ""
msgstr ""
"Project-Id-Version: Child Theme Configurator 1.7.0\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/child-theme-configurator\n"
"POT-Creation-Date: 2015-02-20 02:29:04+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2015-03-03 11:16+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"X-Generator: Poedit 1.7.4\n"
"Language: sr_RS\n"
#. Plugin Name of the plugin/theme
#: child-theme-configurator.php:76 child-theme-configurator.php:86
#: includes/forms/main.php:23
msgid "Child Theme Configurator"
msgstr "Child Theme Configurator"
#: child-theme-configurator.php:77 child-theme-configurator.php:87
#: child-theme-configurator.php:97
msgid "Child Themes"
msgstr "Podređene teme"
#: child-theme-configurator.php:112
msgid "Child Theme Configurator requires WordPress version %s or later."
msgstr "Child Theme Configurator zahteva WordPress verziju %s ili noviju"
#: includes/class-ctc-ui.php:143
msgid "Child Theme files modified successfully."
msgstr "Podređena tema uspešno izmenjena."
#: includes/class-ctc-ui.php:146
msgid ""
"Child Theme <strong>%s</strong> has been generated successfully.\n"
" "
msgstr "Podređena tema <strong>%s</strong> uspešno generisana.\n"
#: includes/class-ctc-ui.php:149
msgid "IMPORTANT:"
msgstr "VAŽNO:"
#: includes/class-ctc-ui.php:151 includes/forms/themepreview.php:20
msgid "Go to Themes"
msgstr "Idi na teme"
#: includes/class-ctc-ui.php:151
msgid "Network enable"
msgstr "Aktiviraj mrežu"
#: includes/class-ctc-ui.php:151
msgid "your child theme."
msgstr "vaša podređena tema."
#: includes/class-ctc-ui.php:153 includes/forms/themepreview.php:18
msgid "Live Preview"
msgstr "Live pregled"
#: includes/class-ctc-ui.php:153
msgid "Test your child theme"
msgstr "Testirajte svoju podređenu temu"
#: includes/class-ctc-ui.php:153
msgid "before activating."
msgstr "pre nego što je aktivirate."
#: includes/class-ctc.php:143
msgid "URL/None"
msgstr "URL/Nijedan"
#: includes/class-ctc.php:144
msgid "Origin"
msgstr "Poreklo"
#: includes/class-ctc.php:145
msgid "Color 1"
msgstr "Boja 1"
#: includes/class-ctc.php:146
msgid "Color 2"
msgstr "Boja 2"
#: includes/class-ctc.php:147
msgid "Width/None"
msgstr "Širina/Nijedna"
#: includes/class-ctc.php:148
msgid "Style"
msgstr "Stil"
#: includes/class-ctc.php:149
msgid "Color"
msgstr "Boja"
#: includes/class-ctc.php:151
msgid "Are you sure? This will replace your current settings."
msgstr "Jeste li sigurni? Ovim ćete zameniti svoje trenutne postavke."
#: includes/class-ctc.php:152
msgid "<span style=\"font-size:10px\">!</span>"
msgstr "<span style=\"font-size:10px\">!</span>"
#: includes/class-ctc.php:153 includes/forms/rule-value.php:32
msgid "Selectors"
msgstr "Selektori"
#: includes/class-ctc.php:154
msgid "Close"
msgstr "Zatvori"
#: includes/class-ctc.php:155
msgid "Edit"
msgstr "Uredi"
#: includes/class-ctc.php:156
msgid "Cancel"
msgstr "Otkaži"
#: includes/class-ctc.php:157
msgid "Rename"
msgstr "Promeni naziv"
#: includes/class-ctc.php:158
msgid "The stylesheet cannot be displayed."
msgstr "Datoteka sa stilovima ne može biti prikazana."
#: includes/class-ctc.php:159
msgid "(Child Only)"
msgstr "(Samo podređena)"
#: includes/class-ctc.php:160
msgid "Please enter a valid Child Theme."
msgstr "Unesite važeću podređenu temu."
#: includes/class-ctc.php:161
msgid "Please enter a valid Child Theme name."
msgstr "Unesite naziv važeće podređene teme"
#: includes/class-ctc.php:162
msgid "<strong>%s</strong> exists. Please enter a different Child Theme"
msgstr "<strong>%s</strong> već postoji. Unesite drugačiju podređenu temu. "
#: includes/class-ctc.php:163
msgid "The page could not be loaded correctly so some controls have been disabled."
msgstr "Stranica se nije pravilno učitala, tako da su neke kontrole deaktivirane."
#: includes/class-ctc.php:165
msgid "Conflicting jQuery libraries were loaded by another plugin:"
msgstr "Drugi plugin je učitao konfliktne jQuery biblioteke:"
#: includes/class-ctc.php:167
msgid "Deactivating other plugins may resolve this issue."
msgstr "Deaktiviranjem drugih plugin-a možete rešiti ovaj problem."
#: includes/class-ctc.php:168
msgid "%sWhy am I seeing this?%s"
msgstr "%sZašto vidim ovu poruku?%s"
#: includes/class-ctc.php:385
msgid "Zip file creation failed."
msgstr "Neuspelo kreiranje zip datoteke."
#: includes/class-ctc.php:421
msgid "The Functions file is required and cannot be deleted."
msgstr "Datoteka Funkcije je obavezna i ne može se obrisati. "
#: includes/class-ctc.php:502
msgid "You do not have permission to configure child themes."
msgstr "Nemate dozvole da konfigurišete podređene teme."
#: includes/class-ctc.php:549
msgid "%s does not exist. Please select a valid Parent Theme."
msgstr "%s ne postoji. Odaberite važeću nadređenu temu."
#: includes/class-ctc.php:553
msgid "Please select a valid Parent Theme."
msgstr "Odaberite važeću nadređenu temu."
#: includes/class-ctc.php:556
msgid "Please enter a valid Child Theme directory."
msgstr "Unesite važeći direktorijum za podređenu temu."
#: includes/class-ctc.php:564
msgid "Please enter a valid Child Theme template name."
msgstr "Unesite važeći naziv šablona podređene teme."
#: includes/class-ctc.php:569
msgid "<strong>%s</strong> exists. Please enter a different Child Theme template name."
msgstr "<strong>%s</strong> već postoji. Unesite drugi naziv šablona podređene teme."
#: includes/class-ctc.php:575
msgid "Your theme directories are not writable."
msgstr "Direktorijumi vaše teme nisu raspoloživi za pisanje. "
#: includes/class-ctc.php:635
msgid "Your stylesheet is not writable."
msgstr "Vaša datoteka sa stilovima nije raspoloživa za pisanje."
#: includes/class-ctc.php:877
msgid ""
"A closing PHP tag was detected in Child theme functions file so \"Parent Stylesheet "
"Handling\" option was not configured. Closing PHP at the end of the file is discouraged "
"as it can cause premature HTTP headers. Please edit <code>functions.php</code> to "
"remove the final <code>?&gt;</code> tag and click \"Generate/Rebuild Child Theme Files"
"\" again."
msgstr ""
"Završna PHP oznaka otkrivena je u datoteci sa funkcijama podređene teme pa opcija "
"\"Rukovanje nadređenom datotekom sa stilovima\" nije konfigurisana. Zatvaranje PHP-a na "
"kraju datoteke ne preporučuje se jer može dovesti do preuranjenih HTTP zaglavlja. "
"Uredite <code>functions.php</code> da ukloni završnu <code>?&gt;</code> oznaku i "
"kliknite na \"Generiši/Ponovo izgradi datoteke sa podređenim temama\"."
#: includes/class-ctc.php:964
msgid "Could not delete file."
msgstr "Datoteka nije obrisana."
#: includes/class-ctc.php:1040
msgid "Could not set write permissions."
msgstr "Dozvole za pisanje nisu podešene."
#: includes/class-ctc.php:1114
msgid "There were errors while resetting permissions."
msgstr "Došlo je do grešaka prilikom podešavanja dozvola."
#: includes/class-ctc.php:1156
msgid "Could not upload file."
msgstr "Datoteka nije otpremljena."
#: includes/class-ctc.php:1239
msgid ""
"Child Theme Configurator is unable to write to the stylesheet. This can be resolved "
"using one of the following options:<ol>"
msgstr ""
"Child Theme Configurator ne može da piše u datoteku sa stilovima. To se može rešiti uz "
"pomoć jedne od sledećih opcija: <ol>"
#: includes/class-ctc.php:1242
msgid ""
"<li>Temporarily make the stylesheet writable by clicking the button below. You should "
"change this back when you are finished editing for security by clicking \"Make read-only"
"\" under the \"Files\" tab.</li>"
msgstr ""
"<li>Trenutno učinite datoteku sa stilovima raspoloživom za pisanje tako što ćete "
"kliknuti na taster ispod. Kad završite uređivanje, trebalo bi da vratite opciju na "
"prethodno stanje iz bezbednosnih razloga, tako što ćete kliknuti na \"Raspoloživo samo "
"za čitanje\" na tabulatoru \"Datoteke\".</li>"
#: includes/class-ctc.php:1245
msgid "Temporarily make stylesheet writable"
msgstr "Privremeno napravite datoteku sa stilovima raspoloživu za pisanje."
#: includes/class-ctc.php:1246
msgid ""
"<li><a target=\"_blank\" href=\"http://codex.wordpress.org/Editing_wp-config."
"php#WordPress_Upgrade_Constants\" title=\"Editin wp-config.php\">Add your FTP/SSH "
"credentials to the WordPress config file</a>.</li>"
msgstr ""
"<li><a target=\"_blank\" href=\"http://codex.wordpress.org/Editing_wp-config."
"php#WordPress_Upgrade_Constants\" title=\"Editing wp-config.php\">Dodajte svoje FTP/SSH "
"akreditive WordPress datoteci za konfiguraciju</a>.</li>"
#: includes/class-ctc.php:1248
msgid ""
"<li><a target=\"_blank\" href=\"http://technet.microsoft.com/en-us/library/cc771170\" "
"title=\"Setting Application Pool Identity\">Assign WordPress to an application pool "
"that has write permissions</a> (Windows IIS systems).</li>"
msgstr ""
"<li><a target=\"_blank\" href=\"http://technet.microsoft.com/en-us/library/cc771170\" "
"title=\"Podešavanje identiteta skupa aplikacija\">Dodelite WordPress skupu aplikacija "
"koji ima dozvole za pisanje</a> (Windows IIS systems).</li>"
#: includes/class-ctc.php:1249
msgid ""
"<li><a target=\"_blank\" href=\"http://codex.wordpress.org/Changing_File_Permissions\" "
"title=\"Changing File Permissions\">Set the stylesheet write permissions on the server "
"manually</a> (not recommended).</li>"
msgstr ""
"<li><a target=\"_blank\" href=\"http://codex.wordpress.org/Changing_File_Permissions\" "
"title=\"Promena dozvola datoteke\">Podesite ručno dozvole na serveru </a> (ne "
"preporučuje se).</li>"
#: includes/class-ctc.php:1251
msgid "<li>Run PHP under Apache with suEXEC (contact your web host).</li>"
msgstr "<li>Pokreni PHP pod Apache-om uz suEXEC (obratite se svom web hostu).</li>"
#: includes/class-ctc.php:1261
msgid ""
"This Child Theme is not owned by your website account. It may have been created by a "
"prior version of this plugin or by another program. Moving forward, it must be owned by "
"your website account to make changes. Child Theme Configurator will attempt to correct "
"this when you click the button below."
msgstr ""
"Nalog vašeg web site-a ne poseduje ovu podređenu temu. Možda je kreirana od strane "
"prethodne verzije ovog plugin-a ili od strane drugog programa. Da biste pravili izmene, "
"mora biti u vlasništvu naloga vašeg web site-a. Child Theme Configurator će pokušati da "
"to ispravi kad kliknete na donji taster."
#: includes/class-ctc.php:1264
msgid "Correct Child Theme Permissions"
msgstr "Dozvole za ispravljanje podređene teme"
#: includes/class-ctc.php:1271
msgid ""
"Child Theme Configurator needs to update its interal data. Please set your preferences "
"below and click \"Generate Child Theme Files\" to update your configuration."
msgstr ""
"Child Theme Configurator treba da ažurira svoje interne podatke. Podesite "
"karakteristike i kliknite na \"Generiši datoteke podređene teme\" kako biste ažurirali "
"konfiguraciju."
#: includes/class-ctc.php:1277
msgid ""
"<strong>However, some styles could not be parsed due to memory limits.</strong> Try "
"deselecting \"Additional Stylesheets\" below and click \"Generate/Rebuild Child Theme "
"Files\". %sWhy am I seeing this?%s"
msgstr ""
"<strong>Neki stilovi ne mogu biti parsirani zbog ograničenja memorije.</strong> "
"Pokušajte da poništite štikliranje opcije \"Dodatne datoteke sa stilovima\" i kliknite "
"na \"Generiši/Ponovo izgradi datoteke sa podređenimm temama\". %Zašto vidim ovu poruku?"
"% "
#: includes/class-ctc.php:1286
msgid ""
"Child Theme Configurator did not detect any configuration data because a previously "
"configured Child Theme has been removed. Please set your preferences below and click "
"\"Generate Child Theme Files\"."
msgstr ""
"Child Theme Configurator nije otkrio podatke o konfiguraciji jer je prethodno "
"konfigurisana podređena tema uklonjena. Podesite karakteristike i kliknite na "
"\"Generiši datoteke podređene teme\"."
#: includes/forms/addl_css.php:7
msgid "Parse additional stylesheets:"
msgstr "Parsiraj dodatne datoteke sa stilovima:"
#: includes/forms/addl_css.php:11 includes/forms/parent-child.php:226
msgid ""
"Stylesheets that are currently being loaded by the parent theme are automatically "
"selected below (except for Bootstrap stylesheets which add a large amount data to the "
"configuration). To further reduce overhead, select only the additional stylesheets you "
"wish to customize."
msgstr ""
"Datoteke sa stilovima koje trenutno učitava nadređena tema automatski se biraju dole "
"(osim Bootstrap datoteke sa stilovima koja dodaje veliku količinu podataka "
"konfiguraciji). Da biste redukovali opterećenje, odaberite samo dodatne datoteke sa "
"stilovima koje želite da prilagodite."
#: includes/forms/addl_panels.php:8 includes/forms/addl_panels.php:9
msgid "Learn more about IntelliWidget"
msgstr "Saznajte više o IntelliWidget-u"
#: includes/forms/addl_panels.php:9
msgid ""
"IntelliWidget is a versatile widget manager that does the work of multiple plugins by "
"combining custom page menus, featured posts, sliders and other dynamic content features "
"into a single plugin that can display on a per-page or site-wide basis."
msgstr ""
"IntelliWidget je svestran upravljač widget-ima koji radi sa mnogim dodacima tako što "
"kombinuje prilagođene stranice menija, uobličene postove, slajdere i druge "
"funkcionalnosti dinamičkog sadržaja u jednom plugin-u koji se može prikazati na "
"stranici ili na site-u. "
#: includes/forms/addl_panels.php:10 includes/forms/addl_panels.php:13
msgid "Learn more"
msgstr "Saznajte više"
#: includes/forms/addl_panels.php:11 includes/forms/addl_panels.php:12
msgid "Learn more about IW Responsive Menu"
msgstr "Saznajte više o IW responzivnom meniju"
#: includes/forms/addl_panels.php:12
msgid ""
"IntelliWidget Responsive Menu lets you break free from your themes built-in responsive "
"menu options and gives you complete control over the user experience."
msgstr ""
"IntelliWidget responzivni meni omogućava vam da se oslobodite ugrađenih opcija "
"responzivnog menija i daje vam potpunu kontrolu korisničkog iskustva."
#: includes/forms/addl_panels.php:16 includes/help/help_en_US.php:211
msgid "Learn more about CTC Pro"
msgstr "Saznajte više o CTC Pro"
#: includes/forms/addl_panels.php:17
msgid "Customizing WordPress just got even easier."
msgstr "Prilagođavanje WordPress-a upravo je postalo još lakše!"
#: includes/forms/addl_panels.php:18
msgid ""
"Thousands of users have already seen the benefits of using Child Theme Configurator. If "
"you spend any amount of time customizing WordPress, CTC Pro will help maximize your "
"productivity."
msgstr ""
"Hiljade korisnika već su uvidele prednosti upotrebe dodatka Child Theme Configurator. "
"Ako trošite vreme na prilagođavanje WordPress-a, CTC Pro pomoći će vam da povećate "
"produktivnost."
#: includes/forms/addl_panels.php:19
msgid "Designed by Developers Who Use It Every Day."
msgstr "Osmislili su ga programeri koji ga svakodnevno koriste."
#: includes/forms/addl_panels.php:20
msgid ""
"We've packed in more features to make design work quicker and easier with <strong>Child "
"Theme Configurator Pro.</strong>"
msgstr ""
"Spakovali smo više funkcioonalnosti kako bi dizajn radio brže i lakše uz <strong>Child "
"Theme Configurator Pro.</strong>"
#: includes/forms/addl_panels.php:22
msgid "Customize Plugin Stylesheets"
msgstr "Datoteke sa stilovima za prilagođavanje plugin-a "
#: includes/forms/addl_panels.php:23
msgid ""
"Apply the power of CTC's top-rated interface to your site's plugin styles. All new "
"design makes it much easier to get the results you want."
msgstr ""
"Primenite moć najbolje ocenjenih CTC interfejsa na plugin stilove svog site-a. "
"Zahvaljujući novom dizajnu, biće vam mnogo lakše da dobijete rezultate koje želite. "
#: includes/forms/addl_panels.php:24
msgid "Quick Preview"
msgstr "Brzi pregled"
#: includes/forms/addl_panels.php:24
msgid "Test your child theme with a single click."
msgstr "Testirajte svoju podređenu temu jednim klikom."
#: includes/forms/addl_panels.php:25
msgid "Find related styles"
msgstr "Nađite povezane stilove"
#: includes/forms/addl_panels.php:25
msgid ""
"Use the \"All Styles\" panel to edit groups of selectors from a single combined list."
msgstr ""
"Koristite panel \"Svi stilovi\" da biste uredili grupe selektora iz pojedinačne "
"kombinovane liste. "
#: includes/forms/addl_panels.php:26
msgid "Find styles by Nav Menu"
msgstr "Nađi stilove u navigacionom meniju"
#: includes/forms/addl_panels.php:26
msgid "Tweak menus quickly and easily."
msgstr "Uzima delove menija lako i brzo."
#: includes/forms/addl_panels.php:27
msgid "Most recent edits"
msgstr "Najnovije ispravke"
#: includes/forms/addl_panels.php:27
msgid "Return to recently edited selectors from a toggleable sidebar."
msgstr "Vratite se na nedavno uređene selektore sa podesive bočne trake. "
#: includes/forms/addl_panels.php:28
msgid "Free Upgrades"
msgstr "Besplatna nadgradnja"
#: includes/forms/addl_panels.php:29
msgid "Your Update Key gives you access to new Pro features as soon as they are released."
msgstr ""
"Vaš novi ključ za ažuriranje omogućava vam pristup novim profesionalnim "
"funkcionalnostima čim se objave."
#: includes/forms/addl_panels.php:30
msgid "Top-rated Online Support"
msgstr "Najbolje ocenjena online podrška"
#: includes/forms/addl_panels.php:31
msgid "Online Documentation"
msgstr "Online dokumentacija"
#: includes/forms/addl_panels.php:32
msgid "Tutorial Videos"
msgstr "Video tutorijali"
#: includes/forms/addl_panels.php:34
msgid "For a limited time save over 15% off Child Theme Configurator Pro."
msgstr ""
"U ograničenom vremenskom periodu, uštedite više od 15% za Child Theme Configurator Pro."
#: includes/forms/addl_panels.php:35
msgid "Upgrade Now"
msgstr "Nadgradi sada"
#: includes/forms/addl_panels.php:35
msgid "Buy Now - Only $14.95 USD*"
msgstr "Kupite sada - samo $14.95 USD*"
#: includes/forms/addl_panels.php:35
msgid "*Prices subject to change."
msgstr "*Cene su podložne promenama."
#: includes/forms/addl_tabs.php:8
msgid "Get CTC Pro"
msgstr "Obezbedite CTC Pro"
#: includes/forms/at-import.php:15 includes/forms/query-selector.php:85
msgid "Save"
msgstr "Sačuvaj"
#: includes/forms/at-import.php:18
msgid "@import Statements"
msgstr "@uvezi izjave"
#: includes/forms/backup.php:8
msgid "Backup"
msgstr "Backup"
#: includes/forms/backups.php:10 includes/forms/parent-child.php:209
msgid "Restore backup from"
msgstr "Obnovi backup iz"
#: includes/forms/fileform.php:8
msgid "The Theme editor has been disabled. Template files must be edited offline."
msgstr "Uređivač teme je deaktiviran. Datoteke šablona moraju se uređivati offline."
#: includes/forms/fileform.php:12
msgid "Click here to edit template files using the Theme Editor"
msgstr "Kliknite ovde da biste uredili datoteke šablona uz pomoć uređivača teme"
#: includes/forms/fileform.php:23
msgid "Parent Templates"
msgstr "Nadređeni šabloni"
#: includes/forms/fileform.php:23
msgid "Child Theme Files"
msgstr "Datoteke podređene teme"
#: includes/forms/fileform.php:28
msgid "Copy PHP template files from the parent theme by selecting them here."
msgstr "Kopirajte PHP datoteke šablona iz nadređene teme tako što ćete ih odabrati ovde. "
#: includes/forms/fileform.php:31
msgid ""
"CAUTION: If your child theme is active, the child theme version of the file will be "
"used instead of the parent immediately after it is copied."
msgstr ""
"PAŽNJA: Ako je vaša podređena tema aktivna, verzija podređene teme datoteke koristiće "
"se umesto nadređene odmah nakon kopiranja."
#: includes/forms/fileform.php:33
msgid "The %s file is generated separately and cannot be copied here."
msgstr "Datoteka %s je posebno generisana i ne može se kopirati ovde. "
#: includes/forms/fileform.php:43
msgid "Delete child theme templates by selecting them here."
msgstr "Obrišite šablone podređene teme tako što ćete ih odabrati ovde."
#: includes/forms/fileform.php:44
msgid ""
"Delete child theme templates or make them writable by selecting them here. Writable "
"files are displayed in <span style=\"color:red\">red</span>."
msgstr ""
"Obrišite šablone podređene teme ili ih podesite za pisanje tako što ćete ih odabrati "
"ovde. Datoteke za pisanje prikazane su <span style=\"color:red\">crvenom bojom</span>."
#: includes/forms/fileform.php:57
msgid "Make Selected Writable"
msgstr "Neka odabrano bude raspoloživo za pisanje"
#: includes/forms/fileform.php:61
msgid "Copy Selected to Child Theme"
msgstr "Kopiraj odabrano u podređenu temu"
#: includes/forms/fileform.php:61 includes/forms/images.php:21
msgid "Delete Selected"
msgstr "Obriši odabrano"
#: includes/forms/files.php:15
msgid "Upload New Child Theme Image"
msgstr "Otpremi novu sliku podređene teme"
#: includes/forms/files.php:18
msgid ""
"Theme images reside under the <code>images</code> directory in your child theme and are "
"meant for stylesheet use only. Use the Media Library for content images."
msgstr ""
"Slike teme nalaze se u direktorijumu <code>slike</code> u vašoj podređenoj temi i "
"napravljene su samo za upotrebu datoteke sa stilovima. Koristite biblioteku za slike "
"sadržaja."
#: includes/forms/files.php:25 includes/forms/files.php:51
msgid "Upload"
msgstr "Otpremi"
#: includes/forms/files.php:32
msgid "Child Theme Screenshot"
msgstr "Snimak ekrana podređene teme"
#: includes/forms/files.php:41
msgid "Upload New Screenshot"
msgstr "Otpremi novi snimak ekrana"
#: includes/forms/files.php:44
msgid ""
"The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG or GIF. It "
"will be renamed <code>screenshot</code>."
msgstr ""
"Odnos teme i snimka ekrana treba da bude 4:3 (e.g., 880px x 660px) JPG, PNG or GIF. "
"Naziv će biti promenjen <code>slika ekrana</code>."
#: includes/forms/files.php:59
msgid "Export Child Theme as Zip Archive"
msgstr "Izvezi podređenu temu kao zip arhivu"
#: includes/forms/files.php:64
msgid "Export"
msgstr "Izvezi"
#: includes/forms/files.php:73
msgid "Secure Child Theme"
msgstr "Obezbedi podređenu temu"
#: includes/forms/files.php:76
msgid "Attempt to reset child theme permissions to user ownership and read-only access."
msgstr ""
"Pokušaj da poništiš dozvole podređene teme u vlasništvu korisnika i pristup samo za "
"čitanje."
#: includes/forms/files.php:82
msgid "Make read-only"
msgstr "Neka bude samo za čitanje"
#: includes/forms/files.php:99
msgid "Debug"
msgstr "Otkloni greške"
#: includes/forms/files.php:102
msgid "Check the box to enable debugging output."
msgstr "Štiklirajte polje da biste aktivirali otklanjanje grešaka"
#: includes/forms/images.php:10
msgid "Child Theme Images"
msgstr "Slike podređene teme"
#: includes/forms/images.php:13
msgid "Delete child theme images by selecting them here."
msgstr "Obrišite slike podređene teme tako što ćete ih odabrati ovde."
#: includes/forms/main.php:23
msgid "version"
msgstr "verzija"
#: includes/forms/parent-child.php:17
msgid "Parent Theme"
msgstr "Nadređena tema"
#: includes/forms/parent-child.php:25
msgid "Child Theme"
msgstr "Podređena tema"
#: includes/forms/parent-child.php:27
msgid "(click to edit additional fields)"
msgstr "(kliknite da biste uredili dodatna polja)"
#: includes/forms/parent-child.php:34
msgid "Create New Child Theme"
msgstr "Kreiraj novu podređenu temu"
#: includes/forms/parent-child.php:43
msgid "Use Existing Child Theme"
msgstr "Koristi postojeću podređenu temu"
#: includes/forms/parent-child.php:48
msgid "Theme Slug"
msgstr "Slug teme"
#: includes/forms/parent-child.php:59
msgid "Child Theme Name"
msgstr "Naziv podređene teme"
#: includes/forms/parent-child.php:63
msgid "Theme Name"
msgstr "Naziv teme"
#: includes/forms/parent-child.php:66 includes/forms/parent-child.php:70
msgid "Theme Website"
msgstr "Tema web site-a"
#: includes/forms/parent-child.php:73 includes/forms/parent-child.php:77
msgid "Author"
msgstr "Autor"
#: includes/forms/parent-child.php:81 includes/forms/parent-child.php:85
msgid "Author Website"
msgstr "Autor web site-a"
#: includes/forms/parent-child.php:88
msgid "Theme Description"
msgstr "Opis teme"
#: includes/forms/parent-child.php:91
msgid "Description"
msgstr "Opis"
#: includes/forms/parent-child.php:94
msgid "Theme Tags"
msgstr "Oznake teme"
#: includes/forms/parent-child.php:97
msgid "Tags"
msgstr "Oznake"
#: includes/forms/parent-child.php:100 includes/forms/parent-child.php:104
msgid "Version"
msgstr "Verzija"
#: includes/forms/parent-child.php:110
msgid "Stylesheet handling"
msgstr "Upravljanje datotekama sa stilovima"
#: includes/forms/parent-child.php:113
msgid "(click to view options)"
msgstr "(kliknite da biste videli opcije)"
#: includes/forms/parent-child.php:121
msgid "Enqueue parent stylesheet (default)"
msgstr "Dodaj nadređenu datoteku sa stilovima (podrazumevano)"
#: includes/forms/parent-child.php:124
msgid ""
"Select this option if the parent theme enqueues the stylesheet but has no special "
"handling for child themes. Start with this option if unsure."
msgstr ""
"Odaberite ovu opciju ako je nadređena tema dodala datoteku sa stilovima, ali nema "
"poseban način upravljanja za podređene teme. Ako niste sigurni, počnite od ove opcije."
#: includes/forms/parent-child.php:127
msgid ""
"<strong>NOTE: This theme links the stylesheet in the header template and should use the "
"@import option to render correctly.</strong>"
msgstr ""
"<strong>NAPOMENA: Ova tema povezuje datoteku sa stilovima u zaglavlju šablona i treba "
"koristiti opciju @uvezi da bi se ispravno prikazala.</strong>"
#: includes/forms/parent-child.php:132
msgid "<code>@import</code> parent stylesheet"
msgstr "<code>@uvezi</code> nadređenu datoteku sa stilovima"
#: includes/forms/parent-child.php:135
msgid ""
"Select this option if the parent theme links the stylesheet in the header template. "
"Using <code>@import</code> is discouraged but necessary in this case unless you modify "
"the header template."
msgstr ""
"Odaberite ovu opciju ako nadređena tema povezuje datoteku sa stilovima u zaglavlju "
"šablona. Upotreba opcije <code>@uvezi</code>se ne preporučuje, ali u ovom slučaju je "
"neophodna, osim ako izmenite zaglavlje šablona. "
#: includes/forms/parent-child.php:142
msgid "Enqueue child stylesheet"
msgstr "Dodaj datoteku sa stilovima"
#: includes/forms/parent-child.php:145
msgid ""
"Select this option if the parent theme incorrectly loads the \"template\" stylesheet or "
"does not load the \"style.css\" file at all. This is unusual but occurs in some themes."
msgstr "Odaberite ovu opciju ako nadređena tema netačno učitava datoteku sa stilovima "
#: includes/forms/parent-child.php:152
msgid "None (handled by theme)"
msgstr "Nijedan (rukovodi tema)"
#: includes/forms/parent-child.php:156
msgid ""
"Select this option if all stylesheets are automatically loaded for child themes (e.g., "
"\"Responsive\" by CyberChimps)."
msgstr ""
"Odaberite ovu opciju ako se sve datoteke sa stilovima automatski učitavaju za podređene "
"teme (npr. \"Responsive\" čiji je autor CyberChimps)."
#: includes/forms/parent-child.php:161
msgid "Copy Parent Theme Menus, Widgets and other Options"
msgstr "Kopiraj meni nadređene teme, widget-e i druge opcije"
#: includes/forms/parent-child.php:168 includes/forms/parent-child.php:183
msgid "NOTE:"
msgstr "NAPOMENA:"
#: includes/forms/parent-child.php:170
msgid "This will overwrite child theme options you may have already set."
msgstr "Ovim ćete poništiti opcije podređene teme koje ste možda već podesili."
#: includes/forms/parent-child.php:176
msgid "Backup current stylesheet"
msgstr "Uradi backup za tekuću datoteku sa stilovima"
#: includes/forms/parent-child.php:185
msgid ""
"This creates a copy of the current stylesheet before applying changes. You can remove "
"old backup files using the Files tab."
msgstr ""
"Ovim se kreira kopija tekuće datoteke sa stilovima pre nego što se primene izmene. "
"Možete ukloniti stare datoteke za podršku uz pomoć tabulatora Datoteke. "
#: includes/forms/parent-child.php:190
msgid "Reset/Restore from backup"
msgstr "Poništi/Vrati iz backup-a"
#: includes/forms/parent-child.php:196
msgid "Leave unchanged"
msgstr "Ostavi nepromenjeno"
#: includes/forms/parent-child.php:202
msgid "Reset all"
msgstr "Poništi sve"
#: includes/forms/parent-child.php:222
msgid "Parse additional stylesheets"
msgstr "Parsiraj dodatne datoteke sa stilovima"
#: includes/forms/parent-child.php:245
msgid "Generate/Rebuild Child Theme Files"
msgstr "Generiši/Ponovo izgradi datoteke podređene teme"
#: includes/forms/query-selector.php:13
msgid "Query"
msgstr "Upit"
#: includes/forms/query-selector.php:24
msgid "Selector"
msgstr "Selektor"
#: includes/forms/query-selector.php:37 includes/forms/rule-value.php:29
msgid "Sample"
msgstr "Primer"
#: includes/forms/query-selector.php:45
msgid "Save Child Values"
msgstr "Sačuvaj podređene vrednosti"
#: includes/forms/query-selector.php:52 includes/forms/rule-value.php:13
msgid "Rule"
msgstr "Pravilo"
#: includes/forms/query-selector.php:55
msgid "Parent Value"
msgstr "Nadređena vrednost"
#: includes/forms/query-selector.php:58
msgid "Child Value"
msgstr "Podređena vrednost"
#: includes/forms/query-selector.php:64
msgid "New Rule"
msgstr "Novo pravilo"
#: includes/forms/query-selector.php:74
msgid "Order"
msgstr "Nalog"
#: includes/forms/query-selector.php:83
msgid "Copy Selector"
msgstr "Kopiraj selektor"
#: includes/forms/query-selector.php:88
msgid "Raw CSS"
msgstr "Neobrađeni CSS"
#: includes/forms/query-selector.php:90
msgid "Use to enter shorthand CSS or new @media queries and selectors."
msgstr "Koristite da biste uneli shorthand CSS ili nove @media upite i selektore."
#: includes/forms/query-selector.php:90
msgid ""
"Values entered here are merged into existing child styles or added to the child "
"stylesheet if they do not exist in the parent."
msgstr ""
"Ovde unete vrednosti spajaju se u postojeće podređene stilove ili se dodaju podređenoj "
"datoteci sa stilovima ako ne postoje u nadređenoj datoteci. "
#: includes/forms/related.php:1
msgid "New user?"
msgstr "Novi korisnik?"
#: includes/forms/related.php:1
msgid "Click help"
msgstr "Kliknite za pomoć"
#: includes/forms/related.php:1
msgid "Get CTC Pro and other tools"
msgstr "Obezbedite CTC Pro i druge alate"
#: includes/forms/related.php:1
msgid "Lilaea Media - Responsive Tools for a Mobile World"
msgstr "Lilaea Media - odgovarajući alati za svet mobilnih "
#: includes/forms/rule-value.php:26
msgid "Value"
msgstr "Vrednost"
#: includes/forms/tabs.php:11
msgid "Parent/Child"
msgstr "Nadređeni/Podređeni"
#: includes/forms/tabs.php:16
msgid "Query/Selector"
msgstr "Upit/Selektor"
#: includes/forms/tabs.php:19
msgid "Rule/Value"
msgstr "Pravilo/Vrednost"
#: includes/forms/tabs.php:22
msgid "@import"
msgstr "@uvezi"
#: includes/forms/tabs.php:25
msgid "Child CSS"
msgstr "Podređeni CSS"
#: includes/forms/tabs.php:28
msgid "Parent CSS"
msgstr "Nadređeni CSS"
#: includes/forms/tabs.php:34
msgid "Files"
msgstr "Datoteke"
#: includes/forms/themepreview.php:12
msgid "Version: "
msgstr "Verzija"
#: includes/forms/themepreview.php:14
msgid "By: "
msgstr "Od:"
#: includes/forms/themepreview.php:16
msgid "Preview"
msgstr "Pregled"
#: includes/forms/themepreview.php:17
msgid " in default Site"
msgstr "na podrazumevanom site-u"
#: includes/forms/themepreview.php:21
msgid "Not Network Enabled"
msgstr "Nema aktivirane mreže"
#. Plugin URI of the plugin/theme
msgid "http://www.lilaeamedia.com/plugins/child-theme-configurator/"
msgstr "http://www.lilaeamedia.com/plugins/child-theme-configurator/"
#. Description of the plugin/theme
msgid ""
"Create a Child Theme and customize the stylesheet and templates. Fast CSS editor lets "
"you search, preview and modify by selector, rule or value."
msgstr ""
"Kreirajte podređenu temu i prilagodite datoteke sa stilovima i šablone. Brzi CSS "
"uređivač omogućava vam pretragu, pregled i modifikovanje na osnovu selektora, pravila "
"ili vrednosti."
#. Author of the plugin/theme
msgid "Lilaea Media"
msgstr "Lilaea Media"
#. Author URI of the plugin/theme
msgid "http://www.lilaeamedia.com/"
msgstr "http://www.lilaeamedia.com/"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,682 @@
=== Child Theme Configurator ===
Contributors: lilaeamedia
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8QE5YJ8WE96AJ
Tags: child, theme, child theme, child themes, custom styles, customize styles, customize theme, css, responsive, css editor, child theme editor, child theme generator, child theme creator, style, stylesheet, customizer, childtheme, childthemes
Requires at least: 4.0
Requires PHP: 5.6.36
Tested up to: 5.5
Stable tag: 2.5.6
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
When using the Customizer is not enough - Create a child theme from your installed themes and customize styles, templates, functions and more.
== Description ==
Child Theme Configurator is a fast and easy to use utility that allows you to analyze any theme for common problems, create a child theme and customize it beyond the options of the Customizer. Designed for WordPress users who want to be able to customize child theme stylesheets directly, Child Theme Configurator lets you easily identify and override the exact CSS attributes you want to customize. The Analyzer scans the rendered theme and automatically configures your child theme. It correctly enqueues theme and font stylesheets for optimum performance and handles vendor-specific syntax, giving you unlimited control over the Child Theme look and feel while leaving your Parent Theme untouched. [Learn more about how to create a child theme](http://www.childthemeconfigurator.com).
= Take Control of Your Child Themes =
Child Theme Configurator parses and indexes your stylesheets so that every CSS media query, selector, property and value are at your fingertips. Second, it shows you how each customization you make will look before you commit it to the child theme. Finally, it saves your work so that you can customize styles in your child themes without the risk of losing your edits.
You can create any number of child themes from your existing Parent Themes. Child Theme Configurator lets you choose from your installed themes (even existing child themes) and save the results in your Themes directory.
When you are ready, just activate the Child Theme and your WordPress site takes on the custom styles automatically.
https://www.youtube.com/watch?v=xL0YmieF6d0
= Why create child themes and customize styles using Child Theme Configurator? =
1. Some things cannot be changed using the Customizer.
2. Unless you use a child theme, you will lose any changes you made to templates and stylesheets when you update.
3. Child Theme Configurator automatically determines the correct way to set up a child theme based on the theme you are using.
4. You can find the exact style selectors your theme uses and change properties quickly.
5. You can locate, copy and edit theme templates from the admin.
6. Much more:
* Update themes without losing customizations
* Smart Theme Analyzer determines correct settings to use
* Resolve common child theme issues with almost any parent theme
* Copy existing widgets, menus and Customizer options to child theme
* Use web fonts in your child theme
* Enqueue (link) stylesheets instead of using @import
* Quickly locate and edit theme CSS.
* Customize @media queries for responsive design
* Select hex, RGBA (transparent) and named colors using Spectrum color picker
* Add fallback styles (multiple values per property)
* Save hours of development time
* Multisite compatible
* Make modifications unavailable to the Customizer
* Export child themes as Zip Archive
* Identify and override exact selectors from the parent theme
* Change specific colors, backgrounds, font styles, etc., without changing other elements
* Automatically generate cross-browser and vendor-prefixed properties and CSS gradients
* Preview custom styles before committing to them
* Uses WP Filesystem API will not create files you cannot remove
= Child Theme Configurator PRO =
Apply the CSS customizing power of Child Theme Configurator to any WordPress Plugin installed on your website. Child Theme Configurator PRO scans your plugins and lets you customize their stylesheets. Weve added more features to make customizing styles quicker and easier with PRO.
https://www.youtube.com/watch?v=fktwCk43a8c
Learn more at http://www.childthemeconfigurator.com/child-theme-configurator-pro
= Unlimited Widget Content With a Single Plugin =
IntelliWidget is a versatile widget manager that does the work of multiple plugins by combining custom page menus, featured posts, sliders and other dynamic content features that can display on a per-page or site-wide basis.
https://www.youtube.com/watch?v=Ttw1xIZ2b-g
Learn more at https://www.lilaeamedia.com/plugins/intelliwidget
= Hook Highlighter =
Hook Highlighter provides Administrators insight into the internal program flow of WordPress when activated on any front-facing page of a website.
Display action and filter hooks, program files and backtrace information inline for the current page.
https://www.youtube.com/watch?v=fyeroaJK_xw
Learn more at https://www.lilaeamedia.com/product/hook-highlighter
== Installation ==
1. To install from the Plugins repository:
* In the WordPress Admin, go to "Plugins > Add New."
* Type "child theme" in the "Search" box and click "Search Plugins."
* Locate "Child Theme Configurator" in the list and click "Install Now."
2. To install manually:
* Download the Child Theme Configurator from http://wordpress.org/plugins/child-theme-configurator
* In the WordPress Admin, go to "Plugins > Add New."
* Click the "Upload" link at the top of the page.
* Browse for the zip file, select and click "Install."
3. In the WordPress Admin, go to "Plugins > Installed Plugins." Locate "Child Theme Configurator" in the list and click "Activate."
4. Navigate to Tools > Child Themes (multisite users go to Network Admin > Themes > Child Themes).
= The Parent/Child Tab: 10 Easy Steps to Create a Child Theme =
1. Select an action:
* CREATE a new Child Theme - Install a new customizable child theme using an installed theme as a parent.
* CONFIGURE an existing Child Theme - Set up a previously installed child theme for use with the Configurator or to modify current settings.
* DUPLICATE an existing Child Theme - Make a complete copy of an existing Child Theme in a new directory, including any menus, widgets and other Customizer settings. The option to copy the Parent Theme settings (step 8, below) is disabled with this action.
* RESET an existing Child Theme (this will destroy any work you have done in the Configurator) - Revert the Child theme stylesheet and functions files to their state before the initial configuration or last reset.
2. Select a Parent Theme if creating a new Child Theme; select a Child Theme if configuring, duplicating or resetting.
3. Analyze Child Theme - Click "Analyze" to determine stylesheet dependencies and other potential issues.
4. If creating a new Child Theme, name the new theme directory; otherwise verify it the directory is correct. - This is NOT the name of the Child Theme. You can customize the name, description, etc. in step 7, below.
5. Select where to save new styles:
* Primary Stylesheet (style.css) - Save new custom styles directly to the Child Theme primary stylesheet, replacing the existing values. The primary stylesheet will load in the order set by the theme.
* Separate Stylesheet - Save new custom styles to a separate stylesheet and use any existing child theme styles as a baseline. Select this option if you want to preserve the original child theme styles instead of overwriting them. This option also allows you to customize stylesheets that load after the primary stylesheet.
6. Select Parent Theme stylesheet handling:
* Use the WordPress style queue. - Let the Configurator determine the appropriate actions and dependencies and update the functions file automatically.
* Use @import in the child theme stylesheet. - Only use this option if the parent stylesheet cannot be loaded using the WordPress style queue. Using @import is not recommended.
* Do not add any parent stylesheet handling. - Select this option if this theme already handles the parent theme stylesheet or if the parent theme's style.css file is not used for its appearance.
7. Customize the Child Theme Name, Description, Author, Version, etc.: (Click to toggle form)
8. Copy Parent Theme Menus, Widgets and other Customizer Settings to Child Theme: - NOTE: This will overwrite any child theme options you may have already set.
9. Click the button to run the Configurator.
10. IMPORTANT: Always test child themes with Live Preview (theme customizer) before activating!
== Frequently Asked Questions ==
= How do I move changes I have already made to my theme into a Child Theme? =
Follow these steps: http://www.childthemeconfigurator.com/how-to-use/#child_from_modified_parent
= When I run the analyzer I get "Constants Already Defined" notice in PHP Debug Output =
This is a misconfiguration created by the Bluehost auto-installer. http://www.childthemeconfigurator.com/child-theme-faqs/#constants" class="scroll-to">How to fix.</a></p>
= Is there a tutorial? =
There are videos under the "Help" tab at the top right of the page. You can also view them at http://www.childthemeconfigurator.com/tutorial-videos
= If the parent theme changes (e.g., upgrade), do I have to update the child theme? =
No. This is the point of using child themes. Changes to the parent theme are automatically inherited by the child theme.
A child theme is not a "copy" of the parent theme. It is a special feature of WordPress that let's you override specific styles and functions leaving the rest of the theme intact. Quality themes should identify any deprecated functions or styles in the upgrade notes so that child theme users can make adjustments accordingly.
= If I uninstall Child Theme Configurator are child themes affected? =
No. Child Theme Configurator is designed to work independently of themes and plugins. Just remember that if you re-install, you must rebuild the configuration data using the Parent/Child tab.
= How do I add comments? =
Arbitrary comments are not supported. Providing a high level of flexibility for previewing and modifying custom styles requires sophisticated parsing and data structures. Maintaining comments that are bound to any particular element in the stylesheet is prohibitively expensive compared to the value it would add. Although we are working to include this as an option in the future, currently all comments are stripped from the child theme stylesheet code.
= Does it work with Multisite? =
Yes. Go to "Network Admin > Themes > Child Themes." Child themes must be "Network enabled" to preview and activate for Network sites.
= Does it work with plugins? =
Child Theme Configurator PRO brings the CSS editing power of Child Theme Configurator to any WordPress Plugin installed on your website by scanning your plugins and creating custom CSS in your Child Themes. Learn more at http://www.childthemeconfigurator.com/child-theme-configurator-pro
= Why doesn't this work with my [insert vendor here] theme? =
Some themes (particularly commercial themes) do not correctly load parent template files or automatically load child theme stylesheets or php files.
This is unfortunate, because in the best case they effectively prohibit the webmaster from adding any customizations (other than those made through the admin theme options) that will survive past an upgrade. **In the worst case they will break your website when you activate the child theme.**
Contact the vendor directly to ask for this core functionality. It is our opinion that ALL themes (especially commercial ones) must pass the Theme Unit Tests outlined by WordPress.org and ALWAYS TEST CHILD THEMES BEFORE ACTIVATING (See "Preview and Activate").
= Will this slow down my site? =
Child Theme Configurator is designed to add the minimum amount of additional overhead possible and can actually improve performance. **For example:**
* Child Theme Configurator creates or updates files that are already being read by the system. On the front-end, there are no database calls so WordPress can run independent of the plugin. In fact, you can remove Child Theme Configurator when you are finished setting up your child themes.
* Custom styles are applied to a stylesheet file that can be cached by the browser and/or cached and minimized by a performance caching plugin. Because the editor creates mostly "overrides" to existing styles, the file is typically smaller than other stylesheets.
* The code that drives the editor interface only loads when the tool is being used from the WordPress Admin, including Javascript and CSS. This means that it will not get in the way of other admin pages.
* The biggest performance hit occurs when you generate the Child Theme files from the Parent/Child tab, but this is a one-time event and only occurs from the WordPress Admin.
= HELP! I changed a file and now I am unable to access my website or login to wp-admin to fix it! =
To back out of a broken child theme you have to manually rename the offending theme directory name (via FTP, SSH or your web host control panel file manager) so that WordPress cant find it. WordPress will then throw an error and revert back to the default theme (currently twenty-fifteen).
The child theme is in your themes folder, usually
[wordpress]/wp-content/themes/[child-theme]
To prevent this in the future, always test child themes with Live Preview (theme customizer) before activating.
= Why are my menus displaying incorrectly when I activate new child themes? =
...or...
= Why is my custom header missing when I activate new child themes? =
...or...
= Why does my custom background go back to the default when I activate new child themes? =
...or...
= Why do my theme options disappear when I activate new child themes? =
These options are specific to each theme and are saved separately in the database. When you create new child themes, their options are blank.
Many of these options can be copied over to the child theme by checking "Copy Parent Theme Menus, Widgets and other Options" when you generate the child theme files on the Parent/Child tab.
If you want to set different options you can either apply them after you activate the child theme using the theme customizer, or by using the "Live Preview" under Appearance > Themes.
Every theme handles options in its own way. Most often, they will create a set of options and store them in the WordPress database. Some options are specific to the active theme (or child theme), and some are specific to the parent theme only (meaning the child theme CANNOT customize them). You will have to find out from the theme author which are which.
= Where is Child Theme Configurator in the Admin? =
For most users Child Theme Configurator can be found under "Tools > Child Themes."
WordPress Multisite (Network) users go to "Network Admin > Themes > Child Themes."
NOTE: Only users with "install_themes" capability will have access to Child Theme Configurator.
Click the "Help" tab at the top right for a quick reference.
= How do I add Web Fonts? =
The easiest method is to paste the @import code provided by Google, Font Squirrel or any other Web Font site into the Web Fonts tab. The fonts will then be available to use as a value of the font-family property. Be sure you understand the license for any embedded fonts.
You can also create a secondary stylesheet that contains @font-face rules and import it using the Web Fonts tab.
= Why doesn't the Parent Theme have any styles when I "View Parent CSS"? =
Check the appropriate additional stylesheets under "Parse additional stylesheets" on the Parent/Child tab and load the Child Theme again. CTC tries to identify these files by fetching a page from the parent theme, but you may need to set them manually.
= Where are the styles? The configurator doesn't show anything! =
All of the styles are loaded dynamically. You must start typing in the text boxes to select styles to edit.
"Base" is the query group that contains styles that are not associated with any particular "At-rule."
Start by clicking the "Query/Selector" tab and typing "base" in the first box. You can then start typing in the second box to retrieve the style selectors to edit.
= Why do the preview tabs return "Stylesheet could not be displayed"? =
You have to load a child theme from the Parent/Child tab for the preview to display. This can also happen when your WP_CONTENT_URL is different than $bloginfo('site_url'). Ajax cannot make cross-domain requests by default. Check that your Settings > General > "WordPress Address (URL)" value is correct. (Often caused by missing "www" in the domain.)
= Can I edit the Child Theme stylesheet manually offline or by using the Editor or do I have to use the Configurator? =
You can make any manual customizations you wish to the stylesheet. Just make sure you import the revised stylesheet using the Parent/Child panel or the Configurator will overwrite your customizations the next time you use it. Just follow the steps as usual but select the "Use Existing Child Theme" radio button as the "Child Theme" option. The Configurator will automatically update its internal data from the new stylesheet.
= Where are the child theme .php files? =
Child Theme Configurator automatically adds a blank functions.php file to the child theme's directory. You can copy parent theme template files using the Files tab. If you want to create new templates and directories you will have to create/upload them manually via FTP or SSH. Remember that a child theme will automatically inherit the parent theme's templates unless they also exist in the child theme's directory. Only copy templates that you intend to customize.
= How do I customize a specific color/font style/background? =
You can override a specific CSS value globally using the Property/Value tab. See Property/Value, above.
= How do I add custom styles that aren't in the Parent Theme? =
You can add queries and selectors using the "Raw CSS" textarea on the Query/Selector tab. See Query/Selector, above.
= How do I remove a style from the Parent Theme? =
You shouldn't really "remove" a style from the Parent. You can, however, set the property to "inherit," "none," or zero (depending on the property). This will negate the Original value. Some experimentation may be necessary.
= How do I remove a style from the Child Theme? =
Delete the value from the input for the property you wish to remove. Child Theme Configurator only adds overrides for properties that contain values.
= How do I set the !important flag? =
We always recommend relying on good cascading design over global overrides. To that end, you have ability to change the load order of child theme custom styles by entering a value in the "Order" field. And yes, you can now set properties as important by checking the "!" box next to each input. Please use judiciously.
= How do I create cross-browser gradients? =
Child Theme Configurator uses a standardized syntax for gradients and only supports two-color gradients without intermediate stops. The inputs consist of origin (e.g., top, left, 135deg, etc.), start color and end color. The browser-specific syntax is generated automatically when you save these values. See Caveats, below, for more information.
= How do I make my Theme responsive? =
The short answer is to use a responsive Parent Theme. Some common characteristics of responsive design are:
* Avoiding fixed width and height values. Using max- and min-height values and percentages are ways to make your designs respond to the viewer's browser size.
* Combining floats and clears with inline and relative positions allow the elements to adjust gracefully to their container's width.
* Showing and hiding content with Javascript.
For more information view "Make a Theme Responsive":
https://www.youtube.com/watch?v=iBiiAgsK4G4
== Screenshots ==
1. Parent/Child tab
2. Parent/Child tab with parent theme menu open
3. Query/Selector tab
4. Property/Value tab
5. Web Fonts tab
6. Parent CSS tab
7. Files tab
== Changelog ==
= 2.5.6 =
* WP 5.5 update removed commonL10n - causing scripts to break - replaced with CTC getxt value.
= 2.5.5 =
* Removed curly brace syntax from substring argument in Packer class.
= 2.5.4 =
* Fixed case where registered styles not showing in queue during analysis.
= 2.5.3 =
* Fixes to stylesheet. Updates to help tabs.
= 2.5.2 =
* Logic to prevent malformed style properties
* Minor cosmetic changes
= 2.5.0 =
* Preview class now evaluates stylesheet hooks as they fire instead of calling them again to prevent function exists errors.
* Tested for PHP version 7.1
* Modified input parser to allow multi-stop background gradients.
= 2.4.x =
* Analyzer now saves all signals on successful child theme regardless of analysis results.
* This fixes a bug in some themes where the enqueue hooks were being rewitten incorrectly after adding web fonts.
* Fixed a serious regression bug created by version 2.4.2.
* Added call to customizer.php to initialize theme mods prior to analyzing child theme
* Deferred copy_theme_mods until after child theme analysis. This allows hooks in Preview to initialize custom theme mods
* Added mpriority (max priority) to CSS object to accommodate multiple irregular stylesheet hooks
* Restored original (pre 2.4.1) version filter hook style_loader_src to child theme stylesheets to prevent caching
* Strip closing php tag from functions.php to prevent premature response header
* Fixed localization issues (thanks @alexclassroom for identifying these)
* Modified style_loader_src hook to only add timestamp under certain conditions to prevent loading delay for most requests. (thanks @anthony750)
* Automatically add action parent RTL stylesheet when child theme does not have one.
* Handle case where parent theme changes queue action incorrectly points to non-existent child theme stylesheet.
* Correctly copies customizer css to child theme.
* Fixed PHP 7.3 compatability issue (thanks @forest-skills for identifying this)
= 2.3.x =
* strip scripts during template scan to prevent false positives
* check file size during template scan to prevent timeout
* changed syntax of statement that was being flagged by WP Defender
* Fixed bug in screenshot copy.
* Fixed incorrect reference to errors array in UI.
* Added ability to rename @media query
* Added height/Width for theme images on Files Tab
* Added test for RTL in Analyzer
* Added test cases for WP Rocket and AutOptimize plugins in Analyzer
* Added redirect for error condition after configurator POST
* Clarified descriptions for certain Analyzer signal conditions
* Set priority of child theme css hook to force load after parent
* Remove pruned selectors from menu
= 2.2.x =
* Modified preview to include all registered stylesheets in queue
* Disable Autoptimize in preview
* Added support for General Sibling Selector (~)
* Fixed CSS class loading FALSE for dictionaries on fresh install
* Fixed using wrong nonce for plugin mode preview (Pro)
* Fixed error thrown when packing negative integers (Pro)
* Disable Pagespeed in preview
* Fixed Preview and Analyzer for some child theme configurations by removing nonce requirement
* Fixed header not being repaired on first pass with "Repair Header" selected
* Fixed styles being pruned before new "Raw CSS" styles are added
* Fix bug in parent dependencies
* Fix bug where stylesheet dependency arrays are not being initialized
* Add action hook to extend copy theme settings feature
* Display non active tabs, enable upgrade/register before config data is created
* Show raw results after Analysis to help debugging
* Fix javascript not escaping quotes in input fields
* Restored original ajax preview and added fallback method for cross-domain preview
* Fix in javascript affecting Pro users
* Cross domain Parse error
* Showing "reconfigure" message on new install
* Manual upgrade Pro from plugin
* Add pre_option stylesheet and template filters to Preview class
* Use child theme name on duplicate
* Ability to force/unforce dependency
* Identify and handle imported stylesheets, convert to links
* Fixes related to testing if CTC Pro is installed
= 2.1.x =
* change packer class to use standard < 5.4 array syntax
* Loading dictionaries on demand
* Reversed key/value dictionary structure for huge memory improvement
* Added packer class to flatten multidim arrays for huge memory improvement
* Reduced key name lengths throughout
* Improved data validation on inputs
* Require minimum Pro version ( Pro users only )
* Move html output to separate view includes
* Move theme mod routines to own functions
= 2.0.x =
* Fix: preview not parsing parent styles correctly when minimized.
* Fix: cast argument to array in sort functions.
* Updated Child Theme Configurator language template.
* Updated child theme preview class to use is_theme_active and other methods to eliminate conflicts with Jetpack and any other plugin that references the customize manager.
* Updated child theme preview class to send origin headers and run customize_preview_init action along with some other actions.
* Added logic conditions in preview class to help prevent Analyzer from failing in some cases
* Enabled theme zip file export for any selected theme independent of theme currently loaded in Configurator
* Fixed bugs present with servers not running Apache with SuExec
* Fixed issue with Windows servers that do not return C: with filesystem paths
* Automatically set priority of enqueue hook based on value from parent theme
* Made file scan routine more efficient
* Support for background-image as base64 data
* Tweaked analyzer signals
* Updated language template and de_DE files
* Fix: case where child stylesheet link was not being added resulting in "This child theme does not load a Configurator stylesheet" notice
* Fix: fatal error in debug mode
* Minor bug fixes
* New Theme Analyzer automatically checks for issues and determines correct settings
* Step by step setup of Parent/Child settings
* Simplified parent stylesheet handling options
* Option to write new child theme styles to a separate stylesheet
* Uses WordPress style dependencies to ensure correct child theme stylesheet load order
* Automatically repairs themes that use outdated stylesheet handling methods
* Parses parent theme files and only displays templates that can be be overridden by child themes
* Numerous minor bug fixes
= 1.7.x =
* Fix: regression bug in 1.7.9 causing new property menu to fail
* Fix: use nonce when retrieving front-end html to parse default additional stylesheets
* Refactored classes to make Child Theme Configurator more lightweight on front end
* Fix: disable autoload on configuration data options
* Fix: normalize media query and add to menu when added via raw css
* Fix: Margin and Padding shorthand generated incorrectly.
* Addressed case where parent or child theme is in subdirectory.
* Minimized admin CSS.
* Sanitize child theme slug
* Remove cascade load order comments from generated CSS
* Set admin background to prevent theme override
* Refactored background normalization function to better follow CSS specification.
* Check child theme exists function case-insensitive.
* Changed chldthmcfg.init() call to fire on load instead of .ready() to prevent JS conflicts
* Uses spectrum color picker to support transparency and named colors.
* Refactored entire system to support fallback values for any property.
* Fix path when duplicating child theme on first run
* New Feature: "delete child values" button - easily revert custom styles in child theme stylesheet
* Will not write child theme stylesheet if error detected in functions.php
* Fixed minified JS
* Restored multisite admin menu link under Tools by popular demand
* Automatically Network enables new child theme on creation
* Fix for FTP notice - now uses PHP_OS constant to detect win vs nix
* Added duplicate child theme feature
* added dismiss option to warnings by popular demand.
* Changed @import tab to "Web Fonts." @import statements are automatically converted to enqueued external links.
* Added "Enqueue both parent and child stylesheets" option to enable child theme overrides without using @import.
* Added checks for hard-coded link tags in header template to help resolve incorrect stylesheet load order.
* Fix: "Enqueue child stylesheet" now passes correct value.
* Fix: hide called before iris init
* Fix: @import not being written on rebuild/configure
* Fix: min height on property/value panel
* Only prune child theme selectors on rename
* Removed conflicting wistia javascript link
* New Feature: Enqueue child theme stylesheet option for themes that do not load it.
* New Feature: Child Theme and Author website, description and tag fields.
* Fix: Redesigned UI Javascript using jQuery objects for better browser memory management.
* Fix: Child Theme Stylesheet version is timestamped to force browser reload after changes.
= 1.6.x =
* Fix: Empty functions file created causing inserted markers to be output to browser.
* Fix: check for closed PHP tag in functions file prior to inserting markers
* Fix: undefined constant LILAEAMEDIA_URL
* Fix: logic to determine whether to display config notice
* Fix: incorrect path generation and validation on Windows servers
* Added error handling and notification to prevent jQuery conflicts and out of memory conditions
* Fix: removed max-height on property/value overlay
* Added debug option
* New Feature: Copy selector button for Raw CSS textarea on Query/Selector tab.
* Fix: Menus rendering incorrectly for RTL locales
* Fix: Border-top etc. not being written correctly to stylesheet
* Fix: Refactored ajax semaphore logic and flow
* New Feature: Better child theme handling for multisite. Moved interface to Themes menu and check for network enabled.
* Fix: Restrict child theme configurator access to install_themes capability
* Fix: Preview links to Themes admin if not network enabled to prevent 'Cheatin, uh?' error.
* Fix: only users with "install_themes" capability have access to Child Theme Configurator. This resolves permission issues with both multisite and single site installs. **MULTISITE USERS:** The Admin HAS MOVED to Network Admin > Themes > Child Themes for better handling for multisite (network) installs.
* Fix: Regular expression introduced in version 1.6.2 parses selectors incorrectly.
* Fix: replaced wp_normalize_path with class method to support legacy WP versions
* Fix: support for multiple layered background images
* Fix: background:none being parsed into gradient origin parameter
* Fix: support for data URIs
* Fix: support for *= and ^= notation in selectors
* Fix: add check if theme uses hard-wired stylesheet link and alert to use @import instead of link option
* Fix: conflicts with using jQuery UI from CDN - using local version of 1.11.2 Widget/Menu/Selectmenu instead
* Fix: using wp-color-picker handle instead of iris as dependency to make sure wpColorPicker() methods are loaded
* Fix: copy parent theme widgets logic is different when child theme is active
* New Feature: option to load parent stylesheet using wp_enqueue_style (link), @import or none.
* Thanks to cmwwebfx and Shapeshifter3 for pushing me on this
* New Feature: automatically-generated slug and name
* New Feature: restore from backup and reset options
* New Feature: backup files to "Child Theme Files" on Files Tab so they can be deleted
* New Feature: Added new theme chooser select menu with screenshot, theme info and link to live preview.
* Fix: Admin scripts now only load when CTC page is being viewed.
* Fix: parent CSS preview to correctly display all parsed parent stylesheets in sequence
* Fix: Refactored throughout for maintainability
= 1.5.x =
* New Feature: Load imported stylesheets into the CTC admin so web fonts can be previewed.
* Set preview swatch to z-index -1 to prevent it from covering up the controls
* Spread config data across multiple option records to prevent out of memory errors with large stylesheets.
* Do not automatically select Bootstrap CSS files as additional stylesheets to (greatly) reduce overhead.
* Add jQuery UI styles that are no longer being loaded by default in the WP admin (autoselect menus).
* Fixed a bug in the way zero values are handled that was breaking css output in certain situations
* Added regex filter for non-printable (e.g., null) characters in input strings
* Fixed a bug introduced in v1.5.2(.1) that copied all of the parent styles to the child theme stylesheet. This should only be an issue for 'background-image' styles that reference images in the parent theme and do not have child theme overrides.
* Rolled back changes to the javascript controller that introduced a number of type errors.
* Tweaked preview ajax call to handle ssl.
* Automatically set additional stylesheets to parse based on parent theme links in head.
* Render parent CSS including additional stylesheets
* Added copy option to Parent/Child tab to assign menu locations, sidebars/widgets, custom header, background, and other options to new Child Themes.
* Refactored CTC to use the WP_Filesystem API.
* Non suExec configurations will now require user credentials to add, remove or update Child Theme files.
* Added the ability for you to make the files writable while editing and then make them read-only when you are done.
* You can also set your credentials in wp-config.php: http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants
= 1.4.x =
* Removed backreference in main CSS parser regex due to high memory usage.
* Fixed uninitialized variable in files UI.
* Feature: export child themes as zip archive
* Added transform to list of vendor properties
* Bug fixed: parser not loading multiple instances of same @media rulesets
* Refactored uploader to use wp core functions for compatibility and security
* Increased CHLD_THM_CFG_MAX_RECURSE_LOOPS to 1000 to accommodate complex parent frameworks
* Fix: javascript bug
* Fix: regression bug - sanitizing broke raw input selectors
* Fix: escape quotes in text inputs. This has bugged me for a while now.
* Fix: Escape backslash for octal content values. Thanks Laurent for reporting this.
* Fix: Normalize colors to lowercase and short form when possible to prevent duplicate entries in the data
* Refactored the way CTC caches updates and returns them to the UI controller to reduce memory consumption.
* Prevent out of memory fatals when generating new child themes.
* Changed "Scan Parent for Additional Stylesheets" to individual checkbox options for each file with a toggle to show/hide in the Parent/Child tab.
* Added automatic update of form when Parent Theme is changed.
* Pre-populate Parent/Child form when parent slug is passed to CTC options.
* updated parser to match selectors containing parentheses and empty media rulesets
* Tweaked the Files tab options and added check for DISALLOW_FILE_EDIT
* Removed automatic @import rules for additional stylesheets that are loaded.
* Fixed bug caused by new jQuery .css function handling of empty css values (preview swatch).
* New Feature: Theme Files tab:
* Copy parent templates to child themes to be edited using the Theme Editor.
* Remove child theme templates.
* Upload child theme images.
* Remove child theme images.
* Upload child theme screenshot.
= 1.3.x =
* Fixes a bug with the way the @import data is stored that threw errors on php 5.3 and corrupted v1.3.2 @import data.
* New Feature: option to scan parent theme for additional stylesheets. This allows CTC to be used with themes such as "Responsive" by CyberChimps.
* New Feature: automatically copies parent theme screenshot to child.
* Fixed unquoted regex pattern in file path security check function. Thanks to buzcuz for reporting this.
* Updated help tab content. Added additional sanitization of source and target file paths.
* Changed CSS preview to retrieve directly from WordPress Admin instead of remote http GET to prevent caching issues.
* Added loading icon for CSS preview.
* Fixed JS type error on backup toggle.
* Improved extensibility throughout.
= 1.2.x =
* Replace PHP short tags with standard codes.
* New Features: You can now rename selectors in place from the Query/Selector panel. Made stylesheet backup optional. Bugs fixed: Incorrect parsing of background position when '0', fixed type error when background image url value is removed.
* Bugs fixed: "star hack" properties no longer throwing js error. Important flag now works on borders and gradients.
* New features: Link to Query/Selector tab from specific Property/Value selector, new property focus on adding new property. Bugs fixed: clear Query/Selector inputs when loaded selector is empty, use latest min.js script.
= 1.1.x =
* Added check for writability before attempting to create child theme files to avoid fatal error on servers not running suEXEC. Fixed a bug in the ctc_update_cache function that was throwing a fatal JS error when new media queries were saved via the Raw CSS input. Configurator now adds functions.php file to child theme when it does not exist.
* Added reorder sequence and important flag functionality. Fixed bug where multiple inputs with same selector/property combo were assigned the same id. Fixed bug in the shorthand encoding routine.
* Added tutorial video to help tabs.
* Added call to reset_updates() before update_option() to prevent serialization errors.
* Query/Selector panel now defaults to 'base'
* Fixed bug causing background-image with full urls (http://) to be parsed as gradients
* Fixed bug causing property menu to throw error when selector has no properties
* Fixed sort bug in shorthand parser that was returning properties in wrong order
* Fixed bug that assumed lowercase only for theme slugs. (Thanks to timk)
* Fixed update redirect to execute on first run
* Small bug fix to javascript (casting number to string)
* Fixed major bug where inputs containing '0' were being ignored
* Removed "no leading digits" requirement for theme slug
* Change query sort function to keep parent order of queries without device width rules
* Fixed gettext calls to use static namespace parameter
* Auto populate child theme inputs when existing theme is selected
* Correctly remove border when values are blanked
* Fixed duplicate "new property" bug on Query/Selector panel
* added timestamp to backup file
* Added encode_shorthand function to recombine margin/padding values when all 4 sides are present
* Corrected parsing for certain backgrounds and gradients (e.g., supports hsla color syntax)
* Handle empty selectors
* Ajax load for menus and updates
* Clean up Parent/Child form UI and validation
* Streamlined UI overall
= 1.0.0 =
* Initial release.
== Upgrade Notice ==
* Preview class now evaluates stylesheet hooks as they fire instead of calling them again to prevent function exists errors.
* Tested for PHP version 7.1
* See changelog for details.
== Query/Selector Tab ==
There are two ways to identify and customize baseline (parent) styles. Child Theme Configurator lets you search styles by CSS selector and by property. If you wish to customize a specific CSS selector (e.g., h1), use the "Query/Selector" tab. If you have a specific CSS value you wish to customize site-wide (e.g., the color of the type), use the "Property/Value" tab.
The Query/Selector tab lets you find specific CSS selectors and edit them. First, find the query that contains the CSS selector you wish to edit by typing in the Query autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys. CSS selectors are in the base query by default.
Next, find the CSS selector by typing in the "Selector" autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys.
This will load all of the properties for that CSS selector with the Original values on the left and the child theme values inputs on the right. Any existing child theme values will be automatically populated. There is also a Sample preview that displays the combination of Parent and Child overrides. Note that the border and background-image get special treatment.
The "Order" field contains the original sequence of the CSS selector in the parent theme stylesheet. You can change the CSS selector order sequence by entering a lower or higher number in the "Order" field. You can also force style overrides (so called "!important" flag) by checking the "!" box next to each input. Please use judiciously.
Click "Save" to update the child theme stylesheet and save your changes to the WordPress admin.
== Adding Raw CSS ==
If you wish to add additional properties to a given CSS selector, first load the selector using the Query/Selector tab. Then find the property you wish to override by typing in the New Property autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys. This will add a new input row to the selector inputs.
If you wish to add completely new CSS selectors, or even new @media queries, you can enter free-form CSS in the "Raw CSS" textarea. Be aware that your syntax must be correct (i.e., balanced curly braces, etc.) for the parser to load the new custom styles. You will know it is invalid because a red "X" will appear next to the save button.
If you prefer to use shorthand syntax for properties and values instead of the inputs provided by Child Theme Configurator, you can enter them here as well. The parser will convert your input into normalized CSS code automatically.
== Property/Value Tab ==
The Property/Value tab lets you find specific values for a given property and then edit that value for individual CSS selectors that use that property/value combination. First, find the property you wish to override by typing in the Property autoselect box. Select by clicking with the mouse or by pressing the "Enter" or "Tab" keys.
This will load all of the unique values that exist for that property in the parent theme stylesheet with a Sample preview for that value. If there are values that exist in the child theme stylesheet that do not exist in the parent stylesheet, they will be displayed as well.
For each unique value, click the "Selectors" link to view a list of CSS selectors that use that property/value combination, grouped by query with a Sample preview of the value and inputs for the child theme value. Any existing child theme values will be automatically populated.
Click "Save" to update the child theme stylesheet and save your changes to the WordPress admin.
If you want to edit all of the properties for the CSS selector you can click the “Edit” link and the CSS selector will automatically load in the Query/Selector Tab.
== Web Fonts Tab ==
You can add additional stylesheets and web fonts by typing @import rules into the textarea on the Web Fonts tab. **Important: do not import the parent theme stylesheet here.** Use the "Parent stylesheet handling" option from the Parent/Child tab.
== Files Tab ==
= Parent Templates =
You can copy PHP template files from the parent theme by checking the boxes. Click "Copy Selected to Child Theme" and the templates will be added to the child theme's directory.
CAUTION: If your child theme is active, the child theme's version of the file will be used instead of the parent immediately after it is copied. The functions.php file is generated separately and cannot be copied here.
= Child Theme Files =
Templates copied from the parent are listed here. These can be edited using the Theme Editor in the Appearance Menu. Remove child theme images by checking the boxes and clicking "Delete Selected."</p>
= Child Theme Images =
Theme images reside under the <code>images</code> directory in your child theme and are meant for stylesheet use only. Use the media gallery for content images. You can upload new images using the image upload form.
= Child Theme Screenshot =
You can upload a custom screenshot for the child theme here. The theme screenshot should be a 4:3 ratio (eg., 880px x 660px) JPG, PNG or GIF. It will be renamed "screenshot".
= Export Child Theme as Zip Archive =
You can download your child theme for use on another WordPress site by clicking "Export".
== Preview and Activate ==
**IMPORTANT: Test child themes before activating!**
Some themes (particularly commercial themes) do not correctly load parent template files or automatically load child theme stylesheets or php files.
**In the worst cases they will break your website when you activate the child theme.**
1. Navigate to Appearance > Themes in the WordPress Admin. You will now see the new Child Theme as one of the installed Themes.
2. Click "Live Preview" (theme customizer) below the new Child Theme to see it in action.
3. When you are ready to take the Child Theme live, click "Activate."
**MULTISITE USERS:** You must Network Enable your child theme before you can use Live Preview. Go to "Themes" in the Network Admin.
== Caveats ==
* Arbitrary comments are not supported. Providing a high level of flexibility for previewing and modifying custom styles requires a sophisticated parsing system. Maintaining comments that are bound to any particular element in the stylesheet is prohibitively expensive compared to the value it would add. Although we are working to include this as an option in the future, currently all comments are stripped from the child theme stylesheet code.
* No @keyframes or @font-face rules. Child Theme Configurator only supports @media and @import. If you need other @rules, put them in a separate stylesheet and import them into the Child Theme stylesheet.
* Only two-color gradients. Child Theme Configurator is powerful, but we have simplified the gradient interface. You can use any gradient you want as long as it has two colors and no intermediate stops.
* CSS properties are auto-discovered. Child Theme Configurator loads the properties that exist in the Parent stylesheet. You can always add new properties using the “Raw CSS” text area.
* Legacy gradient syntax is not supported. Child Theme Configurator does not support the MS filter gradient or legacy webkit gradient. These will continue to work if they are used in the parent theme, but will not be written to the child theme stylesheet. If there is a demand, we may add it in a future release, but most users should have upgraded by now.
== Documentation ==
Go to http://www.childthemeconfigurator.com/
Serbo-Croatian translation courtesy of Borisa Djuraskovic borisad@webhostinghub.com http://www.webhostinghub.com
Copyright: (C) 2014-2018 Lilaea Media

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
wp-content/uploads/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Some files were not shown because too many files have changed in this diff Show More