ru-se.com

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

functions.php (18154B)


      1 <?php
      2 
      3 /** @var \Materialis\Companion $this */
      4 require_once $this->themeDataPath("/updates.php");
      5 require_once $this->themeDataPath("/custom-style.php");
      6 require_once $this->themeDataPath("/options/overlap.php");
      7 require_once $this->themeDataPath("/shortcodes/latest-news.php");
      8 
      9 
     10 add_filter('materialis_can_show_demo_content', "__return_true");
     11 add_filter('materialis_show_inactive_plugin_infos', "__return_false");
     12 
     13 
     14 add_filter('materialis_full_width_page', function ($value) {
     15 
     16     if (Materialis\Companion::instance()->isMaintainable()) {
     17         $value = true;
     18     }
     19 
     20     return $value;
     21 });
     22 
     23 add_filter('materialis_page_content_wrapper_class', function ($class) {
     24     if (materialis_is_front_page() || apply_filters('materialis_full_width_page', false)) {
     25         $class = array_diff($class, array('gridContainer'));
     26     }
     27 
     28     return $class;
     29 });
     30 
     31 
     32 add_filter('materialis_page_content_class', function ($class) {
     33     if (Materialis\Companion::instance()->isMaintainable()) {
     34         $class[] = 'no-padding';
     35         $class   = array_diff($class, array('gridContainer'));
     36     }
     37 
     38     return $class;
     39 });
     40 
     41 function materialis_companion_get_post_thumbnail()
     42 {
     43     ob_start();
     44     the_post_thumbnail('post-thumbnail', array('class' => 'blog-postimg'));
     45     $thumbnail = trim(ob_get_clean());
     46 
     47     if (empty($thumbnail)) {
     48         if (is_customize_preview() || 1) {
     49             return "<img src='https://placeholdit.imgix.net/~text?txtsize=38&bg=FF7F66&txtclr=FFFFFFe&w=400&h=250' class='blog-postimg'/>";
     50         } else {
     51             return $thumbnail;
     52         }
     53     }
     54 
     55     return $thumbnail;
     56 }
     57 
     58 
     59 function materialis_companion_blog_link()
     60 {
     61     if ('page' == get_option('show_on_front')) {
     62         if (get_option('page_for_posts')) {
     63             return esc_url(get_permalink(get_option('page_for_posts')));
     64         } else {
     65             return esc_url(home_url('/?post_type=post'));
     66         }
     67     } else {
     68         return esc_url(home_url('/'));
     69     }
     70 }
     71 
     72 
     73 function materialis_companion_contact_form($attrs = array())
     74 {
     75     $atts = shortcode_atts(
     76         array(
     77             'shortcode' => "",
     78         ),
     79         $attrs
     80     );
     81 
     82     $contact_shortcode = "";
     83     if ($atts['shortcode']) {
     84         $contact_shortcode = "[" . html_entity_decode(html_entity_decode($atts['shortcode'])) . "]";
     85     }
     86     ob_start();
     87 
     88     if ($contact_shortcode !== "") {
     89         echo do_shortcode($contact_shortcode);
     90     } else {
     91         echo '<p style="text-align:center;color:#ababab">' . __('Contact form will be displayed here. To activate it you have to set the "contact form shortcode" parameter in Customizer.',
     92                 'materialis-companion') . '</p>';
     93     }
     94 
     95     $content = ob_get_contents();
     96     ob_end_clean();
     97 
     98     return $content;
     99 }
    100 
    101 add_shortcode('materialis_contact_form', 'materialis_companion_contact_form');
    102 
    103 
    104 add_filter('cloudpress\template\page_content',
    105     function ($content) {
    106         $content = str_replace('[materialis_blog_link]', materialis_companion_blog_link(), $content);
    107         $content = str_replace('[tag_companion_uri]', \Materialis\Companion::instance()->themeDataURL(), $content);
    108 
    109         return $content;
    110     });
    111 
    112 
    113 add_filter('cloudpress\companion\cp_data',
    114     function ($data, $companion) {
    115         /** @var Materialis\Companion $companion */
    116 
    117 //        $sectionsJSON             = $companion->themeDataPath("/sections/sections.inc");
    118         $contentSections          = $companion->loadConfig($companion->themeDataPath("/sections/sections.php"));
    119         $data['data']['sections'] = $contentSections;
    120 
    121         $showPro = apply_filters('materialis_show_info_pro_messages', true);
    122 
    123         if ($showPro) {
    124             $proSections              = $companion->loadConfig($companion->themeDataPath("/sections/pro-only-sections.php"));
    125             $data['data']['sections'] = array_merge($contentSections, $proSections);
    126         }
    127 
    128 
    129         if (apply_filters('materialis_show_custom_section', false)) {
    130             $customSectionContentFile = $companion->themeDataPath("/assets/custom-section.html");
    131             $customSectionContent     = file_get_contents($customSectionContentFile);
    132 
    133             $data['data']['sections'][] = array(
    134                 "index"       => 1,
    135                 "id"          => "custom-section",
    136                 "elementId"   => "custom-section",
    137                 "type"        => "section-available",
    138                 "name"        => "Custom Section",
    139                 "content"     => $customSectionContent,
    140                 "thumb"       => "\/\/onepageexpress.com\/default-assets\/previews\/custom-section.png",
    141                 "preview"     => "\/\/onepageexpress.com\/default-assets\/previews\/custom-section.png",
    142                 "description" => "simple custom section",
    143                 "category"    => "custom",
    144                 "prepend"     => false,
    145                 "pro"         => true,
    146             );
    147         }
    148 
    149         return $data;
    150     }, 10, 2);
    151 
    152 add_action('cloudpress\template\load_assets',
    153     function ($companion) {
    154         $ver = $companion->version;
    155 
    156     if (apply_filters('materialis_load_bundled_version', true)) {
    157 
    158         /** @var \Materialis\Companion $companion */
    159         wp_enqueue_script('companion-bundle', $companion->themeDataURL('/assets/js/companion.bundle.min.js'), array(), $ver, true);
    160         wp_enqueue_style('companion-bundle', $companion->themeDataURL('/assets/css/companion.bundle.min.css'), array(), $ver);
    161 
    162         return;
    163     }
    164 
    165         wp_enqueue_style($companion->getThemeSlug() . '-common-css', $companion->themeDataURL('/assets/css/common.css'), array($companion->getThemeSlug() . '-style'), $ver);
    166         wp_enqueue_style('companion-page-css', $companion->themeDataURL('/sections/content.css'), array(), $ver);
    167 //        wp_enqueue_style('companion-cotent-swap-css', $companion->themeDataURL('/assets/css/HoverFX.css'), array(), $ver);
    168 
    169 //        wp_enqueue_script('companion-lib-hammer', $companion->themeDataURL('/assets/js/libs/hammer.js'), array(), $ver);
    170 //        wp_enqueue_script('companion-lib-modernizr', $companion->themeDataURL('/assets/js/libs/modernizr.js'), array(), $ver);
    171         wp_register_script('companion-' . $companion->getThemeSlug(), null, array('jquery',), $ver);
    172 
    173         if ( ! is_customize_preview()) {
    174             wp_enqueue_script('companion-cotent-swap', $companion->themeDataURL('/assets/js/HoverFX.js'), array('companion-' . $companion->getThemeSlug()), $ver);
    175         }
    176 
    177         wp_enqueue_script('companion-countup', $companion->themeDataURL('/assets/js/countup.js'), array('companion-' . $companion->getThemeSlug()), $ver);
    178         wp_enqueue_script('companion-progressbar', $companion->themeDataURL('/assets/js/progressbar.js'), array('companion-' . $companion->getThemeSlug()), $ver);
    179 
    180         wp_enqueue_script('companion-scripts', $companion->themeDataURL('/sections/scripts.js'), array('companion-' . $companion->getThemeSlug(), $companion->getThemeSlug() . '-theme'), $ver, true);
    181     });
    182 
    183 //add_action('cloudpress\customizer\preview_scripts',
    184 //    function ($customizer) {
    185 //        $ver = $customizer->companion()->version;
    186 //        wp_enqueue_script(
    187 //            $customizer->companion()->getThemeSlug() . "_preview-handle", $customizer->companion()->themeDataURL() . "/preview-handles.js", array('cp-customizer-preview'), $ver
    188 //        );
    189 //    });
    190 
    191 
    192 //add_action('cloudpress\customizer\global_scripts',
    193 //    function ($customizer) {
    194 //        $ver = $customizer->companion()->version;
    195 //        wp_enqueue_script(
    196 //            $customizer->companion()->getThemeSlug() . "_companion_theme_customizer",
    197 //            $customizer->companion()->themeDataURL() . "/customizer.js",
    198 //            array('cp-customizer-base'),
    199 //            $ver,
    200 //            true
    201 //        );
    202 //    });
    203 
    204 function materialis_companion_page_builder_get_css_value($value, $unit = false)
    205 {
    206     $noUnitValues = array('inherit', 'auto', 'initial');
    207     if ( ! in_array($value, $noUnitValues)) {
    208         return $value . $unit;
    209     }
    210 
    211     return $value;
    212 }
    213 
    214 
    215 function materialis_companion_get_front_page_content($companion)
    216 {
    217     $defaultSections = array(
    218         "overlappable-5-materialis",
    219         "about-4",
    220         "features-10-materialis",
    221         "content-7-materialis",
    222         "content-8-materialis",
    223         "portfolio-1-materialis",
    224         "testimonials-1-materialis",
    225         "cta-1-materialis",
    226         "team-8-materialis",
    227         "latest-news-1-materialis",
    228         "contact-1",
    229     );
    230 
    231     $alreadyColoredSections = array("contact-1", "cta-blue-section");
    232 
    233     /** @var Materialis\Companion $companion */
    234     $availableSections = $companion->loadConfig($companion->themeDataPath("/sections/sections.php"));
    235 
    236     $content = "";
    237 
    238     $colors     = array('#ffffff', '#f5fafd');
    239     $colorIndex = 0;
    240 
    241     foreach ($defaultSections as $ds) {
    242         foreach ($availableSections as $as) {
    243             if ($as['id'] == $ds) {
    244                 $_content = $as['content'];
    245 
    246                 if (in_array($ds, array("overlappable-5-materialis", "about-4"))) {
    247                     $colorIndex = 1;
    248                 }
    249 
    250                 if (strpos($_content, 'data-bg="transparent"') === false && ! in_array($ds, $alreadyColoredSections)) {
    251                     $_content   = preg_replace('/\<div/', '<div style="background-color:' . $colors[$colorIndex] . '" ', $_content, 1);
    252                     $colorIndex = $colorIndex ? 0 : 1;
    253                 } else {
    254                     $colorIndex = 0;
    255                 }
    256 
    257                 $_content = preg_replace('/\<div/', '<div id="' . $as['elementId'] . '" ', $_content, 1);
    258 
    259                 //gutenberg compatibility
    260                 $_content = '<!-- wp:extendstudio/materialis -->' . $_content . '<!-- /wp:extendstudio/materialis -->';
    261 
    262                 $content .= $_content;
    263                 break;
    264             }
    265         }
    266     }
    267 
    268     return $content;
    269 }
    270 
    271 add_filter('cloudpress\companion\front_page_content',
    272     function ($content, $companion) {
    273         $content = materialis_companion_get_front_page_content($companion);
    274 
    275         return \Materialis\Companion::filterDefault($content);
    276     }, 10, 2);
    277 
    278 
    279 add_filter('cloudpress\customizer\control\content_sections\data',
    280     function ($data) {
    281         $categories = array(
    282             'overlappable',
    283             'about',
    284             'features',
    285             'content',
    286             'cta',
    287             'counters',
    288             'FAQ',
    289             'gallery',
    290             'portfolio',
    291             'pricing',
    292             'promo',
    293             'testimonials',
    294             'clients',
    295             'team',
    296             'latest_news',
    297             'contact',
    298             'woocommerce',
    299         );
    300 
    301         $result = array();
    302 
    303         foreach ($categories as $cat) {
    304             if (isset($data[$cat])) {
    305                 $result[$cat] = $data[$cat];
    306                 unset($data[$cat]);
    307             }
    308         }
    309 
    310         $result = array_merge($result, $data);
    311 
    312         return $result;
    313     });
    314 
    315 add_filter('cloudpress\customizer\control\content_sections\category_label',
    316     function ($label, $category) {
    317 
    318         switch ($category) {
    319             case 'latest_news':
    320                 $label = __("Latest News", 'materialis-companion');
    321                 break;
    322 
    323             case 'cta':
    324                 $label = __("Call to action", 'materialis-companion');
    325                 break;
    326 
    327             default:
    328                 $label = __($label, 'materialis-companion');
    329                 break;
    330         }
    331 
    332         return $label;
    333     }, 10, 2);
    334 
    335 
    336 add_action('edit_form_after_title', 'materialis_companion_add_maintainable_filter');
    337 
    338 function materialis_companion_add_maintainable_filter($post)
    339 {
    340     $companion    = \Materialis\Companion::instance();
    341     $maintainable = $companion->isMaintainable($post->ID);
    342 
    343     add_editor_style(get_template_directory_uri() . "/style.css");
    344     add_editor_style(get_stylesheet_uri());
    345 
    346     add_editor_style($companion->themeDataURL('/assets/css/common.css'));
    347     add_editor_style($companion->themeDataURL('/sections/content.css'));
    348 //    add_editor_style($companion->themeDataURL('/assets/css/HoverFX.css'));
    349     add_editor_style(get_template_directory_uri() . '/assets/css/material-icons.min.css');
    350 
    351 
    352     if ($maintainable) {
    353         add_filter('tiny_mce_before_init', 'materialis_companion_maintainable_pages_tinymce_init');
    354     }
    355 }
    356 
    357 add_filter('body_class', function ($classes) {
    358     $companion    = \Materialis\Companion::instance();
    359     $maintainable = $companion->isMaintainable();
    360 
    361     if ($maintainable) {
    362         if (in_array('materialis-content-padding', $classes)) {
    363             $classes = array_diff($classes, array('materialis-content-padding'));
    364         }
    365 
    366         $classes[] = 'materialis-content-no-padding ';
    367         $classes[] = 'materialis-maintainable-in-customizer ';
    368     }
    369 
    370     return $classes;
    371 
    372 }, PHP_INT_MAX);
    373 
    374 
    375 function materialis_companion_maintainable_pages_tinymce_init($init)
    376 {
    377     $init['verify_html'] = false;
    378 
    379     // convert newline characters to BR
    380     $init['convert_newlines_to_brs'] = true;
    381 
    382     // don't remove redundant BR
    383     $init['remove_redundant_brs'] = false;
    384 
    385     $init['remove_linebreaks'] = false;
    386 
    387     $opts                            = '*[*]';
    388     $init['valid_elements']          = $opts;
    389     $init['extended_valid_elements'] = $opts;
    390     $init['forced_root_block']       = false;
    391     $init['paste_as_text']           = true;
    392 
    393     return $init;
    394 }
    395 
    396 
    397 //function materialis_companion_remove_page_attribute_support($post)
    398 //{
    399 //    $companion = \Materialis\Companion::instance();
    400 //    if ($post && $companion->isFrontPage($post->ID)) {
    401 ////        remove_meta_box('pageparentdiv', 'page', 'side');
    402 //
    403 //    }
    404 //}
    405 //
    406 //add_action('edit_form_after_editor', 'materialis_companion_remove_page_attribute_support');
    407 
    408 
    409 add_filter('materialis_header_presets', 'materialis_companion_header_presets_pro_info');
    410 
    411 function materialis_companion_header_presets_pro_info($presets)
    412 {
    413 
    414 
    415     if (apply_filters('materialis_show_info_pro_messages', true)) {
    416         $companion = \Materialis\Companion::instance();
    417 
    418         $proPresets = $companion->themeDataPath("/pro-only-presets.php");
    419         if (file_exists($proPresets)) {
    420             $proPresets = require_once($proPresets);
    421         } else {
    422             $proPresets = array();
    423         }
    424 
    425         $presets = array_merge($presets, $proPresets);
    426 
    427     }
    428 
    429     return $presets;
    430 }
    431 
    432 add_action('cloudpress\customizer\add_assets', 'materialis_load_theme_customizer_scripts', 10, 3);
    433 
    434 function materialis_load_theme_customizer_scripts($customizer, $jsUrl, $cssUrl)
    435 {
    436     $ver = $customizer->companion()->version;
    437     wp_enqueue_script('cp-customizer-shortcodes-theme-data', $customizer->companion()->themeDataURL("/assets/customizer/customizer-shortcodes.js"), array('customizer-base'), $ver, true);
    438 }
    439 
    440 
    441 function materialis_get_custom_mods()
    442 {
    443     return array(
    444         ".header-homepage .hero-title" => array(
    445             'type' => 'data-theme',
    446             'mod'  => "header_title",
    447         ),
    448 
    449         ".header-homepage p.header-subtitle" => array(
    450             'type' => 'data-theme',
    451             'mod'  => "header_subtitle",
    452         ),
    453 
    454         ".header-homepage p.header-subtitle2" => array(
    455             'type' => 'data-theme',
    456             'mod'  => "header_subtitle2",
    457         ),
    458 
    459         "#footer-container.footer-7 .footer-description" => array(
    460             'type' => 'data-theme',
    461             'mod'  => "footer_content_box_text",
    462         ),
    463         ".footer .footer-box-1 > p"                      => array(
    464             'type' => 'data-theme',
    465             'mod'  => "footer_box1_content_text",
    466         ),
    467         ".footer .footer-box-2 > p"                      => array(
    468             'type' => 'data-theme',
    469             'mod'  => "footer_box2_content_text",
    470         ),
    471         ".footer .footer-box-3 > p"                      => array(
    472             'type' => 'data-theme',
    473             'mod'  => "footer_box3_content_text",
    474         ),
    475 
    476     );
    477 }
    478 
    479 
    480 add_filter('cloudpress\customizer\global_data', 'materialis_add_dynamic_mods_customizer_data');
    481 function materialis_add_dynamic_mods_customizer_data($data)
    482 {
    483     $materialis_custom_mods = materialis_get_custom_mods();
    484     $data['mods']           = apply_filters('materialis_dynamic_mods', $materialis_custom_mods);
    485 
    486     return $data;
    487 }
    488 
    489 add_action('cloudpress\companion\activated\materialis', function ($companion) {
    490     /** @var \Materialis\Companion $companion */
    491     $companion->__createFrontPage();
    492 });
    493 
    494 
    495 add_action('cloudpress\companion\deactivated\materialis', function ($companion) {
    496     /** @var \Materialis\Companion $companion */
    497     $companion->restoreFrontPage();
    498 });
    499 
    500 
    501 function materialis_get_sections_order($category)
    502 {
    503     $companion = \Materialis\Companion::instance();
    504     $config    = $companion->loadConfig($companion->themeDataPath("/sections-order.php"));
    505 
    506     return (isset($config[$category]) ? $config[$category] : array());
    507 
    508 }
    509 
    510 add_filter('cloudpress\customizer\control\content_sections\category_data', function ($data, $category) {
    511 
    512     $order    = materialis_get_sections_order($category);
    513     $to_order = array();
    514 
    515     if ( ! count($order)) {
    516         return $data;
    517     }
    518 
    519     foreach ($order as $id) {
    520         if (isset($to_order[$id]) && is_string($to_order['content'])) {
    521             $to_order[] = $id;
    522         }
    523     }
    524 
    525     return array_replace(array_flip($to_order), $data);
    526 
    527 }, 10, 2);
    528 
    529 
    530 add_filter("cloudpress\customizer\page_settings", function ($setting_ids) {
    531 
    532     $setting_ids[] = "layout_section_settings_separator";
    533     $setting_ids[] = "layout_boxed_content_enabled";
    534     $setting_ids[] = "layout_boxed_content_background_color";
    535     $setting_ids[] = "layout_boxed_content_overlap_height";
    536 
    537 
    538     return $setting_ids;
    539 });