/** * Premium TO loop module * * @author Timo Reith * @version $Id: bootstrap.php 405 2015-08-24 22:17:41Z timoreithde $ */ class Psn_ToLoop_Bootstrap extends IfwPsn_Wp_Module_Bootstrap_Abstract { /** * The module ID * @var string */ protected $_id = 'psn_mod_toloop'; /** * The module name * @var string */ protected $_name = 'One Email per TO'; /** * The module description * @var string */ protected $_description = 'Adds the option to send one email per TO recipient disregarding CC and BCC'; /** * The module text domain * @var string */ protected $_textDomain = 'psn_tol'; /** * The module version * @var string */ protected $_version = '1.0'; /** * The module author * @var string */ protected $_author = 'Timo'; /** * The author's homepage * @var string */ protected $_authorHomepage = 'http://www.ifeelweb.de/'; /** * The module homepage * @var string */ protected $_homepage = 'http://www.ifeelweb.de/wp-plugins/post-status-notifier/'; /** * The module dependencies * @var array */ protected $_dependencies = array('psn_mod_prm'); /** * @see IfwPsn_Wp_Module_Bootstrap_Abstract::bootstrap() */ public function bootstrap() { if ($this->_pm->getAccess()->isPlugin()) { $this->_addPluginAdminActions(); $this->addOptions(); } require_once $this->getPathinfo()->getRootLib() . 'ToLoopHandler.php'; new Psn_Module_ToLoop_ToLoopHandler($this->_pm); } protected function addOptions() { require_once $this->_pm->getPathinfo()->getRootLib() . 'IfwPsn/Wp/Options/Field/Text.php'; $this->_pm->getOptionsManager()->addGeneralOption(new IfwPsn_Wp_Options_Field_Text( 'psn_to_loop_timelimit', __('TO loop timeout', 'psn_tol'), sprintf( __('If you are using the "One email per TO recipient" option, you may want to adjust the PHP maximum execution time limit value here. In seconds. It will only be used before the TO loop starts. Has no effect if PHP safe mode is active. If set to 0 (zero), no time limit is imposed. Use with caution! Default is 30 depending on your server configuration. See PHP manual', 'psn_tol'), 'http://de3.php.net/manual/en/function.set-time-limit.php'), array( 'sanitizer' => 'number' ) )); } protected function _addPluginAdminActions() { // extend the admin form IfwPsn_Wp_Proxy_Filter::addPlugin($this->_pm, 'db_patcher_rule_fields', array($this, 'addDbPatcherRuleFields')); IfwPsn_Wp_Proxy_Action::addPlugin($this->_pm, 'rule_form', array($this, 'extendForm')); IfwPsn_Wp_Proxy_Action::addPlugin($this->_pm, 'selftester_activate', array($this, 'addSelftests')); } /** * @param $fields * @return mixed */ public function addDbPatcherRuleFields($fields) { array_push($fields, 'to_loop'); return $fields; } /** * @param $form */ public function extendForm(IfwPsn_Zend_Form $form) { $toLoop = $form->createElement('checkbox', 'to_loop'); $toLoop->setLabel(__('One email per TO recipient', 'psn_tol')) ->setDecorators($form->getFieldDecorators()) ->setDescription(__('If activated, a single email will be sent to each TO recipient disregarding the CC and BCC settings.', 'psn_tol')) ->setChecked(false) ->setCheckedValue(1) ->setOrder(69) ; $form->addElement($toLoop); } /** * @param IfwPsn_Wp_Plugin_Selftester $selftester */ public function addSelftests(IfwPsn_Wp_Plugin_Selftester $selftester) { require_once $this->getPathinfo()->getRootLib() . 'Test/ToLoopField.php'; $selftester->addTestCase(new Psn_Module_ToLoop_Test_ToLoopField()); } } if ( fusion_is_element_enabled( 'fusion_recent_posts' ) ) { if ( ! class_exists( 'FusionSC_RecentPosts' ) ) { /** * Shortcode class. * * @package fusion-builder * @since 1.0 */ class FusionSC_RecentPosts extends Fusion_Element { /** * Recent Posts element counter. * * @access private * @since 1.5.2 * @var int */ private $recent_posts_counter = 1; /** * An array of the shortcode arguments. * * @access protected * @since 1.0 * @var array */ protected $args; /** * An array of meta settings. * * @access private * @since 1.0 * @var array */ private $meta_info_settings = array(); /** * Constructor. * * @access public * @since 1.0 */ public function __construct() { parent::__construct(); add_filter( 'fusion_attr_recentposts-shortcode', array( $this, 'attr' ) ); add_filter( 'fusion_attr_recentposts-shortcode-section', array( $this, 'section_attr' ) ); add_filter( 'fusion_attr_recentposts-shortcode-column', array( $this, 'column_attr' ) ); add_filter( 'fusion_attr_recentposts-shortcode-content', array( $this, 'content_attr' ) ); add_filter( 'fusion_attr_recentposts-shortcode-slideshow', array( $this, 'slideshow_attr' ) ); add_filter( 'fusion_attr_recentposts-shortcode-img', array( $this, 'img_attr' ) ); add_filter( 'fusion_attr_recentposts-shortcode-img-link', array( $this, 'link_attr' ) ); add_shortcode( 'fusion_recent_posts', array( $this, 'render' ) ); } /** * Render the shortcode * * @access public * @since 1.0 * @param array $args Shortcode parameters. * @param string $content Content between shortcode. * @return string HTML output. */ public function render( $args, $content = '' ) { global $fusion_settings, $fusion_library; $defaults = FusionBuilder::set_shortcode_defaults( array( 'hide_on_mobile' => fusion_builder_default_visibility( 'string' ), 'class' => '', 'id' => '', 'pull_by' => '', 'cat_id' => '', 'cat_slug' => '', 'tag_slug' => '', 'exclude_tags' => '', 'columns' => 3, 'content_alignment' => '', 'excerpt' => 'no', 'exclude_cats' => '', 'excerpt_length' => '', 'excerpt_words' => '15', // Deprecated. 'hover_type' => 'none', 'layout' => 'default', 'meta' => 'yes', 'meta_author' => 'no', 'meta_categories' => 'no', 'meta_comments' => 'yes', 'meta_date' => 'yes', 'meta_tags' => 'no', 'number_posts' => '4', 'offset' => '', 'picture_size' => 'fixed', 'scrolling' => 'no', 'strip_html' => 'yes', 'title' => 'yes', 'thumbnail' => 'yes', 'animation_direction' => 'left', 'animation_speed' => '', 'animation_type' => '', 'animation_offset' => $fusion_settings->get( 'animation_offset' ), ), $args, 'fusion_recent_posts' ); if ( '0' === $defaults['offset'] ) { $defaults['offset'] = ''; } if ( $defaults['columns'] > 6 ) { $defaults['columns'] = 6; } $defaults['strip_html'] = ( 'yes' === $defaults['strip_html'] || 'true' === $defaults['strip_html'] ) ? true : false; if ( $defaults['number_posts'] ) { $defaults['posts_per_page'] = $defaults['number_posts']; } if ( '-1' === $defaults['number_posts'] ) { $defaults['scrolling'] = 'no'; } if ( $defaults['excerpt_length'] || '0' === $defaults['excerpt_length'] ) { $defaults['excerpt_words'] = $defaults['excerpt_length']; } if ( 'tag' !== $defaults['pull_by'] ) { // Check for cats to exclude; needs to be checked via exclude_cats param // and '-' prefixed cats on cats param, exclution via exclude_cats param. $cats_to_exclude = explode( ',', $defaults['exclude_cats'] ); if ( $cats_to_exclude ) { foreach ( $cats_to_exclude as $cat_to_exclude ) { $id_obj = get_category_by_slug( $cat_to_exclude ); if ( $id_obj ) { $cats_id_to_exclude[] = $id_obj->term_id; } } if ( isset( $cats_id_to_exclude ) && $cats_id_to_exclude ) { $defaults['category__not_in'] = $cats_id_to_exclude; } } // Setting up cats to be used and exclution using '-' prefix on cats param; transform slugs to ids. $cat_ids = ''; $categories = explode( ',', $defaults['cat_slug'] ); if ( isset( $categories ) && $categories ) { foreach ( $categories as $category ) { if ( $category ) { $cat_obj = get_category_by_slug( $category ); if ( isset( $cat_obj->term_id ) ) { if ( 0 === strpos( $category, '-' ) ) { // @codingStandardsIgnoreLine $cat_ids .= '-' .$cat_obj->cat_ID . ','; } else { // @codingStandardsIgnoreLine $cat_ids .= $cat_obj->cat_ID . ','; } } } } } $defaults['cat'] = substr( $cat_ids, 0, -1 ) . $defaults['cat_id']; } else { // Check for tags to exclude; needs to be checked via exclude_tags param // and '-' prefixed tags on tags param exclusion via exclude_tags param. $tags_to_exclude = explode( ',', $defaults['exclude_tags'] ); $tags_id_to_exclude = array(); if ( $tags_to_exclude ) { foreach ( $tags_to_exclude as $tag_to_exclude ) { $id_obj = get_term_by( 'slug', $tag_to_exclude, 'post_tag' ); if ( $id_obj ) { $tags_id_to_exclude[] = $id_obj->term_id; } } if ( $tags_id_to_exclude ) { $defaults['tag__not_in'] = $tags_id_to_exclude; } } // Setting up tags to be used. $tag_ids = array(); if ( '' !== $defaults['tag_slug'] ) { $tags = explode( ',', $defaults['tag_slug'] ); if ( isset( $tags ) && $tags ) { foreach ( $tags as $tag ) { $id_obj = get_term_by( 'slug', $tag, 'post_tag' ); if ( $id_obj ) { $tag_ids[] = $id_obj->term_id; } } } } $defaults['tag__in'] = $tag_ids; } $items = ''; $args = array( 'posts_per_page' => $defaults['number_posts'], 'ignore_sticky_posts' => 1, ); // Check if there is paged content. $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; if ( is_front_page() ) { $paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1; } $args['paged'] = $paged; if ( $defaults['offset'] ) { $args['offset'] = $defaults['offset'] + ( $paged - 1 ) * $defaults['number_posts']; } if ( isset( $defaults['cat'] ) && $defaults['cat'] ) { $args['cat'] = $defaults['cat']; } if ( isset( $defaults['category__not_in'] ) && is_array( $defaults['category__not_in'] ) ) { $args['category__not_in'] = $defaults['category__not_in']; } if ( isset( $defaults['tag__in'] ) && $defaults['tag__in'] ) { $args['tag__in'] = $defaults['tag__in']; } if ( isset( $defaults['tag__not_in'] ) && is_array( $defaults['tag__not_in'] ) ) { $args['tag__not_in'] = $defaults['tag__not_in']; } extract( $defaults ); // Deprecated 5.2.1 hide value, mapped to no. if ( 'hide' === $excerpt ) { $excerpt = 'no'; } $defaults['meta_author'] = ( 'yes' === $defaults['meta_author'] ); $defaults['meta_categories'] = ( 'yes' === $defaults['meta_categories'] ); $defaults['meta_comments'] = ( 'yes' === $defaults['meta_comments'] ); $defaults['meta_date'] = ( 'yes' === $defaults['meta_date'] ); $defaults['meta_tags'] = ( 'yes' === $defaults['meta_tags'] ); // Set the meta info settings for later use. $this->meta_info_settings['post_meta'] = $defaults['meta']; $this->meta_info_settings['post_meta_author'] = $defaults['meta_author']; $this->meta_info_settings['post_meta_date'] = $defaults['meta_date']; $this->meta_info_settings['post_meta_cats'] = $defaults['meta_categories']; $this->meta_info_settings['post_meta_tags'] = $defaults['meta_tags']; $this->meta_info_settings['post_meta_comments'] = $defaults['meta_comments']; $this->args = $defaults; $recent_posts = fusion_cached_query( $args ); $this->args['max_num_pages'] = $recent_posts->max_num_pages; if ( ! $recent_posts->have_posts() ) { return fusion_builder_placeholder( 'post', 'blog posts' ); } while ( $recent_posts->have_posts() ) { $recent_posts->the_post(); $attachment = $date_box = $slideshow = $slides = $content = ''; if ( 'date-on-side' == $layout ) { switch ( get_post_format() ) { case 'gallery': $format_class = 'images'; break; case 'link': $format_class = 'link'; break; case 'image': $format_class = 'image'; break; case 'quote': $format_class = 'quotes-left'; break; case 'video': $format_class = 'film'; break; case 'audio': $format_class = 'headphones'; break; case 'chat': $format_class = 'bubbles'; break; default: $format_class = 'pen'; break; } $date_box = '
' . get_the_time( $fusion_settings->get( 'alternate_date_format_day' ) ) . '' . get_the_time( $fusion_settings->get( 'alternate_date_format_month_year' ) ) . '
'; } if ( 'yes' === $thumbnail && 'date-on-side' !== $layout && ! post_password_required( get_the_ID() ) ) { if ( 'auto' === $picture_size ) { $image_size = 'full'; } elseif ( 'default' == $layout ) { $image_size = 'recent-posts'; } elseif ( 'thumbnails-on-side' == $layout ) { $image_size = 'portfolio-five'; } $post_video = apply_filters( 'fusion_builder_post_video', get_the_ID() ); if ( has_post_thumbnail() || $post_video ) { if ( $post_video ) { $slides .= '
  • ' . $post_video . '
  • '; } if ( has_post_thumbnail() ) { // Responsive images. if ( 'full' === $image_size ) { $fusion_library->images->set_grid_image_meta( array( 'layout' => 'grid', 'columns' => $columns, 'gutter_width' => '30', ) ); $attachment_image = wp_get_attachment_image( get_post_thumbnail_id(), $image_size ); $attachment_image = $fusion_library->images->edit_grid_image_src( $attachment_image, null, get_post_thumbnail_id(), 'full' ); $fusion_library->images->set_grid_image_meta( array() ); } else { $attachment_image = wp_get_attachment_image( get_post_thumbnail_id(), $image_size ); } $slides .= '
  • ' . $attachment_image . '
  • '; } $i = 2; $posts_slideshow_number = $fusion_settings->get( 'posts_slideshow_number' ); if ( '' === $posts_slideshow_number ) { $posts_slideshow_number = 5; } while ( $i <= $posts_slideshow_number ) { $attachment_new_id = false; if ( function_exists( 'fusion_get_featured_image_id' ) && fusion_get_featured_image_id( 'featured-image-' . $i, 'post' ) ) { $attachment_new_id = fusion_get_featured_image_id( 'featured-image-' . $i, 'post' ); } if ( $attachment_new_id ) { // Responsive images. if ( 'full' === $image_size ) { $fusion_library->images->set_grid_image_meta( array( 'layout' => 'grid', 'columns' => $columns, 'gutter_width' => '30', ) ); $attachment_image = wp_get_attachment_image( $attachment_new_id, $image_size ); $attachment_image = $fusion_library->images->edit_grid_image_src( $attachment_image, null, $attachment_new_id, 'full' ); $fusion_library->images->set_grid_image_meta( array() ); } else { $attachment_image = wp_get_attachment_image( $attachment_new_id, $image_size ); } $slides .= '
  • ' . $attachment_image . '
  • '; } $i++; } $slideshow = '
    '; } } if ( 'yes' == $title ) { $content .= ( function_exists( 'fusion_builder_render_rich_snippets_for_pages' ) ) ? fusion_builder_render_rich_snippets_for_pages( false ) : ''; $entry_title = ''; if ( $fusion_settings->get( 'disable_date_rich_snippet_pages' ) && $fusion_settings->get( 'disable_rich_snippet_title' ) ) { $entry_title = 'entry-title'; } $content .= '

    ' . get_the_title() . '

    '; } else { $content .= fusion_builder_render_rich_snippets_for_pages(); } if ( 'yes' == $meta ) { $meta_data = fusion_builder_render_post_metadata( 'recent_posts', $this->meta_info_settings ); $content .= '

    ' . $meta_data . '

    '; } if ( 'yes' === $excerpt ) { $content .= fusion_builder_get_post_content( '', 'yes', $excerpt_words, $strip_html ); } elseif ( 'full' === $excerpt ) { $content .= fusion_builder_get_post_content( '', 'no', $excerpt_words, $strip_html ); } $items .= '
    ' . $date_box . $slideshow . '
    ' . $content . '
    '; } // Pagination is used. $pagination = ''; if ( 'no' !== $this->args['scrolling'] ) { $infinite_pagination = false; if ( 'pagination' !== $this->args['scrolling'] ) { $infinite_pagination = true; } $pagination = fusion_pagination( $recent_posts->max_num_pages, $fusion_settings->get( 'pagination_range' ), $recent_posts, $infinite_pagination, true ); // If infinite scroll with "load more" button is used. if ( 'load_more_button' === $this->args['scrolling'] && 1 < $recent_posts->max_num_pages ) { $pagination .= '
    ' . apply_filters( 'avada_load_more_posts_name', esc_attr__( 'Load More Posts', 'fusion-builder' ) ) . '
    '; } } $html = '
    ' . $items . '
    ' . $pagination . '
    '; wp_reset_postdata(); $this->recent_posts_counter++; return $html; } /** * Builds the attributes array. * * @access public * @since 1.0 * @return array */ public function attr() { $attr = fusion_builder_visibility_atts( $this->args['hide_on_mobile'], array( 'class' => 'fusion-recent-posts fusion-recent-posts-' . $this->recent_posts_counter . ' avada-container layout-' . $this->args['layout'] . ' layout-columns-' . $this->args['columns'], ) ); if ( $this->args['content_alignment'] && 'default' === $this->args['layout'] ) { $attr['class'] .= ' fusion-recent-posts-' . $this->args['content_alignment']; } if ( 'infinite' === $this->args['scrolling'] || 'load_more_button' === $this->args['scrolling'] ) { $attr['class'] .= ' fusion-recent-posts-infinite'; $attr['data-pages'] = $this->args['max_num_pages']; } if ( 'load_more_button' === $this->args['scrolling'] ) { $attr['class'] .= ' fusion-recent-posts-load-more'; } if ( $this->args['class'] ) { $attr['class'] .= ' ' . $this->args['class']; } if ( $this->args['id'] ) { $attr['id'] = $this->args['id']; } return $attr; } /** * Builds the section attributes array. * * @access public * @since 1.0 * @return array */ public function section_attr() { $attr = array( 'class' => 'fusion-columns columns fusion-columns-' . $this->args['columns'] . ' columns-' . $this->args['columns'], ); return $attr; } /** * Builds the column attributes array. * * @access public * @since 1.0 * @return array */ public function column_attr() { $columns = 3; if ( $this->args['columns'] ) { $columns = 12 / $this->args['columns']; } $attr = array( 'class' => 'post fusion-column column col col-lg-' . $columns . ' col-md-' . $columns . ' col-sm-' . $columns . '', 'style' => '', ); if ( '5' == $this->args['columns'] ) { $attr['class'] = 'post fusion-column column col-lg-2 col-md-2 col-sm-2'; } if ( $this->args['animation_type'] ) { $animations = FusionBuilder::animations( array( 'type' => $this->args['animation_type'], 'direction' => $this->args['animation_direction'], 'speed' => $this->args['animation_speed'], 'offset' => $this->args['animation_offset'], ) ); $attr = array_merge( $attr, $animations ); $attr['class'] .= ' ' . $attr['animation_class']; unset( $attr['animation_class'] ); } return $attr; } /** * Builds the slideshow attributes array. * * @access public * @since 1.0 * @return array */ public function slideshow_attr() { $attr = array( 'class' => 'fusion-flexslider flexslider', ); if ( 'thumbnails-on-side' == $this->args['layout'] ) { $attr['class'] .= ' floated-slideshow'; } if ( $this->args['hover_type'] ) { $attr['class'] .= ' flexslider-hover-type-' . $this->args['hover_type']; } return $attr; } /** * Builds the image attributes array. * * @access public * @since 1.0 * @param array $args The arguments array. * @return array */ public function img_attr( $args ) { $attr = array( 'src' => $args['src'], ); if ( $args['alt'] ) { $attr['alt'] = $args['alt']; } return $attr; } /** * Builds the link attributes array. * * @access public * @since 1.0 * @param array $args The arguments array. * @return array */ public function link_attr( $args ) { $attr = array(); if ( $this->args['hover_type'] ) { $attr['class'] = 'hover-type-' . $this->args['hover_type']; } $attr['aria-label'] = the_title_attribute( array( 'echo' => false ) ); return $attr; } /** * Builds the content wrapper attributes array. * * @access public * @since 1.5.2 * @return array */ public function content_attr() { $attr = array( 'class' => 'recent-posts-content', ); return $attr; } /** * Builds the dynamic styling. * * @access public * @since 1.1 * @return array */ public function add_styling() { global $wp_version, $content_media_query, $six_fourty_media_query, $three_twenty_six_fourty_media_query, $ipad_portrait_media_query, $fusion_library, $fusion_settings, $dynamic_css_helpers; $elements = array( '.fusion-flexslider .flex-direction-nav .flex-prev', '.fusion-flexslider .flex-direction-nav .flex-next', ); $css['global'][ $dynamic_css_helpers->implode( $elements ) ]['background-color'] = $fusion_library->sanitize->color( $fusion_settings->get( 'carousel_nav_color' ) ); $elements = $dynamic_css_helpers->map_selector( $elements, ':hover' ); $css['global'][ $dynamic_css_helpers->implode( $elements ) ]['background-color'] = $fusion_library->sanitize->color( $fusion_settings->get( 'carousel_hover_color' ) ); return $css; } /** * Sets the necessary scripts. * * @access public * @since 1.5.2 * @return void */ public function add_scripts() { global $fusion_settings; Fusion_Dynamic_JS::enqueue_script( 'fusion-recent-posts', FusionBuilder::$js_folder_url . '/general/fusion-recent-posts.js', FusionBuilder::$js_folder_path . '/general/fusion-recent-posts.js', array( 'jquery' ), '1', true ); Fusion_Dynamic_JS::localize_script( 'fusion-recent-posts', 'fusionRecentPostsVars', array( 'infinite_loading_text' => '' . __( 'Loading the next set of posts...', 'fusion-builder' ) . '', 'infinite_finished_msg' => '' . __( 'All items displayed.', 'fusion-builder' ) . '', 'slideshow_autoplay' => $fusion_settings->get( 'slideshow_autoplay' ) ? $fusion_settings->get( 'slideshow_autoplay' ) : false, 'slideshow_speed' => $fusion_settings->get( 'slideshow_speed' ) ? (int) $fusion_settings->get( 'slideshow_speed' ) : 5000, 'pagination_video_slide' => $fusion_settings->get( 'pagination_video_slide' ) ? $fusion_settings->get( 'pagination_video_slide' ) : false, 'status_yt' => $fusion_settings->get( 'status_yt' ) ? $fusion_settings->get( 'status_yt' ) : false, ) ); } } } new FusionSC_RecentPosts(); } /** * Map shortcode to Fusion Builder. * * @since 1.0 */ function fusion_element_recent_posts() { global $pagenow; fusion_builder_map( array( 'name' => esc_attr__( 'Recent Posts', 'fusion-builder' ), 'shortcode' => 'fusion_recent_posts', 'icon' => 'fusiona-feather', 'preview' => FUSION_BUILDER_PLUGIN_DIR . 'inc/templates/previews/fusion-recent-posts-preview.php', 'preview_id' => 'fusion-builder-block-module-recent-posts-preview-template', 'params' => array( array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Layout', 'fusion-builder' ), 'description' => esc_attr__( 'Select the layout for the element.', 'fusion-builder' ), 'param_name' => 'layout', 'value' => array( 'default' => esc_attr__( 'Standard', 'fusion-builder' ), 'thumbnails-on-side' => esc_attr__( 'Thumbnails on Side', 'fusion-builder' ), 'date-on-side' => esc_attr__( 'Date on Side', 'fusion-builder' ), ), 'default' => 'default', ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Picture Size', 'fusion-builder' ), 'description' => __( 'Fixed = width and height will be fixed.
    Auto = width and height will adjust to the image.
    ', 'fusion-builder' ), 'param_name' => 'picture_size', 'default' => 'fixed', 'value' => array( 'fixed' => esc_attr__( 'Fixed', 'fusion-builder' ), 'auto' => esc_attr__( 'Auto', 'fusion-builder' ), ), 'dependency' => array( array( 'element' => 'layout', 'value' => 'date-on-side', 'operator' => '!=', ), array( 'element' => 'thumbnail', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Hover Type', 'fusion-builder' ), 'description' => esc_attr__( 'Select the hover effect type.', 'fusion-builder' ), 'param_name' => 'hover_type', 'value' => array( 'none' => esc_attr__( 'None', 'fusion-builder' ), 'zoomin' => esc_attr__( 'Zoom In', 'fusion-builder' ), 'zoomout' => esc_attr__( 'Zoom Out', 'fusion-builder' ), 'liftup' => esc_attr__( 'Lift Up', 'fusion-builder' ), ), 'default' => 'none', 'dependency' => array( array( 'element' => 'layout', 'value' => 'date-on-side', 'operator' => '!=', ), array( 'element' => 'thumbnail', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'range', 'heading' => esc_attr__( 'Number of Columns', 'fusion-builder' ), 'description' => esc_attr__( 'Select the number of columns to display.', 'fusion-builder' ), 'param_name' => 'columns', 'value' => '3', 'min' => '1', 'max' => '6', 'step' => '1', ), array( 'type' => 'range', 'heading' => esc_attr__( 'Posts Per Page', 'fusion-builder' ), 'description' => esc_attr__( 'Select number of posts per page. Set to -1 to display all.', 'fusion-builder' ), 'param_name' => 'number_posts', 'value' => '6', 'min' => '-1', 'max' => '25', 'step' => '1', ), array( 'type' => 'range', 'heading' => esc_attr__( 'Post Offset', 'fusion-builder' ), 'description' => esc_attr__( 'The number of posts to skip. ex: 1.', 'fusion-builder' ), 'param_name' => 'offset', 'value' => '0', 'min' => '0', 'max' => '25', 'step' => '1', ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Pull Posts By', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to show posts by category or tag.', 'fusion-builder' ), 'param_name' => 'pull_by', 'default' => 'category', 'value' => array( 'category' => esc_attr__( 'Category', 'fusion-builder' ), 'tag' => esc_attr__( 'Tag', 'fusion-builder' ), ), ), array( 'type' => 'multiple_select', 'heading' => esc_attr__( 'Categories', 'fusion-builder' ), 'description' => esc_attr__( 'Select a category or leave blank for all.', 'fusion-builder' ), 'param_name' => 'cat_slug', 'value' => ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) ? fusion_builder_shortcodes_categories( 'category' ) : array(), 'default' => '', 'dependency' => array( array( 'element' => 'pull_by', 'value' => 'tag', 'operator' => '!=', ), ), ), array( 'type' => 'multiple_select', 'heading' => esc_attr__( 'Exclude Categories', 'fusion-builder' ), 'description' => esc_attr__( 'Select a category to exclude.', 'fusion-builder' ), 'param_name' => 'exclude_cats', 'value' => ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) ? fusion_builder_shortcodes_categories( 'category' ) : array(), 'default' => '', 'dependency' => array( array( 'element' => 'pull_by', 'value' => 'tag', 'operator' => '!=', ), ), ), array( 'type' => 'multiple_select', 'heading' => esc_attr__( 'Tags', 'fusion-builder' ), 'description' => esc_attr__( 'Select a tag or leave blank for all.', 'fusion-builder' ), 'param_name' => 'tag_slug', 'value' => ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) ? fusion_builder_shortcodes_tags( 'post_tag' ) : array(), 'default' => '', 'dependency' => array( array( 'element' => 'pull_by', 'value' => 'category', 'operator' => '!=', ), ), ), array( 'type' => 'multiple_select', 'heading' => esc_attr__( 'Exclude Tags', 'fusion-builder' ), 'description' => esc_attr__( 'Select a tag to exclude.', 'fusion-builder' ), 'param_name' => 'exclude_tags', 'value' => ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) ? fusion_builder_shortcodes_tags( 'post_tag' ) : array(), 'default' => '', 'dependency' => array( array( 'element' => 'pull_by', 'value' => 'category', 'operator' => '!=', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Thumbnail', 'fusion-builder' ), 'description' => esc_attr__( 'Display the post featured image.', 'fusion-builder' ), 'param_name' => 'thumbnail', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'default' => 'yes', 'dependency' => array( array( 'element' => 'layout', 'value' => 'date-on-side', 'operator' => '!=', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Title', 'fusion-builder' ), 'description' => esc_attr__( 'Display the post title below the featured image.', 'fusion-builder' ), 'param_name' => 'title', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'default' => 'yes', ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Meta', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to show all meta data.', 'fusion-builder' ), 'param_name' => 'meta', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'default' => 'yes', ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Author Name', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to show the author.', 'fusion-builder' ), 'param_name' => 'meta_author', 'default' => 'no', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'dependency' => array( array( 'element' => 'meta', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Categories', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to show the categories.', 'fusion-builder' ), 'param_name' => 'meta_categories', 'default' => 'no', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'dependency' => array( array( 'element' => 'meta', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Date', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to show the date.', 'fusion-builder' ), 'param_name' => 'meta_date', 'default' => 'yes', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'dependency' => array( array( 'element' => 'meta', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Comment Count', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to show the comments.', 'fusion-builder' ), 'param_name' => 'meta_comments', 'default' => 'yes', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'dependency' => array( array( 'element' => 'meta', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Tags', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to show the tags.', 'fusion-builder' ), 'param_name' => 'meta_tags', 'default' => 'no', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'dependency' => array( array( 'element' => 'meta', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Content Alignment', 'fusion-builder' ), 'description' => esc_attr__( 'Select the alignment of contents.', 'fusion-builder' ), 'param_name' => 'content_alignment', 'default' => '', 'value' => array( '' => esc_attr__( 'Text Flow', 'fusion-builder' ), 'left' => esc_attr__( 'Left', 'fusion-builder' ), 'center' => esc_attr__( 'Center', 'fusion-builder' ), 'right' => esc_attr__( 'Right', 'fusion-builder' ), ), 'dependency' => array( array( 'element' => 'layout', 'value' => 'default', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Text display', 'fusion-builder' ), 'description' => esc_attr__( 'Choose to display the post excerpt.', 'fusion-builder' ), 'param_name' => 'excerpt', 'value' => array( 'yes' => esc_attr__( 'Excerpt', 'fusion-builder' ), 'full' => esc_attr__( 'Full Content', 'fusion-builder' ), 'no' => esc_attr__( 'None', 'fusion-builder' ), ), 'default' => 'yes', ), array( 'type' => 'range', 'heading' => esc_attr__( 'Excerpt Length', 'fusion-builder' ), 'description' => esc_attr__( 'Insert the number of words/characters you want to show in the excerpt.', 'fusion-builder' ), 'param_name' => 'excerpt_length', 'value' => '35', 'min' => '0', 'max' => '500', 'step' => '1', 'dependency' => array( array( 'element' => 'excerpt', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Strip HTML', 'fusion-builder' ), 'description' => esc_attr__( 'Strip HTML from the post excerpt.', 'fusion-builder' ), 'param_name' => 'strip_html', 'value' => array( 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ), 'default' => 'yes', 'dependency' => array( array( 'element' => 'excerpt', 'value' => 'yes', 'operator' => '==', ), ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Pagination Type', 'fusion-builder' ), 'description' => esc_attr__( 'Choose the type of pagination.', 'fusion-builder' ), 'param_name' => 'scrolling', 'default' => 'no', 'value' => array( 'no' => esc_attr__( 'No Pagination', 'fusion-builder' ), 'pagination' => esc_attr__( 'Pagination', 'fusion-builder' ), 'infinite' => esc_attr__( 'Infinite Scrolling', 'fusion-builder' ), 'load_more_button' => esc_attr__( 'Load More Button', 'fusion-builder' ), ), ), array( 'type' => 'select', 'heading' => esc_attr__( 'Animation Type', 'fusion-builder' ), 'description' => esc_attr__( 'Select the type of animation to use on the element.', 'fusion-builder' ), 'param_name' => 'animation_type', 'value' => fusion_builder_available_animations(), 'default' => '', 'group' => esc_attr__( 'Animation', 'fusion-builder' ), ), array( 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Direction of Animation', 'fusion-builder' ), 'description' => esc_attr__( 'Select the incoming direction for the animation.', 'fusion-builder' ), 'param_name' => 'animation_direction', 'value' => array( 'down' => esc_attr__( 'Top', 'fusion-builder' ), 'right' => esc_attr__( 'Right', 'fusion-builder' ), 'up' => esc_attr__( 'Bottom', 'fusion-builder' ), 'left' => esc_attr__( 'Left', 'fusion-builder' ), 'static' => esc_attr__( 'Static', 'fusion-builder' ), ), 'default' => 'left', 'group' => esc_attr__( 'Animation', 'fusion-builder' ), 'dependency' => array( array( 'element' => 'animation_type', 'value' => '', 'operator' => '!=', ), ), ), array( 'type' => 'range', 'heading' => esc_attr__( 'Speed of Animation', 'fusion-builder' ), 'description' => esc_attr__( 'Type in speed of animation in seconds (0.1 - 1).', 'fusion-builder' ), 'param_name' => 'animation_speed', 'min' => '0.1', 'max' => '1', 'step' => '0.1', 'value' => '0.3', 'group' => esc_attr__( 'Animation', 'fusion-builder' ), 'dependency' => array( array( 'element' => 'animation_type', 'value' => '', 'operator' => '!=', ), ), ), array( 'type' => 'select', 'heading' => esc_attr__( 'Offset of Animation', 'fusion-builder' ), 'description' => esc_attr__( 'Controls when the animation should start.', 'fusion-builder' ), 'param_name' => 'animation_offset', 'value' => array( '' => esc_attr__( 'Default', 'fusion-builder' ), 'top-into-view' => esc_attr__( 'Top of element hits bottom of viewport', 'fusion-builder' ), 'top-mid-of-view' => esc_attr__( 'Top of element hits middle of viewport', 'fusion-builder' ), 'bottom-in-view' => esc_attr__( 'Bottom of element enters viewport', 'fusion-builder' ), ), 'default' => '', 'group' => esc_attr__( 'Animation', 'fusion-builder' ), 'dependency' => array( array( 'element' => 'animation_type', 'value' => '', 'operator' => '!=', ), ), ), array( 'type' => 'checkbox_button_set', 'heading' => esc_attr__( 'Element Visibility', 'fusion-builder' ), 'param_name' => 'hide_on_mobile', 'value' => fusion_builder_visibility_options( 'full' ), 'default' => fusion_builder_default_visibility( 'array' ), 'description' => esc_attr__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-builder' ), ), array( 'type' => 'textfield', 'heading' => esc_attr__( 'CSS Class', 'fusion-builder' ), 'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-builder' ), 'param_name' => 'class', 'value' => '', 'group' => esc_attr__( 'General', 'fusion-builder' ), ), array( 'type' => 'textfield', 'heading' => esc_attr__( 'CSS ID', 'fusion-builder' ), 'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-builder' ), 'param_name' => 'id', 'value' => '', 'group' => esc_attr__( 'General', 'fusion-builder' ), ), ), ) ); } add_action( 'fusion_builder_before_init', 'fusion_element_recent_posts' ); 互联网 – 川透社

    互联网

    /Tag: 互联网
    25 10, 2017

    在ins当网红是一种怎样的体验

    By |2017-12-11T13:04:10+08:00十月 25th, 2017|人物传记, 娱乐, 文艺杂文, 生活, 编辑推荐|3 Comments

    在20世纪70年代发表的《论摄影》一书中,苏珊·桑塔格描述相机在日常生活中的作用:它是一种用来建立“每个家庭的肖像编年史——一套袖珍的影像配件,作为家庭联系的见证”的工具。当然在2017年,她也可能用同样的话来形容Instagram(照片墙,以下均简称为ins),只是我们与图像本身的联系越来越少了。 [...]

    29 04, 2017

    虚假新闻与“后真相”时代

    By |2017-06-05T23:28:22+08:00四月 29th, 2017|世界, 国家大事, 编辑推荐|2 Comments

    我们每天都通过互联网接触大量信息,但这些信息的真实性到底有多少?互联网为大家提供了各种各样的信息,可其中又充斥着多少虚假信息?文章主要描述了互联网时代虚假新闻存在的乱象,以及各互联网大佬的应对策略。此文作者期待尽快解决虚假新闻的问题,并对信息空间的未来抱有希望。互联网时代对我们做出了一个巨大的承诺: [...]

    10 04, 2017

    当你收到中国网民的微笑表情时,他可能不是在对你微笑

    By |2017-04-13T22:20:55+08:00四月 10th, 2017|世界, 文艺杂文, 生活|8 Comments

    随着智能手机的发展和社交媒体平台的兴起,表情符号已经成为了互联网文化中不可或缺的一部分。当你在使用表情符号进行便捷有趣的交流时,有没有想过,这些诞生于90年代日本的表情符号,经过了网络文化日新月异的席卷,所表达的含义与最初已经截然不同了呢? 可能你经常使用这些表情符号,但是你知道吗?在别的文化圈,对 [...]

    22 02, 2017

    我是怎么花8个月从记者变码农的

    By |2017-04-04T22:51:04+08:00二月 22nd, 2017|生活|3 Comments

    许多人想环游世界但其实他连自己住的城市都没有逛完过,许多人说不喜欢自己现在的工作但是却想都没想过换份自己喜欢的工作,还有许多许多的人,他们都在现实面前妥协。但改变或许并没有你想象的那样艰难,本文的作者就是这样一个敢于改变的人,她花了八个月的时间从一个新闻记者成功转型为程序员,过程很艰辛但更重要的是坚 [...]

    13 02, 2017

    数字科技与大众的媒体娱乐选择

    By |2017-04-04T22:53:21+08:00二月 13th, 2017|科技, 科普新知, 编辑推荐|4 Comments

    互联网时代,出名的人多了,娱乐方式就更多了。电影、音乐、游戏、直播,如今的网络上有数以亿计的娱乐产品供人们选择。但是为啥大部分人的注意力依然集中在少数几样热门产品上?加迪·伊普斯坦因(Gady Epstein)为你揭示其中奥秘。 技术进步到今天,其中一个关键词就是“娱乐全民化”。从前专为精英阶层准备 [...]

    21 11, 2016

    今年互联网大会:网络这熊孩子养大了怎么管?

    By |2016-11-28T21:17:11+08:00十一月 21st, 2016|国家大事|14 Comments

    导语:不久前,第三届世界互联网大会刚结束,毕竟是自己国土上开的国际盛会,还是倍有面子的。互联网治理被端上了话题桌,中国颇有大国风范地表示要严管国内互联网环境,强调网络主权,却另有声音质疑这样“固步自封”。   【网络治理,峰会主题】 2016年11月16日,为期三天的第三届世界互联网大会在 [...]

    23 10, 2016

    奥利奥饼干经典设计的不解之谜

    By |2016-11-04T18:15:43+08:00十月 23rd, 2016|文艺杂文, 生活, 编辑推荐|9 Comments

    风靡全球的奥利奥饼干(Oreo),大家肯定都吃过。你品尝过它的味道,可你有仔细观察它上面的图案设计吗?你知道边上一圈的棱纹数是多少吗?你知道吃奥利奥的习惯暗示着性格测试吗?如果这些你都不知道,赶快来读一下这篇文章,你的困惑都将在这里得到解答。 Sunshine 和 Nabisco的早期广告 19 [...]

    27 03, 2016

    小米的互联网思维

    By |2016-11-03T12:32:30+08:00三月 27th, 2016|专题, 世界, 科技, 科技新潮, 编辑推荐|23 Comments

    “传统的公司就像是树,长大需要很长时间,但是落败却很快。小米的发展方式更像是竹林。你见过竹林消亡吗?没有。新的竹笋总是长得很快,来取代老的。通过投资组合公司,我们在创造属于自己的竹笋,建造一个像竹林一样的生态系统。” […]

    [...]

    亲,您知道么,
    川透微信公众号一直在推送本站图文,扫二维码加入:

    热门标签

    WP Twitter Auto Publish Powered By : XYZScripts.com