config['name'] = __('Masonry', 'avia_framework' );
$this->config['tab'] = __('Content Elements', 'avia_framework' );
$this->config['icon'] = AviaBuilder::$path['imagesURL']."sc-masonry.png";
$this->config['order'] = 38;
$this->config['target'] = 'avia-target-insert';
$this->config['shortcode'] = 'av_masonry_entries';
$this->config['tooltip'] = __('Display a fullwidth masonry/grid with blog entries', 'avia_framework' );
$this->config['drag-level'] = 3;
}
function extra_assets()
{
add_action('wp_ajax_avia_ajax_masonry_more', array('avia_masonry','load_more'));
add_action('wp_ajax_nopriv_avia_ajax_masonry_more', array('avia_masonry','load_more'));
if(!is_admin() && !current_theme_supports('avia_no_session_support') && !session_id()) session_start();
}
/**
* Popup Elements
*
* If this function is defined in a child class the element automatically gets an edit button, that, when pressed
* opens a modal window that allows to edit the element properties
*
* @return void
*/
function popup_elements()
{
$this->elements = array(
array(
"name" => __("Which Entries?", 'avia_framework' ),
"desc" => __("Select which entries should be displayed by selecting a taxonomy", 'avia_framework' ),
"id" => "link",
"fetchTMPL" => true,
"type" => "linkpicker",
"subtype" => array( __('Display Entries from:', 'avia_framework' )=>'taxonomy'),
"multiple" => 6,
"std" => "category"
),
array(
"name" => __("Sortable?", 'avia_framework' ),
"desc" => __("Should sorting options based on the taxonomies above be displayed?", 'avia_framework' ),
"id" => "sort",
"type" => "select",
"std" => "yes",
"subtype" => array(
__('Yes, display sort options', 'avia_framework' ) => 'yes',
__('Yes, display sort options and currently active taxonomy', 'avia_framework' ) => 'yes-tax',
__('No, do not display sort options', 'avia_framework' ) => 'no')),
array(
"name" => __("Post Number", 'avia_framework' ),
"desc" => __("How many items should be displayed per page?", 'avia_framework' ),
"id" => "items",
"type" => "select",
"std" => "12",
"subtype" => AviaHtmlHelper::number_array(1,100,1, array('All'=>'-1'))),
array(
"name" => __("Columns", 'avia_framework' ),
"desc" => __("How many columns do you want to display?", 'avia_framework' ),
"id" => "columns",
"type" => "select",
"std" => "flexible",
"subtype" => array(
__('Automatic, based on screen width', 'avia_framework' ) =>'flexible',
__('2 Columns', 'avia_framework' ) =>'2',
__('3 Columns', 'avia_framework' ) =>'3',
__('4 Columns', 'avia_framework' ) =>'4',
__('5 Columns', 'avia_framework' ) =>'5',
__('6 Columns', 'avia_framework' ) =>'6',
)),
array(
"name" => __("Pagination", 'avia_framework' ),
"desc" => __("Should a pagination or load more option be displayed to view additional entries?", 'avia_framework' ),
"id" => "paginate",
"type" => "select",
"std" => "yes",
"required" => array('items','not','-1'),
"subtype" => array(
__('Display Pagination', 'avia_framework' ) =>'pagination',
__('Display "Load More" Button', 'avia_framework' ) =>'load_more',
__('No option to view additional entries', 'avia_framework' ) =>'none')),
array(
"name" => __("Order by",'avia_framework' ),
"desc" => __("You can order the result by various attributes like creation date, title, author etc", 'avia_framework' ),
"id" => "query_orderby",
"type" => "select",
"std" => "date",
"subtype" => array(
__('Date', 'avia_framework' ) =>'date',
__('Title', 'avia_framework' ) =>'title',
__('Random', 'avia_framework' ) =>'rand',
__('Author', 'avia_framework' ) =>'author',
__('Name (Post Slug)', 'avia_framework' ) =>'name',
__('Last modified', 'avia_framework' ) =>'modified',
__('Comment Count', 'avia_framework' ) =>'comment_count',
__('Page Order', 'avia_framework' ) =>'menu_order')
),
array(
"name" => __("Display order",'avia_framework' ),
"desc" => __("Display the results either in ascending or descending order", 'avia_framework' ),
"id" => "query_order",
"type" => "select",
"std" => "DESC",
"subtype" => array(
__('Ascending Order', 'avia_framework' ) =>'ASC',
__('Descending Order', 'avia_framework' ) =>'DESC')
),
array(
"name" => __("Size Settings", 'avia_framework' ),
"desc" => __("Here you can select how the masonry should behave and handle all entries and the feature images of those entries", 'avia_framework' ),
"id" => "size",
"type" => "radio",
"std" => "fixed masonry",
"options" => array(
'flex' => __('Flexible Masonry: All entries get the same width but Images of each entry are displayed with their original height and width ratio', 'avia_framework' ),
'fixed' => __('Perfect Grid: Display a perfect grid where each element has exactly the same size. Images get cropped/stretched if they don\'t fit', 'avia_framework' ),
'fixed masonry' => __('Perfect Automatic Masonry: Display a grid where most elements get the same size, only elements with very wide images get twice the width and elements with very high images get twice the height. To qualify for "very wide" or "very high" the image must have a aspect ratio of 16:9 or higher', 'avia_framework' ),
'fixed manually' => __('Perfect Manual Masonry: Manually control the height and width of entries by adding either a "landscape" or "portrait" tag when creating the entry. Elements with no such tag use a fixed default size, elements with both tags will display extra large', 'avia_framework' ),
)),
array(
"name" => __("Gap between elements", 'avia_framework' ),
"desc" => __("Select the gap between the elements", 'avia_framework' ),
"id" => "gap",
"type" => "select",
"std" => "1px",
"subtype" => array(
__('No Gap', 'avia_framework' ) =>'no',
__('1 Pixel Gap', 'avia_framework' ) =>'1px',
__('Large Gap', 'avia_framework' ) =>'large',
)),
array(
"name" => __("Image overlay effect", 'avia_framework' ),
"desc" => __("Do you want to display the image overlay effect that gets removed on mouseover?", 'avia_framework' ),
"id" => "overlay_fx",
"type" => "select",
"std" => "active",
"subtype" => array(
__('Overlay activated', 'avia_framework' ) =>'active',
__('Overlay deactivated', 'avia_framework' ) =>'',
)),
array(
"name" => __("Element Title and Excerpt", 'avia_framework' ),
"desc" => __("You can choose if you want to display title and/or excerpt", 'avia_framework' ),
"id" => "caption_elements",
"type" => "select",
"std" => "title excerpt",
"subtype" => array(
__('Display Title and Excerpt', 'avia_framework' ) =>'title excerpt',
__('Display Title', 'avia_framework' ) =>'title',
__('Display Excerpt', 'avia_framework' ) =>'excerpt',
__('Display Neither', 'avia_framework' ) =>'none',
)),
array(
"name" => __("Element Title and Excerpt", 'avia_framework' ),
"desc" => __("You can choose whether to always display Title and Excerpt or only on hover", 'avia_framework' ),
"id" => "caption_display",
"type" => "select",
"std" => "always",
"required" => array('caption_elements','not','none'),
"subtype" => array(
__('Always Display', 'avia_framework' ) =>'always',
__('Display on mouse hover', 'avia_framework' ) =>'on-hover',
)),
array( "name" => __("For Developers: Section ID", 'avia_framework' ),
"desc" => __("Apply a custom ID Attribute to the section, so you can apply a unique style via CSS. This option is also helpful if you want to use anchor links to scroll to a sections when a link is clicked", 'avia_framework' )."
".
__("Use with caution and make sure to only use allowed characters. No special characters can be used.", 'avia_framework' ),
"id" => "id",
"type" => "input",
"std" => ""),
);
if(current_theme_supports('add_avia_builder_post_type_option'))
{
$element = array(
"name" => __("Select Post Type", 'avia_framework' ),
"desc" => __("Select which post types should be used. Note that your taxonomy will be ignored if you do not select an assign post type.
If yo don't select post type all registered post types will be used", 'avia_framework' ),
"id" => "post_type",
"type" => "select",
"multiple" => 6,
"std" => "",
"subtype" => AviaHtmlHelper::get_registered_post_type_array()
);
array_unshift($this->elements, $element);
}
}
/**
* Editor Element - this function defines the visual appearance of an element on the AviaBuilder Canvas
* Most common usage is to define some markup in the $params['innerHtml'] which is then inserted into the drag and drop container
* Less often used: $params['data'] to add data attributes, $params['class'] to modify the className
*
*
* @param array $params this array holds the default values for $content and $args.
* @return $params the return array usually holds an innerHtml key that holds item specific markup.
*/
function editor_element($params)
{
$params['innerHtml'] = "";
$params['innerHtml'].= "
".$this->config['name']."
";
$params['innerHtml'].= "
";
$params['innerHtml'].= __('This element will stretch across the whole screen by default.','avia_framework')." ";
$params['innerHtml'].= __('If you put it inside a color section or column it will only take up the available space','avia_framework');
$params['innerHtml'].= "
";
return $params;
}
/**
* Editor Sub Element - this function defines the visual appearance of an element that is displayed within a modal window and on click opens its own modal window
* Works in the same way as Editor Element
* @param array $params this array holds the default values for $content and $args.
* @return $params the return array usually holds an innerHtml key that holds item specific markup.
*/
function editor_sub_element($params)
{
$img_template = $this->update_template("img_fakeArg", "{{img_fakeArg}}");
$template = $this->update_template("title", "{{title}}");
$content = $this->update_template("content", "{{content}}");
$thumbnail = isset($params['args']['id']) ? wp_get_attachment_image($params['args']['id']) : "";
$params['innerHtml'] = "";
$params['innerHtml'] .= "
";
}
$items .= "";
$items .= "{$html_tags[1]}>";
}
//if its an ajax call return the items only without container
if(isset($this->atts['action']) && $this->atts['action'] == 'avia_ajax_masonry_more')
{
return $items;
}
// if its no ajax load prepend an empty invisible element as the first element. this is used for calculating the correct width of a default element.
// in theory this is not necessary because the masonry can detect that with an extra js parameter but sorting becomes slugish if that param is set
$all_sort_string = implode(' ', array_unique($all_sorts));
$items = "".$items;
$output .= $items;
$output .= "