ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

theme-options.php (16107B)


      1 <?php
      2 
      3 add_action('customize_register', 'materialis_customize_register', 10, 1);
      4 add_action('customize_register', 'materialis_customize_reorganize', PHP_INT_MAX, 1);
      5 
      6 require_once get_template_directory() . "/inc/general-options.php";
      7 require_once get_template_directory() . "/inc/header-options.php";
      8 require_once get_template_directory() . "/inc/footer-options.php";
      9 require_once get_template_directory() . "/inc/blog-options.php";
     10 
     11 function materialis_add_options_group($options)
     12 {
     13     foreach ($options as $option => $args) {
     14         do_action_ref_array($option . "_before", $args);
     15         call_user_func_array($option, $args);
     16         do_action_ref_array($option . "_after", $args);
     17     }
     18 }
     19 
     20 function materialis_customize_register($wp_customize)
     21 {
     22     /** @var WP_Customize_Manager $wp_customize */
     23     $wp_customize->get_setting('background_color')->transport = 'refresh';
     24 
     25     materialis_customize_register_controls($wp_customize);
     26 
     27     do_action('materialis_customize_register', $wp_customize);
     28 }
     29 
     30 function materialis_add_sections($wp_customize)
     31 {
     32 
     33     /** @var WP_Customize_Manager $wp_customize */
     34     $wp_customize->add_section('header_layout', array(
     35         'title'    => esc_html__('Front Page Header Designs', 'materialis'),
     36         'priority' => 1,
     37     ));
     38 
     39     $wp_customize->add_panel('navigation_panel',
     40         array(
     41             'priority'       => 2,
     42             'capability'     => 'edit_theme_options',
     43             'theme_supports' => '',
     44             'title'          => esc_html__('Navigation', 'materialis'),
     45             'description'    => '',
     46         )
     47     );
     48 
     49     $wp_customize->add_panel('header',
     50         array(
     51             'priority'       => 2,
     52             'capability'     => 'edit_theme_options',
     53             'theme_supports' => '',
     54             'title'          => esc_html__('Hero', 'materialis'),
     55             'description'    => '',
     56         )
     57     );
     58 
     59     $wp_customize->add_section(
     60         new \Materialis\FrontPageSection(
     61             $wp_customize,
     62             'page_content',
     63             array(
     64                 'priority' => 2,
     65                 'title'    => esc_html__('Front Page content', 'materialis'),
     66             )
     67         )
     68     );
     69 
     70     $wp_customize->add_section('footer_settings', array(
     71         'title'    => esc_html__('Footer Settings', 'materialis'),
     72         'priority' => 3,
     73     ));
     74 
     75     if (!apply_filters('materialis_is_companion_installed', false)) {
     76         $wp_customize->add_section('layout_settings', array(
     77             'title'    => esc_html__('Layout', 'materialis'),
     78             'priority' => 4,
     79         ));
     80     }
     81 
     82     $wp_customize->add_panel('general_settings', array(
     83         'title'    => esc_html__('General Settings', 'materialis'),
     84         'priority' => 5,
     85     ));
     86     $wp_customize->add_section('blog_settings', array(
     87         'title'    => esc_html__('Blog Settings', 'materialis'),
     88 
     89         'priority' => 5,
     90     ));
     91 
     92     do_action('materialis_add_sections', $wp_customize);
     93 
     94     $sections = array(
     95 
     96         'header_background_chooser' => array(
     97             'title' => esc_html__('Front Page Hero', 'materialis'),
     98             'panel' => 'header',
     99         ),
    100 
    101         'header_content'            => array(
    102             'title' => esc_html__('Front Page Hero Content', 'materialis'),
    103             'panel' => 'header',
    104         ),
    105 
    106         'header_image'              => array(
    107             'title' => esc_html__('Inner Pages Hero', 'materialis'),
    108             'panel' => 'header',
    109         ),
    110 
    111         'page_settings'             => array(
    112             'title' => esc_html__('Page Settings', 'materialis'),
    113             'panel' => 'general_settings',
    114         ),
    115 
    116     );
    117 
    118     foreach ($sections as $name => $value) {
    119         $wp_customize->add_section($name, $value);
    120     }
    121 
    122 }
    123 
    124 function materialis_register_kirki_control_types($controls)
    125 {
    126     $controls['sectionseparator']            = '\\Materialis\\Kirki_Controls_Separator_Control';
    127     $controls['ope-info']                    = '\\Materialis\\Info_Control';
    128     $controls['ope-info-pro']                = '\\Materialis\\Info_PRO_Control';
    129     $controls['web-gradients']               = "\\Materialis\\WebGradientsControl";
    130     $controls['sidebar-button-group']        = "\\Materialis\\SidebarGroupButtonControl";
    131     $controls['radio-html']                  = '\\Materialis\\Kirki_Controls_Radio_HTML_Control';
    132     $controls['material-icons-icon-control'] = "\\Materialis\\MaterialIconsIconControl";
    133     $controls['gradient-control']            = "\\Materialis\\GradientControl";
    134 
    135     return $controls;
    136 }
    137 
    138 function materialis_customize_register_controls($wp_customize)
    139 {
    140     /** @var WP_Customize_Manager $wp_customize */
    141     $wp_customize->register_control_type('\\Materialis\\Kirki_Controls_Separator_Control');
    142     $wp_customize->register_control_type("\\Materialis\\WebGradientsControl");
    143     $wp_customize->register_control_type("\\Materialis\\SidebarGroupButtonControl");
    144     $wp_customize->register_control_type('\Materialis\Kirki_Controls_Radio_HTML_Control');
    145     $wp_customize->register_control_type('\\Materialis\MaterialIconsIconControl');
    146     $wp_customize->register_control_type('Materialis\\GradientControl');
    147 
    148     // Register our custom control with Kirki
    149     add_filter('kirki/control_types', 'materialis_register_kirki_control_types');
    150 
    151     require_once get_template_directory() . "/customizer/customizer-controls.php";
    152     require_once get_template_directory() . "/customizer/WebGradientsControl.php";
    153     require_once get_template_directory() . "/customizer/SidebarGroupButtonControl.php";
    154     require_once get_template_directory() . "/customizer/GradientControl.php";
    155 
    156     materialis_add_sections($wp_customize);
    157     materialis_add_general_settings($wp_customize);
    158 }
    159 
    160 function materialis_add_general_settings($wp_customize)
    161 {
    162 
    163     /* logo max height */
    164 
    165     materialis_add_kirki_field(array(
    166         'type'      => 'number',
    167         'label'     => esc_html__('Logo Max Height (px)', 'materialis'),
    168         'settings'  => 'logo_max_height',
    169         'section'   => 'title_tagline',
    170         'default'   => 70,
    171         'transport' => 'postMessage',
    172         'priority'  => 8,
    173     ));
    174 
    175     $wp_customize->add_setting('bold_logo', array(
    176         'default'           => true,
    177         'sanitize_callback' => 'materialis_sanitize_boolean',
    178     ));
    179     $wp_customize->add_control('bold_logo', array(
    180         'label'    => esc_html__('Alternate text logo words', 'materialis'),
    181         'section'  => 'title_tagline',
    182         'priority' => 9,
    183         'type'     => 'checkbox',
    184     ));
    185 
    186     $wp_customize->add_setting('logo_dark', array(
    187         'default'           => false,
    188         'sanitize_callback' => 'absint',
    189     ));
    190 
    191     $custom_logo_args = get_theme_support('custom-logo');
    192     $wp_customize->add_control(new WP_Customize_Cropped_Image_Control($wp_customize, 'logo_dark', array(
    193         'label'         => esc_html__('Dark Logo', 'materialis'),
    194         'section'       => 'title_tagline',
    195         'priority'      => 9,
    196         'height'        => $custom_logo_args[0]['height'],
    197         'width'         => $custom_logo_args[0]['width'],
    198         'flex_height'   => $custom_logo_args[0]['flex-height'],
    199         'flex_width'    => $custom_logo_args[0]['flex-width'],
    200         'button_labels' => array(
    201             'select'       => __('Select logo', 'materialis'),
    202             'change'       => __('Change logo', 'materialis'),
    203             'remove'       => __('Remove', 'materialis'),
    204             'default'      => __('Default', 'materialis'),
    205             'placeholder'  => __('No logo selected', 'materialis'),
    206             'frame_title'  => __('Select logo', 'materialis'),
    207             'frame_button' => __('Choose logo', 'materialis'),
    208         ),
    209     )));
    210 
    211     // remove partial refresh to display the site name properly in customizer
    212     $wp_customize->selective_refresh->remove_partial('custom_logo');
    213     $wp_customize->get_setting('custom_logo')->transport = 'refresh';
    214 }
    215 
    216 function materialis_customize_reorganize($wp_customize)
    217 {
    218     $generalSettingsSections = array(
    219         'title_tagline',
    220         'colors',
    221         'layout_settings',
    222         'general_site_style',
    223         'background_image',
    224         'static_front_page',
    225         'custom_css',
    226         'user_custom_widgets_areas',
    227 //        'blog_settings',
    228     );
    229 
    230     $priority = 1;
    231     foreach ($generalSettingsSections as $section_id) {
    232         $section = $wp_customize->get_section($section_id);
    233 
    234         if ($section) {
    235             $section->panel    = 'general_settings';
    236             $section->priority = $priority;
    237             $priority++;
    238         }
    239 
    240     }
    241 }
    242 
    243 function materialis_customize_controls_enqueue_scripts()
    244 {
    245 
    246     $textDomain = materialis_get_text_domain();
    247 
    248     $cssUrl = get_template_directory_uri() . "/customizer/";
    249     $jsUrl  = get_template_directory_uri() . "/customizer/js/";
    250 
    251     wp_enqueue_style('thickbox');
    252     wp_enqueue_script('thickbox');
    253 
    254     wp_enqueue_style($textDomain . '-webgradients', get_template_directory_uri() . '/assets/css/webgradients.css');
    255 
    256     if (apply_filters('materialis_load_bundled_version', true)) {
    257         wp_enqueue_script($textDomain . '-customize', $jsUrl . "/customize.bundle.min.js", array('jquery', 'customize-base', 'customize-controls', 'media-views'), true);
    258         wp_enqueue_style($textDomain . '-customizer-base', $cssUrl . '/customizer.bundle.min.css');
    259     } else {
    260 		wp_enqueue_style($textDomain . '-customizer-base', $cssUrl . '/customizer.css');
    261         wp_enqueue_script($textDomain . '-customize', $jsUrl . "/customize.js", array('jquery', 'customize-base', 'customize-controls'), true);
    262     }
    263 
    264     $settings = array(
    265         'stylesheetURL' => get_template_directory_uri(),
    266         'templateURL'   => get_template_directory_uri(),
    267         'includesURL'   => includes_url(),
    268         'l10n'          => array(
    269             'closePanelLabel'     => esc_attr__('Close Panel', 'materialis'),
    270             'chooseImagesLabel'   => esc_attr__('Choose Images', 'materialis'),
    271             'chooseGradientLabel' => esc_attr__("Web Gradients", 'materialis'),
    272             'chooseMDILabel'      => esc_attr__("Material Icons", 'materialis'),
    273             'selectGradient'      => esc_attr__("Select Gradient", 'materialis'),
    274             'deselect'            => esc_attr__("Deselect", 'materialis'),
    275             'changeImageLabel'    => esc_attr__('Change image', 'materialis'),
    276         ),
    277     );
    278 
    279     wp_localize_script('customize-base', 'materialis_customize_settings', $settings);
    280 }
    281 
    282 add_action('customize_controls_enqueue_scripts', 'materialis_customize_controls_enqueue_scripts');
    283 
    284 function materialis_customize_preview_init()
    285 {
    286     $textDomain = materialis_get_text_domain();
    287 
    288     $jsUrl = get_template_directory_uri() . "/customizer/js/";
    289     wp_enqueue_script($textDomain . '-customize-preview', $jsUrl . "/customize-preview.js", array('jquery', 'customize-preview'), '', true);
    290 }
    291 
    292 add_action('customize_preview_init', 'materialis_customize_preview_init');
    293 
    294 
    295 function materialis_get_gradients_classes()
    296 {
    297     return apply_filters("materialis_webgradients_list", array(
    298         "easter_blueberry",
    299         "plum_plate",
    300         "ripe_malinka",
    301         "new_life",
    302         "sunny_morning",
    303     ));
    304 }
    305 
    306 function materialis_get_parsed_gradients()
    307 {
    308     return apply_filters("materialis_parsed_webgradients_list", array(
    309 
    310         'easter_blueberry' => array(
    311             'angle'  => '180',
    312             'colors' => array(
    313                 0 => array(
    314                     'color'    => 'rgba(101,78,163, 0.8)',
    315                     'position' => '0%',
    316                 ),
    317                 1 => array(
    318                     'color'    => 'rgba(191,105,253,0.8)',
    319                     'position' => '100%',
    320                 ),
    321             ),
    322         ),
    323 
    324         'plum_plate' => array(
    325             'angle'  => '135',
    326             'colors' => array(
    327                 0 => array(
    328                     'color'    => 'rgba(102,126,234, 0.8)',
    329                     'position' => '0%',
    330                 ),
    331                 1 => array(
    332                     'color'    => 'rgba(118,75,162,0.8)',
    333                     'position' => '100%',
    334                 ),
    335             ),
    336         ),
    337 
    338         'ripe_malinka' => array(
    339             'angle'    => '120',
    340             'colors'   => array(
    341                 0 => array(
    342                     'color'    => 'rgba(240,147,251,0.8)',
    343                     'position' => '0%',
    344                 ),
    345                 1 => array(
    346                     'color'    => 'rgba(245,87,108,0.8)',
    347                     'position' => '100%',
    348                 ),
    349             ),
    350         ),
    351 
    352         'new_life'   => array(
    353             'angle'  => '90',
    354             'colors' => array(
    355                 0 => array(
    356                     'color'    => 'rgba(67,233,123,0.8)',
    357                     'position' => '0%',
    358                 ),
    359                 1 => array(
    360                     'color'    => 'rgba(56,249,215,0.8)',
    361                     'position' => '100%',
    362                 ),
    363             ),
    364         ),
    365 
    366         'sunny_morning' => array(
    367             'angle'     => '120',
    368             'colors'    => array(
    369                 0 => array(
    370                     'color'    => 'rgba(246,211,101,0.8)',
    371                     'position' => '0%',
    372                 ),
    373                 1 => array(
    374                     'color'    => 'rgba(253,160,133,0.8)',
    375                     'position' => '100%',
    376                 ),
    377             ),
    378         ),
    379 
    380     ));
    381 }
    382 
    383 function materialis_wp_ajax_materialis_webgradients_list()
    384 {
    385     $result           = array();
    386     $webgradients     = materialis_get_gradients_classes();
    387     $parsed_gradients = materialis_get_parsed_gradients();
    388 
    389     foreach ($webgradients as $icon) {
    390         $parsed   = isset($parsed_gradients[$icon]) ? $parsed_gradients[$icon] : false;
    391         $title    = str_replace('_', ' ', $icon);
    392         $result[] = array(
    393             'id'       => $icon,
    394             'gradient' => $icon,
    395             "title"    => $title,
    396             'mime'     => "web-gradient/class",
    397             'sizes'    => null,
    398             'parsed'   => $parsed,
    399         );
    400     }
    401 
    402 
    403     $result = apply_filters("materialis_wp_ajax_webgradients_list", $result);
    404 
    405     echo json_encode($result);
    406 
    407     exit;
    408 }
    409 
    410 add_action('wp_ajax_materialis_webgradients_list', 'materialis_wp_ajax_materialis_webgradients_list');
    411 
    412 function materialis_wp_ajax_materialis_list_mdi()
    413 {
    414 
    415     $result = array();
    416     $icons  = (require get_template_directory() . "/customizer/mdi-icons-list.php");
    417     foreach ($icons as $icon) {
    418         $title    = str_replace('-', ' ', str_replace('mdi-', '', $icon));
    419         $result[] = array(
    420             'id'    => $icon,
    421             'mdi'   => $icon,
    422             "title" => $title,
    423             'mime'  => "fa-icon/font",
    424             'sizes' => null,
    425         );
    426     }
    427 
    428     echo json_encode($result);
    429     exit;
    430 
    431 }
    432 
    433 add_action('wp_ajax_materialis_list_mdi', 'materialis_wp_ajax_materialis_list_mdi');
    434 
    435 function materialis_body_class($classes)
    436 {
    437     $body_class = materialis_is_front_page(true) ? "materialis-front-page" : "materialis-inner-page";
    438     $body_class = array($body_class);
    439 
    440     $classes = array_merge($classes, $body_class);
    441 
    442     if (in_array('materialis-front-page', $classes)) {
    443         $classes[] = 'materialis-content-padding';
    444 
    445     }
    446 
    447     return $classes;
    448 }
    449 
    450 add_filter('body_class', 'materialis_body_class');
    451 
    452 
    453 // code from rest_sanitize_boolean
    454 function materialis_sanitize_boolean($value)
    455 {
    456     // String values are translated to `true`; make sure 'false' is false.
    457     if (is_string($value)) {
    458         $value = strtolower($value);
    459         if (in_array($value, array('false', '0'), true)) {
    460             $value = false;
    461         }
    462     }
    463 
    464     // Everything else will map nicely to boolean.
    465     return (boolean)$value;
    466 }
    467 
    468 
    469 /**
    470  * @param      $control
    471  * @param bool $print
    472  *
    473  * @return bool|string
    474  */
    475 function materialis_customizer_focus_control_attr($control, $print = true)
    476 {
    477     if ( ! materialis_is_customize_preview()) {
    478         return false;
    479     }
    480 
    481     $control = esc_attr($control);
    482     $toPrint = "data-type=\"group\" data-focus-control='{$control}'";
    483 
    484     if ($print) {
    485         echo $toPrint;
    486     }
    487 
    488     return $toPrint;
    489 }