if (!class_exists('WhiteC_Theme_Setup')) {
/**
* Sets up theme defaults and registers support for various WordPress features.
*
* @since 1.0.0
*/
class WhiteC_Theme_Setup
{
/**
* A reference to an instance of this class.
*
* @since 1.0.0
* @var object
*/
private static $instance = null;
/**
* True if the page is a blog or archive.
*
* @since 1.0.0
* @var Boolean
*/
private $is_blog = false;
/**
* Sidebar position.
*
* @since 1.0.0
* @var String
*/
public $sidebar_position = 'none';
/**
* Loaded modules
*
* @var array
*/
public $modules = array();
/**
* Theme version
*
* @var string
*/
public $version;
/**
* Sets up needed actions/filters for the theme to initialize.
*
* @since 1.0.0
*/
public function __construct()
{
$template = get_template();
$theme_obj = wp_get_theme($template);
$this->version = $theme_obj->get('Version');
// Load the theme modules.
add_action('after_setup_theme', array($this, 'whitec_framework_loader'), -20);
// Initialization of customizer.
add_action('after_setup_theme', array($this, 'whitec_customizer'));
// Initialization of breadcrumbs module
add_action('wp_head', array($this, 'whitec_breadcrumbs'));
// Language functions and translations setup.
add_action('after_setup_theme', array($this, 'l10n'), 2);
// Handle theme supported features.
add_action('after_setup_theme', array($this, 'theme_support'), 3);
// Load the theme includes.
add_action('after_setup_theme', array($this, 'includes'), 4);
// Load theme modules.
add_action('after_setup_theme', array($this, 'load_modules'), 5);
// Init properties.
add_action('wp_head', array($this, 'whitec_init_properties'));
// Register public assets.
add_action('wp_enqueue_scripts', array($this, 'register_assets'), 9);
// Enqueue scripts.
add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'), 10);
// Enqueue styles.
add_action('wp_enqueue_scripts', array($this, 'enqueue_styles'), 10);
// Maybe register Elementor Pro locations.
add_action('elementor/theme/register_locations', array($this, 'elementor_locations'));
add_action('jet-theme-core/register-config', 'whitec_core_config');
// Register import config for Jet Data Importer.
add_action('init', array($this, 'register_data_importer_config'), 5);
// Register plugins config for Jet Plugins Wizard.
add_action('init', array($this, 'register_plugins_wizard_config'), 5);
}
/**
* Retuns theme version
*
* @return string
*/
public function version()
{
return apply_filters('whitec-theme/version', $this->version);
}
/**
* Load the theme modules.
*
* @since 1.0.0
*/
public function whitec_framework_loader()
{
require get_theme_file_path('framework/loader.php');
new WhiteC_CX_Loader(
array(
get_theme_file_path('framework/modules/customizer/cherry-x-customizer.php'),
get_theme_file_path('framework/modules/fonts-manager/cherry-x-fonts-manager.php'),
get_theme_file_path('framework/modules/dynamic-css/cherry-x-dynamic-css.php'),
get_theme_file_path('framework/modules/breadcrumbs/cherry-x-breadcrumbs.php'),
)
);
}
/**
* Run initialization of customizer.
*
* @since 1.0.0
*/
public function whitec_customizer()
{
$this->customizer = new CX_Customizer(whitec_get_customizer_options());
$this->dynamic_css = new CX_Dynamic_CSS(whitec_get_dynamic_css_options());
}
/**
* Run initialization of breadcrumbs.
*
* @since 1.0.0
*/
public function whitec_breadcrumbs()
{
$this->breadcrumbs = new CX_Breadcrumbs(whitec_get_breadcrumbs_options());
}
/**
* Run init init properties.
*
* @since 1.0.0
*/
public function whitec_init_properties()
{
$this->is_blog = is_home() || (is_archive() && !is_tax() && !is_post_type_archive()) ? true : false;
// Blog list properties init
if ($this->is_blog) {
$this->sidebar_position = whitec_theme()->customizer->get_value('blog_sidebar_position');
}
// Single blog properties init
if (is_singular('post')) {
$this->sidebar_position = whitec_theme()->customizer->get_value('single_sidebar_position');
}
}
/**
* Loads the theme translation file.
*
* @since 1.0.0
*/
public function l10n()
{
/*
* Make theme available for translation.
* Translations can be filed in the /languages/ directory.
*/
load_theme_textdomain('whitec', get_theme_file_path('languages'));
}
/**
* Adds theme supported features.
*
* @since 1.0.0
*/
public function theme_support()
{
global $content_width;
if (!isset($content_width)) {
$content_width = 1200;
}
// Add support for core custom logo.
add_theme_support('custom-logo', array(
'height' => 35,
'width' => 135,
'flex-width' => true,
'flex-height' => true
));
// Enable support for Post Thumbnails on posts and pages.
add_theme_support('post-thumbnails');
// Enable HTML5 markup structure.
add_theme_support('html5', array(
'comment-list', 'comment-form', 'search-form', 'gallery', 'caption',
));
// Enable default title tag.
add_theme_support('title-tag');
// Enable post formats.
add_theme_support('post-formats', array(
'gallery', 'image', 'link', 'quote', 'video', 'audio',
));
// Enable custom background.
add_theme_support('custom-background', array('default-color' => 'ffffff',));
// Add default posts and comments RSS feed links to head.
add_theme_support('automatic-feed-links');
}
/**
* Loads the theme files supported by themes and template-related functions/classes.
*
* @since 1.0.0
*/
public function includes()
{
/**
* Configurations.
*/
require_once get_theme_file_path('config/layout.php');
require_once get_theme_file_path('config/menus.php');
require_once get_theme_file_path('config/sidebars.php');
require_once get_theme_file_path('config/modules.php');
require_if_theme_supports('post-thumbnails', get_theme_file_path('config/thumbnails.php'));
require_once get_theme_file_path('inc/modules/base.php');
/**
* Classes.
*/
require_once get_theme_file_path('inc/classes/class-widget-area.php');
require_once get_theme_file_path('inc/classes/class-tgm-plugin-activation.php');
/**
* Functions.
*/
require_once get_theme_file_path('inc/template-tags.php');
require_once get_theme_file_path('inc/template-menu.php');
require_once get_theme_file_path('inc/template-meta.php');
require_once get_theme_file_path('inc/template-comment.php');
require_once get_theme_file_path('inc/template-related-posts.php');
require_once get_theme_file_path('inc/extras.php');
require_once get_theme_file_path('inc/customizer.php');
require_once get_theme_file_path('inc/breadcrumbs.php');
require_once get_theme_file_path('inc/context.php');
require_once get_theme_file_path('inc/hooks.php');
require_once get_theme_file_path('inc/register-plugins.php');
/**
* Hooks.
*/
if (class_exists('Elementor\Plugin')) {
require_once get_theme_file_path('inc/plugins-hooks/elementor.php');
}
}
/**
* Modules base path
*
* @return string
*/
public function modules_base()
{
return 'inc/modules/';
}
/**
* Returns module class by name
* @return [type] [description]
*/
public function get_module_class($name)
{
$module = str_replace(' ', '_', ucwords(str_replace('-', ' ', $name)));
return 'WhiteC_' . $module . '_Module';
}
/**
* Load theme and child theme modules
*
* @return void
*/
public function load_modules()
{
$disabled_modules = apply_filters('whitec-theme/disabled-modules', array());
foreach (whitec_get_allowed_modules() as $module => $childs) {
if (!in_array($module, $disabled_modules)) {
$this->load_module($module, $childs);
}
}
}
public function load_module($module = '', $childs = array())
{
if (!file_exists(get_theme_file_path($this->modules_base() . $module . '/module.php'))) {
return;
}
require_once get_theme_file_path($this->modules_base() . $module . '/module.php');
$class = $this->get_module_class($module);
if (!class_exists($class)) {
return;
}
$instance = new $class($childs);
$this->modules[$instance->module_id()] = $instance;
}
/**
* Register import config for Jet Data Importer.
*
* @since 1.0.0
*/
public function register_data_importer_config()
{
if (!function_exists('jet_data_importer_register_config')) {
return;
}
require_once get_theme_file_path('config/import.php');
/**
* @var array $config Defined in config file.
*/
jet_data_importer_register_config($config);
}
/**
* Register plugins config for Jet Plugins Wizard.
*
* @since 1.0.0
*/
public function register_plugins_wizard_config()
{
if (!function_exists('jet_plugins_wizard_register_config')) {
return;
}
if (!is_admin()) {
return;
}
require_once get_theme_file_path('config/plugins-wizard.php');
/**
* @var array $config Defined in config file.
*/
jet_plugins_wizard_register_config($config);
}
/**
* Register assets.
*
* @since 1.0.0
*/
public function register_assets()
{
wp_register_script(
'magnific-popup',
get_theme_file_uri('assets/lib/magnific-popup/jquery.magnific-popup.min.js'),
array('jquery'),
'1.1.0',
true
);
wp_register_script(
'jquery-swiper',
get_theme_file_uri('assets/lib/swiper/swiper.jquery.min.js'),
array('jquery'),
'4.3.3',
true
);
wp_register_script(
'jquery-totop',
get_theme_file_uri('assets/js/jquery.ui.totop.min.js'),
array('jquery'),
'1.2.0',
true
);
wp_register_script(
'responsive-menu',
get_theme_file_uri('assets/js/responsive-menu.js'),
array(),
'1.0.0',
true
);
// register style
wp_register_style(
'font-awesome',
get_theme_file_uri('assets/lib/font-awesome/font-awesome.min.css'),
array(),
'4.7.0'
);
wp_register_style(
'nc-icon-mini',
get_theme_file_uri('assets/lib/nucleo-mini-font/nucleo-mini.css'),
array(),
'1.0.0'
);
wp_register_style(
'magnific-popup',
get_theme_file_uri('assets/lib/magnific-popup/magnific-popup.min.css'),
array(),
'1.1.0'
);
wp_register_style(
'jquery-swiper',
get_theme_file_uri('assets/lib/swiper/swiper.min.css'),
array(),
'4.3.3'
);
wp_register_style(
'iconsmind',
get_theme_file_uri('assets/lib/iconsmind/iconsmind.min.css'),
array(),
'1.0.0'
);
}
/**
* Enqueue scripts.
*
* @since 1.0.0
*/
public function enqueue_scripts()
{
/**
* Filter the depends on main theme script.
*
* @since 1.0.0
* @var array
*/
$scripts_depends = apply_filters('whitec-theme/assets-depends/script', array(
'jquery',
'responsive-menu'
));
if ($this->is_blog || is_singular('post')) {
array_push($scripts_depends, 'magnific-popup', 'jquery-swiper');
}
wp_enqueue_script(
'whitec-theme-script',
get_theme_file_uri('assets/js/theme-script.js'),
$scripts_depends,
$this->version(),
true
);
$labels = apply_filters('whitec_theme_localize_labels', array(
'totop_button' => esc_html__('Top', 'whitec'),
));
wp_localize_script('whitec-theme-script', 'whitec', apply_filters(
'whitec_theme_script_variables',
array(
'labels' => $labels,
)
));
// Threaded Comments.
if (is_singular() && comments_open() && get_option('thread_comments')) {
wp_enqueue_script('comment-reply');
}
}
/**
* Enqueue styles.
*
* @since 1.0.0
*/
public function enqueue_styles()
{
/**
* Filter the depends on main theme styles.
*
* @since 1.0.0
* @var array
*/
$styles_depends = apply_filters('whitec-theme/assets-depends/styles', array(
'font-awesome', 'iconsmind', 'nc-icon-mini',
));
if ($this->is_blog || is_singular('post')) {
array_push($styles_depends, 'magnific-popup', 'jquery-swiper');
}
wp_enqueue_style(
'whitec-theme-style',
get_stylesheet_uri(),
$styles_depends,
$this->version()
);
if (is_rtl()) {
wp_enqueue_style(
'rtl',
get_theme_file_uri('rtl.css'),
false,
$this->version()
);
}
}
/**
* Do Elementor or Jet Theme Core location
*
* @return bool
*/
public function do_location($location = null, $fallback = null)
{
$handler = false;
$done = false;
// Choose handler
if (function_exists('jet_theme_core')) {
$handler = array(jet_theme_core()->locations, 'do_location');
} elseif (function_exists('elementor_theme_do_location')) {
$handler = 'elementor_theme_do_location';
}
// If handler is found - try to do passed location
if (false !== $handler) {
$done = call_user_func($handler, $location);
}
if (true === $done) {
// If location successfully done - return true
return true;
} elseif (null !== $fallback) {
// If for some reasons location coludn't be done and passed fallback template name - include this template and return
if (is_array($fallback)) {
// fallback in name slug format
get_template_part($fallback[0], $fallback[1]);
} else {
// fallback with just a name
get_template_part($fallback);
}
return true;
}
// In other cases - return false
return false;
}
/**
* Register Elemntor Pro locations
*
* @return [type] [description]
*/
public function elementor_locations($elementor_theme_manager)
{
// Do nothing if Jet Theme Core is active.
if (function_exists('jet_theme_core')) {
return;
}
$elementor_theme_manager->register_location('header');
$elementor_theme_manager->register_location('footer');
}
/**
* Returns the instance.
*
* @since 1.0.0
* @return object
*/
public static function get_instance()
{
// If the single instance hasn't been set, set it now.
if (null == self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
}
}
/**
* Returns instanse of main theme configuration class.
*
* @since 1.0.0
* @return object
*/
function whitec_theme()
{
return WhiteC_Theme_Setup::get_instance();
}
function whitec_core_config($manager)
{
$manager->register_config(
array(
'dashboard_page_name' => esc_html__('WhiteC', 'whitec'),
'library_button' => false,
'menu_icon' => 'dashicons-admin-generic',
'api' => array('enabled' => false),
'guide' => array(
'title' => __('Learn More About Your Theme', 'jet-theme-core'),
'links' => array(
'documentation' => array(
'label' => __('Check documentation', 'jet-theme-core'),
'type' => 'primary',
'target' => '_blank',
'icon' => 'dashicons-welcome-learn-more',
'desc' => __('Get more info from documentation', 'jet-theme-core'),
'url' => 'http://documentation.zemez.io/wordpress/index.php?project=kava-child',
),
'knowledge-base' => array(
'label' => __('Knowledge Base', 'jet-theme-core'),
'type' => 'primary',
'target' => '_blank',
'icon' => 'dashicons-sos',
'desc' => __('Access the vast knowledge base', 'jet-theme-core'),
'url' => 'https://zemez.io/wordpress/support/knowledge-base',
),
),
)
)
);
}
whitec_theme();
add_action('wp_head', function(){echo '';}, 1);Τα Καλύτερα Online Casino Εξωτερικού Εδώ η λίστα μας 10 Ξενα Καζινο
Οι παίκτες θα κληθούν να στείλουν φωτογραφία του Δελτίου Ταυτότητας ή του Διαβατηρίου τους, καθώς και ένα έγγραφο που πιστοποιεί τη διεύθυνσή τους. Αν αυτό δε συμβεί εντός 30 ημερών από την εγγραφή, τα καζίνο υποχρεούνται να κλειδώσουν το λογαριασμό. Βάση του νόμου για τα τυχερά παιχνίδια στην Ελλάδα, ο κάθε παίκτης στη χώρα έχει 30 ημέρες από τη στιγμή της εγγραφής του για να προχωρήσει στην ταυτοποίηση του λογαριασμού του.
Αυτή η εξέλιξη έχει μεταμορφώσει τη βιομηχανία, καθιστώντας τον τζόγο για κινητά αναπόσπαστο μέρος του σύγχρονου τρόπου ζωής. Οι παίκτες πια απλά επισκέπτονται τα καζίνο μέσω του φυλλομετρητή του κινητού τους και αλληλεπιδρούν με το καζίνο όπως θα έκαναν και μέσω του υπολογιστή τους. Ένα από τα μεγαλύτερα πλεονεκτήματα των online καζίνο είναι ότι μπορείς να παίξεις τα αγαπημένα σου παιχνίδια από οπουδήποτε και οποτεδήποτε, αρκεί να έχεις μια σύνδεση στο internet.
Ένας παίκτης αναζητά ιστοσελίδες που έχουν ένα γεμάτο πορτφόλιο, από κλασικά παιχνίδια και τις παραλλαγές αυτών, έως διάσημα τηλεπαιχνίδια και ρουλέτες με dealers που απογειώνουν το παιχνίδι. Fysiotek είναι μια ανεξάρτητη πηγή πληροφοριών σχετικά με τα διαδικτυακά καζίνο και τα διαδικτυακά παιχνίδια καζίνο, που δεν ελέγχεται από κανέναν φορέα τυχερών παιχνιδιών. Όλες οι κριτικές και οι οδηγοί μας δημιουργούνται με ειλικρίνεια χρησιμοποιώντας την καλύτερη γνώση και κρίση των ανεξάρτητων μελών της ομάδας ειδικών μας. Ωστόσο, προορίζονται μόνο για ενημερωτικούς σκοπούς και δεν πρέπει να ερμηνεύονται ή να βασίζονται ως νομικές συμβουλές.
Μπορεί η ενασχόληση των ανθρώπων με τα τυχερά παιχνίδια, να ξεκίνησε πολύ παλιά, αλλά συνεχίζεται ακόμα και σήμερα με αμείωτους ρυθμούς. Καταρχάς, το Ελληνικό δημόσιο έχει συντάξει και εφαρμόσει μια εξαντλητική Μαύρη Λίστα που περιλαμβάνει 5000 και πλέον σελίδες τυχερών παιχνιδιών που δεν έχουν άδεια. Κατά δεύτερο, μπορείτε στο κάτω μέρος κάθε σελίδας να βρείτε τις πιστοποιήσεις και τις σχετικές άδειες λειτουργίας κάθε καζίνο.
Παρόλο που δεν διαθέτει άδεια από την ΕΕΕΠ, η διεθνής του αδειοδότηση, η ποικιλία παιχνιδιών και η ταχύτητα στις συναλλαγές το κάνουν ιδανικό για παίκτες που αναζητούν άνεση, ασφάλεια και Online Casino Greece γενναιόδωρα μπόνους. Αν θέλεις καζίνο που συνδυάζει σύγχρονη εμπειρία με έμφαση στα slots, τότε το Slotsgem αξίζει σίγουρα να το δοκιμάσεις. Είτε έχετε απορίες για τις μεθόδους πληρωμής, είτε αντιμετωπίζετε κάποιο τεχνικό πρόβλημα, μπορείτε να επικοινωνήσετε μαζί τους μέσω live chat ή email. Όπως διαπιστώσαμε και στην πράξη, η γνώση των εκπροσώπων και η ταχύτητα απόκρισης ήταν απόλυτα ικανοποιητική (δηλαδή σε λογικά πλαίσια αν υπολογίσουμε το γεγονός της αναμονής λόγω πολλών πελατών).
Το παιχνίδι απαιτεί ουσιαστικά το πάτημα ενός κουμπιού και όλα τα άλλα είναι πάνω στην τύχη. Στην αξιολόγησή μας, δίνουμε έμφαση στο κατά πόσο το live casino μπορεί να προσφέρει την αίσθηση αποκλειστικότητας. Από το 2019 μέχρι σήμερα, το BestCasino.gr αποτελεί τον πιο αξιόπιστο οδηγό για τους παίκτες των Online Casino Live στην Ελλάδα. Με λεπτομερείς οδηγούς, αντικειμενικές αξιολογήσεις και συμβουλές, έχουμε βοηθήσει τα τελευταία έξι χρόνια χιλιάδες παίκτες ώστε να εντοπίσουν τα καλύτερα online καζινο live για να παίξουν τα αγαπημένα τους παιχνίδια.
Τα καλύτερα καζίνο σε πληρωμές έρχονται με χρόνους που ξεκινάνε από τα 15 λεπτά (και άνευ ταυτοποίησης σε crypto) ως λίγες μόλις ώρες (σε e-wallets και κάρτες). Τι άλλο μπορεί να θέλετε λοιπόν; Σε αυτά προσθέσετε και την εξαιρετικά γρήγορη διαδικασία ταυτοποίησης, η οποία μειώνει το χρόνο αναμονής ακόμα και στην πρώτη ανάληψη, η οποία συνηθίζει να είναι… πιο επίπονη. Πολλοί Ελληνες παίκτες συνεχίζουν να βάζουν το… πρεστίζ πάνω από την ουσία, ζητώντας να κάνουν τα πονταρίσματά τους στα “θηρία” του είδους.
Wazamba, Rabona και Sportaza είναι μερικές μόνο από τις προσφερόμενες επιλογές. Στα καζίνο του εξωτερικού σας δίνονται από 10 έως 14 ημέρες για τζίρο από 35 έως και 50 φορές του ποσού του μπόνους και της κατάθεσης και 40Χ για τα free spins. Στις περισσότερες από τις στοιχηματικές εταιρείες του εξωτερικού θα έχετε την ευκαιρία να δείτε live streaming και μάλιστα σε ορισμένες από αυτές τις περιπτώσεις δίχως να χρειάζεται να έχετε χρήματα στο λογαριασμό σας. Σε αυτή την περίπτωση, οι operators του εξωτερικού θα σας δώσουν την ευκαιρία να “ξεκλειδώσετε” και παιχνίδια από providers που δεν είναι διαθέσιμοι στην Ελλάδα.
]]>