/** * Get list of currently available archives slugs that has a template * @return array */ public static function getArchiveTemplateSlugs() { $archives = get_post_types(array('has_archive' => true), 'names'); $templates = array(); foreach ($archives as $archive) { $template = \Modularity\Helper\Wp::findCoreTemplates(array('archive-' . $archive)); if ($template) { $templates[] = $template; } else { $templates[] = 'archive'; } } array_unique($templates); return $templates; }
/** * Detects core templates * @return string Template */ public static function detectCoreTemplate($post) { if ((int) get_option('page_on_front') == (int) $post->ID) { return \Modularity\Helper\Wp::findCoreTemplates(array('front-page', 'page')); } switch ($post->post_type) { case 'post': return 'single'; break; case 'page': return 'page'; break; default: return \Modularity\Helper\Wp::findCoreTemplates(array('single-' . $post->post_type, 'single', 'page')); break; } return 'index'; }
<?php $fields = json_decode(json_encode(get_fields($module->ID))); if (isset($fields->contacts) && count($fields->contacts) > 0) { $displayMode = 'cards'; if (isset($fields->display_mode) && !empty($fields->display_mode)) { $displayMode = $fields->display_mode; } switch ($displayMode) { case 'list': include \Modularity\Helper\Wp::getTemplate($module->post_type . '-list', 'module/modularity-mod-contact', false); break; default: include \Modularity\Helper\Wp::getTemplate($module->post_type . '-cards', 'module/modularity-mod-contact', false); break; } } else { ?> <div class="<?php echo implode(' ', apply_filters('Modularity/Module/Classes', array('box', 'box-card'), $module->post_type, $args)); ?> " itemscope="person" itemtype="http://schema.org/Organization"> <?php if (isset($fields->picture) && !empty($fields->picture)) { $image = wp_get_attachment_image_src($fields->picture->id, apply_filters('modularity/image/contact', municipio_to_aspect_ratio('16:9', array(400, 400)), $args)); } else { $image = false; } ?>
public function __construct() { if (\Modularity\Helper\Wp::isThickBox()) { $this->init(); } }
/** * Display module with shortcode * @param array $args Args * @return string Html markup */ public function shortcodeDisplay($args) { $args = shortcode_atts(array('id' => false, 'inline' => true), $args); if (!is_numeric($args['id'])) { return; } $module = \Modularity\Editor::getModule($args['id']); if (substr($module->post_type, 0, 4) != 'mod-' || $module->post_status == 'private' && !is_user_logged_in()) { return; } $templatePath = \Modularity\Helper\Wp::getTemplate($module->post_type, 'module-inline', false); if (!$templatePath || $args['inline'] !== true) { $templatePath = \Modularity\Helper\Wp::getTemplate($module->post_type, 'module', false); } if (!$templatePath) { return false; } ob_start(); include $templatePath; $moduleMarkup = ob_get_clean(); $moduleMarkup = apply_filters('Modularity/Display/Markup', $moduleMarkup, $module); $moduleMarkup = apply_filters('Modularity/Display/' . $module->post_type . '/Markup', $moduleMarkup, $module); return '<div class="' . $module->post_type . '">' . $moduleMarkup . '</div>'; }
} $order = $fields->posts_sort_order; $filters = array('orderby' => sanitize_text_field($sortBy), 'order' => sanitize_text_field($order)); if ($sortBy == 'meta_key') { $filters['meta_key'] = $orderby; } if (isset($fields->posts_taxonomy_type) && $fields->posts_taxonomy_type) { $taxType = $fields->posts_taxonomy_type; $taxValues = (array) $fields->posts_taxonomy_value; $taxValues = implode('|', $taxValues); $filters['term[]'] = $taxType . '|' . $taxValues; } switch ($fields->posts_display_as) { case 'list': $template = \Modularity\Helper\Wp::getTemplate($module->post_type . '-list', 'module/modularity-mod-posts', false); break; case 'news': $template = \Modularity\Helper\Wp::getTemplate($module->post_type . '-news', 'module/modularity-mod-posts', false); break; case 'items': $template = \Modularity\Helper\Wp::getTemplate($module->post_type . '-items', 'module/modularity-mod-posts', false); break; case 'index': $template = \Modularity\Helper\Wp::getTemplate($module->post_type . '-index', 'module/modularity-mod-posts', false); break; case 'expandable-list': $template = \Modularity\Helper\Wp::getTemplate($module->post_type . '-expandable-list', 'module/modularity-mod-posts', false); break; } $template = apply_filters('Modularity/Module/Posts/template', $template, $module, $fields); include $template;
/** * Checks if a page has a modules * @return boolean */ public function hasModule() { global $post; $postId = null; $modules = array(); $archiveSlug = \Modularity\Helper\Wp::getArchiveSlug(); if ($archiveSlug) { $postId = $archiveSlug; } elseif (isset($post->ID)) { $postId = $post->ID; } else { return apply_filters('Modularity/hasModule', false, null); } $modules = \Modularity\Editor::getPostModules($postId); $modules = json_encode($modules); return apply_filters('Modularity/hasModule', strpos($modules, '"post_type":"' . $this->moduleSlug . '"') == true, $archiveSlug); }
/** * Metabox content: Modules * @return void */ public function metaBoxModules() { $available = \Modularity\Module::$available; uasort($available, function ($a, $b) { return strcmp($a['labels']['name'], $b['labels']['name']); }); global $modularityOptions; $enabled = isset($modularityOptions['enabled-modules']) && is_array($modularityOptions['enabled-modules']) ? $modularityOptions['enabled-modules'] : array(); $templatePath = \Modularity\Helper\Wp::getTemplate('modules', 'options/partials'); include $templatePath; }
/** * Get active areas for template. * If nothing found on the specific template (eg. archive-cars), fallback to the default template (eg. archive) * @param string $template Template * @return array Active sidebars */ public function getActiveAreas($template) { $originalTemplate = $template; $options = get_option('modularity-options'); $active = isset($options['enabled-areas'][$template]) ? $options['enabled-areas'][$template] : array(); self::$isEditing['template'] = $template; // Fallback if (count($active) === 0 && !is_numeric($template) && strpos($template, 'archive-') !== false && !in_array($template, \Modularity\Options\Archives::getArchiveTemplateSlugs())) { $template = explode('-', $template, 2)[0]; self::$isEditing['template'] = $template; $active = isset($options['enabled-areas'][$template]) ? $options['enabled-areas'][$template] : array(); } if (self::$isEditing['title'] == 'archive-post') { $home = \Modularity\Helper\Wp::findCoreTemplates(array('home')); if ($home) { $active = isset($options['enabled-areas']['home']) ? $options['enabled-areas']['home'] : array(); self::$isEditing['template'] = 'home'; } } return $active; }
/** * Enqueues scripts and styles * @return void */ public function enqueueAdmin() { if (!$this->isModularityPage()) { return; } // Style wp_register_style('modularity', MODULARITY_URL . '/dist/css/modularity.' . self::$assetSuffix . '.css', false, filemtime(MODULARITY_PATH . '/dist/css/modularity.' . self::$assetSuffix . '.css')); wp_enqueue_style('modularity'); // Scripts wp_register_script('modularity', MODULARITY_URL . '/dist/js/modularity.' . self::$assetSuffix . '.js', false, filemtime(MODULARITY_PATH . '/dist/js/modularity.' . self::$assetSuffix . '.js'), true); wp_localize_script('modularity', 'modularityAdminLanguage', array('langedit' => __('Edit', 'modularity'), 'langimport' => __('Import', 'modularity'), 'langremove' => __('Remove', 'modularity'), 'langhide' => __('Hide', 'modularity'), 'actionRemove' => __('Are you sure you want to remove this module?', 'modularity'), 'isSaving' => __('Saving…', 'modularity'), 'close' => __('Close', 'modularity'), 'width' => __('Width', 'modularity'), 'widthOptions' => $this->editor->getWidthOptions(), 'deprecated' => __('Deprecated', 'modularity'))); wp_enqueue_script('modularity'); add_action('admin_head', function () { echo "\n <script>\n var admin_url = '" . admin_url() . "';\n </script>\n "; }); // If editor if (\Modularity\Helper\Wp::isEditor()) { wp_enqueue_script('jquery-ui-sortable'); wp_enqueue_script('jquery-ui-draggable'); wp_enqueue_script('jquery-ui-droppable'); add_action('admin_head', function () { global $post; global $archive; $id = isset($post->ID) ? $post->ID : "'" . $archive . "'"; echo "\n <script>\n var modularity_post_id = " . $id . "\n </script>\n "; }); } }