autoload/hook-vc-progress-bar.php 0000644 00000000546 15021217214 0013037 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Progress_Bar' );
add_filter( 'vc_edit_form_fields_attributes_vc_progress_bar', array(
'WPBakeryShortCode_Vc_Progress_Bar',
'convertAttributesToNewProgressBar',
) );
}
autoload/hook-vc-message.php 0000644 00000000524 15021217214 0012051 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Message' );
add_filter( 'vc_edit_form_fields_attributes_vc_message', array(
'WPBakeryShortCode_Vc_Message',
'convertAttributesToMessageBox2',
) );
}
autoload/hook-vc-wp-text.php 0000644 00000000523 15021217214 0012034 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Wp_Text' );
add_filter( 'vc_edit_form_fields_attributes_vc_wp_text', array(
'WPBakeryShortCode_Vc_Wp_Text',
'convertTextAttributeToContent',
) );
}
autoload/bc-multisite-options.php 0000644 00000001365 15021217214 0013157 0 ustar 00 id, 'wpb_js_js_composer_purchase_code' );
if ( $is_main_blog_activated ) {
update_site_option( 'wpb_js_js_composer_purchase_code', $is_main_blog_activated );
}
update_site_option( 'vc_bc_options_called', true );
}
autoload/vc-pointers-frontend-editor.php 0000644 00000005070 15021217214 0014434 0 ustar 00 post_content ) ) {
$pointers['vc_pointers_frontend_editor'] = array(
'name' => 'vcPointerController',
'messages' => array(
array(
'target' => '#vc_add-new-element',
'options' => array(
'content' => sprintf( '
%s %s
', esc_html__( 'Add Elements', 'js_composer' ), esc_html__( 'Add new element or start with a template.', 'js_composer' ) ),
'position' => array(
'edge' => 'top',
'align' => 'left',
),
'buttonsEvent' => 'vcPointersEditorsTourEvents',
),
'closeEvent' => 'shortcodes:add',
),
array(
'target' => '.vc_controls-out-tl:first',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Rows and Columns', 'js_composer' ), esc_html__( 'This is a row container. Divide it into columns and style it. You can add elements into columns.', 'js_composer' ) ),
'position' => array(
'edge' => 'left',
'align' => 'center',
),
'buttonsEvent' => 'vcPointersEditorsTourEvents',
),
'closeCallback' => 'vcPointersCloseInIFrame',
'showCallback' => 'vcPointersSetInIFrame',
),
array(
'target' => '.vc_controls-cc:first',
'options' => array(
'content' => sprintf( ' %s %s %s
', esc_html__( 'Control Elements', 'js_composer' ), esc_html__( 'You can edit your element at any time and drag it around your layout.', 'js_composer' ), sprintf( esc_html__( 'P.S. Learn more at our %sKnowledge Base%s.', 'js_composer' ), '', ' ' ) ),
'position' => array(
'edge' => 'left',
'align' => 'center',
),
'buttonsEvent' => 'vcPointersEditorsTourEvents',
),
'closeCallback' => 'vcPointersCloseInIFrame',
'showCallback' => 'vcPointersSetInIFrame',
),
),
);
}
return $pointers;
}
function vc_page_editable_enqueue_pointer_scripts() {
if ( vc_is_page_editable() ) {
wp_enqueue_style( 'wp-pointer' );
wp_enqueue_script( 'wp-pointer' );
}
}
add_action( 'wp_enqueue_scripts', 'vc_page_editable_enqueue_pointer_scripts' );
autoload/hook-vc-pie.php 0000644 00000000476 15021217214 0011210 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Pie' );
add_filter( 'vc_edit_form_fields_attributes_vc_pie', array(
'WPBakeryShortCode_Vc_Pie',
'convertOldColorsToNew',
) );
}
autoload/params-to-init.php 0000644 00000003435 15021217214 0011731 0 ustar 00 ' . $data . '' . $custom_tag . '>';
echo $output;
}
add_action( 'wp_ajax_wpb_gallery_html', 'vc_gallery_html' );
function vc_gallery_html() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
$images = vc_post_param( 'content' );
if ( ! empty( $images ) ) {
wp_send_json_success( vc_field_attached_images( explode( ',', $images ) ) );
}
die();
}
autoload/bc-access-rules-4.8.php 0000644 00000013753 15021217214 0012353 0 ustar 00 get( 'content_types' );
if ( empty( $content_types ) ) {
$state = true;
} else {
$state = 'custom';
}
}
return $state;
}
/**
* @param $value
* @param $role
* @param $rule
* @return bool
* @throws \Exception
*/
function vc_bc_access_rule_48_post_type_rule( $value, $role, $rule ) {
if ( ! $role ) {
return $value;
}
global $vc_bc_access_rule_48_editor_post_types;
$part = vc_role_access()->who( $role->name )->part( 'post_types' );
if ( ! isset( $part->getRole()->capabilities[ $part->getStateKey() ] ) ) {
if ( is_null( $vc_bc_access_rule_48_editor_post_types ) ) {
$pt_array = vc_settings()->get( 'content_types' );
$vc_bc_access_rule_48_editor_post_types = $pt_array ? $pt_array : vc_default_editor_post_types();
}
return in_array( $rule, $vc_bc_access_rule_48_editor_post_types, true );
}
return $value;
}
// Part BC: shortcodes
// =========================
/**
* @param $state
* @param $role
* @return bool|string
*/
function vc_bc_access_rule_48_shortcodes_get_state( $state, $role ) {
if ( ! $role ) {
return $state;
}
if ( null === $state ) {
$group_access_settings = vc_settings()->get( 'groups_access_rules' );
if ( ! isset( $group_access_settings[ $role->name ]['shortcodes'] ) ) {
$state = true;
} else {
$state = 'custom';
}
}
return $state;
}
/**
* @param $value
* @param $role
* @param $rule
* @return bool
* @throws \Exception
*/
function vc_bc_access_rule_48_shortcodes_rule( $value, $role, $rule ) {
if ( ! $role ) {
return $value;
}
if ( ! vc_bc_access_get_shortcodes_state_is_set( $role ) ) {
if ( preg_match( '/_edit$/', $rule ) ) {
return false;
}
$group_access_settings = vc_settings()->get( 'groups_access_rules' );
if ( isset( $group_access_settings[ $role->name ]['shortcodes'] ) && ! empty( $group_access_settings[ $role->name ]['shortcodes'] ) ) {
$rule = preg_replace( '/_all$/', '', $rule );
return 'vc_row' === $rule || ( isset( $group_access_settings[ $role->name ]['shortcodes'][ $rule ] ) && 1 === (int) $group_access_settings[ $role->name ]['shortcodes'][ $rule ] );
} else {
return true;
}
}
return $value;
}
/**
* Check is state set
*
* @param $role
*
* @return bool
* @throws \Exception
*/
function vc_bc_access_get_shortcodes_state_is_set( $role ) {
if ( ! $role ) {
return false;
}
$part = vc_role_access()->who( $role->name )->part( 'shortcodes' );
return isset( $part->getRole()->capabilities[ $part->getStateKey() ] );
}
// Part BC: backened editor
// ===========================
/**
* @param $state
* @param $role
* @return bool|string
*/
function vc_bc_access_rule_48_backend_editor_get_state( $state, $role ) {
if ( ! $role ) {
return $state;
}
if ( null === $state ) {
$group_access_settings = vc_settings()->get( 'groups_access_rules' );
if ( ! isset( $group_access_settings[ $role->name ]['show'] ) || 'all' === $group_access_settings[ $role->name ]['show'] ) {
$state = true;
} elseif ( 'no' === $group_access_settings[ $role->name ]['show'] ) {
$state = false;
} else {
$state = 'default';
}
}
return $state;
}
/**
* @param $state
* @param $role
* @return bool
*/
function vc_bc_access_rule_48_frontend_editor_get_state( $state, $role ) {
if ( ! $role ) {
return $state;
}
if ( null === $state ) {
$group_access_settings = vc_settings()->get( 'groups_access_rules' );
if ( isset( $group_access_settings[ $role->name ]['show'] ) && 'no' === $group_access_settings[ $role->name ]['show'] ) {
$state = false;
} else {
$state = true;
}
}
return $state;
}
/**
* @param $value
* @param $role
* @return bool
* @throws \Exception
*/
function vc_bc_access_rule_48_backend_editor_can_disabled_ce_editor_rule( $value, $role ) {
if ( ! $role ) {
return $value;
}
$part = vc_role_access()->who( $role->name )->part( 'backend_editor' );
if ( ! isset( $part->getRole()->capabilities[ $part->getStateKey() ] ) ) {
$group_access_settings = vc_settings()->get( 'groups_access_rules' );
return isset( $group_access_settings[ $role->name ]['show'] ) && 'only' === $group_access_settings[ $role->name ]['show'];
}
return $value;
}
/**
* @param $role
* @return mixed
* @throws \Exception
*/
function vc_bc_access_rule_48_backend_editor_add_cap_disabled_ce_editor( $role ) {
if ( ! $role ) {
return $role;
}
$part = vc_role_access()->who( $role->name )->part( 'backend_editor' );
if ( ! isset( $part->getRole()->capabilities[ $part->getStateKey() ] ) ) {
$group_access_settings = vc_settings()->get( 'groups_access_rules' );
if ( isset( $group_access_settings[ $role->name ]['show'] ) && 'only' === $group_access_settings[ $role->name ]['show'] ) {
$role->capabilities[ $part->getStateKey() . '/disabled_ce_editor' ] = true;
}
}
return $role;
}
function vc_bc_access_rule_48() {
add_filter( 'vc_role_access_with_post_types_get_state', 'vc_bc_access_rule_48_post_type_get_state' );
add_filter( 'vc_role_access_with_post_types_can', 'vc_bc_access_rule_48_post_type_rule', 10, 3 );
add_filter( 'vc_role_access_with_shortcodes_get_state', 'vc_bc_access_rule_48_shortcodes_get_state', 10, 3 );
add_filter( 'vc_role_access_with_shortcodes_can', 'vc_bc_access_rule_48_shortcodes_rule', 10, 3 );
add_filter( 'vc_role_access_with_backend_editor_get_state', 'vc_bc_access_rule_48_backend_editor_get_state', 10, 3 );
add_filter( 'vc_role_access_with_backend_editor_can_disabled_ce_editor', 'vc_bc_access_rule_48_backend_editor_can_disabled_ce_editor_rule', 10, 2 );
add_filter( 'vc_role_access_with_frontend_editor_get_state', 'vc_bc_access_rule_48_frontend_editor_get_state', 10, 3 );
add_filter( 'vc_role_access_all_caps_role', 'vc_bc_access_rule_48_backend_editor_add_cap_disabled_ce_editor' );
}
// BC function for shortcode
add_action( 'vc_before_init', 'vc_bc_access_rule_48' );
autoload/post-type-default-template.php 0000644 00000013704 15021217214 0014264 0 ustar 00 isValidPostType( $post->post_type ) ) {
return $post_content;
}
$template_settings = new Vc_Setting_Post_Type_Default_Template_Field( 'general', 'default_template_post_type' );
$new_post_content = $template_settings->getTemplateByPostType( $post->post_type );
if ( null !== $new_post_content ) {
add_filter( 'wpb_vc_js_status_filter', 'vc_set_default_content_for_post_type_wpb_vc_js_status_filter' );
return $new_post_content;
}
return $post_content;
}
/**
* Default template for post types manager
*
* Class Vc_Setting_Post_Type_Default_Template_Field
*
* @since 4.12
*/
class Vc_Setting_Post_Type_Default_Template_Field {
protected $tab;
protected $key;
protected $post_types = false;
/**
* Vc_Setting_Post_Type_Default_Template_Field constructor.
* @param $tab
* @param $key
*/
public function __construct( $tab, $key ) {
$this->tab = $tab;
$this->key = $key;
add_action( 'vc_settings_tab-general', array(
$this,
'addField',
) );
}
/**
* @return string
*/
protected function getFieldName() {
return esc_html__( 'Default template for post types', 'js_composer' );
}
/**
* @return string
*/
protected function getFieldKey() {
require_once vc_path_dir( 'SETTINGS_DIR', 'class-vc-settings.php' );
return Vc_Settings::getFieldPrefix() . $this->key;
}
/**
* @param $type
* @return bool
*/
protected function isValidPostType( $type ) {
return post_type_exists( $type );
}
/**
* @return array|bool
*/
protected function getPostTypes() {
if ( false === $this->post_types ) {
require_once vc_path_dir( 'SETTINGS_DIR', 'class-vc-roles.php' );
$vc_roles = new Vc_Roles();
$this->post_types = $vc_roles->getPostTypes();
}
return $this->post_types;
}
/**
* @return array
*/
protected function getTemplates() {
return $this->getTemplatesEditor()->getAllTemplates();
}
/**
* @return bool|\Vc_Templates_Panel_Editor
*/
protected function getTemplatesEditor() {
return visual_composer()->templatesPanelEditor();
}
/**
* Get settings data for default templates
*
* @return array|mixed
*/
protected function get() {
require_once vc_path_dir( 'SETTINGS_DIR', 'class-vc-settings.php' );
$value = Vc_Settings::get( $this->key );
return $value ? $value : array();
}
/**
* Get template's shortcodes string
*
* @param $template_data
* @return string|null
*/
protected function getTemplate( $template_data ) {
$template = null;
$template_settings = preg_split( '/\:\:/', $template_data );
$template_id = $template_settings[1];
$template_type = $template_settings[0];
if ( ! isset( $template_id, $template_type ) || '' === $template_id || '' === $template_type ) {
return $template;
}
WPBMap::addAllMappedShortcodes();
if ( 'my_templates' === $template_type ) {
$saved_templates = get_option( $this->getTemplatesEditor()->getOptionName() );
$content = trim( $saved_templates[ $template_id ]['template'] );
$content = str_replace( '\"', '"', $content );
$pattern = get_shortcode_regex();
$template = preg_replace_callback( "/{$pattern}/s", 'vc_convert_shortcode', $content );
} else {
if ( 'default_templates' === $template_type ) {
$template_data = $this->getTemplatesEditor()->getDefaultTemplate( (int) $template_id );
if ( isset( $template_data['content'] ) ) {
$template = $template_data['content'];
}
} else {
$template_preview = apply_filters( 'vc_templates_render_backend_template_preview', $template_id, $template_type );
if ( (string) $template_preview !== (string) $template_id ) {
$template = $template_preview;
}
}
}
return $template;
}
/**
* @param $type
* @return string|null
*/
public function getTemplateByPostType( $type ) {
$value = $this->get();
return isset( $value[ $type ] ) ? $this->getTemplate( $value[ $type ] ) : null;
}
/**
* @param $settings
* @return mixed
*/
public function sanitize( $settings ) {
foreach ( $settings as $type => $template ) {
if ( empty( $template ) ) {
unset( $settings[ $type ] );
} elseif ( ! $this->isValidPostType( $type ) || ! $this->getTemplate( $template ) ) {
add_settings_error( $this->getFieldKey(), 1, esc_html__( 'Invalid template or post type.', 'js_composer' ), 'error' );
return $settings;
}
}
return $settings;
}
public function render() {
vc_include_template( 'pages/vc-settings/default-template-post-type.tpl.php', array(
'post_types' => $this->getPostTypes(),
'templates' => $this->getTemplates(),
'title' => $this->getFieldName(),
'value' => $this->get(),
'field_key' => $this->getFieldKey(),
) );
}
/**
* Add field settings page
*
* Method called by vc hook vc_settings_tab-general.
*/
public function addField() {
vc_settings()->addField( $this->tab, $this->getFieldName(), $this->key, array(
$this,
'sanitize',
), array(
$this,
'render',
) );
}
}
/**
* Start only for admin part with hooks
*/
if ( is_admin() ) {
/**
* Initialize Vc_Setting_Post_Type_Default_Template_Field
* Called by admin_init hook
*/
function vc_settings_post_type_default_template_field_init() {
new Vc_Setting_Post_Type_Default_Template_Field( 'general', 'default_template_post_type' );
}
add_filter( 'default_content', 'vc_set_default_content_for_post_type', 100, 2 );
add_action( 'admin_init', 'vc_settings_post_type_default_template_field_init', 8 );
}
autoload/vc-pointers-backend-editor.php 0000644 00000006104 15021217214 0014203 0 ustar 00 is_block_editor() ) {
$block = true;
}
}
if ( ! $block || 'add' === $screen->action ) {
$pointers['vc_pointers_backend_editor'] = array(
'name' => 'vcPointerController',
'messages' => array(
array(
'target' => '.composer-switch',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Welcome to WPBakery Page Builder', 'js_composer' ), esc_html__( 'Choose Backend or Frontend editor.', 'js_composer' ) ),
'position' => array(
'edge' => 'left',
'align' => 'center',
),
'buttonsEvent' => 'vcPointersEditorsTourEvents',
),
),
array(
'target' => '#vc_templates-editor-button, #vc-templatera-editor-button',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Add Elements', 'js_composer' ), esc_html__( 'Add new element or start with a template.', 'js_composer' ) ),
'position' => array(
'edge' => 'left',
'align' => 'center',
),
'buttonsEvent' => 'vcPointersEditorsTourEvents',
),
'closeEvent' => 'shortcodes:vc_row:add',
'showEvent' => 'backendEditor.show',
),
array(
'target' => '[data-vc-control="add"]:first',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Rows and Columns', 'js_composer' ), esc_html__( 'This is a row container. Divide it into columns and style it. You can add elements into columns.', 'js_composer' ) ),
'position' => array(
'edge' => 'left',
'align' => 'center',
),
'buttonsEvent' => 'vcPointersEditorsTourEvents',
),
'closeEvent' => 'click #wpb_visual_composer',
'showEvent' => 'shortcodeView:ready',
),
array(
'target' => '.wpb_column_container:first .wpb_content_element:first .vc_controls-cc',
'options' => array(
'content' => sprintf( ' %s %s %s
', esc_html__( 'Control Elements', 'js_composer' ), esc_html__( 'You can edit your element at any time and drag it around your layout.', 'js_composer' ), sprintf( esc_html__( 'P.S. Learn more at our %sKnowledge Base%s.', 'js_composer' ), '', ' ' ) ),
'position' => array(
'edge' => 'left',
'align' => 'center',
),
'buttonsEvent' => 'vcPointersEditorsTourEvents',
),
'showCallback' => 'vcPointersShowOnContentElementControls',
'closeEvent' => 'click #wpb_visual_composer',
),
),
);
}
return $pointers;
}
autoload/hook-vc-grid.php 0000644 00000013715 15021217214 0011360 0 ustar 00 grid_id_unique_name // 4: GridId must exist
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. ')+' . ')'
. ')' . '(?:' . '(\\/)' // 5: Self closing tag ...
. '\\]' // ... and closing bracket
. '|' . '\\]' // Closing bracket
. '(?:' . '(' // 6: Unroll the loop: Optionally, anything between the opening and closing shortcode tags
. '[^\\[]*+' // Not an opening bracket
. '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
. '[^\\[]*+' // Not an opening bracket
. ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag
. ')?' . ')' . '(\\]?)'; // 7: Optional second closing brocket for escaping shortcodes: [[tag]]
}
/**
* @param array $settings
* @param $post_id
* @param $post
*
* @return array
* @since 4.4.3
*
*/
public function gridSavePostSettingsId( array $settings, $post_id, $post ) {
$pattern = $this->getShortcodeRegexForId();
$content = stripslashes( $post->post_content );
preg_match_all( "/$pattern/", $content, $found ); // fetch only needed shortcodes
if ( is_array( $found ) && ! empty( $found[0] ) ) {
$to_save = array();
if ( isset( $found[1] ) && is_array( $found[1] ) ) {
foreach ( $found[1] as $key => $parse_able ) {
if ( empty( $parse_able ) || '[' !== $parse_able ) {
$id_pattern = '/' . $this->grid_id_unique_name . '\:([\w\-_]+)/';
$id_value = $found[4][ $key ];
preg_match( $id_pattern, $id_value, $id_matches );
if ( ! empty( $id_matches ) ) {
$id_to_save = $id_matches[1];
// why we need to check if shortcode is parse able?
// 1: if it is escaped it must not be displayed (parsed)
// 2: so if 1 is true it must not be saved in database meta
$shortcode_tag = $found[2][ $key ];
$shortcode_atts_string = $found[3][ $key ];
/** @var array $atts */
$atts = shortcode_parse_atts( $shortcode_atts_string );
$content = $found[6][ $key ];
$data = array(
'tag' => $shortcode_tag,
'atts' => $atts,
'content' => $content,
);
$to_save[ $id_to_save ] = $data;
}
}
}
}
if ( ! empty( $to_save ) ) {
$settings['vc_grid_id'] = array( 'shortcodes' => $to_save );
}
}
return $settings;
}
/**
* @throws \Exception
* @since 4.4
*
* @output/@return string - grid data for ajax request.
*/
public function getGridDataForAjax() {
$tag = str_replace( '.', '', vc_request_param( 'tag' ) );
$allowed = apply_filters( 'vc_grid_get_grid_data_access', vc_verify_public_nonce() && $tag, $tag );
if ( $allowed ) {
$shortcode_fishbone = visual_composer()->getShortCode( $tag );
if ( is_object( $shortcode_fishbone ) && vc_get_shortcode( $tag ) ) {
/** @var WPBakeryShortcode_Vc_Basic_Grid $vc_grid */
$vc_grid = $shortcode_fishbone->shortcodeClass();
if ( method_exists( $vc_grid, 'isObjectPageable' ) && $vc_grid->isObjectPageable() && method_exists( $vc_grid, 'renderAjax' ) ) {
// @codingStandardsIgnoreLine
$renderAjaxResponse = apply_filters( 'vc_get_vc_grid_data_response', $vc_grid->renderAjax( vc_request_param( 'data' ), $tag, $vc_grid ) );
wp_die( $renderAjaxResponse );
}
}
}
}
}
/**
* @since 4.4
* @var Vc_Hooks_Vc_Grid $hook
*/
$hook = new Vc_Hooks_Vc_Grid();
// when WPBakery Page Builder initialized let's trigger Vc_Grid hooks.
add_action( 'vc_after_init', array(
$hook,
'load',
) );
if ( 'vc_edit_form' === vc_post_param( 'action' ) ) {
VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_Vc_Basic_Grid' );
add_filter( 'vc_edit_form_fields_attributes_vc_basic_grid', array(
'WPBakeryShortCode_Vc_Basic_Grid',
'convertButton2ToButton3',
) );
add_filter( 'vc_edit_form_fields_attributes_vc_media_grid', array(
'WPBakeryShortCode_Vc_Basic_Grid',
'convertButton2ToButton3',
) );
add_filter( 'vc_edit_form_fields_attributes_vc_masonry_grid', array(
'WPBakeryShortCode_Vc_Basic_Grid',
'convertButton2ToButton3',
) );
add_filter( 'vc_edit_form_fields_attributes_vc_masonry_media_grid', array(
'WPBakeryShortCode_Vc_Basic_Grid',
'convertButton2ToButton3',
) );
}
autoload/params/hidden.php 0000644 00000000717 15021217214 0011603 0 ustar 00 ' . '';
$vc_grid_item_templates = Vc_Grid_Item::predefinedTemplates();
if ( is_array( $vc_grid_item_templates ) ) {
foreach ( $vc_grid_item_templates as $key => $data ) {
$output .= '' . esc_html( $data['name'] ) . ' ';
}
}
$grid_item_posts = get_posts( array(
'posts_per_page' => '-1',
'orderby' => 'post_title',
'post_type' => Vc_Grid_Item_Editor::postType(),
) );
foreach ( $grid_item_posts as $post ) {
$output .= 'ID === $value ? ' selected="true"' : '' ) . '>' . esc_html( $post->post_title ) . ' ';
}
$output .= ' ';
return $output;
}
function vc_load_vc_grid_item_param() {
vc_add_shortcode_param( 'vc_grid_item', 'vc_vc_grid_item_form_field' );
}
add_action( 'vc_load_default_params', 'vc_load_vc_grid_item_param' );
/**
* @param $target
* @return string
*/
function vc_gitem_post_data_get_link_target_frontend_editor( $target ) {
return ' target="_blank"';
}
/**
* @param $rel
* @return string
*/
function vc_gitem_post_data_get_link_rel_frontend_editor( $rel ) {
return ' rel="' . esc_attr( $rel ) . '"';
}
/**
* @param $atts
* @param string $default_class
* @param string $title
* @return string
*/
function vc_gitem_create_link( $atts, $default_class = '', $title = '' ) {
$link = '';
$target = '';
$rel = '';
$title_attr = '';
$css_class = 'vc_gitem-link' . ( strlen( $default_class ) > 0 ? ' ' . $default_class : '' );
if ( isset( $atts['link'] ) ) {
if ( 'custom' === $atts['link'] && ! empty( $atts['url'] ) ) {
$link = vc_build_link( $atts['url'] );
if ( strlen( $link['target'] ) ) {
$target = ' target="' . esc_attr( $link['target'] ) . '"';
}
if ( strlen( $link['rel'] ) ) {
$rel = ' rel="' . esc_attr( $link['rel'] ) . '"';
}
if ( strlen( $link['title'] ) ) {
$title = $link['title'];
}
$link = 'a href="' . esc_url( $link['url'] ) . '" class="' . esc_attr( $css_class ) . '"';
} elseif ( 'post_link' === $atts['link'] ) {
$link = 'a href="{{ post_link_url }}" class="' . esc_attr( $css_class ) . '"';
if ( ! strlen( $title ) ) {
$title = '{{ post_title }}';
}
} elseif ( 'post_author' === $atts['link'] ) {
$link = 'a href="{{ post_author_href }}" class="' . esc_attr( $css_class ) . '"';
if ( ! strlen( $title ) ) {
$title = '{{ post_author }}';
}
} elseif ( 'image' === $atts['link'] ) {
$link = 'a{{ post_image_url_href }} class="' . esc_attr( $css_class ) . '"';
} elseif ( 'image_lightbox' === $atts['link'] ) {
$link = 'a{{ post_image_url_attr_prettyphoto:' . $css_class . ' }}';
}
}
if ( strlen( $title ) > 0 ) {
$title_attr = ' title="' . esc_attr( $title ) . '"';
}
return apply_filters( 'vc_gitem_post_data_get_link_link', $link, $atts, $css_class ) . apply_filters( 'vc_gitem_post_data_get_link_target', $target, $atts ) . apply_filters( 'vc_gitem_post_data_get_link_rel', $rel, $atts ) . apply_filters( 'vc_gitem_post_data_get_link_title', $title_attr, $atts );
}
/**
* @param $atts
* @param $post
* @param string $default_class
* @param string $title
* @return string
*/
function vc_gitem_create_link_real( $atts, $post, $default_class = '', $title = '' ) {
$link = '';
$target = '';
$rel = '';
$title_attr = '';
$link_css_class = 'vc_gitem-link';
if ( isset( $atts['link'] ) ) {
$link_css_class = 'vc_gitem-link' . ( strlen( $default_class ) > 0 ? ' ' . $default_class : '' );
if ( strlen( $atts['el_class'] ) > 0 ) {
$link_css_class .= ' ' . $atts['el_class'];
}
$link_css_class = trim( preg_replace( '/\s+/', ' ', $link_css_class ) );
if ( 'custom' === $atts['link'] && ! empty( $atts['url'] ) ) {
$link = vc_build_link( $atts['url'] );
if ( strlen( $link['target'] ) ) {
$target = ' target="' . esc_attr( $link['target'] ) . '"';
}
if ( strlen( $link['rel'] ) ) {
$rel = ' rel="' . esc_attr( $link['rel'] ) . '"';
}
if ( strlen( $link['title'] ) ) {
$title = $link['title'];
}
$link = 'a href="' . esc_url( $link['url'] ) . '" class="' . esc_attr( $link_css_class ) . '"';
} elseif ( 'post_link' === $atts['link'] ) {
$link = 'a href="' . esc_url( get_permalink( $post->ID ) ) . '" class="' . esc_attr( $link_css_class ) . '"';
if ( ! strlen( $title ) ) {
$title = the_title( '', '', false );
}
} elseif ( 'image' === $atts['link'] ) {
$href_link = vc_gitem_template_attribute_post_image_url( '', array(
'post' => $post,
'data' => '',
) );
$link = 'a href="' . esc_url( $href_link ) . '" class="' . esc_attr( $link_css_class ) . '"';
} elseif ( 'image_lightbox' === $atts['link'] ) {
$link = 'a' . vc_gitem_template_attribute_post_image_url_attr_prettyphoto( '', array(
'post' => $post,
'data' => esc_attr( $link_css_class ),
) );
}
}
if ( strlen( $title ) > 0 ) {
$title_attr = ' title="' . esc_attr( $title ) . '"';
}
return apply_filters( 'vc_gitem_post_data_get_link_real_link', $link, $atts, $post, $link_css_class ) . apply_filters( 'vc_gitem_post_data_get_link_real_target', $target, $atts, $post ) . apply_filters( 'vc_gitem_post_data_get_link_real_rel', $rel, $atts, $post ) . apply_filters( 'vc_gitem_post_data_get_link_real_title', $title_attr, $atts );
}
/**
* @param $link
* @return string
*/
function vc_gitem_post_data_get_link_link_frontend_editor( $link ) {
return empty( $link ) ? 'a' : $link;
}
if ( vc_is_page_editable() ) {
add_filter( 'vc_gitem_post_data_get_link_link', 'vc_gitem_post_data_get_link_link_frontend_editor' );
add_filter( 'vc_gitem_post_data_get_link_real_link', 'vc_gitem_post_data_get_link_link_frontend_editor' );
add_filter( 'vc_gitem_post_data_get_link_target', 'vc_gitem_post_data_get_link_target_frontend_editor' );
add_filter( 'vc_gitem_post_data_get_link_rel', 'vc_gitem_post_data_get_link_rel_frontend_editor' );
add_filter( 'vc_gitem_post_data_get_link_real_target', 'vc_gitem_post_data_get_link_target_frontend_editor' );
add_filter( 'vc_gitem_post_data_get_link_real_rel', 'vc_gitem_post_data_get_link_rel_frontend_editor' );
}
autoload/vc-pages/page-design-options.php 0000644 00000012022 15021217214 0014436 0 ustar 00 getCustomCssVersion();
if ( vc_user_access()->wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-color-tab' )
->get() && vc_settings()->useCustomCss() && ( ! $version || version_compare( WPB_VC_VERSION, $version, '<>' ) ) ) {
add_action( 'admin_notices', 'vc_custom_css_admin_notice' );
}
}
/**
* Display admin notice depending on current page
*
* @since 4.5
*/
function vc_custom_css_admin_notice() {
global $current_screen;
vc_settings()->set( 'compiled_js_composer_less', '' );
$class = 'notice notice-warning vc_settings-custom-design-notice';
$message_important = esc_html__( 'Important notice', 'js_composer' );
if ( is_object( $current_screen ) && isset( $current_screen->id ) && 'visual-composer_page_vc-color' === $current_screen->id ) {
$message = esc_html__( 'You have an outdated version of WPBakery Page Builder Design Options. It is required to review and save it.', 'js_composer' );
echo '' . esc_html( $message_important ) . ' : ' . esc_html( $message ) . '
';
} else {
$message = esc_html__( 'You have an outdated version of WPBakery Page Builder Design Options. It is required to review and save it.', 'js_composer' );
$btnClass = 'button button-primary button-large vc_button-settings-less';
echo '';
}
}
/**
* @param $submitButtonAttributes
* @return mixed
*/
function vc_page_settings_tab_color_submit_attributes( $submitButtonAttributes ) {
$submitButtonAttributes['data-vc-less-path'] = vc_str_remove_protocol( vc_asset_url( 'less/js_composer.less' ) );
$submitButtonAttributes['data-vc-less-root'] = vc_str_remove_protocol( vc_asset_url( 'less' ) );
$submitButtonAttributes['data-vc-less-variables'] = wp_json_encode( apply_filters( 'vc_settings-less-variables', array(
// Main accent color:
'vc_grey' => array(
'key' => 'wpb_js_vc_color',
'default' => vc_settings()->getDefault( 'vc_color' ),
),
// Hover color
'vc_grey_hover' => array(
'key' => 'wpb_js_vc_color_hover',
'default' => vc_settings()->getDefault( 'vc_color_hover' ),
),
'vc_image_slider_link_active' => 'wpb_js_vc_color_hover',
// Call to action background color
'vc_call_to_action_bg' => 'wpb_js_vc_color_call_to_action_bg',
'vc_call_to_action_2_bg' => 'wpb_js_vc_color_call_to_action_bg',
'vc_call_to_action_border' => array(
'key' => 'wpb_js_vc_color_call_to_action_border',
// darken 5%
'default_key' => 'wpb_js_vc_color',
'modify_output' => array(
array(
'plain' => array(
'darken({{ value }}, 5%)',
),
),
),
),
// Google maps background color
'vc_google_maps_bg' => 'wpb_js_vc_color_google_maps_bg',
// Post slider caption background color
'vc_post_slider_caption_bg' => 'wpb_js_vc_color_post_slider_caption_bg',
// Progress bar background color
'vc_progress_bar_bg' => 'wpb_js_vc_color_progress_bar_bg',
// Separator border color
'vc_separator_border' => 'wpb_js_vc_color_separator_border',
// Tabs navigation background color
'vc_tab_bg' => 'wpb_js_vc_color_tab_bg',
// Active tab background color
'vc_tab_bg_active' => 'wpb_js_vc_color_tab_bg_active',
// Elements bottom margin
'vc_element_margin_bottom' => array(
'key' => 'wpb_js_margin',
'default' => vc_settings()->getDefault( 'margin' ),
),
// Grid gutter width
'grid-gutter-width' => array(
'key' => 'wpb_js_gutter',
'default' => vc_settings()->getDefault( 'gutter' ),
'modify_output' => array(
array(
'plain' => array(
'{{ value }}px',
),
),
),
),
'screen-sm-min' => array(
'key' => 'wpb_js_responsive_max',
'default' => vc_settings()->getDefault( 'responsive_max' ),
'modify_output' => array(
array(
'plain' => array(
'{{ value }}px',
),
),
),
),
) ) );
return $submitButtonAttributes;
}
function vc_page_settings_desing_options_load() {
add_filter( 'vc_settings-tab-submit-button-attributes-color', 'vc_page_settings_tab_color_submit_attributes' );
wp_enqueue_script( 'vc_less_js', vc_asset_url( 'lib/bower/lessjs/dist/less.min.js' ), array(), WPB_VC_VERSION, true );
}
add_action( 'vc-settings-render-tab-vc-color', 'vc_page_settings_desing_options_load' );
autoload/vc-pages/settings-tabs.php 0000644 00000002313 15021217214 0013353 0 ustar 00 renderTab( $page );
}
function vc_page_settings_build() {
if ( ! vc_user_access()->wpAny( 'manage_options' )->get() ) {
return;
}
$tabs = vc_settings()->getTabs();
foreach ( $tabs as $slug => $title ) {
$has_access = vc_user_access()->part( 'settings' )->can( $slug . '-tab' )->get();
if ( $has_access ) {
$page = add_submenu_page( VC_PAGE_MAIN_SLUG, $title, $title, 'manage_options', $slug, 'vc_page_settings_render' );
add_action( 'load-' . $page, array(
vc_settings(),
'adminLoad',
) );
}
}
do_action( 'vc_page_settings_build' );
}
function vc_page_settings_admin_init() {
vc_settings()->initAdmin();
}
add_action( 'vc_menu_page_build', 'vc_page_settings_build' );
add_action( 'vc_network_menu_page_build', 'vc_page_settings_build' );
add_action( 'admin_init', 'vc_page_settings_admin_init' );
add_action( 'vc-settings-render-tab-vc-roles', 'vc_settings_enqueue_js' );
function vc_settings_enqueue_js() {
// enqueue accordion in vc-roles page only
wp_enqueue_script( 'vc_accordion_script' );
}
autoload/vc-pages/page-custom-css.php 0000644 00000000521 15021217214 0013575 0 ustar 00 $value ) {
$new[ $key ] = $value;
if ( 'vc-general' === $key ) {
$new['vc-roles'] = esc_html__( 'Role Manager', 'js_composer' );
}
}
$tabs = $new;
} else {
$tabs['vc-roles'] = esc_html__( 'Roles Manager', 'js_composer' );
}
return $tabs;
}
if ( ! is_network_admin() ) {
add_filter( 'vc_settings_tabs', 'vc_settings_tabs_vc_roles' );
}
/**
* @return string
*/
function vc_settings_render_tab_vc_roles() {
return 'pages/vc-settings/tab-vc-roles.php';
}
add_filter( 'vc_settings-render-tab-vc-roles', 'vc_settings_render_tab_vc_roles' );
function vc_roles_settings_save() {
if ( check_admin_referer( 'vc_settings-roles-action', 'vc_nonce_field' ) && current_user_can( 'manage_options' ) ) {
require_once vc_path_dir( 'SETTINGS_DIR', 'class-vc-roles.php' );
$vc_roles = new Vc_Roles();
$data = $vc_roles->save( vc_request_param( 'vc_roles', array() ) );
echo wp_json_encode( $data );
die();
}
}
add_action( 'wp_ajax_vc_roles_settings_save', 'vc_roles_settings_save' );
if ( 'vc-roles' === vc_get_param( 'page' ) ) {
function vc_settings_render_tab_vc_roles_scripts() {
wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
}
add_action( 'admin_init', 'vc_settings_render_tab_vc_roles_scripts' );
}
autoload/vc-pages/welcome-screen.php 0000644 00000006166 15021217214 0013506 0 ustar 00 render();
}
}
function vc_page_welcome_add_sub_page() {
// Add submenu page
$page = add_submenu_page( VC_PAGE_MAIN_SLUG, esc_html__( 'About', 'js_composer' ), esc_html__( 'About', 'js_composer' ), 'edit_posts', vc_page_welcome_slug(), 'vc_page_welcome_render' );
// Css for perfect styling.
add_action( 'admin_print_styles-' . $page, 'vc_page_css_enqueue' );
}
function vc_welcome_menu_hooks() {
$settings_tab_enabled = vc_user_access()->wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-general-tab' )->get();
add_action( 'vc_menu_page_build', 'vc_page_welcome_add_sub_page', $settings_tab_enabled ? 11 : 1 );
}
function vc_welcome_menu_hooks_network() {
if ( ! vc_is_network_plugin() ) {
return;
}
$settings_tab_enabled = vc_user_access()->wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-general-tab' )->get();
add_action( 'vc_network_menu_page_build', 'vc_page_welcome_add_sub_page', $settings_tab_enabled && ! is_main_site() ? 11 : 1 );
}
add_action( 'admin_menu', 'vc_welcome_menu_hooks', 9 );
add_action( 'network_admin_menu', 'vc_welcome_menu_hooks_network', 9 );
/**
* ====================
* Redirect to welcome page on plugin activation.
* ====================
*/
/**
* Set redirect transition on update or activation
* @since 4.5
*/
function vc_page_welcome_set_redirect() {
if ( ! is_network_admin() && ! vc_get_param( 'activate-multi' ) ) {
set_transient( '_vc_page_welcome_redirect', 1, 30 );
}
}
/**
* Do redirect if required on welcome page
* @since 4.5
*/
function vc_page_welcome_redirect() {
$redirect = get_transient( '_vc_page_welcome_redirect' );
delete_transient( '_vc_page_welcome_redirect' );
if ( $redirect ) {
wp_safe_redirect( admin_url( 'admin.php?page=' . rawurlencode( vc_page_welcome_slug() ) ) );
}
}
// Enables redirect on activation.
add_action( 'vc_activation_hook', 'vc_page_welcome_set_redirect' );
add_action( 'admin_init', 'vc_page_welcome_redirect' );
/**
* @return mixed|void
*/
function vc_get_page_welcome_tabs() {
global $vc_page_welcome_tabs;
$vc_page_welcome_tabs = apply_filters( 'vc_page-welcome-slugs-list', array(
'vc-welcome' => esc_html__( 'What\'s New', 'js_composer' ),
'vc-faq' => esc_html__( 'FAQ', 'js_composer' ),
'vc-resources' => esc_html__( 'Resources', 'js_composer' ),
) );
return $vc_page_welcome_tabs;
}
autoload/vc-pages/pages.php 0000644 00000004344 15021217214 0011671 0 ustar 00 setSlug( $tab )->setTitle( $title )->setTemplatePath( 'pages/' . $slug . '/' . $tab . '.php' );
// Create page group to stick with other in template.
$pages_group = new Vc_Pages_Group();
$pages_group->setSlug( $slug )->setPages( $vc_page_welcome_tabs )->setActivePage( $page )->setTemplatePath( 'pages/vc-welcome/index.php' );
return $pages_group;
}
/**
* @since 4.5
*/
function vc_menu_page_build() {
if ( vc_user_access()->wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-general-tab' )->get() ) {
define( 'VC_PAGE_MAIN_SLUG', 'vc-general' );
} else {
define( 'VC_PAGE_MAIN_SLUG', 'vc-welcome' );
}
add_menu_page( esc_html__( 'WPBakery Page Builder', 'js_composer' ), esc_html__( 'WPBakery Page Builder', 'js_composer' ), 'edit_posts', VC_PAGE_MAIN_SLUG, null, vc_asset_url( 'vc/logo/wpb-logo-white_32.svg' ), 76 );
do_action( 'vc_menu_page_build' );
}
function vc_network_menu_page_build() {
if ( ! vc_is_network_plugin() ) {
return;
}
if ( vc_user_access()->wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-general-tab' )->get() && ! is_main_site() ) {
define( 'VC_PAGE_MAIN_SLUG', 'vc-general' );
} else {
define( 'VC_PAGE_MAIN_SLUG', 'vc-welcome' );
}
add_menu_page( esc_html__( 'WPBakery Page Builder', 'js_composer' ), esc_html__( 'WPBakery Page Builder', 'js_composer' ), 'exist', VC_PAGE_MAIN_SLUG, null, vc_asset_url( 'vc/logo/wpb-logo-white_32.svg' ), 76 );
do_action( 'vc_network_menu_page_build' );
}
add_action( 'admin_menu', 'vc_menu_page_build' );
add_action( 'network_admin_menu', 'vc_network_menu_page_build' );
autoload/vc-pages/automapper.php 0000644 00000001426 15021217214 0012745 0 ustar 00 wpAny( 'manage_options' )->part( 'settings' )->can( 'vc-automapper-tab' )->get() ) {
vc_automapper()->addAjaxActions();
}
}
/**
* Returns automapper template.
*
* @return string
* @since 4.5
*/
function vc_page_automapper_build() {
return 'pages/vc-settings/vc-automapper.php';
}
// TODO: move to separate file in autoload
add_filter( 'vc_settings-render-tab-vc-automapper', 'vc_page_automapper_build' );
is_admin() && ( strpos( vc_request_param( 'action' ), 'vc_automapper' ) !== false || 'vc-automapper' === vc_get_param( 'page' ) ) && add_action( 'admin_init', 'vc_automapper_init' );
autoload/vc-settings-presets.php 0000644 00000016122 15021217214 0013013 0 ustar 00 part( 'presets' )->checkStateAny( true, null )->validateDie(); // user must have permission to save presets
$id = Vc_Settings_Preset::saveSettingsPreset( vc_post_param( 'shortcode_name' ), vc_post_param( 'title' ), vc_post_param( 'data' ), vc_post_param( 'is_default' ) );
$response = array(
'success' => (bool) $id,
'html' => Vc_Settings_Preset::getRenderedSettingsPresetPopup( vc_post_param( 'shortcode_name' ) ),
'id' => $id,
);
wp_send_json( $response );
}
/**
* Set existing preset as default
*
* Include freshly rendered html in response
*
* Required _POST params:
* - id int
* - shortcode_name string
*
* @since 4.7
*/
function vc_action_set_as_default_settings_preset() {
vc_include_settings_preset_class();
vc_user_access()->part( 'presets' )->checkStateAny( true, null )->validateDie(); // user must have permission to set as default presets
$id = vc_post_param( 'id' );
$shortcode_name = vc_post_param( 'shortcode_name' );
$status = Vc_Settings_Preset::setAsDefaultSettingsPreset( $id, $shortcode_name );
$response = array(
'success' => $status,
'html' => Vc_Settings_Preset::getRenderedSettingsPresetPopup( $shortcode_name ),
);
wp_send_json( $response );
}
/**
* Unmark current default preset as default
*
* Include freshly rendered html in response
*
* Required _POST params:
* - shortcode_name string
*
* @since 4.7
*/
function vc_action_restore_default_settings_preset() {
vc_include_settings_preset_class();
vc_user_access()->part( 'presets' )->checkStateAny( true, null )->validateDie(); // user must have permission to restore presets
$shortcode_name = vc_post_param( 'shortcode_name' );
$status = Vc_Settings_Preset::setAsDefaultSettingsPreset( null, $shortcode_name );
$response = array(
'success' => $status,
'html' => Vc_Settings_Preset::getRenderedSettingsPresetPopup( $shortcode_name ),
);
wp_send_json( $response );
}
/**
* Delete specific settings preset
*
* Include freshly rendered html in response
*
* Required _POST params:
* - shortcode_name string
* - id int
*
* @since 4.7
*/
function vc_action_delete_settings_preset() {
vc_include_settings_preset_class();
vc_user_access()->part( 'presets' )->checkStateAny( true, null )->validateDie(); // user must have permission to delete presets
$default = get_post_meta( vc_post_param( 'id' ), '_vc_default', true );
$status = Vc_Settings_Preset::deleteSettingsPreset( vc_post_param( 'id' ) );
$response = array(
'success' => $status,
'default' => $default,
'html' => Vc_Settings_Preset::getRenderedSettingsPresetPopup( vc_post_param( 'shortcode_name' ) ),
);
wp_send_json( $response );
}
/**
* Get data for specific settings preset
*
* Required _POST params:
* - id int
*
* @since 4.7
*/
function vc_action_get_settings_preset() {
vc_include_settings_preset_class();
$data = Vc_Settings_Preset::getSettingsPreset( vc_post_param( 'id' ), true );
if ( false !== $data ) {
$response = array(
'success' => true,
'data' => $data,
);
} else {
$response = array(
'success' => false,
);
}
wp_send_json( $response );
}
/**
* Respond with rendered popup menu
*
* Required _POST params:
* - shortcode_name string
*
* @since 4.7
*/
function vc_action_render_settings_preset_popup() {
vc_include_settings_preset_class();
$html = Vc_Settings_Preset::getRenderedSettingsPresetPopup( vc_post_param( 'shortcode_name' ) );
$response = array(
'success' => true,
'html' => $html,
);
wp_send_json( $response );
}
/**
* Return rendered title prompt
*
* @since 4.7
*
*/
function vc_action_render_settings_preset_title_prompt() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'presets' )->can()->validateDie();
ob_start();
vc_include_template( apply_filters( 'vc_render_settings_preset_title_prompt', 'editors/partials/prompt-presets.tpl.php' ) );
$html = ob_get_clean();
$response = array(
'success' => true,
'html' => $html,
);
wp_send_json( $response );
}
/**
* Return rendered template prompt
*/
function vc_action_render_settings_templates_prompt() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->can()->validateDie();
ob_start();
vc_include_template( apply_filters( 'vc_render_settings_preset_title_prompt', 'editors/partials/prompt-templates.tpl.php' ) );
$html = ob_get_clean();
$response = array(
'success' => true,
'html' => $html,
);
wp_send_json( $response );
}
/**
* Register (add) new vendor preset
*
* @since 4.8
*
* @param string $title
* @param string $shortcode
* @param array $params
* @param bool $default
*/
function vc_register_settings_preset( $title, $shortcode, $params, $default = false ) {
vc_vendor_preset()->add( $title, $shortcode, $params, $default );
}
/**
* @param $shortcodes
* @return array
* @throws \Exception
*/
function vc_add_new_elements_to_box( $shortcodes ) {
require_once vc_path_dir( 'AUTOLOAD_DIR', 'class-vc-settings-presets.php' );
return Vc_Settings_Preset::addVcPresetsToShortcodes( $shortcodes );
}
/**
* @param $cat
* @return array
*/
function vc_add_new_category_filter( $cat ) {
require_once vc_path_dir( 'AUTOLOAD_DIR', 'class-vc-settings-presets.php' );
return Vc_Settings_Preset::addPresetCategory( $cat );
}
autoload/ui-vc-pointers.php 0000644 00000006024 15021217214 0011746 0 ustar 00 id;
// Get pointers for this screen
$pointers = apply_filters( 'vc-ui-pointers', array() );
$pointers = apply_filters( 'vc_ui-pointers-' . $screen_id, $pointers );
if ( ! $pointers || ! is_array( $pointers ) ) {
return;
}
// Get dismissed pointers
$dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
$vc_pointers = array( 'pointers' => array() );
// Check pointers and remove dismissed ones.
foreach ( $pointers as $pointer_id => $pointer ) {
// Sanity check
if ( in_array( $pointer_id, $dismissed, true ) || empty( $pointer ) || empty( $pointer_id ) || empty( $pointer['name'] ) ) {
continue;
}
$pointer['pointer_id'] = $pointer_id;
// Add the pointer to $valid_pointers array
$vc_pointers['pointers'][] = $pointer;
}
// No valid pointers? Stop here.
if ( empty( $vc_pointers['pointers'] ) ) {
return;
}
wp_enqueue_style( 'wp-pointer' );
wp_enqueue_script( 'wp-pointer' );
// messages
$vc_pointers['texts'] = array(
'finish' => esc_html__( 'Finish', 'js_composer' ),
'next' => esc_html__( 'Next', 'js_composer' ),
'prev' => esc_html__( 'Prev', 'js_composer' ),
);
// Add pointer options to script.
wp_localize_script( 'wp-pointer', 'vcPointer', $vc_pointers );
}
/**
* Remove Vc pointers keys to show Tour markers again.
* @sine 4.5
*/
function vc_pointer_reset() {
global $vc_default_pointers;
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'manage_options' )->validateDie()->part( 'settings' )->can( 'vc-general-tab' )->validateDie();
$pointers = (array) apply_filters( 'vc_pointers_list', $vc_default_pointers );
$prev_meta_value = get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true );
$dismissed = explode( ',', (string) $prev_meta_value );
if ( count( $dismissed ) > 0 && count( $pointers ) ) {
$meta_value = implode( ',', array_diff( $dismissed, $pointers ) );
update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $meta_value, $prev_meta_value );
}
wp_send_json( array( 'success' => true ) );
}
/**
* Reset tour guid
* @return bool
*/
function vc_pointers_is_dismissed() {
global $vc_default_pointers;
$pointers = (array) apply_filters( 'vc_pointers_list', $vc_default_pointers );
$prev_meta_value = get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true );
$dismissed = explode( ',', (string) $prev_meta_value );
return count( array_diff( $dismissed, $pointers ) ) < count( $dismissed );
}
add_action( 'wp_ajax_vc_pointer_reset', 'vc_pointer_reset' );
autoload/vc-shortcode-autoloader.php 0000644 00000015523 15021217214 0013623 0 ustar 00 loadConfig();
}
/**
* Include class dependencies
*
* @param string $class Class name
*
* @return string[] Included (if any) files
*/
public static function includeClass( $class ) {
// call the constructor (php 7.4 compat)
self::getInstance();
if ( ! is_array( self::$config ) ) {
self::loadConfig();
}
$class = strtolower( $class );
$files = array();
if ( self::$config['classmap'] ) {
$files = isset( self::$config['classmap'][ $class ] ) ? self::$config['classmap'][ $class ] : array();
}
if ( $files ) {
foreach ( $files as $k => $file ) {
if ( self::$cached ) {
$files[ $k ] = $file = self::$config['root_dir'] . DIRECTORY_SEPARATOR . $file;
}
if ( is_file( $file ) ) {
require_once $file;
}
}
}
return $files;
}
/**
* Find all classes defined in file
*
* @param string $file Full path to file
*
* @return string[]
*/
public static function extractClassNames( $file ) {
$classes = array();
// @codingStandardsIgnoreLine
$contents = file_get_contents( $file );
if ( ! $contents ) {
return $classes;
}
$tokens = token_get_all( $contents );
$class_token = false;
foreach ( $tokens as $token ) {
if ( is_array( $token ) ) {
if ( T_CLASS === $token[0] ) {
$class_token = true;
} elseif ( $class_token && T_STRING === $token[0] ) {
$classes[] = $token[1];
$class_token = false;
}
}
}
return $classes;
}
/**
* Extract all classes from file with their extends
*
* @param $file
*
* @return array Associative array where key is class name and value is parent class name (if any))
*/
public static function extractClassesAndExtends( $file ) {
$classes = array();
// @codingStandardsIgnoreLine
$contents = file_get_contents( $file );
if ( ! $contents ) {
return $classes;
}
// class Foo extends Bar {
preg_match_all( '/class\s+(\w+)\s+extends\s(\w+)\s+\{/i', $contents, $matches, PREG_SET_ORDER );
foreach ( $matches as $v ) {
$classes[ $v[1] ] = $v[2];
}
// class Foo {
preg_match_all( '/class\s+(\w+)\s+\{/i', $contents, $matches, PREG_SET_ORDER );
foreach ( $matches as $v ) {
$classes[ $v[1] ] = null;
}
return $classes;
}
/**
* Find file by class name
*
* Search is case-insensitive
*
* @param string $class
* @param string[]|string $dirs One or more directories where to look (recursive)
*
* @return string|false Full path to class file
*/
public static function findClassFile( $class, $dirs ) {
foreach ( (array) $dirs as $dir ) {
$Directory = new RecursiveDirectoryIterator( $dir );
$Iterator = new RecursiveIteratorIterator( $Directory );
$Regex = new RegexIterator( $Iterator, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH );
$class = strtolower( $class );
foreach ( $Regex as $file => $object ) {
$classes = self::extractClassNames( $file );
if ( $classes && in_array( $class, array_map( 'strtolower', $classes ), true ) ) {
return $file;
}
}
}
return false;
}
/**
* Construct full dependency list of classes for each class in right order (including class itself)
*
* @param string[]|string $dirs Directories where to look (recursive)
*
* @return array Associative array where key is lowercase class name and value is array of files to include for
* that class to work
*/
public static function generateClassMap( $dirs ) {
$flat_map = array();
foreach ( (array) $dirs as $dir ) {
$Directory = new RecursiveDirectoryIterator( $dir );
$Iterator = new RecursiveIteratorIterator( $Directory );
$Regex = new RegexIterator( $Iterator, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH );
foreach ( $Regex as $file => $object ) {
$classes = self::extractClassesAndExtends( $file );
foreach ( $classes as $class => $extends ) {
$class = strtolower( $class );
$extends = strtolower( $extends );
if ( in_array( $extends, array(
'wpbakeryshortcodescontainer',
'wpbakeryvisualcomposer',
'wpbakeryshortcode',
'wpbmap',
), true ) ) {
$extends = null;
}
$flat_map[ $class ] = array(
'class' => $class,
'file' => $file,
'extends' => $extends,
);
}
}
}
$map = array();
foreach ( $flat_map as $params ) {
$dependencies = array(
array(
'class' => $params['class'],
'file' => $params['file'],
),
);
if ( $params['extends'] ) {
$queue = array( $params['extends'] );
while ( $queue ) {
$current_class = array_pop( $queue );
$current_class = $flat_map[ $current_class ];
$dependencies[] = array(
'class' => $current_class['class'],
'file' => $current_class['file'],
);
if ( ! empty( $current_class['extends'] ) ) {
$queue[] = $current_class['extends'];
}
}
$map[ $params['class'] ] = array_reverse( $dependencies );
} else {
$map[ $params['class'] ] = $dependencies;
}
}
// simplify array
$classmap = array();
foreach ( $map as $class => $dependencies ) {
$classmap[ $class ] = array();
foreach ( $dependencies as $v ) {
$classmap[ $class ][] = str_replace( '\\', '/', $v['file'] );
}
}
return $classmap;
}
/**
* Regenerate and save class map file
*
* @param string[]|string $dirs Directories where to look (recursive)
* @param string $target Output file
*
* @return bool
*/
public static function saveClassMap( $dirs, $target ) {
if ( ! $target ) {
return false;
}
$classmap = self::generateClassMap( $dirs );
// @codingStandardsIgnoreLine
$code = '';
// @codingStandardsIgnoreLine
return (bool) file_put_contents( $target, $code );
}
protected static function loadConfig() {
$config = array(
'classmap_file' => vc_path_dir( 'APP_ROOT', 'vc_classmap.json.php' ),
'shortcodes_dir' => vc_path_dir( 'SHORTCODES_DIR' ),
'root_dir' => vc_path_dir( 'APP_ROOT' ),
);
if ( is_file( $config['classmap_file'] ) ) {
$config['classmap'] = require $config['classmap_file'];
self::$cached = true;
} else {
$config['classmap'] = self::generateClassMap( $config['shortcodes_dir'] );
self::$cached = false;
}
self::$config = $config;
}
}
autoload/vc-image-filters.php 0000644 00000022122 15021217214 0012215 0 ustar 00 esc_html__( 'Antique', 'js_composer' ),
'blackwhite' => esc_html__( 'Black & White', 'js_composer' ),
'boost' => esc_html__( 'Boost', 'js_composer' ),
'concentrate' => esc_html__( 'Concentrate', 'js_composer' ),
'country' => esc_html__( 'Country', 'js_composer' ),
'darken' => esc_html__( 'Darken', 'js_composer' ),
'dream' => esc_html__( 'Dream', 'js_composer' ),
'everglow' => esc_html__( 'Everglow', 'js_composer' ),
'forest' => esc_html__( 'Forest', 'js_composer' ),
'freshblue' => esc_html__( 'Fresh Blue', 'js_composer' ),
'frozen' => esc_html__( 'Frozen', 'js_composer' ),
'hermajesty' => esc_html__( 'Her Majesty', 'js_composer' ),
'light' => esc_html__( 'Light', 'js_composer' ),
'orangepeel' => esc_html__( 'Orange Peel', 'js_composer' ),
'rain' => esc_html__( 'Rain', 'js_composer' ),
'retro' => esc_html__( 'Retro', 'js_composer' ),
'sepia' => esc_html__( 'Sepia', 'js_composer' ),
'summer' => esc_html__( 'Summer', 'js_composer' ),
'tender' => esc_html__( 'Tender', 'js_composer' ),
'vintage' => esc_html__( 'Vintage', 'js_composer' ),
'washed' => esc_html__( 'Washed', 'js_composer' ),
);
}
/**
* Add Image Filter field to media uploader
*
* @param array $form_fields , fields to include in attachment form
* @param object $post , attachment record in database
*
* @return array $form_fields, modified form fields
*/
function vc_attachment_filter_field( $form_fields, $post ) {
// don't add filter field, if image already has filter applied
if ( get_post_meta( $post->ID, 'vc-applied-image-filter', true ) ) {
return $form_fields;
}
$options = vc_get_filters();
$html_options = '' . esc_html__( 'None', 'js_composer' ) . ' ';
foreach ( $options as $value => $title ) {
$html_options .= '' . esc_html( $title ) . ' ';
}
$form_fields['vc-image-filter'] = array(
'label' => '',
'input' => 'html',
'html' => '
' . esc_html__( 'Image filter', 'js_composer' ) . '
' . $html_options . '
',
'value' => get_post_meta( $post->ID, 'vc_image_filter', true ),
'helps' => '',
);
return $form_fields;
}
/**
* Apply filters to specified images
*
* If image(s) has filter specified via filters _POST param:
* 1) copy it
* 2) apply specified filter
* 3) return new image id
*
* Required _POST params:
* - array ids: array of attachment ids
*
* Optional _POST params:
* - array filters: mapped array of ids and filters to apply
*
*/
function vc_media_editor_add_image() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'upload_files' )->validateDie();
require_once vc_path_dir( 'HELPERS_DIR', 'class-vc-image-filter.php' );
$response = array(
'success' => true,
'data' => array(
'ids' => array(),
),
);
$filters = (array) vc_post_param( 'filters', array() );
$ids = (array) vc_post_param( 'ids', array() );
if ( ! $ids ) {
wp_send_json( $response );
}
// default action is wp_handle_upload, which forces wp to check upload with is_uploaded_file()
// override action to anything else to skip security checks
$action = 'vc_handle_upload_imitation';
$file_key = 0;
$post_id = 0;
$post_data = array();
$overrides = array( 'action' => $action );
$_POST = array( 'action' => $action );
foreach ( $ids as $key => $attachment_id ) {
if ( ! empty( $filters[ $attachment_id ] ) ) {
$filter_name = $filters[ $attachment_id ];
} else {
continue;
}
$source_path = get_attached_file( $attachment_id );
if ( empty( $source_path ) ) {
continue;
}
$temp_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . basename( $source_path );
if ( ! copy( $source_path, $temp_path ) ) {
continue;
}
$extension = strtolower( pathinfo( $temp_path, PATHINFO_EXTENSION ) );
$mime_type = '';
switch ( $extension ) {
case 'jpeg':
case 'jpg':
$image = imagecreatefromjpeg( $temp_path );
$mime_type = 'image/jpeg';
break;
case 'png':
$image = imagecreatefrompng( $temp_path );
$mime_type = 'image/png';
break;
case 'gif':
$image = imagecreatefromgif( $temp_path );
$mime_type = 'image/gif';
break;
default:
$image = false;
}
if ( ! $image ) {
continue;
}
$Filter = new vcImageFilter( $image );
$Filter->$filter_name();
if ( ! vc_save_gd_resource( $Filter->getImage(), $temp_path ) ) {
continue;
}
$new_filename = basename( $temp_path, '.' . $extension ) . '-' . $filter_name . '.' . $extension;
$_FILES = array(
array(
'name' => $new_filename,
'type' => $mime_type,
'tmp_name' => $temp_path,
'error' => UPLOAD_ERR_OK,
'size' => filesize( $temp_path ),
),
);
$new_attachment_id = media_handle_upload( $file_key, $post_id, $post_data, $overrides );
if ( ! $new_attachment_id || is_wp_error( $new_attachment_id ) ) {
continue;
}
update_post_meta( $new_attachment_id, 'vc-applied-image-filter', $filter_name );
$ids[ $key ] = $new_attachment_id;
}
$response['data']['ids'] = $ids;
wp_send_json( $response );
}
/**
* Generate filter preview
*
* Preview url is generated as data uri (base64)
*
* Required _POST params:
* - string filter: filter name
* - int attachment_id: attachment id
*
* @return void Results are sent out as json
* @throws \Exception
*/
function vc_media_editor_preview_image() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'upload_files' )->validateDie();
require_once vc_path_dir( 'HELPERS_DIR', 'class-vc-image-filter.php' );
$response = array(
'success' => true,
'data' => array(
'src' => '',
),
);
$filter_name = vc_post_param( 'filter', '' );
$attachment_id = vc_post_param( 'attachment_id', false );
$preferred_size = vc_post_param( 'preferred_size', 'medium' );
if ( ! $filter_name || ! $attachment_id ) {
wp_send_json( $response );
}
$attachment_path = get_attached_file( $attachment_id );
$attachment_details = wp_prepare_attachment_for_js( $attachment_id );
if ( ! isset( $attachment_details['sizes'][ $preferred_size ] ) ) {
$preferred_size = 'thumbnail';
}
$attachment_url = wp_get_attachment_image_src( $attachment_id, $preferred_size );
if ( empty( $attachment_path ) || empty( $attachment_url[0] ) ) {
wp_send_json( $response );
}
$source_path = dirname( $attachment_path ) . '/' . basename( $attachment_url[0] );
$image = vc_get_gd_resource( $source_path );
if ( ! $image ) {
wp_send_json( $response );
}
$Filter = new vcImageFilter( $image );
$Filter->$filter_name();
$extension = strtolower( pathinfo( $source_path, PATHINFO_EXTENSION ) );
ob_start();
switch ( $extension ) {
case 'jpeg':
case 'jpg':
imagejpeg( $Filter->getImage() );
break;
case 'png':
imagepng( $Filter->getImage() );
break;
case 'gif':
imagegif( $Filter->getImage() );
break;
}
$data = ob_get_clean();
// @codingStandardsIgnoreLine
$response['data']['src'] = 'data:image/' . $extension . ';base64,' . base64_encode( $data );
wp_send_json( $response );
}
/**
* Read file from disk as GD resource
*
* @param string $file
*
* @return bool|resource
*/
function vc_get_gd_resource( $file ) {
$extension = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) );
switch ( $extension ) {
case 'jpeg':
case 'jpg':
return imagecreatefromjpeg( $file );
case 'png':
return imagecreatefrompng( $file );
case 'gif':
return imagecreatefromgif( $file );
}
return false;
}
/**
* Save GD resource to file
*
* @param resource $resource
* @param string $file
*
* @return bool
*/
function vc_save_gd_resource( $resource, $file ) {
$extension = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) );
switch ( $extension ) {
case 'jpeg':
case 'jpg':
return imagejpeg( $resource, $file );
case 'png':
return imagepng( $resource, $file );
case 'gif':
return imagegif( $resource, $file );
}
return false;
}
/**
* Add "Filter: ..." meta field to attachment details box
*
* @param array $media_meta , meta to include in attachment form
* @param object $post , attachment record in database
*
* @return array|string
*/
function vc_attachment_filter_media_meta( $media_meta, $post ) {
$filter_name = get_post_meta( $post->ID, 'vc-applied-image-filter', true );
if ( ! $filter_name ) {
return $media_meta;
}
$filters = vc_get_filters();
if ( ! isset( $filters[ $filter_name ] ) ) {
return $media_meta;
}
$media_meta .= esc_html__( 'Filter:', 'js_composer' ) . ' ' . $filters[ $filter_name ];
return $media_meta;
}
autoload/hook-vc-iconpicker-param.php 0000644 00000010412 15021217214 0013646 0 ustar 00 load();
}
}
autoload/vendors/jwplayer.php 0000644 00000001110 15021217214 0012366 0 ustar 00 load();
}
}
autoload/vendors/qtranslate-x.php 0000644 00000001023 15021217214 0013157 0 ustar 00 load();
}
}
autoload/vendors/gutenberg.php 0000644 00000007037 15021217214 0012531 0 ustar 00 ' ) ) {
$settings->addField( 'general', esc_html__( 'Disable Gutenberg Editor', 'js_composer' ), 'gutenberg_disable', 'vc_gutenberg_sanitize_disable_callback', 'vc_gutenberg_disable_render_callback' );
}
}
/**
* @param $rules
*
* @return mixed
*/
function vc_gutenberg_sanitize_disable_callback( $rules ) {
return (bool) $rules;
}
/**
* Not responsive checkbox callback function
*/
function vc_gutenberg_disable_render_callback() {
$checked = ( $checked = get_option( 'wpb_js_gutenberg_disable' ) ) ? $checked : false;
?>
value="1"
name="">
post_content ) && preg_match( '/\[vc_row/', $post->post_content ) ) {
return true;
}
return false;
}
function vc_gutenberg_map() {
global $wp_version;
if ( function_exists( 'the_gutenberg_project' ) || version_compare( $wp_version, '4.9.8', '>' ) ) {
vc_lean_map( 'vc_gutenberg', null, dirname( __FILE__ ) . '/shortcode-vc-gutenberg.php' );
}
}
add_filter( 'classic_editor_enabled_editors_for_post', 'vc_gutenberg_check_disabled_regular', 10, 2 );
add_filter( 'use_block_editor_for_post_type', 'vc_gutenberg_check_disabled', 10, 2 );
add_filter( 'display_post_states', 'vc_classic_editor_post_states', 11, 2 );
add_action( 'vc_settings_tab-general', 'vc_gutenberg_add_settings' );
add_action( 'init', 'vc_gutenberg_map' );
/** @see include/params/gutenberg/class-vc-gutenberg-param.php */
require_once vc_path_dir( 'PARAMS_DIR', 'gutenberg/class-vc-gutenberg-param.php' );
new Vc_Gutenberg_Param();
autoload/vendors/woocommerce.php 0000644 00000004000 15021217214 0013051 0 ustar 00 post_content, '[vc_row' ) !== false ) {
preg_match_all( '/(?:image|images|ids|include)\=\"([^\"]+)\"/', $post->post_content, $matches );
foreach ( $matches[1] as $m ) {
$ids = explode( ',', $m );
foreach ( $ids as $id ) {
if ( (int) $id ) {
$images[] = array(
'src' => wp_get_attachment_url( $id ),
'title' => get_the_title( $id ),
);
}
}
}
}
}
return $images;
}
add_filter( 'rank_math/sitemap/urlimages', 'vc_rank_math_seo_image_filter', 10, 2 ); autoload/vendors/shortcode-vc-gutenberg.php 0000644 00000003017 15021217214 0015121 0 ustar 00 esc_html__( 'Gutenberg Editor', 'js_composer' ),
'icon' => 'vc_icon-vc-gutenberg',
'wrapper_class' => 'clearfix',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Insert Gutenberg editor in your layout', 'js_composer' ),
'weight' => - 10,
'params' => array(
array(
'type' => 'gutenberg',
'holder' => 'div',
'heading' => esc_html__( 'Text', 'js_composer' ),
'param_name' => 'content',
'value' => 'Hello! This is the Gutenberg block you can edit directly from the WPBakery Page Builder.
',
),
vc_map_add_css_animation(),
array(
'type' => 'el_id',
'heading' => esc_html__( 'Element ID', 'js_composer' ),
'param_name' => 'el_id',
'description' => sprintf( esc_html__( 'Enter element ID (Note: make sure it is unique and valid according to %sw3c specification%s).', 'js_composer' ), '', ' ' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
),
);
autoload/vendors/gravity_forms.php 0000644 00000007203 15021217214 0013435 0 ustar 00 '' );
foreach ( $gravity_forms as $gravity_form ) {
$gravity_forms_array[ $gravity_form->title ] = $gravity_form->id;
}
}
}
vc_map( array(
'name' => esc_html__( 'Gravity Form', 'js_composer' ),
'base' => 'gravityform',
'icon' => 'icon-wpb-vc_gravityform',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Place Gravity form', 'js_composer' ),
'params' => array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Form', 'js_composer' ),
'param_name' => 'id',
'value' => $gravity_forms_array,
'save_always' => true,
'description' => esc_html__( 'Select a form to add it to your post or page.', 'js_composer' ),
'admin_label' => true,
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Display Form Title', 'js_composer' ),
'param_name' => 'title',
'value' => array(
esc_html__( 'No', 'js_composer' ) => 'false',
esc_html__( 'Yes', 'js_composer' ) => 'true',
),
'save_always' => true,
'description' => esc_html__( 'Would you like to display the forms title?', 'js_composer' ),
'dependency' => array(
'element' => 'id',
'not_empty' => true,
),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Display Form Description', 'js_composer' ),
'param_name' => 'description',
'value' => array(
esc_html__( 'No', 'js_composer' ) => 'false',
esc_html__( 'Yes', 'js_composer' ) => 'true',
),
'save_always' => true,
'description' => esc_html__( 'Would you like to display the forms description?', 'js_composer' ),
'dependency' => array(
'element' => 'id',
'not_empty' => true,
),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Enable AJAX?', 'js_composer' ),
'param_name' => 'ajax',
'value' => array(
esc_html__( 'No', 'js_composer' ) => 'false',
esc_html__( 'Yes', 'js_composer' ) => 'true',
),
'save_always' => true,
'description' => esc_html__( 'Enable AJAX submission?', 'js_composer' ),
'dependency' => array(
'element' => 'id',
'not_empty' => true,
),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Tab Index', 'js_composer' ),
'param_name' => 'tabindex',
'description' => esc_html__( '(Optional) Specify the starting tab index for the fields of this form. Leave blank if you\'re not sure what this is.', 'js_composer' ),
'dependency' => array(
'element' => 'id',
'not_empty' => true,
),
),
),
) );
}
autoload/vendors/ninja_forms.php 0000644 00000001401 15021217214 0013041 0 ustar 00 frontendEditorBuild();
}
}
}
autoload/vendors/cf7.php 0000644 00000001441 15021217214 0011217 0 ustar 00 checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
$image_id = (int) vc_post_param( 'content' );
$params = vc_post_param( 'params' );
$post_id = (int) vc_post_param( 'post_id' );
$img_size = vc_post_param( 'size' );
$img = '';
if ( ! empty( $params['source'] ) ) {
$source = $params['source'];
} else {
$source = 'media_library';
}
switch ( $source ) {
case 'media_library':
case 'featured_image':
if ( 'featured_image' === $source ) {
if ( $post_id && has_post_thumbnail( $post_id ) ) {
$img_id = get_post_thumbnail_id( $post_id );
} else {
$img_id = 0;
}
} else {
$img_id = preg_replace( '/[^\d]/', '', $image_id );
}
if ( ! $img_size ) {
$img_size = 'thumbnail';
}
if ( $img_id ) {
$img = wp_get_attachment_image_src( $img_id, $img_size );
if ( $img ) {
$img = $img[0];
}
}
break;
case 'external_link':
if ( ! empty( $params['custom_src'] ) ) {
$img = $params['custom_src'];
}
break;
}
echo esc_url( $img );
die();
}
autoload/class-vc-vendor-presets.php 0000644 00000004756 15021217214 0013565 0 ustar 00 $shortcode,
'default' => $default,
'params' => $params,
'title' => $title,
);
// @codingStandardsIgnoreLine
$id = md5( serialize( $preset ) );
self::$presets[ $id ] = $preset;
return true;
}
/**
* Get specific vendor preset
*
* @param string $id
*
* @return mixed array|false
* @since 4.8
*
*/
public function get( $id ) {
if ( isset( self::$presets[ $id ] ) ) {
return self::$presets[ $id ];
}
return false;
}
/**
* Get all vendor presets for specific shortcode
*
* @param string $shortcode
*
* @return array
* @since 4.8
*
*/
public function getAll( $shortcode ) {
$list = array();
foreach ( self::$presets as $id => $preset ) {
if ( $shortcode === $preset['shortcode'] ) {
$list[ $id ] = $preset;
}
}
return $list;
}
/**
* Get all default vendor presets
*
* Include only one default preset per shortcode
*
* @return array
* @since 4.8
*
*/
public function getDefaults() {
$list = array();
$added = array();
foreach ( self::$presets as $id => $preset ) {
if ( $preset['default'] && ! in_array( $preset['shortcode'], $added, true ) ) {
$added[] = $preset['shortcode'];
$list[ $id ] = $preset;
}
}
return $list;
}
/**
* Get ID of default preset for specific shortcode
*
* If multiple presets are default, return first
*
* @param string $shortcode
*
* @return string|null
* @since 4.8
*
*/
public function getDefaultId( $shortcode ) {
foreach ( self::$presets as $id => $preset ) {
if ( $shortcode === $preset['shortcode'] && $preset['default'] ) {
return $id;
}
}
return null;
}
}
autoload/vc-undoredo.php 0000644 00000000457 15021217214 0011313 0 ustar 00 = VC 4.8",
"post-type-default-template.php": "Load default templates",
"bc-multisite-options.php": "BC for multisite options",
"vc-undoredo.php": "Undo Redo logic"
} autoload/vc-grid-item-editor.php 0000644 00000022671 15021217214 0012643 0 ustar 00 addMetaBox();
add_action( 'wp_ajax_vc_grid_item_editor_load_template_preview', array(
&$vc_grid_item_editor,
'renderTemplatePreview',
) );
$vc_grid_item_editor->addHooksSettings();
}
/**
* Render preview for grid item
* @since 4.4
*/
function vc_grid_item_render_preview() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( array(
'edit_post',
(int) vc_request_param( 'post_id' ),
) )->validateDie()->part( 'grid_builder' )->can()->validateDie();
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' );
$grid_item = new Vc_Grid_Item();
$grid_item->mapShortcodes();
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/editor/class-vc-grid-item-preview.php' );
$vcGridPreview = new Vc_Grid_Item_Preview();
add_filter( 'vc_gitem_template_attribute_post_image_background_image_css_value', array(
$vcGridPreview,
'addCssBackgroundImage',
) );
add_filter( 'vc_gitem_template_attribute_post_image_url_value', array(
$vcGridPreview,
'addImageUrl',
) );
add_filter( 'vc_gitem_template_attribute_post_image_html', array(
$vcGridPreview,
'addImage',
) );
add_filter( 'vc_gitem_attribute_featured_image_img', array(
$vcGridPreview,
'addPlaceholderImage',
) );
add_filter( 'vc_gitem_post_data_get_link_real_link', array(
$vcGridPreview,
'disableRealContentLink',
), 10, 4 );
add_filter( 'vc_gitem_post_data_get_link_link', array(
$vcGridPreview,
'disableContentLink',
), 10, 3 );
add_filter( 'vc_gitem_zone_image_block_link', array(
$vcGridPreview,
'disableGitemZoneLink',
) );
$vcGridPreview->render();
die();
}
/**
* Map grid element shortcodes.
*
* @since 4.5
*/
function vc_grid_item_map_shortcodes() {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' );
$grid_item = new Vc_Grid_Item();
$grid_item->mapShortcodes();
vc_mapper()->setCheckForAccess( false );
}
/**
* Get current post type
*
* @return null|string
*/
function vc_grid_item_get_post_type() {
$post_type = null;
if ( vc_request_param( 'post_type' ) ) {
$post_type = vc_request_param( 'post_type' );
} elseif ( vc_request_param( 'post' ) ) {
$post = get_post( vc_request_param( 'post' ) );
$post_type = $post instanceof WP_Post && $post->post_type ? $post->post_type : null;
}
return $post_type;
}
/**
* Check and Map grid element shortcodes if required.
* @since 4.5
*/
function vc_grid_item_editor_shortcodes() {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/editor/class-vc-grid-item-editor.php' );
// TODO: remove this because mapping can be based on post_type
if ( ( 'true' === vc_request_param( 'vc_grid_item_editor' ) || ( is_admin() && vc_grid_item_get_post_type() === Vc_Grid_Item_Editor::postType() ) && vc_user_access()
->wpAny( 'edit_posts', 'edit_pages' )->part( 'grid_builder' )->can()->get() ) ) {
global $vc_grid_item_editor;
add_action( 'vc_user_access_check-shortcode_edit', array(
&$vc_grid_item_editor,
'accessCheckShortcodeEdit',
), 10, 2 );
add_action( 'vc_user_access_check-shortcode_all', array(
&$vc_grid_item_editor,
'accessCheckShortcodeAll',
), 10, 2 );
vc_grid_item_map_shortcodes();
}
}
/**
* add action in admin for vc grid item editor manager
*/
add_action( 'init', 'vc_grid_item_editor_create_post_type' );
add_action( 'admin_init', 'vc_grid_item_editor_init' );
add_action( 'vc_after_init', 'vc_grid_item_editor_shortcodes' );
/**
* Call preview as ajax request is called.
*/
add_action( 'wp_ajax_vc_gitem_preview', 'vc_grid_item_render_preview', 5 );
/**
* Add WP ui pointers in grid element editor.
*/
if ( is_admin() ) {
add_filter( 'vc_ui-pointers-vc_grid_item', 'vc_grid_item_register_pointer' );
}
/**
* @param $pointers
* @return mixed
*/
function vc_grid_item_register_pointer( $pointers ) {
$screen = get_current_screen();
if ( 'add' === $screen->action ) {
$pointers['vc_grid_item'] = array(
'name' => 'vcPointersController',
'messages' => array(
array(
'target' => '#vc_templates-editor-button',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Start Here!', 'js_composer' ), esc_html__( 'Start easy - use predefined template as a starting point and modify it.', 'js_composer' ) ),
'position' => array(
'edge' => 'left',
'align' => 'center',
),
),
),
array(
'target' => '[data-vc-navbar-control="animation"]',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Use Animations', 'js_composer' ), esc_html__( 'Select animation preset for grid element. "Hover" state will be added next to the "Normal" state tab.', 'js_composer' ) ),
'position' => array(
'edge' => 'right',
'align' => 'center',
),
),
),
array(
'target' => '.vc_gitem_animated_block-shortcode',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Style Design Options', 'js_composer' ), esc_html__( 'Edit "Normal" state to set "Featured image" as a background, control zone sizing proportions and other design options (Height mode: Select "Original" to scale image without cropping).', 'js_composer' ) ),
'position' => array(
'edge' => 'bottom',
'align' => 'center',
),
),
),
array(
'target' => '[data-vc-gitem="add-c"][data-vc-position="top"]',
'options' => array(
'content' => sprintf( ' %s %s
', esc_html__( 'Extend Element', 'js_composer' ), esc_html__( 'Additional content zone can be added to grid element edges (Note: This zone can not be animated).', 'js_composer' ) ) . '
',
'position' => array(
'edge' => 'right',
'align' => 'center',
),
),
),
array(
'target' => '#wpadminbar',
'options' => array(
'content' => sprintf( ' %s %s', esc_html__( 'Watch Video Tutorial', 'js_composer' ), '' . esc_html__( 'Have a look how easy it is to work with grid element builder.', 'js_composer' ) . '
' . 'VIDEO ' ),
'position' => array(
'edge' => 'top',
'align' => 'center',
),
'pointerClass' => 'vc_gitem-animated-block-pointer-video',
'pointerWidth' => '530',
),
),
),
);
}
return $pointers;
}
/**
* @return array|mixed|void
*/
function vc_gitem_content_shortcodes() {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' );
$grid_item = new Vc_Grid_Item();
$invalid_shortcodes = apply_filters( 'vc_gitem_zone_grid_item_not_content_shortcodes', array(
'vc_gitem',
'vc_gitem_animated_block',
'vc_gitem_zone',
'vc_gitem_zone_a',
'vc_gitem_zone_b',
'vc_gitem_zone_c',
'vc_gitem_row',
'vc_gitem_col',
) );
return array_diff( array_keys( $grid_item->shortcodes() ), $invalid_shortcodes );
}
/**
* @param $content
* @return false|int
*/
function vc_gitem_has_content( $content ) {
$tags = vc_gitem_content_shortcodes();
$regexp = vc_get_shortcode_regex( implode( '|', $tags ) );
return preg_match( '/' . $regexp . '/', $content );
}
/**
* Add sub page to WPBakery Page Builder pages
*
* @since 4.5
*/
function vc_gitem_add_submenu_page() {
if ( vc_user_access()->part( 'grid_builder' )->can()->get() ) {
$labels = Vc_Grid_Item_Editor::getPostTypesLabels();
add_submenu_page( VC_PAGE_MAIN_SLUG, $labels['name'], $labels['name'], 'edit_posts', 'edit.php?post_type=' . rawurlencode( Vc_Grid_Item_Editor::postType() ), '' );
}
}
/**
* Highlight Vc submenu.
* @since 4.5
*/
function vc_gitem_menu_highlight() {
global $parent_file, $submenu_file, $post_type;
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/editor/class-vc-grid-item-editor.php' );
if ( Vc_Grid_Item_Editor::postType() === $post_type && defined( 'VC_PAGE_MAIN_SLUG' ) ) {
$parent_file = VC_PAGE_MAIN_SLUG;
$submenu_file = 'edit.php?post_type=' . rawurlencode( Vc_Grid_Item_Editor::postType() );
}
}
add_action( 'admin_head', 'vc_gitem_menu_highlight' );
function vc_gitem_set_mapper_check_access() {
if ( vc_user_access()->checkAdminNonce()->wpAny( 'edit_posts', 'edit_pages' )->part( 'grid_builder' )->can()->get() && 'true' === vc_post_param( 'vc_grid_item_editor' ) ) {
vc_mapper()->setCheckForAccess( false );
}
}
add_action( 'wp_ajax_vc_edit_form', 'vc_gitem_set_mapper_check_access' );
autoload/class-vc-settings-presets.php 0000644 00000022345 15021217214 0014122 0 ustar 00 'vc_settings_preset',
'post_mime_type' => self::constructShortcodeMimeType( $shortcode_name ),
'posts_per_page' => - 1,
'meta_key' => '_vc_default',
'meta_value' => true,
);
$posts = get_posts( $args );
if ( $posts ) {
$default_id = $posts[0]->ID;
} else {
// check for vendor presets
$default_id = vc_vendor_preset()->getDefaultId( $shortcode_name );
}
return $default_id;
}
/**
* Set existing preset as default
*
* If this is vendor preset, clone it and set new one as default
*
* @param int $id If falsy, no default will be set
* @param string $shortcode_name
*
* @return boolean
*
* @since 4.7
*/
public static function setAsDefaultSettingsPreset( $id, $shortcode_name ) {
$post_id = self::getDefaultSettingsPresetId( $shortcode_name );
if ( $post_id ) {
delete_post_meta( $post_id, '_vc_default' );
}
if ( $id ) {
if ( is_numeric( $id ) ) {
// user preset
update_post_meta( $id, '_vc_default', true );
} else {
// vendor preset
$preset = vc_vendor_preset()->get( $id );
if ( ! $preset || $shortcode_name !== $preset['shortcode'] ) {
return false;
}
self::saveSettingsPreset( $preset['shortcode'], $preset['title'], wp_json_encode( $preset['params'] ), true );
}
}
return true;
}
/**
* Get mime type for specific shortcode
*
* @since 4.7
*
* @param $shortcode_name
*
* @return string
*/
public static function constructShortcodeMimeType( $shortcode_name ) {
return 'vc-settings-preset/' . str_replace( '_', '-', $shortcode_name );
}
/**
* Get shortcode name from post's mime type
*
* @since 4.7
*
* @param string $post_mime_type
*
* @return string
*/
public static function extractShortcodeMimeType( $post_mime_type ) {
$chunks = explode( '/', $post_mime_type );
if ( 2 !== count( $chunks ) ) {
return '';
}
return str_replace( '-', '_', $chunks[1] );
}
/**
* Get all presets
*
* @since 5.2
*
* @return array E.g. array(preset_id => value, preset_id => value, ...)
*/
public static function listAllPresets() {
$list = array();
$args = array(
'post_type' => 'vc_settings_preset',
'posts_per_page' => - 1,
);
// user presets
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$shortcode_name = self::extractShortcodeMimeType( $post->post_mime_type );
$list[ $post->ID ] = (array) json_decode( $post->post_content );
}
// vendor presets
$presets = self::listDefaultVendorSettingsPresets();
foreach ( $presets as $shortcode => $params ) {
if ( ! isset( $list[ $shortcode ] ) ) {
$list[ $shortcode ] = $params;
}
}
return $list;
}
/**
* Get all default presets
*
* @since 4.7
*
* @return array E.g. array(shortcode_name => value, shortcode_name => value, ...)
*/
public static function listDefaultSettingsPresets() {
$list = array();
$args = array(
'post_type' => 'vc_settings_preset',
'posts_per_page' => - 1,
'meta_key' => '_vc_default',
'meta_value' => true,
);
// user presets
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$shortcode_name = self::extractShortcodeMimeType( $post->post_mime_type );
$list[ $shortcode_name ] = (array) json_decode( $post->post_content );
}
// vendor presets
$presets = self::listDefaultVendorSettingsPresets();
foreach ( $presets as $shortcode => $params ) {
if ( ! isset( $list[ $shortcode ] ) ) {
$list[ $shortcode ] = $params;
}
}
return $list;
}
/**
* Get all default vendor presets
*
* @since 4.8
*
* @return array E.g. array(shortcode_name => value, shortcode_name => value, ...)
*/
public static function listDefaultVendorSettingsPresets() {
$list = array();
$presets = vc_vendor_preset()->getDefaults();
foreach ( $presets as $id => $preset ) {
$list[ $preset['shortcode'] ] = $preset['params'];
}
return $list;
}
/**
* Save shortcode preset
*
* @since 4.7
*
* @param string $shortcode_name
* @param string $title
* @param string $content
* @param boolean $is_default
*
* @return mixed int|false Post ID
*/
public static function saveSettingsPreset( $shortcode_name, $title, $content, $is_default = false ) {
$post_id = wp_insert_post( array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_type' => 'vc_settings_preset',
'post_mime_type' => self::constructShortcodeMimeType( $shortcode_name ),
), false );
if ( $post_id && $is_default ) {
self::setAsDefaultSettingsPreset( $post_id, $shortcode_name );
}
return $post_id;
}
/**
* Get list of all presets for specific shortcode
*
* @since 4.7
*
* @param string $shortcode_name
*
* @return array E.g. array(id1 => title1, id2 => title2, ...)
*/
public static function listSettingsPresets( $shortcode_name = null ) {
$list = array();
if ( ! $shortcode_name ) {
return $list;
}
$args = array(
'post_type' => 'vc_settings_preset',
'orderby' => array( 'post_date' => 'DESC' ),
'posts_per_page' => - 1,
'post_mime_type' => self::constructShortcodeMimeType( $shortcode_name ),
);
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$list[ $post->ID ] = $post->post_title;
}
return $list;
}
/**
* Get list of all vendor presets for specific shortcode
*
* @since 4.8
*
* @param string $shortcode_name
*
* @return array E.g. array(id1 => title1, id2 => title2, ...)
*/
public static function listVendorSettingsPresets( $shortcode_name = null ) {
$list = array();
if ( ! $shortcode_name ) {
return $list;
}
$presets = vc_vendor_preset()->getAll( $shortcode_name );
foreach ( $presets as $id => $preset ) {
$list[ $id ] = $preset['title'];
}
return $list;
}
/**
* Get specific shortcode preset
*
* @since 4.7
*
* @param mixed $id Can be int (user preset) or string (vendor preset)
* @param bool $array If true, return array instead of string
*
* @return mixed string?array Post content
*/
public static function getSettingsPreset( $id, $array = false ) {
if ( is_numeric( $id ) ) {
// user preset
$post = get_post( $id );
if ( ! $post ) {
return false;
}
$params = $array ? (array) json_decode( $post->post_content ) : $post->post_content;
} else {
// vendor preset
$preset = vc_vendor_preset()->get( $id );
if ( ! $preset ) {
return false;
}
$params = $preset['params'];
}
return $params;
}
/**
* Delete shortcode preset
*
* @since 4.7
*
* @param int $post_id Post must be of type 'vc_settings_preset'
*
* @return bool
*/
public static function deleteSettingsPreset( $post_id ) {
$post = get_post( $post_id );
if ( ! $post || 'vc_settings_preset' !== $post->post_type ) {
return false;
}
return (bool) wp_delete_post( $post_id, true );
}
/**
* Return rendered popup menu
*
* @since 4.7
*
* @param string $shortcode_name
*
* @return string
*/
public static function getRenderedSettingsPresetPopup( $shortcode_name ) {
$list_vendor_presets = self::listVendorSettingsPresets( $shortcode_name );
$list_presets = self::listSettingsPresets( $shortcode_name );
$default_id = self::getDefaultSettingsPresetId( $shortcode_name );
if ( ! $default_id ) {
$default_id = vc_vendor_preset()->getDefaultId( $shortcode_name );
}
ob_start();
vc_include_template( apply_filters( 'vc_render_settings_preset_popup', 'editors/partials/settings_presets_popup.tpl.php' ), array(
'list_presets' => array(
$list_presets,
$list_vendor_presets,
),
'default_id' => $default_id,
'shortcode_name' => $shortcode_name,
) );
$html = ob_get_clean();
return $html;
}
/**
* @param $shortcodes
*
* @return array
* @throws \Exception
*/
public static function addVcPresetsToShortcodes( $shortcodes ) {
if ( vc_user_access()->part( 'presets' )->can()->get() ) {
$shortcodesAndPresets = array();
foreach ( $shortcodes as $shortcode ) {
$presets = self::listSettingsPresets( $shortcode['base'] );
$shortcodesAndPresets[ $shortcode['base'] ] = $shortcode;
if ( ! empty( $presets ) ) {
foreach ( $presets as $presetId => $preset ) {
$shortcodesAndPresets[ $presetId ] = array(
'name' => $preset,
'base' => $shortcode['base'],
'description' => $shortcode['description'],
'presetId' => $presetId,
'_category_ids' => array( '_my_elements_' ),
);
if ( isset( $shortcode['icon'] ) ) {
$shortcodesAndPresets[ $presetId ]['icon'] = $shortcode['icon'];
}
}
}
}
return $shortcodesAndPresets;
}
return $shortcodes;
}
/**
* @param $category
*
* @return array
*/
public static function addPresetCategory( $category ) {
$presetCategory = (array) '_my_elements_';
$category = array_merge( $presetCategory, $category );
return $category;
}
}
params/google_fonts/google_fonts.php 0000644 00000237426 15021217214 0013723 0 ustar 00 array(
* array(
* 'type' => 'google_fonts',
* 'param_name' => 'google_fonts',
* 'value' => '',// Not recommended, this will override 'settings'. Example:
* 'font_family:'.rawurlencode('Exo:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic').'|font_style:'.rawurlencode('900
* bold italic:900:italic'),
* 'settings' => array(
* 'fields'=>array(
* 'font_family'=>'Abril Fatface:regular',//
* 'Exo:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic',
* Default font family and all available styles to fetch
* 'font_style'=>'400 regular:400:normal', // Default font style. Name:weight:style, example:
* "800 bold regular:800:normal"
* 'font_family_description' => esc_html__('Select font family.','js_composer'),
* 'font_style_description' => esc_html__('Select font styling.','js_composer')
* )
* ),
* 'description' => esc_html__( 'Description for this group', 'js_composer' ), // Description for field group
* ),
* )
*/
class Vc_Google_Fonts {
public $fonts_list = '[{"font_family":"Abril Fatface","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"ABeeZee","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Abel","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aclonica","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Acme","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Actor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Adamina","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Advent Pro","font_styles":"100,200,300,regular,500,600,700","font_types":"100 light regular:100:normal,200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Aguafina Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Akronim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aladin","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aldrich","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alef","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Alegreya","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alegreya SC","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alegreya Sans","font_styles":"100,100italic,300,300italic,regular,italic,500,500italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alegreya Sans SC","font_styles":"100,100italic,300,300italic,regular,italic,500,500italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Alex Brush","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alfa Slab One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alice","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alike","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Alike Angular","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Allan","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Allerta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Allerta Stencil","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Allura","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Almendra","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Almendra Display","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Almendra SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Amarante","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Amaranth","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Amatic SC","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Amethysta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Anaheim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Andada","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Andika","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Angkor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Annie Use Your Telescope","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Anonymous Pro","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Antic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Antic Didone","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Antic Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Anton","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Arapey","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Arbutus","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Arbutus Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Architects Daughter","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Archivo Black","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Archivo Narrow","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Arimo","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Arizonia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Armata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Artifika","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Arvo","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Asap","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Asset","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Astloch","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Asul","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Atomic Age","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Aubrey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Audiowide","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Autour One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Average","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Average Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Averia Gruesa Libre","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Averia Libre","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Averia Sans Libre","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Averia Serif Libre","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Bad Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Balthazar","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bangers","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Basic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Battambang","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Baumans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bayon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Belgrano","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Belleza","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"BenchNine","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Bentham","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Berkshire Swash","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bevan","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bigelow Rules","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bigshot One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bilbo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bilbo Swash Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bitter","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Black Ops One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bokor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bonbon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Boogaloo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bowlby One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bowlby One SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Brawler","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bree Serif","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bubblegum Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Bubbler One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Buda","font_styles":"300","font_types":"300 light regular:300:normal"},{"font_family":"Buenard","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Butcherman","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Butterfly Kids","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cabin","font_styles":"regular,italic,500,500italic,600,600italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cabin Condensed","font_styles":"regular,500,600,700","font_types":"400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Cabin Sketch","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Caesar Dressing","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cagliostro","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Calligraffitti","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cambo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Candal","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cantarell","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cantata One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cantora One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Capriola","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cardo","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Carme","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Carrois Gothic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Carrois Gothic SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Carter One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Caudex","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cedarville Cursive","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ceviche One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Changa One","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Chango","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chau Philomene One","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Chela One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chelsea Market","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chenla","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cherry Cream Soda","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cherry Swash","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Chewy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chicle","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Chivo","font_styles":"regular,italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Cinzel","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Cinzel Decorative","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Clicker Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Coda","font_styles":"regular,800","font_types":"400 regular:400:normal,800 bold regular:800:normal"},{"font_family":"Coda Caption","font_styles":"800","font_types":"800 bold regular:800:normal"},{"font_family":"Codystar","font_styles":"300,regular","font_types":"300 light regular:300:normal,400 regular:400:normal"},{"font_family":"Combo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Comfortaa","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Coming Soon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Concert One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Condiment","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Content","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Contrail One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Convergence","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cookie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Copse","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Corben","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Courgette","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cousine","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Coustard","font_styles":"regular,900","font_types":"400 regular:400:normal,900 bold regular:900:normal"},{"font_family":"Covered By Your Grace","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Crafty Girls","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Creepster","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Crete Round","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Crimson Text","font_styles":"regular,italic,600,600italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Croissant One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Crushed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cuprum","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Cutive","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Cutive Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Damion","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dancing Script","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Dangrek","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dawning of a New Day","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Days One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Delius","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Delius Swash Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Delius Unicase","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Della Respira","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Denk One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Devonshire","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Didact Gothic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Diplomata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Diplomata SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Domine","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Donegal One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Doppio One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dorsa","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dosis","font_styles":"200,300,regular,500,600,700,800","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal,800 bold regular:800:normal"},{"font_family":"Dr Sugiyama","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Droid Sans","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Droid Sans Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Droid Serif","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Duru Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Dynalight","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"EB Garamond","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Eagle Lake","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Eater","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Economica","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Electrolize","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Elsie","font_styles":"regular,900","font_types":"400 regular:400:normal,900 bold regular:900:normal"},{"font_family":"Elsie Swash Caps","font_styles":"regular,900","font_types":"400 regular:400:normal,900 bold regular:900:normal"},{"font_family":"Emblema One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Emilys Candy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Engagement","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Englebert","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Enriqueta","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Erica One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Esteban","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Euphoria Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ewert","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Exo","font_styles":"100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Exo 2","font_styles":"100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Expletus Sans","font_styles":"regular,italic,500,500italic,600,600italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Fanwood Text","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Fascinate","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fascinate Inline","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Faster One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fasthand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fauna One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Federant","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Federo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Felipa","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fenix","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Finger Paint","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fira Mono","font_styles":"400,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Fira Sans","font_styles":"300,300italic,400,400italic,500,500italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Fjalla One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fjord One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Flamenco","font_styles":"300,regular","font_types":"300 light regular:300:normal,400 regular:400:normal"},{"font_family":"Flavors","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fondamento","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Fontdiner Swanky","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Forum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Francois One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Freckle Face","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fredericka the Great","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fredoka One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Freehand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fresca","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Frijole","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fruktur","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Fugaz One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"GFS Didot","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"GFS Neohellenic","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Gabriela","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gafata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Galdeano","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Galindo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gentium Basic","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Gentium Book Basic","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Geo","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Geostar","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Geostar Fill","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Germania One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gilda Display","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Give You Glory","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Glass Antiqua","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Glegoo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gloria Hallelujah","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Goblin One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gochi Hand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gorditas","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Goudy Bookletter 1911","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Graduate","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Grand Hotel","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gravitas One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Great Vibes","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Griffy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gruppo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Gudea","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Habibi","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hammersmith One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hanalei","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hanalei Fill","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Handlee","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hanuman","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Happy Monkey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Headland One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Henny Penny","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Herr Von Muellerhoff","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Hind","font_styles":"300,regular,500,600,700","font_types":"300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Holtwood One SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Homemade Apple","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Homenaje","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell DW Pica","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell DW Pica SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell Double Pica","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell Double Pica SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell English","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell English SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell French Canon","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell French Canon SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"IM Fell Great Primer","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"IM Fell Great Primer SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Iceberg","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Iceland","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Imprima","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Inconsolata","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Inder","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Indie Flower","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Inika","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Irish Grover","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Istok Web","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Italiana","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Italianno","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jacques Francois","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jacques Francois Shadow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jim Nightshade","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jockey One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jolly Lodger","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Josefin Sans","font_styles":"100,100italic,300,300italic,regular,italic,600,600italic,700,700italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Josefin Slab","font_styles":"100,100italic,300,300italic,regular,italic,600,600italic,700,700italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Joti One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Judson","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Julee","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Julius Sans One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Junge","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Jura","font_styles":"300,regular,500,600","font_types":"300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal"},{"font_family":"Just Another Hand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Just Me Again Down Here","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kameron","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Kantumruy","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Karla","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Kaushan Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kavoon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kdam Thmor","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Keania One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kelly Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kenia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Khmer","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kite One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Knewave","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kotta One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Koulen","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kranky","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Kreon","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Kristi","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Krona One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"La Belle Aurore","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lancelot","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lato","font_styles":"100,100italic,300,300italic,regular,italic,700,700italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"League Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Leckerli One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ledger","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lekton","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Lemon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Libre Baskerville","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Life Savers","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Lilita One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lily Script One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Limelight","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Linden Hill","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Lobster","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lobster Two","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Londrina Outline","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Londrina Shadow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Londrina Sketch","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Londrina Solid","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lora","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Love Ya Like A Sister","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Loved by the King","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lovers Quarrel","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Luckiest Guy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Lusitana","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Lustria","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Macondo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Macondo Swash Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Magra","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Maiden Orange","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mako","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marcellus","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marcellus SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marck Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Margarine","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marko One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marmelad","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Marvel","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Mate","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Mate SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Maven Pro","font_styles":"regular,500,700,900","font_types":"400 regular:400:normal,500 bold regular:500:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"McLaren","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Meddon","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"MedievalSharp","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Medula One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Megrim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Meie Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Merienda","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Merienda One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Merriweather","font_styles":"300,300italic,regular,italic,700,700italic,900,900italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Merriweather Sans","font_styles":"300,300italic,regular,italic,700,700italic,800,800italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic"},{"font_family":"Metal","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Metal Mania","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Metamorphous","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Metrophobic","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Michroma","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Milonga","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miltonian","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miltonian Tattoo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miniver","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Miss Fajardose","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Modern Antiqua","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Molengo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Molle","font_styles":"italic","font_types":"400 italic:400:italic"},{"font_family":"Monda","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Monofett","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Monoton","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Monsieur La Doulaise","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Montaga","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Montez","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Montserrat","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Montserrat Alternates","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Montserrat Subrayada","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Moul","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Moulpali","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mountains of Christmas","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Mouse Memoirs","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mr Bedfort","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mr Dafoe","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mr De Haviland","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mrs Saint Delafield","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Mrs Sheppards","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Muli","font_styles":"300,300italic,regular,italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic"},{"font_family":"Mystery Quest","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Neucha","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Neuton","font_styles":"200,300,regular,italic,700,800","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,800 bold regular:800:normal"},{"font_family":"New Rocker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"News Cycle","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Niconne","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nixie One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nobile","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Nokora","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Norican","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nosifer","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nothing You Could Do","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Noticia Text","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Noto Sans","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Noto Serif","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Nova Cut","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Flat","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Oval","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Round","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Slim","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nova Square","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Numans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Nunito","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Odor Mean Chey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Offside","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Old Standard TT","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Oldenburg","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Oleo Script","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Oleo Script Swash Caps","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Open Sans","font_styles":"300,300italic,regular,italic,600,600italic,700,700italic,800,800italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,800 bold regular:800:normal,800 bold italic:800:italic"},{"font_family":"Open Sans Condensed","font_styles":"300,300italic,700","font_types":"300 light regular:300:normal,300 light italic:300:italic,700 bold regular:700:normal"},{"font_family":"Oranienbaum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Orbitron","font_styles":"regular,500,700,900","font_types":"400 regular:400:normal,500 bold regular:500:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Oregano","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Orienta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Original Surfer","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Oswald","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Over the Rainbow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Overlock","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Overlock SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ovo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Oxygen","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Oxygen Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"PT Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"PT Sans","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"PT Sans Caption","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"PT Sans Narrow","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"PT Serif","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"PT Serif Caption","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Pacifico","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Paprika","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Parisienne","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Passero One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Passion One","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Pathway Gothic One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Patrick Hand","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Patrick Hand SC","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Patua One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Paytone One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Peralta","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Permanent Marker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Petit Formal Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Petrona","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Philosopher","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Piedra","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Pinyon Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Pirata One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Plaster","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Play","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Playball","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Playfair Display","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Playfair Display SC","font_styles":"regular,italic,700,700italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Podkova","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Poiret One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Poller One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Poly","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Pompiere","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Pontano Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Port Lligat Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Port Lligat Slab","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Prata","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Preahvihear","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Press Start 2P","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Princess Sofia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Prociono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Prosto One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Puritan","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Purple Purse","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Quando","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Quantico","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Quattrocento","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Quattrocento Sans","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Questrial","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Quicksand","font_styles":"300,regular,700","font_types":"300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Quintessential","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Qwigley","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Racing Sans One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Radley","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Raleway","font_styles":"100,200,300,regular,500,600,700,800,900","font_types":"100 light regular:100:normal,200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal,800 bold regular:800:normal,900 bold regular:900:normal"},{"font_family":"Raleway Dots","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rambla","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Rammetto One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ranchers","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rancho","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rationale","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Redressed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Reenie Beanie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Revalia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ribeye","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ribeye Marrow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Righteous","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Risque","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Roboto","font_styles":"100,100italic,300,300italic,regular,italic,500,500italic,700,700italic,900,900italic","font_types":"100 light regular:100:normal,100 light italic:100:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Roboto Condensed","font_styles":"300,300italic,regular,italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Roboto Slab","font_styles":"100,300,regular,700","font_types":"100 light regular:100:normal,300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Rochester","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rock Salt","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rokkitt","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Romanesco","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ropa Sans","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Rosario","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Rosarivo","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Rouge Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rubik Mono One","font_styles":"400","font_types":"400 regular:400:normal"},{"font_family":"Rubik One","font_styles":"400","font_types":"400 regular:400:normal"},{"font_family":"Ruda","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Rufina","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Ruge Boogie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ruluko","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rum Raisin","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ruslan Display","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Russo One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ruthie","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Rye","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sacramento","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sail","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Salsa","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sanchez","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Sancreek","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sansita One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sarina","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Satisfy","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Scada","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Schoolbell","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Seaweed Script","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sevillana","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Seymour One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shadows Into Light","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shadows Into Light Two","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shanti","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Share","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Share Tech","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Share Tech Mono","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Shojumaru","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Short Stack","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Siemreap","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sigmar One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Signika","font_styles":"300,regular,600,700","font_types":"300 light regular:300:normal,400 regular:400:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Signika Negative","font_styles":"300,regular,600,700","font_types":"300 light regular:300:normal,400 regular:400:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Simonetta","font_styles":"regular,italic,900,900italic","font_types":"400 regular:400:normal,400 italic:400:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Sintony","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Sirin Stencil","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Six Caps","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Skranji","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Slackey","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Smokum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Smythe","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sniglet","font_styles":"regular,800","font_types":"400 regular:400:normal,800 bold regular:800:normal"},{"font_family":"Snippet","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Snowburst One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sofadi One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sofia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sonsie One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sorts Mill Goudy","font_styles":"regular,italic","font_types":"400 regular:400:normal,400 italic:400:italic"},{"font_family":"Source Code Pro","font_styles":"200,300,regular,500,600,700,900","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,500 bold regular:500:normal,600 bold regular:600:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Source Sans Pro","font_styles":"200,200italic,300,300italic,regular,italic,600,600italic,700,700italic,900,900italic","font_types":"200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal,900 bold italic:900:italic"},{"font_family":"Source Serif Pro","font_styles":"400,600,700","font_types":"400 regular:400:normal,600 bold regular:600:normal,700 bold regular:700:normal"},{"font_family":"Special Elite","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Spicy Rice","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Spinnaker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Spirax","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Squada One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stalemate","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stalinist One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stardos Stencil","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Stint Ultra Condensed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stint Ultra Expanded","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Stoke","font_styles":"300,regular","font_types":"300 light regular:300:normal,400 regular:400:normal"},{"font_family":"Strait","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sue Ellen Francisco","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Sunshiney","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Supermercado One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Suwannaphum","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Swanky and Moo Moo","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Syncopate","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Tangerine","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Taprom","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tauri","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Telex","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tenor Sans","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Text Me One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"The Girl Next Door","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tienne","font_styles":"regular,700,900","font_types":"400 regular:400:normal,700 bold regular:700:normal,900 bold regular:900:normal"},{"font_family":"Tinos","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Titan One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Titillium Web","font_styles":"200,200italic,300,300italic,regular,italic,600,600italic,700,700italic,900","font_types":"200 light regular:200:normal,200 light italic:200:italic,300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,600 bold regular:600:normal,600 bold italic:600:italic,700 bold regular:700:normal,700 bold italic:700:italic,900 bold regular:900:normal"},{"font_family":"Trade Winds","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Trocchi","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Trochut","font_styles":"regular,italic,700","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal"},{"font_family":"Trykker","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Tulpen One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ubuntu","font_styles":"300,300italic,regular,italic,500,500italic,700,700italic","font_types":"300 light regular:300:normal,300 light italic:300:italic,400 regular:400:normal,400 italic:400:italic,500 bold regular:500:normal,500 bold italic:500:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Ubuntu Condensed","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Ubuntu Mono","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Ultra","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Uncial Antiqua","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Underdog","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Unica One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"UnifrakturCook","font_styles":"700","font_types":"700 bold regular:700:normal"},{"font_family":"UnifrakturMaguntia","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Unkempt","font_styles":"regular,700","font_types":"400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Unlock","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Unna","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"VT323","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vampiro One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Varela","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Varela Round","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vast Shadow","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vibur","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Vidaloka","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Viga","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Voces","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Volkhov","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Vollkorn","font_styles":"regular,italic,700,700italic","font_types":"400 regular:400:normal,400 italic:400:italic,700 bold regular:700:normal,700 bold italic:700:italic"},{"font_family":"Voltaire","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Waiting for the Sunrise","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wallpoet","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Walter Turncoat","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Warnes","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wellfleet","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wendy One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Wire One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Yanone Kaffeesatz","font_styles":"200,300,regular,700","font_types":"200 light regular:200:normal,300 light regular:300:normal,400 regular:400:normal,700 bold regular:700:normal"},{"font_family":"Yellowtail","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Yeseva One","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Yesteryear","font_styles":"regular","font_types":"400 regular:400:normal"},{"font_family":"Zeyada","font_styles":"regular","font_types":"400 regular:400:normal"}]';
/**
* @param $settings
* @param $value
*
* @return string
* @since 4.3
*/
public function render( $settings, $value ) {
/** @var array $fields - used in template.php */
$fields = array();
/** @var array $values - used in template.php */
$values = array();
$set = isset( $settings['settings'], $settings['settings']['fields'] ) ? $settings['settings']['fields'] : array();
extract( $this->_vc_google_fonts_parse_attributes( $set, $value ) );
ob_start();
include vc_path_dir( 'TEMPLATES_DIR', 'params/google_fonts/template.php' );
return ob_get_clean();
}
/**
*
* Load google fonts list for param
* To change this list use add_filters('vc_google_fonts_get_fonts_filter','your_custom_function'); and change array
* vc_filter: vc_google_fonts_get_fonts_filter
*
* @return array
* @since 4.3
*/
public function _vc_google_fonts_get_fonts() {
return apply_filters( 'vc_google_fonts_get_fonts_filter', json_decode( $this->fonts_list ) );
}
/**
* @param $attr
* @param $value
*
* @return array
* @since 4.3
*/
public function _vc_google_fonts_parse_attributes( $attr, $value ) {
$fields = array();
if ( is_array( $attr ) && ! empty( $attr ) ) {
foreach ( $attr as $key => $val ) {
if ( is_numeric( $key ) ) {
$fields[ $val ] = '';
} else {
$fields[ $key ] = $val;
}
}
}
$values = vc_parse_multi_attribute( $value, array(
'font_family' => isset( $fields['font_family'] ) ? $fields['font_family'] : '',
'font_style' => isset( $fields['font_style'] ) ? $fields['font_style'] : '',
'font_family_description' => isset( $fields['font_family_description'] ) ? $fields['font_family_description'] : '',
'font_style_description' => isset( $fields['font_style_description'] ) ? $fields['font_style_description'] : '',
) );
return array(
'fields' => $fields,
'values' => $values,
);
}
}
/**
* Function for rendering param in edit form (add element)
* Parse settings from vc_map and entered values.
*
* @param $settings
* @param $value
*
* @return mixed rendered template for params in edit form
*
* @since 4.3
* vc_filter: vc_google_fonts_render_filter
*/
function vc_google_fonts_form_field( $settings, $value ) {
$google_fonts = new Vc_Google_Fonts();
return apply_filters( 'vc_google_fonts_render_filter', $google_fonts->render( $settings, $value ) );
}
params/tab_id/tab_id.php 0000644 00000000757 15021217214 0011210 0 ustar 00 %s ', esc_attr( $settings['param_name'] ), esc_attr( $settings['param_name'] . ' ' . $settings['type'] ), $value, $value );
return $output;
}
params/vc_link/vc_link.php 0000644 00000002311 15021217214 0011602 0 ustar 00 %s %s: %s %s: %s %s ', esc_attr( $settings['param_name'] ), esc_attr( $settings['param_name'] . ' ' . $settings['type'] ), htmlentities( $value, ENT_QUOTES, 'utf-8' ), htmlentities( wp_json_encode( $link ), ENT_QUOTES, 'utf-8' ), esc_attr( $settings['param_name'] ), esc_html__( 'Select URL', 'js_composer' ), esc_html__( 'Title', 'js_composer' ), $link['title'], esc_html__( 'URL', 'js_composer' ), $link['url'], $link['target'] );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
function vc_build_link( $value ) {
return vc_parse_multi_attribute( $value, array(
'url' => '',
'title' => '',
'target' => '',
'rel' => '',
) );
}
params/iconpicker/iconpicker.php 0000644 00001340010 15021217214 0013006 0 ustar 00 'iconpicker',
* 'heading' => esc_html__( 'Icon', 'js_composer' ),
* 'param_name' => 'icon_fontawesome',
* 'settings' => array(
* 'emptyIcon' => false, // default true, display an "EMPTY"
* icon? - if false it will display first icon from set as default.
* 'iconsPerPage' => 200, // default 100, how many icons
* per/page to display
* ),
* 'dependency' => array(
* 'element' => 'type',
* 'value' => 'fontawesome',
* ),
* ),
* vc_filter: vc_iconpicker-type-{your_icon_font_name} - filter to add new icon
* font type. see example for vc_iconpicker-type-fontawesome in bottom of
* this file Also // SEE HOOKS FOLDER FOR FONTS REGISTERING/ENQUEUE IN BASE
* @path "/include/autoload/hook-vc-iconpicker-param.php"
*/
class Vc_IconPicker {
/**
* @since 4.4
* @var array - save current param data array from vc_map
*/
protected $settings;
/**
* @since 4.4
* @var string - save a current field value
*/
protected $value;
/**
* @since 4.4
* @var array - optional, can be used as self source from self array., you
* can pass it also with filter see Vc_IconPicker::setDefaults
*/
protected $source = array();
/**
* @param $settings - param field data array
* @param $value - param field value
* @since 4.4
*
*/
public function __construct( $settings, $value ) {
$this->settings = $settings;
$this->setDefaults();
$this->value = $value; // param field value
}
/**
* Set default function will extend current settings with defaults
* It can be used in Vc_IconPicker::render, but also it is passed to input
* field and was hooked in composer-atts.js file See vc.atts.iconpicker in
* wp-content/plugins/js_composer/assets/js/params/composer-atts.js init
* method
* - it initializes javascript logic, you can provide ANY default param to
* it with 'settings' key
* @since 4.4
*/
protected function setDefaults() {
if ( ! isset( $this->settings['settings'], $this->settings['settings']['type'] ) ) {
$this->settings['settings']['type'] = 'fontawesome'; // Default type for icons
}
// More about this you can read in http://codeb.it/fonticonpicker/
if ( ! isset( $this->settings['settings'], $this->settings['settings']['hasSearch'] ) ) {
// Whether or not to show the search bar.
$this->settings['settings']['hasSearch'] = true;
}
if ( ! isset( $this->settings['settings'], $this->settings['settings']['emptyIcon'] ) ) {
// Whether or not empty icon should be shown on the icon picker
$this->settings['settings']['emptyIcon'] = true;
}
if ( ! isset( $this->settings['settings'], $this->settings['settings']['allCategoryText'] ) ) {
// If categorized then use this option
$this->settings['settings']['allCategoryText'] = esc_html__( 'From all categories', 'js_composer' );
}
if ( ! isset( $this->settings['settings'], $this->settings['settings']['unCategorizedText'] ) ) {
// If categorized then use this option
$this->settings['settings']['unCategorizedText'] = esc_html__( 'Uncategorized', 'js_composer' );
}
/**
* Source for icons, can be passed via "mapping" or with filter vc_iconpicker-type-{your_type} (default fontawesome)
* vc_filter: vc_iconpicker-type-{your_type} (default fontawesome)
*/
if ( isset( $this->settings['settings'], $this->settings['settings']['source'] ) ) {
$this->source = $this->settings['settings']['source'];
unset( $this->settings['settings']['source'] ); // We don't need this on frontend.(js)
}
}
/**
* Render edit form field type 'iconpicker' with selected settings and
* provided value. It uses javascript file vc-icon-picker
* (vc_iconpicker_base_register_js, vc_iconpicker_editor_jscss), see
* wp-content/plugins/js_composer/include/autoload/hook-vc-iconpicker-param.php
* folder
* @return string - rendered param field for editor panel
* @since 4.4
*/
public function render() {
$output = '';
// call filter vc_iconpicker-type-{your_type}, e.g. vc_iconpicker-type-fontawesome with passed source from shortcode(default empty array). to get icons
$arr = apply_filters( 'vc_iconpicker-type-' . esc_attr( $this->settings['settings']['type'] ), $this->source );
if ( isset( $this->settings['settings'], $this->settings['settings']['emptyIcon'] ) && true === $this->settings['settings']['emptyIcon'] ) {
array_unshift( $arr, array() );
}
if ( ! empty( $arr ) ) {
foreach ( $arr as $group => $icons ) {
if ( ! is_array( $icons ) || ! is_array( current( $icons ) ) ) {
$class_key = key( $icons );
$output .= 'value ) === 0 ? 'selected' : '' ) . '>' . esc_html( current( $icons ) ) . ' ' . "\n";
} else {
$output .= '' . "\n";
foreach ( $icons as $key => $label ) {
$class_key = key( $label );
$output .= 'value ) === 0 ? 'selected' : '' ) . '>' . esc_html( current( $label ) ) . ' ' . "\n";
}
$output .= ' ' . "\n";
}
}
}
$output .= '
';
$output .= ' settings['settings'] ) && ! empty( $this->settings['settings'] ) ) ? ' data-settings="' . esc_attr( wp_json_encode( $this->settings['settings'] ) ) . '" ' : '' ) . ' />';
return $output;
}
}
/**
* Function for rendering param in edit form (add element)
* Parse settings from vc_map and entered values.
*
* @param $settings
* @param $value
* @param $tag
*
* @return string - rendered template for params in edit form
*
* @since 4.4
*/
function vc_iconpicker_form_field( $settings, $value, $tag ) {
$icon_picker = new Vc_IconPicker( $settings, $value );
return apply_filters( 'vc_iconpicker_render_filter', $icon_picker->render() );
}
// SEE HOOKS FOLDER FOR FONTS REGISTERING/ENQUEUE IN BASE @path "/include/autoload/hook-vc-iconpicker-param.php"
add_filter( 'vc_iconpicker-type-fontawesome', 'vc_iconpicker_type_fontawesome' );
/**
* Fontawesome icons from FontAwesome :)
*
* @param $icons - taken from filter - vc_map param field settings['source']
* provided icons (default empty array). If array categorized it will
* auto-enable category dropdown
*
* @return array - of icons for iconpicker, can be categorized, or not.
* @since 4.4
*/
function vc_iconpicker_type_fontawesome( $icons ) {
// Categorized icons ( you can also output simple array ( key=> value ), where key = icon class, value = icon readable name ).
/**
* @version 4.7
*/
$fontawesome_icons = array(
'Accessibility' => array(
array( 'fab fa-accessible-icon' => 'Accessible Icon (accessibility,handicap,person,wheelchair,wheelchair-alt)' ),
array( 'fas fa-american-sign-language-interpreting' => 'American Sign Language Interpreting (asl,deaf,finger,hand,interpret,speak)' ),
array( 'fas fa-assistive-listening-systems' => 'Assistive Listening Systems (amplify,audio,deaf,ear,headset,hearing,sound)' ),
array( 'fas fa-audio-description' => 'Audio Description (blind,narration,video,visual)' ),
array( 'fas fa-blind' => 'Blind (cane,disability,person,sight)' ),
array( 'fas fa-braille' => 'Braille (alphabet,blind,dots,raised,vision)' ),
array( 'fas fa-closed-captioning' => 'Closed Captioning (cc,deaf,hearing,subtitle,subtitling,text,video)' ),
array( 'far fa-closed-captioning' => 'Closed Captioning (cc,deaf,hearing,subtitle,subtitling,text,video)' ),
array( 'fas fa-deaf' => 'Deaf (ear,hearing,sign language)' ),
array( 'fas fa-low-vision' => 'Low Vision (blind,eye,sight)' ),
array( 'fas fa-phone-volume' => 'Phone Volume (call,earphone,number,sound,support,telephone,voice,volume-control-phone)' ),
array( 'fas fa-question-circle' => 'Question Circle (help,information,support,unknown)' ),
array( 'far fa-question-circle' => 'Question Circle (help,information,support,unknown)' ),
array( 'fas fa-sign-language' => 'Sign Language (Translate,asl,deaf,hands)' ),
array( 'fas fa-tty' => 'TTY (communication,deaf,telephone,teletypewriter,text)' ),
array( 'fas fa-universal-access' => 'Universal Access (accessibility,hearing,person,seeing,visual impairment)' ),
array( 'fas fa-wheelchair' => 'Wheelchair (accessible,handicap,person)' ),
),
'Alert' => array(
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'far fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'fas fa-exclamation' => 'exclamation (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-exclamation-circle' => 'Exclamation Circle (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-exclamation-triangle' => 'Exclamation Triangle (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-radiation' => 'Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-radiation-alt' => 'Alternate Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-skull-crossbones' => 'Skull & Crossbones (Dungeons & Dragons,alert,bones,d&d,danger,dead,deadly,death,dnd,fantasy,halloween,holiday,jolly-roger,pirate,poison,skeleton,warning)' ),
),
'Animals' => array(
array( 'fas fa-cat' => 'Cat (feline,halloween,holiday,kitten,kitty,meow,pet)' ),
array( 'fas fa-crow' => 'Crow (bird,bullfrog,fauna,halloween,holiday,toad)' ),
array( 'fas fa-dog' => 'Dog (animal,canine,fauna,mammal,pet,pooch,puppy,woof)' ),
array( 'fas fa-dove' => 'Dove (bird,fauna,flying,peace,war)' ),
array( 'fas fa-dragon' => 'Dragon (Dungeons & Dragons,d&d,dnd,fantasy,fire,lizard,serpent)' ),
array( 'fas fa-feather' => 'Feather (bird,light,plucked,quill,write)' ),
array( 'fas fa-feather-alt' => 'Alternate Feather (bird,light,plucked,quill,write)' ),
array( 'fas fa-fish' => 'Fish (fauna,gold,seafood,swimming)' ),
array( 'fas fa-frog' => 'Frog (amphibian,bullfrog,fauna,hop,kermit,kiss,prince,ribbit,toad,wart)' ),
array( 'fas fa-hippo' => 'Hippo (animal,fauna,hippopotamus,hungry,mammal)' ),
array( 'fas fa-horse' => 'Horse (equus,fauna,mammmal,mare,neigh,pony)' ),
array( 'fas fa-horse-head' => 'Horse Head (equus,fauna,mammmal,mare,neigh,pony)' ),
array( 'fas fa-kiwi-bird' => 'Kiwi Bird (bird,fauna,new zealand)' ),
array( 'fas fa-otter' => 'Otter (animal,badger,fauna,fur,mammal,marten)' ),
array( 'fas fa-paw' => 'Paw (animal,cat,dog,pet,print)' ),
array( 'fas fa-spider' => 'Spider (arachnid,bug,charlotte,crawl,eight,halloween)' ),
),
'Arrows' => array(
array( 'fas fa-angle-double-down' => 'Angle Double Down (arrows,caret,download,expand)' ),
array( 'fas fa-angle-double-left' => 'Angle Double Left (arrows,back,caret,laquo,previous,quote)' ),
array( 'fas fa-angle-double-right' => 'Angle Double Right (arrows,caret,forward,more,next,quote,raquo)' ),
array( 'fas fa-angle-double-up' => 'Angle Double Up (arrows,caret,collapse,upload)' ),
array( 'fas fa-angle-down' => 'angle-down (arrow,caret,download,expand)' ),
array( 'fas fa-angle-left' => 'angle-left (arrow,back,caret,less,previous)' ),
array( 'fas fa-angle-right' => 'angle-right (arrow,care,forward,more,next)' ),
array( 'fas fa-angle-up' => 'angle-up (arrow,caret,collapse,upload)' ),
array( 'fas fa-arrow-alt-circle-down' => 'Alternate Arrow Circle Down (arrow-circle-o-down,download)' ),
array( 'far fa-arrow-alt-circle-down' => 'Alternate Arrow Circle Down (arrow-circle-o-down,download)' ),
array( 'fas fa-arrow-alt-circle-left' => 'Alternate Arrow Circle Left (arrow-circle-o-left,back,previous)' ),
array( 'far fa-arrow-alt-circle-left' => 'Alternate Arrow Circle Left (arrow-circle-o-left,back,previous)' ),
array( 'fas fa-arrow-alt-circle-right' => 'Alternate Arrow Circle Right (arrow-circle-o-right,forward,next)' ),
array( 'far fa-arrow-alt-circle-right' => 'Alternate Arrow Circle Right (arrow-circle-o-right,forward,next)' ),
array( 'fas fa-arrow-alt-circle-up' => 'Alternate Arrow Circle Up (arrow-circle-o-up)' ),
array( 'far fa-arrow-alt-circle-up' => 'Alternate Arrow Circle Up (arrow-circle-o-up)' ),
array( 'fas fa-arrow-circle-down' => 'Arrow Circle Down (download)' ),
array( 'fas fa-arrow-circle-left' => 'Arrow Circle Left (back,previous)' ),
array( 'fas fa-arrow-circle-right' => 'Arrow Circle Right (forward,next)' ),
array( 'fas fa-arrow-circle-up' => 'Arrow Circle Up (upload)' ),
array( 'fas fa-arrow-down' => 'arrow-down (download)' ),
array( 'fas fa-arrow-left' => 'arrow-left (back,previous)' ),
array( 'fas fa-arrow-right' => 'arrow-right (forward,next)' ),
array( 'fas fa-arrow-up' => 'arrow-up (forward,upload)' ),
array( 'fas fa-arrows-alt' => 'Alternate Arrows (arrow,arrows,bigger,enlarge,expand,fullscreen,move,position,reorder,resize)' ),
array( 'fas fa-arrows-alt-h' => 'Alternate Arrows Horizontal (arrows-h,expand,horizontal,landscape,resize,wide)' ),
array( 'fas fa-arrows-alt-v' => 'Alternate Arrows Vertical (arrows-v,expand,portrait,resize,tall,vertical)' ),
array( 'fas fa-caret-down' => 'Caret Down (arrow,dropdown,expand,menu,more,triangle)' ),
array( 'fas fa-caret-left' => 'Caret Left (arrow,back,previous,triangle)' ),
array( 'fas fa-caret-right' => 'Caret Right (arrow,forward,next,triangle)' ),
array( 'fas fa-caret-square-down' => 'Caret Square Down (arrow,caret-square-o-down,dropdown,expand,menu,more,triangle)' ),
array( 'far fa-caret-square-down' => 'Caret Square Down (arrow,caret-square-o-down,dropdown,expand,menu,more,triangle)' ),
array( 'fas fa-caret-square-left' => 'Caret Square Left (arrow,back,caret-square-o-left,previous,triangle)' ),
array( 'far fa-caret-square-left' => 'Caret Square Left (arrow,back,caret-square-o-left,previous,triangle)' ),
array( 'fas fa-caret-square-right' => 'Caret Square Right (arrow,caret-square-o-right,forward,next,triangle)' ),
array( 'far fa-caret-square-right' => 'Caret Square Right (arrow,caret-square-o-right,forward,next,triangle)' ),
array( 'fas fa-caret-square-up' => 'Caret Square Up (arrow,caret-square-o-up,collapse,triangle,upload)' ),
array( 'far fa-caret-square-up' => 'Caret Square Up (arrow,caret-square-o-up,collapse,triangle,upload)' ),
array( 'fas fa-caret-up' => 'Caret Up (arrow,collapse,triangle)' ),
array( 'fas fa-cart-arrow-down' => 'Shopping Cart Arrow Down (download,save,shopping)' ),
array( 'fas fa-chart-line' => 'Line Chart (activity,analytics,chart,dashboard,gain,graph,increase,line)' ),
array( 'fas fa-chevron-circle-down' => 'Chevron Circle Down (arrow,download,dropdown,menu,more)' ),
array( 'fas fa-chevron-circle-left' => 'Chevron Circle Left (arrow,back,previous)' ),
array( 'fas fa-chevron-circle-right' => 'Chevron Circle Right (arrow,forward,next)' ),
array( 'fas fa-chevron-circle-up' => 'Chevron Circle Up (arrow,collapse,upload)' ),
array( 'fas fa-chevron-down' => 'chevron-down (arrow,download,expand)' ),
array( 'fas fa-chevron-left' => 'chevron-left (arrow,back,bracket,previous)' ),
array( 'fas fa-chevron-right' => 'chevron-right (arrow,bracket,forward,next)' ),
array( 'fas fa-chevron-up' => 'chevron-up (arrow,collapse,upload)' ),
array( 'fas fa-cloud-download-alt' => 'Alternate Cloud Download (download,export,save)' ),
array( 'fas fa-cloud-upload-alt' => 'Alternate Cloud Upload (cloud-upload,import,save,upload)' ),
array( 'fas fa-compress-arrows-alt' => 'Alternate Compress Arrows (collapse,fullscreen,minimize,move,resize,shrink,smaller)' ),
array( 'fas fa-download' => 'Download (export,hard drive,save,transfer)' ),
array( 'fas fa-exchange-alt' => 'Alternate Exchange (arrow,arrows,exchange,reciprocate,return,swap,transfer)' ),
array( 'fas fa-expand-arrows-alt' => 'Alternate Expand Arrows (arrows-alt,bigger,enlarge,move,resize)' ),
array( 'fas fa-external-link-alt' => 'Alternate External Link (external-link,new,open,share)' ),
array( 'fas fa-external-link-square-alt' => 'Alternate External Link Square (external-link-square,new,open,share)' ),
array( 'fas fa-hand-point-down' => 'Hand Pointing Down (finger,hand-o-down,point)' ),
array( 'far fa-hand-point-down' => 'Hand Pointing Down (finger,hand-o-down,point)' ),
array( 'fas fa-hand-point-left' => 'Hand Pointing Left (back,finger,hand-o-left,left,point,previous)' ),
array( 'far fa-hand-point-left' => 'Hand Pointing Left (back,finger,hand-o-left,left,point,previous)' ),
array( 'fas fa-hand-point-right' => 'Hand Pointing Right (finger,forward,hand-o-right,next,point,right)' ),
array( 'far fa-hand-point-right' => 'Hand Pointing Right (finger,forward,hand-o-right,next,point,right)' ),
array( 'fas fa-hand-point-up' => 'Hand Pointing Up (finger,hand-o-up,point)' ),
array( 'far fa-hand-point-up' => 'Hand Pointing Up (finger,hand-o-up,point)' ),
array( 'fas fa-hand-pointer' => 'Pointer (Hand) (arrow,cursor,select)' ),
array( 'far fa-hand-pointer' => 'Pointer (Hand) (arrow,cursor,select)' ),
array( 'fas fa-history' => 'History (Rewind,clock,reverse,time,time machine)' ),
array( 'fas fa-level-down-alt' => 'Alternate Level Down (arrow,level-down)' ),
array( 'fas fa-level-up-alt' => 'Alternate Level Up (arrow,level-up)' ),
array( 'fas fa-location-arrow' => 'location-arrow (address,compass,coordinate,direction,gps,map,navigation,place)' ),
array( 'fas fa-long-arrow-alt-down' => 'Alternate Long Arrow Down (download,long-arrow-down)' ),
array( 'fas fa-long-arrow-alt-left' => 'Alternate Long Arrow Left (back,long-arrow-left,previous)' ),
array( 'fas fa-long-arrow-alt-right' => 'Alternate Long Arrow Right (forward,long-arrow-right,next)' ),
array( 'fas fa-long-arrow-alt-up' => 'Alternate Long Arrow Up (long-arrow-up,upload)' ),
array( 'fas fa-mouse-pointer' => 'Mouse Pointer (arrow,cursor,select)' ),
array( 'fas fa-play' => 'play (audio,music,playing,sound,start,video)' ),
array( 'fas fa-random' => 'random (arrows,shuffle,sort,swap,switch,transfer)' ),
array( 'fas fa-recycle' => 'Recycle (Waste,compost,garbage,reuse,trash)' ),
array( 'fas fa-redo' => 'Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-redo-alt' => 'Alternate Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-reply' => 'Reply (mail,message,respond)' ),
array( 'fas fa-reply-all' => 'reply-all (mail,message,respond)' ),
array( 'fas fa-retweet' => 'Retweet (refresh,reload,share,swap)' ),
array( 'fas fa-share' => 'Share (forward,save,send,social)' ),
array( 'fas fa-share-square' => 'Share Square (forward,save,send,social)' ),
array( 'far fa-share-square' => 'Share Square (forward,save,send,social)' ),
array( 'fas fa-sign-in-alt' => 'Alternate Sign In (arrow,enter,join,log in,login,sign in,sign up,sign-in,signin,signup)' ),
array( 'fas fa-sign-out-alt' => 'Alternate Sign Out (arrow,exit,leave,log out,logout,sign-out)' ),
array( 'fas fa-sort' => 'Sort (filter,order)' ),
array( 'fas fa-sort-alpha-down' => 'Sort Alphabetical Down (alphabetical,arrange,filter,order,sort-alpha-asc)' ),
array( 'fas fa-sort-alpha-down-alt' => 'Alternate Sort Alphabetical Down (alphabetical,arrange,filter,order,sort-alpha-asc)' ),
array( 'fas fa-sort-alpha-up' => 'Sort Alphabetical Up (alphabetical,arrange,filter,order,sort-alpha-desc)' ),
array( 'fas fa-sort-alpha-up-alt' => 'Alternate Sort Alphabetical Up (alphabetical,arrange,filter,order,sort-alpha-desc)' ),
array( 'fas fa-sort-amount-down' => 'Sort Amount Down (arrange,filter,number,order,sort-amount-asc)' ),
array( 'fas fa-sort-amount-down-alt' => 'Alternate Sort Amount Down (arrange,filter,order,sort-amount-asc)' ),
array( 'fas fa-sort-amount-up' => 'Sort Amount Up (arrange,filter,order,sort-amount-desc)' ),
array( 'fas fa-sort-amount-up-alt' => 'Alternate Sort Amount Up (arrange,filter,order,sort-amount-desc)' ),
array( 'fas fa-sort-down' => 'Sort Down (Descending) (arrow,descending,filter,order,sort-desc)' ),
array( 'fas fa-sort-numeric-down' => 'Sort Numeric Down (arrange,filter,numbers,order,sort-numeric-asc)' ),
array( 'fas fa-sort-numeric-down-alt' => 'Alternate Sort Numeric Down (arrange,filter,numbers,order,sort-numeric-asc)' ),
array( 'fas fa-sort-numeric-up' => 'Sort Numeric Up (arrange,filter,numbers,order,sort-numeric-desc)' ),
array( 'fas fa-sort-numeric-up-alt' => 'Alternate Sort Numeric Up (arrange,filter,numbers,order,sort-numeric-desc)' ),
array( 'fas fa-sort-up' => 'Sort Up (Ascending) (arrow,ascending,filter,order,sort-asc)' ),
array( 'fas fa-sync' => 'Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-sync-alt' => 'Alternate Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-text-height' => 'text-height (edit,font,format,text,type)' ),
array( 'fas fa-text-width' => 'Text Width (edit,font,format,text,type)' ),
array( 'fas fa-undo' => 'Undo (back,control z,exchange,oops,return,rotate,swap)' ),
array( 'fas fa-undo-alt' => 'Alternate Undo (back,control z,exchange,oops,return,swap)' ),
array( 'fas fa-upload' => 'Upload (hard drive,import,publish)' ),
),
'Audio & Video' => array(
array( 'fas fa-audio-description' => 'Audio Description (blind,narration,video,visual)' ),
array( 'fas fa-backward' => 'backward (previous,rewind)' ),
array( 'fas fa-broadcast-tower' => 'Broadcast Tower (airwaves,antenna,radio,reception,waves)' ),
array( 'fas fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'far fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'fas fa-closed-captioning' => 'Closed Captioning (cc,deaf,hearing,subtitle,subtitling,text,video)' ),
array( 'far fa-closed-captioning' => 'Closed Captioning (cc,deaf,hearing,subtitle,subtitling,text,video)' ),
array( 'fas fa-compress' => 'Compress (collapse,fullscreen,minimize,move,resize,shrink,smaller)' ),
array( 'fas fa-compress-arrows-alt' => 'Alternate Compress Arrows (collapse,fullscreen,minimize,move,resize,shrink,smaller)' ),
array( 'fas fa-eject' => 'eject (abort,cancel,cd,discharge)' ),
array( 'fas fa-expand' => 'Expand (arrow,bigger,enlarge,resize)' ),
array( 'fas fa-expand-arrows-alt' => 'Alternate Expand Arrows (arrows-alt,bigger,enlarge,move,resize)' ),
array( 'fas fa-fast-backward' => 'fast-backward (beginning,first,previous,rewind,start)' ),
array( 'fas fa-fast-forward' => 'fast-forward (end,last,next)' ),
array( 'fas fa-file-audio' => 'Audio File (document,mp3,music,page,play,sound)' ),
array( 'far fa-file-audio' => 'Audio File (document,mp3,music,page,play,sound)' ),
array( 'fas fa-file-video' => 'Video File (document,m4v,movie,mp4,play)' ),
array( 'far fa-file-video' => 'Video File (document,m4v,movie,mp4,play)' ),
array( 'fas fa-film' => 'Film (cinema,movie,strip,video)' ),
array( 'fas fa-forward' => 'forward (forward,next,skip)' ),
array( 'fas fa-headphones' => 'headphones (audio,listen,music,sound,speaker)' ),
array( 'fas fa-microphone' => 'microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt' => 'Alternate Microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt-slash' => 'Alternate Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-slash' => 'Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-music' => 'Music (lyrics,melody,note,sing,sound)' ),
array( 'fas fa-pause' => 'pause (hold,wait)' ),
array( 'fas fa-pause-circle' => 'Pause Circle (hold,wait)' ),
array( 'far fa-pause-circle' => 'Pause Circle (hold,wait)' ),
array( 'fas fa-phone-volume' => 'Phone Volume (call,earphone,number,sound,support,telephone,voice,volume-control-phone)' ),
array( 'fas fa-photo-video' => 'Photo Video (av,film,image,library,media)' ),
array( 'fas fa-play' => 'play (audio,music,playing,sound,start,video)' ),
array( 'fas fa-play-circle' => 'Play Circle (audio,music,playing,sound,start,video)' ),
array( 'far fa-play-circle' => 'Play Circle (audio,music,playing,sound,start,video)' ),
array( 'fas fa-podcast' => 'Podcast (audio,broadcast,music,sound)' ),
array( 'fas fa-random' => 'random (arrows,shuffle,sort,swap,switch,transfer)' ),
array( 'fas fa-redo' => 'Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-redo-alt' => 'Alternate Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-rss' => 'rss (blog,feed,journal,news,writing)' ),
array( 'fas fa-rss-square' => 'RSS Square (blog,feed,journal,news,writing)' ),
array( 'fas fa-step-backward' => 'step-backward (beginning,first,previous,rewind,start)' ),
array( 'fas fa-step-forward' => 'step-forward (end,last,next)' ),
array( 'fas fa-stop' => 'stop (block,box,square)' ),
array( 'fas fa-stop-circle' => 'Stop Circle (block,box,circle,square)' ),
array( 'far fa-stop-circle' => 'Stop Circle (block,box,circle,square)' ),
array( 'fas fa-sync' => 'Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-sync-alt' => 'Alternate Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-tv' => 'Television (computer,display,monitor,television)' ),
array( 'fas fa-undo' => 'Undo (back,control z,exchange,oops,return,rotate,swap)' ),
array( 'fas fa-undo-alt' => 'Alternate Undo (back,control z,exchange,oops,return,swap)' ),
array( 'fas fa-video' => 'Video (camera,film,movie,record,video-camera)' ),
array( 'fas fa-volume-down' => 'Volume Down (audio,lower,music,quieter,sound,speaker)' ),
array( 'fas fa-volume-mute' => 'Volume Mute (audio,music,quiet,sound,speaker)' ),
array( 'fas fa-volume-off' => 'Volume Off (audio,ban,music,mute,quiet,silent,sound)' ),
array( 'fas fa-volume-up' => 'Volume Up (audio,higher,louder,music,sound,speaker)' ),
array( 'fab fa-youtube' => 'YouTube (film,video,youtube-play,youtube-square)' ),
),
'Automotive' => array(
array( 'fas fa-air-freshener' => 'Air Freshener (car,deodorize,fresh,pine,scent)' ),
array( 'fas fa-ambulance' => 'ambulance (emergency,emt,er,help,hospital,support,vehicle)' ),
array( 'fas fa-bus' => 'Bus (public transportation,transportation,travel,vehicle)' ),
array( 'fas fa-bus-alt' => 'Bus Alt (mta,public transportation,transportation,travel,vehicle)' ),
array( 'fas fa-car' => 'Car (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-car-alt' => 'Alternate Car (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-car-battery' => 'Car Battery (auto,electric,mechanic,power)' ),
array( 'fas fa-car-crash' => 'Car Crash (accident,auto,automobile,insurance,sedan,transportation,vehicle,wreck)' ),
array( 'fas fa-car-side' => 'Car Side (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-charging-station' => 'Charging Station (electric,ev,tesla,vehicle)' ),
array( 'fas fa-gas-pump' => 'Gas Pump (car,fuel,gasoline,petrol)' ),
array( 'fas fa-motorcycle' => 'Motorcycle (bike,machine,transportation,vehicle)' ),
array( 'fas fa-oil-can' => 'Oil Can (auto,crude,gasoline,grease,lubricate,petroleum)' ),
array( 'fas fa-shuttle-van' => 'Shuttle Van (airport,machine,public-transportation,transportation,travel,vehicle)' ),
array( 'fas fa-tachometer-alt' => 'Alternate Tachometer (dashboard,fast,odometer,speed,speedometer)' ),
array( 'fas fa-taxi' => 'Taxi (cab,cabbie,car,car service,lyft,machine,transportation,travel,uber,vehicle)' ),
array( 'fas fa-truck' => 'truck (cargo,delivery,shipping,vehicle)' ),
array( 'fas fa-truck-monster' => 'Truck Monster (offroad,vehicle,wheel)' ),
array( 'fas fa-truck-pickup' => 'Truck Side (cargo,vehicle)' ),
),
'Autumn' => array(
array( 'fas fa-apple-alt' => 'Fruit Apple (fall,fruit,fuji,macintosh,orchard,seasonal,vegan)' ),
array( 'fas fa-campground' => 'Campground (camping,fall,outdoors,teepee,tent,tipi)' ),
array( 'fas fa-cloud-sun' => 'Cloud with Sun (clear,day,daytime,fall,outdoors,overcast,partly cloudy)' ),
array( 'fas fa-drumstick-bite' => 'Drumstick with Bite Taken Out (bone,chicken,leg,meat,poultry,turkey)' ),
array( 'fas fa-football-ball' => 'Football Ball (ball,fall,nfl,pigskin,seasonal)' ),
array( 'fas fa-hiking' => 'Hiking (activity,backpack,fall,fitness,outdoors,person,seasonal,walking)' ),
array( 'fas fa-mountain' => 'Mountain (glacier,hiking,hill,landscape,travel,view)' ),
array( 'fas fa-tractor' => 'Tractor (agriculture,farm,vehicle)' ),
array( 'fas fa-tree' => 'Tree (bark,fall,flora,forest,nature,plant,seasonal)' ),
array( 'fas fa-wind' => 'Wind (air,blow,breeze,fall,seasonal,weather)' ),
array( 'fas fa-wine-bottle' => 'Wine Bottle (alcohol,beverage,cabernet,drink,glass,grapes,merlot,sauvignon)' ),
),
'Beverage' => array(
array( 'fas fa-beer' => 'beer (alcohol,ale,bar,beverage,brewery,drink,lager,liquor,mug,stein)' ),
array( 'fas fa-blender' => 'Blender (cocktail,milkshake,mixer,puree,smoothie)' ),
array( 'fas fa-cocktail' => 'Cocktail (alcohol,beverage,drink,gin,glass,margarita,martini,vodka)' ),
array( 'fas fa-coffee' => 'Coffee (beverage,breakfast,cafe,drink,fall,morning,mug,seasonal,tea)' ),
array( 'fas fa-flask' => 'Flask (beaker,experimental,labs,science)' ),
array( 'fas fa-glass-cheers' => 'Glass Cheers (alcohol,bar,beverage,celebration,champagne,clink,drink,holiday,new year\'s eve,party,toast)' ),
array( 'fas fa-glass-martini' => 'Martini Glass (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-glass-martini-alt' => 'Alternate Glass Martini (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-glass-whiskey' => 'Glass Whiskey (alcohol,bar,beverage,bourbon,drink,liquor,neat,rye,scotch,whisky)' ),
array( 'fas fa-mug-hot' => 'Mug Hot (caliente,cocoa,coffee,cup,drink,holiday,hot chocolate,steam,tea,warmth)' ),
array( 'fas fa-wine-bottle' => 'Wine Bottle (alcohol,beverage,cabernet,drink,glass,grapes,merlot,sauvignon)' ),
array( 'fas fa-wine-glass' => 'Wine Glass (alcohol,beverage,cabernet,drink,grapes,merlot,sauvignon)' ),
array( 'fas fa-wine-glass-alt' => 'Alternate Wine Glas (alcohol,beverage,cabernet,drink,grapes,merlot,sauvignon)' ),
),
'Brands' => array(
array( 'fab fa-creative-commons' => 'Creative Commons' ),
array( 'fab fa-twitter-square' => 'Twitter Square (social network,tweet)' ),
array( 'fab fa-facebook-square' => 'Facebook Square (social network)' ),
array( 'fab fa-linkedin' => 'LinkedIn (linkedin-square)' ),
array( 'fab fa-github-square' => 'GitHub Square (octocat)' ),
array( 'fab fa-twitter' => 'Twitter (social network,tweet)' ),
array( 'fab fa-facebook-f' => 'Facebook F (facebook)' ),
array( 'fab fa-github' => 'GitHub (octocat)' ),
array( 'fab fa-pinterest' => 'Pinterest' ),
array( 'fab fa-pinterest-square' => 'Pinterest Square' ),
array( 'fab fa-google-plus-square' => 'Google Plus Square (social network)' ),
array( 'fab fa-google-plus-g' => 'Google Plus G (google-plus,social network)' ),
array( 'fab fa-linkedin-in' => 'LinkedIn In (linkedin)' ),
array( 'fab fa-github-alt' => 'Alternate GitHub (octocat)' ),
array( 'fab fa-maxcdn' => 'MaxCDN' ),
array( 'fab fa-html5' => 'HTML 5 Logo' ),
array( 'fab fa-css3' => 'CSS 3 Logo (code)' ),
array( 'fab fa-youtube-square' => 'YouTube Square' ),
array( 'fab fa-xing' => 'Xing' ),
array( 'fab fa-xing-square' => 'Xing Square' ),
array( 'fab fa-dropbox' => 'Dropbox' ),
array( 'fab fa-stack-overflow' => 'Stack Overflow' ),
array( 'fab fa-instagram' => 'Instagram' ),
array( 'fab fa-flickr' => 'Flickr' ),
array( 'fab fa-adn' => 'App.net' ),
array( 'fab fa-bitbucket' => 'Bitbucket (atlassian,bitbucket-square,git)' ),
array( 'fab fa-tumblr' => 'Tumblr' ),
array( 'fab fa-tumblr-square' => 'Tumblr Square' ),
array( 'fab fa-apple' => 'Apple (fruit,ios,mac,operating system,os,osx)' ),
array( 'fab fa-windows' => 'Windows (microsoft,operating system,os)' ),
array( 'fab fa-android' => 'Android (robot)' ),
array( 'fab fa-linux' => 'Linux (tux)' ),
array( 'fab fa-dribbble' => 'Dribbble' ),
array( 'fab fa-skype' => 'Skype' ),
array( 'fab fa-foursquare' => 'Foursquare' ),
array( 'fab fa-trello' => 'Trello (atlassian)' ),
array( 'fab fa-gratipay' => 'Gratipay (Gittip) (favorite,heart,like,love)' ),
array( 'fab fa-vk' => 'VK' ),
array( 'fab fa-weibo' => 'Weibo' ),
array( 'fab fa-renren' => 'Renren' ),
array( 'fab fa-pagelines' => 'Pagelines (eco,flora,leaf,leaves,nature,plant,tree)' ),
array( 'fab fa-stack-exchange' => 'Stack Exchange' ),
array( 'fab fa-vimeo-square' => 'Vimeo Square' ),
array( 'fab fa-slack' => 'Slack Logo (anchor,hash,hashtag)' ),
array( 'fab fa-wordpress' => 'WordPress Logo' ),
array( 'fab fa-openid' => 'OpenID' ),
array( 'fab fa-yahoo' => 'Yahoo Logo' ),
array( 'fab fa-google' => 'Google Logo' ),
array( 'fab fa-reddit' => 'reddit Logo' ),
array( 'fab fa-reddit-square' => 'reddit Square' ),
array( 'fab fa-stumbleupon-circle' => 'StumbleUpon Circle' ),
array( 'fab fa-stumbleupon' => 'StumbleUpon Logo' ),
array( 'fab fa-delicious' => 'Delicious' ),
array( 'fab fa-digg' => 'Digg Logo' ),
array( 'fab fa-pied-piper-pp' => 'Pied Piper PP Logo (Old)' ),
array( 'fab fa-pied-piper-alt' => 'Alternate Pied Piper Logo' ),
array( 'fab fa-drupal' => 'Drupal Logo' ),
array( 'fab fa-joomla' => 'Joomla Logo' ),
array( 'fab fa-behance' => 'Behance' ),
array( 'fab fa-behance-square' => 'Behance Square' ),
array( 'fab fa-deviantart' => 'deviantART' ),
array( 'fab fa-vine' => 'Vine' ),
array( 'fab fa-codepen' => 'Codepen' ),
array( 'fab fa-jsfiddle' => 'jsFiddle' ),
array( 'fab fa-rebel' => 'Rebel Alliance' ),
array( 'fab fa-empire' => 'Galactic Empire' ),
array( 'fab fa-git-square' => 'Git Square' ),
array( 'fab fa-git' => 'Git' ),
array( 'fab fa-hacker-news' => 'Hacker News' ),
array( 'fab fa-tencent-weibo' => 'Tencent Weibo' ),
array( 'fab fa-qq' => 'QQ' ),
array( 'fab fa-weixin' => 'Weixin (WeChat)' ),
array( 'fab fa-slideshare' => 'Slideshare' ),
array( 'fab fa-yelp' => 'Yelp' ),
array( 'fab fa-lastfm' => 'last.fm' ),
array( 'fab fa-lastfm-square' => 'last.fm Square' ),
array( 'fab fa-ioxhost' => 'ioxhost' ),
array( 'fab fa-angellist' => 'AngelList' ),
array( 'fab fa-font-awesome' => 'Font Awesome (meanpath)' ),
array( 'fab fa-buysellads' => 'BuySellAds' ),
array( 'fab fa-connectdevelop' => 'Connect Develop' ),
array( 'fab fa-dashcube' => 'DashCube' ),
array( 'fab fa-forumbee' => 'Forumbee' ),
array( 'fab fa-leanpub' => 'Leanpub' ),
array( 'fab fa-sellsy' => 'Sellsy' ),
array( 'fab fa-shirtsinbulk' => 'Shirts in Bulk' ),
array( 'fab fa-simplybuilt' => 'SimplyBuilt' ),
array( 'fab fa-skyatlas' => 'skyatlas' ),
array( 'fab fa-facebook' => 'Facebook (facebook-official,social network)' ),
array( 'fab fa-pinterest-p' => 'Pinterest P' ),
array( 'fab fa-whatsapp' => 'What\'s App' ),
array( 'fab fa-viacoin' => 'Viacoin' ),
array( 'fab fa-medium' => 'Medium' ),
array( 'fab fa-y-combinator' => 'Y Combinator' ),
array( 'fab fa-optin-monster' => 'Optin Monster' ),
array( 'fab fa-opencart' => 'OpenCart' ),
array( 'fab fa-expeditedssl' => 'ExpeditedSSL' ),
array( 'fab fa-tripadvisor' => 'TripAdvisor' ),
array( 'fab fa-odnoklassniki' => 'Odnoklassniki' ),
array( 'fab fa-odnoklassniki-square' => 'Odnoklassniki Square' ),
array( 'fab fa-get-pocket' => 'Get Pocket' ),
array( 'fab fa-wikipedia-w' => 'Wikipedia W' ),
array( 'fab fa-safari' => 'Safari (browser)' ),
array( 'fab fa-chrome' => 'Chrome (browser)' ),
array( 'fab fa-firefox' => 'Firefox (browser)' ),
array( 'fab fa-opera' => 'Opera' ),
array( 'fab fa-internet-explorer' => 'Internet-explorer (browser,ie)' ),
array( 'fab fa-contao' => 'Contao' ),
array( 'fab fa-500px' => '500px' ),
array( 'fab fa-amazon' => 'Amazon' ),
array( 'fab fa-houzz' => 'Houzz' ),
array( 'fab fa-vimeo-v' => 'Vimeo (vimeo)' ),
array( 'fab fa-black-tie' => 'Font Awesome Black Tie' ),
array( 'fab fa-fonticons' => 'Fonticons' ),
array( 'fab fa-reddit-alien' => 'reddit Alien' ),
array( 'fab fa-edge' => 'Edge Browser (browser,ie)' ),
array( 'fab fa-codiepie' => 'Codie Pie' ),
array( 'fab fa-modx' => 'MODX' ),
array( 'fab fa-fort-awesome' => 'Fort Awesome (castle)' ),
array( 'fab fa-usb' => 'USB' ),
array( 'fab fa-product-hunt' => 'Product Hunt' ),
array( 'fab fa-mixcloud' => 'Mixcloud' ),
array( 'fab fa-scribd' => 'Scribd' ),
array( 'fab fa-gitlab' => 'GitLab (Axosoft)' ),
array( 'fab fa-wpbeginner' => 'WPBeginner' ),
array( 'fab fa-wpforms' => 'WPForms' ),
array( 'fab fa-envira' => 'Envira Gallery (leaf)' ),
array( 'fab fa-glide' => 'Glide' ),
array( 'fab fa-glide-g' => 'Glide G' ),
array( 'fab fa-viadeo' => 'Video' ),
array( 'fab fa-viadeo-square' => 'Video Square' ),
array( 'fab fa-snapchat' => 'Snapchat' ),
array( 'fab fa-snapchat-ghost' => 'Snapchat Ghost' ),
array( 'fab fa-snapchat-square' => 'Snapchat Square' ),
array( 'fab fa-pied-piper' => 'Pied Piper Logo' ),
array( 'fab fa-first-order' => 'First Order' ),
array( 'fab fa-yoast' => 'Yoast' ),
array( 'fab fa-themeisle' => 'ThemeIsle' ),
array( 'fab fa-google-plus' => 'Google Plus (google-plus-circle,google-plus-official)' ),
array( 'fab fa-linode' => 'Linode' ),
array( 'fab fa-quora' => 'Quora' ),
array( 'fab fa-free-code-camp' => 'Free Code Camp' ),
array( 'fab fa-telegram' => 'Telegram' ),
array( 'fab fa-bandcamp' => 'Bandcamp' ),
array( 'fab fa-grav' => 'Grav' ),
array( 'fab fa-etsy' => 'Etsy' ),
array( 'fab fa-imdb' => 'IMDB' ),
array( 'fab fa-ravelry' => 'Ravelry' ),
array( 'fab fa-sellcast' => 'Sellcast (eercast)' ),
array( 'fab fa-superpowers' => 'Superpowers' ),
array( 'fab fa-wpexplorer' => 'WPExplorer' ),
array( 'fab fa-meetup' => 'Meetup' ),
),
'Buildings' => array(
array( 'fas fa-archway' => 'Archway (arc,monument,road,street,tunnel)' ),
array( 'fas fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'far fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'fas fa-campground' => 'Campground (camping,fall,outdoors,teepee,tent,tipi)' ),
array( 'fas fa-church' => 'Church (building,cathedral,chapel,community,religion)' ),
array( 'fas fa-city' => 'City (buildings,busy,skyscrapers,urban,windows)' ),
array( 'fas fa-clinic-medical' => 'Medical Clinic (doctor,general practitioner,hospital,infirmary,medicine,office,outpatient)' ),
array( 'fas fa-dungeon' => 'Dungeon (Dungeons & Dragons,building,d&d,dnd,door,entrance,fantasy,gate)' ),
array( 'fas fa-gopuram' => 'Gopuram (building,entrance,hinduism,temple,tower)' ),
array( 'fas fa-home' => 'home (abode,building,house,main)' ),
array( 'fas fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'far fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'fas fa-hospital-alt' => 'Alternate Hospital (building,emergency room,medical center)' ),
array( 'fas fa-hotel' => 'Hotel (building,inn,lodging,motel,resort,travel)' ),
array( 'fas fa-house-damage' => 'Damaged House (building,devastation,disaster,home,insurance)' ),
array( 'fas fa-igloo' => 'Igloo (dome,dwelling,eskimo,home,house,ice,snow)' ),
array( 'fas fa-industry' => 'Industry (building,factory,industrial,manufacturing,mill,warehouse)' ),
array( 'fas fa-kaaba' => 'Kaaba (building,cube,islam,muslim)' ),
array( 'fas fa-landmark' => 'Landmark (building,historic,memorable,monument,politics)' ),
array( 'fas fa-monument' => 'Monument (building,historic,landmark,memorable)' ),
array( 'fas fa-mosque' => 'Mosque (building,islam,landmark,muslim)' ),
array( 'fas fa-place-of-worship' => 'Place of Worship (building,church,holy,mosque,synagogue)' ),
array( 'fas fa-school' => 'School (building,education,learn,student,teacher)' ),
array( 'fas fa-store' => 'Store (building,buy,purchase,shopping)' ),
array( 'fas fa-store-alt' => 'Alternate Store (building,buy,purchase,shopping)' ),
array( 'fas fa-synagogue' => 'Synagogue (building,jewish,judaism,religion,star of david,temple)' ),
array( 'fas fa-torii-gate' => 'Torii Gate (building,shintoism)' ),
array( 'fas fa-university' => 'University (bank,building,college,higher education - students,institution)' ),
array( 'fas fa-vihara' => 'Vihara (buddhism,buddhist,building,monastery)' ),
array( 'fas fa-warehouse' => 'Warehouse (building,capacity,garage,inventory,storage)' ),
),
'Business' => array(
array( 'fas fa-address-book' => 'Address Book (contact,directory,index,little black book,rolodex)' ),
array( 'far fa-address-book' => 'Address Book (contact,directory,index,little black book,rolodex)' ),
array( 'fas fa-address-card' => 'Address Card (about,contact,id,identification,postcard,profile)' ),
array( 'far fa-address-card' => 'Address Card (about,contact,id,identification,postcard,profile)' ),
array( 'fas fa-archive' => 'Archive (box,package,save,storage)' ),
array( 'fas fa-balance-scale' => 'Balance Scale (balanced,justice,legal,measure,weight)' ),
array( 'fas fa-balance-scale-left' => 'Balance Scale (Left-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-balance-scale-right' => 'Balance Scale (Right-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-birthday-cake' => 'Birthday Cake (anniversary,bakery,candles,celebration,dessert,frosting,holiday,party,pastry)' ),
array( 'fas fa-book' => 'book (diary,documentation,journal,library,read)' ),
array( 'fas fa-briefcase' => 'Briefcase (bag,business,luggage,office,work)' ),
array( 'fas fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'far fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'fas fa-bullhorn' => 'bullhorn (announcement,broadcast,louder,megaphone,share)' ),
array( 'fas fa-bullseye' => 'Bullseye (archery,goal,objective,target)' ),
array( 'fas fa-business-time' => 'Business Time (alarm,briefcase,business socks,clock,flight of the conchords,reminder,wednesday)' ),
array( 'fas fa-calculator' => 'Calculator (abacus,addition,arithmetic,counting,math,multiplication,subtraction)' ),
array( 'fas fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'far fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'far fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'fas fa-certificate' => 'certificate (badge,star,verified)' ),
array( 'fas fa-chart-area' => 'Area Chart (analytics,area,chart,graph)' ),
array( 'fas fa-chart-bar' => 'Bar Chart (analytics,bar,chart,graph)' ),
array( 'far fa-chart-bar' => 'Bar Chart (analytics,bar,chart,graph)' ),
array( 'fas fa-chart-line' => 'Line Chart (activity,analytics,chart,dashboard,gain,graph,increase,line)' ),
array( 'fas fa-chart-pie' => 'Pie Chart (analytics,chart,diagram,graph,pie)' ),
array( 'fas fa-city' => 'City (buildings,busy,skyscrapers,urban,windows)' ),
array( 'fas fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'far fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'fas fa-coffee' => 'Coffee (beverage,breakfast,cafe,drink,fall,morning,mug,seasonal,tea)' ),
array( 'fas fa-columns' => 'Columns (browser,dashboard,organize,panes,split)' ),
array( 'fas fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'far fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'fas fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'far fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'fas fa-copyright' => 'Copyright (brand,mark,register,trademark)' ),
array( 'far fa-copyright' => 'Copyright (brand,mark,register,trademark)' ),
array( 'fas fa-cut' => 'Cut (clip,scissors,snip)' ),
array( 'fas fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'far fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'fas fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-envelope-square' => 'Envelope Square (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-eraser' => 'eraser (art,delete,remove,rubber)' ),
array( 'fas fa-fax' => 'Fax (business,communicate,copy,facsimile,send)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'far fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'fas fa-folder-minus' => 'Folder Minus (archive,delete,directory,document,file,negative,remove)' ),
array( 'fas fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'far fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'fas fa-folder-plus' => 'Folder Plus (add,archive,create,directory,document,file,new,positive)' ),
array( 'fas fa-glasses' => 'Glasses (hipster,nerd,reading,sight,spectacles,vision)' ),
array( 'fas fa-globe' => 'Globe (all,coordinates,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-highlighter' => 'Highlighter (edit,marker,sharpie,update,write)' ),
array( 'fas fa-industry' => 'Industry (building,factory,industrial,manufacturing,mill,warehouse)' ),
array( 'fas fa-landmark' => 'Landmark (building,historic,memorable,monument,politics)' ),
array( 'fas fa-marker' => 'Marker (design,edit,sharpie,update,write)' ),
array( 'fas fa-paperclip' => 'Paperclip (attach,attachment,connect,link)' ),
array( 'fas fa-paste' => 'Paste (clipboard,copy,document,paper)' ),
array( 'fas fa-pen' => 'Pen (design,edit,update,write)' ),
array( 'fas fa-pen-alt' => 'Alternate Pen (design,edit,update,write)' ),
array( 'fas fa-pen-fancy' => 'Pen Fancy (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pen-nib' => 'Pen Nib (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pen-square' => 'Pen Square (edit,pencil-square,update,write)' ),
array( 'fas fa-pencil-alt' => 'Alternate Pencil (design,edit,pencil,update,write)' ),
array( 'fas fa-percent' => 'Percent (discount,fraction,proportion,rate,ratio)' ),
array( 'fas fa-phone' => 'Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-alt' => 'Alternate Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-slash' => 'Phone Slash (call,cancel,earphone,mute,number,support,telephone,voice)' ),
array( 'fas fa-phone-square' => 'Phone Square (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-square-alt' => 'Alternate Phone Square (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-volume' => 'Phone Volume (call,earphone,number,sound,support,telephone,voice,volume-control-phone)' ),
array( 'fas fa-print' => 'print (business,copy,document,office,paper)' ),
array( 'fas fa-project-diagram' => 'Project Diagram (chart,graph,network,pert)' ),
array( 'fas fa-registered' => 'Registered Trademark (copyright,mark,trademark)' ),
array( 'far fa-registered' => 'Registered Trademark (copyright,mark,trademark)' ),
array( 'fas fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'far fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'fas fa-sitemap' => 'Sitemap (directory,hierarchy,ia,information architecture,organization)' ),
array( 'fas fa-socks' => 'Socks (business socks,business time,clothing,feet,flight of the conchords,wednesday)' ),
array( 'fas fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
array( 'far fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
array( 'fas fa-stream' => 'Stream (flow,list,timeline)' ),
array( 'fas fa-table' => 'table (data,excel,spreadsheet)' ),
array( 'fas fa-tag' => 'tag (discount,label,price,shopping)' ),
array( 'fas fa-tags' => 'tags (discount,label,price,shopping)' ),
array( 'fas fa-tasks' => 'Tasks (checklist,downloading,downloads,loading,progress,project management,settings,to do)' ),
array( 'fas fa-thumbtack' => 'Thumbtack (coordinates,location,marker,pin,thumb-tack)' ),
array( 'fas fa-trademark' => 'Trademark (copyright,register,symbol)' ),
array( 'fas fa-wallet' => 'Wallet (billfold,cash,currency,money)' ),
),
'Camping' => array(
array( 'fas fa-binoculars' => 'Binoculars (glasses,magnify,scenic,spyglass,view)' ),
array( 'fas fa-campground' => 'Campground (camping,fall,outdoors,teepee,tent,tipi)' ),
array( 'fas fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'far fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'fas fa-fire' => 'fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-fire-alt' => 'Alternate Fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-first-aid' => 'First Aid (emergency,emt,health,medical,rescue)' ),
array( 'fas fa-frog' => 'Frog (amphibian,bullfrog,fauna,hop,kermit,kiss,prince,ribbit,toad,wart)' ),
array( 'fas fa-hiking' => 'Hiking (activity,backpack,fall,fitness,outdoors,person,seasonal,walking)' ),
array( 'fas fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'far fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marked' => 'Map Marked (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marked-alt' => 'Alternate Map Marked (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-signs' => 'Map Signs (directions,directory,map,signage,wayfinding)' ),
array( 'fas fa-mountain' => 'Mountain (glacier,hiking,hill,landscape,travel,view)' ),
array( 'fas fa-route' => 'Route (directions,navigation,travel)' ),
array( 'fas fa-toilet-paper' => 'Toilet Paper (bathroom,halloween,holiday,lavatory,prank,restroom,roll)' ),
array( 'fas fa-tree' => 'Tree (bark,fall,flora,forest,nature,plant,seasonal)' ),
),
'Charity' => array(
array( 'fas fa-dollar-sign' => 'Dollar Sign ($,cost,dollar-sign,money,price,usd)' ),
array( 'fas fa-donate' => 'Donate (contribute,generosity,gift,give)' ),
array( 'fas fa-dove' => 'Dove (bird,fauna,flying,peace,war)' ),
array( 'fas fa-gift' => 'gift (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-globe' => 'Globe (all,coordinates,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-hand-holding-heart' => 'Hand Holding Heart (carry,charity,gift,lift,package)' ),
array( 'fas fa-hand-holding-usd' => 'Hand Holding US Dollar ($,carry,dollar sign,donation,giving,lift,money,price)' ),
array( 'fas fa-hands-helping' => 'Helping Hands (aid,assistance,handshake,partnership,volunteering)' ),
array( 'fas fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'far fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-leaf' => 'leaf (eco,flora,nature,plant,vegan)' ),
array( 'fas fa-parachute-box' => 'Parachute Box (aid,assistance,rescue,supplies)' ),
array( 'fas fa-piggy-bank' => 'Piggy Bank (bank,save,savings)' ),
array( 'fas fa-ribbon' => 'Ribbon (badge,cause,lapel,pin)' ),
array( 'fas fa-seedling' => 'Seedling (flora,grow,plant,vegan)' ),
),
'Chat' => array(
array( 'fas fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-comment-dots' => 'Comment Dots (bubble,chat,commenting,conversation,feedback,message,more,note,notification,reply,sms,speech,texting)' ),
array( 'far fa-comment-dots' => 'Comment Dots (bubble,chat,commenting,conversation,feedback,message,more,note,notification,reply,sms,speech,texting)' ),
array( 'fas fa-comment-medical' => 'Alternate Medical Chat (advice,bubble,chat,commenting,conversation,diagnose,feedback,message,note,notification,prescription,sms,speech,texting)' ),
array( 'fas fa-comment-slash' => 'Comment Slash (bubble,cancel,chat,commenting,conversation,feedback,message,mute,note,notification,quiet,sms,speech,texting)' ),
array( 'fas fa-comments' => 'comments (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comments' => 'comments (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'far fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'fas fa-icons' => 'Icons (bolt,emoji,heart,image,music,photo,symbols)' ),
array( 'fas fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'far fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'fas fa-phone' => 'Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-alt' => 'Alternate Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-slash' => 'Phone Slash (call,cancel,earphone,mute,number,support,telephone,voice)' ),
array( 'fas fa-poo' => 'Poo (crap,poop,shit,smile,turd)' ),
array( 'fas fa-quote-left' => 'quote-left (mention,note,phrase,text,type)' ),
array( 'fas fa-quote-right' => 'quote-right (mention,note,phrase,text,type)' ),
array( 'fas fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'far fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'fas fa-sms' => 'SMS (chat,conversation,message,mobile,notification,phone,sms,texting)' ),
array( 'fas fa-video' => 'Video (camera,film,movie,record,video-camera)' ),
array( 'fas fa-video-slash' => 'Video Slash (add,create,film,new,positive,record,video)' ),
),
'Chess' => array(
array( 'fas fa-chess' => 'Chess (board,castle,checkmate,game,king,rook,strategy,tournament)' ),
array( 'fas fa-chess-bishop' => 'Chess Bishop (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-board' => 'Chess Board (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-king' => 'Chess King (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-knight' => 'Chess Knight (board,checkmate,game,horse,strategy)' ),
array( 'fas fa-chess-pawn' => 'Chess Pawn (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-queen' => 'Chess Queen (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-rook' => 'Chess Rook (board,castle,checkmate,game,strategy)' ),
array( 'fas fa-square-full' => 'Square Full (block,box,shape)' ),
),
'Childhood' => array(
array( 'fas fa-apple-alt' => 'Fruit Apple (fall,fruit,fuji,macintosh,orchard,seasonal,vegan)' ),
array( 'fas fa-baby' => 'Baby (child,diaper,doll,human,infant,kid,offspring,person,sprout)' ),
array( 'fas fa-baby-carriage' => 'Baby Carriage (buggy,carrier,infant,push,stroller,transportation,walk,wheels)' ),
array( 'fas fa-bath' => 'Bath (clean,shower,tub,wash)' ),
array( 'fas fa-biking' => 'Biking (bicycle,bike,cycle,cycling,ride,wheel)' ),
array( 'fas fa-birthday-cake' => 'Birthday Cake (anniversary,bakery,candles,celebration,dessert,frosting,holiday,party,pastry)' ),
array( 'fas fa-cookie' => 'Cookie (baked good,chips,chocolate,eat,snack,sweet,treat)' ),
array( 'fas fa-cookie-bite' => 'Cookie Bite (baked good,bitten,chips,chocolate,eat,snack,sweet,treat)' ),
array( 'fas fa-gamepad' => 'Gamepad (arcade,controller,d-pad,joystick,video,video game)' ),
array( 'fas fa-ice-cream' => 'Ice Cream (chocolate,cone,dessert,frozen,scoop,sorbet,vanilla,yogurt)' ),
array( 'fas fa-mitten' => 'Mitten (clothing,cold,glove,hands,knitted,seasonal,warmth)' ),
array( 'fas fa-robot' => 'Robot (android,automate,computer,cyborg)' ),
array( 'fas fa-school' => 'School (building,education,learn,student,teacher)' ),
array( 'fas fa-shapes' => 'Shapes (blocks,build,circle,square,triangle)' ),
array( 'fas fa-snowman' => 'Snowman (decoration,frost,frosty,holiday)' ),
),
'Clothing' => array(
array( 'fas fa-graduation-cap' => 'Graduation Cap (ceremony,college,graduate,learning,school,student)' ),
array( 'fas fa-hat-cowboy' => 'Cowboy Hat (buckaroo,horse,jackeroo,john b.,old west,pardner,ranch,rancher,rodeo,western,wrangler)' ),
array( 'fas fa-hat-cowboy-side' => 'Cowboy Hat Side (buckaroo,horse,jackeroo,john b.,old west,pardner,ranch,rancher,rodeo,western,wrangler)' ),
array( 'fas fa-hat-wizard' => 'Wizard\'s Hat (Dungeons & Dragons,accessory,buckle,clothing,d&d,dnd,fantasy,halloween,head,holiday,mage,magic,pointy,witch)' ),
array( 'fas fa-mitten' => 'Mitten (clothing,cold,glove,hands,knitted,seasonal,warmth)' ),
array( 'fas fa-shoe-prints' => 'Shoe Prints (feet,footprints,steps,walk)' ),
array( 'fas fa-socks' => 'Socks (business socks,business time,clothing,feet,flight of the conchords,wednesday)' ),
array( 'fas fa-tshirt' => 'T-Shirt (clothing,fashion,garment,shirt)' ),
array( 'fas fa-user-tie' => 'User Tie (avatar,business,clothing,formal,professional,suit)' ),
),
'Code' => array(
array( 'fas fa-archive' => 'Archive (box,package,save,storage)' ),
array( 'fas fa-barcode' => 'barcode (info,laser,price,scan,upc)' ),
array( 'fas fa-bath' => 'Bath (clean,shower,tub,wash)' ),
array( 'fas fa-bug' => 'Bug (beetle,error,insect,report)' ),
array( 'fas fa-code' => 'Code (brackets,code,development,html)' ),
array( 'fas fa-code-branch' => 'Code Branch (branch,code-fork,fork,git,github,rebase,svn,vcs,version)' ),
array( 'fas fa-coffee' => 'Coffee (beverage,breakfast,cafe,drink,fall,morning,mug,seasonal,tea)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-file-code' => 'Code File (css,development,document,html)' ),
array( 'far fa-file-code' => 'Code File (css,development,document,html)' ),
array( 'fas fa-filter' => 'Filter (funnel,options,separate,sort)' ),
array( 'fas fa-fire-extinguisher' => 'fire-extinguisher (burn,caliente,fire fighter,flame,heat,hot,rescue)' ),
array( 'fas fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'far fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'fas fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'far fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'fas fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'far fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'fas fa-laptop-code' => 'Laptop Code (computer,cpu,dell,demo,develop,device,mac,macbook,machine,pc)' ),
array( 'fas fa-microchip' => 'Microchip (cpu,hardware,processor,technology)' ),
array( 'fas fa-project-diagram' => 'Project Diagram (chart,graph,network,pert)' ),
array( 'fas fa-qrcode' => 'qrcode (barcode,info,information,scan)' ),
array( 'fas fa-shield-alt' => 'Alternate Shield (achievement,award,block,defend,security,winner)' ),
array( 'fas fa-sitemap' => 'Sitemap (directory,hierarchy,ia,information architecture,organization)' ),
array( 'fas fa-stream' => 'Stream (flow,list,timeline)' ),
array( 'fas fa-terminal' => 'Terminal (code,command,console,development,prompt)' ),
array( 'fas fa-user-secret' => 'User Secret (clothing,coat,hat,incognito,person,privacy,spy,whisper)' ),
array( 'fas fa-window-close' => 'Window Close (browser,cancel,computer,development)' ),
array( 'far fa-window-close' => 'Window Close (browser,cancel,computer,development)' ),
array( 'fas fa-window-maximize' => 'Window Maximize (browser,computer,development,expand)' ),
array( 'far fa-window-maximize' => 'Window Maximize (browser,computer,development,expand)' ),
array( 'fas fa-window-minimize' => 'Window Minimize (browser,collapse,computer,development)' ),
array( 'far fa-window-minimize' => 'Window Minimize (browser,collapse,computer,development)' ),
array( 'fas fa-window-restore' => 'Window Restore (browser,computer,development)' ),
array( 'far fa-window-restore' => 'Window Restore (browser,computer,development)' ),
),
'Communication' => array(
array( 'fas fa-address-book' => 'Address Book (contact,directory,index,little black book,rolodex)' ),
array( 'far fa-address-book' => 'Address Book (contact,directory,index,little black book,rolodex)' ),
array( 'fas fa-address-card' => 'Address Card (about,contact,id,identification,postcard,profile)' ),
array( 'far fa-address-card' => 'Address Card (about,contact,id,identification,postcard,profile)' ),
array( 'fas fa-american-sign-language-interpreting' => 'American Sign Language Interpreting (asl,deaf,finger,hand,interpret,speak)' ),
array( 'fas fa-assistive-listening-systems' => 'Assistive Listening Systems (amplify,audio,deaf,ear,headset,hearing,sound)' ),
array( 'fas fa-at' => 'At (address,author,e-mail,email,handle)' ),
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'far fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'fab fa-bluetooth' => 'Bluetooth' ),
array( 'fab fa-bluetooth-b' => 'Bluetooth' ),
array( 'fas fa-broadcast-tower' => 'Broadcast Tower (airwaves,antenna,radio,reception,waves)' ),
array( 'fas fa-bullhorn' => 'bullhorn (announcement,broadcast,louder,megaphone,share)' ),
array( 'fas fa-chalkboard' => 'Chalkboard (blackboard,learning,school,teaching,whiteboard,writing)' ),
array( 'fas fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-comments' => 'comments (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comments' => 'comments (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-envelope-square' => 'Envelope Square (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-fax' => 'Fax (business,communicate,copy,facsimile,send)' ),
array( 'fas fa-inbox' => 'inbox (archive,desk,email,mail,message)' ),
array( 'fas fa-language' => 'Language (dialect,idiom,localize,speech,translate,vernacular)' ),
array( 'fas fa-microphone' => 'microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt' => 'Alternate Microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt-slash' => 'Alternate Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-slash' => 'Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-mobile' => 'Mobile Phone (apple,call,cell phone,cellphone,device,iphone,number,screen,telephone)' ),
array( 'fas fa-mobile-alt' => 'Alternate Mobile (apple,call,cell phone,cellphone,device,iphone,number,screen,telephone)' ),
array( 'fas fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'far fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'fas fa-phone' => 'Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-alt' => 'Alternate Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-slash' => 'Phone Slash (call,cancel,earphone,mute,number,support,telephone,voice)' ),
array( 'fas fa-phone-square' => 'Phone Square (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-square-alt' => 'Alternate Phone Square (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-volume' => 'Phone Volume (call,earphone,number,sound,support,telephone,voice,volume-control-phone)' ),
array( 'fas fa-rss' => 'rss (blog,feed,journal,news,writing)' ),
array( 'fas fa-rss-square' => 'RSS Square (blog,feed,journal,news,writing)' ),
array( 'fas fa-tty' => 'TTY (communication,deaf,telephone,teletypewriter,text)' ),
array( 'fas fa-voicemail' => 'Voicemail (answer,inbox,message,phone)' ),
array( 'fas fa-wifi' => 'WiFi (connection,hotspot,internet,network,wireless)' ),
),
'Computers' => array(
array( 'fas fa-database' => 'Database (computer,development,directory,memory,storage)' ),
array( 'fas fa-desktop' => 'Desktop (computer,cpu,demo,desktop,device,imac,machine,monitor,pc,screen)' ),
array( 'fas fa-download' => 'Download (export,hard drive,save,transfer)' ),
array( 'fas fa-ethernet' => 'Ethernet (cable,cat 5,cat 6,connection,hardware,internet,network,wired)' ),
array( 'fas fa-hdd' => 'HDD (cpu,hard drive,harddrive,machine,save,storage)' ),
array( 'far fa-hdd' => 'HDD (cpu,hard drive,harddrive,machine,save,storage)' ),
array( 'fas fa-headphones' => 'headphones (audio,listen,music,sound,speaker)' ),
array( 'fas fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'far fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'fas fa-laptop' => 'Laptop (computer,cpu,dell,demo,device,mac,macbook,machine,pc)' ),
array( 'fas fa-memory' => 'Memory (DIMM,RAM,hardware,storage,technology)' ),
array( 'fas fa-microchip' => 'Microchip (cpu,hardware,processor,technology)' ),
array( 'fas fa-mobile' => 'Mobile Phone (apple,call,cell phone,cellphone,device,iphone,number,screen,telephone)' ),
array( 'fas fa-mobile-alt' => 'Alternate Mobile (apple,call,cell phone,cellphone,device,iphone,number,screen,telephone)' ),
array( 'fas fa-mouse' => 'Mouse (click,computer,cursor,input,peripheral)' ),
array( 'fas fa-plug' => 'Plug (connect,electric,online,power)' ),
array( 'fas fa-power-off' => 'Power Off (cancel,computer,on,reboot,restart)' ),
array( 'fas fa-print' => 'print (business,copy,document,office,paper)' ),
array( 'fas fa-satellite' => 'Satellite (communications,hardware,orbit,space)' ),
array( 'fas fa-satellite-dish' => 'Satellite Dish (SETI,communications,hardware,receiver,saucer,signal)' ),
array( 'fas fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'far fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'fas fa-sd-card' => 'Sd Card (image,memory,photo,save)' ),
array( 'fas fa-server' => 'Server (computer,cpu,database,hardware,network)' ),
array( 'fas fa-sim-card' => 'SIM Card (hard drive,hardware,portable,storage,technology,tiny)' ),
array( 'fas fa-stream' => 'Stream (flow,list,timeline)' ),
array( 'fas fa-tablet' => 'tablet (apple,device,ipad,kindle,screen)' ),
array( 'fas fa-tablet-alt' => 'Alternate Tablet (apple,device,ipad,kindle,screen)' ),
array( 'fas fa-tv' => 'Television (computer,display,monitor,television)' ),
array( 'fas fa-upload' => 'Upload (hard drive,import,publish)' ),
),
'Construction' => array(
array( 'fas fa-brush' => 'Brush (art,bristles,color,handle,paint)' ),
array( 'fas fa-drafting-compass' => 'Drafting Compass (design,map,mechanical drawing,plot,plotting)' ),
array( 'fas fa-dumpster' => 'Dumpster (alley,bin,commercial,trash,waste)' ),
array( 'fas fa-hammer' => 'Hammer (admin,fix,repair,settings,tool)' ),
array( 'fas fa-hard-hat' => 'Hard Hat (construction,hardhat,helmet,safety)' ),
array( 'fas fa-paint-roller' => 'Paint Roller (acrylic,art,brush,color,fill,paint,pigment,watercolor)' ),
array( 'fas fa-pencil-alt' => 'Alternate Pencil (design,edit,pencil,update,write)' ),
array( 'fas fa-pencil-ruler' => 'Pencil Ruler (design,draft,draw,pencil)' ),
array( 'fas fa-ruler' => 'Ruler (design,draft,length,measure,planning)' ),
array( 'fas fa-ruler-combined' => 'Ruler Combined (design,draft,length,measure,planning)' ),
array( 'fas fa-ruler-horizontal' => 'Ruler Horizontal (design,draft,length,measure,planning)' ),
array( 'fas fa-ruler-vertical' => 'Ruler Vertical (design,draft,length,measure,planning)' ),
array( 'fas fa-screwdriver' => 'Screwdriver (admin,fix,mechanic,repair,settings,tool)' ),
array( 'fas fa-toolbox' => 'Toolbox (admin,container,fix,repair,settings,tools)' ),
array( 'fas fa-tools' => 'Tools (admin,fix,repair,screwdriver,settings,tools,wrench)' ),
array( 'fas fa-truck-pickup' => 'Truck Side (cargo,vehicle)' ),
array( 'fas fa-wrench' => 'Wrench (construction,fix,mechanic,plumbing,settings,spanner,tool,update)' ),
),
'Currency' => array(
array( 'fab fa-bitcoin' => 'Bitcoin' ),
array( 'fab fa-btc' => 'BTC' ),
array( 'fas fa-dollar-sign' => 'Dollar Sign ($,cost,dollar-sign,money,price,usd)' ),
array( 'fab fa-ethereum' => 'Ethereum' ),
array( 'fas fa-euro-sign' => 'Euro Sign (currency,dollar,exchange,money)' ),
array( 'fab fa-gg' => 'GG Currency' ),
array( 'fab fa-gg-circle' => 'GG Currency Circle' ),
array( 'fas fa-hryvnia' => 'Hryvnia (currency,money,ukraine,ukrainian)' ),
array( 'fas fa-lira-sign' => 'Turkish Lira Sign (currency,money,try,turkish)' ),
array( 'fas fa-money-bill' => 'Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'far fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-wave' => 'Wavy Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-wave-alt' => 'Alternate Wavy Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-check' => 'Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fas fa-money-check-alt' => 'Alternate Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fas fa-pound-sign' => 'Pound Sign (currency,gbp,money)' ),
array( 'fas fa-ruble-sign' => 'Ruble Sign (currency,money,rub)' ),
array( 'fas fa-rupee-sign' => 'Indian Rupee Sign (currency,indian,inr,money)' ),
array( 'fas fa-shekel-sign' => 'Shekel Sign (currency,ils,money)' ),
array( 'fas fa-tenge' => 'Tenge (currency,kazakhstan,money,price)' ),
array( 'fas fa-won-sign' => 'Won Sign (currency,krw,money)' ),
array( 'fas fa-yen-sign' => 'Yen Sign (currency,jpy,money)' ),
),
'Date & Time' => array(
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'far fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'fas fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'far fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'far fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-check' => 'Calendar Check (accept,agree,appointment,confirm,correct,date,done,event,ok,schedule,select,success,tick,time,todo,when)' ),
array( 'far fa-calendar-check' => 'Calendar Check (accept,agree,appointment,confirm,correct,date,done,event,ok,schedule,select,success,tick,time,todo,when)' ),
array( 'fas fa-calendar-minus' => 'Calendar Minus (calendar,date,delete,event,negative,remove,schedule,time,when)' ),
array( 'far fa-calendar-minus' => 'Calendar Minus (calendar,date,delete,event,negative,remove,schedule,time,when)' ),
array( 'fas fa-calendar-plus' => 'Calendar Plus (add,calendar,create,date,event,new,positive,schedule,time,when)' ),
array( 'far fa-calendar-plus' => 'Calendar Plus (add,calendar,create,date,event,new,positive,schedule,time,when)' ),
array( 'fas fa-calendar-times' => 'Calendar Times (archive,calendar,date,delete,event,remove,schedule,time,when,x)' ),
array( 'far fa-calendar-times' => 'Calendar Times (archive,calendar,date,delete,event,remove,schedule,time,when,x)' ),
array( 'fas fa-clock' => 'Clock (date,late,schedule,time,timer,timestamp,watch)' ),
array( 'far fa-clock' => 'Clock (date,late,schedule,time,timer,timestamp,watch)' ),
array( 'fas fa-hourglass' => 'Hourglass (hour,minute,sand,stopwatch,time)' ),
array( 'far fa-hourglass' => 'Hourglass (hour,minute,sand,stopwatch,time)' ),
array( 'fas fa-hourglass-end' => 'Hourglass End (hour,minute,sand,stopwatch,time)' ),
array( 'fas fa-hourglass-half' => 'Hourglass Half (hour,minute,sand,stopwatch,time)' ),
array( 'fas fa-hourglass-start' => 'Hourglass Start (hour,minute,sand,stopwatch,time)' ),
array( 'fas fa-stopwatch' => 'Stopwatch (clock,reminder,time)' ),
),
'Design' => array(
array( 'fas fa-adjust' => 'adjust (contrast,dark,light,saturation)' ),
array( 'fas fa-bezier-curve' => 'Bezier Curve (curves,illustrator,lines,path,vector)' ),
array( 'fas fa-brush' => 'Brush (art,bristles,color,handle,paint)' ),
array( 'fas fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'far fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'fas fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'far fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'fas fa-crop' => 'crop (design,frame,mask,resize,shrink)' ),
array( 'fas fa-crop-alt' => 'Alternate Crop (design,frame,mask,resize,shrink)' ),
array( 'fas fa-crosshairs' => 'Crosshairs (aim,bullseye,gpd,picker,position)' ),
array( 'fas fa-cut' => 'Cut (clip,scissors,snip)' ),
array( 'fas fa-drafting-compass' => 'Drafting Compass (design,map,mechanical drawing,plot,plotting)' ),
array( 'fas fa-draw-polygon' => 'Draw Polygon (anchors,lines,object,render,shape)' ),
array( 'fas fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'far fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'fas fa-eraser' => 'eraser (art,delete,remove,rubber)' ),
array( 'fas fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'far fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'fas fa-eye-dropper' => 'Eye Dropper (beaker,clone,color,copy,eyedropper,pipette)' ),
array( 'fas fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'far fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'fas fa-fill' => 'Fill (bucket,color,paint,paint bucket)' ),
array( 'fas fa-fill-drip' => 'Fill Drip (bucket,color,drop,paint,paint bucket,spill)' ),
array( 'fas fa-highlighter' => 'Highlighter (edit,marker,sharpie,update,write)' ),
array( 'fas fa-icons' => 'Icons (bolt,emoji,heart,image,music,photo,symbols)' ),
array( 'fas fa-layer-group' => 'Layer Group (arrange,develop,layers,map,stack)' ),
array( 'fas fa-magic' => 'magic (autocomplete,automatic,mage,magic,spell,wand,witch,wizard)' ),
array( 'fas fa-marker' => 'Marker (design,edit,sharpie,update,write)' ),
array( 'fas fa-object-group' => 'Object Group (combine,copy,design,merge,select)' ),
array( 'far fa-object-group' => 'Object Group (combine,copy,design,merge,select)' ),
array( 'fas fa-object-ungroup' => 'Object Ungroup (copy,design,merge,select,separate)' ),
array( 'far fa-object-ungroup' => 'Object Ungroup (copy,design,merge,select,separate)' ),
array( 'fas fa-paint-brush' => 'Paint Brush (acrylic,art,brush,color,fill,paint,pigment,watercolor)' ),
array( 'fas fa-paint-roller' => 'Paint Roller (acrylic,art,brush,color,fill,paint,pigment,watercolor)' ),
array( 'fas fa-palette' => 'Palette (acrylic,art,brush,color,fill,paint,pigment,watercolor)' ),
array( 'fas fa-paste' => 'Paste (clipboard,copy,document,paper)' ),
array( 'fas fa-pen' => 'Pen (design,edit,update,write)' ),
array( 'fas fa-pen-alt' => 'Alternate Pen (design,edit,update,write)' ),
array( 'fas fa-pen-fancy' => 'Pen Fancy (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pen-nib' => 'Pen Nib (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pencil-alt' => 'Alternate Pencil (design,edit,pencil,update,write)' ),
array( 'fas fa-pencil-ruler' => 'Pencil Ruler (design,draft,draw,pencil)' ),
array( 'fas fa-ruler-combined' => 'Ruler Combined (design,draft,length,measure,planning)' ),
array( 'fas fa-ruler-horizontal' => 'Ruler Horizontal (design,draft,length,measure,planning)' ),
array( 'fas fa-ruler-vertical' => 'Ruler Vertical (design,draft,length,measure,planning)' ),
array( 'fas fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'far fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'fas fa-splotch' => 'Splotch (Ink,blob,blotch,glob,stain)' ),
array( 'fas fa-spray-can' => 'Spray Can (Paint,aerosol,design,graffiti,tag)' ),
array( 'fas fa-stamp' => 'Stamp (art,certificate,imprint,rubber,seal)' ),
array( 'fas fa-swatchbook' => 'Swatchbook (Pantone,color,design,hue,palette)' ),
array( 'fas fa-tint' => 'tint (color,drop,droplet,raindrop,waterdrop)' ),
array( 'fas fa-tint-slash' => 'Tint Slash (color,drop,droplet,raindrop,waterdrop)' ),
array( 'fas fa-vector-square' => 'Vector Square (anchors,lines,object,render,shape)' ),
),
'Editors' => array(
array( 'fas fa-align-center' => 'align-center (format,middle,paragraph,text)' ),
array( 'fas fa-align-justify' => 'align-justify (format,paragraph,text)' ),
array( 'fas fa-align-left' => 'align-left (format,paragraph,text)' ),
array( 'fas fa-align-right' => 'align-right (format,paragraph,text)' ),
array( 'fas fa-bold' => 'bold (emphasis,format,text)' ),
array( 'fas fa-border-all' => 'Border All (cell,grid,outline,stroke,table)' ),
array( 'fas fa-border-none' => 'Border None (cell,grid,outline,stroke,table)' ),
array( 'fas fa-border-style' => 'Border Style' ),
array( 'fas fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'far fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'fas fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'far fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'fas fa-columns' => 'Columns (browser,dashboard,organize,panes,split)' ),
array( 'fas fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'far fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'fas fa-cut' => 'Cut (clip,scissors,snip)' ),
array( 'fas fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'far fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'fas fa-eraser' => 'eraser (art,delete,remove,rubber)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-font' => 'font (alphabet,glyph,text,type,typeface)' ),
array( 'fas fa-glasses' => 'Glasses (hipster,nerd,reading,sight,spectacles,vision)' ),
array( 'fas fa-heading' => 'heading (format,header,text,title)' ),
array( 'fas fa-highlighter' => 'Highlighter (edit,marker,sharpie,update,write)' ),
array( 'fas fa-i-cursor' => 'I Beam Cursor (editing,i-beam,type,writing)' ),
array( 'fas fa-icons' => 'Icons (bolt,emoji,heart,image,music,photo,symbols)' ),
array( 'fas fa-indent' => 'Indent (align,justify,paragraph,tab)' ),
array( 'fas fa-italic' => 'italic (edit,emphasis,font,format,text,type)' ),
array( 'fas fa-link' => 'Link (attach,attachment,chain,connect)' ),
array( 'fas fa-list' => 'List (checklist,completed,done,finished,ol,todo,ul)' ),
array( 'fas fa-list-alt' => 'Alternate List (checklist,completed,done,finished,ol,todo,ul)' ),
array( 'far fa-list-alt' => 'Alternate List (checklist,completed,done,finished,ol,todo,ul)' ),
array( 'fas fa-list-ol' => 'list-ol (checklist,completed,done,finished,numbers,ol,todo,ul)' ),
array( 'fas fa-list-ul' => 'list-ul (checklist,completed,done,finished,ol,todo,ul)' ),
array( 'fas fa-marker' => 'Marker (design,edit,sharpie,update,write)' ),
array( 'fas fa-outdent' => 'Outdent (align,justify,paragraph,tab)' ),
array( 'fas fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'far fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'fas fa-paperclip' => 'Paperclip (attach,attachment,connect,link)' ),
array( 'fas fa-paragraph' => 'paragraph (edit,format,text,writing)' ),
array( 'fas fa-paste' => 'Paste (clipboard,copy,document,paper)' ),
array( 'fas fa-pen' => 'Pen (design,edit,update,write)' ),
array( 'fas fa-pen-alt' => 'Alternate Pen (design,edit,update,write)' ),
array( 'fas fa-pen-fancy' => 'Pen Fancy (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pen-nib' => 'Pen Nib (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pencil-alt' => 'Alternate Pencil (design,edit,pencil,update,write)' ),
array( 'fas fa-print' => 'print (business,copy,document,office,paper)' ),
array( 'fas fa-quote-left' => 'quote-left (mention,note,phrase,text,type)' ),
array( 'fas fa-quote-right' => 'quote-right (mention,note,phrase,text,type)' ),
array( 'fas fa-redo' => 'Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-redo-alt' => 'Alternate Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-remove-format' => 'Remove Format (cancel,font,format,remove,style,text)' ),
array( 'fas fa-reply' => 'Reply (mail,message,respond)' ),
array( 'fas fa-reply-all' => 'reply-all (mail,message,respond)' ),
array( 'fas fa-screwdriver' => 'Screwdriver (admin,fix,mechanic,repair,settings,tool)' ),
array( 'fas fa-share' => 'Share (forward,save,send,social)' ),
array( 'fas fa-spell-check' => 'Spell Check (dictionary,edit,editor,grammar,text)' ),
array( 'fas fa-strikethrough' => 'Strikethrough (cancel,edit,font,format,text,type)' ),
array( 'fas fa-subscript' => 'subscript (edit,font,format,text,type)' ),
array( 'fas fa-superscript' => 'superscript (edit,exponential,font,format,text,type)' ),
array( 'fas fa-sync' => 'Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-sync-alt' => 'Alternate Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-table' => 'table (data,excel,spreadsheet)' ),
array( 'fas fa-tasks' => 'Tasks (checklist,downloading,downloads,loading,progress,project management,settings,to do)' ),
array( 'fas fa-text-height' => 'text-height (edit,font,format,text,type)' ),
array( 'fas fa-text-width' => 'Text Width (edit,font,format,text,type)' ),
array( 'fas fa-th' => 'th (blocks,boxes,grid,squares)' ),
array( 'fas fa-th-large' => 'th-large (blocks,boxes,grid,squares)' ),
array( 'fas fa-th-list' => 'th-list (checklist,completed,done,finished,ol,todo,ul)' ),
array( 'fas fa-tools' => 'Tools (admin,fix,repair,screwdriver,settings,tools,wrench)' ),
array( 'fas fa-trash' => 'Trash (delete,garbage,hide,remove)' ),
array( 'fas fa-trash-alt' => 'Alternate Trash (delete,garbage,hide,remove,trash-o)' ),
array( 'far fa-trash-alt' => 'Alternate Trash (delete,garbage,hide,remove,trash-o)' ),
array( 'fas fa-trash-restore' => 'Trash Restore (back,control z,oops,undo)' ),
array( 'fas fa-trash-restore-alt' => 'Alternative Trash Restore (back,control z,oops,undo)' ),
array( 'fas fa-underline' => 'Underline (edit,emphasis,format,text,writing)' ),
array( 'fas fa-undo' => 'Undo (back,control z,exchange,oops,return,rotate,swap)' ),
array( 'fas fa-undo-alt' => 'Alternate Undo (back,control z,exchange,oops,return,swap)' ),
array( 'fas fa-unlink' => 'unlink (attachment,chain,chain-broken,remove)' ),
array( 'fas fa-wrench' => 'Wrench (construction,fix,mechanic,plumbing,settings,spanner,tool,update)' ),
),
'Education' => array(
array( 'fas fa-apple-alt' => 'Fruit Apple (fall,fruit,fuji,macintosh,orchard,seasonal,vegan)' ),
array( 'fas fa-atom' => 'Atom (atheism,chemistry,ion,nuclear,science)' ),
array( 'fas fa-award' => 'Award (honor,praise,prize,recognition,ribbon,trophy)' ),
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'far fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'fas fa-book-open' => 'Book Open (flyer,library,notebook,open book,pamphlet,reading)' ),
array( 'fas fa-book-reader' => 'Book Reader (flyer,library,notebook,open book,pamphlet,reading)' ),
array( 'fas fa-chalkboard' => 'Chalkboard (blackboard,learning,school,teaching,whiteboard,writing)' ),
array( 'fas fa-chalkboard-teacher' => 'Chalkboard Teacher (blackboard,instructor,learning,professor,school,whiteboard,writing)' ),
array( 'fas fa-graduation-cap' => 'Graduation Cap (ceremony,college,graduate,learning,school,student)' ),
array( 'fas fa-laptop-code' => 'Laptop Code (computer,cpu,dell,demo,develop,device,mac,macbook,machine,pc)' ),
array( 'fas fa-microscope' => 'Microscope (electron,lens,optics,science,shrink)' ),
array( 'fas fa-music' => 'Music (lyrics,melody,note,sing,sound)' ),
array( 'fas fa-school' => 'School (building,education,learn,student,teacher)' ),
array( 'fas fa-shapes' => 'Shapes (blocks,build,circle,square,triangle)' ),
array( 'fas fa-theater-masks' => 'Theater Masks (comedy,perform,theatre,tragedy)' ),
array( 'fas fa-user-graduate' => 'User Graduate (cap,clothing,commencement,gown,graduation,person,student)' ),
),
'Emoji' => array(
array( 'fas fa-angry' => 'Angry Face (disapprove,emoticon,face,mad,upset)' ),
array( 'far fa-angry' => 'Angry Face (disapprove,emoticon,face,mad,upset)' ),
array( 'fas fa-dizzy' => 'Dizzy Face (dazed,dead,disapprove,emoticon,face)' ),
array( 'far fa-dizzy' => 'Dizzy Face (dazed,dead,disapprove,emoticon,face)' ),
array( 'fas fa-flushed' => 'Flushed Face (embarrassed,emoticon,face)' ),
array( 'far fa-flushed' => 'Flushed Face (embarrassed,emoticon,face)' ),
array( 'fas fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'far fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'fas fa-frown-open' => 'Frowning Face With Open Mouth (disapprove,emoticon,face,rating,sad)' ),
array( 'far fa-frown-open' => 'Frowning Face With Open Mouth (disapprove,emoticon,face,rating,sad)' ),
array( 'fas fa-grimace' => 'Grimacing Face (cringe,emoticon,face,teeth)' ),
array( 'far fa-grimace' => 'Grimacing Face (cringe,emoticon,face,teeth)' ),
array( 'fas fa-grin' => 'Grinning Face (emoticon,face,laugh,smile)' ),
array( 'far fa-grin' => 'Grinning Face (emoticon,face,laugh,smile)' ),
array( 'fas fa-grin-alt' => 'Alternate Grinning Face (emoticon,face,laugh,smile)' ),
array( 'far fa-grin-alt' => 'Alternate Grinning Face (emoticon,face,laugh,smile)' ),
array( 'fas fa-grin-beam' => 'Grinning Face With Smiling Eyes (emoticon,face,laugh,smile)' ),
array( 'far fa-grin-beam' => 'Grinning Face With Smiling Eyes (emoticon,face,laugh,smile)' ),
array( 'fas fa-grin-beam-sweat' => 'Grinning Face With Sweat (embarass,emoticon,face,smile)' ),
array( 'far fa-grin-beam-sweat' => 'Grinning Face With Sweat (embarass,emoticon,face,smile)' ),
array( 'fas fa-grin-hearts' => 'Smiling Face With Heart-Eyes (emoticon,face,love,smile)' ),
array( 'far fa-grin-hearts' => 'Smiling Face With Heart-Eyes (emoticon,face,love,smile)' ),
array( 'fas fa-grin-squint' => 'Grinning Squinting Face (emoticon,face,laugh,smile)' ),
array( 'far fa-grin-squint' => 'Grinning Squinting Face (emoticon,face,laugh,smile)' ),
array( 'fas fa-grin-squint-tears' => 'Rolling on the Floor Laughing (emoticon,face,happy,smile)' ),
array( 'far fa-grin-squint-tears' => 'Rolling on the Floor Laughing (emoticon,face,happy,smile)' ),
array( 'fas fa-grin-stars' => 'Star-Struck (emoticon,face,star-struck)' ),
array( 'far fa-grin-stars' => 'Star-Struck (emoticon,face,star-struck)' ),
array( 'fas fa-grin-tears' => 'Face With Tears of Joy (LOL,emoticon,face)' ),
array( 'far fa-grin-tears' => 'Face With Tears of Joy (LOL,emoticon,face)' ),
array( 'fas fa-grin-tongue' => 'Face With Tongue (LOL,emoticon,face)' ),
array( 'far fa-grin-tongue' => 'Face With Tongue (LOL,emoticon,face)' ),
array( 'fas fa-grin-tongue-squint' => 'Squinting Face With Tongue (LOL,emoticon,face)' ),
array( 'far fa-grin-tongue-squint' => 'Squinting Face With Tongue (LOL,emoticon,face)' ),
array( 'fas fa-grin-tongue-wink' => 'Winking Face With Tongue (LOL,emoticon,face)' ),
array( 'far fa-grin-tongue-wink' => 'Winking Face With Tongue (LOL,emoticon,face)' ),
array( 'fas fa-grin-wink' => 'Grinning Winking Face (emoticon,face,flirt,laugh,smile)' ),
array( 'far fa-grin-wink' => 'Grinning Winking Face (emoticon,face,flirt,laugh,smile)' ),
array( 'fas fa-kiss' => 'Kissing Face (beso,emoticon,face,love,smooch)' ),
array( 'far fa-kiss' => 'Kissing Face (beso,emoticon,face,love,smooch)' ),
array( 'fas fa-kiss-beam' => 'Kissing Face With Smiling Eyes (beso,emoticon,face,love,smooch)' ),
array( 'far fa-kiss-beam' => 'Kissing Face With Smiling Eyes (beso,emoticon,face,love,smooch)' ),
array( 'fas fa-kiss-wink-heart' => 'Face Blowing a Kiss (beso,emoticon,face,love,smooch)' ),
array( 'far fa-kiss-wink-heart' => 'Face Blowing a Kiss (beso,emoticon,face,love,smooch)' ),
array( 'fas fa-laugh' => 'Grinning Face With Big Eyes (LOL,emoticon,face,laugh,smile)' ),
array( 'far fa-laugh' => 'Grinning Face With Big Eyes (LOL,emoticon,face,laugh,smile)' ),
array( 'fas fa-laugh-beam' => 'Laugh Face with Beaming Eyes (LOL,emoticon,face,happy,smile)' ),
array( 'far fa-laugh-beam' => 'Laugh Face with Beaming Eyes (LOL,emoticon,face,happy,smile)' ),
array( 'fas fa-laugh-squint' => 'Laughing Squinting Face (LOL,emoticon,face,happy,smile)' ),
array( 'far fa-laugh-squint' => 'Laughing Squinting Face (LOL,emoticon,face,happy,smile)' ),
array( 'fas fa-laugh-wink' => 'Laughing Winking Face (LOL,emoticon,face,happy,smile)' ),
array( 'far fa-laugh-wink' => 'Laughing Winking Face (LOL,emoticon,face,happy,smile)' ),
array( 'fas fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'far fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'fas fa-meh-blank' => 'Face Without Mouth (emoticon,face,neutral,rating)' ),
array( 'far fa-meh-blank' => 'Face Without Mouth (emoticon,face,neutral,rating)' ),
array( 'fas fa-meh-rolling-eyes' => 'Face With Rolling Eyes (emoticon,face,neutral,rating)' ),
array( 'far fa-meh-rolling-eyes' => 'Face With Rolling Eyes (emoticon,face,neutral,rating)' ),
array( 'fas fa-sad-cry' => 'Crying Face (emoticon,face,tear,tears)' ),
array( 'far fa-sad-cry' => 'Crying Face (emoticon,face,tear,tears)' ),
array( 'fas fa-sad-tear' => 'Loudly Crying Face (emoticon,face,tear,tears)' ),
array( 'far fa-sad-tear' => 'Loudly Crying Face (emoticon,face,tear,tears)' ),
array( 'fas fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'far fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'fas fa-smile-beam' => 'Beaming Face With Smiling Eyes (emoticon,face,happy,positive)' ),
array( 'far fa-smile-beam' => 'Beaming Face With Smiling Eyes (emoticon,face,happy,positive)' ),
array( 'fas fa-smile-wink' => 'Winking Face (emoticon,face,happy,hint,joke)' ),
array( 'far fa-smile-wink' => 'Winking Face (emoticon,face,happy,hint,joke)' ),
array( 'fas fa-surprise' => 'Hushed Face (emoticon,face,shocked)' ),
array( 'far fa-surprise' => 'Hushed Face (emoticon,face,shocked)' ),
array( 'fas fa-tired' => 'Tired Face (angry,emoticon,face,grumpy,upset)' ),
array( 'far fa-tired' => 'Tired Face (angry,emoticon,face,grumpy,upset)' ),
),
'Energy' => array(
array( 'fas fa-atom' => 'Atom (atheism,chemistry,ion,nuclear,science)' ),
array( 'fas fa-battery-empty' => 'Battery Empty (charge,dead,power,status)' ),
array( 'fas fa-battery-full' => 'Battery Full (charge,power,status)' ),
array( 'fas fa-battery-half' => 'Battery 1/2 Full (charge,power,status)' ),
array( 'fas fa-battery-quarter' => 'Battery 1/4 Full (charge,low,power,status)' ),
array( 'fas fa-battery-three-quarters' => 'Battery 3/4 Full (charge,power,status)' ),
array( 'fas fa-broadcast-tower' => 'Broadcast Tower (airwaves,antenna,radio,reception,waves)' ),
array( 'fas fa-burn' => 'Burn (caliente,energy,fire,flame,gas,heat,hot)' ),
array( 'fas fa-charging-station' => 'Charging Station (electric,ev,tesla,vehicle)' ),
array( 'fas fa-fire' => 'fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-fire-alt' => 'Alternate Fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-gas-pump' => 'Gas Pump (car,fuel,gasoline,petrol)' ),
array( 'fas fa-industry' => 'Industry (building,factory,industrial,manufacturing,mill,warehouse)' ),
array( 'fas fa-leaf' => 'leaf (eco,flora,nature,plant,vegan)' ),
array( 'fas fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'far fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'fas fa-plug' => 'Plug (connect,electric,online,power)' ),
array( 'fas fa-poop' => 'Poop (crap,poop,shit,smile,turd)' ),
array( 'fas fa-power-off' => 'Power Off (cancel,computer,on,reboot,restart)' ),
array( 'fas fa-radiation' => 'Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-radiation-alt' => 'Alternate Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-seedling' => 'Seedling (flora,grow,plant,vegan)' ),
array( 'fas fa-solar-panel' => 'Solar Panel (clean,eco-friendly,energy,green,sun)' ),
array( 'fas fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'far fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'fas fa-water' => 'Water (lake,liquid,ocean,sea,swim,wet)' ),
array( 'fas fa-wind' => 'Wind (air,blow,breeze,fall,seasonal,weather)' ),
),
'Files' => array(
array( 'fas fa-archive' => 'Archive (box,package,save,storage)' ),
array( 'fas fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'far fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'fas fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'far fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'fas fa-cut' => 'Cut (clip,scissors,snip)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-file-archive' => 'Archive File (.zip,bundle,compress,compression,download,zip)' ),
array( 'far fa-file-archive' => 'Archive File (.zip,bundle,compress,compression,download,zip)' ),
array( 'fas fa-file-audio' => 'Audio File (document,mp3,music,page,play,sound)' ),
array( 'far fa-file-audio' => 'Audio File (document,mp3,music,page,play,sound)' ),
array( 'fas fa-file-code' => 'Code File (css,development,document,html)' ),
array( 'far fa-file-code' => 'Code File (css,development,document,html)' ),
array( 'fas fa-file-excel' => 'Excel File (csv,document,numbers,spreadsheets,table)' ),
array( 'far fa-file-excel' => 'Excel File (csv,document,numbers,spreadsheets,table)' ),
array( 'fas fa-file-image' => 'Image File (document,image,jpg,photo,png)' ),
array( 'far fa-file-image' => 'Image File (document,image,jpg,photo,png)' ),
array( 'fas fa-file-pdf' => 'PDF File (acrobat,document,preview,save)' ),
array( 'far fa-file-pdf' => 'PDF File (acrobat,document,preview,save)' ),
array( 'fas fa-file-powerpoint' => 'Powerpoint File (display,document,keynote,presentation)' ),
array( 'far fa-file-powerpoint' => 'Powerpoint File (display,document,keynote,presentation)' ),
array( 'fas fa-file-video' => 'Video File (document,m4v,movie,mp4,play)' ),
array( 'far fa-file-video' => 'Video File (document,m4v,movie,mp4,play)' ),
array( 'fas fa-file-word' => 'Word File (document,edit,page,text,writing)' ),
array( 'far fa-file-word' => 'Word File (document,edit,page,text,writing)' ),
array( 'fas fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'far fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'fas fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'far fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'fas fa-paste' => 'Paste (clipboard,copy,document,paper)' ),
array( 'fas fa-photo-video' => 'Photo Video (av,film,image,library,media)' ),
array( 'fas fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'far fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'fas fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
array( 'far fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
),
'Finance' => array(
array( 'fas fa-balance-scale' => 'Balance Scale (balanced,justice,legal,measure,weight)' ),
array( 'fas fa-balance-scale-left' => 'Balance Scale (Left-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-balance-scale-right' => 'Balance Scale (Right-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-book' => 'book (diary,documentation,journal,library,read)' ),
array( 'fas fa-cash-register' => 'Cash Register (buy,cha-ching,change,checkout,commerce,leaerboard,machine,pay,payment,purchase,store)' ),
array( 'fas fa-chart-line' => 'Line Chart (activity,analytics,chart,dashboard,gain,graph,increase,line)' ),
array( 'fas fa-chart-pie' => 'Pie Chart (analytics,chart,diagram,graph,pie)' ),
array( 'fas fa-coins' => 'Coins (currency,dime,financial,gold,money,penny)' ),
array( 'fas fa-comment-dollar' => 'Comment Dollar (bubble,chat,commenting,conversation,feedback,message,money,note,notification,pay,sms,speech,spend,texting,transfer)' ),
array( 'fas fa-comments-dollar' => 'Comments Dollar (bubble,chat,commenting,conversation,feedback,message,money,note,notification,pay,sms,speech,spend,texting,transfer)' ),
array( 'fas fa-credit-card' => 'Credit Card (buy,checkout,credit-card-alt,debit,money,payment,purchase)' ),
array( 'far fa-credit-card' => 'Credit Card (buy,checkout,credit-card-alt,debit,money,payment,purchase)' ),
array( 'fas fa-donate' => 'Donate (contribute,generosity,gift,give)' ),
array( 'fas fa-file-invoice' => 'File Invoice (account,bill,charge,document,payment,receipt)' ),
array( 'fas fa-file-invoice-dollar' => 'File Invoice with US Dollar ($,account,bill,charge,document,dollar-sign,money,payment,receipt,usd)' ),
array( 'fas fa-hand-holding-usd' => 'Hand Holding US Dollar ($,carry,dollar sign,donation,giving,lift,money,price)' ),
array( 'fas fa-landmark' => 'Landmark (building,historic,memorable,monument,politics)' ),
array( 'fas fa-money-bill' => 'Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'far fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-wave' => 'Wavy Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-wave-alt' => 'Alternate Wavy Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-check' => 'Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fas fa-money-check-alt' => 'Alternate Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fas fa-percentage' => 'Percentage (discount,fraction,proportion,rate,ratio)' ),
array( 'fas fa-piggy-bank' => 'Piggy Bank (bank,save,savings)' ),
array( 'fas fa-receipt' => 'Receipt (check,invoice,money,pay,table)' ),
array( 'fas fa-stamp' => 'Stamp (art,certificate,imprint,rubber,seal)' ),
array( 'fas fa-wallet' => 'Wallet (billfold,cash,currency,money)' ),
),
'Fitness' => array(
array( 'fas fa-bicycle' => 'Bicycle (bike,gears,pedal,transportation,vehicle)' ),
array( 'fas fa-biking' => 'Biking (bicycle,bike,cycle,cycling,ride,wheel)' ),
array( 'fas fa-burn' => 'Burn (caliente,energy,fire,flame,gas,heat,hot)' ),
array( 'fas fa-fire-alt' => 'Alternate Fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-heartbeat' => 'Heartbeat (ekg,electrocardiogram,health,lifeline,vital signs)' ),
array( 'fas fa-hiking' => 'Hiking (activity,backpack,fall,fitness,outdoors,person,seasonal,walking)' ),
array( 'fas fa-running' => 'Running (exercise,health,jog,person,run,sport,sprint)' ),
array( 'fas fa-shoe-prints' => 'Shoe Prints (feet,footprints,steps,walk)' ),
array( 'fas fa-skating' => 'Skating (activity,figure skating,fitness,ice,person,winter)' ),
array( 'fas fa-skiing' => 'Skiing (activity,downhill,fast,fitness,olympics,outdoors,person,seasonal,slalom)' ),
array( 'fas fa-skiing-nordic' => 'Skiing Nordic (activity,cross country,fitness,outdoors,person,seasonal)' ),
array( 'fas fa-snowboarding' => 'Snowboarding (activity,fitness,olympics,outdoors,person)' ),
array( 'fas fa-spa' => 'Spa (flora,massage,mindfulness,plant,wellness)' ),
array( 'fas fa-swimmer' => 'Swimmer (athlete,head,man,olympics,person,pool,water)' ),
array( 'fas fa-walking' => 'Walking (exercise,health,pedometer,person,steps)' ),
),
'Food' => array(
array( 'fas fa-apple-alt' => 'Fruit Apple (fall,fruit,fuji,macintosh,orchard,seasonal,vegan)' ),
array( 'fas fa-bacon' => 'Bacon (blt,breakfast,ham,lard,meat,pancetta,pork,rasher)' ),
array( 'fas fa-bone' => 'Bone (calcium,dog,skeletal,skeleton,tibia)' ),
array( 'fas fa-bread-slice' => 'Bread Slice (bake,bakery,baking,dough,flour,gluten,grain,sandwich,sourdough,toast,wheat,yeast)' ),
array( 'fas fa-candy-cane' => 'Candy Cane (candy,christmas,holiday,mint,peppermint,striped,xmas)' ),
array( 'fas fa-carrot' => 'Carrot (bugs bunny,orange,vegan,vegetable)' ),
array( 'fas fa-cheese' => 'Cheese (cheddar,curd,gouda,melt,parmesan,sandwich,swiss,wedge)' ),
array( 'fas fa-cloud-meatball' => 'Cloud with (a chance of) Meatball (FLDSMDFR,food,spaghetti,storm)' ),
array( 'fas fa-cookie' => 'Cookie (baked good,chips,chocolate,eat,snack,sweet,treat)' ),
array( 'fas fa-drumstick-bite' => 'Drumstick with Bite Taken Out (bone,chicken,leg,meat,poultry,turkey)' ),
array( 'fas fa-egg' => 'Egg (breakfast,chicken,easter,shell,yolk)' ),
array( 'fas fa-fish' => 'Fish (fauna,gold,seafood,swimming)' ),
array( 'fas fa-hamburger' => 'Hamburger (bacon,beef,burger,burger king,cheeseburger,fast food,grill,ground beef,mcdonalds,sandwich)' ),
array( 'fas fa-hotdog' => 'Hot Dog (bun,chili,frankfurt,frankfurter,kosher,polish,sandwich,sausage,vienna,weiner)' ),
array( 'fas fa-ice-cream' => 'Ice Cream (chocolate,cone,dessert,frozen,scoop,sorbet,vanilla,yogurt)' ),
array( 'fas fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'far fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'fas fa-pepper-hot' => 'Hot Pepper (buffalo wings,capsicum,chili,chilli,habanero,jalapeno,mexican,spicy,tabasco,vegetable)' ),
array( 'fas fa-pizza-slice' => 'Pizza Slice (cheese,chicago,italian,mozzarella,new york,pepperoni,pie,slice,teenage mutant ninja turtles,tomato)' ),
array( 'fas fa-seedling' => 'Seedling (flora,grow,plant,vegan)' ),
array( 'fas fa-stroopwafel' => 'Stroopwafel (caramel,cookie,dessert,sweets,waffle)' ),
),
'Fruits & Vegetables' => array(
array( 'fas fa-apple-alt' => 'Fruit Apple (fall,fruit,fuji,macintosh,orchard,seasonal,vegan)' ),
array( 'fas fa-carrot' => 'Carrot (bugs bunny,orange,vegan,vegetable)' ),
array( 'fas fa-leaf' => 'leaf (eco,flora,nature,plant,vegan)' ),
array( 'fas fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'far fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'fas fa-pepper-hot' => 'Hot Pepper (buffalo wings,capsicum,chili,chilli,habanero,jalapeno,mexican,spicy,tabasco,vegetable)' ),
array( 'fas fa-seedling' => 'Seedling (flora,grow,plant,vegan)' ),
),
'Games' => array(
array( 'fas fa-chess' => 'Chess (board,castle,checkmate,game,king,rook,strategy,tournament)' ),
array( 'fas fa-chess-bishop' => 'Chess Bishop (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-board' => 'Chess Board (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-king' => 'Chess King (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-knight' => 'Chess Knight (board,checkmate,game,horse,strategy)' ),
array( 'fas fa-chess-pawn' => 'Chess Pawn (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-queen' => 'Chess Queen (board,checkmate,game,strategy)' ),
array( 'fas fa-chess-rook' => 'Chess Rook (board,castle,checkmate,game,strategy)' ),
array( 'fas fa-dice' => 'Dice (chance,gambling,game,roll)' ),
array( 'fas fa-dice-d20' => 'Dice D20 (Dungeons & Dragons,chance,d&d,dnd,fantasy,gambling,game,roll)' ),
array( 'fas fa-dice-d6' => 'Dice D6 (Dungeons & Dragons,chance,d&d,dnd,fantasy,gambling,game,roll)' ),
array( 'fas fa-dice-five' => 'Dice Five (chance,gambling,game,roll)' ),
array( 'fas fa-dice-four' => 'Dice Four (chance,gambling,game,roll)' ),
array( 'fas fa-dice-one' => 'Dice One (chance,gambling,game,roll)' ),
array( 'fas fa-dice-six' => 'Dice Six (chance,gambling,game,roll)' ),
array( 'fas fa-dice-three' => 'Dice Three (chance,gambling,game,roll)' ),
array( 'fas fa-dice-two' => 'Dice Two (chance,gambling,game,roll)' ),
array( 'fas fa-gamepad' => 'Gamepad (arcade,controller,d-pad,joystick,video,video game)' ),
array( 'fas fa-ghost' => 'Ghost (apparition,blinky,clyde,floating,halloween,holiday,inky,pinky,spirit)' ),
array( 'fas fa-headset' => 'Headset (audio,gamer,gaming,listen,live chat,microphone,shot caller,sound,support,telemarketer)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fab fa-playstation' => 'PlayStation' ),
array( 'fas fa-puzzle-piece' => 'Puzzle Piece (add-on,addon,game,section)' ),
array( 'fab fa-steam' => 'Steam' ),
array( 'fab fa-steam-square' => 'Steam Square' ),
array( 'fab fa-steam-symbol' => 'Steam Symbol' ),
array( 'fab fa-twitch' => 'Twitch' ),
array( 'fab fa-xbox' => 'Xbox' ),
),
'Genders' => array(
array( 'fas fa-genderless' => 'Genderless (androgynous,asexual,sexless)' ),
array( 'fas fa-mars' => 'Mars (male)' ),
array( 'fas fa-mars-double' => 'Mars Double' ),
array( 'fas fa-mars-stroke' => 'Mars Stroke' ),
array( 'fas fa-mars-stroke-h' => 'Mars Stroke Horizontal' ),
array( 'fas fa-mars-stroke-v' => 'Mars Stroke Vertical' ),
array( 'fas fa-mercury' => 'Mercury (transgender)' ),
array( 'fas fa-neuter' => 'Neuter' ),
array( 'fas fa-transgender' => 'Transgender (intersex)' ),
array( 'fas fa-transgender-alt' => 'Alternate Transgender (intersex)' ),
array( 'fas fa-venus' => 'Venus (female)' ),
array( 'fas fa-venus-double' => 'Venus Double (female)' ),
array( 'fas fa-venus-mars' => 'Venus Mars (Gender)' ),
),
'Halloween' => array(
array( 'fas fa-book-dead' => 'Book of the Dead (Dungeons & Dragons,crossbones,d&d,dark arts,death,dnd,documentation,evil,fantasy,halloween,holiday,necronomicon,read,skull,spell)' ),
array( 'fas fa-broom' => 'Broom (clean,firebolt,fly,halloween,nimbus 2000,quidditch,sweep,witch)' ),
array( 'fas fa-cat' => 'Cat (feline,halloween,holiday,kitten,kitty,meow,pet)' ),
array( 'fas fa-cloud-moon' => 'Cloud with Moon (crescent,evening,lunar,night,partly cloudy,sky)' ),
array( 'fas fa-crow' => 'Crow (bird,bullfrog,fauna,halloween,holiday,toad)' ),
array( 'fas fa-ghost' => 'Ghost (apparition,blinky,clyde,floating,halloween,holiday,inky,pinky,spirit)' ),
array( 'fas fa-hat-wizard' => 'Wizard\'s Hat (Dungeons & Dragons,accessory,buckle,clothing,d&d,dnd,fantasy,halloween,head,holiday,mage,magic,pointy,witch)' ),
array( 'fas fa-mask' => 'Mask (carnivale,costume,disguise,halloween,secret,super hero)' ),
array( 'fas fa-skull-crossbones' => 'Skull & Crossbones (Dungeons & Dragons,alert,bones,d&d,danger,dead,deadly,death,dnd,fantasy,halloween,holiday,jolly-roger,pirate,poison,skeleton,warning)' ),
array( 'fas fa-spider' => 'Spider (arachnid,bug,charlotte,crawl,eight,halloween)' ),
array( 'fas fa-toilet-paper' => 'Toilet Paper (bathroom,halloween,holiday,lavatory,prank,restroom,roll)' ),
),
'Hands' => array(
array( 'fas fa-allergies' => 'Allergies (allergy,freckles,hand,hives,pox,skin,spots)' ),
array( 'fas fa-fist-raised' => 'Raised Fist (Dungeons & Dragons,d&d,dnd,fantasy,hand,ki,monk,resist,strength,unarmed combat)' ),
array( 'fas fa-hand-holding' => 'Hand Holding (carry,lift)' ),
array( 'fas fa-hand-holding-heart' => 'Hand Holding Heart (carry,charity,gift,lift,package)' ),
array( 'fas fa-hand-holding-usd' => 'Hand Holding US Dollar ($,carry,dollar sign,donation,giving,lift,money,price)' ),
array( 'fas fa-hand-lizard' => 'Lizard (Hand) (game,roshambo)' ),
array( 'far fa-hand-lizard' => 'Lizard (Hand) (game,roshambo)' ),
array( 'fas fa-hand-middle-finger' => 'Hand with Middle Finger Raised (flip the bird,gesture,hate,rude)' ),
array( 'fas fa-hand-paper' => 'Paper (Hand) (game,halt,roshambo,stop)' ),
array( 'far fa-hand-paper' => 'Paper (Hand) (game,halt,roshambo,stop)' ),
array( 'fas fa-hand-peace' => 'Peace (Hand) (rest,truce)' ),
array( 'far fa-hand-peace' => 'Peace (Hand) (rest,truce)' ),
array( 'fas fa-hand-point-down' => 'Hand Pointing Down (finger,hand-o-down,point)' ),
array( 'far fa-hand-point-down' => 'Hand Pointing Down (finger,hand-o-down,point)' ),
array( 'fas fa-hand-point-left' => 'Hand Pointing Left (back,finger,hand-o-left,left,point,previous)' ),
array( 'far fa-hand-point-left' => 'Hand Pointing Left (back,finger,hand-o-left,left,point,previous)' ),
array( 'fas fa-hand-point-right' => 'Hand Pointing Right (finger,forward,hand-o-right,next,point,right)' ),
array( 'far fa-hand-point-right' => 'Hand Pointing Right (finger,forward,hand-o-right,next,point,right)' ),
array( 'fas fa-hand-point-up' => 'Hand Pointing Up (finger,hand-o-up,point)' ),
array( 'far fa-hand-point-up' => 'Hand Pointing Up (finger,hand-o-up,point)' ),
array( 'fas fa-hand-pointer' => 'Pointer (Hand) (arrow,cursor,select)' ),
array( 'far fa-hand-pointer' => 'Pointer (Hand) (arrow,cursor,select)' ),
array( 'fas fa-hand-rock' => 'Rock (Hand) (fist,game,roshambo)' ),
array( 'far fa-hand-rock' => 'Rock (Hand) (fist,game,roshambo)' ),
array( 'fas fa-hand-scissors' => 'Scissors (Hand) (cut,game,roshambo)' ),
array( 'far fa-hand-scissors' => 'Scissors (Hand) (cut,game,roshambo)' ),
array( 'fas fa-hand-spock' => 'Spock (Hand) (live long,prosper,salute,star trek,vulcan)' ),
array( 'far fa-hand-spock' => 'Spock (Hand) (live long,prosper,salute,star trek,vulcan)' ),
array( 'fas fa-hands' => 'Hands (carry,hold,lift)' ),
array( 'fas fa-hands-helping' => 'Helping Hands (aid,assistance,handshake,partnership,volunteering)' ),
array( 'fas fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'far fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'fas fa-praying-hands' => 'Praying Hands (kneel,preach,religion,worship)' ),
array( 'fas fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'far fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'fas fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'far fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
),
'Health' => array(
array( 'fab fa-accessible-icon' => 'Accessible Icon (accessibility,handicap,person,wheelchair,wheelchair-alt)' ),
array( 'fas fa-ambulance' => 'ambulance (emergency,emt,er,help,hospital,support,vehicle)' ),
array( 'fas fa-h-square' => 'H Square (directions,emergency,hospital,hotel,map)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-heartbeat' => 'Heartbeat (ekg,electrocardiogram,health,lifeline,vital signs)' ),
array( 'fas fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'far fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'fas fa-medkit' => 'medkit (first aid,firstaid,health,help,support)' ),
array( 'fas fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'far fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'fas fa-prescription' => 'Prescription (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-stethoscope' => 'Stethoscope (diagnosis,doctor,general practitioner,hospital,infirmary,medicine,office,outpatient)' ),
array( 'fas fa-user-md' => 'Doctor (job,medical,nurse,occupation,physician,profile,surgeon)' ),
array( 'fas fa-wheelchair' => 'Wheelchair (accessible,handicap,person)' ),
),
'Holiday' => array(
array( 'fas fa-candy-cane' => 'Candy Cane (candy,christmas,holiday,mint,peppermint,striped,xmas)' ),
array( 'fas fa-carrot' => 'Carrot (bugs bunny,orange,vegan,vegetable)' ),
array( 'fas fa-cookie-bite' => 'Cookie Bite (baked good,bitten,chips,chocolate,eat,snack,sweet,treat)' ),
array( 'fas fa-gift' => 'gift (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-gifts' => 'Gifts (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-glass-cheers' => 'Glass Cheers (alcohol,bar,beverage,celebration,champagne,clink,drink,holiday,new year\'s eve,party,toast)' ),
array( 'fas fa-holly-berry' => 'Holly Berry (catwoman,christmas,decoration,flora,halle,holiday,ororo munroe,plant,storm,xmas)' ),
array( 'fas fa-mug-hot' => 'Mug Hot (caliente,cocoa,coffee,cup,drink,holiday,hot chocolate,steam,tea,warmth)' ),
array( 'fas fa-sleigh' => 'Sleigh (christmas,claus,fly,holiday,santa,sled,snow,xmas)' ),
array( 'fas fa-snowman' => 'Snowman (decoration,frost,frosty,holiday)' ),
),
'Hotel' => array(
array( 'fas fa-baby-carriage' => 'Baby Carriage (buggy,carrier,infant,push,stroller,transportation,walk,wheels)' ),
array( 'fas fa-bath' => 'Bath (clean,shower,tub,wash)' ),
array( 'fas fa-bed' => 'Bed (lodging,rest,sleep,travel)' ),
array( 'fas fa-briefcase' => 'Briefcase (bag,business,luggage,office,work)' ),
array( 'fas fa-car' => 'Car (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-cocktail' => 'Cocktail (alcohol,beverage,drink,gin,glass,margarita,martini,vodka)' ),
array( 'fas fa-coffee' => 'Coffee (beverage,breakfast,cafe,drink,fall,morning,mug,seasonal,tea)' ),
array( 'fas fa-concierge-bell' => 'Concierge Bell (attention,hotel,receptionist,service,support)' ),
array( 'fas fa-dice' => 'Dice (chance,gambling,game,roll)' ),
array( 'fas fa-dice-five' => 'Dice Five (chance,gambling,game,roll)' ),
array( 'fas fa-door-closed' => 'Door Closed (enter,exit,locked)' ),
array( 'fas fa-door-open' => 'Door Open (enter,exit,welcome)' ),
array( 'fas fa-dumbbell' => 'Dumbbell (exercise,gym,strength,weight,weight-lifting)' ),
array( 'fas fa-glass-martini' => 'Martini Glass (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-glass-martini-alt' => 'Alternate Glass Martini (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-hot-tub' => 'Hot Tub (bath,jacuzzi,massage,sauna,spa)' ),
array( 'fas fa-hotel' => 'Hotel (building,inn,lodging,motel,resort,travel)' ),
array( 'fas fa-infinity' => 'Infinity (eternity,forever,math)' ),
array( 'fas fa-key' => 'key (lock,password,private,secret,unlock)' ),
array( 'fas fa-luggage-cart' => 'Luggage Cart (bag,baggage,suitcase,travel)' ),
array( 'fas fa-shower' => 'Shower (bath,clean,faucet,water)' ),
array( 'fas fa-shuttle-van' => 'Shuttle Van (airport,machine,public-transportation,transportation,travel,vehicle)' ),
array( 'fas fa-smoking' => 'Smoking (cancer,cigarette,nicotine,smoking status,tobacco)' ),
array( 'fas fa-smoking-ban' => 'Smoking Ban (ban,cancel,no smoking,non-smoking)' ),
array( 'fas fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'far fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'fas fa-spa' => 'Spa (flora,massage,mindfulness,plant,wellness)' ),
array( 'fas fa-suitcase' => 'Suitcase (baggage,luggage,move,suitcase,travel,trip)' ),
array( 'fas fa-suitcase-rolling' => 'Suitcase Rolling (baggage,luggage,move,suitcase,travel,trip)' ),
array( 'fas fa-swimmer' => 'Swimmer (athlete,head,man,olympics,person,pool,water)' ),
array( 'fas fa-swimming-pool' => 'Swimming Pool (ladder,recreation,swim,water)' ),
array( 'fas fa-tv' => 'Television (computer,display,monitor,television)' ),
array( 'fas fa-umbrella-beach' => 'Umbrella Beach (protection,recreation,sand,shade,summer,sun)' ),
array( 'fas fa-utensils' => 'Utensils (cutlery,dining,dinner,eat,food,fork,knife,restaurant)' ),
array( 'fas fa-wheelchair' => 'Wheelchair (accessible,handicap,person)' ),
array( 'fas fa-wifi' => 'WiFi (connection,hotspot,internet,network,wireless)' ),
),
'Household' => array(
array( 'fas fa-bath' => 'Bath (clean,shower,tub,wash)' ),
array( 'fas fa-bed' => 'Bed (lodging,rest,sleep,travel)' ),
array( 'fas fa-blender' => 'Blender (cocktail,milkshake,mixer,puree,smoothie)' ),
array( 'fas fa-chair' => 'Chair (furniture,seat,sit)' ),
array( 'fas fa-couch' => 'Couch (chair,cushion,furniture,relax,sofa)' ),
array( 'fas fa-door-closed' => 'Door Closed (enter,exit,locked)' ),
array( 'fas fa-door-open' => 'Door Open (enter,exit,welcome)' ),
array( 'fas fa-dungeon' => 'Dungeon (Dungeons & Dragons,building,d&d,dnd,door,entrance,fantasy,gate)' ),
array( 'fas fa-fan' => 'Fan (ac,air conditioning,blade,blower,cool,hot)' ),
array( 'fas fa-shower' => 'Shower (bath,clean,faucet,water)' ),
array( 'fas fa-toilet-paper' => 'Toilet Paper (bathroom,halloween,holiday,lavatory,prank,restroom,roll)' ),
array( 'fas fa-tv' => 'Television (computer,display,monitor,television)' ),
),
'Images' => array(
array( 'fas fa-adjust' => 'adjust (contrast,dark,light,saturation)' ),
array( 'fas fa-bolt' => 'Lightning Bolt (electricity,lightning,weather,zap)' ),
array( 'fas fa-camera' => 'camera (image,lens,photo,picture,record,shutter,video)' ),
array( 'fas fa-camera-retro' => 'Retro Camera (image,lens,photo,picture,record,shutter,video)' ),
array( 'fas fa-chalkboard' => 'Chalkboard (blackboard,learning,school,teaching,whiteboard,writing)' ),
array( 'fas fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'far fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'fas fa-compress' => 'Compress (collapse,fullscreen,minimize,move,resize,shrink,smaller)' ),
array( 'fas fa-compress-arrows-alt' => 'Alternate Compress Arrows (collapse,fullscreen,minimize,move,resize,shrink,smaller)' ),
array( 'fas fa-expand' => 'Expand (arrow,bigger,enlarge,resize)' ),
array( 'fas fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'far fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'fas fa-eye-dropper' => 'Eye Dropper (beaker,clone,color,copy,eyedropper,pipette)' ),
array( 'fas fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'far fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'fas fa-file-image' => 'Image File (document,image,jpg,photo,png)' ),
array( 'far fa-file-image' => 'Image File (document,image,jpg,photo,png)' ),
array( 'fas fa-film' => 'Film (cinema,movie,strip,video)' ),
array( 'fas fa-id-badge' => 'Identification Badge (address,contact,identification,license,profile)' ),
array( 'far fa-id-badge' => 'Identification Badge (address,contact,identification,license,profile)' ),
array( 'fas fa-id-card' => 'Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'far fa-id-card' => 'Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'fas fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'far fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'fas fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'far fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'fas fa-photo-video' => 'Photo Video (av,film,image,library,media)' ),
array( 'fas fa-portrait' => 'Portrait (id,image,photo,picture,selfie)' ),
array( 'fas fa-sliders-h' => 'Horizontal Sliders (adjust,settings,sliders,toggle)' ),
array( 'fas fa-tint' => 'tint (color,drop,droplet,raindrop,waterdrop)' ),
),
'Interfaces' => array(
array( 'fas fa-award' => 'Award (honor,praise,prize,recognition,ribbon,trophy)' ),
array( 'fas fa-ban' => 'ban (abort,ban,block,cancel,delete,hide,prohibit,remove,stop,trash)' ),
array( 'fas fa-barcode' => 'barcode (info,laser,price,scan,upc)' ),
array( 'fas fa-bars' => 'Bars (checklist,drag,hamburger,list,menu,nav,navigation,ol,reorder,settings,todo,ul)' ),
array( 'fas fa-beer' => 'beer (alcohol,ale,bar,beverage,brewery,drink,lager,liquor,mug,stein)' ),
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'far fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'fas fa-blog' => 'Blog (journal,log,online,personal,post,web 2.0,wordpress,writing)' ),
array( 'fas fa-bug' => 'Bug (beetle,error,insect,report)' ),
array( 'fas fa-bullhorn' => 'bullhorn (announcement,broadcast,louder,megaphone,share)' ),
array( 'fas fa-bullseye' => 'Bullseye (archery,goal,objective,target)' ),
array( 'fas fa-calculator' => 'Calculator (abacus,addition,arithmetic,counting,math,multiplication,subtraction)' ),
array( 'fas fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'far fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'far fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-check' => 'Calendar Check (accept,agree,appointment,confirm,correct,date,done,event,ok,schedule,select,success,tick,time,todo,when)' ),
array( 'far fa-calendar-check' => 'Calendar Check (accept,agree,appointment,confirm,correct,date,done,event,ok,schedule,select,success,tick,time,todo,when)' ),
array( 'fas fa-calendar-minus' => 'Calendar Minus (calendar,date,delete,event,negative,remove,schedule,time,when)' ),
array( 'far fa-calendar-minus' => 'Calendar Minus (calendar,date,delete,event,negative,remove,schedule,time,when)' ),
array( 'fas fa-calendar-plus' => 'Calendar Plus (add,calendar,create,date,event,new,positive,schedule,time,when)' ),
array( 'far fa-calendar-plus' => 'Calendar Plus (add,calendar,create,date,event,new,positive,schedule,time,when)' ),
array( 'fas fa-calendar-times' => 'Calendar Times (archive,calendar,date,delete,event,remove,schedule,time,when,x)' ),
array( 'far fa-calendar-times' => 'Calendar Times (archive,calendar,date,delete,event,remove,schedule,time,when,x)' ),
array( 'fas fa-certificate' => 'certificate (badge,star,verified)' ),
array( 'fas fa-check' => 'Check (accept,agree,checkmark,confirm,correct,done,notice,notification,notify,ok,select,success,tick,todo,yes)' ),
array( 'fas fa-check-circle' => 'Check Circle (accept,agree,confirm,correct,done,ok,select,success,tick,todo,yes)' ),
array( 'far fa-check-circle' => 'Check Circle (accept,agree,confirm,correct,done,ok,select,success,tick,todo,yes)' ),
array( 'fas fa-check-double' => 'Double Check (accept,agree,checkmark,confirm,correct,done,notice,notification,notify,ok,select,success,tick,todo)' ),
array( 'fas fa-check-square' => 'Check Square (accept,agree,checkmark,confirm,correct,done,ok,select,success,tick,todo,yes)' ),
array( 'far fa-check-square' => 'Check Square (accept,agree,checkmark,confirm,correct,done,ok,select,success,tick,todo,yes)' ),
array( 'fas fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'far fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'fas fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'far fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'fas fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'far fa-clone' => 'Clone (arrange,copy,duplicate,paste)' ),
array( 'fas fa-cloud' => 'Cloud (atmosphere,fog,overcast,save,upload,weather)' ),
array( 'fas fa-cloud-download-alt' => 'Alternate Cloud Download (download,export,save)' ),
array( 'fas fa-cloud-upload-alt' => 'Alternate Cloud Upload (cloud-upload,import,save,upload)' ),
array( 'fas fa-coffee' => 'Coffee (beverage,breakfast,cafe,drink,fall,morning,mug,seasonal,tea)' ),
array( 'fas fa-cog' => 'cog (gear,mechanical,settings,sprocket,wheel)' ),
array( 'fas fa-cogs' => 'cogs (gears,mechanical,settings,sprocket,wheel)' ),
array( 'fas fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'far fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'fas fa-cut' => 'Cut (clip,scissors,snip)' ),
array( 'fas fa-database' => 'Database (computer,development,directory,memory,storage)' ),
array( 'fas fa-dot-circle' => 'Dot Circle (bullseye,notification,target)' ),
array( 'far fa-dot-circle' => 'Dot Circle (bullseye,notification,target)' ),
array( 'fas fa-download' => 'Download (export,hard drive,save,transfer)' ),
array( 'fas fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'far fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'fas fa-ellipsis-h' => 'Horizontal Ellipsis (dots,drag,kebab,list,menu,nav,navigation,ol,reorder,settings,ul)' ),
array( 'fas fa-ellipsis-v' => 'Vertical Ellipsis (dots,drag,kebab,list,menu,nav,navigation,ol,reorder,settings,ul)' ),
array( 'fas fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-eraser' => 'eraser (art,delete,remove,rubber)' ),
array( 'fas fa-exclamation' => 'exclamation (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-exclamation-circle' => 'Exclamation Circle (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-exclamation-triangle' => 'Exclamation Triangle (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-external-link-alt' => 'Alternate External Link (external-link,new,open,share)' ),
array( 'fas fa-external-link-square-alt' => 'Alternate External Link Square (external-link-square,new,open,share)' ),
array( 'fas fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'far fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'fas fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'far fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-file-download' => 'File Download (document,export,save)' ),
array( 'fas fa-file-export' => 'File Export (download,save)' ),
array( 'fas fa-file-import' => 'File Import (copy,document,send,upload)' ),
array( 'fas fa-file-upload' => 'File Upload (document,import,page,save)' ),
array( 'fas fa-filter' => 'Filter (funnel,options,separate,sort)' ),
array( 'fas fa-fingerprint' => 'Fingerprint (human,id,identification,lock,smudge,touch,unique,unlock)' ),
array( 'fas fa-flag' => 'flag (country,notice,notification,notify,pole,report,symbol)' ),
array( 'far fa-flag' => 'flag (country,notice,notification,notify,pole,report,symbol)' ),
array( 'fas fa-flag-checkered' => 'flag-checkered (notice,notification,notify,pole,racing,report,symbol)' ),
array( 'fas fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'far fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'fas fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'far fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'fas fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'far fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'fas fa-glasses' => 'Glasses (hipster,nerd,reading,sight,spectacles,vision)' ),
array( 'fas fa-grip-horizontal' => 'Grip Horizontal (affordance,drag,drop,grab,handle)' ),
array( 'fas fa-grip-lines' => 'Grip Lines (affordance,drag,drop,grab,handle)' ),
array( 'fas fa-grip-lines-vertical' => 'Grip Lines Vertical (affordance,drag,drop,grab,handle)' ),
array( 'fas fa-grip-vertical' => 'Grip Vertical (affordance,drag,drop,grab,handle)' ),
array( 'fas fa-hashtag' => 'Hashtag (Twitter,instagram,pound,social media,tag)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-history' => 'History (Rewind,clock,reverse,time,time machine)' ),
array( 'fas fa-home' => 'home (abode,building,house,main)' ),
array( 'fas fa-i-cursor' => 'I Beam Cursor (editing,i-beam,type,writing)' ),
array( 'fas fa-info' => 'Info (details,help,information,more,support)' ),
array( 'fas fa-info-circle' => 'Info Circle (details,help,information,more,support)' ),
array( 'fas fa-language' => 'Language (dialect,idiom,localize,speech,translate,vernacular)' ),
array( 'fas fa-magic' => 'magic (autocomplete,automatic,mage,magic,spell,wand,witch,wizard)' ),
array( 'fas fa-marker' => 'Marker (design,edit,sharpie,update,write)' ),
array( 'fas fa-medal' => 'Medal (award,ribbon,star,trophy)' ),
array( 'fas fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'far fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'fas fa-microphone' => 'microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt' => 'Alternate Microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-slash' => 'Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-minus' => 'minus (collapse,delete,hide,minify,negative,remove,trash)' ),
array( 'fas fa-minus-circle' => 'Minus Circle (delete,hide,negative,remove,shape,trash)' ),
array( 'fas fa-minus-square' => 'Minus Square (collapse,delete,hide,minify,negative,remove,shape,trash)' ),
array( 'far fa-minus-square' => 'Minus Square (collapse,delete,hide,minify,negative,remove,shape,trash)' ),
array( 'fas fa-paste' => 'Paste (clipboard,copy,document,paper)' ),
array( 'fas fa-pen' => 'Pen (design,edit,update,write)' ),
array( 'fas fa-pen-alt' => 'Alternate Pen (design,edit,update,write)' ),
array( 'fas fa-pen-fancy' => 'Pen Fancy (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pencil-alt' => 'Alternate Pencil (design,edit,pencil,update,write)' ),
array( 'fas fa-plus' => 'plus (add,create,expand,new,positive,shape)' ),
array( 'fas fa-plus-circle' => 'Plus Circle (add,create,expand,new,positive,shape)' ),
array( 'fas fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'far fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'fas fa-poo' => 'Poo (crap,poop,shit,smile,turd)' ),
array( 'fas fa-qrcode' => 'qrcode (barcode,info,information,scan)' ),
array( 'fas fa-question' => 'Question (help,information,support,unknown)' ),
array( 'fas fa-question-circle' => 'Question Circle (help,information,support,unknown)' ),
array( 'far fa-question-circle' => 'Question Circle (help,information,support,unknown)' ),
array( 'fas fa-quote-left' => 'quote-left (mention,note,phrase,text,type)' ),
array( 'fas fa-quote-right' => 'quote-right (mention,note,phrase,text,type)' ),
array( 'fas fa-redo' => 'Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-redo-alt' => 'Alternate Redo (forward,refresh,reload,repeat)' ),
array( 'fas fa-reply' => 'Reply (mail,message,respond)' ),
array( 'fas fa-reply-all' => 'reply-all (mail,message,respond)' ),
array( 'fas fa-rss' => 'rss (blog,feed,journal,news,writing)' ),
array( 'fas fa-rss-square' => 'RSS Square (blog,feed,journal,news,writing)' ),
array( 'fas fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'far fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'fas fa-screwdriver' => 'Screwdriver (admin,fix,mechanic,repair,settings,tool)' ),
array( 'fas fa-search' => 'Search (bigger,enlarge,find,magnify,preview,zoom)' ),
array( 'fas fa-search-minus' => 'Search Minus (minify,negative,smaller,zoom,zoom out)' ),
array( 'fas fa-search-plus' => 'Search Plus (bigger,enlarge,magnify,positive,zoom,zoom in)' ),
array( 'fas fa-share' => 'Share (forward,save,send,social)' ),
array( 'fas fa-share-alt' => 'Alternate Share (forward,save,send,social)' ),
array( 'fas fa-share-alt-square' => 'Alternate Share Square (forward,save,send,social)' ),
array( 'fas fa-share-square' => 'Share Square (forward,save,send,social)' ),
array( 'far fa-share-square' => 'Share Square (forward,save,send,social)' ),
array( 'fas fa-shield-alt' => 'Alternate Shield (achievement,award,block,defend,security,winner)' ),
array( 'fas fa-sign-in-alt' => 'Alternate Sign In (arrow,enter,join,log in,login,sign in,sign up,sign-in,signin,signup)' ),
array( 'fas fa-sign-out-alt' => 'Alternate Sign Out (arrow,exit,leave,log out,logout,sign-out)' ),
array( 'fas fa-signal' => 'signal (bars,graph,online,reception,status)' ),
array( 'fas fa-sitemap' => 'Sitemap (directory,hierarchy,ia,information architecture,organization)' ),
array( 'fas fa-sliders-h' => 'Horizontal Sliders (adjust,settings,sliders,toggle)' ),
array( 'fas fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'far fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'fas fa-sort' => 'Sort (filter,order)' ),
array( 'fas fa-sort-alpha-down' => 'Sort Alphabetical Down (alphabetical,arrange,filter,order,sort-alpha-asc)' ),
array( 'fas fa-sort-alpha-down-alt' => 'Alternate Sort Alphabetical Down (alphabetical,arrange,filter,order,sort-alpha-asc)' ),
array( 'fas fa-sort-alpha-up' => 'Sort Alphabetical Up (alphabetical,arrange,filter,order,sort-alpha-desc)' ),
array( 'fas fa-sort-alpha-up-alt' => 'Alternate Sort Alphabetical Up (alphabetical,arrange,filter,order,sort-alpha-desc)' ),
array( 'fas fa-sort-amount-down' => 'Sort Amount Down (arrange,filter,number,order,sort-amount-asc)' ),
array( 'fas fa-sort-amount-down-alt' => 'Alternate Sort Amount Down (arrange,filter,order,sort-amount-asc)' ),
array( 'fas fa-sort-amount-up' => 'Sort Amount Up (arrange,filter,order,sort-amount-desc)' ),
array( 'fas fa-sort-amount-up-alt' => 'Alternate Sort Amount Up (arrange,filter,order,sort-amount-desc)' ),
array( 'fas fa-sort-down' => 'Sort Down (Descending) (arrow,descending,filter,order,sort-desc)' ),
array( 'fas fa-sort-numeric-down' => 'Sort Numeric Down (arrange,filter,numbers,order,sort-numeric-asc)' ),
array( 'fas fa-sort-numeric-down-alt' => 'Alternate Sort Numeric Down (arrange,filter,numbers,order,sort-numeric-asc)' ),
array( 'fas fa-sort-numeric-up' => 'Sort Numeric Up (arrange,filter,numbers,order,sort-numeric-desc)' ),
array( 'fas fa-sort-numeric-up-alt' => 'Alternate Sort Numeric Up (arrange,filter,numbers,order,sort-numeric-desc)' ),
array( 'fas fa-sort-up' => 'Sort Up (Ascending) (arrow,ascending,filter,order,sort-asc)' ),
array( 'fas fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'far fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'fas fa-star-half' => 'star-half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'far fa-star-half' => 'star-half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'fas fa-sync' => 'Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-sync-alt' => 'Alternate Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'far fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'fas fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'far fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'fas fa-times' => 'Times (close,cross,error,exit,incorrect,notice,notification,notify,problem,wrong,x)' ),
array( 'fas fa-times-circle' => 'Times Circle (close,cross,exit,incorrect,notice,notification,notify,problem,wrong,x)' ),
array( 'far fa-times-circle' => 'Times Circle (close,cross,exit,incorrect,notice,notification,notify,problem,wrong,x)' ),
array( 'fas fa-toggle-off' => 'Toggle Off (switch)' ),
array( 'fas fa-toggle-on' => 'Toggle On (switch)' ),
array( 'fas fa-tools' => 'Tools (admin,fix,repair,screwdriver,settings,tools,wrench)' ),
array( 'fas fa-trash' => 'Trash (delete,garbage,hide,remove)' ),
array( 'fas fa-trash-alt' => 'Alternate Trash (delete,garbage,hide,remove,trash-o)' ),
array( 'far fa-trash-alt' => 'Alternate Trash (delete,garbage,hide,remove,trash-o)' ),
array( 'fas fa-trash-restore' => 'Trash Restore (back,control z,oops,undo)' ),
array( 'fas fa-trash-restore-alt' => 'Alternative Trash Restore (back,control z,oops,undo)' ),
array( 'fas fa-trophy' => 'trophy (achievement,award,cup,game,winner)' ),
array( 'fas fa-undo' => 'Undo (back,control z,exchange,oops,return,rotate,swap)' ),
array( 'fas fa-undo-alt' => 'Alternate Undo (back,control z,exchange,oops,return,swap)' ),
array( 'fas fa-upload' => 'Upload (hard drive,import,publish)' ),
array( 'fas fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'far fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-alt' => 'Alternate User (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-circle' => 'User Circle (account,avatar,head,human,man,person,profile)' ),
array( 'far fa-user-circle' => 'User Circle (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-volume-down' => 'Volume Down (audio,lower,music,quieter,sound,speaker)' ),
array( 'fas fa-volume-mute' => 'Volume Mute (audio,music,quiet,sound,speaker)' ),
array( 'fas fa-volume-off' => 'Volume Off (audio,ban,music,mute,quiet,silent,sound)' ),
array( 'fas fa-volume-up' => 'Volume Up (audio,higher,louder,music,sound,speaker)' ),
array( 'fas fa-wifi' => 'WiFi (connection,hotspot,internet,network,wireless)' ),
array( 'fas fa-wrench' => 'Wrench (construction,fix,mechanic,plumbing,settings,spanner,tool,update)' ),
),
'Logistics' => array(
array( 'fas fa-box' => 'Box (archive,container,package,storage)' ),
array( 'fas fa-boxes' => 'Boxes (archives,inventory,storage,warehouse)' ),
array( 'fas fa-clipboard-check' => 'Clipboard with Check (accept,agree,confirm,done,ok,select,success,tick,todo,yes)' ),
array( 'fas fa-clipboard-list' => 'Clipboard List (checklist,completed,done,finished,intinerary,ol,schedule,tick,todo,ul)' ),
array( 'fas fa-dolly' => 'Dolly (carry,shipping,transport)' ),
array( 'fas fa-dolly-flatbed' => 'Dolly Flatbed (carry,inventory,shipping,transport)' ),
array( 'fas fa-hard-hat' => 'Hard Hat (construction,hardhat,helmet,safety)' ),
array( 'fas fa-pallet' => 'Pallet (archive,box,inventory,shipping,warehouse)' ),
array( 'fas fa-shipping-fast' => 'Shipping Fast (express,fedex,mail,overnight,package,ups)' ),
array( 'fas fa-truck' => 'truck (cargo,delivery,shipping,vehicle)' ),
array( 'fas fa-warehouse' => 'Warehouse (building,capacity,garage,inventory,storage)' ),
),
'Maps' => array(
array( 'fas fa-ambulance' => 'ambulance (emergency,emt,er,help,hospital,support,vehicle)' ),
array( 'fas fa-anchor' => 'Anchor (berth,boat,dock,embed,link,maritime,moor,secure)' ),
array( 'fas fa-balance-scale' => 'Balance Scale (balanced,justice,legal,measure,weight)' ),
array( 'fas fa-balance-scale-left' => 'Balance Scale (Left-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-balance-scale-right' => 'Balance Scale (Right-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-bath' => 'Bath (clean,shower,tub,wash)' ),
array( 'fas fa-bed' => 'Bed (lodging,rest,sleep,travel)' ),
array( 'fas fa-beer' => 'beer (alcohol,ale,bar,beverage,brewery,drink,lager,liquor,mug,stein)' ),
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'far fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'fas fa-bicycle' => 'Bicycle (bike,gears,pedal,transportation,vehicle)' ),
array( 'fas fa-binoculars' => 'Binoculars (glasses,magnify,scenic,spyglass,view)' ),
array( 'fas fa-birthday-cake' => 'Birthday Cake (anniversary,bakery,candles,celebration,dessert,frosting,holiday,party,pastry)' ),
array( 'fas fa-blind' => 'Blind (cane,disability,person,sight)' ),
array( 'fas fa-bomb' => 'Bomb (error,explode,fuse,grenade,warning)' ),
array( 'fas fa-book' => 'book (diary,documentation,journal,library,read)' ),
array( 'fas fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'far fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'fas fa-briefcase' => 'Briefcase (bag,business,luggage,office,work)' ),
array( 'fas fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'far fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'fas fa-car' => 'Car (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-coffee' => 'Coffee (beverage,breakfast,cafe,drink,fall,morning,mug,seasonal,tea)' ),
array( 'fas fa-crosshairs' => 'Crosshairs (aim,bullseye,gpd,picker,position)' ),
array( 'fas fa-directions' => 'Directions (map,navigation,sign,turn)' ),
array( 'fas fa-dollar-sign' => 'Dollar Sign ($,cost,dollar-sign,money,price,usd)' ),
array( 'fas fa-draw-polygon' => 'Draw Polygon (anchors,lines,object,render,shape)' ),
array( 'fas fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'far fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'fas fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'far fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'fas fa-fighter-jet' => 'fighter-jet (airplane,fast,fly,goose,maverick,plane,quick,top gun,transportation,travel)' ),
array( 'fas fa-fire' => 'fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-fire-alt' => 'Alternate Fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-fire-extinguisher' => 'fire-extinguisher (burn,caliente,fire fighter,flame,heat,hot,rescue)' ),
array( 'fas fa-flag' => 'flag (country,notice,notification,notify,pole,report,symbol)' ),
array( 'far fa-flag' => 'flag (country,notice,notification,notify,pole,report,symbol)' ),
array( 'fas fa-flag-checkered' => 'flag-checkered (notice,notification,notify,pole,racing,report,symbol)' ),
array( 'fas fa-flask' => 'Flask (beaker,experimental,labs,science)' ),
array( 'fas fa-gamepad' => 'Gamepad (arcade,controller,d-pad,joystick,video,video game)' ),
array( 'fas fa-gavel' => 'Gavel (hammer,judge,law,lawyer,opinion)' ),
array( 'fas fa-gift' => 'gift (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-glass-martini' => 'Martini Glass (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-globe' => 'Globe (all,coordinates,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-graduation-cap' => 'Graduation Cap (ceremony,college,graduate,learning,school,student)' ),
array( 'fas fa-h-square' => 'H Square (directions,emergency,hospital,hotel,map)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-heartbeat' => 'Heartbeat (ekg,electrocardiogram,health,lifeline,vital signs)' ),
array( 'fas fa-helicopter' => 'Helicopter (airwolf,apache,chopper,flight,fly,travel)' ),
array( 'fas fa-home' => 'home (abode,building,house,main)' ),
array( 'fas fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'far fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'fas fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'far fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'fas fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'far fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'fas fa-industry' => 'Industry (building,factory,industrial,manufacturing,mill,warehouse)' ),
array( 'fas fa-info' => 'Info (details,help,information,more,support)' ),
array( 'fas fa-info-circle' => 'Info Circle (details,help,information,more,support)' ),
array( 'fas fa-key' => 'key (lock,password,private,secret,unlock)' ),
array( 'fas fa-landmark' => 'Landmark (building,historic,memorable,monument,politics)' ),
array( 'fas fa-layer-group' => 'Layer Group (arrange,develop,layers,map,stack)' ),
array( 'fas fa-leaf' => 'leaf (eco,flora,nature,plant,vegan)' ),
array( 'fas fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'far fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'fas fa-life-ring' => 'Life Ring (coast guard,help,overboard,save,support)' ),
array( 'far fa-life-ring' => 'Life Ring (coast guard,help,overboard,save,support)' ),
array( 'fas fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'far fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'fas fa-location-arrow' => 'location-arrow (address,compass,coordinate,direction,gps,map,navigation,place)' ),
array( 'fas fa-low-vision' => 'Low Vision (blind,eye,sight)' ),
array( 'fas fa-magnet' => 'magnet (Attract,lodestone,tool)' ),
array( 'fas fa-male' => 'Male (human,man,person,profile,user)' ),
array( 'fas fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'far fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marker' => 'map-marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marker-alt' => 'Alternate Map Marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-pin' => 'Map Pin (address,agree,coordinates,destination,gps,localize,location,map,marker,navigation,pin,place,position,travel)' ),
array( 'fas fa-map-signs' => 'Map Signs (directions,directory,map,signage,wayfinding)' ),
array( 'fas fa-medkit' => 'medkit (first aid,firstaid,health,help,support)' ),
array( 'fas fa-money-bill' => 'Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'far fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-motorcycle' => 'Motorcycle (bike,machine,transportation,vehicle)' ),
array( 'fas fa-music' => 'Music (lyrics,melody,note,sing,sound)' ),
array( 'fas fa-newspaper' => 'Newspaper (article,editorial,headline,journal,journalism,news,press)' ),
array( 'far fa-newspaper' => 'Newspaper (article,editorial,headline,journal,journalism,news,press)' ),
array( 'fas fa-parking' => 'Parking (auto,car,garage,meter)' ),
array( 'fas fa-paw' => 'Paw (animal,cat,dog,pet,print)' ),
array( 'fas fa-phone' => 'Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-alt' => 'Alternate Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-square' => 'Phone Square (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-square-alt' => 'Alternate Phone Square (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-volume' => 'Phone Volume (call,earphone,number,sound,support,telephone,voice,volume-control-phone)' ),
array( 'fas fa-plane' => 'plane (airplane,destination,fly,location,mode,travel,trip)' ),
array( 'fas fa-plug' => 'Plug (connect,electric,online,power)' ),
array( 'fas fa-plus' => 'plus (add,create,expand,new,positive,shape)' ),
array( 'fas fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'far fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'fas fa-print' => 'print (business,copy,document,office,paper)' ),
array( 'fas fa-recycle' => 'Recycle (Waste,compost,garbage,reuse,trash)' ),
array( 'fas fa-restroom' => 'Restroom (bathroom,john,loo,potty,washroom,waste,wc)' ),
array( 'fas fa-road' => 'road (highway,map,pavement,route,street,travel)' ),
array( 'fas fa-rocket' => 'rocket (aircraft,app,jet,launch,nasa,space)' ),
array( 'fas fa-route' => 'Route (directions,navigation,travel)' ),
array( 'fas fa-search' => 'Search (bigger,enlarge,find,magnify,preview,zoom)' ),
array( 'fas fa-search-minus' => 'Search Minus (minify,negative,smaller,zoom,zoom out)' ),
array( 'fas fa-search-plus' => 'Search Plus (bigger,enlarge,magnify,positive,zoom,zoom in)' ),
array( 'fas fa-ship' => 'Ship (boat,sea,water)' ),
array( 'fas fa-shoe-prints' => 'Shoe Prints (feet,footprints,steps,walk)' ),
array( 'fas fa-shopping-bag' => 'Shopping Bag (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-basket' => 'Shopping Basket (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-cart' => 'shopping-cart (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shower' => 'Shower (bath,clean,faucet,water)' ),
array( 'fas fa-snowplow' => 'Snowplow (clean up,cold,road,storm,winter)' ),
array( 'fas fa-street-view' => 'Street View (directions,location,map,navigation)' ),
array( 'fas fa-subway' => 'Subway (machine,railway,train,transportation,vehicle)' ),
array( 'fas fa-suitcase' => 'Suitcase (baggage,luggage,move,suitcase,travel,trip)' ),
array( 'fas fa-tag' => 'tag (discount,label,price,shopping)' ),
array( 'fas fa-tags' => 'tags (discount,label,price,shopping)' ),
array( 'fas fa-taxi' => 'Taxi (cab,cabbie,car,car service,lyft,machine,transportation,travel,uber,vehicle)' ),
array( 'fas fa-thumbtack' => 'Thumbtack (coordinates,location,marker,pin,thumb-tack)' ),
array( 'fas fa-ticket-alt' => 'Alternate Ticket (movie,pass,support,ticket)' ),
array( 'fas fa-tint' => 'tint (color,drop,droplet,raindrop,waterdrop)' ),
array( 'fas fa-traffic-light' => 'Traffic Light (direction,road,signal,travel)' ),
array( 'fas fa-train' => 'Train (bullet,commute,locomotive,railway,subway)' ),
array( 'fas fa-tram' => 'Tram (crossing,machine,mountains,seasonal,transportation)' ),
array( 'fas fa-tree' => 'Tree (bark,fall,flora,forest,nature,plant,seasonal)' ),
array( 'fas fa-trophy' => 'trophy (achievement,award,cup,game,winner)' ),
array( 'fas fa-truck' => 'truck (cargo,delivery,shipping,vehicle)' ),
array( 'fas fa-tty' => 'TTY (communication,deaf,telephone,teletypewriter,text)' ),
array( 'fas fa-umbrella' => 'Umbrella (protection,rain,storm,wet)' ),
array( 'fas fa-university' => 'University (bank,building,college,higher education - students,institution)' ),
array( 'fas fa-utensil-spoon' => 'Utensil Spoon (cutlery,dining,scoop,silverware,spoon)' ),
array( 'fas fa-utensils' => 'Utensils (cutlery,dining,dinner,eat,food,fork,knife,restaurant)' ),
array( 'fas fa-wheelchair' => 'Wheelchair (accessible,handicap,person)' ),
array( 'fas fa-wifi' => 'WiFi (connection,hotspot,internet,network,wireless)' ),
array( 'fas fa-wine-glass' => 'Wine Glass (alcohol,beverage,cabernet,drink,grapes,merlot,sauvignon)' ),
array( 'fas fa-wrench' => 'Wrench (construction,fix,mechanic,plumbing,settings,spanner,tool,update)' ),
),
'Maritime' => array(
array( 'fas fa-anchor' => 'Anchor (berth,boat,dock,embed,link,maritime,moor,secure)' ),
array( 'fas fa-binoculars' => 'Binoculars (glasses,magnify,scenic,spyglass,view)' ),
array( 'fas fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'far fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'fas fa-dharmachakra' => 'Dharmachakra (buddhism,buddhist,wheel of dharma)' ),
array( 'fas fa-frog' => 'Frog (amphibian,bullfrog,fauna,hop,kermit,kiss,prince,ribbit,toad,wart)' ),
array( 'fas fa-ship' => 'Ship (boat,sea,water)' ),
array( 'fas fa-skull-crossbones' => 'Skull & Crossbones (Dungeons & Dragons,alert,bones,d&d,danger,dead,deadly,death,dnd,fantasy,halloween,holiday,jolly-roger,pirate,poison,skeleton,warning)' ),
array( 'fas fa-swimmer' => 'Swimmer (athlete,head,man,olympics,person,pool,water)' ),
array( 'fas fa-water' => 'Water (lake,liquid,ocean,sea,swim,wet)' ),
array( 'fas fa-wind' => 'Wind (air,blow,breeze,fall,seasonal,weather)' ),
),
'Marketing' => array(
array( 'fas fa-ad' => 'Ad (advertisement,media,newspaper,promotion,publicity)' ),
array( 'fas fa-bullhorn' => 'bullhorn (announcement,broadcast,louder,megaphone,share)' ),
array( 'fas fa-bullseye' => 'Bullseye (archery,goal,objective,target)' ),
array( 'fas fa-comment-dollar' => 'Comment Dollar (bubble,chat,commenting,conversation,feedback,message,money,note,notification,pay,sms,speech,spend,texting,transfer)' ),
array( 'fas fa-comments-dollar' => 'Comments Dollar (bubble,chat,commenting,conversation,feedback,message,money,note,notification,pay,sms,speech,spend,texting,transfer)' ),
array( 'fas fa-envelope-open-text' => 'Envelope Open-text (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-funnel-dollar' => 'Funnel Dollar (filter,money,options,separate,sort)' ),
array( 'fas fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'far fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'fas fa-mail-bulk' => 'Mail Bulk (archive,envelope,letter,post office,postal,postcard,send,stamp,usps)' ),
array( 'fas fa-poll' => 'Poll (results,survey,trend,vote,voting)' ),
array( 'fas fa-poll-h' => 'Poll H (results,survey,trend,vote,voting)' ),
array( 'fas fa-search-dollar' => 'Search Dollar (bigger,enlarge,find,magnify,money,preview,zoom)' ),
array( 'fas fa-search-location' => 'Search Location (bigger,enlarge,find,magnify,preview,zoom)' ),
),
'Mathematics' => array(
array( 'fas fa-calculator' => 'Calculator (abacus,addition,arithmetic,counting,math,multiplication,subtraction)' ),
array( 'fas fa-divide' => 'Divide (arithmetic,calculus,division,math)' ),
array( 'fas fa-equals' => 'Equals (arithmetic,even,match,math)' ),
array( 'fas fa-greater-than' => 'Greater Than (arithmetic,compare,math)' ),
array( 'fas fa-greater-than-equal' => 'Greater Than Equal To (arithmetic,compare,math)' ),
array( 'fas fa-infinity' => 'Infinity (eternity,forever,math)' ),
array( 'fas fa-less-than' => 'Less Than (arithmetic,compare,math)' ),
array( 'fas fa-less-than-equal' => 'Less Than Equal To (arithmetic,compare,math)' ),
array( 'fas fa-minus' => 'minus (collapse,delete,hide,minify,negative,remove,trash)' ),
array( 'fas fa-not-equal' => 'Not Equal (arithmetic,compare,math)' ),
array( 'fas fa-percentage' => 'Percentage (discount,fraction,proportion,rate,ratio)' ),
array( 'fas fa-plus' => 'plus (add,create,expand,new,positive,shape)' ),
array( 'fas fa-square-root-alt' => 'Alternate Square Root (arithmetic,calculus,division,math)' ),
array( 'fas fa-subscript' => 'subscript (edit,font,format,text,type)' ),
array( 'fas fa-superscript' => 'superscript (edit,exponential,font,format,text,type)' ),
array( 'fas fa-times' => 'Times (close,cross,error,exit,incorrect,notice,notification,notify,problem,wrong,x)' ),
array( 'fas fa-wave-square' => 'Square Wave (frequency,pulse,signal)' ),
),
'Medical' => array(
array( 'fas fa-allergies' => 'Allergies (allergy,freckles,hand,hives,pox,skin,spots)' ),
array( 'fas fa-ambulance' => 'ambulance (emergency,emt,er,help,hospital,support,vehicle)' ),
array( 'fas fa-band-aid' => 'Band-Aid (bandage,boo boo,first aid,ouch)' ),
array( 'fas fa-biohazard' => 'Biohazard (danger,dangerous,hazmat,medical,radioactive,toxic,waste,zombie)' ),
array( 'fas fa-bone' => 'Bone (calcium,dog,skeletal,skeleton,tibia)' ),
array( 'fas fa-bong' => 'Bong (aparatus,cannabis,marijuana,pipe,smoke,smoking)' ),
array( 'fas fa-book-medical' => 'Medical Book (diary,documentation,health,history,journal,library,read,record)' ),
array( 'fas fa-brain' => 'Brain (cerebellum,gray matter,intellect,medulla oblongata,mind,noodle,wit)' ),
array( 'fas fa-briefcase-medical' => 'Medical Briefcase (doctor,emt,first aid,health)' ),
array( 'fas fa-burn' => 'Burn (caliente,energy,fire,flame,gas,heat,hot)' ),
array( 'fas fa-cannabis' => 'Cannabis (bud,chronic,drugs,endica,endo,ganja,marijuana,mary jane,pot,reefer,sativa,spliff,weed,whacky-tabacky)' ),
array( 'fas fa-capsules' => 'Capsules (drugs,medicine,pills,prescription)' ),
array( 'fas fa-clinic-medical' => 'Medical Clinic (doctor,general practitioner,hospital,infirmary,medicine,office,outpatient)' ),
array( 'fas fa-comment-medical' => 'Alternate Medical Chat (advice,bubble,chat,commenting,conversation,diagnose,feedback,message,note,notification,prescription,sms,speech,texting)' ),
array( 'fas fa-crutch' => 'Crutch (cane,injury,mobility,wheelchair)' ),
array( 'fas fa-diagnoses' => 'Diagnoses (analyze,detect,diagnosis,examine,medicine)' ),
array( 'fas fa-dna' => 'DNA (double helix,genetic,helix,molecule,protein)' ),
array( 'fas fa-file-medical' => 'Medical File (document,health,history,prescription,record)' ),
array( 'fas fa-file-medical-alt' => 'Alternate Medical File (document,health,history,prescription,record)' ),
array( 'fas fa-file-prescription' => 'File Prescription (document,drugs,medical,medicine,rx)' ),
array( 'fas fa-first-aid' => 'First Aid (emergency,emt,health,medical,rescue)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-heartbeat' => 'Heartbeat (ekg,electrocardiogram,health,lifeline,vital signs)' ),
array( 'fas fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'far fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'fas fa-hospital-alt' => 'Alternate Hospital (building,emergency room,medical center)' ),
array( 'fas fa-hospital-symbol' => 'Hospital Symbol (clinic,emergency,map)' ),
array( 'fas fa-id-card-alt' => 'Alternate Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'fas fa-joint' => 'Joint (blunt,cannabis,doobie,drugs,marijuana,roach,smoke,smoking,spliff)' ),
array( 'fas fa-laptop-medical' => 'Laptop Medical (computer,device,ehr,electronic health records,history)' ),
array( 'fas fa-microscope' => 'Microscope (electron,lens,optics,science,shrink)' ),
array( 'fas fa-mortar-pestle' => 'Mortar Pestle (crush,culinary,grind,medical,mix,pharmacy,prescription,spices)' ),
array( 'fas fa-notes-medical' => 'Medical Notes (clipboard,doctor,ehr,health,history,records)' ),
array( 'fas fa-pager' => 'Pager (beeper,cellphone,communication)' ),
array( 'fas fa-pills' => 'Pills (drugs,medicine,prescription,tablets)' ),
array( 'fas fa-plus' => 'plus (add,create,expand,new,positive,shape)' ),
array( 'fas fa-poop' => 'Poop (crap,poop,shit,smile,turd)' ),
array( 'fas fa-prescription' => 'Prescription (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-prescription-bottle' => 'Prescription Bottle (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-prescription-bottle-alt' => 'Alternate Prescription Bottle (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-procedures' => 'Procedures (EKG,bed,electrocardiogram,health,hospital,life,patient,vital)' ),
array( 'fas fa-radiation' => 'Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-radiation-alt' => 'Alternate Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-smoking' => 'Smoking (cancer,cigarette,nicotine,smoking status,tobacco)' ),
array( 'fas fa-smoking-ban' => 'Smoking Ban (ban,cancel,no smoking,non-smoking)' ),
array( 'fas fa-star-of-life' => 'Star of Life (doctor,emt,first aid,health,medical)' ),
array( 'fas fa-stethoscope' => 'Stethoscope (diagnosis,doctor,general practitioner,hospital,infirmary,medicine,office,outpatient)' ),
array( 'fas fa-syringe' => 'Syringe (doctor,immunizations,medical,needle)' ),
array( 'fas fa-tablets' => 'Tablets (drugs,medicine,pills,prescription)' ),
array( 'fas fa-teeth' => 'Teeth (bite,dental,dentist,gums,mouth,smile,tooth)' ),
array( 'fas fa-teeth-open' => 'Teeth Open (dental,dentist,gums bite,mouth,smile,tooth)' ),
array( 'fas fa-thermometer' => 'Thermometer (mercury,status,temperature)' ),
array( 'fas fa-tooth' => 'Tooth (bicuspid,dental,dentist,molar,mouth,teeth)' ),
array( 'fas fa-user-md' => 'Doctor (job,medical,nurse,occupation,physician,profile,surgeon)' ),
array( 'fas fa-user-nurse' => 'Nurse (doctor,midwife,practitioner,surgeon)' ),
array( 'fas fa-vial' => 'Vial (experiment,lab,sample,science,test,test tube)' ),
array( 'fas fa-vials' => 'Vials (experiment,lab,sample,science,test,test tube)' ),
array( 'fas fa-weight' => 'Weight (health,measurement,scale,weight)' ),
array( 'fas fa-x-ray' => 'X-Ray (health,medical,radiological images,radiology,skeleton)' ),
),
'Moving' => array(
array( 'fas fa-archive' => 'Archive (box,package,save,storage)' ),
array( 'fas fa-box-open' => 'Box Open (archive,container,package,storage,unpack)' ),
array( 'fas fa-couch' => 'Couch (chair,cushion,furniture,relax,sofa)' ),
array( 'fas fa-dolly' => 'Dolly (carry,shipping,transport)' ),
array( 'fas fa-people-carry' => 'People Carry (box,carry,fragile,help,movers,package)' ),
array( 'fas fa-route' => 'Route (directions,navigation,travel)' ),
array( 'fas fa-sign' => 'Sign (directions,real estate,signage,wayfinding)' ),
array( 'fas fa-suitcase' => 'Suitcase (baggage,luggage,move,suitcase,travel,trip)' ),
array( 'fas fa-tape' => 'Tape (design,package,sticky)' ),
array( 'fas fa-truck-loading' => 'Truck Loading (box,cargo,delivery,inventory,moving,rental,vehicle)' ),
array( 'fas fa-truck-moving' => 'Truck Moving (cargo,inventory,rental,vehicle)' ),
array( 'fas fa-wine-glass' => 'Wine Glass (alcohol,beverage,cabernet,drink,grapes,merlot,sauvignon)' ),
),
'Music' => array(
array( 'fas fa-drum' => 'Drum (instrument,music,percussion,snare,sound)' ),
array( 'fas fa-drum-steelpan' => 'Drum Steelpan (calypso,instrument,music,percussion,reggae,snare,sound,steel,tropical)' ),
array( 'fas fa-file-audio' => 'Audio File (document,mp3,music,page,play,sound)' ),
array( 'far fa-file-audio' => 'Audio File (document,mp3,music,page,play,sound)' ),
array( 'fas fa-guitar' => 'Guitar (acoustic,instrument,music,rock,rock and roll,song,strings)' ),
array( 'fas fa-headphones' => 'headphones (audio,listen,music,sound,speaker)' ),
array( 'fas fa-headphones-alt' => 'Alternate Headphones (audio,listen,music,sound,speaker)' ),
array( 'fas fa-microphone' => 'microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt' => 'Alternate Microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt-slash' => 'Alternate Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-slash' => 'Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-music' => 'Music (lyrics,melody,note,sing,sound)' ),
array( 'fab fa-napster' => 'Napster' ),
array( 'fas fa-play' => 'play (audio,music,playing,sound,start,video)' ),
array( 'fas fa-record-vinyl' => 'Record Vinyl (LP,album,analog,music,phonograph,sound)' ),
array( 'fas fa-sliders-h' => 'Horizontal Sliders (adjust,settings,sliders,toggle)' ),
array( 'fab fa-soundcloud' => 'SoundCloud' ),
array( 'fab fa-spotify' => 'Spotify' ),
array( 'fas fa-volume-down' => 'Volume Down (audio,lower,music,quieter,sound,speaker)' ),
array( 'fas fa-volume-mute' => 'Volume Mute (audio,music,quiet,sound,speaker)' ),
array( 'fas fa-volume-off' => 'Volume Off (audio,ban,music,mute,quiet,silent,sound)' ),
array( 'fas fa-volume-up' => 'Volume Up (audio,higher,louder,music,sound,speaker)' ),
),
'Objects' => array(
array( 'fas fa-ambulance' => 'ambulance (emergency,emt,er,help,hospital,support,vehicle)' ),
array( 'fas fa-anchor' => 'Anchor (berth,boat,dock,embed,link,maritime,moor,secure)' ),
array( 'fas fa-archive' => 'Archive (box,package,save,storage)' ),
array( 'fas fa-award' => 'Award (honor,praise,prize,recognition,ribbon,trophy)' ),
array( 'fas fa-baby-carriage' => 'Baby Carriage (buggy,carrier,infant,push,stroller,transportation,walk,wheels)' ),
array( 'fas fa-balance-scale' => 'Balance Scale (balanced,justice,legal,measure,weight)' ),
array( 'fas fa-balance-scale-left' => 'Balance Scale (Left-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-balance-scale-right' => 'Balance Scale (Right-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-bath' => 'Bath (clean,shower,tub,wash)' ),
array( 'fas fa-bed' => 'Bed (lodging,rest,sleep,travel)' ),
array( 'fas fa-beer' => 'beer (alcohol,ale,bar,beverage,brewery,drink,lager,liquor,mug,stein)' ),
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bicycle' => 'Bicycle (bike,gears,pedal,transportation,vehicle)' ),
array( 'fas fa-binoculars' => 'Binoculars (glasses,magnify,scenic,spyglass,view)' ),
array( 'fas fa-birthday-cake' => 'Birthday Cake (anniversary,bakery,candles,celebration,dessert,frosting,holiday,party,pastry)' ),
array( 'fas fa-blender' => 'Blender (cocktail,milkshake,mixer,puree,smoothie)' ),
array( 'fas fa-bomb' => 'Bomb (error,explode,fuse,grenade,warning)' ),
array( 'fas fa-book' => 'book (diary,documentation,journal,library,read)' ),
array( 'fas fa-book-dead' => 'Book of the Dead (Dungeons & Dragons,crossbones,d&d,dark arts,death,dnd,documentation,evil,fantasy,halloween,holiday,necronomicon,read,skull,spell)' ),
array( 'fas fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'far fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'fas fa-briefcase' => 'Briefcase (bag,business,luggage,office,work)' ),
array( 'fas fa-broadcast-tower' => 'Broadcast Tower (airwaves,antenna,radio,reception,waves)' ),
array( 'fas fa-bug' => 'Bug (beetle,error,insect,report)' ),
array( 'fas fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'far fa-building' => 'Building (apartment,business,city,company,office,work)' ),
array( 'fas fa-bullhorn' => 'bullhorn (announcement,broadcast,louder,megaphone,share)' ),
array( 'fas fa-bullseye' => 'Bullseye (archery,goal,objective,target)' ),
array( 'fas fa-bus' => 'Bus (public transportation,transportation,travel,vehicle)' ),
array( 'fas fa-calculator' => 'Calculator (abacus,addition,arithmetic,counting,math,multiplication,subtraction)' ),
array( 'fas fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'far fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'far fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'fas fa-camera' => 'camera (image,lens,photo,picture,record,shutter,video)' ),
array( 'fas fa-camera-retro' => 'Retro Camera (image,lens,photo,picture,record,shutter,video)' ),
array( 'fas fa-candy-cane' => 'Candy Cane (candy,christmas,holiday,mint,peppermint,striped,xmas)' ),
array( 'fas fa-car' => 'Car (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-carrot' => 'Carrot (bugs bunny,orange,vegan,vegetable)' ),
array( 'fas fa-church' => 'Church (building,cathedral,chapel,community,religion)' ),
array( 'fas fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'far fa-clipboard' => 'Clipboard (copy,notes,paste,record)' ),
array( 'fas fa-cloud' => 'Cloud (atmosphere,fog,overcast,save,upload,weather)' ),
array( 'fas fa-coffee' => 'Coffee (beverage,breakfast,cafe,drink,fall,morning,mug,seasonal,tea)' ),
array( 'fas fa-cog' => 'cog (gear,mechanical,settings,sprocket,wheel)' ),
array( 'fas fa-cogs' => 'cogs (gears,mechanical,settings,sprocket,wheel)' ),
array( 'fas fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'far fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'fas fa-cookie' => 'Cookie (baked good,chips,chocolate,eat,snack,sweet,treat)' ),
array( 'fas fa-cookie-bite' => 'Cookie Bite (baked good,bitten,chips,chocolate,eat,snack,sweet,treat)' ),
array( 'fas fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'far fa-copy' => 'Copy (clone,duplicate,file,files-o,paper,paste)' ),
array( 'fas fa-cube' => 'Cube (3d,block,dice,package,square,tesseract)' ),
array( 'fas fa-cubes' => 'Cubes (3d,block,dice,package,pyramid,square,stack,tesseract)' ),
array( 'fas fa-cut' => 'Cut (clip,scissors,snip)' ),
array( 'fas fa-dice' => 'Dice (chance,gambling,game,roll)' ),
array( 'fas fa-dice-d20' => 'Dice D20 (Dungeons & Dragons,chance,d&d,dnd,fantasy,gambling,game,roll)' ),
array( 'fas fa-dice-d6' => 'Dice D6 (Dungeons & Dragons,chance,d&d,dnd,fantasy,gambling,game,roll)' ),
array( 'fas fa-dice-five' => 'Dice Five (chance,gambling,game,roll)' ),
array( 'fas fa-dice-four' => 'Dice Four (chance,gambling,game,roll)' ),
array( 'fas fa-dice-one' => 'Dice One (chance,gambling,game,roll)' ),
array( 'fas fa-dice-six' => 'Dice Six (chance,gambling,game,roll)' ),
array( 'fas fa-dice-three' => 'Dice Three (chance,gambling,game,roll)' ),
array( 'fas fa-dice-two' => 'Dice Two (chance,gambling,game,roll)' ),
array( 'fas fa-digital-tachograph' => 'Digital Tachograph (data,distance,speed,tachometer)' ),
array( 'fas fa-door-closed' => 'Door Closed (enter,exit,locked)' ),
array( 'fas fa-door-open' => 'Door Open (enter,exit,welcome)' ),
array( 'fas fa-drum' => 'Drum (instrument,music,percussion,snare,sound)' ),
array( 'fas fa-drum-steelpan' => 'Drum Steelpan (calypso,instrument,music,percussion,reggae,snare,sound,steel,tropical)' ),
array( 'fas fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-eraser' => 'eraser (art,delete,remove,rubber)' ),
array( 'fas fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'far fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'fas fa-eye-dropper' => 'Eye Dropper (beaker,clone,color,copy,eyedropper,pipette)' ),
array( 'fas fa-fax' => 'Fax (business,communicate,copy,facsimile,send)' ),
array( 'fas fa-feather' => 'Feather (bird,light,plucked,quill,write)' ),
array( 'fas fa-feather-alt' => 'Alternate Feather (bird,light,plucked,quill,write)' ),
array( 'fas fa-fighter-jet' => 'fighter-jet (airplane,fast,fly,goose,maverick,plane,quick,top gun,transportation,travel)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-file-prescription' => 'File Prescription (document,drugs,medical,medicine,rx)' ),
array( 'fas fa-film' => 'Film (cinema,movie,strip,video)' ),
array( 'fas fa-fire' => 'fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-fire-alt' => 'Alternate Fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-fire-extinguisher' => 'fire-extinguisher (burn,caliente,fire fighter,flame,heat,hot,rescue)' ),
array( 'fas fa-flag' => 'flag (country,notice,notification,notify,pole,report,symbol)' ),
array( 'far fa-flag' => 'flag (country,notice,notification,notify,pole,report,symbol)' ),
array( 'fas fa-flag-checkered' => 'flag-checkered (notice,notification,notify,pole,racing,report,symbol)' ),
array( 'fas fa-flask' => 'Flask (beaker,experimental,labs,science)' ),
array( 'fas fa-futbol' => 'Futbol (ball,football,mls,soccer)' ),
array( 'far fa-futbol' => 'Futbol (ball,football,mls,soccer)' ),
array( 'fas fa-gamepad' => 'Gamepad (arcade,controller,d-pad,joystick,video,video game)' ),
array( 'fas fa-gavel' => 'Gavel (hammer,judge,law,lawyer,opinion)' ),
array( 'fas fa-gem' => 'Gem (diamond,jewelry,sapphire,stone,treasure)' ),
array( 'far fa-gem' => 'Gem (diamond,jewelry,sapphire,stone,treasure)' ),
array( 'fas fa-gift' => 'gift (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-gifts' => 'Gifts (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-glass-cheers' => 'Glass Cheers (alcohol,bar,beverage,celebration,champagne,clink,drink,holiday,new year\'s eve,party,toast)' ),
array( 'fas fa-glass-martini' => 'Martini Glass (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-glass-whiskey' => 'Glass Whiskey (alcohol,bar,beverage,bourbon,drink,liquor,neat,rye,scotch,whisky)' ),
array( 'fas fa-glasses' => 'Glasses (hipster,nerd,reading,sight,spectacles,vision)' ),
array( 'fas fa-globe' => 'Globe (all,coordinates,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-graduation-cap' => 'Graduation Cap (ceremony,college,graduate,learning,school,student)' ),
array( 'fas fa-guitar' => 'Guitar (acoustic,instrument,music,rock,rock and roll,song,strings)' ),
array( 'fas fa-hat-wizard' => 'Wizard\'s Hat (Dungeons & Dragons,accessory,buckle,clothing,d&d,dnd,fantasy,halloween,head,holiday,mage,magic,pointy,witch)' ),
array( 'fas fa-hdd' => 'HDD (cpu,hard drive,harddrive,machine,save,storage)' ),
array( 'far fa-hdd' => 'HDD (cpu,hard drive,harddrive,machine,save,storage)' ),
array( 'fas fa-headphones' => 'headphones (audio,listen,music,sound,speaker)' ),
array( 'fas fa-headphones-alt' => 'Alternate Headphones (audio,listen,music,sound,speaker)' ),
array( 'fas fa-headset' => 'Headset (audio,gamer,gaming,listen,live chat,microphone,shot caller,sound,support,telemarketer)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-heart-broken' => 'Heart Broken (breakup,crushed,dislike,dumped,grief,love,lovesick,relationship,sad)' ),
array( 'fas fa-helicopter' => 'Helicopter (airwolf,apache,chopper,flight,fly,travel)' ),
array( 'fas fa-highlighter' => 'Highlighter (edit,marker,sharpie,update,write)' ),
array( 'fas fa-holly-berry' => 'Holly Berry (catwoman,christmas,decoration,flora,halle,holiday,ororo munroe,plant,storm,xmas)' ),
array( 'fas fa-home' => 'home (abode,building,house,main)' ),
array( 'fas fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'far fa-hospital' => 'hospital (building,emergency room,medical center)' ),
array( 'fas fa-hourglass' => 'Hourglass (hour,minute,sand,stopwatch,time)' ),
array( 'far fa-hourglass' => 'Hourglass (hour,minute,sand,stopwatch,time)' ),
array( 'fas fa-igloo' => 'Igloo (dome,dwelling,eskimo,home,house,ice,snow)' ),
array( 'fas fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'far fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'fas fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'far fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'fas fa-industry' => 'Industry (building,factory,industrial,manufacturing,mill,warehouse)' ),
array( 'fas fa-key' => 'key (lock,password,private,secret,unlock)' ),
array( 'fas fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'far fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'fas fa-laptop' => 'Laptop (computer,cpu,dell,demo,device,mac,macbook,machine,pc)' ),
array( 'fas fa-leaf' => 'leaf (eco,flora,nature,plant,vegan)' ),
array( 'fas fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'far fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'fas fa-life-ring' => 'Life Ring (coast guard,help,overboard,save,support)' ),
array( 'far fa-life-ring' => 'Life Ring (coast guard,help,overboard,save,support)' ),
array( 'fas fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'far fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'fas fa-lock' => 'lock (admin,lock,open,password,private,protect,security)' ),
array( 'fas fa-lock-open' => 'Lock Open (admin,lock,open,password,private,protect,security)' ),
array( 'fas fa-magic' => 'magic (autocomplete,automatic,mage,magic,spell,wand,witch,wizard)' ),
array( 'fas fa-magnet' => 'magnet (Attract,lodestone,tool)' ),
array( 'fas fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'far fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marker' => 'map-marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marker-alt' => 'Alternate Map Marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-pin' => 'Map Pin (address,agree,coordinates,destination,gps,localize,location,map,marker,navigation,pin,place,position,travel)' ),
array( 'fas fa-map-signs' => 'Map Signs (directions,directory,map,signage,wayfinding)' ),
array( 'fas fa-marker' => 'Marker (design,edit,sharpie,update,write)' ),
array( 'fas fa-medal' => 'Medal (award,ribbon,star,trophy)' ),
array( 'fas fa-medkit' => 'medkit (first aid,firstaid,health,help,support)' ),
array( 'fas fa-memory' => 'Memory (DIMM,RAM,hardware,storage,technology)' ),
array( 'fas fa-microchip' => 'Microchip (cpu,hardware,processor,technology)' ),
array( 'fas fa-microphone' => 'microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt' => 'Alternate Microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-mitten' => 'Mitten (clothing,cold,glove,hands,knitted,seasonal,warmth)' ),
array( 'fas fa-mobile' => 'Mobile Phone (apple,call,cell phone,cellphone,device,iphone,number,screen,telephone)' ),
array( 'fas fa-mobile-alt' => 'Alternate Mobile (apple,call,cell phone,cellphone,device,iphone,number,screen,telephone)' ),
array( 'fas fa-money-bill' => 'Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'far fa-money-bill-alt' => 'Alternate Money Bill (buy,cash,checkout,money,payment,price,purchase)' ),
array( 'fas fa-money-check' => 'Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fas fa-money-check-alt' => 'Alternate Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fas fa-moon' => 'Moon (contrast,crescent,dark,lunar,night)' ),
array( 'far fa-moon' => 'Moon (contrast,crescent,dark,lunar,night)' ),
array( 'fas fa-motorcycle' => 'Motorcycle (bike,machine,transportation,vehicle)' ),
array( 'fas fa-mug-hot' => 'Mug Hot (caliente,cocoa,coffee,cup,drink,holiday,hot chocolate,steam,tea,warmth)' ),
array( 'fas fa-newspaper' => 'Newspaper (article,editorial,headline,journal,journalism,news,press)' ),
array( 'far fa-newspaper' => 'Newspaper (article,editorial,headline,journal,journalism,news,press)' ),
array( 'fas fa-paint-brush' => 'Paint Brush (acrylic,art,brush,color,fill,paint,pigment,watercolor)' ),
array( 'fas fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'far fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'fas fa-paperclip' => 'Paperclip (attach,attachment,connect,link)' ),
array( 'fas fa-paste' => 'Paste (clipboard,copy,document,paper)' ),
array( 'fas fa-paw' => 'Paw (animal,cat,dog,pet,print)' ),
array( 'fas fa-pen' => 'Pen (design,edit,update,write)' ),
array( 'fas fa-pen-alt' => 'Alternate Pen (design,edit,update,write)' ),
array( 'fas fa-pen-fancy' => 'Pen Fancy (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pen-nib' => 'Pen Nib (design,edit,fountain pen,update,write)' ),
array( 'fas fa-pencil-alt' => 'Alternate Pencil (design,edit,pencil,update,write)' ),
array( 'fas fa-phone' => 'Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-alt' => 'Alternate Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-plane' => 'plane (airplane,destination,fly,location,mode,travel,trip)' ),
array( 'fas fa-plug' => 'Plug (connect,electric,online,power)' ),
array( 'fas fa-print' => 'print (business,copy,document,office,paper)' ),
array( 'fas fa-puzzle-piece' => 'Puzzle Piece (add-on,addon,game,section)' ),
array( 'fas fa-ring' => 'Ring (Dungeons & Dragons,Gollum,band,binding,d&d,dnd,engagement,fantasy,gold,jewelry,marriage,precious)' ),
array( 'fas fa-road' => 'road (highway,map,pavement,route,street,travel)' ),
array( 'fas fa-rocket' => 'rocket (aircraft,app,jet,launch,nasa,space)' ),
array( 'fas fa-ruler-combined' => 'Ruler Combined (design,draft,length,measure,planning)' ),
array( 'fas fa-ruler-horizontal' => 'Ruler Horizontal (design,draft,length,measure,planning)' ),
array( 'fas fa-ruler-vertical' => 'Ruler Vertical (design,draft,length,measure,planning)' ),
array( 'fas fa-satellite' => 'Satellite (communications,hardware,orbit,space)' ),
array( 'fas fa-satellite-dish' => 'Satellite Dish (SETI,communications,hardware,receiver,saucer,signal)' ),
array( 'fas fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'far fa-save' => 'Save (disk,download,floppy,floppy-o)' ),
array( 'fas fa-school' => 'School (building,education,learn,student,teacher)' ),
array( 'fas fa-screwdriver' => 'Screwdriver (admin,fix,mechanic,repair,settings,tool)' ),
array( 'fas fa-scroll' => 'Scroll (Dungeons & Dragons,announcement,d&d,dnd,fantasy,paper,script)' ),
array( 'fas fa-sd-card' => 'Sd Card (image,memory,photo,save)' ),
array( 'fas fa-search' => 'Search (bigger,enlarge,find,magnify,preview,zoom)' ),
array( 'fas fa-shield-alt' => 'Alternate Shield (achievement,award,block,defend,security,winner)' ),
array( 'fas fa-shopping-bag' => 'Shopping Bag (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-basket' => 'Shopping Basket (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-cart' => 'shopping-cart (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shower' => 'Shower (bath,clean,faucet,water)' ),
array( 'fas fa-sim-card' => 'SIM Card (hard drive,hardware,portable,storage,technology,tiny)' ),
array( 'fas fa-skull-crossbones' => 'Skull & Crossbones (Dungeons & Dragons,alert,bones,d&d,danger,dead,deadly,death,dnd,fantasy,halloween,holiday,jolly-roger,pirate,poison,skeleton,warning)' ),
array( 'fas fa-sleigh' => 'Sleigh (christmas,claus,fly,holiday,santa,sled,snow,xmas)' ),
array( 'fas fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'far fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'fas fa-snowplow' => 'Snowplow (clean up,cold,road,storm,winter)' ),
array( 'fas fa-space-shuttle' => 'Space Shuttle (astronaut,machine,nasa,rocket,transportation)' ),
array( 'fas fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'far fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'fas fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
array( 'far fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
array( 'fas fa-stopwatch' => 'Stopwatch (clock,reminder,time)' ),
array( 'fas fa-stroopwafel' => 'Stroopwafel (caramel,cookie,dessert,sweets,waffle)' ),
array( 'fas fa-subway' => 'Subway (machine,railway,train,transportation,vehicle)' ),
array( 'fas fa-suitcase' => 'Suitcase (baggage,luggage,move,suitcase,travel,trip)' ),
array( 'fas fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'far fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'fas fa-tablet' => 'tablet (apple,device,ipad,kindle,screen)' ),
array( 'fas fa-tablet-alt' => 'Alternate Tablet (apple,device,ipad,kindle,screen)' ),
array( 'fas fa-tachometer-alt' => 'Alternate Tachometer (dashboard,fast,odometer,speed,speedometer)' ),
array( 'fas fa-tag' => 'tag (discount,label,price,shopping)' ),
array( 'fas fa-tags' => 'tags (discount,label,price,shopping)' ),
array( 'fas fa-taxi' => 'Taxi (cab,cabbie,car,car service,lyft,machine,transportation,travel,uber,vehicle)' ),
array( 'fas fa-thumbtack' => 'Thumbtack (coordinates,location,marker,pin,thumb-tack)' ),
array( 'fas fa-ticket-alt' => 'Alternate Ticket (movie,pass,support,ticket)' ),
array( 'fas fa-toilet' => 'Toilet (bathroom,flush,john,loo,pee,plumbing,poop,porcelain,potty,restroom,throne,washroom,waste,wc)' ),
array( 'fas fa-toolbox' => 'Toolbox (admin,container,fix,repair,settings,tools)' ),
array( 'fas fa-tools' => 'Tools (admin,fix,repair,screwdriver,settings,tools,wrench)' ),
array( 'fas fa-train' => 'Train (bullet,commute,locomotive,railway,subway)' ),
array( 'fas fa-tram' => 'Tram (crossing,machine,mountains,seasonal,transportation)' ),
array( 'fas fa-trash' => 'Trash (delete,garbage,hide,remove)' ),
array( 'fas fa-trash-alt' => 'Alternate Trash (delete,garbage,hide,remove,trash-o)' ),
array( 'far fa-trash-alt' => 'Alternate Trash (delete,garbage,hide,remove,trash-o)' ),
array( 'fas fa-tree' => 'Tree (bark,fall,flora,forest,nature,plant,seasonal)' ),
array( 'fas fa-trophy' => 'trophy (achievement,award,cup,game,winner)' ),
array( 'fas fa-truck' => 'truck (cargo,delivery,shipping,vehicle)' ),
array( 'fas fa-tv' => 'Television (computer,display,monitor,television)' ),
array( 'fas fa-umbrella' => 'Umbrella (protection,rain,storm,wet)' ),
array( 'fas fa-university' => 'University (bank,building,college,higher education - students,institution)' ),
array( 'fas fa-unlock' => 'unlock (admin,lock,password,private,protect)' ),
array( 'fas fa-unlock-alt' => 'Alternate Unlock (admin,lock,password,private,protect)' ),
array( 'fas fa-utensil-spoon' => 'Utensil Spoon (cutlery,dining,scoop,silverware,spoon)' ),
array( 'fas fa-utensils' => 'Utensils (cutlery,dining,dinner,eat,food,fork,knife,restaurant)' ),
array( 'fas fa-wallet' => 'Wallet (billfold,cash,currency,money)' ),
array( 'fas fa-weight' => 'Weight (health,measurement,scale,weight)' ),
array( 'fas fa-wheelchair' => 'Wheelchair (accessible,handicap,person)' ),
array( 'fas fa-wine-glass' => 'Wine Glass (alcohol,beverage,cabernet,drink,grapes,merlot,sauvignon)' ),
array( 'fas fa-wrench' => 'Wrench (construction,fix,mechanic,plumbing,settings,spanner,tool,update)' ),
),
'Payments & Shopping' => array(
array( 'fab fa-alipay' => 'Alipay' ),
array( 'fab fa-amazon-pay' => 'Amazon Pay' ),
array( 'fab fa-apple-pay' => 'Apple Pay' ),
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fab fa-bitcoin' => 'Bitcoin' ),
array( 'fas fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'far fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'fab fa-btc' => 'BTC' ),
array( 'fas fa-bullhorn' => 'bullhorn (announcement,broadcast,louder,megaphone,share)' ),
array( 'fas fa-camera' => 'camera (image,lens,photo,picture,record,shutter,video)' ),
array( 'fas fa-camera-retro' => 'Retro Camera (image,lens,photo,picture,record,shutter,video)' ),
array( 'fas fa-cart-arrow-down' => 'Shopping Cart Arrow Down (download,save,shopping)' ),
array( 'fas fa-cart-plus' => 'Add to Shopping Cart (add,create,new,positive,shopping)' ),
array( 'fab fa-cc-amazon-pay' => 'Amazon Pay Credit Card' ),
array( 'fab fa-cc-amex' => 'American Express Credit Card (amex)' ),
array( 'fab fa-cc-apple-pay' => 'Apple Pay Credit Card' ),
array( 'fab fa-cc-diners-club' => 'Diner\'s Club Credit Card' ),
array( 'fab fa-cc-discover' => 'Discover Credit Card' ),
array( 'fab fa-cc-jcb' => 'JCB Credit Card' ),
array( 'fab fa-cc-mastercard' => 'MasterCard Credit Card' ),
array( 'fab fa-cc-paypal' => 'Paypal Credit Card' ),
array( 'fab fa-cc-stripe' => 'Stripe Credit Card' ),
array( 'fab fa-cc-visa' => 'Visa Credit Card' ),
array( 'fas fa-certificate' => 'certificate (badge,star,verified)' ),
array( 'fas fa-credit-card' => 'Credit Card (buy,checkout,credit-card-alt,debit,money,payment,purchase)' ),
array( 'far fa-credit-card' => 'Credit Card (buy,checkout,credit-card-alt,debit,money,payment,purchase)' ),
array( 'fab fa-ethereum' => 'Ethereum' ),
array( 'fas fa-gem' => 'Gem (diamond,jewelry,sapphire,stone,treasure)' ),
array( 'far fa-gem' => 'Gem (diamond,jewelry,sapphire,stone,treasure)' ),
array( 'fas fa-gift' => 'gift (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fab fa-google-wallet' => 'Google Wallet' ),
array( 'fas fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'far fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-key' => 'key (lock,password,private,secret,unlock)' ),
array( 'fas fa-money-check' => 'Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fas fa-money-check-alt' => 'Alternate Money Check (bank check,buy,checkout,cheque,money,payment,price,purchase)' ),
array( 'fab fa-paypal' => 'Paypal' ),
array( 'fas fa-receipt' => 'Receipt (check,invoice,money,pay,table)' ),
array( 'fas fa-shopping-bag' => 'Shopping Bag (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-basket' => 'Shopping Basket (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-cart' => 'shopping-cart (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'far fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'fab fa-stripe' => 'Stripe' ),
array( 'fab fa-stripe-s' => 'Stripe S' ),
array( 'fas fa-tag' => 'tag (discount,label,price,shopping)' ),
array( 'fas fa-tags' => 'tags (discount,label,price,shopping)' ),
array( 'fas fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'far fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'fas fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'far fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'fas fa-trophy' => 'trophy (achievement,award,cup,game,winner)' ),
),
'Pharmacy' => array(
array( 'fas fa-band-aid' => 'Band-Aid (bandage,boo boo,first aid,ouch)' ),
array( 'fas fa-book-medical' => 'Medical Book (diary,documentation,health,history,journal,library,read,record)' ),
array( 'fas fa-cannabis' => 'Cannabis (bud,chronic,drugs,endica,endo,ganja,marijuana,mary jane,pot,reefer,sativa,spliff,weed,whacky-tabacky)' ),
array( 'fas fa-capsules' => 'Capsules (drugs,medicine,pills,prescription)' ),
array( 'fas fa-clinic-medical' => 'Medical Clinic (doctor,general practitioner,hospital,infirmary,medicine,office,outpatient)' ),
array( 'fas fa-eye-dropper' => 'Eye Dropper (beaker,clone,color,copy,eyedropper,pipette)' ),
array( 'fas fa-file-medical' => 'Medical File (document,health,history,prescription,record)' ),
array( 'fas fa-file-prescription' => 'File Prescription (document,drugs,medical,medicine,rx)' ),
array( 'fas fa-first-aid' => 'First Aid (emergency,emt,health,medical,rescue)' ),
array( 'fas fa-flask' => 'Flask (beaker,experimental,labs,science)' ),
array( 'fas fa-history' => 'History (Rewind,clock,reverse,time,time machine)' ),
array( 'fas fa-joint' => 'Joint (blunt,cannabis,doobie,drugs,marijuana,roach,smoke,smoking,spliff)' ),
array( 'fas fa-laptop-medical' => 'Laptop Medical (computer,device,ehr,electronic health records,history)' ),
array( 'fas fa-mortar-pestle' => 'Mortar Pestle (crush,culinary,grind,medical,mix,pharmacy,prescription,spices)' ),
array( 'fas fa-notes-medical' => 'Medical Notes (clipboard,doctor,ehr,health,history,records)' ),
array( 'fas fa-pills' => 'Pills (drugs,medicine,prescription,tablets)' ),
array( 'fas fa-prescription' => 'Prescription (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-prescription-bottle' => 'Prescription Bottle (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-prescription-bottle-alt' => 'Alternate Prescription Bottle (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-receipt' => 'Receipt (check,invoice,money,pay,table)' ),
array( 'fas fa-skull-crossbones' => 'Skull & Crossbones (Dungeons & Dragons,alert,bones,d&d,danger,dead,deadly,death,dnd,fantasy,halloween,holiday,jolly-roger,pirate,poison,skeleton,warning)' ),
array( 'fas fa-syringe' => 'Syringe (doctor,immunizations,medical,needle)' ),
array( 'fas fa-tablets' => 'Tablets (drugs,medicine,pills,prescription)' ),
array( 'fas fa-thermometer' => 'Thermometer (mercury,status,temperature)' ),
array( 'fas fa-vial' => 'Vial (experiment,lab,sample,science,test,test tube)' ),
array( 'fas fa-vials' => 'Vials (experiment,lab,sample,science,test,test tube)' ),
),
'Political' => array(
array( 'fas fa-award' => 'Award (honor,praise,prize,recognition,ribbon,trophy)' ),
array( 'fas fa-balance-scale' => 'Balance Scale (balanced,justice,legal,measure,weight)' ),
array( 'fas fa-balance-scale-left' => 'Balance Scale (Left-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-balance-scale-right' => 'Balance Scale (Right-Weighted) (justice,legal,measure,unbalanced,weight)' ),
array( 'fas fa-bullhorn' => 'bullhorn (announcement,broadcast,louder,megaphone,share)' ),
array( 'fas fa-check-double' => 'Double Check (accept,agree,checkmark,confirm,correct,done,notice,notification,notify,ok,select,success,tick,todo)' ),
array( 'fas fa-democrat' => 'Democrat (american,democratic party,donkey,election,left,left-wing,liberal,politics,usa)' ),
array( 'fas fa-donate' => 'Donate (contribute,generosity,gift,give)' ),
array( 'fas fa-dove' => 'Dove (bird,fauna,flying,peace,war)' ),
array( 'fas fa-fist-raised' => 'Raised Fist (Dungeons & Dragons,d&d,dnd,fantasy,hand,ki,monk,resist,strength,unarmed combat)' ),
array( 'fas fa-flag-usa' => 'United States of America Flag (betsy ross,country,old glory,stars,stripes,symbol)' ),
array( 'fas fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'far fa-handshake' => 'Handshake (agreement,greeting,meeting,partnership)' ),
array( 'fas fa-person-booth' => 'Person Entering Booth (changing,changing room,election,human,person,vote,voting)' ),
array( 'fas fa-piggy-bank' => 'Piggy Bank (bank,save,savings)' ),
array( 'fas fa-republican' => 'Republican (american,conservative,election,elephant,politics,republican party,right,right-wing,usa)' ),
array( 'fas fa-vote-yea' => 'Vote Yea (accept,cast,election,politics,positive,yes)' ),
),
'Religion' => array(
array( 'fas fa-ankh' => 'Ankh (amulet,copper,coptic christianity,copts,crux ansata,egypt,venus)' ),
array( 'fas fa-atom' => 'Atom (atheism,chemistry,ion,nuclear,science)' ),
array( 'fas fa-bible' => 'Bible (book,catholicism,christianity,god,holy)' ),
array( 'fas fa-church' => 'Church (building,cathedral,chapel,community,religion)' ),
array( 'fas fa-cross' => 'Cross (catholicism,christianity,church,jesus)' ),
array( 'fas fa-dharmachakra' => 'Dharmachakra (buddhism,buddhist,wheel of dharma)' ),
array( 'fas fa-dove' => 'Dove (bird,fauna,flying,peace,war)' ),
array( 'fas fa-gopuram' => 'Gopuram (building,entrance,hinduism,temple,tower)' ),
array( 'fas fa-hamsa' => 'Hamsa (amulet,christianity,islam,jewish,judaism,muslim,protection)' ),
array( 'fas fa-hanukiah' => 'Hanukiah (candle,hanukkah,jewish,judaism,light)' ),
array( 'fas fa-haykal' => 'Haykal (bahai,bahá\'í,star)' ),
array( 'fas fa-jedi' => 'Jedi (crest,force,sith,skywalker,star wars,yoda)' ),
array( 'fas fa-journal-whills' => 'Journal of the Whills (book,force,jedi,sith,star wars,yoda)' ),
array( 'fas fa-kaaba' => 'Kaaba (building,cube,islam,muslim)' ),
array( 'fas fa-khanda' => 'Khanda (chakkar,sikh,sikhism,sword)' ),
array( 'fas fa-menorah' => 'Menorah (candle,hanukkah,jewish,judaism,light)' ),
array( 'fas fa-mosque' => 'Mosque (building,islam,landmark,muslim)' ),
array( 'fas fa-om' => 'Om (buddhism,hinduism,jainism,mantra)' ),
array( 'fas fa-pastafarianism' => 'Pastafarianism (agnosticism,atheism,flying spaghetti monster,fsm)' ),
array( 'fas fa-peace' => 'Peace (serenity,tranquility,truce,war)' ),
array( 'fas fa-place-of-worship' => 'Place of Worship (building,church,holy,mosque,synagogue)' ),
array( 'fas fa-pray' => 'Pray (kneel,preach,religion,worship)' ),
array( 'fas fa-praying-hands' => 'Praying Hands (kneel,preach,religion,worship)' ),
array( 'fas fa-quran' => 'Quran (book,islam,muslim,religion)' ),
array( 'fas fa-star-and-crescent' => 'Star and Crescent (islam,muslim,religion)' ),
array( 'fas fa-star-of-david' => 'Star of David (jewish,judaism,religion)' ),
array( 'fas fa-synagogue' => 'Synagogue (building,jewish,judaism,religion,star of david,temple)' ),
array( 'fas fa-torah' => 'Torah (book,jewish,judaism,religion,scroll)' ),
array( 'fas fa-torii-gate' => 'Torii Gate (building,shintoism)' ),
array( 'fas fa-vihara' => 'Vihara (buddhism,buddhist,building,monastery)' ),
array( 'fas fa-yin-yang' => 'Yin Yang (daoism,opposites,taoism)' ),
),
'Science' => array(
array( 'fas fa-atom' => 'Atom (atheism,chemistry,ion,nuclear,science)' ),
array( 'fas fa-biohazard' => 'Biohazard (danger,dangerous,hazmat,medical,radioactive,toxic,waste,zombie)' ),
array( 'fas fa-brain' => 'Brain (cerebellum,gray matter,intellect,medulla oblongata,mind,noodle,wit)' ),
array( 'fas fa-burn' => 'Burn (caliente,energy,fire,flame,gas,heat,hot)' ),
array( 'fas fa-capsules' => 'Capsules (drugs,medicine,pills,prescription)' ),
array( 'fas fa-clipboard-check' => 'Clipboard with Check (accept,agree,confirm,done,ok,select,success,tick,todo,yes)' ),
array( 'fas fa-dna' => 'DNA (double helix,genetic,helix,molecule,protein)' ),
array( 'fas fa-eye-dropper' => 'Eye Dropper (beaker,clone,color,copy,eyedropper,pipette)' ),
array( 'fas fa-filter' => 'Filter (funnel,options,separate,sort)' ),
array( 'fas fa-fire' => 'fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-fire-alt' => 'Alternate Fire (burn,caliente,flame,heat,hot,popular)' ),
array( 'fas fa-flask' => 'Flask (beaker,experimental,labs,science)' ),
array( 'fas fa-frog' => 'Frog (amphibian,bullfrog,fauna,hop,kermit,kiss,prince,ribbit,toad,wart)' ),
array( 'fas fa-magnet' => 'magnet (Attract,lodestone,tool)' ),
array( 'fas fa-microscope' => 'Microscope (electron,lens,optics,science,shrink)' ),
array( 'fas fa-mortar-pestle' => 'Mortar Pestle (crush,culinary,grind,medical,mix,pharmacy,prescription,spices)' ),
array( 'fas fa-pills' => 'Pills (drugs,medicine,prescription,tablets)' ),
array( 'fas fa-prescription-bottle' => 'Prescription Bottle (drugs,medical,medicine,pharmacy,rx)' ),
array( 'fas fa-radiation' => 'Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-radiation-alt' => 'Alternate Radiation (danger,dangerous,deadly,hazard,nuclear,radioactive,warning)' ),
array( 'fas fa-seedling' => 'Seedling (flora,grow,plant,vegan)' ),
array( 'fas fa-skull-crossbones' => 'Skull & Crossbones (Dungeons & Dragons,alert,bones,d&d,danger,dead,deadly,death,dnd,fantasy,halloween,holiday,jolly-roger,pirate,poison,skeleton,warning)' ),
array( 'fas fa-syringe' => 'Syringe (doctor,immunizations,medical,needle)' ),
array( 'fas fa-tablets' => 'Tablets (drugs,medicine,pills,prescription)' ),
array( 'fas fa-temperature-high' => 'High Temperature (cook,mercury,summer,thermometer,warm)' ),
array( 'fas fa-temperature-low' => 'Low Temperature (cold,cool,mercury,thermometer,winter)' ),
array( 'fas fa-vial' => 'Vial (experiment,lab,sample,science,test,test tube)' ),
array( 'fas fa-vials' => 'Vials (experiment,lab,sample,science,test,test tube)' ),
),
'Science Fiction' => array(
array( 'fab fa-galactic-republic' => 'Galactic Republic (politics,star wars)' ),
array( 'fab fa-galactic-senate' => 'Galactic Senate (star wars)' ),
array( 'fas fa-globe' => 'Globe (all,coordinates,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-jedi' => 'Jedi (crest,force,sith,skywalker,star wars,yoda)' ),
array( 'fab fa-jedi-order' => 'Jedi Order (star wars)' ),
array( 'fas fa-journal-whills' => 'Journal of the Whills (book,force,jedi,sith,star wars,yoda)' ),
array( 'fas fa-meteor' => 'Meteor (armageddon,asteroid,comet,shooting star,space)' ),
array( 'fas fa-moon' => 'Moon (contrast,crescent,dark,lunar,night)' ),
array( 'far fa-moon' => 'Moon (contrast,crescent,dark,lunar,night)' ),
array( 'fab fa-old-republic' => 'Old Republic (politics,star wars)' ),
array( 'fas fa-robot' => 'Robot (android,automate,computer,cyborg)' ),
array( 'fas fa-rocket' => 'rocket (aircraft,app,jet,launch,nasa,space)' ),
array( 'fas fa-satellite' => 'Satellite (communications,hardware,orbit,space)' ),
array( 'fas fa-satellite-dish' => 'Satellite Dish (SETI,communications,hardware,receiver,saucer,signal)' ),
array( 'fas fa-space-shuttle' => 'Space Shuttle (astronaut,machine,nasa,rocket,transportation)' ),
array( 'fas fa-user-astronaut' => 'User Astronaut (avatar,clothing,cosmonaut,nasa,space,suit)' ),
),
'Security' => array(
array( 'fas fa-ban' => 'ban (abort,ban,block,cancel,delete,hide,prohibit,remove,stop,trash)' ),
array( 'fas fa-bug' => 'Bug (beetle,error,insect,report)' ),
array( 'fas fa-door-closed' => 'Door Closed (enter,exit,locked)' ),
array( 'fas fa-door-open' => 'Door Open (enter,exit,welcome)' ),
array( 'fas fa-dungeon' => 'Dungeon (Dungeons & Dragons,building,d&d,dnd,door,entrance,fantasy,gate)' ),
array( 'fas fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'far fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'fas fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'far fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'fas fa-file-contract' => 'File Contract (agreement,binding,document,legal,signature)' ),
array( 'fas fa-file-signature' => 'File Signature (John Hancock,contract,document,name)' ),
array( 'fas fa-fingerprint' => 'Fingerprint (human,id,identification,lock,smudge,touch,unique,unlock)' ),
array( 'fas fa-id-badge' => 'Identification Badge (address,contact,identification,license,profile)' ),
array( 'far fa-id-badge' => 'Identification Badge (address,contact,identification,license,profile)' ),
array( 'fas fa-id-card' => 'Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'far fa-id-card' => 'Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'fas fa-id-card-alt' => 'Alternate Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'fas fa-key' => 'key (lock,password,private,secret,unlock)' ),
array( 'fas fa-lock' => 'lock (admin,lock,open,password,private,protect,security)' ),
array( 'fas fa-lock-open' => 'Lock Open (admin,lock,open,password,private,protect,security)' ),
array( 'fas fa-mask' => 'Mask (carnivale,costume,disguise,halloween,secret,super hero)' ),
array( 'fas fa-passport' => 'Passport (document,id,identification,issued,travel)' ),
array( 'fas fa-shield-alt' => 'Alternate Shield (achievement,award,block,defend,security,winner)' ),
array( 'fas fa-unlock' => 'unlock (admin,lock,password,private,protect)' ),
array( 'fas fa-unlock-alt' => 'Alternate Unlock (admin,lock,password,private,protect)' ),
array( 'fas fa-user-lock' => 'User Lock (admin,lock,person,private,unlock)' ),
array( 'fas fa-user-secret' => 'User Secret (clothing,coat,hat,incognito,person,privacy,spy,whisper)' ),
array( 'fas fa-user-shield' => 'User Shield (admin,person,private,protect,safe)' ),
),
'Shapes' => array(
array( 'fas fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'far fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'fas fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'far fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'fas fa-certificate' => 'certificate (badge,star,verified)' ),
array( 'fas fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'far fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'fas fa-cloud' => 'Cloud (atmosphere,fog,overcast,save,upload,weather)' ),
array( 'fas fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'far fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-heart-broken' => 'Heart Broken (breakup,crushed,dislike,dumped,grief,love,lovesick,relationship,sad)' ),
array( 'fas fa-map-marker' => 'map-marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-play' => 'play (audio,music,playing,sound,start,video)' ),
array( 'fas fa-shapes' => 'Shapes (blocks,build,circle,square,triangle)' ),
array( 'fas fa-square' => 'Square (block,box,shape)' ),
array( 'far fa-square' => 'Square (block,box,shape)' ),
array( 'fas fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'far fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
),
'Shopping' => array(
array( 'fas fa-barcode' => 'barcode (info,laser,price,scan,upc)' ),
array( 'fas fa-cart-arrow-down' => 'Shopping Cart Arrow Down (download,save,shopping)' ),
array( 'fas fa-cart-plus' => 'Add to Shopping Cart (add,create,new,positive,shopping)' ),
array( 'fas fa-cash-register' => 'Cash Register (buy,cha-ching,change,checkout,commerce,leaerboard,machine,pay,payment,purchase,store)' ),
array( 'fas fa-gift' => 'gift (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-gifts' => 'Gifts (christmas,generosity,giving,holiday,party,present,wrapped,xmas)' ),
array( 'fas fa-person-booth' => 'Person Entering Booth (changing,changing room,election,human,person,vote,voting)' ),
array( 'fas fa-receipt' => 'Receipt (check,invoice,money,pay,table)' ),
array( 'fas fa-shipping-fast' => 'Shipping Fast (express,fedex,mail,overnight,package,ups)' ),
array( 'fas fa-shopping-bag' => 'Shopping Bag (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-basket' => 'Shopping Basket (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shopping-cart' => 'shopping-cart (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-store' => 'Store (building,buy,purchase,shopping)' ),
array( 'fas fa-store-alt' => 'Alternate Store (building,buy,purchase,shopping)' ),
array( 'fas fa-truck' => 'truck (cargo,delivery,shipping,vehicle)' ),
array( 'fas fa-tshirt' => 'T-Shirt (clothing,fashion,garment,shirt)' ),
),
'Social' => array(
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-birthday-cake' => 'Birthday Cake (anniversary,bakery,candles,celebration,dessert,frosting,holiday,party,pastry)' ),
array( 'fas fa-camera' => 'camera (image,lens,photo,picture,record,shutter,video)' ),
array( 'fas fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-hashtag' => 'Hashtag (Twitter,instagram,pound,social media,tag)' ),
array( 'fas fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'far fa-heart' => 'Heart (favorite,like,love,relationship,valentine)' ),
array( 'fas fa-icons' => 'Icons (bolt,emoji,heart,image,music,photo,symbols)' ),
array( 'fas fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'far fa-image' => 'Image (album,landscape,photo,picture)' ),
array( 'fas fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'far fa-images' => 'Images (album,landscape,photo,picture)' ),
array( 'fas fa-map-marker' => 'map-marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marker-alt' => 'Alternate Map Marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-photo-video' => 'Photo Video (av,film,image,library,media)' ),
array( 'fas fa-poll' => 'Poll (results,survey,trend,vote,voting)' ),
array( 'fas fa-poll-h' => 'Poll H (results,survey,trend,vote,voting)' ),
array( 'fas fa-retweet' => 'Retweet (refresh,reload,share,swap)' ),
array( 'fas fa-share' => 'Share (forward,save,send,social)' ),
array( 'fas fa-share-alt' => 'Alternate Share (forward,save,send,social)' ),
array( 'fas fa-share-square' => 'Share Square (forward,save,send,social)' ),
array( 'far fa-share-square' => 'Share Square (forward,save,send,social)' ),
array( 'fas fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'far fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'fas fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'far fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'fas fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'far fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'fas fa-thumbtack' => 'Thumbtack (coordinates,location,marker,pin,thumb-tack)' ),
array( 'fas fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'far fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-circle' => 'User Circle (account,avatar,head,human,man,person,profile)' ),
array( 'far fa-user-circle' => 'User Circle (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-friends' => 'User Friends (group,people,person,team,users)' ),
array( 'fas fa-user-plus' => 'User Plus (add,avatar,positive,sign up,signup,team)' ),
array( 'fas fa-users' => 'Users (friends,group,people,persons,profiles,team)' ),
array( 'fas fa-video' => 'Video (camera,film,movie,record,video-camera)' ),
),
'Spinners' => array(
array( 'fas fa-asterisk' => 'asterisk (annotation,details,reference,star)' ),
array( 'fas fa-atom' => 'Atom (atheism,chemistry,ion,nuclear,science)' ),
array( 'fas fa-certificate' => 'certificate (badge,star,verified)' ),
array( 'fas fa-circle-notch' => 'Circle Notched (circle-o-notch,diameter,dot,ellipse,round,spinner)' ),
array( 'fas fa-cog' => 'cog (gear,mechanical,settings,sprocket,wheel)' ),
array( 'fas fa-compact-disc' => 'Compact Disc (album,bluray,cd,disc,dvd,media,movie,music,record,video,vinyl)' ),
array( 'fas fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'far fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'fas fa-crosshairs' => 'Crosshairs (aim,bullseye,gpd,picker,position)' ),
array( 'fas fa-dharmachakra' => 'Dharmachakra (buddhism,buddhist,wheel of dharma)' ),
array( 'fas fa-fan' => 'Fan (ac,air conditioning,blade,blower,cool,hot)' ),
array( 'fas fa-haykal' => 'Haykal (bahai,bahá\'í,star)' ),
array( 'fas fa-life-ring' => 'Life Ring (coast guard,help,overboard,save,support)' ),
array( 'far fa-life-ring' => 'Life Ring (coast guard,help,overboard,save,support)' ),
array( 'fas fa-palette' => 'Palette (acrylic,art,brush,color,fill,paint,pigment,watercolor)' ),
array( 'fas fa-ring' => 'Ring (Dungeons & Dragons,Gollum,band,binding,d&d,dnd,engagement,fantasy,gold,jewelry,marriage,precious)' ),
array( 'fas fa-slash' => 'Slash (cancel,close,mute,off,stop,x)' ),
array( 'fas fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'far fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'fas fa-spinner' => 'Spinner (circle,loading,progress)' ),
array( 'fas fa-stroopwafel' => 'Stroopwafel (caramel,cookie,dessert,sweets,waffle)' ),
array( 'fas fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'far fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'fas fa-sync' => 'Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-sync-alt' => 'Alternate Sync (exchange,refresh,reload,rotate,swap)' ),
array( 'fas fa-yin-yang' => 'Yin Yang (daoism,opposites,taoism)' ),
),
'Sports' => array(
array( 'fas fa-baseball-ball' => 'Baseball Ball (foul,hardball,league,leather,mlb,softball,sport)' ),
array( 'fas fa-basketball-ball' => 'Basketball Ball (dribble,dunk,hoop,nba)' ),
array( 'fas fa-biking' => 'Biking (bicycle,bike,cycle,cycling,ride,wheel)' ),
array( 'fas fa-bowling-ball' => 'Bowling Ball (alley,candlepin,gutter,lane,strike,tenpin)' ),
array( 'fas fa-dumbbell' => 'Dumbbell (exercise,gym,strength,weight,weight-lifting)' ),
array( 'fas fa-football-ball' => 'Football Ball (ball,fall,nfl,pigskin,seasonal)' ),
array( 'fas fa-futbol' => 'Futbol (ball,football,mls,soccer)' ),
array( 'far fa-futbol' => 'Futbol (ball,football,mls,soccer)' ),
array( 'fas fa-golf-ball' => 'Golf Ball (caddy,eagle,putt,tee)' ),
array( 'fas fa-hockey-puck' => 'Hockey Puck (ice,nhl,sport)' ),
array( 'fas fa-quidditch' => 'Quidditch (ball,bludger,broom,golden snitch,harry potter,hogwarts,quaffle,sport,wizard)' ),
array( 'fas fa-running' => 'Running (exercise,health,jog,person,run,sport,sprint)' ),
array( 'fas fa-skating' => 'Skating (activity,figure skating,fitness,ice,person,winter)' ),
array( 'fas fa-skiing' => 'Skiing (activity,downhill,fast,fitness,olympics,outdoors,person,seasonal,slalom)' ),
array( 'fas fa-skiing-nordic' => 'Skiing Nordic (activity,cross country,fitness,outdoors,person,seasonal)' ),
array( 'fas fa-snowboarding' => 'Snowboarding (activity,fitness,olympics,outdoors,person)' ),
array( 'fas fa-swimmer' => 'Swimmer (athlete,head,man,olympics,person,pool,water)' ),
array( 'fas fa-table-tennis' => 'Table Tennis (ball,paddle,ping pong)' ),
array( 'fas fa-volleyball-ball' => 'Volleyball Ball (beach,olympics,sport)' ),
),
'Spring' => array(
array( 'fas fa-allergies' => 'Allergies (allergy,freckles,hand,hives,pox,skin,spots)' ),
array( 'fas fa-broom' => 'Broom (clean,firebolt,fly,halloween,nimbus 2000,quidditch,sweep,witch)' ),
array( 'fas fa-cloud-sun' => 'Cloud with Sun (clear,day,daytime,fall,outdoors,overcast,partly cloudy)' ),
array( 'fas fa-cloud-sun-rain' => 'Cloud with Sun and Rain (day,overcast,precipitation,storm,summer,sunshower)' ),
array( 'fas fa-frog' => 'Frog (amphibian,bullfrog,fauna,hop,kermit,kiss,prince,ribbit,toad,wart)' ),
array( 'fas fa-rainbow' => 'Rainbow (gold,leprechaun,prism,rain,sky)' ),
array( 'fas fa-seedling' => 'Seedling (flora,grow,plant,vegan)' ),
array( 'fas fa-umbrella' => 'Umbrella (protection,rain,storm,wet)' ),
),
'Status' => array(
array( 'fas fa-ban' => 'ban (abort,ban,block,cancel,delete,hide,prohibit,remove,stop,trash)' ),
array( 'fas fa-battery-empty' => 'Battery Empty (charge,dead,power,status)' ),
array( 'fas fa-battery-full' => 'Battery Full (charge,power,status)' ),
array( 'fas fa-battery-half' => 'Battery 1/2 Full (charge,power,status)' ),
array( 'fas fa-battery-quarter' => 'Battery 1/4 Full (charge,low,power,status)' ),
array( 'fas fa-battery-three-quarters' => 'Battery 3/4 Full (charge,power,status)' ),
array( 'fas fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'far fa-bell' => 'bell (alarm,alert,chime,notification,reminder)' ),
array( 'fas fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'far fa-bell-slash' => 'Bell Slash (alert,cancel,disabled,notification,off,reminder)' ),
array( 'fas fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'far fa-calendar' => 'Calendar (calendar-o,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'far fa-calendar-alt' => 'Alternate Calendar (calendar,date,event,schedule,time,when)' ),
array( 'fas fa-calendar-check' => 'Calendar Check (accept,agree,appointment,confirm,correct,date,done,event,ok,schedule,select,success,tick,time,todo,when)' ),
array( 'far fa-calendar-check' => 'Calendar Check (accept,agree,appointment,confirm,correct,date,done,event,ok,schedule,select,success,tick,time,todo,when)' ),
array( 'fas fa-calendar-day' => 'Calendar with Day Focus (date,detail,event,focus,schedule,single day,time,today,when)' ),
array( 'fas fa-calendar-minus' => 'Calendar Minus (calendar,date,delete,event,negative,remove,schedule,time,when)' ),
array( 'far fa-calendar-minus' => 'Calendar Minus (calendar,date,delete,event,negative,remove,schedule,time,when)' ),
array( 'fas fa-calendar-plus' => 'Calendar Plus (add,calendar,create,date,event,new,positive,schedule,time,when)' ),
array( 'far fa-calendar-plus' => 'Calendar Plus (add,calendar,create,date,event,new,positive,schedule,time,when)' ),
array( 'fas fa-calendar-times' => 'Calendar Times (archive,calendar,date,delete,event,remove,schedule,time,when,x)' ),
array( 'far fa-calendar-times' => 'Calendar Times (archive,calendar,date,delete,event,remove,schedule,time,when,x)' ),
array( 'fas fa-calendar-week' => 'Calendar with Week Focus (date,detail,event,focus,schedule,single week,time,today,when)' ),
array( 'fas fa-cart-arrow-down' => 'Shopping Cart Arrow Down (download,save,shopping)' ),
array( 'fas fa-cart-plus' => 'Add to Shopping Cart (add,create,new,positive,shopping)' ),
array( 'fas fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment' => 'comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'far fa-comment-alt' => 'Alternate Comment (bubble,chat,commenting,conversation,feedback,message,note,notification,sms,speech,texting)' ),
array( 'fas fa-comment-slash' => 'Comment Slash (bubble,cancel,chat,commenting,conversation,feedback,message,mute,note,notification,quiet,sms,speech,texting)' ),
array( 'fas fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'far fa-compass' => 'Compass (directions,directory,location,menu,navigation,safari,travel)' ),
array( 'fas fa-door-closed' => 'Door Closed (enter,exit,locked)' ),
array( 'fas fa-door-open' => 'Door Open (enter,exit,welcome)' ),
array( 'fas fa-exclamation' => 'exclamation (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-exclamation-circle' => 'Exclamation Circle (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-exclamation-triangle' => 'Exclamation Triangle (alert,danger,error,important,notice,notification,notify,problem,warning)' ),
array( 'fas fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'far fa-eye' => 'Eye (look,optic,see,seen,show,sight,views,visible)' ),
array( 'fas fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'far fa-eye-slash' => 'Eye Slash (blind,hide,show,toggle,unseen,views,visible,visiblity)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'far fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'fas fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'far fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'fas fa-gas-pump' => 'Gas Pump (car,fuel,gasoline,petrol)' ),
array( 'fas fa-info' => 'Info (details,help,information,more,support)' ),
array( 'fas fa-info-circle' => 'Info Circle (details,help,information,more,support)' ),
array( 'fas fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'far fa-lightbulb' => 'Lightbulb (energy,idea,inspiration,light)' ),
array( 'fas fa-lock' => 'lock (admin,lock,open,password,private,protect,security)' ),
array( 'fas fa-lock-open' => 'Lock Open (admin,lock,open,password,private,protect,security)' ),
array( 'fas fa-map-marker' => 'map-marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marker-alt' => 'Alternate Map Marker (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-microphone' => 'microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt' => 'Alternate Microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-alt-slash' => 'Alternate Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-slash' => 'Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-minus' => 'minus (collapse,delete,hide,minify,negative,remove,trash)' ),
array( 'fas fa-minus-circle' => 'Minus Circle (delete,hide,negative,remove,shape,trash)' ),
array( 'fas fa-minus-square' => 'Minus Square (collapse,delete,hide,minify,negative,remove,shape,trash)' ),
array( 'far fa-minus-square' => 'Minus Square (collapse,delete,hide,minify,negative,remove,shape,trash)' ),
array( 'fas fa-parking' => 'Parking (auto,car,garage,meter)' ),
array( 'fas fa-phone' => 'Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-alt' => 'Alternate Phone (call,earphone,number,support,telephone,voice)' ),
array( 'fas fa-phone-slash' => 'Phone Slash (call,cancel,earphone,mute,number,support,telephone,voice)' ),
array( 'fas fa-plus' => 'plus (add,create,expand,new,positive,shape)' ),
array( 'fas fa-plus-circle' => 'Plus Circle (add,create,expand,new,positive,shape)' ),
array( 'fas fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'far fa-plus-square' => 'Plus Square (add,create,expand,new,positive,shape)' ),
array( 'fas fa-print' => 'print (business,copy,document,office,paper)' ),
array( 'fas fa-question' => 'Question (help,information,support,unknown)' ),
array( 'fas fa-question-circle' => 'Question Circle (help,information,support,unknown)' ),
array( 'far fa-question-circle' => 'Question Circle (help,information,support,unknown)' ),
array( 'fas fa-shield-alt' => 'Alternate Shield (achievement,award,block,defend,security,winner)' ),
array( 'fas fa-shopping-cart' => 'shopping-cart (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-sign-in-alt' => 'Alternate Sign In (arrow,enter,join,log in,login,sign in,sign up,sign-in,signin,signup)' ),
array( 'fas fa-sign-out-alt' => 'Alternate Sign Out (arrow,exit,leave,log out,logout,sign-out)' ),
array( 'fas fa-signal' => 'signal (bars,graph,online,reception,status)' ),
array( 'fas fa-smoking-ban' => 'Smoking Ban (ban,cancel,no smoking,non-smoking)' ),
array( 'fas fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'far fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'fas fa-star-half' => 'star-half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'far fa-star-half' => 'star-half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'fas fa-star-half-alt' => 'Alternate Star Half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'fas fa-stream' => 'Stream (flow,list,timeline)' ),
array( 'fas fa-thermometer-empty' => 'Thermometer Empty (cold,mercury,status,temperature)' ),
array( 'fas fa-thermometer-full' => 'Thermometer Full (fever,hot,mercury,status,temperature)' ),
array( 'fas fa-thermometer-half' => 'Thermometer 1/2 Full (mercury,status,temperature)' ),
array( 'fas fa-thermometer-quarter' => 'Thermometer 1/4 Full (mercury,status,temperature)' ),
array( 'fas fa-thermometer-three-quarters' => 'Thermometer 3/4 Full (mercury,status,temperature)' ),
array( 'fas fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'far fa-thumbs-down' => 'thumbs-down (disagree,disapprove,dislike,hand,social,thumbs-o-down)' ),
array( 'fas fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'far fa-thumbs-up' => 'thumbs-up (agree,approve,favorite,hand,like,ok,okay,social,success,thumbs-o-up,yes,you got it dude)' ),
array( 'fas fa-tint' => 'tint (color,drop,droplet,raindrop,waterdrop)' ),
array( 'fas fa-tint-slash' => 'Tint Slash (color,drop,droplet,raindrop,waterdrop)' ),
array( 'fas fa-toggle-off' => 'Toggle Off (switch)' ),
array( 'fas fa-toggle-on' => 'Toggle On (switch)' ),
array( 'fas fa-unlock' => 'unlock (admin,lock,password,private,protect)' ),
array( 'fas fa-unlock-alt' => 'Alternate Unlock (admin,lock,password,private,protect)' ),
array( 'fas fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'far fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-alt' => 'Alternate User (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-alt-slash' => 'Alternate User Slash (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-slash' => 'User Slash (ban,delete,remove)' ),
array( 'fas fa-video' => 'Video (camera,film,movie,record,video-camera)' ),
array( 'fas fa-video-slash' => 'Video Slash (add,create,film,new,positive,record,video)' ),
array( 'fas fa-volume-down' => 'Volume Down (audio,lower,music,quieter,sound,speaker)' ),
array( 'fas fa-volume-mute' => 'Volume Mute (audio,music,quiet,sound,speaker)' ),
array( 'fas fa-volume-off' => 'Volume Off (audio,ban,music,mute,quiet,silent,sound)' ),
array( 'fas fa-volume-up' => 'Volume Up (audio,higher,louder,music,sound,speaker)' ),
array( 'fas fa-wifi' => 'WiFi (connection,hotspot,internet,network,wireless)' ),
),
'Summer' => array(
array( 'fas fa-anchor' => 'Anchor (berth,boat,dock,embed,link,maritime,moor,secure)' ),
array( 'fas fa-biking' => 'Biking (bicycle,bike,cycle,cycling,ride,wheel)' ),
array( 'fas fa-fish' => 'Fish (fauna,gold,seafood,swimming)' ),
array( 'fas fa-hotdog' => 'Hot Dog (bun,chili,frankfurt,frankfurter,kosher,polish,sandwich,sausage,vienna,weiner)' ),
array( 'fas fa-ice-cream' => 'Ice Cream (chocolate,cone,dessert,frozen,scoop,sorbet,vanilla,yogurt)' ),
array( 'fas fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'far fa-lemon' => 'Lemon (citrus,lemonade,lime,tart)' ),
array( 'fas fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'far fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'fas fa-swimmer' => 'Swimmer (athlete,head,man,olympics,person,pool,water)' ),
array( 'fas fa-swimming-pool' => 'Swimming Pool (ladder,recreation,swim,water)' ),
array( 'fas fa-umbrella-beach' => 'Umbrella Beach (protection,recreation,sand,shade,summer,sun)' ),
array( 'fas fa-volleyball-ball' => 'Volleyball Ball (beach,olympics,sport)' ),
array( 'fas fa-water' => 'Water (lake,liquid,ocean,sea,swim,wet)' ),
),
'Tabletop Gaming' => array(
array( 'fab fa-acquisitions-incorporated' => 'Acquisitions Incorporated (Dungeons & Dragons,d&d,dnd,fantasy,game,gaming,tabletop)' ),
array( 'fas fa-book-dead' => 'Book of the Dead (Dungeons & Dragons,crossbones,d&d,dark arts,death,dnd,documentation,evil,fantasy,halloween,holiday,necronomicon,read,skull,spell)' ),
array( 'fab fa-critical-role' => 'Critical Role (Dungeons & Dragons,d&d,dnd,fantasy,game,gaming,tabletop)' ),
array( 'fab fa-d-and-d' => 'Dungeons & Dragons' ),
array( 'fab fa-d-and-d-beyond' => 'D&D Beyond (Dungeons & Dragons,d&d,dnd,fantasy,gaming,tabletop)' ),
array( 'fas fa-dice-d20' => 'Dice D20 (Dungeons & Dragons,chance,d&d,dnd,fantasy,gambling,game,roll)' ),
array( 'fas fa-dice-d6' => 'Dice D6 (Dungeons & Dragons,chance,d&d,dnd,fantasy,gambling,game,roll)' ),
array( 'fas fa-dragon' => 'Dragon (Dungeons & Dragons,d&d,dnd,fantasy,fire,lizard,serpent)' ),
array( 'fas fa-dungeon' => 'Dungeon (Dungeons & Dragons,building,d&d,dnd,door,entrance,fantasy,gate)' ),
array( 'fab fa-fantasy-flight-games' => 'Fantasy Flight-games (Dungeons & Dragons,d&d,dnd,fantasy,game,gaming,tabletop)' ),
array( 'fas fa-fist-raised' => 'Raised Fist (Dungeons & Dragons,d&d,dnd,fantasy,hand,ki,monk,resist,strength,unarmed combat)' ),
array( 'fas fa-hat-wizard' => 'Wizard\'s Hat (Dungeons & Dragons,accessory,buckle,clothing,d&d,dnd,fantasy,halloween,head,holiday,mage,magic,pointy,witch)' ),
array( 'fab fa-penny-arcade' => 'Penny Arcade (Dungeons & Dragons,d&d,dnd,fantasy,game,gaming,pax,tabletop)' ),
array( 'fas fa-ring' => 'Ring (Dungeons & Dragons,Gollum,band,binding,d&d,dnd,engagement,fantasy,gold,jewelry,marriage,precious)' ),
array( 'fas fa-scroll' => 'Scroll (Dungeons & Dragons,announcement,d&d,dnd,fantasy,paper,script)' ),
array( 'fas fa-skull-crossbones' => 'Skull & Crossbones (Dungeons & Dragons,alert,bones,d&d,danger,dead,deadly,death,dnd,fantasy,halloween,holiday,jolly-roger,pirate,poison,skeleton,warning)' ),
array( 'fab fa-wizards-of-the-coast' => 'Wizards of the Coast (Dungeons & Dragons,d&d,dnd,fantasy,game,gaming,tabletop)' ),
),
'Toggle' => array(
array( 'fas fa-bullseye' => 'Bullseye (archery,goal,objective,target)' ),
array( 'fas fa-check-circle' => 'Check Circle (accept,agree,confirm,correct,done,ok,select,success,tick,todo,yes)' ),
array( 'far fa-check-circle' => 'Check Circle (accept,agree,confirm,correct,done,ok,select,success,tick,todo,yes)' ),
array( 'fas fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'far fa-circle' => 'Circle (circle-thin,diameter,dot,ellipse,notification,round)' ),
array( 'fas fa-dot-circle' => 'Dot Circle (bullseye,notification,target)' ),
array( 'far fa-dot-circle' => 'Dot Circle (bullseye,notification,target)' ),
array( 'fas fa-microphone' => 'microphone (audio,podcast,record,sing,sound,voice)' ),
array( 'fas fa-microphone-slash' => 'Microphone Slash (audio,disable,mute,podcast,record,sing,sound,voice)' ),
array( 'fas fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'far fa-star' => 'Star (achievement,award,favorite,important,night,rating,score)' ),
array( 'fas fa-star-half' => 'star-half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'far fa-star-half' => 'star-half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'fas fa-star-half-alt' => 'Alternate Star Half (achievement,award,rating,score,star-half-empty,star-half-full)' ),
array( 'fas fa-toggle-off' => 'Toggle Off (switch)' ),
array( 'fas fa-toggle-on' => 'Toggle On (switch)' ),
array( 'fas fa-wifi' => 'WiFi (connection,hotspot,internet,network,wireless)' ),
),
'Travel' => array(
array( 'fas fa-archway' => 'Archway (arc,monument,road,street,tunnel)' ),
array( 'fas fa-atlas' => 'Atlas (book,directions,geography,globe,map,travel,wayfinding)' ),
array( 'fas fa-bed' => 'Bed (lodging,rest,sleep,travel)' ),
array( 'fas fa-bus' => 'Bus (public transportation,transportation,travel,vehicle)' ),
array( 'fas fa-bus-alt' => 'Bus Alt (mta,public transportation,transportation,travel,vehicle)' ),
array( 'fas fa-cocktail' => 'Cocktail (alcohol,beverage,drink,gin,glass,margarita,martini,vodka)' ),
array( 'fas fa-concierge-bell' => 'Concierge Bell (attention,hotel,receptionist,service,support)' ),
array( 'fas fa-dumbbell' => 'Dumbbell (exercise,gym,strength,weight,weight-lifting)' ),
array( 'fas fa-glass-martini' => 'Martini Glass (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-glass-martini-alt' => 'Alternate Glass Martini (alcohol,bar,beverage,drink,liquor)' ),
array( 'fas fa-globe-africa' => 'Globe with Africa shown (all,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-globe-americas' => 'Globe with Americas shown (all,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-globe-asia' => 'Globe with Asia shown (all,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-globe-europe' => 'Globe with Europe shown (all,country,earth,global,gps,language,localize,location,map,online,place,planet,translate,travel,world)' ),
array( 'fas fa-hot-tub' => 'Hot Tub (bath,jacuzzi,massage,sauna,spa)' ),
array( 'fas fa-hotel' => 'Hotel (building,inn,lodging,motel,resort,travel)' ),
array( 'fas fa-luggage-cart' => 'Luggage Cart (bag,baggage,suitcase,travel)' ),
array( 'fas fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'far fa-map' => 'Map (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marked' => 'Map Marked (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-map-marked-alt' => 'Alternate Map Marked (address,coordinates,destination,gps,localize,location,map,navigation,paper,pin,place,point of interest,position,route,travel)' ),
array( 'fas fa-monument' => 'Monument (building,historic,landmark,memorable)' ),
array( 'fas fa-passport' => 'Passport (document,id,identification,issued,travel)' ),
array( 'fas fa-plane' => 'plane (airplane,destination,fly,location,mode,travel,trip)' ),
array( 'fas fa-plane-arrival' => 'Plane Arrival (airplane,arriving,destination,fly,land,landing,location,mode,travel,trip)' ),
array( 'fas fa-plane-departure' => 'Plane Departure (airplane,departing,destination,fly,location,mode,take off,taking off,travel,trip)' ),
array( 'fas fa-shuttle-van' => 'Shuttle Van (airport,machine,public-transportation,transportation,travel,vehicle)' ),
array( 'fas fa-spa' => 'Spa (flora,massage,mindfulness,plant,wellness)' ),
array( 'fas fa-suitcase' => 'Suitcase (baggage,luggage,move,suitcase,travel,trip)' ),
array( 'fas fa-suitcase-rolling' => 'Suitcase Rolling (baggage,luggage,move,suitcase,travel,trip)' ),
array( 'fas fa-swimmer' => 'Swimmer (athlete,head,man,olympics,person,pool,water)' ),
array( 'fas fa-swimming-pool' => 'Swimming Pool (ladder,recreation,swim,water)' ),
array( 'fas fa-taxi' => 'Taxi (cab,cabbie,car,car service,lyft,machine,transportation,travel,uber,vehicle)' ),
array( 'fas fa-tram' => 'Tram (crossing,machine,mountains,seasonal,transportation)' ),
array( 'fas fa-tv' => 'Television (computer,display,monitor,television)' ),
array( 'fas fa-umbrella-beach' => 'Umbrella Beach (protection,recreation,sand,shade,summer,sun)' ),
array( 'fas fa-wine-glass' => 'Wine Glass (alcohol,beverage,cabernet,drink,grapes,merlot,sauvignon)' ),
array( 'fas fa-wine-glass-alt' => 'Alternate Wine Glas (alcohol,beverage,cabernet,drink,grapes,merlot,sauvignon)' ),
),
'Users & People' => array(
array( 'fab fa-accessible-icon' => 'Accessible Icon (accessibility,handicap,person,wheelchair,wheelchair-alt)' ),
array( 'fas fa-address-book' => 'Address Book (contact,directory,index,little black book,rolodex)' ),
array( 'far fa-address-book' => 'Address Book (contact,directory,index,little black book,rolodex)' ),
array( 'fas fa-address-card' => 'Address Card (about,contact,id,identification,postcard,profile)' ),
array( 'far fa-address-card' => 'Address Card (about,contact,id,identification,postcard,profile)' ),
array( 'fas fa-baby' => 'Baby (child,diaper,doll,human,infant,kid,offspring,person,sprout)' ),
array( 'fas fa-bed' => 'Bed (lodging,rest,sleep,travel)' ),
array( 'fas fa-biking' => 'Biking (bicycle,bike,cycle,cycling,ride,wheel)' ),
array( 'fas fa-blind' => 'Blind (cane,disability,person,sight)' ),
array( 'fas fa-chalkboard-teacher' => 'Chalkboard Teacher (blackboard,instructor,learning,professor,school,whiteboard,writing)' ),
array( 'fas fa-child' => 'Child (boy,girl,kid,toddler,young)' ),
array( 'fas fa-female' => 'Female (human,person,profile,user,woman)' ),
array( 'fas fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'far fa-frown' => 'Frowning Face (disapprove,emoticon,face,rating,sad)' ),
array( 'fas fa-hiking' => 'Hiking (activity,backpack,fall,fitness,outdoors,person,seasonal,walking)' ),
array( 'fas fa-id-badge' => 'Identification Badge (address,contact,identification,license,profile)' ),
array( 'far fa-id-badge' => 'Identification Badge (address,contact,identification,license,profile)' ),
array( 'fas fa-id-card' => 'Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'far fa-id-card' => 'Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'fas fa-id-card-alt' => 'Alternate Identification Card (contact,demographics,document,identification,issued,profile)' ),
array( 'fas fa-male' => 'Male (human,man,person,profile,user)' ),
array( 'fas fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'far fa-meh' => 'Neutral Face (emoticon,face,neutral,rating)' ),
array( 'fas fa-people-carry' => 'People Carry (box,carry,fragile,help,movers,package)' ),
array( 'fas fa-person-booth' => 'Person Entering Booth (changing,changing room,election,human,person,vote,voting)' ),
array( 'fas fa-poo' => 'Poo (crap,poop,shit,smile,turd)' ),
array( 'fas fa-portrait' => 'Portrait (id,image,photo,picture,selfie)' ),
array( 'fas fa-power-off' => 'Power Off (cancel,computer,on,reboot,restart)' ),
array( 'fas fa-pray' => 'Pray (kneel,preach,religion,worship)' ),
array( 'fas fa-restroom' => 'Restroom (bathroom,john,loo,potty,washroom,waste,wc)' ),
array( 'fas fa-running' => 'Running (exercise,health,jog,person,run,sport,sprint)' ),
array( 'fas fa-skating' => 'Skating (activity,figure skating,fitness,ice,person,winter)' ),
array( 'fas fa-skiing' => 'Skiing (activity,downhill,fast,fitness,olympics,outdoors,person,seasonal,slalom)' ),
array( 'fas fa-skiing-nordic' => 'Skiing Nordic (activity,cross country,fitness,outdoors,person,seasonal)' ),
array( 'fas fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'far fa-smile' => 'Smiling Face (approve,emoticon,face,happy,rating,satisfied)' ),
array( 'fas fa-snowboarding' => 'Snowboarding (activity,fitness,olympics,outdoors,person)' ),
array( 'fas fa-street-view' => 'Street View (directions,location,map,navigation)' ),
array( 'fas fa-swimmer' => 'Swimmer (athlete,head,man,olympics,person,pool,water)' ),
array( 'fas fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'far fa-user' => 'User (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-alt' => 'Alternate User (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-alt-slash' => 'Alternate User Slash (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-astronaut' => 'User Astronaut (avatar,clothing,cosmonaut,nasa,space,suit)' ),
array( 'fas fa-user-check' => 'User Check (accept,check,person,verified)' ),
array( 'fas fa-user-circle' => 'User Circle (account,avatar,head,human,man,person,profile)' ),
array( 'far fa-user-circle' => 'User Circle (account,avatar,head,human,man,person,profile)' ),
array( 'fas fa-user-clock' => 'User Clock (alert,person,remind,time)' ),
array( 'fas fa-user-cog' => 'User Cog (admin,cog,person,settings)' ),
array( 'fas fa-user-edit' => 'User Edit (edit,pen,pencil,person,update,write)' ),
array( 'fas fa-user-friends' => 'User Friends (group,people,person,team,users)' ),
array( 'fas fa-user-graduate' => 'User Graduate (cap,clothing,commencement,gown,graduation,person,student)' ),
array( 'fas fa-user-injured' => 'User Injured (cast,injury,ouch,patient,person,sling)' ),
array( 'fas fa-user-lock' => 'User Lock (admin,lock,person,private,unlock)' ),
array( 'fas fa-user-md' => 'Doctor (job,medical,nurse,occupation,physician,profile,surgeon)' ),
array( 'fas fa-user-minus' => 'User Minus (delete,negative,remove)' ),
array( 'fas fa-user-ninja' => 'User Ninja (assassin,avatar,dangerous,deadly,sneaky)' ),
array( 'fas fa-user-nurse' => 'Nurse (doctor,midwife,practitioner,surgeon)' ),
array( 'fas fa-user-plus' => 'User Plus (add,avatar,positive,sign up,signup,team)' ),
array( 'fas fa-user-secret' => 'User Secret (clothing,coat,hat,incognito,person,privacy,spy,whisper)' ),
array( 'fas fa-user-shield' => 'User Shield (admin,person,private,protect,safe)' ),
array( 'fas fa-user-slash' => 'User Slash (ban,delete,remove)' ),
array( 'fas fa-user-tag' => 'User Tag (avatar,discount,label,person,role,special)' ),
array( 'fas fa-user-tie' => 'User Tie (avatar,business,clothing,formal,professional,suit)' ),
array( 'fas fa-user-times' => 'Remove User (archive,delete,remove,x)' ),
array( 'fas fa-users' => 'Users (friends,group,people,persons,profiles,team)' ),
array( 'fas fa-users-cog' => 'Users Cog (admin,cog,group,person,settings,team)' ),
array( 'fas fa-walking' => 'Walking (exercise,health,pedometer,person,steps)' ),
array( 'fas fa-wheelchair' => 'Wheelchair (accessible,handicap,person)' ),
),
'Vehicles' => array(
array( 'fab fa-accessible-icon' => 'Accessible Icon (accessibility,handicap,person,wheelchair,wheelchair-alt)' ),
array( 'fas fa-ambulance' => 'ambulance (emergency,emt,er,help,hospital,support,vehicle)' ),
array( 'fas fa-baby-carriage' => 'Baby Carriage (buggy,carrier,infant,push,stroller,transportation,walk,wheels)' ),
array( 'fas fa-bicycle' => 'Bicycle (bike,gears,pedal,transportation,vehicle)' ),
array( 'fas fa-bus' => 'Bus (public transportation,transportation,travel,vehicle)' ),
array( 'fas fa-bus-alt' => 'Bus Alt (mta,public transportation,transportation,travel,vehicle)' ),
array( 'fas fa-car' => 'Car (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-car-alt' => 'Alternate Car (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-car-crash' => 'Car Crash (accident,auto,automobile,insurance,sedan,transportation,vehicle,wreck)' ),
array( 'fas fa-car-side' => 'Car Side (auto,automobile,sedan,transportation,travel,vehicle)' ),
array( 'fas fa-fighter-jet' => 'fighter-jet (airplane,fast,fly,goose,maverick,plane,quick,top gun,transportation,travel)' ),
array( 'fas fa-helicopter' => 'Helicopter (airwolf,apache,chopper,flight,fly,travel)' ),
array( 'fas fa-horse' => 'Horse (equus,fauna,mammmal,mare,neigh,pony)' ),
array( 'fas fa-motorcycle' => 'Motorcycle (bike,machine,transportation,vehicle)' ),
array( 'fas fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'far fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'fas fa-plane' => 'plane (airplane,destination,fly,location,mode,travel,trip)' ),
array( 'fas fa-rocket' => 'rocket (aircraft,app,jet,launch,nasa,space)' ),
array( 'fas fa-ship' => 'Ship (boat,sea,water)' ),
array( 'fas fa-shopping-cart' => 'shopping-cart (buy,checkout,grocery,payment,purchase)' ),
array( 'fas fa-shuttle-van' => 'Shuttle Van (airport,machine,public-transportation,transportation,travel,vehicle)' ),
array( 'fas fa-sleigh' => 'Sleigh (christmas,claus,fly,holiday,santa,sled,snow,xmas)' ),
array( 'fas fa-snowplow' => 'Snowplow (clean up,cold,road,storm,winter)' ),
array( 'fas fa-space-shuttle' => 'Space Shuttle (astronaut,machine,nasa,rocket,transportation)' ),
array( 'fas fa-subway' => 'Subway (machine,railway,train,transportation,vehicle)' ),
array( 'fas fa-taxi' => 'Taxi (cab,cabbie,car,car service,lyft,machine,transportation,travel,uber,vehicle)' ),
array( 'fas fa-tractor' => 'Tractor (agriculture,farm,vehicle)' ),
array( 'fas fa-train' => 'Train (bullet,commute,locomotive,railway,subway)' ),
array( 'fas fa-tram' => 'Tram (crossing,machine,mountains,seasonal,transportation)' ),
array( 'fas fa-truck' => 'truck (cargo,delivery,shipping,vehicle)' ),
array( 'fas fa-truck-monster' => 'Truck Monster (offroad,vehicle,wheel)' ),
array( 'fas fa-truck-pickup' => 'Truck Side (cargo,vehicle)' ),
array( 'fas fa-wheelchair' => 'Wheelchair (accessible,handicap,person)' ),
),
'Weather' => array(
array( 'fas fa-bolt' => 'Lightning Bolt (electricity,lightning,weather,zap)' ),
array( 'fas fa-cloud' => 'Cloud (atmosphere,fog,overcast,save,upload,weather)' ),
array( 'fas fa-cloud-meatball' => 'Cloud with (a chance of) Meatball (FLDSMDFR,food,spaghetti,storm)' ),
array( 'fas fa-cloud-moon' => 'Cloud with Moon (crescent,evening,lunar,night,partly cloudy,sky)' ),
array( 'fas fa-cloud-moon-rain' => 'Cloud with Moon and Rain (crescent,evening,lunar,night,partly cloudy,precipitation,rain,sky,storm)' ),
array( 'fas fa-cloud-rain' => 'Cloud with Rain (precipitation,rain,sky,storm)' ),
array( 'fas fa-cloud-showers-heavy' => 'Cloud with Heavy Showers (precipitation,rain,sky,storm)' ),
array( 'fas fa-cloud-sun' => 'Cloud with Sun (clear,day,daytime,fall,outdoors,overcast,partly cloudy)' ),
array( 'fas fa-cloud-sun-rain' => 'Cloud with Sun and Rain (day,overcast,precipitation,storm,summer,sunshower)' ),
array( 'fas fa-meteor' => 'Meteor (armageddon,asteroid,comet,shooting star,space)' ),
array( 'fas fa-moon' => 'Moon (contrast,crescent,dark,lunar,night)' ),
array( 'far fa-moon' => 'Moon (contrast,crescent,dark,lunar,night)' ),
array( 'fas fa-poo-storm' => 'Poo Storm (bolt,cloud,euphemism,lightning,mess,poop,shit,turd)' ),
array( 'fas fa-rainbow' => 'Rainbow (gold,leprechaun,prism,rain,sky)' ),
array( 'fas fa-smog' => 'Smog (dragon,fog,haze,pollution,smoke,weather)' ),
array( 'fas fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'far fa-snowflake' => 'Snowflake (precipitation,rain,winter)' ),
array( 'fas fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'far fa-sun' => 'Sun (brighten,contrast,day,lighter,sol,solar,star,weather)' ),
array( 'fas fa-temperature-high' => 'High Temperature (cook,mercury,summer,thermometer,warm)' ),
array( 'fas fa-temperature-low' => 'Low Temperature (cold,cool,mercury,thermometer,winter)' ),
array( 'fas fa-umbrella' => 'Umbrella (protection,rain,storm,wet)' ),
array( 'fas fa-water' => 'Water (lake,liquid,ocean,sea,swim,wet)' ),
array( 'fas fa-wind' => 'Wind (air,blow,breeze,fall,seasonal,weather)' ),
),
'Winter' => array(
array( 'fas fa-glass-whiskey' => 'Glass Whiskey (alcohol,bar,beverage,bourbon,drink,liquor,neat,rye,scotch,whisky)' ),
array( 'fas fa-icicles' => 'Icicles (cold,frozen,hanging,ice,seasonal,sharp)' ),
array( 'fas fa-igloo' => 'Igloo (dome,dwelling,eskimo,home,house,ice,snow)' ),
array( 'fas fa-mitten' => 'Mitten (clothing,cold,glove,hands,knitted,seasonal,warmth)' ),
array( 'fas fa-skating' => 'Skating (activity,figure skating,fitness,ice,person,winter)' ),
array( 'fas fa-skiing' => 'Skiing (activity,downhill,fast,fitness,olympics,outdoors,person,seasonal,slalom)' ),
array( 'fas fa-skiing-nordic' => 'Skiing Nordic (activity,cross country,fitness,outdoors,person,seasonal)' ),
array( 'fas fa-snowboarding' => 'Snowboarding (activity,fitness,olympics,outdoors,person)' ),
array( 'fas fa-snowplow' => 'Snowplow (clean up,cold,road,storm,winter)' ),
array( 'fas fa-tram' => 'Tram (crossing,machine,mountains,seasonal,transportation)' ),
),
'Writing' => array(
array( 'fas fa-archive' => 'Archive (box,package,save,storage)' ),
array( 'fas fa-blog' => 'Blog (journal,log,online,personal,post,web 2.0,wordpress,writing)' ),
array( 'fas fa-book' => 'book (diary,documentation,journal,library,read)' ),
array( 'fas fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'far fa-bookmark' => 'bookmark (favorite,marker,read,remember,save)' ),
array( 'fas fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'far fa-edit' => 'Edit (edit,pen,pencil,update,write)' ),
array( 'fas fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope' => 'Envelope (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'far fa-envelope-open' => 'Envelope Open (e-mail,email,letter,mail,message,notification,support)' ),
array( 'fas fa-eraser' => 'eraser (art,delete,remove,rubber)' ),
array( 'fas fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'far fa-file' => 'File (document,new,page,pdf,resume)' ),
array( 'fas fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'far fa-file-alt' => 'Alternate File (document,file-text,invoice,new,page,pdf)' ),
array( 'fas fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'far fa-folder' => 'Folder (archive,directory,document,file)' ),
array( 'fas fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'far fa-folder-open' => 'Folder Open (archive,directory,document,empty,file,new)' ),
array( 'fas fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'far fa-keyboard' => 'Keyboard (accessory,edit,input,text,type,write)' ),
array( 'fas fa-newspaper' => 'Newspaper (article,editorial,headline,journal,journalism,news,press)' ),
array( 'far fa-newspaper' => 'Newspaper (article,editorial,headline,journal,journalism,news,press)' ),
array( 'fas fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'far fa-paper-plane' => 'Paper Plane (air,float,fold,mail,paper,send)' ),
array( 'fas fa-paperclip' => 'Paperclip (attach,attachment,connect,link)' ),
array( 'fas fa-paragraph' => 'paragraph (edit,format,text,writing)' ),
array( 'fas fa-pen' => 'Pen (design,edit,update,write)' ),
array( 'fas fa-pen-alt' => 'Alternate Pen (design,edit,update,write)' ),
array( 'fas fa-pen-square' => 'Pen Square (edit,pencil-square,update,write)' ),
array( 'fas fa-pencil-alt' => 'Alternate Pencil (design,edit,pencil,update,write)' ),
array( 'fas fa-quote-left' => 'quote-left (mention,note,phrase,text,type)' ),
array( 'fas fa-quote-right' => 'quote-right (mention,note,phrase,text,type)' ),
array( 'fas fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
array( 'far fa-sticky-note' => 'Sticky Note (message,note,paper,reminder,sticker)' ),
array( 'fas fa-thumbtack' => 'Thumbtack (coordinates,location,marker,pin,thumb-tack)' ),
),
'Other' => array(
array( 'fas fa-backspace' => 'Backspace (command,delete,erase,keyboard,undo)' ),
array( 'fas fa-blender-phone' => 'Blender Phone (appliance,cocktail,communication,fantasy,milkshake,mixer,puree,silly,smoothie)' ),
array( 'fas fa-crown' => 'Crown (award,favorite,king,queen,royal,tiara)' ),
array( 'fas fa-dumpster-fire' => 'Dumpster Fire (alley,bin,commercial,danger,dangerous,euphemism,flame,heat,hot,trash,waste)' ),
array( 'fas fa-file-csv' => 'File CSV (document,excel,numbers,spreadsheets,table)' ),
array( 'fas fa-network-wired' => 'Wired Network (computer,connect,ethernet,internet,intranet)' ),
array( 'fas fa-signature' => 'Signature (John Hancock,cursive,name,writing)' ),
array( 'fas fa-skull' => 'Skull (bones,skeleton,x-ray,yorick)' ),
array( 'fas fa-vr-cardboard' => 'Cardboard VR (3d,augment,google,reality,virtual)' ),
array( 'fas fa-weight-hanging' => 'Hanging Weight (anvil,heavy,measurement)' ),
),
);
return array_merge( $icons, $fontawesome_icons );
}
add_filter( 'vc_iconpicker-type-openiconic', 'vc_iconpicker_type_openiconic' );
/**
* Openicons icons from fontello.com
*
* @param $icons - taken from filter - vc_map param field settings['source']
* provided icons (default empty array). If array categorized it will
* auto-enable category dropdown
*
* @return array - of icons for iconpicker, can be categorized, or not.
* @since 4.4
*/
function vc_iconpicker_type_openiconic( $icons ) {
$openiconic_icons = array(
array( 'vc-oi vc-oi-dial' => 'Dial' ),
array( 'vc-oi vc-oi-pilcrow' => 'Pilcrow' ),
array( 'vc-oi vc-oi-at' => 'At' ),
array( 'vc-oi vc-oi-hash' => 'Hash' ),
array( 'vc-oi vc-oi-key-inv' => 'Key-inv' ),
array( 'vc-oi vc-oi-key' => 'Key' ),
array( 'vc-oi vc-oi-chart-pie-alt' => 'Chart-pie-alt' ),
array( 'vc-oi vc-oi-chart-pie' => 'Chart-pie' ),
array( 'vc-oi vc-oi-chart-bar' => 'Chart-bar' ),
array( 'vc-oi vc-oi-umbrella' => 'Umbrella' ),
array( 'vc-oi vc-oi-moon-inv' => 'Moon-inv' ),
array( 'vc-oi vc-oi-mobile' => 'Mobile' ),
array( 'vc-oi vc-oi-cd' => 'Cd' ),
array( 'vc-oi vc-oi-split' => 'Split' ),
array( 'vc-oi vc-oi-exchange' => 'Exchange' ),
array( 'vc-oi vc-oi-block' => 'Block' ),
array( 'vc-oi vc-oi-resize-full' => 'Resize-full' ),
array( 'vc-oi vc-oi-article-alt' => 'Article-alt' ),
array( 'vc-oi vc-oi-article' => 'Article' ),
array( 'vc-oi vc-oi-pencil-alt' => 'Pencil-alt' ),
array( 'vc-oi vc-oi-undo' => 'Undo' ),
array( 'vc-oi vc-oi-attach' => 'Attach' ),
array( 'vc-oi vc-oi-link' => 'Link' ),
array( 'vc-oi vc-oi-search' => 'Search' ),
array( 'vc-oi vc-oi-mail' => 'Mail' ),
array( 'vc-oi vc-oi-heart' => 'Heart' ),
array( 'vc-oi vc-oi-comment' => 'Comment' ),
array( 'vc-oi vc-oi-resize-full-alt' => 'Resize-full-alt' ),
array( 'vc-oi vc-oi-lock' => 'Lock' ),
array( 'vc-oi vc-oi-book-open' => 'Book-open' ),
array( 'vc-oi vc-oi-arrow-curved' => 'Arrow-curved' ),
array( 'vc-oi vc-oi-equalizer' => 'Equalizer' ),
array( 'vc-oi vc-oi-heart-empty' => 'Heart-empty' ),
array( 'vc-oi vc-oi-lock-empty' => 'Lock-empty' ),
array( 'vc-oi vc-oi-comment-inv' => 'Comment-inv' ),
array( 'vc-oi vc-oi-folder' => 'Folder' ),
array( 'vc-oi vc-oi-resize-small' => 'Resize-small' ),
array( 'vc-oi vc-oi-play' => 'Play' ),
array( 'vc-oi vc-oi-cursor' => 'Cursor' ),
array( 'vc-oi vc-oi-aperture' => 'Aperture' ),
array( 'vc-oi vc-oi-play-circle2' => 'Play-circle2' ),
array( 'vc-oi vc-oi-resize-small-alt' => 'Resize-small-alt' ),
array( 'vc-oi vc-oi-folder-empty' => 'Folder-empty' ),
array( 'vc-oi vc-oi-comment-alt' => 'Comment-alt' ),
array( 'vc-oi vc-oi-lock-open' => 'Lock-open' ),
array( 'vc-oi vc-oi-star' => 'Star' ),
array( 'vc-oi vc-oi-user' => 'User' ),
array( 'vc-oi vc-oi-lock-open-empty' => 'Lock-open-empty' ),
array( 'vc-oi vc-oi-box' => 'Box' ),
array( 'vc-oi vc-oi-resize-vertical' => 'Resize-vertical' ),
array( 'vc-oi vc-oi-stop' => 'Stop' ),
array( 'vc-oi vc-oi-aperture-alt' => 'Aperture-alt' ),
array( 'vc-oi vc-oi-book' => 'Book' ),
array( 'vc-oi vc-oi-steering-wheel' => 'Steering-wheel' ),
array( 'vc-oi vc-oi-pause' => 'Pause' ),
array( 'vc-oi vc-oi-to-start' => 'To-start' ),
array( 'vc-oi vc-oi-move' => 'Move' ),
array( 'vc-oi vc-oi-resize-horizontal' => 'Resize-horizontal' ),
array( 'vc-oi vc-oi-rss-alt' => 'Rss-alt' ),
array( 'vc-oi vc-oi-comment-alt2' => 'Comment-alt2' ),
array( 'vc-oi vc-oi-rss' => 'Rss' ),
array( 'vc-oi vc-oi-comment-inv-alt' => 'Comment-inv-alt' ),
array( 'vc-oi vc-oi-comment-inv-alt2' => 'Comment-inv-alt2' ),
array( 'vc-oi vc-oi-eye' => 'Eye' ),
array( 'vc-oi vc-oi-pin' => 'Pin' ),
array( 'vc-oi vc-oi-video' => 'Video' ),
array( 'vc-oi vc-oi-picture' => 'Picture' ),
array( 'vc-oi vc-oi-camera' => 'Camera' ),
array( 'vc-oi vc-oi-tag' => 'Tag' ),
array( 'vc-oi vc-oi-chat' => 'Chat' ),
array( 'vc-oi vc-oi-cog' => 'Cog' ),
array( 'vc-oi vc-oi-popup' => 'Popup' ),
array( 'vc-oi vc-oi-to-end' => 'To-end' ),
array( 'vc-oi vc-oi-book-alt' => 'Book-alt' ),
array( 'vc-oi vc-oi-brush' => 'Brush' ),
array( 'vc-oi vc-oi-eject' => 'Eject' ),
array( 'vc-oi vc-oi-down' => 'Down' ),
array( 'vc-oi vc-oi-wrench' => 'Wrench' ),
array( 'vc-oi vc-oi-chat-inv' => 'Chat-inv' ),
array( 'vc-oi vc-oi-tag-empty' => 'Tag-empty' ),
array( 'vc-oi vc-oi-ok' => 'Ok' ),
array( 'vc-oi vc-oi-ok-circle' => 'Ok-circle' ),
array( 'vc-oi vc-oi-download' => 'Download' ),
array( 'vc-oi vc-oi-location' => 'Location' ),
array( 'vc-oi vc-oi-share' => 'Share' ),
array( 'vc-oi vc-oi-left' => 'Left' ),
array( 'vc-oi vc-oi-target' => 'Target' ),
array( 'vc-oi vc-oi-brush-alt' => 'Brush-alt' ),
array( 'vc-oi vc-oi-cancel' => 'Cancel' ),
array( 'vc-oi vc-oi-upload' => 'Upload' ),
array( 'vc-oi vc-oi-location-inv' => 'Location-inv' ),
array( 'vc-oi vc-oi-calendar' => 'Calendar' ),
array( 'vc-oi vc-oi-right' => 'Right' ),
array( 'vc-oi vc-oi-signal' => 'Signal' ),
array( 'vc-oi vc-oi-eyedropper' => 'Eyedropper' ),
array( 'vc-oi vc-oi-layers' => 'Layers' ),
array( 'vc-oi vc-oi-award' => 'Award' ),
array( 'vc-oi vc-oi-up' => 'Up' ),
array( 'vc-oi vc-oi-calendar-inv' => 'Calendar-inv' ),
array( 'vc-oi vc-oi-location-alt' => 'Location-alt' ),
array( 'vc-oi vc-oi-download-cloud' => 'Download-cloud' ),
array( 'vc-oi vc-oi-cancel-circle' => 'Cancel-circle' ),
array( 'vc-oi vc-oi-plus' => 'Plus' ),
array( 'vc-oi vc-oi-upload-cloud' => 'Upload-cloud' ),
array( 'vc-oi vc-oi-compass' => 'Compass' ),
array( 'vc-oi vc-oi-calendar-alt' => 'Calendar-alt' ),
array( 'vc-oi vc-oi-down-circle' => 'Down-circle' ),
array( 'vc-oi vc-oi-award-empty' => 'Award-empty' ),
array( 'vc-oi vc-oi-layers-alt' => 'Layers-alt' ),
array( 'vc-oi vc-oi-sun' => 'Sun' ),
array( 'vc-oi vc-oi-list' => 'List' ),
array( 'vc-oi vc-oi-left-circle' => 'Left-circle' ),
array( 'vc-oi vc-oi-mic' => 'Mic' ),
array( 'vc-oi vc-oi-trash' => 'Trash' ),
array( 'vc-oi vc-oi-quote-left' => 'Quote-left' ),
array( 'vc-oi vc-oi-plus-circle' => 'Plus-circle' ),
array( 'vc-oi vc-oi-minus' => 'Minus' ),
array( 'vc-oi vc-oi-quote-right' => 'Quote-right' ),
array( 'vc-oi vc-oi-trash-empty' => 'Trash-empty' ),
array( 'vc-oi vc-oi-volume-off' => 'Volume-off' ),
array( 'vc-oi vc-oi-right-circle' => 'Right-circle' ),
array( 'vc-oi vc-oi-list-nested' => 'List-nested' ),
array( 'vc-oi vc-oi-sun-inv' => 'Sun-inv' ),
array( 'vc-oi vc-oi-bat-empty' => 'Bat-empty' ),
array( 'vc-oi vc-oi-up-circle' => 'Up-circle' ),
array( 'vc-oi vc-oi-volume-up' => 'Volume-up' ),
array( 'vc-oi vc-oi-doc' => 'Doc' ),
array( 'vc-oi vc-oi-quote-left-alt' => 'Quote-left-alt' ),
array( 'vc-oi vc-oi-minus-circle' => 'Minus-circle' ),
array( 'vc-oi vc-oi-cloud' => 'Cloud' ),
array( 'vc-oi vc-oi-rain' => 'Rain' ),
array( 'vc-oi vc-oi-bat-half' => 'Bat-half' ),
array( 'vc-oi vc-oi-cw' => 'Cw' ),
array( 'vc-oi vc-oi-headphones' => 'Headphones' ),
array( 'vc-oi vc-oi-doc-inv' => 'Doc-inv' ),
array( 'vc-oi vc-oi-quote-right-alt' => 'Quote-right-alt' ),
array( 'vc-oi vc-oi-help' => 'Help' ),
array( 'vc-oi vc-oi-info' => 'Info' ),
array( 'vc-oi vc-oi-pencil' => 'Pencil' ),
array( 'vc-oi vc-oi-doc-alt' => 'Doc-alt' ),
array( 'vc-oi vc-oi-clock' => 'Clock' ),
array( 'vc-oi vc-oi-loop' => 'Loop' ),
array( 'vc-oi vc-oi-bat-full' => 'Bat-full' ),
array( 'vc-oi vc-oi-flash' => 'Flash' ),
array( 'vc-oi vc-oi-moon' => 'Moon' ),
array( 'vc-oi vc-oi-bat-charge' => 'Bat-charge' ),
array( 'vc-oi vc-oi-loop-alt' => 'Loop-alt' ),
array( 'vc-oi vc-oi-lamp' => 'Lamp' ),
array( 'vc-oi vc-oi-doc-inv-alt' => 'Doc-inv-alt' ),
array( 'vc-oi vc-oi-pencil-neg' => 'Pencil-neg' ),
array( 'vc-oi vc-oi-home' => 'Home' ),
);
return array_merge( $icons, $openiconic_icons );
}
add_filter( 'vc_iconpicker-type-typicons', 'vc_iconpicker_type_typicons' );
/**
* Typicons icons from github.com/stephenhutchings/typicons.font
*
* @param $icons - taken from filter - vc_map param field settings['source']
* provided icons (default empty array). If array categorized it will
* auto-enable category dropdown
*
* @return array - of icons for iconpicker, can be categorized, or not.
* @since 4.4
*/
function vc_iconpicker_type_typicons( $icons ) {
$typicons_icons = array(
array( 'typcn typcn-adjust-brightness' => 'Adjust Brightness' ),
array( 'typcn typcn-adjust-contrast' => 'Adjust Contrast' ),
array( 'typcn typcn-anchor-outline' => 'Anchor Outline' ),
array( 'typcn typcn-anchor' => 'Anchor' ),
array( 'typcn typcn-archive' => 'Archive' ),
array( 'typcn typcn-arrow-back-outline' => 'Arrow Back Outline' ),
array( 'typcn typcn-arrow-back' => 'Arrow Back' ),
array( 'typcn typcn-arrow-down-outline' => 'Arrow Down Outline' ),
array( 'typcn typcn-arrow-down-thick' => 'Arrow Down Thick' ),
array( 'typcn typcn-arrow-down' => 'Arrow Down' ),
array( 'typcn typcn-arrow-forward-outline' => 'Arrow Forward Outline' ),
array( 'typcn typcn-arrow-forward' => 'Arrow Forward' ),
array( 'typcn typcn-arrow-left-outline' => 'Arrow Left Outline' ),
array( 'typcn typcn-arrow-left-thick' => 'Arrow Left Thick' ),
array( 'typcn typcn-arrow-left' => 'Arrow Left' ),
array( 'typcn typcn-arrow-loop-outline' => 'Arrow Loop Outline' ),
array( 'typcn typcn-arrow-loop' => 'Arrow Loop' ),
array( 'typcn typcn-arrow-maximise-outline' => 'Arrow Maximise Outline' ),
array( 'typcn typcn-arrow-maximise' => 'Arrow Maximise' ),
array( 'typcn typcn-arrow-minimise-outline' => 'Arrow Minimise Outline' ),
array( 'typcn typcn-arrow-minimise' => 'Arrow Minimise' ),
array( 'typcn typcn-arrow-move-outline' => 'Arrow Move Outline' ),
array( 'typcn typcn-arrow-move' => 'Arrow Move' ),
array( 'typcn typcn-arrow-repeat-outline' => 'Arrow Repeat Outline' ),
array( 'typcn typcn-arrow-repeat' => 'Arrow Repeat' ),
array( 'typcn typcn-arrow-right-outline' => 'Arrow Right Outline' ),
array( 'typcn typcn-arrow-right-thick' => 'Arrow Right Thick' ),
array( 'typcn typcn-arrow-right' => 'Arrow Right' ),
array( 'typcn typcn-arrow-shuffle' => 'Arrow Shuffle' ),
array( 'typcn typcn-arrow-sorted-down' => 'Arrow Sorted Down' ),
array( 'typcn typcn-arrow-sorted-up' => 'Arrow Sorted Up' ),
array( 'typcn typcn-arrow-sync-outline' => 'Arrow Sync Outline' ),
array( 'typcn typcn-arrow-sync' => 'Arrow Sync' ),
array( 'typcn typcn-arrow-unsorted' => 'Arrow Unsorted' ),
array( 'typcn typcn-arrow-up-outline' => 'Arrow Up Outline' ),
array( 'typcn typcn-arrow-up-thick' => 'Arrow Up Thick' ),
array( 'typcn typcn-arrow-up' => 'Arrow Up' ),
array( 'typcn typcn-at' => 'At' ),
array( 'typcn typcn-attachment-outline' => 'Attachment Outline' ),
array( 'typcn typcn-attachment' => 'Attachment' ),
array( 'typcn typcn-backspace-outline' => 'Backspace Outline' ),
array( 'typcn typcn-backspace' => 'Backspace' ),
array( 'typcn typcn-battery-charge' => 'Battery Charge' ),
array( 'typcn typcn-battery-full' => 'Battery Full' ),
array( 'typcn typcn-battery-high' => 'Battery High' ),
array( 'typcn typcn-battery-low' => 'Battery Low' ),
array( 'typcn typcn-battery-mid' => 'Battery Mid' ),
array( 'typcn typcn-beaker' => 'Beaker' ),
array( 'typcn typcn-beer' => 'Beer' ),
array( 'typcn typcn-bell' => 'Bell' ),
array( 'typcn typcn-book' => 'Book' ),
array( 'typcn typcn-bookmark' => 'Bookmark' ),
array( 'typcn typcn-briefcase' => 'Briefcase' ),
array( 'typcn typcn-brush' => 'Brush' ),
array( 'typcn typcn-business-card' => 'Business Card' ),
array( 'typcn typcn-calculator' => 'Calculator' ),
array( 'typcn typcn-calendar-outline' => 'Calendar Outline' ),
array( 'typcn typcn-calendar' => 'Calendar' ),
array( 'typcn typcn-camera-outline' => 'Camera Outline' ),
array( 'typcn typcn-camera' => 'Camera' ),
array( 'typcn typcn-cancel-outline' => 'Cancel Outline' ),
array( 'typcn typcn-cancel' => 'Cancel' ),
array( 'typcn typcn-chart-area-outline' => 'Chart Area Outline' ),
array( 'typcn typcn-chart-area' => 'Chart Area' ),
array( 'typcn typcn-chart-bar-outline' => 'Chart Bar Outline' ),
array( 'typcn typcn-chart-bar' => 'Chart Bar' ),
array( 'typcn typcn-chart-line-outline' => 'Chart Line Outline' ),
array( 'typcn typcn-chart-line' => 'Chart Line' ),
array( 'typcn typcn-chart-pie-outline' => 'Chart Pie Outline' ),
array( 'typcn typcn-chart-pie' => 'Chart Pie' ),
array( 'typcn typcn-chevron-left-outline' => 'Chevron Left Outline' ),
array( 'typcn typcn-chevron-left' => 'Chevron Left' ),
array( 'typcn typcn-chevron-right-outline' => 'Chevron Right Outline' ),
array( 'typcn typcn-chevron-right' => 'Chevron Right' ),
array( 'typcn typcn-clipboard' => 'Clipboard' ),
array( 'typcn typcn-cloud-storage' => 'Cloud Storage' ),
array( 'typcn typcn-cloud-storage-outline' => 'Cloud Storage Outline' ),
array( 'typcn typcn-code-outline' => 'Code Outline' ),
array( 'typcn typcn-code' => 'Code' ),
array( 'typcn typcn-coffee' => 'Coffee' ),
array( 'typcn typcn-cog-outline' => 'Cog Outline' ),
array( 'typcn typcn-cog' => 'Cog' ),
array( 'typcn typcn-compass' => 'Compass' ),
array( 'typcn typcn-contacts' => 'Contacts' ),
array( 'typcn typcn-credit-card' => 'Credit Card' ),
array( 'typcn typcn-css3' => 'Css3' ),
array( 'typcn typcn-database' => 'Database' ),
array( 'typcn typcn-delete-outline' => 'Delete Outline' ),
array( 'typcn typcn-delete' => 'Delete' ),
array( 'typcn typcn-device-desktop' => 'Device Desktop' ),
array( 'typcn typcn-device-laptop' => 'Device Laptop' ),
array( 'typcn typcn-device-phone' => 'Device Phone' ),
array( 'typcn typcn-device-tablet' => 'Device Tablet' ),
array( 'typcn typcn-directions' => 'Directions' ),
array( 'typcn typcn-divide-outline' => 'Divide Outline' ),
array( 'typcn typcn-divide' => 'Divide' ),
array( 'typcn typcn-document-add' => 'Document Add' ),
array( 'typcn typcn-document-delete' => 'Document Delete' ),
array( 'typcn typcn-document-text' => 'Document Text' ),
array( 'typcn typcn-document' => 'Document' ),
array( 'typcn typcn-download-outline' => 'Download Outline' ),
array( 'typcn typcn-download' => 'Download' ),
array( 'typcn typcn-dropbox' => 'Dropbox' ),
array( 'typcn typcn-edit' => 'Edit' ),
array( 'typcn typcn-eject-outline' => 'Eject Outline' ),
array( 'typcn typcn-eject' => 'Eject' ),
array( 'typcn typcn-equals-outline' => 'Equals Outline' ),
array( 'typcn typcn-equals' => 'Equals' ),
array( 'typcn typcn-export-outline' => 'Export Outline' ),
array( 'typcn typcn-export' => 'Export' ),
array( 'typcn typcn-eye-outline' => 'Eye Outline' ),
array( 'typcn typcn-eye' => 'Eye' ),
array( 'typcn typcn-feather' => 'Feather' ),
array( 'typcn typcn-film' => 'Film' ),
array( 'typcn typcn-filter' => 'Filter' ),
array( 'typcn typcn-flag-outline' => 'Flag Outline' ),
array( 'typcn typcn-flag' => 'Flag' ),
array( 'typcn typcn-flash-outline' => 'Flash Outline' ),
array( 'typcn typcn-flash' => 'Flash' ),
array( 'typcn typcn-flow-children' => 'Flow Children' ),
array( 'typcn typcn-flow-merge' => 'Flow Merge' ),
array( 'typcn typcn-flow-parallel' => 'Flow Parallel' ),
array( 'typcn typcn-flow-switch' => 'Flow Switch' ),
array( 'typcn typcn-folder-add' => 'Folder Add' ),
array( 'typcn typcn-folder-delete' => 'Folder Delete' ),
array( 'typcn typcn-folder-open' => 'Folder Open' ),
array( 'typcn typcn-folder' => 'Folder' ),
array( 'typcn typcn-gift' => 'Gift' ),
array( 'typcn typcn-globe-outline' => 'Globe Outline' ),
array( 'typcn typcn-globe' => 'Globe' ),
array( 'typcn typcn-group-outline' => 'Group Outline' ),
array( 'typcn typcn-group' => 'Group' ),
array( 'typcn typcn-headphones' => 'Headphones' ),
array( 'typcn typcn-heart-full-outline' => 'Heart Full Outline' ),
array( 'typcn typcn-heart-half-outline' => 'Heart Half Outline' ),
array( 'typcn typcn-heart-outline' => 'Heart Outline' ),
array( 'typcn typcn-heart' => 'Heart' ),
array( 'typcn typcn-home-outline' => 'Home Outline' ),
array( 'typcn typcn-home' => 'Home' ),
array( 'typcn typcn-html5' => 'Html5' ),
array( 'typcn typcn-image-outline' => 'Image Outline' ),
array( 'typcn typcn-image' => 'Image' ),
array( 'typcn typcn-infinity-outline' => 'Infinity Outline' ),
array( 'typcn typcn-infinity' => 'Infinity' ),
array( 'typcn typcn-info-large-outline' => 'Info Large Outline' ),
array( 'typcn typcn-info-large' => 'Info Large' ),
array( 'typcn typcn-info-outline' => 'Info Outline' ),
array( 'typcn typcn-info' => 'Info' ),
array( 'typcn typcn-input-checked-outline' => 'Input Checked Outline' ),
array( 'typcn typcn-input-checked' => 'Input Checked' ),
array( 'typcn typcn-key-outline' => 'Key Outline' ),
array( 'typcn typcn-key' => 'Key' ),
array( 'typcn typcn-keyboard' => 'Keyboard' ),
array( 'typcn typcn-leaf' => 'Leaf' ),
array( 'typcn typcn-lightbulb' => 'Lightbulb' ),
array( 'typcn typcn-link-outline' => 'Link Outline' ),
array( 'typcn typcn-link' => 'Link' ),
array( 'typcn typcn-location-arrow-outline' => 'Location Arrow Outline' ),
array( 'typcn typcn-location-arrow' => 'Location Arrow' ),
array( 'typcn typcn-location-outline' => 'Location Outline' ),
array( 'typcn typcn-location' => 'Location' ),
array( 'typcn typcn-lock-closed-outline' => 'Lock Closed Outline' ),
array( 'typcn typcn-lock-closed' => 'Lock Closed' ),
array( 'typcn typcn-lock-open-outline' => 'Lock Open Outline' ),
array( 'typcn typcn-lock-open' => 'Lock Open' ),
array( 'typcn typcn-mail' => 'Mail' ),
array( 'typcn typcn-map' => 'Map' ),
array( 'typcn typcn-media-eject-outline' => 'Media Eject Outline' ),
array( 'typcn typcn-media-eject' => 'Media Eject' ),
array( 'typcn typcn-media-fast-forward-outline' => 'Media Fast Forward Outline' ),
array( 'typcn typcn-media-fast-forward' => 'Media Fast Forward' ),
array( 'typcn typcn-media-pause-outline' => 'Media Pause Outline' ),
array( 'typcn typcn-media-pause' => 'Media Pause' ),
array( 'typcn typcn-media-play-outline' => 'Media Play Outline' ),
array( 'typcn typcn-media-play-reverse-outline' => 'Media Play Reverse Outline' ),
array( 'typcn typcn-media-play-reverse' => 'Media Play Reverse' ),
array( 'typcn typcn-media-play' => 'Media Play' ),
array( 'typcn typcn-media-record-outline' => 'Media Record Outline' ),
array( 'typcn typcn-media-record' => 'Media Record' ),
array( 'typcn typcn-media-rewind-outline' => 'Media Rewind Outline' ),
array( 'typcn typcn-media-rewind' => 'Media Rewind' ),
array( 'typcn typcn-media-stop-outline' => 'Media Stop Outline' ),
array( 'typcn typcn-media-stop' => 'Media Stop' ),
array( 'typcn typcn-message-typing' => 'Message Typing' ),
array( 'typcn typcn-message' => 'Message' ),
array( 'typcn typcn-messages' => 'Messages' ),
array( 'typcn typcn-microphone-outline' => 'Microphone Outline' ),
array( 'typcn typcn-microphone' => 'Microphone' ),
array( 'typcn typcn-minus-outline' => 'Minus Outline' ),
array( 'typcn typcn-minus' => 'Minus' ),
array( 'typcn typcn-mortar-board' => 'Mortar Board' ),
array( 'typcn typcn-news' => 'News' ),
array( 'typcn typcn-notes-outline' => 'Notes Outline' ),
array( 'typcn typcn-notes' => 'Notes' ),
array( 'typcn typcn-pen' => 'Pen' ),
array( 'typcn typcn-pencil' => 'Pencil' ),
array( 'typcn typcn-phone-outline' => 'Phone Outline' ),
array( 'typcn typcn-phone' => 'Phone' ),
array( 'typcn typcn-pi-outline' => 'Pi Outline' ),
array( 'typcn typcn-pi' => 'Pi' ),
array( 'typcn typcn-pin-outline' => 'Pin Outline' ),
array( 'typcn typcn-pin' => 'Pin' ),
array( 'typcn typcn-pipette' => 'Pipette' ),
array( 'typcn typcn-plane-outline' => 'Plane Outline' ),
array( 'typcn typcn-plane' => 'Plane' ),
array( 'typcn typcn-plug' => 'Plug' ),
array( 'typcn typcn-plus-outline' => 'Plus Outline' ),
array( 'typcn typcn-plus' => 'Plus' ),
array( 'typcn typcn-point-of-interest-outline' => 'Point Of Interest Outline' ),
array( 'typcn typcn-point-of-interest' => 'Point Of Interest' ),
array( 'typcn typcn-power-outline' => 'Power Outline' ),
array( 'typcn typcn-power' => 'Power' ),
array( 'typcn typcn-printer' => 'Printer' ),
array( 'typcn typcn-puzzle-outline' => 'Puzzle Outline' ),
array( 'typcn typcn-puzzle' => 'Puzzle' ),
array( 'typcn typcn-radar-outline' => 'Radar Outline' ),
array( 'typcn typcn-radar' => 'Radar' ),
array( 'typcn typcn-refresh-outline' => 'Refresh Outline' ),
array( 'typcn typcn-refresh' => 'Refresh' ),
array( 'typcn typcn-rss-outline' => 'Rss Outline' ),
array( 'typcn typcn-rss' => 'Rss' ),
array( 'typcn typcn-scissors-outline' => 'Scissors Outline' ),
array( 'typcn typcn-scissors' => 'Scissors' ),
array( 'typcn typcn-shopping-bag' => 'Shopping Bag' ),
array( 'typcn typcn-shopping-cart' => 'Shopping Cart' ),
array( 'typcn typcn-social-at-circular' => 'Social At Circular' ),
array( 'typcn typcn-social-dribbble-circular' => 'Social Dribbble Circular' ),
array( 'typcn typcn-social-dribbble' => 'Social Dribbble' ),
array( 'typcn typcn-social-facebook-circular' => 'Social Facebook Circular' ),
array( 'typcn typcn-social-facebook' => 'Social Facebook' ),
array( 'typcn typcn-social-flickr-circular' => 'Social Flickr Circular' ),
array( 'typcn typcn-social-flickr' => 'Social Flickr' ),
array( 'typcn typcn-social-github-circular' => 'Social Github Circular' ),
array( 'typcn typcn-social-github' => 'Social Github' ),
array( 'typcn typcn-social-google-plus-circular' => 'Social Google Plus Circular' ),
array( 'typcn typcn-social-google-plus' => 'Social Google Plus' ),
array( 'typcn typcn-social-instagram-circular' => 'Social Instagram Circular' ),
array( 'typcn typcn-social-instagram' => 'Social Instagram' ),
array( 'typcn typcn-social-last-fm-circular' => 'Social Last Fm Circular' ),
array( 'typcn typcn-social-last-fm' => 'Social Last Fm' ),
array( 'typcn typcn-social-linkedin-circular' => 'Social Linkedin Circular' ),
array( 'typcn typcn-social-linkedin' => 'Social Linkedin' ),
array( 'typcn typcn-social-pinterest-circular' => 'Social Pinterest Circular' ),
array( 'typcn typcn-social-pinterest' => 'Social Pinterest' ),
array( 'typcn typcn-social-skype-outline' => 'Social Skype Outline' ),
array( 'typcn typcn-social-skype' => 'Social Skype' ),
array( 'typcn typcn-social-tumbler-circular' => 'Social Tumbler Circular' ),
array( 'typcn typcn-social-tumbler' => 'Social Tumbler' ),
array( 'typcn typcn-social-twitter-circular' => 'Social Twitter Circular' ),
array( 'typcn typcn-social-twitter' => 'Social Twitter' ),
array( 'typcn typcn-social-vimeo-circular' => 'Social Vimeo Circular' ),
array( 'typcn typcn-social-vimeo' => 'Social Vimeo' ),
array( 'typcn typcn-social-youtube-circular' => 'Social Youtube Circular' ),
array( 'typcn typcn-social-youtube' => 'Social Youtube' ),
array( 'typcn typcn-sort-alphabetically-outline' => 'Sort Alphabetically Outline' ),
array( 'typcn typcn-sort-alphabetically' => 'Sort Alphabetically' ),
array( 'typcn typcn-sort-numerically-outline' => 'Sort Numerically Outline' ),
array( 'typcn typcn-sort-numerically' => 'Sort Numerically' ),
array( 'typcn typcn-spanner-outline' => 'Spanner Outline' ),
array( 'typcn typcn-spanner' => 'Spanner' ),
array( 'typcn typcn-spiral' => 'Spiral' ),
array( 'typcn typcn-star-full-outline' => 'Star Full Outline' ),
array( 'typcn typcn-star-half-outline' => 'Star Half Outline' ),
array( 'typcn typcn-star-half' => 'Star Half' ),
array( 'typcn typcn-star-outline' => 'Star Outline' ),
array( 'typcn typcn-star' => 'Star' ),
array( 'typcn typcn-starburst-outline' => 'Starburst Outline' ),
array( 'typcn typcn-starburst' => 'Starburst' ),
array( 'typcn typcn-stopwatch' => 'Stopwatch' ),
array( 'typcn typcn-support' => 'Support' ),
array( 'typcn typcn-tabs-outline' => 'Tabs Outline' ),
array( 'typcn typcn-tag' => 'Tag' ),
array( 'typcn typcn-tags' => 'Tags' ),
array( 'typcn typcn-th-large-outline' => 'Th Large Outline' ),
array( 'typcn typcn-th-large' => 'Th Large' ),
array( 'typcn typcn-th-list-outline' => 'Th List Outline' ),
array( 'typcn typcn-th-list' => 'Th List' ),
array( 'typcn typcn-th-menu-outline' => 'Th Menu Outline' ),
array( 'typcn typcn-th-menu' => 'Th Menu' ),
array( 'typcn typcn-th-small-outline' => 'Th Small Outline' ),
array( 'typcn typcn-th-small' => 'Th Small' ),
array( 'typcn typcn-thermometer' => 'Thermometer' ),
array( 'typcn typcn-thumbs-down' => 'Thumbs Down' ),
array( 'typcn typcn-thumbs-ok' => 'Thumbs Ok' ),
array( 'typcn typcn-thumbs-up' => 'Thumbs Up' ),
array( 'typcn typcn-tick-outline' => 'Tick Outline' ),
array( 'typcn typcn-tick' => 'Tick' ),
array( 'typcn typcn-ticket' => 'Ticket' ),
array( 'typcn typcn-time' => 'Time' ),
array( 'typcn typcn-times-outline' => 'Times Outline' ),
array( 'typcn typcn-times' => 'Times' ),
array( 'typcn typcn-trash' => 'Trash' ),
array( 'typcn typcn-tree' => 'Tree' ),
array( 'typcn typcn-upload-outline' => 'Upload Outline' ),
array( 'typcn typcn-upload' => 'Upload' ),
array( 'typcn typcn-user-add-outline' => 'User Add Outline' ),
array( 'typcn typcn-user-add' => 'User Add' ),
array( 'typcn typcn-user-delete-outline' => 'User Delete Outline' ),
array( 'typcn typcn-user-delete' => 'User Delete' ),
array( 'typcn typcn-user-outline' => 'User Outline' ),
array( 'typcn typcn-user' => 'User' ),
array( 'typcn typcn-vendor-android' => 'Vendor Android' ),
array( 'typcn typcn-vendor-apple' => 'Vendor Apple' ),
array( 'typcn typcn-vendor-microsoft' => 'Vendor Microsoft' ),
array( 'typcn typcn-video-outline' => 'Video Outline' ),
array( 'typcn typcn-video' => 'Video' ),
array( 'typcn typcn-volume-down' => 'Volume Down' ),
array( 'typcn typcn-volume-mute' => 'Volume Mute' ),
array( 'typcn typcn-volume-up' => 'Volume Up' ),
array( 'typcn typcn-volume' => 'Volume' ),
array( 'typcn typcn-warning-outline' => 'Warning Outline' ),
array( 'typcn typcn-warning' => 'Warning' ),
array( 'typcn typcn-watch' => 'Watch' ),
array( 'typcn typcn-waves-outline' => 'Waves Outline' ),
array( 'typcn typcn-waves' => 'Waves' ),
array( 'typcn typcn-weather-cloudy' => 'Weather Cloudy' ),
array( 'typcn typcn-weather-downpour' => 'Weather Downpour' ),
array( 'typcn typcn-weather-night' => 'Weather Night' ),
array( 'typcn typcn-weather-partly-sunny' => 'Weather Partly Sunny' ),
array( 'typcn typcn-weather-shower' => 'Weather Shower' ),
array( 'typcn typcn-weather-snow' => 'Weather Snow' ),
array( 'typcn typcn-weather-stormy' => 'Weather Stormy' ),
array( 'typcn typcn-weather-sunny' => 'Weather Sunny' ),
array( 'typcn typcn-weather-windy-cloudy' => 'Weather Windy Cloudy' ),
array( 'typcn typcn-weather-windy' => 'Weather Windy' ),
array( 'typcn typcn-wi-fi-outline' => 'Wi Fi Outline' ),
array( 'typcn typcn-wi-fi' => 'Wi Fi' ),
array( 'typcn typcn-wine' => 'Wine' ),
array( 'typcn typcn-world-outline' => 'World Outline' ),
array( 'typcn typcn-world' => 'World' ),
array( 'typcn typcn-zoom-in-outline' => 'Zoom In Outline' ),
array( 'typcn typcn-zoom-in' => 'Zoom In' ),
array( 'typcn typcn-zoom-out-outline' => 'Zoom Out Outline' ),
array( 'typcn typcn-zoom-out' => 'Zoom Out' ),
array( 'typcn typcn-zoom-outline' => 'Zoom Outline' ),
array( 'typcn typcn-zoom' => 'Zoom' ),
);
return array_merge( $icons, $typicons_icons );
}
add_filter( 'vc_iconpicker-type-entypo', 'vc_iconpicker_type_entypo' );
/**
* Entypo icons from github.com/danielbruce/entypo
*
* @param $icons - taken from filter - vc_map param field settings['source']
* provided icons (default empty array). If array categorized it will
* auto-enable category dropdown
*
* @return array - of icons for iconpicker, can be categorized, or not.
* @since 4.4
*/
function vc_iconpicker_type_entypo( $icons ) {
$entypo_icons = array(
array( 'entypo-icon entypo-icon-note' => 'Note' ),
array( 'entypo-icon entypo-icon-note-beamed' => 'Note Beamed' ),
array( 'entypo-icon entypo-icon-music' => 'Music' ),
array( 'entypo-icon entypo-icon-search' => 'Search' ),
array( 'entypo-icon entypo-icon-flashlight' => 'Flashlight' ),
array( 'entypo-icon entypo-icon-mail' => 'Mail' ),
array( 'entypo-icon entypo-icon-heart' => 'Heart' ),
array( 'entypo-icon entypo-icon-heart-empty' => 'Heart Empty' ),
array( 'entypo-icon entypo-icon-star' => 'Star' ),
array( 'entypo-icon entypo-icon-star-empty' => 'Star Empty' ),
array( 'entypo-icon entypo-icon-user' => 'User' ),
array( 'entypo-icon entypo-icon-users' => 'Users' ),
array( 'entypo-icon entypo-icon-user-add' => 'User Add' ),
array( 'entypo-icon entypo-icon-video' => 'Video' ),
array( 'entypo-icon entypo-icon-picture' => 'Picture' ),
array( 'entypo-icon entypo-icon-camera' => 'Camera' ),
array( 'entypo-icon entypo-icon-layout' => 'Layout' ),
array( 'entypo-icon entypo-icon-menu' => 'Menu' ),
array( 'entypo-icon entypo-icon-check' => 'Check' ),
array( 'entypo-icon entypo-icon-cancel' => 'Cancel' ),
array( 'entypo-icon entypo-icon-cancel-circled' => 'Cancel Circled' ),
array( 'entypo-icon entypo-icon-cancel-squared' => 'Cancel Squared' ),
array( 'entypo-icon entypo-icon-plus' => 'Plus' ),
array( 'entypo-icon entypo-icon-plus-circled' => 'Plus Circled' ),
array( 'entypo-icon entypo-icon-plus-squared' => 'Plus Squared' ),
array( 'entypo-icon entypo-icon-minus' => 'Minus' ),
array( 'entypo-icon entypo-icon-minus-circled' => 'Minus Circled' ),
array( 'entypo-icon entypo-icon-minus-squared' => 'Minus Squared' ),
array( 'entypo-icon entypo-icon-help' => 'Help' ),
array( 'entypo-icon entypo-icon-help-circled' => 'Help Circled' ),
array( 'entypo-icon entypo-icon-info' => 'Info' ),
array( 'entypo-icon entypo-icon-info-circled' => 'Info Circled' ),
array( 'entypo-icon entypo-icon-back' => 'Back' ),
array( 'entypo-icon entypo-icon-home' => 'Home' ),
array( 'entypo-icon entypo-icon-link' => 'Link' ),
array( 'entypo-icon entypo-icon-attach' => 'Attach' ),
array( 'entypo-icon entypo-icon-lock' => 'Lock' ),
array( 'entypo-icon entypo-icon-lock-open' => 'Lock Open' ),
array( 'entypo-icon entypo-icon-eye' => 'Eye' ),
array( 'entypo-icon entypo-icon-tag' => 'Tag' ),
array( 'entypo-icon entypo-icon-bookmark' => 'Bookmark' ),
array( 'entypo-icon entypo-icon-bookmarks' => 'Bookmarks' ),
array( 'entypo-icon entypo-icon-flag' => 'Flag' ),
array( 'entypo-icon entypo-icon-thumbs-up' => 'Thumbs Up' ),
array( 'entypo-icon entypo-icon-thumbs-down' => 'Thumbs Down' ),
array( 'entypo-icon entypo-icon-download' => 'Download' ),
array( 'entypo-icon entypo-icon-upload' => 'Upload' ),
array( 'entypo-icon entypo-icon-upload-cloud' => 'Upload Cloud' ),
array( 'entypo-icon entypo-icon-reply' => 'Reply' ),
array( 'entypo-icon entypo-icon-reply-all' => 'Reply All' ),
array( 'entypo-icon entypo-icon-forward' => 'Forward' ),
array( 'entypo-icon entypo-icon-quote' => 'Quote' ),
array( 'entypo-icon entypo-icon-code' => 'Code' ),
array( 'entypo-icon entypo-icon-export' => 'Export' ),
array( 'entypo-icon entypo-icon-pencil' => 'Pencil' ),
array( 'entypo-icon entypo-icon-feather' => 'Feather' ),
array( 'entypo-icon entypo-icon-print' => 'Print' ),
array( 'entypo-icon entypo-icon-retweet' => 'Retweet' ),
array( 'entypo-icon entypo-icon-keyboard' => 'Keyboard' ),
array( 'entypo-icon entypo-icon-comment' => 'Comment' ),
array( 'entypo-icon entypo-icon-chat' => 'Chat' ),
array( 'entypo-icon entypo-icon-bell' => 'Bell' ),
array( 'entypo-icon entypo-icon-attention' => 'Attention' ),
array( 'entypo-icon entypo-icon-alert' => 'Alert' ),
array( 'entypo-icon entypo-icon-vcard' => 'Vcard' ),
array( 'entypo-icon entypo-icon-address' => 'Address' ),
array( 'entypo-icon entypo-icon-location' => 'Location' ),
array( 'entypo-icon entypo-icon-map' => 'Map' ),
array( 'entypo-icon entypo-icon-direction' => 'Direction' ),
array( 'entypo-icon entypo-icon-compass' => 'Compass' ),
array( 'entypo-icon entypo-icon-cup' => 'Cup' ),
array( 'entypo-icon entypo-icon-trash' => 'Trash' ),
array( 'entypo-icon entypo-icon-doc' => 'Doc' ),
array( 'entypo-icon entypo-icon-docs' => 'Docs' ),
array( 'entypo-icon entypo-icon-doc-landscape' => 'Doc Landscape' ),
array( 'entypo-icon entypo-icon-doc-text' => 'Doc Text' ),
array( 'entypo-icon entypo-icon-doc-text-inv' => 'Doc Text Inv' ),
array( 'entypo-icon entypo-icon-newspaper' => 'Newspaper' ),
array( 'entypo-icon entypo-icon-book-open' => 'Book Open' ),
array( 'entypo-icon entypo-icon-book' => 'Book' ),
array( 'entypo-icon entypo-icon-folder' => 'Folder' ),
array( 'entypo-icon entypo-icon-archive' => 'Archive' ),
array( 'entypo-icon entypo-icon-box' => 'Box' ),
array( 'entypo-icon entypo-icon-rss' => 'Rss' ),
array( 'entypo-icon entypo-icon-phone' => 'Phone' ),
array( 'entypo-icon entypo-icon-cog' => 'Cog' ),
array( 'entypo-icon entypo-icon-tools' => 'Tools' ),
array( 'entypo-icon entypo-icon-share' => 'Share' ),
array( 'entypo-icon entypo-icon-shareable' => 'Shareable' ),
array( 'entypo-icon entypo-icon-basket' => 'Basket' ),
array( 'entypo-icon entypo-icon-bag' => 'Bag' ),
array( 'entypo-icon entypo-icon-calendar' => 'Calendar' ),
array( 'entypo-icon entypo-icon-login' => 'Login' ),
array( 'entypo-icon entypo-icon-logout' => 'Logout' ),
array( 'entypo-icon entypo-icon-mic' => 'Mic' ),
array( 'entypo-icon entypo-icon-mute' => 'Mute' ),
array( 'entypo-icon entypo-icon-sound' => 'Sound' ),
array( 'entypo-icon entypo-icon-volume' => 'Volume' ),
array( 'entypo-icon entypo-icon-clock' => 'Clock' ),
array( 'entypo-icon entypo-icon-hourglass' => 'Hourglass' ),
array( 'entypo-icon entypo-icon-lamp' => 'Lamp' ),
array( 'entypo-icon entypo-icon-light-down' => 'Light Down' ),
array( 'entypo-icon entypo-icon-light-up' => 'Light Up' ),
array( 'entypo-icon entypo-icon-adjust' => 'Adjust' ),
array( 'entypo-icon entypo-icon-block' => 'Block' ),
array( 'entypo-icon entypo-icon-resize-full' => 'Resize Full' ),
array( 'entypo-icon entypo-icon-resize-small' => 'Resize Small' ),
array( 'entypo-icon entypo-icon-popup' => 'Popup' ),
array( 'entypo-icon entypo-icon-publish' => 'Publish' ),
array( 'entypo-icon entypo-icon-window' => 'Window' ),
array( 'entypo-icon entypo-icon-arrow-combo' => 'Arrow Combo' ),
array( 'entypo-icon entypo-icon-down-circled' => 'Down Circled' ),
array( 'entypo-icon entypo-icon-left-circled' => 'Left Circled' ),
array( 'entypo-icon entypo-icon-right-circled' => 'Right Circled' ),
array( 'entypo-icon entypo-icon-up-circled' => 'Up Circled' ),
array( 'entypo-icon entypo-icon-down-open' => 'Down Open' ),
array( 'entypo-icon entypo-icon-left-open' => 'Left Open' ),
array( 'entypo-icon entypo-icon-right-open' => 'Right Open' ),
array( 'entypo-icon entypo-icon-up-open' => 'Up Open' ),
array( 'entypo-icon entypo-icon-down-open-mini' => 'Down Open Mini' ),
array( 'entypo-icon entypo-icon-left-open-mini' => 'Left Open Mini' ),
array( 'entypo-icon entypo-icon-right-open-mini' => 'Right Open Mini' ),
array( 'entypo-icon entypo-icon-up-open-mini' => 'Up Open Mini' ),
array( 'entypo-icon entypo-icon-down-open-big' => 'Down Open Big' ),
array( 'entypo-icon entypo-icon-left-open-big' => 'Left Open Big' ),
array( 'entypo-icon entypo-icon-right-open-big' => 'Right Open Big' ),
array( 'entypo-icon entypo-icon-up-open-big' => 'Up Open Big' ),
array( 'entypo-icon entypo-icon-down' => 'Down' ),
array( 'entypo-icon entypo-icon-left' => 'Left' ),
array( 'entypo-icon entypo-icon-right' => 'Right' ),
array( 'entypo-icon entypo-icon-up' => 'Up' ),
array( 'entypo-icon entypo-icon-down-dir' => 'Down Dir' ),
array( 'entypo-icon entypo-icon-left-dir' => 'Left Dir' ),
array( 'entypo-icon entypo-icon-right-dir' => 'Right Dir' ),
array( 'entypo-icon entypo-icon-up-dir' => 'Up Dir' ),
array( 'entypo-icon entypo-icon-down-bold' => 'Down Bold' ),
array( 'entypo-icon entypo-icon-left-bold' => 'Left Bold' ),
array( 'entypo-icon entypo-icon-right-bold' => 'Right Bold' ),
array( 'entypo-icon entypo-icon-up-bold' => 'Up Bold' ),
array( 'entypo-icon entypo-icon-down-thin' => 'Down Thin' ),
array( 'entypo-icon entypo-icon-left-thin' => 'Left Thin' ),
array( 'entypo-icon entypo-icon-right-thin' => 'Right Thin' ),
array( 'entypo-icon entypo-icon-up-thin' => 'Up Thin' ),
array( 'entypo-icon entypo-icon-ccw' => 'Ccw' ),
array( 'entypo-icon entypo-icon-cw' => 'Cw' ),
array( 'entypo-icon entypo-icon-arrows-ccw' => 'Arrows Ccw' ),
array( 'entypo-icon entypo-icon-level-down' => 'Level Down' ),
array( 'entypo-icon entypo-icon-level-up' => 'Level Up' ),
array( 'entypo-icon entypo-icon-shuffle' => 'Shuffle' ),
array( 'entypo-icon entypo-icon-loop' => 'Loop' ),
array( 'entypo-icon entypo-icon-switch' => 'Switch' ),
array( 'entypo-icon entypo-icon-play' => 'Play' ),
array( 'entypo-icon entypo-icon-stop' => 'Stop' ),
array( 'entypo-icon entypo-icon-pause' => 'Pause' ),
array( 'entypo-icon entypo-icon-record' => 'Record' ),
array( 'entypo-icon entypo-icon-to-end' => 'To End' ),
array( 'entypo-icon entypo-icon-to-start' => 'To Start' ),
array( 'entypo-icon entypo-icon-fast-forward' => 'Fast Forward' ),
array( 'entypo-icon entypo-icon-fast-backward' => 'Fast Backward' ),
array( 'entypo-icon entypo-icon-progress-0' => 'Progress 0' ),
array( 'entypo-icon entypo-icon-progress-1' => 'Progress 1' ),
array( 'entypo-icon entypo-icon-progress-2' => 'Progress 2' ),
array( 'entypo-icon entypo-icon-progress-3' => 'Progress 3' ),
array( 'entypo-icon entypo-icon-target' => 'Target' ),
array( 'entypo-icon entypo-icon-palette' => 'Palette' ),
array( 'entypo-icon entypo-icon-list' => 'List' ),
array( 'entypo-icon entypo-icon-list-add' => 'List Add' ),
array( 'entypo-icon entypo-icon-signal' => 'Signal' ),
array( 'entypo-icon entypo-icon-trophy' => 'Trophy' ),
array( 'entypo-icon entypo-icon-battery' => 'Battery' ),
array( 'entypo-icon entypo-icon-back-in-time' => 'Back In Time' ),
array( 'entypo-icon entypo-icon-monitor' => 'Monitor' ),
array( 'entypo-icon entypo-icon-mobile' => 'Mobile' ),
array( 'entypo-icon entypo-icon-network' => 'Network' ),
array( 'entypo-icon entypo-icon-cd' => 'Cd' ),
array( 'entypo-icon entypo-icon-inbox' => 'Inbox' ),
array( 'entypo-icon entypo-icon-install' => 'Install' ),
array( 'entypo-icon entypo-icon-globe' => 'Globe' ),
array( 'entypo-icon entypo-icon-cloud' => 'Cloud' ),
array( 'entypo-icon entypo-icon-cloud-thunder' => 'Cloud Thunder' ),
array( 'entypo-icon entypo-icon-flash' => 'Flash' ),
array( 'entypo-icon entypo-icon-moon' => 'Moon' ),
array( 'entypo-icon entypo-icon-flight' => 'Flight' ),
array( 'entypo-icon entypo-icon-paper-plane' => 'Paper Plane' ),
array( 'entypo-icon entypo-icon-leaf' => 'Leaf' ),
array( 'entypo-icon entypo-icon-lifebuoy' => 'Lifebuoy' ),
array( 'entypo-icon entypo-icon-mouse' => 'Mouse' ),
array( 'entypo-icon entypo-icon-briefcase' => 'Briefcase' ),
array( 'entypo-icon entypo-icon-suitcase' => 'Suitcase' ),
array( 'entypo-icon entypo-icon-dot' => 'Dot' ),
array( 'entypo-icon entypo-icon-dot-2' => 'Dot 2' ),
array( 'entypo-icon entypo-icon-dot-3' => 'Dot 3' ),
array( 'entypo-icon entypo-icon-brush' => 'Brush' ),
array( 'entypo-icon entypo-icon-magnet' => 'Magnet' ),
array( 'entypo-icon entypo-icon-infinity' => 'Infinity' ),
array( 'entypo-icon entypo-icon-erase' => 'Erase' ),
array( 'entypo-icon entypo-icon-chart-pie' => 'Chart Pie' ),
array( 'entypo-icon entypo-icon-chart-line' => 'Chart Line' ),
array( 'entypo-icon entypo-icon-chart-bar' => 'Chart Bar' ),
array( 'entypo-icon entypo-icon-chart-area' => 'Chart Area' ),
array( 'entypo-icon entypo-icon-tape' => 'Tape' ),
array( 'entypo-icon entypo-icon-graduation-cap' => 'Graduation Cap' ),
array( 'entypo-icon entypo-icon-language' => 'Language' ),
array( 'entypo-icon entypo-icon-ticket' => 'Ticket' ),
array( 'entypo-icon entypo-icon-water' => 'Water' ),
array( 'entypo-icon entypo-icon-droplet' => 'Droplet' ),
array( 'entypo-icon entypo-icon-air' => 'Air' ),
array( 'entypo-icon entypo-icon-credit-card' => 'Credit Card' ),
array( 'entypo-icon entypo-icon-floppy' => 'Floppy' ),
array( 'entypo-icon entypo-icon-clipboard' => 'Clipboard' ),
array( 'entypo-icon entypo-icon-megaphone' => 'Megaphone' ),
array( 'entypo-icon entypo-icon-database' => 'Database' ),
array( 'entypo-icon entypo-icon-drive' => 'Drive' ),
array( 'entypo-icon entypo-icon-bucket' => 'Bucket' ),
array( 'entypo-icon entypo-icon-thermometer' => 'Thermometer' ),
array( 'entypo-icon entypo-icon-key' => 'Key' ),
array( 'entypo-icon entypo-icon-flow-cascade' => 'Flow Cascade' ),
array( 'entypo-icon entypo-icon-flow-branch' => 'Flow Branch' ),
array( 'entypo-icon entypo-icon-flow-tree' => 'Flow Tree' ),
array( 'entypo-icon entypo-icon-flow-line' => 'Flow Line' ),
array( 'entypo-icon entypo-icon-flow-parallel' => 'Flow Parallel' ),
array( 'entypo-icon entypo-icon-rocket' => 'Rocket' ),
array( 'entypo-icon entypo-icon-gauge' => 'Gauge' ),
array( 'entypo-icon entypo-icon-traffic-cone' => 'Traffic Cone' ),
array( 'entypo-icon entypo-icon-cc' => 'Cc' ),
array( 'entypo-icon entypo-icon-cc-by' => 'Cc By' ),
array( 'entypo-icon entypo-icon-cc-nc' => 'Cc Nc' ),
array( 'entypo-icon entypo-icon-cc-nc-eu' => 'Cc Nc Eu' ),
array( 'entypo-icon entypo-icon-cc-nc-jp' => 'Cc Nc Jp' ),
array( 'entypo-icon entypo-icon-cc-sa' => 'Cc Sa' ),
array( 'entypo-icon entypo-icon-cc-nd' => 'Cc Nd' ),
array( 'entypo-icon entypo-icon-cc-pd' => 'Cc Pd' ),
array( 'entypo-icon entypo-icon-cc-zero' => 'Cc Zero' ),
array( 'entypo-icon entypo-icon-cc-share' => 'Cc Share' ),
array( 'entypo-icon entypo-icon-cc-remix' => 'Cc Remix' ),
array( 'entypo-icon entypo-icon-github' => 'Github' ),
array( 'entypo-icon entypo-icon-github-circled' => 'Github Circled' ),
array( 'entypo-icon entypo-icon-flickr' => 'Flickr' ),
array( 'entypo-icon entypo-icon-flickr-circled' => 'Flickr Circled' ),
array( 'entypo-icon entypo-icon-vimeo' => 'Vimeo' ),
array( 'entypo-icon entypo-icon-vimeo-circled' => 'Vimeo Circled' ),
array( 'entypo-icon entypo-icon-twitter' => 'Twitter' ),
array( 'entypo-icon entypo-icon-twitter-circled' => 'Twitter Circled' ),
array( 'entypo-icon entypo-icon-facebook' => 'Facebook' ),
array( 'entypo-icon entypo-icon-facebook-circled' => 'Facebook Circled' ),
array( 'entypo-icon entypo-icon-facebook-squared' => 'Facebook Squared' ),
array( 'entypo-icon entypo-icon-gplus' => 'Gplus' ),
array( 'entypo-icon entypo-icon-gplus-circled' => 'Gplus Circled' ),
array( 'entypo-icon entypo-icon-pinterest' => 'Pinterest' ),
array( 'entypo-icon entypo-icon-pinterest-circled' => 'Pinterest Circled' ),
array( 'entypo-icon entypo-icon-tumblr' => 'Tumblr' ),
array( 'entypo-icon entypo-icon-tumblr-circled' => 'Tumblr Circled' ),
array( 'entypo-icon entypo-icon-linkedin' => 'Linkedin' ),
array( 'entypo-icon entypo-icon-linkedin-circled' => 'Linkedin Circled' ),
array( 'entypo-icon entypo-icon-dribbble' => 'Dribbble' ),
array( 'entypo-icon entypo-icon-dribbble-circled' => 'Dribbble Circled' ),
array( 'entypo-icon entypo-icon-stumbleupon' => 'Stumbleupon' ),
array( 'entypo-icon entypo-icon-stumbleupon-circled' => 'Stumbleupon Circled' ),
array( 'entypo-icon entypo-icon-lastfm' => 'Lastfm' ),
array( 'entypo-icon entypo-icon-lastfm-circled' => 'Lastfm Circled' ),
array( 'entypo-icon entypo-icon-rdio' => 'Rdio' ),
array( 'entypo-icon entypo-icon-rdio-circled' => 'Rdio Circled' ),
array( 'entypo-icon entypo-icon-spotify' => 'Spotify' ),
array( 'entypo-icon entypo-icon-spotify-circled' => 'Spotify Circled' ),
array( 'entypo-icon entypo-icon-qq' => 'Qq' ),
array( 'entypo-icon entypo-icon-instagrem' => 'Instagrem' ),
array( 'entypo-icon entypo-icon-dropbox' => 'Dropbox' ),
array( 'entypo-icon entypo-icon-evernote' => 'Evernote' ),
array( 'entypo-icon entypo-icon-flattr' => 'Flattr' ),
array( 'entypo-icon entypo-icon-skype' => 'Skype' ),
array( 'entypo-icon entypo-icon-skype-circled' => 'Skype Circled' ),
array( 'entypo-icon entypo-icon-renren' => 'Renren' ),
array( 'entypo-icon entypo-icon-sina-weibo' => 'Sina Weibo' ),
array( 'entypo-icon entypo-icon-paypal' => 'Paypal' ),
array( 'entypo-icon entypo-icon-picasa' => 'Picasa' ),
array( 'entypo-icon entypo-icon-soundcloud' => 'Soundcloud' ),
array( 'entypo-icon entypo-icon-mixi' => 'Mixi' ),
array( 'entypo-icon entypo-icon-behance' => 'Behance' ),
array( 'entypo-icon entypo-icon-google-circles' => 'Google Circles' ),
array( 'entypo-icon entypo-icon-vkontakte' => 'Vkontakte' ),
array( 'entypo-icon entypo-icon-smashing' => 'Smashing' ),
array( 'entypo-icon entypo-icon-sweden' => 'Sweden' ),
array( 'entypo-icon entypo-icon-db-shape' => 'Db Shape' ),
array( 'entypo-icon entypo-icon-logo-db' => 'Logo Db' ),
);
return array_merge( $icons, $entypo_icons );
}
add_filter( 'vc_iconpicker-type-linecons', 'vc_iconpicker_type_linecons' );
/**
* Linecons icons from fontello.com
*
* @param $icons - taken from filter - vc_map param field settings['source']
* provided icons (default empty array). If array categorized it will
* auto-enable category dropdown
*
* @return array - of icons for iconpicker, can be categorized, or not.
* @since 4.4
*/
function vc_iconpicker_type_linecons( $icons ) {
$linecons_icons = array(
array( 'vc_li vc_li-heart' => 'Heart' ),
array( 'vc_li vc_li-cloud' => 'Cloud' ),
array( 'vc_li vc_li-star' => 'Star' ),
array( 'vc_li vc_li-tv' => 'Tv' ),
array( 'vc_li vc_li-sound' => 'Sound' ),
array( 'vc_li vc_li-video' => 'Video' ),
array( 'vc_li vc_li-trash' => 'Trash' ),
array( 'vc_li vc_li-user' => 'User' ),
array( 'vc_li vc_li-key' => 'Key' ),
array( 'vc_li vc_li-search' => 'Search' ),
array( 'vc_li vc_li-settings' => 'Settings' ),
array( 'vc_li vc_li-camera' => 'Camera' ),
array( 'vc_li vc_li-tag' => 'Tag' ),
array( 'vc_li vc_li-lock' => 'Lock' ),
array( 'vc_li vc_li-bulb' => 'Bulb' ),
array( 'vc_li vc_li-pen' => 'Pen' ),
array( 'vc_li vc_li-diamond' => 'Diamond' ),
array( 'vc_li vc_li-display' => 'Display' ),
array( 'vc_li vc_li-location' => 'Location' ),
array( 'vc_li vc_li-eye' => 'Eye' ),
array( 'vc_li vc_li-bubble' => 'Bubble' ),
array( 'vc_li vc_li-stack' => 'Stack' ),
array( 'vc_li vc_li-cup' => 'Cup' ),
array( 'vc_li vc_li-phone' => 'Phone' ),
array( 'vc_li vc_li-news' => 'News' ),
array( 'vc_li vc_li-mail' => 'Mail' ),
array( 'vc_li vc_li-like' => 'Like' ),
array( 'vc_li vc_li-photo' => 'Photo' ),
array( 'vc_li vc_li-note' => 'Note' ),
array( 'vc_li vc_li-clock' => 'Clock' ),
array( 'vc_li vc_li-paperplane' => 'Paperplane' ),
array( 'vc_li vc_li-params' => 'Params' ),
array( 'vc_li vc_li-banknote' => 'Banknote' ),
array( 'vc_li vc_li-data' => 'Data' ),
array( 'vc_li vc_li-music' => 'Music' ),
array( 'vc_li vc_li-megaphone' => 'Megaphone' ),
array( 'vc_li vc_li-study' => 'Study' ),
array( 'vc_li vc_li-lab' => 'Lab' ),
array( 'vc_li vc_li-food' => 'Food' ),
array( 'vc_li vc_li-t-shirt' => 'T Shirt' ),
array( 'vc_li vc_li-fire' => 'Fire' ),
array( 'vc_li vc_li-clip' => 'Clip' ),
array( 'vc_li vc_li-shop' => 'Shop' ),
array( 'vc_li vc_li-calendar' => 'Calendar' ),
array( 'vc_li vc_li-vallet' => 'Vallet' ),
array( 'vc_li vc_li-vynil' => 'Vynil' ),
array( 'vc_li vc_li-truck' => 'Truck' ),
array( 'vc_li vc_li-world' => 'World' ),
);
return array_merge( $icons, $linecons_icons );
}
add_filter( 'vc_iconpicker-type-monosocial', 'vc_iconpicker_type_monosocial' );
/**
* monosocial icons from drinchev.github.io/monosocialiconsfont
*
* @param $icons - taken from filter - vc_map param field settings['source']
* provided icons (default empty array). If array categorized it will
* auto-enable category dropdown
*
* @return array - of icons for iconpicker, can be categorized, or not.
* @since 4.4
*/
function vc_iconpicker_type_monosocial( $icons ) {
$monosocial = array(
array( 'vc-mono vc-mono-fivehundredpx' => 'Five Hundred px' ),
array( 'vc-mono vc-mono-aboutme' => 'About me' ),
array( 'vc-mono vc-mono-addme' => 'Add me' ),
array( 'vc-mono vc-mono-amazon' => 'Amazon' ),
array( 'vc-mono vc-mono-aol' => 'Aol' ),
array( 'vc-mono vc-mono-appstorealt' => 'App-store-alt' ),
array( 'vc-mono vc-mono-appstore' => 'Appstore' ),
array( 'vc-mono vc-mono-apple' => 'Apple' ),
array( 'vc-mono vc-mono-bebo' => 'Bebo' ),
array( 'vc-mono vc-mono-behance' => 'Behance' ),
array( 'vc-mono vc-mono-bing' => 'Bing' ),
array( 'vc-mono vc-mono-blip' => 'Blip' ),
array( 'vc-mono vc-mono-blogger' => 'Blogger' ),
array( 'vc-mono vc-mono-coroflot' => 'Coroflot' ),
array( 'vc-mono vc-mono-daytum' => 'Daytum' ),
array( 'vc-mono vc-mono-delicious' => 'Delicious' ),
array( 'vc-mono vc-mono-designbump' => 'Design bump' ),
array( 'vc-mono vc-mono-designfloat' => 'Design float' ),
array( 'vc-mono vc-mono-deviantart' => 'Deviant-art' ),
array( 'vc-mono vc-mono-diggalt' => 'Digg-alt' ),
array( 'vc-mono vc-mono-digg' => 'Digg' ),
array( 'vc-mono vc-mono-dribble' => 'Dribble' ),
array( 'vc-mono vc-mono-drupal' => 'Drupal' ),
array( 'vc-mono vc-mono-ebay' => 'Ebay' ),
array( 'vc-mono vc-mono-email' => 'Email' ),
array( 'vc-mono vc-mono-emberapp' => 'Ember app' ),
array( 'vc-mono vc-mono-etsy' => 'Etsy' ),
array( 'vc-mono vc-mono-facebook' => 'Facebook' ),
array( 'vc-mono vc-mono-feedburner' => 'Feed burner' ),
array( 'vc-mono vc-mono-flickr' => 'Flickr' ),
array( 'vc-mono vc-mono-foodspotting' => 'Food spotting' ),
array( 'vc-mono vc-mono-forrst' => 'Forrst' ),
array( 'vc-mono vc-mono-foursquare' => 'Fours quare' ),
array( 'vc-mono vc-mono-friendsfeed' => 'Friends feed' ),
array( 'vc-mono vc-mono-friendstar' => 'Friend star' ),
array( 'vc-mono vc-mono-gdgt' => 'Gdgt' ),
array( 'vc-mono vc-mono-github' => 'Github' ),
array( 'vc-mono vc-mono-githubalt' => 'Github-alt' ),
array( 'vc-mono vc-mono-googlebuzz' => 'Google buzz' ),
array( 'vc-mono vc-mono-googleplus' => 'Google plus' ),
array( 'vc-mono vc-mono-googletalk' => 'Google talk' ),
array( 'vc-mono vc-mono-gowallapin' => 'Gowallapin' ),
array( 'vc-mono vc-mono-gowalla' => 'Gowalla' ),
array( 'vc-mono vc-mono-grooveshark' => 'Groove shark' ),
array( 'vc-mono vc-mono-heart' => 'Heart' ),
array( 'vc-mono vc-mono-hyves' => 'Hyves' ),
array( 'vc-mono vc-mono-icondock' => 'Icondock' ),
array( 'vc-mono vc-mono-icq' => 'Icq' ),
array( 'vc-mono vc-mono-identica' => 'Identica' ),
array( 'vc-mono vc-mono-imessage' => 'I message' ),
array( 'vc-mono vc-mono-itunes' => 'I-tunes' ),
array( 'vc-mono vc-mono-lastfm' => 'Lastfm' ),
array( 'vc-mono vc-mono-linkedin' => 'Linkedin' ),
array( 'vc-mono vc-mono-meetup' => 'Meetup' ),
array( 'vc-mono vc-mono-metacafe' => 'Metacafe' ),
array( 'vc-mono vc-mono-mixx' => 'Mixx' ),
array( 'vc-mono vc-mono-mobileme' => 'Mobile me' ),
array( 'vc-mono vc-mono-mrwong' => 'Mrwong' ),
array( 'vc-mono vc-mono-msn' => 'Msn' ),
array( 'vc-mono vc-mono-myspace' => 'Myspace' ),
array( 'vc-mono vc-mono-newsvine' => 'Newsvine' ),
array( 'vc-mono vc-mono-paypal' => 'Paypal' ),
array( 'vc-mono vc-mono-photobucket' => 'Photo bucket' ),
array( 'vc-mono vc-mono-picasa' => 'Picasa' ),
array( 'vc-mono vc-mono-pinterest' => 'Pinterest' ),
array( 'vc-mono vc-mono-podcast' => 'Podcast' ),
array( 'vc-mono vc-mono-posterous' => 'Posterous' ),
array( 'vc-mono vc-mono-qik' => 'Qik' ),
array( 'vc-mono vc-mono-quora' => 'Quora' ),
array( 'vc-mono vc-mono-reddit' => 'Reddit' ),
array( 'vc-mono vc-mono-retweet' => 'Retweet' ),
array( 'vc-mono vc-mono-rss' => 'Rss' ),
array( 'vc-mono vc-mono-scribd' => 'Scribd' ),
array( 'vc-mono vc-mono-sharethis' => 'Sharethis' ),
array( 'vc-mono vc-mono-skype' => 'Skype' ),
array( 'vc-mono vc-mono-slashdot' => 'Slashdot' ),
array( 'vc-mono vc-mono-slideshare' => 'Slideshare' ),
array( 'vc-mono vc-mono-smugmug' => 'Smugmug' ),
array( 'vc-mono vc-mono-soundcloud' => 'Soundcloud' ),
array( 'vc-mono vc-mono-spotify' => 'Spotify' ),
array( 'vc-mono vc-mono-squidoo' => 'Squidoo' ),
array( 'vc-mono vc-mono-stackoverflow' => 'Stackoverflow' ),
array( 'vc-mono vc-mono-star' => 'Star' ),
array( 'vc-mono vc-mono-stumbleupon' => 'Stumble upon' ),
array( 'vc-mono vc-mono-technorati' => 'Technorati' ),
array( 'vc-mono vc-mono-tumblr' => 'Tumblr' ),
array( 'vc-mono vc-mono-twitterbird' => 'Twitterbird' ),
array( 'vc-mono vc-mono-twitter' => 'Twitter' ),
array( 'vc-mono vc-mono-viddler' => 'Viddler' ),
array( 'vc-mono vc-mono-vimeo' => 'Vimeo' ),
array( 'vc-mono vc-mono-virb' => 'Virb' ),
array( 'vc-mono vc-mono-www' => 'Www' ),
array( 'vc-mono vc-mono-wikipedia' => 'Wikipedia' ),
array( 'vc-mono vc-mono-windows' => 'Windows' ),
array( 'vc-mono vc-mono-wordpress' => 'WordPress' ),
array( 'vc-mono vc-mono-xing' => 'Xing' ),
array( 'vc-mono vc-mono-yahoobuzz' => 'Yahoo buzz' ),
array( 'vc-mono vc-mono-yahoo' => 'Yahoo' ),
array( 'vc-mono vc-mono-yelp' => 'Yelp' ),
array( 'vc-mono vc-mono-youtube' => 'Youtube' ),
array( 'vc-mono vc-mono-instagram' => 'Instagram' ),
);
return array_merge( $icons, $monosocial );
}
add_filter( 'vc_iconpicker-type-material', 'vc_iconpicker_type_material' );
/**
* Material icon set from Google
* @param $icons
*
* @return array
* @since 5.0
*
*/
function vc_iconpicker_type_material( $icons ) {
$material = array(
array( 'vc-material vc-material-3d_rotation' => '3d rotation' ),
array( 'vc-material vc-material-ac_unit' => 'ac unit' ),
array( 'vc-material vc-material-alarm' => 'alarm' ),
array( 'vc-material vc-material-access_alarms' => 'access alarms' ),
array( 'vc-material vc-material-schedule' => 'schedule' ),
array( 'vc-material vc-material-accessibility' => 'accessibility' ),
array( 'vc-material vc-material-accessible' => 'accessible' ),
array( 'vc-material vc-material-account_balance' => 'account balance' ),
array( 'vc-material vc-material-account_balance_wallet' => 'account balance wallet' ),
array( 'vc-material vc-material-account_box' => 'account box' ),
array( 'vc-material vc-material-account_circle' => 'account circle' ),
array( 'vc-material vc-material-adb' => 'adb' ),
array( 'vc-material vc-material-add' => 'add' ),
array( 'vc-material vc-material-add_a_photo' => 'add a photo' ),
array( 'vc-material vc-material-alarm_add' => 'alarm add' ),
array( 'vc-material vc-material-add_alert' => 'add alert' ),
array( 'vc-material vc-material-add_box' => 'add box' ),
array( 'vc-material vc-material-add_circle' => 'add circle' ),
array( 'vc-material vc-material-control_point' => 'control point' ),
array( 'vc-material vc-material-add_location' => 'add location' ),
array( 'vc-material vc-material-add_shopping_cart' => 'add shopping cart' ),
array( 'vc-material vc-material-queue' => 'queue' ),
array( 'vc-material vc-material-add_to_queue' => 'add to queue' ),
array( 'vc-material vc-material-adjust' => 'adjust' ),
array( 'vc-material vc-material-airline_seat_flat' => 'airline seat flat' ),
array( 'vc-material vc-material-airline_seat_flat_angled' => 'airline seat flat angled' ),
array( 'vc-material vc-material-airline_seat_individual_suite' => 'airline seat individual suite' ),
array( 'vc-material vc-material-airline_seat_legroom_extra' => 'airline seat legroom extra' ),
array( 'vc-material vc-material-airline_seat_legroom_normal' => 'airline seat legroom normal' ),
array( 'vc-material vc-material-airline_seat_legroom_reduced' => 'airline seat legroom reduced' ),
array( 'vc-material vc-material-airline_seat_recline_extra' => 'airline seat recline extra' ),
array( 'vc-material vc-material-airline_seat_recline_normal' => 'airline seat recline normal' ),
array( 'vc-material vc-material-flight' => 'flight' ),
array( 'vc-material vc-material-airplanemode_inactive' => 'airplanemode inactive' ),
array( 'vc-material vc-material-airplay' => 'airplay' ),
array( 'vc-material vc-material-airport_shuttle' => 'airport shuttle' ),
array( 'vc-material vc-material-alarm_off' => 'alarm off' ),
array( 'vc-material vc-material-alarm_on' => 'alarm on' ),
array( 'vc-material vc-material-album' => 'album' ),
array( 'vc-material vc-material-all_inclusive' => 'all inclusive' ),
array( 'vc-material vc-material-all_out' => 'all out' ),
array( 'vc-material vc-material-android' => 'android' ),
array( 'vc-material vc-material-announcement' => 'announcement' ),
array( 'vc-material vc-material-apps' => 'apps' ),
array( 'vc-material vc-material-archive' => 'archive' ),
array( 'vc-material vc-material-arrow_back' => 'arrow back' ),
array( 'vc-material vc-material-arrow_downward' => 'arrow downward' ),
array( 'vc-material vc-material-arrow_drop_down' => 'arrow drop down' ),
array( 'vc-material vc-material-arrow_drop_down_circle' => 'arrow drop down circle' ),
array( 'vc-material vc-material-arrow_drop_up' => 'arrow drop up' ),
array( 'vc-material vc-material-arrow_forward' => 'arrow forward' ),
array( 'vc-material vc-material-arrow_upward' => 'arrow upward' ),
array( 'vc-material vc-material-art_track' => 'art track' ),
array( 'vc-material vc-material-aspect_ratio' => 'aspect ratio' ),
array( 'vc-material vc-material-poll' => 'poll' ),
array( 'vc-material vc-material-assignment' => 'assignment' ),
array( 'vc-material vc-material-assignment_ind' => 'assignment ind' ),
array( 'vc-material vc-material-assignment_late' => 'assignment late' ),
array( 'vc-material vc-material-assignment_return' => 'assignment return' ),
array( 'vc-material vc-material-assignment_returned' => 'assignment returned' ),
array( 'vc-material vc-material-assignment_turned_in' => 'assignment turned in' ),
array( 'vc-material vc-material-assistant' => 'assistant' ),
array( 'vc-material vc-material-flag' => 'flag' ),
array( 'vc-material vc-material-attach_file' => 'attach file' ),
array( 'vc-material vc-material-attach_money' => 'attach money' ),
array( 'vc-material vc-material-attachment' => 'attachment' ),
array( 'vc-material vc-material-audiotrack' => 'audiotrack' ),
array( 'vc-material vc-material-autorenew' => 'autorenew' ),
array( 'vc-material vc-material-av_timer' => 'av timer' ),
array( 'vc-material vc-material-backspace' => 'backspace' ),
array( 'vc-material vc-material-cloud_upload' => 'cloud upload' ),
array( 'vc-material vc-material-battery_alert' => 'battery alert' ),
array( 'vc-material vc-material-battery_charging_full' => 'battery charging full' ),
array( 'vc-material vc-material-battery_std' => 'battery std' ),
array( 'vc-material vc-material-battery_unknown' => 'battery unknown' ),
array( 'vc-material vc-material-beach_access' => 'beach access' ),
array( 'vc-material vc-material-beenhere' => 'beenhere' ),
array( 'vc-material vc-material-block' => 'block' ),
array( 'vc-material vc-material-bluetooth' => 'bluetooth' ),
array( 'vc-material vc-material-bluetooth_searching' => 'bluetooth searching' ),
array( 'vc-material vc-material-bluetooth_connected' => 'bluetooth connected' ),
array( 'vc-material vc-material-bluetooth_disabled' => 'bluetooth disabled' ),
array( 'vc-material vc-material-blur_circular' => 'blur circular' ),
array( 'vc-material vc-material-blur_linear' => 'blur linear' ),
array( 'vc-material vc-material-blur_off' => 'blur off' ),
array( 'vc-material vc-material-blur_on' => 'blur on' ),
array( 'vc-material vc-material-class' => 'class' ),
array( 'vc-material vc-material-turned_in' => 'turned in' ),
array( 'vc-material vc-material-turned_in_not' => 'turned in not' ),
array( 'vc-material vc-material-border_all' => 'border all' ),
array( 'vc-material vc-material-border_bottom' => 'border bottom' ),
array( 'vc-material vc-material-border_clear' => 'border clear' ),
array( 'vc-material vc-material-border_color' => 'border color' ),
array( 'vc-material vc-material-border_horizontal' => 'border horizontal' ),
array( 'vc-material vc-material-border_inner' => 'border inner' ),
array( 'vc-material vc-material-border_left' => 'border left' ),
array( 'vc-material vc-material-border_outer' => 'border outer' ),
array( 'vc-material vc-material-border_right' => 'border right' ),
array( 'vc-material vc-material-border_style' => 'border style' ),
array( 'vc-material vc-material-border_top' => 'border top' ),
array( 'vc-material vc-material-border_vertical' => 'border vertical' ),
array( 'vc-material vc-material-branding_watermark' => 'branding watermark' ),
array( 'vc-material vc-material-brightness_1' => 'brightness 1' ),
array( 'vc-material vc-material-brightness_2' => 'brightness 2' ),
array( 'vc-material vc-material-brightness_3' => 'brightness 3' ),
array( 'vc-material vc-material-brightness_4' => 'brightness 4' ),
array( 'vc-material vc-material-brightness_low' => 'brightness low' ),
array( 'vc-material vc-material-brightness_medium' => 'brightness medium' ),
array( 'vc-material vc-material-brightness_high' => 'brightness high' ),
array( 'vc-material vc-material-brightness_auto' => 'brightness auto' ),
array( 'vc-material vc-material-broken_image' => 'broken image' ),
array( 'vc-material vc-material-brush' => 'brush' ),
array( 'vc-material vc-material-bubble_chart' => 'bubble chart' ),
array( 'vc-material vc-material-bug_report' => 'bug report' ),
array( 'vc-material vc-material-build' => 'build' ),
array( 'vc-material vc-material-burst_mode' => 'burst mode' ),
array( 'vc-material vc-material-domain' => 'domain' ),
array( 'vc-material vc-material-business_center' => 'business center' ),
array( 'vc-material vc-material-cached' => 'cached' ),
array( 'vc-material vc-material-cake' => 'cake' ),
array( 'vc-material vc-material-phone' => 'phone' ),
array( 'vc-material vc-material-call_end' => 'call end' ),
array( 'vc-material vc-material-call_made' => 'call made' ),
array( 'vc-material vc-material-merge_type' => 'merge type' ),
array( 'vc-material vc-material-call_missed' => 'call missed' ),
array( 'vc-material vc-material-call_missed_outgoing' => 'call missed outgoing' ),
array( 'vc-material vc-material-call_received' => 'call received' ),
array( 'vc-material vc-material-call_split' => 'call split' ),
array( 'vc-material vc-material-call_to_action' => 'call to action' ),
array( 'vc-material vc-material-camera' => 'camera' ),
array( 'vc-material vc-material-photo_camera' => 'photo camera' ),
array( 'vc-material vc-material-camera_enhance' => 'camera enhance' ),
array( 'vc-material vc-material-camera_front' => 'camera front' ),
array( 'vc-material vc-material-camera_rear' => 'camera rear' ),
array( 'vc-material vc-material-camera_roll' => 'camera roll' ),
array( 'vc-material vc-material-cancel' => 'cancel' ),
array( 'vc-material vc-material-redeem' => 'redeem' ),
array( 'vc-material vc-material-card_membership' => 'card membership' ),
array( 'vc-material vc-material-card_travel' => 'card travel' ),
array( 'vc-material vc-material-casino' => 'casino' ),
array( 'vc-material vc-material-cast' => 'cast' ),
array( 'vc-material vc-material-cast_connected' => 'cast connected' ),
array( 'vc-material vc-material-center_focus_strong' => 'center focus strong' ),
array( 'vc-material vc-material-center_focus_weak' => 'center focus weak' ),
array( 'vc-material vc-material-change_history' => 'change history' ),
array( 'vc-material vc-material-chat' => 'chat' ),
array( 'vc-material vc-material-chat_bubble' => 'chat bubble' ),
array( 'vc-material vc-material-chat_bubble_outline' => 'chat bubble outline' ),
array( 'vc-material vc-material-check' => 'check' ),
array( 'vc-material vc-material-check_box' => 'check box' ),
array( 'vc-material vc-material-check_box_outline_blank' => 'check box outline blank' ),
array( 'vc-material vc-material-check_circle' => 'check circle' ),
array( 'vc-material vc-material-navigate_before' => 'navigate before' ),
array( 'vc-material vc-material-navigate_next' => 'navigate next' ),
array( 'vc-material vc-material-child_care' => 'child care' ),
array( 'vc-material vc-material-child_friendly' => 'child friendly' ),
array( 'vc-material vc-material-chrome_reader_mode' => 'chrome reader mode' ),
array( 'vc-material vc-material-close' => 'close' ),
array( 'vc-material vc-material-clear_all' => 'clear all' ),
array( 'vc-material vc-material-closed_caption' => 'closed caption' ),
array( 'vc-material vc-material-wb_cloudy' => 'wb cloudy' ),
array( 'vc-material vc-material-cloud_circle' => 'cloud circle' ),
array( 'vc-material vc-material-cloud_done' => 'cloud done' ),
array( 'vc-material vc-material-cloud_download' => 'cloud download' ),
array( 'vc-material vc-material-cloud_off' => 'cloud off' ),
array( 'vc-material vc-material-cloud_queue' => 'cloud queue' ),
array( 'vc-material vc-material-code' => 'code' ),
array( 'vc-material vc-material-photo_library' => 'photo library' ),
array( 'vc-material vc-material-collections_bookmark' => 'collections bookmark' ),
array( 'vc-material vc-material-palette' => 'palette' ),
array( 'vc-material vc-material-colorize' => 'colorize' ),
array( 'vc-material vc-material-comment' => 'comment' ),
array( 'vc-material vc-material-compare' => 'compare' ),
array( 'vc-material vc-material-compare_arrows' => 'compare arrows' ),
array( 'vc-material vc-material-laptop' => 'laptop' ),
array( 'vc-material vc-material-confirmation_number' => 'confirmation number' ),
array( 'vc-material vc-material-contact_mail' => 'contact mail' ),
array( 'vc-material vc-material-contact_phone' => 'contact phone' ),
array( 'vc-material vc-material-contacts' => 'contacts' ),
array( 'vc-material vc-material-content_copy' => 'content copy' ),
array( 'vc-material vc-material-content_cut' => 'content cut' ),
array( 'vc-material vc-material-content_paste' => 'content paste' ),
array( 'vc-material vc-material-control_point_duplicate' => 'control point duplicate' ),
array( 'vc-material vc-material-copyright' => 'copyright' ),
array( 'vc-material vc-material-mode_edit' => 'mode edit' ),
array( 'vc-material vc-material-create_new_folder' => 'create new folder' ),
array( 'vc-material vc-material-payment' => 'payment' ),
array( 'vc-material vc-material-crop' => 'crop' ),
array( 'vc-material vc-material-crop_16_9' => 'crop 16 9' ),
array( 'vc-material vc-material-crop_3_2' => 'crop 3 2' ),
array( 'vc-material vc-material-crop_landscape' => 'crop landscape' ),
array( 'vc-material vc-material-crop_7_5' => 'crop 7 5' ),
array( 'vc-material vc-material-crop_din' => 'crop din' ),
array( 'vc-material vc-material-crop_free' => 'crop free' ),
array( 'vc-material vc-material-crop_original' => 'crop original' ),
array( 'vc-material vc-material-crop_portrait' => 'crop portrait' ),
array( 'vc-material vc-material-crop_rotate' => 'crop rotate' ),
array( 'vc-material vc-material-crop_square' => 'crop square' ),
array( 'vc-material vc-material-dashboard' => 'dashboard' ),
array( 'vc-material vc-material-data_usage' => 'data usage' ),
array( 'vc-material vc-material-date_range' => 'date range' ),
array( 'vc-material vc-material-dehaze' => 'dehaze' ),
array( 'vc-material vc-material-delete' => 'delete' ),
array( 'vc-material vc-material-delete_forever' => 'delete forever' ),
array( 'vc-material vc-material-delete_sweep' => 'delete sweep' ),
array( 'vc-material vc-material-description' => 'description' ),
array( 'vc-material vc-material-desktop_mac' => 'desktop mac' ),
array( 'vc-material vc-material-desktop_windows' => 'desktop windows' ),
array( 'vc-material vc-material-details' => 'details' ),
array( 'vc-material vc-material-developer_board' => 'developer board' ),
array( 'vc-material vc-material-developer_mode' => 'developer mode' ),
array( 'vc-material vc-material-device_hub' => 'device hub' ),
array( 'vc-material vc-material-phonelink' => 'phonelink' ),
array( 'vc-material vc-material-devices_other' => 'devices other' ),
array( 'vc-material vc-material-dialer_sip' => 'dialer sip' ),
array( 'vc-material vc-material-dialpad' => 'dialpad' ),
array( 'vc-material vc-material-directions' => 'directions' ),
array( 'vc-material vc-material-directions_bike' => 'directions bike' ),
array( 'vc-material vc-material-directions_boat' => 'directions boat' ),
array( 'vc-material vc-material-directions_bus' => 'directions bus' ),
array( 'vc-material vc-material-directions_car' => 'directions car' ),
array( 'vc-material vc-material-directions_railway' => 'directions railway' ),
array( 'vc-material vc-material-directions_run' => 'directions run' ),
array( 'vc-material vc-material-directions_transit' => 'directions transit' ),
array( 'vc-material vc-material-directions_walk' => 'directions walk' ),
array( 'vc-material vc-material-disc_full' => 'disc full' ),
array( 'vc-material vc-material-dns' => 'dns' ),
array( 'vc-material vc-material-not_interested' => 'not interested' ),
array( 'vc-material vc-material-do_not_disturb_alt' => 'do not disturb alt' ),
array( 'vc-material vc-material-do_not_disturb_off' => 'do not disturb off' ),
array( 'vc-material vc-material-remove_circle' => 'remove circle' ),
array( 'vc-material vc-material-dock' => 'dock' ),
array( 'vc-material vc-material-done' => 'done' ),
array( 'vc-material vc-material-done_all' => 'done all' ),
array( 'vc-material vc-material-donut_large' => 'donut large' ),
array( 'vc-material vc-material-donut_small' => 'donut small' ),
array( 'vc-material vc-material-drafts' => 'drafts' ),
array( 'vc-material vc-material-drag_handle' => 'drag handle' ),
array( 'vc-material vc-material-time_to_leave' => 'time to leave' ),
array( 'vc-material vc-material-dvr' => 'dvr' ),
array( 'vc-material vc-material-edit_location' => 'edit location' ),
array( 'vc-material vc-material-eject' => 'eject' ),
array( 'vc-material vc-material-markunread' => 'markunread' ),
array( 'vc-material vc-material-enhanced_encryption' => 'enhanced encryption' ),
array( 'vc-material vc-material-equalizer' => 'equalizer' ),
array( 'vc-material vc-material-error' => 'error' ),
array( 'vc-material vc-material-error_outline' => 'error outline' ),
array( 'vc-material vc-material-euro_symbol' => 'euro symbol' ),
array( 'vc-material vc-material-ev_station' => 'ev station' ),
array( 'vc-material vc-material-insert_invitation' => 'insert invitation' ),
array( 'vc-material vc-material-event_available' => 'event available' ),
array( 'vc-material vc-material-event_busy' => 'event busy' ),
array( 'vc-material vc-material-event_note' => 'event note' ),
array( 'vc-material vc-material-event_seat' => 'event seat' ),
array( 'vc-material vc-material-exit_to_app' => 'exit to app' ),
array( 'vc-material vc-material-expand_less' => 'expand less' ),
array( 'vc-material vc-material-expand_more' => 'expand more' ),
array( 'vc-material vc-material-explicit' => 'explicit' ),
array( 'vc-material vc-material-explore' => 'explore' ),
array( 'vc-material vc-material-exposure' => 'exposure' ),
array( 'vc-material vc-material-exposure_neg_1' => 'exposure neg 1' ),
array( 'vc-material vc-material-exposure_neg_2' => 'exposure neg 2' ),
array( 'vc-material vc-material-exposure_plus_1' => 'exposure plus 1' ),
array( 'vc-material vc-material-exposure_plus_2' => 'exposure plus 2' ),
array( 'vc-material vc-material-exposure_zero' => 'exposure zero' ),
array( 'vc-material vc-material-extension' => 'extension' ),
array( 'vc-material vc-material-face' => 'face' ),
array( 'vc-material vc-material-fast_forward' => 'fast forward' ),
array( 'vc-material vc-material-fast_rewind' => 'fast rewind' ),
array( 'vc-material vc-material-favorite' => 'favorite' ),
array( 'vc-material vc-material-favorite_border' => 'favorite border' ),
array( 'vc-material vc-material-featured_play_list' => 'featured play list' ),
array( 'vc-material vc-material-featured_video' => 'featured video' ),
array( 'vc-material vc-material-sms_failed' => 'sms failed' ),
array( 'vc-material vc-material-fiber_dvr' => 'fiber dvr' ),
array( 'vc-material vc-material-fiber_manual_record' => 'fiber manual record' ),
array( 'vc-material vc-material-fiber_new' => 'fiber new' ),
array( 'vc-material vc-material-fiber_pin' => 'fiber pin' ),
array( 'vc-material vc-material-fiber_smart_record' => 'fiber smart record' ),
array( 'vc-material vc-material-get_app' => 'get app' ),
array( 'vc-material vc-material-file_upload' => 'file upload' ),
array( 'vc-material vc-material-filter' => 'filter' ),
array( 'vc-material vc-material-filter_1' => 'filter 1' ),
array( 'vc-material vc-material-filter_2' => 'filter 2' ),
array( 'vc-material vc-material-filter_3' => 'filter 3' ),
array( 'vc-material vc-material-filter_4' => 'filter 4' ),
array( 'vc-material vc-material-filter_5' => 'filter 5' ),
array( 'vc-material vc-material-filter_6' => 'filter 6' ),
array( 'vc-material vc-material-filter_7' => 'filter 7' ),
array( 'vc-material vc-material-filter_8' => 'filter 8' ),
array( 'vc-material vc-material-filter_9' => 'filter 9' ),
array( 'vc-material vc-material-filter_9_plus' => 'filter 9 plus' ),
array( 'vc-material vc-material-filter_b_and_w' => 'filter b and w' ),
array( 'vc-material vc-material-filter_center_focus' => 'filter center focus' ),
array( 'vc-material vc-material-filter_drama' => 'filter drama' ),
array( 'vc-material vc-material-filter_frames' => 'filter frames' ),
array( 'vc-material vc-material-terrain' => 'terrain' ),
array( 'vc-material vc-material-filter_list' => 'filter list' ),
array( 'vc-material vc-material-filter_none' => 'filter none' ),
array( 'vc-material vc-material-filter_tilt_shift' => 'filter tilt shift' ),
array( 'vc-material vc-material-filter_vintage' => 'filter vintage' ),
array( 'vc-material vc-material-find_in_page' => 'find in page' ),
array( 'vc-material vc-material-find_replace' => 'find replace' ),
array( 'vc-material vc-material-fingerprint' => 'fingerprint' ),
array( 'vc-material vc-material-first_page' => 'first page' ),
array( 'vc-material vc-material-fitness_center' => 'fitness center' ),
array( 'vc-material vc-material-flare' => 'flare' ),
array( 'vc-material vc-material-flash_auto' => 'flash auto' ),
array( 'vc-material vc-material-flash_off' => 'flash off' ),
array( 'vc-material vc-material-flash_on' => 'flash on' ),
array( 'vc-material vc-material-flight_land' => 'flight land' ),
array( 'vc-material vc-material-flight_takeoff' => 'flight takeoff' ),
array( 'vc-material vc-material-flip' => 'flip' ),
array( 'vc-material vc-material-flip_to_back' => 'flip to back' ),
array( 'vc-material vc-material-flip_to_front' => 'flip to front' ),
array( 'vc-material vc-material-folder' => 'folder' ),
array( 'vc-material vc-material-folder_open' => 'folder open' ),
array( 'vc-material vc-material-folder_shared' => 'folder shared' ),
array( 'vc-material vc-material-folder_special' => 'folder special' ),
array( 'vc-material vc-material-font_download' => 'font download' ),
array( 'vc-material vc-material-format_align_center' => 'format align center' ),
array( 'vc-material vc-material-format_align_justify' => 'format align justify' ),
array( 'vc-material vc-material-format_align_left' => 'format align left' ),
array( 'vc-material vc-material-format_align_right' => 'format align right' ),
array( 'vc-material vc-material-format_bold' => 'format bold' ),
array( 'vc-material vc-material-format_clear' => 'format clear' ),
array( 'vc-material vc-material-format_color_fill' => 'format color fill' ),
array( 'vc-material vc-material-format_color_reset' => 'format color reset' ),
array( 'vc-material vc-material-format_color_text' => 'format color text' ),
array( 'vc-material vc-material-format_indent_decrease' => 'format indent decrease' ),
array( 'vc-material vc-material-format_indent_increase' => 'format indent increase' ),
array( 'vc-material vc-material-format_italic' => 'format italic' ),
array( 'vc-material vc-material-format_line_spacing' => 'format line spacing' ),
array( 'vc-material vc-material-format_list_bulleted' => 'format list bulleted' ),
array( 'vc-material vc-material-format_list_numbered' => 'format list numbered' ),
array( 'vc-material vc-material-format_paint' => 'format paint' ),
array( 'vc-material vc-material-format_quote' => 'format quote' ),
array( 'vc-material vc-material-format_shapes' => 'format shapes' ),
array( 'vc-material vc-material-format_size' => 'format size' ),
array( 'vc-material vc-material-format_strikethrough' => 'format strikethrough' ),
array( 'vc-material vc-material-format_textdirection_l_to_r' => 'format textdirection l to r' ),
array( 'vc-material vc-material-format_textdirection_r_to_l' => 'format textdirection r to l' ),
array( 'vc-material vc-material-format_underlined' => 'format underlined' ),
array( 'vc-material vc-material-question_answer' => 'question answer' ),
array( 'vc-material vc-material-forward' => 'forward' ),
array( 'vc-material vc-material-forward_10' => 'forward 10' ),
array( 'vc-material vc-material-forward_30' => 'forward 30' ),
array( 'vc-material vc-material-forward_5' => 'forward 5' ),
array( 'vc-material vc-material-free_breakfast' => 'free breakfast' ),
array( 'vc-material vc-material-fullscreen' => 'fullscreen' ),
array( 'vc-material vc-material-fullscreen_exit' => 'fullscreen exit' ),
array( 'vc-material vc-material-functions' => 'functions' ),
array( 'vc-material vc-material-g_translate' => 'g translate' ),
array( 'vc-material vc-material-games' => 'games' ),
array( 'vc-material vc-material-gavel' => 'gavel' ),
array( 'vc-material vc-material-gesture' => 'gesture' ),
array( 'vc-material vc-material-gif' => 'gif' ),
array( 'vc-material vc-material-goat' => 'goat' ),
array( 'vc-material vc-material-golf_course' => 'golf course' ),
array( 'vc-material vc-material-my_location' => 'my location' ),
array( 'vc-material vc-material-location_searching' => 'location searching' ),
array( 'vc-material vc-material-location_disabled' => 'location disabled' ),
array( 'vc-material vc-material-star' => 'star' ),
array( 'vc-material vc-material-gradient' => 'gradient' ),
array( 'vc-material vc-material-grain' => 'grain' ),
array( 'vc-material vc-material-graphic_eq' => 'graphic eq' ),
array( 'vc-material vc-material-grid_off' => 'grid off' ),
array( 'vc-material vc-material-grid_on' => 'grid on' ),
array( 'vc-material vc-material-people' => 'people' ),
array( 'vc-material vc-material-group_add' => 'group add' ),
array( 'vc-material vc-material-group_work' => 'group work' ),
array( 'vc-material vc-material-hd' => 'hd' ),
array( 'vc-material vc-material-hdr_off' => 'hdr off' ),
array( 'vc-material vc-material-hdr_on' => 'hdr on' ),
array( 'vc-material vc-material-hdr_strong' => 'hdr strong' ),
array( 'vc-material vc-material-hdr_weak' => 'hdr weak' ),
array( 'vc-material vc-material-headset' => 'headset' ),
array( 'vc-material vc-material-headset_mic' => 'headset mic' ),
array( 'vc-material vc-material-healing' => 'healing' ),
array( 'vc-material vc-material-hearing' => 'hearing' ),
array( 'vc-material vc-material-help' => 'help' ),
array( 'vc-material vc-material-help_outline' => 'help outline' ),
array( 'vc-material vc-material-high_quality' => 'high quality' ),
array( 'vc-material vc-material-highlight' => 'highlight' ),
array( 'vc-material vc-material-highlight_off' => 'highlight off' ),
array( 'vc-material vc-material-restore' => 'restore' ),
array( 'vc-material vc-material-home' => 'home' ),
array( 'vc-material vc-material-hot_tub' => 'hot tub' ),
array( 'vc-material vc-material-local_hotel' => 'local hotel' ),
array( 'vc-material vc-material-hourglass_empty' => 'hourglass empty' ),
array( 'vc-material vc-material-hourglass_full' => 'hourglass full' ),
array( 'vc-material vc-material-http' => 'http' ),
array( 'vc-material vc-material-lock' => 'lock' ),
array( 'vc-material vc-material-photo' => 'photo' ),
array( 'vc-material vc-material-image_aspect_ratio' => 'image aspect ratio' ),
array( 'vc-material vc-material-import_contacts' => 'import contacts' ),
array( 'vc-material vc-material-import_export' => 'import export' ),
array( 'vc-material vc-material-important_devices' => 'important devices' ),
array( 'vc-material vc-material-inbox' => 'inbox' ),
array( 'vc-material vc-material-indeterminate_check_box' => 'indeterminate check box' ),
array( 'vc-material vc-material-info' => 'info' ),
array( 'vc-material vc-material-info_outline' => 'info outline' ),
array( 'vc-material vc-material-input' => 'input' ),
array( 'vc-material vc-material-insert_comment' => 'insert comment' ),
array( 'vc-material vc-material-insert_drive_file' => 'insert drive file' ),
array( 'vc-material vc-material-tag_faces' => 'tag faces' ),
array( 'vc-material vc-material-link' => 'link' ),
array( 'vc-material vc-material-invert_colors' => 'invert colors' ),
array( 'vc-material vc-material-invert_colors_off' => 'invert colors off' ),
array( 'vc-material vc-material-iso' => 'iso' ),
array( 'vc-material vc-material-keyboard' => 'keyboard' ),
array( 'vc-material vc-material-keyboard_arrow_down' => 'keyboard arrow down' ),
array( 'vc-material vc-material-keyboard_arrow_left' => 'keyboard arrow left' ),
array( 'vc-material vc-material-keyboard_arrow_right' => 'keyboard arrow right' ),
array( 'vc-material vc-material-keyboard_arrow_up' => 'keyboard arrow up' ),
array( 'vc-material vc-material-keyboard_backspace' => 'keyboard backspace' ),
array( 'vc-material vc-material-keyboard_capslock' => 'keyboard capslock' ),
array( 'vc-material vc-material-keyboard_hide' => 'keyboard hide' ),
array( 'vc-material vc-material-keyboard_return' => 'keyboard return' ),
array( 'vc-material vc-material-keyboard_tab' => 'keyboard tab' ),
array( 'vc-material vc-material-keyboard_voice' => 'keyboard voice' ),
array( 'vc-material vc-material-kitchen' => 'kitchen' ),
array( 'vc-material vc-material-label' => 'label' ),
array( 'vc-material vc-material-label_outline' => 'label outline' ),
array( 'vc-material vc-material-language' => 'language' ),
array( 'vc-material vc-material-laptop_chromebook' => 'laptop chromebook' ),
array( 'vc-material vc-material-laptop_mac' => 'laptop mac' ),
array( 'vc-material vc-material-laptop_windows' => 'laptop windows' ),
array( 'vc-material vc-material-last_page' => 'last page' ),
array( 'vc-material vc-material-open_in_new' => 'open in new' ),
array( 'vc-material vc-material-layers' => 'layers' ),
array( 'vc-material vc-material-layers_clear' => 'layers clear' ),
array( 'vc-material vc-material-leak_add' => 'leak add' ),
array( 'vc-material vc-material-leak_remove' => 'leak remove' ),
array( 'vc-material vc-material-lens' => 'lens' ),
array( 'vc-material vc-material-library_books' => 'library books' ),
array( 'vc-material vc-material-library_music' => 'library music' ),
array( 'vc-material vc-material-lightbulb_outline' => 'lightbulb outline' ),
array( 'vc-material vc-material-line_style' => 'line style' ),
array( 'vc-material vc-material-line_weight' => 'line weight' ),
array( 'vc-material vc-material-linear_scale' => 'linear scale' ),
array( 'vc-material vc-material-linked_camera' => 'linked camera' ),
array( 'vc-material vc-material-list' => 'list' ),
array( 'vc-material vc-material-live_help' => 'live help' ),
array( 'vc-material vc-material-live_tv' => 'live tv' ),
array( 'vc-material vc-material-local_play' => 'local play' ),
array( 'vc-material vc-material-local_airport' => 'local airport' ),
array( 'vc-material vc-material-local_atm' => 'local atm' ),
array( 'vc-material vc-material-local_bar' => 'local bar' ),
array( 'vc-material vc-material-local_cafe' => 'local cafe' ),
array( 'vc-material vc-material-local_car_wash' => 'local car wash' ),
array( 'vc-material vc-material-local_convenience_store' => 'local convenience store' ),
array( 'vc-material vc-material-restaurant_menu' => 'restaurant menu' ),
array( 'vc-material vc-material-local_drink' => 'local drink' ),
array( 'vc-material vc-material-local_florist' => 'local florist' ),
array( 'vc-material vc-material-local_gas_station' => 'local gas station' ),
array( 'vc-material vc-material-shopping_cart' => 'shopping cart' ),
array( 'vc-material vc-material-local_hospital' => 'local hospital' ),
array( 'vc-material vc-material-local_laundry_service' => 'local laundry service' ),
array( 'vc-material vc-material-local_library' => 'local library' ),
array( 'vc-material vc-material-local_mall' => 'local mall' ),
array( 'vc-material vc-material-theaters' => 'theaters' ),
array( 'vc-material vc-material-local_offer' => 'local offer' ),
array( 'vc-material vc-material-local_parking' => 'local parking' ),
array( 'vc-material vc-material-local_pharmacy' => 'local pharmacy' ),
array( 'vc-material vc-material-local_pizza' => 'local pizza' ),
array( 'vc-material vc-material-print' => 'print' ),
array( 'vc-material vc-material-local_shipping' => 'local shipping' ),
array( 'vc-material vc-material-local_taxi' => 'local taxi' ),
array( 'vc-material vc-material-location_city' => 'location city' ),
array( 'vc-material vc-material-location_off' => 'location off' ),
array( 'vc-material vc-material-room' => 'room' ),
array( 'vc-material vc-material-lock_open' => 'lock open' ),
array( 'vc-material vc-material-lock_outline' => 'lock outline' ),
array( 'vc-material vc-material-looks' => 'looks' ),
array( 'vc-material vc-material-looks_3' => 'looks 3' ),
array( 'vc-material vc-material-looks_4' => 'looks 4' ),
array( 'vc-material vc-material-looks_5' => 'looks 5' ),
array( 'vc-material vc-material-looks_6' => 'looks 6' ),
array( 'vc-material vc-material-looks_one' => 'looks one' ),
array( 'vc-material vc-material-looks_two' => 'looks two' ),
array( 'vc-material vc-material-sync' => 'sync' ),
array( 'vc-material vc-material-loupe' => 'loupe' ),
array( 'vc-material vc-material-low_priority' => 'low priority' ),
array( 'vc-material vc-material-loyalty' => 'loyalty' ),
array( 'vc-material vc-material-mail_outline' => 'mail outline' ),
array( 'vc-material vc-material-map' => 'map' ),
array( 'vc-material vc-material-markunread_mailbox' => 'markunread mailbox' ),
array( 'vc-material vc-material-memory' => 'memory' ),
array( 'vc-material vc-material-menu' => 'menu' ),
array( 'vc-material vc-material-message' => 'message' ),
array( 'vc-material vc-material-mic' => 'mic' ),
array( 'vc-material vc-material-mic_none' => 'mic none' ),
array( 'vc-material vc-material-mic_off' => 'mic off' ),
array( 'vc-material vc-material-mms' => 'mms' ),
array( 'vc-material vc-material-mode_comment' => 'mode comment' ),
array( 'vc-material vc-material-monetization_on' => 'monetization on' ),
array( 'vc-material vc-material-money_off' => 'money off' ),
array( 'vc-material vc-material-monochrome_photos' => 'monochrome photos' ),
array( 'vc-material vc-material-mood_bad' => 'mood bad' ),
array( 'vc-material vc-material-more' => 'more' ),
array( 'vc-material vc-material-more_horiz' => 'more horiz' ),
array( 'vc-material vc-material-more_vert' => 'more vert' ),
array( 'vc-material vc-material-motorcycle' => 'motorcycle' ),
array( 'vc-material vc-material-mouse' => 'mouse' ),
array( 'vc-material vc-material-move_to_inbox' => 'move to inbox' ),
array( 'vc-material vc-material-movie_creation' => 'movie creation' ),
array( 'vc-material vc-material-movie_filter' => 'movie filter' ),
array( 'vc-material vc-material-multiline_chart' => 'multiline chart' ),
array( 'vc-material vc-material-music_note' => 'music note' ),
array( 'vc-material vc-material-music_video' => 'music video' ),
array( 'vc-material vc-material-nature' => 'nature' ),
array( 'vc-material vc-material-nature_people' => 'nature people' ),
array( 'vc-material vc-material-navigation' => 'navigation' ),
array( 'vc-material vc-material-near_me' => 'near me' ),
array( 'vc-material vc-material-network_cell' => 'network cell' ),
array( 'vc-material vc-material-network_check' => 'network check' ),
array( 'vc-material vc-material-network_locked' => 'network locked' ),
array( 'vc-material vc-material-network_wifi' => 'network wifi' ),
array( 'vc-material vc-material-new_releases' => 'new releases' ),
array( 'vc-material vc-material-next_week' => 'next week' ),
array( 'vc-material vc-material-nfc' => 'nfc' ),
array( 'vc-material vc-material-no_encryption' => 'no encryption' ),
array( 'vc-material vc-material-signal_cellular_no_sim' => 'signal cellular no sim' ),
array( 'vc-material vc-material-note' => 'note' ),
array( 'vc-material vc-material-note_add' => 'note add' ),
array( 'vc-material vc-material-notifications' => 'notifications' ),
array( 'vc-material vc-material-notifications_active' => 'notifications active' ),
array( 'vc-material vc-material-notifications_none' => 'notifications none' ),
array( 'vc-material vc-material-notifications_off' => 'notifications off' ),
array( 'vc-material vc-material-notifications_paused' => 'notifications paused' ),
array( 'vc-material vc-material-offline_pin' => 'offline pin' ),
array( 'vc-material vc-material-ondemand_video' => 'ondemand video' ),
array( 'vc-material vc-material-opacity' => 'opacity' ),
array( 'vc-material vc-material-open_in_browser' => 'open in browser' ),
array( 'vc-material vc-material-open_with' => 'open with' ),
array( 'vc-material vc-material-pages' => 'pages' ),
array( 'vc-material vc-material-pageview' => 'pageview' ),
array( 'vc-material vc-material-pan_tool' => 'pan tool' ),
array( 'vc-material vc-material-panorama' => 'panorama' ),
array( 'vc-material vc-material-radio_button_unchecked' => 'radio button unchecked' ),
array( 'vc-material vc-material-panorama_horizontal' => 'panorama horizontal' ),
array( 'vc-material vc-material-panorama_vertical' => 'panorama vertical' ),
array( 'vc-material vc-material-panorama_wide_angle' => 'panorama wide angle' ),
array( 'vc-material vc-material-party_mode' => 'party mode' ),
array( 'vc-material vc-material-pause' => 'pause' ),
array( 'vc-material vc-material-pause_circle_filled' => 'pause circle filled' ),
array( 'vc-material vc-material-pause_circle_outline' => 'pause circle outline' ),
array( 'vc-material vc-material-people_outline' => 'people outline' ),
array( 'vc-material vc-material-perm_camera_mic' => 'perm camera mic' ),
array( 'vc-material vc-material-perm_contact_calendar' => 'perm contact calendar' ),
array( 'vc-material vc-material-perm_data_setting' => 'perm data setting' ),
array( 'vc-material vc-material-perm_device_information' => 'perm device information' ),
array( 'vc-material vc-material-person_outline' => 'person outline' ),
array( 'vc-material vc-material-perm_media' => 'perm media' ),
array( 'vc-material vc-material-perm_phone_msg' => 'perm phone msg' ),
array( 'vc-material vc-material-perm_scan_wifi' => 'perm scan wifi' ),
array( 'vc-material vc-material-person' => 'person' ),
array( 'vc-material vc-material-person_add' => 'person add' ),
array( 'vc-material vc-material-person_pin' => 'person pin' ),
array( 'vc-material vc-material-person_pin_circle' => 'person pin circle' ),
array( 'vc-material vc-material-personal_video' => 'personal video' ),
array( 'vc-material vc-material-pets' => 'pets' ),
array( 'vc-material vc-material-phone_android' => 'phone android' ),
array( 'vc-material vc-material-phone_bluetooth_speaker' => 'phone bluetooth speaker' ),
array( 'vc-material vc-material-phone_forwarded' => 'phone forwarded' ),
array( 'vc-material vc-material-phone_in_talk' => 'phone in talk' ),
array( 'vc-material vc-material-phone_iphone' => 'phone iphone' ),
array( 'vc-material vc-material-phone_locked' => 'phone locked' ),
array( 'vc-material vc-material-phone_missed' => 'phone missed' ),
array( 'vc-material vc-material-phone_paused' => 'phone paused' ),
array( 'vc-material vc-material-phonelink_erase' => 'phonelink erase' ),
array( 'vc-material vc-material-phonelink_lock' => 'phonelink lock' ),
array( 'vc-material vc-material-phonelink_off' => 'phonelink off' ),
array( 'vc-material vc-material-phonelink_ring' => 'phonelink ring' ),
array( 'vc-material vc-material-phonelink_setup' => 'phonelink setup' ),
array( 'vc-material vc-material-photo_album' => 'photo album' ),
array( 'vc-material vc-material-photo_filter' => 'photo filter' ),
array( 'vc-material vc-material-photo_size_select_actual' => 'photo size select actual' ),
array( 'vc-material vc-material-photo_size_select_large' => 'photo size select large' ),
array( 'vc-material vc-material-photo_size_select_small' => 'photo size select small' ),
array( 'vc-material vc-material-picture_as_pdf' => 'picture as pdf' ),
array( 'vc-material vc-material-picture_in_picture' => 'picture in picture' ),
array( 'vc-material vc-material-picture_in_picture_alt' => 'picture in picture alt' ),
array( 'vc-material vc-material-pie_chart' => 'pie chart' ),
array( 'vc-material vc-material-pie_chart_outlined' => 'pie chart outlined' ),
array( 'vc-material vc-material-pin_drop' => 'pin drop' ),
array( 'vc-material vc-material-play_arrow' => 'play arrow' ),
array( 'vc-material vc-material-play_circle_filled' => 'play circle filled' ),
array( 'vc-material vc-material-play_circle_outline' => 'play circle outline' ),
array( 'vc-material vc-material-play_for_work' => 'play for work' ),
array( 'vc-material vc-material-playlist_add' => 'playlist add' ),
array( 'vc-material vc-material-playlist_add_check' => 'playlist add check' ),
array( 'vc-material vc-material-playlist_play' => 'playlist play' ),
array( 'vc-material vc-material-plus_one' => 'plus one' ),
array( 'vc-material vc-material-polymer' => 'polymer' ),
array( 'vc-material vc-material-pool' => 'pool' ),
array( 'vc-material vc-material-portable_wifi_off' => 'portable wifi off' ),
array( 'vc-material vc-material-portrait' => 'portrait' ),
array( 'vc-material vc-material-power' => 'power' ),
array( 'vc-material vc-material-power_input' => 'power input' ),
array( 'vc-material vc-material-power_settings_new' => 'power settings new' ),
array( 'vc-material vc-material-pregnant_woman' => 'pregnant woman' ),
array( 'vc-material vc-material-present_to_all' => 'present to all' ),
array( 'vc-material vc-material-priority_high' => 'priority high' ),
array( 'vc-material vc-material-public' => 'public' ),
array( 'vc-material vc-material-publish' => 'publish' ),
array( 'vc-material vc-material-queue_music' => 'queue music' ),
array( 'vc-material vc-material-queue_play_next' => 'queue play next' ),
array( 'vc-material vc-material-radio' => 'radio' ),
array( 'vc-material vc-material-radio_button_checked' => 'radio button checked' ),
array( 'vc-material vc-material-rate_review' => 'rate review' ),
array( 'vc-material vc-material-receipt' => 'receipt' ),
array( 'vc-material vc-material-recent_actors' => 'recent actors' ),
array( 'vc-material vc-material-record_voice_over' => 'record voice over' ),
array( 'vc-material vc-material-redo' => 'redo' ),
array( 'vc-material vc-material-refresh' => 'refresh' ),
array( 'vc-material vc-material-remove' => 'remove' ),
array( 'vc-material vc-material-remove_circle_outline' => 'remove circle outline' ),
array( 'vc-material vc-material-remove_from_queue' => 'remove from queue' ),
array( 'vc-material vc-material-visibility' => 'visibility' ),
array( 'vc-material vc-material-remove_shopping_cart' => 'remove shopping cart' ),
array( 'vc-material vc-material-reorder' => 'reorder' ),
array( 'vc-material vc-material-repeat' => 'repeat' ),
array( 'vc-material vc-material-repeat_one' => 'repeat one' ),
array( 'vc-material vc-material-replay' => 'replay' ),
array( 'vc-material vc-material-replay_10' => 'replay 10' ),
array( 'vc-material vc-material-replay_30' => 'replay 30' ),
array( 'vc-material vc-material-replay_5' => 'replay 5' ),
array( 'vc-material vc-material-reply' => 'reply' ),
array( 'vc-material vc-material-reply_all' => 'reply all' ),
array( 'vc-material vc-material-report' => 'report' ),
array( 'vc-material vc-material-warning' => 'warning' ),
array( 'vc-material vc-material-restaurant' => 'restaurant' ),
array( 'vc-material vc-material-restore_page' => 'restore page' ),
array( 'vc-material vc-material-ring_volume' => 'ring volume' ),
array( 'vc-material vc-material-room_service' => 'room service' ),
array( 'vc-material vc-material-rotate_90_degrees_ccw' => 'rotate 90 degrees ccw' ),
array( 'vc-material vc-material-rotate_left' => 'rotate left' ),
array( 'vc-material vc-material-rotate_right' => 'rotate right' ),
array( 'vc-material vc-material-rounded_corner' => 'rounded corner' ),
array( 'vc-material vc-material-router' => 'router' ),
array( 'vc-material vc-material-rowing' => 'rowing' ),
array( 'vc-material vc-material-rss_feed' => 'rss feed' ),
array( 'vc-material vc-material-rv_hookup' => 'rv hookup' ),
array( 'vc-material vc-material-satellite' => 'satellite' ),
array( 'vc-material vc-material-save' => 'save' ),
array( 'vc-material vc-material-scanner' => 'scanner' ),
array( 'vc-material vc-material-school' => 'school' ),
array( 'vc-material vc-material-screen_lock_landscape' => 'screen lock landscape' ),
array( 'vc-material vc-material-screen_lock_portrait' => 'screen lock portrait' ),
array( 'vc-material vc-material-screen_lock_rotation' => 'screen lock rotation' ),
array( 'vc-material vc-material-screen_rotation' => 'screen rotation' ),
array( 'vc-material vc-material-screen_share' => 'screen share' ),
array( 'vc-material vc-material-sd_storage' => 'sd storage' ),
array( 'vc-material vc-material-search' => 'search' ),
array( 'vc-material vc-material-security' => 'security' ),
array( 'vc-material vc-material-select_all' => 'select all' ),
array( 'vc-material vc-material-send' => 'send' ),
array( 'vc-material vc-material-sentiment_dissatisfied' => 'sentiment dissatisfied' ),
array( 'vc-material vc-material-sentiment_neutral' => 'sentiment neutral' ),
array( 'vc-material vc-material-sentiment_satisfied' => 'sentiment satisfied' ),
array( 'vc-material vc-material-sentiment_very_dissatisfied' => 'sentiment very dissatisfied' ),
array( 'vc-material vc-material-sentiment_very_satisfied' => 'sentiment very satisfied' ),
array( 'vc-material vc-material-settings' => 'settings' ),
array( 'vc-material vc-material-settings_applications' => 'settings applications' ),
array( 'vc-material vc-material-settings_backup_restore' => 'settings backup restore' ),
array( 'vc-material vc-material-settings_bluetooth' => 'settings bluetooth' ),
array( 'vc-material vc-material-settings_brightness' => 'settings brightness' ),
array( 'vc-material vc-material-settings_cell' => 'settings cell' ),
array( 'vc-material vc-material-settings_ethernet' => 'settings ethernet' ),
array( 'vc-material vc-material-settings_input_antenna' => 'settings input antenna' ),
array( 'vc-material vc-material-settings_input_composite' => 'settings input composite' ),
array( 'vc-material vc-material-settings_input_hdmi' => 'settings input hdmi' ),
array( 'vc-material vc-material-settings_input_svideo' => 'settings input svideo' ),
array( 'vc-material vc-material-settings_overscan' => 'settings overscan' ),
array( 'vc-material vc-material-settings_phone' => 'settings phone' ),
array( 'vc-material vc-material-settings_power' => 'settings power' ),
array( 'vc-material vc-material-settings_remote' => 'settings remote' ),
array( 'vc-material vc-material-settings_system_daydream' => 'settings system daydream' ),
array( 'vc-material vc-material-settings_voice' => 'settings voice' ),
array( 'vc-material vc-material-share' => 'share' ),
array( 'vc-material vc-material-shop' => 'shop' ),
array( 'vc-material vc-material-shop_two' => 'shop two' ),
array( 'vc-material vc-material-shopping_basket' => 'shopping basket' ),
array( 'vc-material vc-material-short_text' => 'short text' ),
array( 'vc-material vc-material-show_chart' => 'show chart' ),
array( 'vc-material vc-material-shuffle' => 'shuffle' ),
array( 'vc-material vc-material-signal_cellular_4_bar' => 'signal cellular 4 bar' ),
array( 'vc-material vc-material-signal_cellular_connected_no_internet_4_bar' => 'signal_cellular_connected_no internet 4 bar' ),
array( 'vc-material vc-material-signal_cellular_null' => 'signal cellular null' ),
array( 'vc-material vc-material-signal_cellular_off' => 'signal cellular off' ),
array( 'vc-material vc-material-signal_wifi_4_bar' => 'signal wifi 4 bar' ),
array( 'vc-material vc-material-signal_wifi_4_bar_lock' => 'signal wifi 4 bar lock' ),
array( 'vc-material vc-material-signal_wifi_off' => 'signal wifi off' ),
array( 'vc-material vc-material-sim_card' => 'sim card' ),
array( 'vc-material vc-material-sim_card_alert' => 'sim card alert' ),
array( 'vc-material vc-material-skip_next' => 'skip next' ),
array( 'vc-material vc-material-skip_previous' => 'skip previous' ),
array( 'vc-material vc-material-slideshow' => 'slideshow' ),
array( 'vc-material vc-material-slow_motion_video' => 'slow motion video' ),
array( 'vc-material vc-material-stay_primary_portrait' => 'stay primary portrait' ),
array( 'vc-material vc-material-smoke_free' => 'smoke free' ),
array( 'vc-material vc-material-smoking_rooms' => 'smoking rooms' ),
array( 'vc-material vc-material-textsms' => 'textsms' ),
array( 'vc-material vc-material-snooze' => 'snooze' ),
array( 'vc-material vc-material-sort' => 'sort' ),
array( 'vc-material vc-material-sort_by_alpha' => 'sort by alpha' ),
array( 'vc-material vc-material-spa' => 'spa' ),
array( 'vc-material vc-material-space_bar' => 'space bar' ),
array( 'vc-material vc-material-speaker' => 'speaker' ),
array( 'vc-material vc-material-speaker_group' => 'speaker group' ),
array( 'vc-material vc-material-speaker_notes' => 'speaker notes' ),
array( 'vc-material vc-material-speaker_notes_off' => 'speaker notes off' ),
array( 'vc-material vc-material-speaker_phone' => 'speaker phone' ),
array( 'vc-material vc-material-spellcheck' => 'spellcheck' ),
array( 'vc-material vc-material-star_border' => 'star border' ),
array( 'vc-material vc-material-star_half' => 'star half' ),
array( 'vc-material vc-material-stars' => 'stars' ),
array( 'vc-material vc-material-stay_primary_landscape' => 'stay primary landscape' ),
array( 'vc-material vc-material-stop' => 'stop' ),
array( 'vc-material vc-material-stop_screen_share' => 'stop screen share' ),
array( 'vc-material vc-material-storage' => 'storage' ),
array( 'vc-material vc-material-store_mall_directory' => 'store mall directory' ),
array( 'vc-material vc-material-straighten' => 'straighten' ),
array( 'vc-material vc-material-streetview' => 'streetview' ),
array( 'vc-material vc-material-strikethrough_s' => 'strikethrough s' ),
array( 'vc-material vc-material-style' => 'style' ),
array( 'vc-material vc-material-subdirectory_arrow_left' => 'subdirectory arrow left' ),
array( 'vc-material vc-material-subdirectory_arrow_right' => 'subdirectory arrow right' ),
array( 'vc-material vc-material-subject' => 'subject' ),
array( 'vc-material vc-material-subscriptions' => 'subscriptions' ),
array( 'vc-material vc-material-subtitles' => 'subtitles' ),
array( 'vc-material vc-material-subway' => 'subway' ),
array( 'vc-material vc-material-supervisor_account' => 'supervisor account' ),
array( 'vc-material vc-material-surround_sound' => 'surround sound' ),
array( 'vc-material vc-material-swap_calls' => 'swap calls' ),
array( 'vc-material vc-material-swap_horiz' => 'swap horiz' ),
array( 'vc-material vc-material-swap_vert' => 'swap vert' ),
array( 'vc-material vc-material-swap_vertical_circle' => 'swap vertical circle' ),
array( 'vc-material vc-material-switch_camera' => 'switch camera' ),
array( 'vc-material vc-material-switch_video' => 'switch video' ),
array( 'vc-material vc-material-sync_disabled' => 'sync disabled' ),
array( 'vc-material vc-material-sync_problem' => 'sync problem' ),
array( 'vc-material vc-material-system_update' => 'system update' ),
array( 'vc-material vc-material-system_update_alt' => 'system update alt' ),
array( 'vc-material vc-material-tab' => 'tab' ),
array( 'vc-material vc-material-tab_unselected' => 'tab unselected' ),
array( 'vc-material vc-material-tablet' => 'tablet' ),
array( 'vc-material vc-material-tablet_android' => 'tablet android' ),
array( 'vc-material vc-material-tablet_mac' => 'tablet mac' ),
array( 'vc-material vc-material-tap_and_play' => 'tap and play' ),
array( 'vc-material vc-material-text_fields' => 'text fields' ),
array( 'vc-material vc-material-text_format' => 'text format' ),
array( 'vc-material vc-material-texture' => 'texture' ),
array( 'vc-material vc-material-thumb_down' => 'thumb down' ),
array( 'vc-material vc-material-thumb_up' => 'thumb up' ),
array( 'vc-material vc-material-thumbs_up_down' => 'thumbs up down' ),
array( 'vc-material vc-material-timelapse' => 'timelapse' ),
array( 'vc-material vc-material-timeline' => 'timeline' ),
array( 'vc-material vc-material-timer' => 'timer' ),
array( 'vc-material vc-material-timer_10' => 'timer 10' ),
array( 'vc-material vc-material-timer_3' => 'timer 3' ),
array( 'vc-material vc-material-timer_off' => 'timer off' ),
array( 'vc-material vc-material-title' => 'title' ),
array( 'vc-material vc-material-toc' => 'toc' ),
array( 'vc-material vc-material-today' => 'today' ),
array( 'vc-material vc-material-toll' => 'toll' ),
array( 'vc-material vc-material-tonality' => 'tonality' ),
array( 'vc-material vc-material-touch_app' => 'touch app' ),
array( 'vc-material vc-material-toys' => 'toys' ),
array( 'vc-material vc-material-track_changes' => 'track changes' ),
array( 'vc-material vc-material-traffic' => 'traffic' ),
array( 'vc-material vc-material-train' => 'train' ),
array( 'vc-material vc-material-tram' => 'tram' ),
array( 'vc-material vc-material-transfer_within_a_station' => 'transfer within a station' ),
array( 'vc-material vc-material-transform' => 'transform' ),
array( 'vc-material vc-material-translate' => 'translate' ),
array( 'vc-material vc-material-trending_down' => 'trending down' ),
array( 'vc-material vc-material-trending_flat' => 'trending flat' ),
array( 'vc-material vc-material-trending_up' => 'trending up' ),
array( 'vc-material vc-material-tune' => 'tune' ),
array( 'vc-material vc-material-tv' => 'tv' ),
array( 'vc-material vc-material-unarchive' => 'unarchive' ),
array( 'vc-material vc-material-undo' => 'undo' ),
array( 'vc-material vc-material-unfold_less' => 'unfold less' ),
array( 'vc-material vc-material-unfold_more' => 'unfold more' ),
array( 'vc-material vc-material-update' => 'update' ),
array( 'vc-material vc-material-usb' => 'usb' ),
array( 'vc-material vc-material-verified_user' => 'verified user' ),
array( 'vc-material vc-material-vertical_align_bottom' => 'vertical align bottom' ),
array( 'vc-material vc-material-vertical_align_center' => 'vertical align center' ),
array( 'vc-material vc-material-vertical_align_top' => 'vertical align top' ),
array( 'vc-material vc-material-vibration' => 'vibration' ),
array( 'vc-material vc-material-video_call' => 'video call' ),
array( 'vc-material vc-material-video_label' => 'video label' ),
array( 'vc-material vc-material-video_library' => 'video library' ),
array( 'vc-material vc-material-videocam' => 'videocam' ),
array( 'vc-material vc-material-videocam_off' => 'videocam off' ),
array( 'vc-material vc-material-videogame_asset' => 'videogame asset' ),
array( 'vc-material vc-material-view_agenda' => 'view agenda' ),
array( 'vc-material vc-material-view_array' => 'view array' ),
array( 'vc-material vc-material-view_carousel' => 'view carousel' ),
array( 'vc-material vc-material-view_column' => 'view column' ),
array( 'vc-material vc-material-view_comfy' => 'view comfy' ),
array( 'vc-material vc-material-view_compact' => 'view compact' ),
array( 'vc-material vc-material-view_day' => 'view day' ),
array( 'vc-material vc-material-view_headline' => 'view headline' ),
array( 'vc-material vc-material-view_list' => 'view list' ),
array( 'vc-material vc-material-view_module' => 'view module' ),
array( 'vc-material vc-material-view_quilt' => 'view quilt' ),
array( 'vc-material vc-material-view_stream' => 'view stream' ),
array( 'vc-material vc-material-view_week' => 'view week' ),
array( 'vc-material vc-material-vignette' => 'vignette' ),
array( 'vc-material vc-material-visibility_off' => 'visibility off' ),
array( 'vc-material vc-material-voice_chat' => 'voice chat' ),
array( 'vc-material vc-material-voicemail' => 'voicemail' ),
array( 'vc-material vc-material-volume_down' => 'volume down' ),
array( 'vc-material vc-material-volume_mute' => 'volume mute' ),
array( 'vc-material vc-material-volume_off' => 'volume off' ),
array( 'vc-material vc-material-volume_up' => 'volume up' ),
array( 'vc-material vc-material-vpn_key' => 'vpn key' ),
array( 'vc-material vc-material-vpn_lock' => 'vpn lock' ),
array( 'vc-material vc-material-wallpaper' => 'wallpaper' ),
array( 'vc-material vc-material-watch' => 'watch' ),
array( 'vc-material vc-material-watch_later' => 'watch later' ),
array( 'vc-material vc-material-wb_auto' => 'wb auto' ),
array( 'vc-material vc-material-wb_incandescent' => 'wb incandescent' ),
array( 'vc-material vc-material-wb_iridescent' => 'wb iridescent' ),
array( 'vc-material vc-material-wb_sunny' => 'wb sunny' ),
array( 'vc-material vc-material-wc' => 'wc' ),
array( 'vc-material vc-material-web' => 'web' ),
array( 'vc-material vc-material-web_asset' => 'web asset' ),
array( 'vc-material vc-material-weekend' => 'weekend' ),
array( 'vc-material vc-material-whatshot' => 'whatshot' ),
array( 'vc-material vc-material-widgets' => 'widgets' ),
array( 'vc-material vc-material-wifi' => 'wifi' ),
array( 'vc-material vc-material-wifi_lock' => 'wifi lock' ),
array( 'vc-material vc-material-wifi_tethering' => 'wifi tethering' ),
array( 'vc-material vc-material-work' => 'work' ),
array( 'vc-material vc-material-wrap_text' => 'wrap text' ),
array( 'vc-material vc-material-youtube_searched_for' => 'youtube searched for' ),
array( 'vc-material vc-material-zoom_in' => 'zoom in' ),
array( 'vc-material vc-material-zoom_out' => 'zoom out' ),
array( 'vc-material vc-material-zoom_out_map' => 'zoom out map' ),
);
return array_merge( $icons, $material );
}
params/default_params.php 0000644 00000024613 15021217214 0011530 0 ustar 00 ';
}
/**
* Dropdown(select with options) shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_dropdown_form_field( $settings, $value ) {
$output = '';
$css_option = str_replace( '#', 'hash-', vc_get_dropdown_option( $settings, $value ) );
$output .= '';
if ( is_array( $value ) ) {
$value = isset( $value['value'] ) ? $value['value'] : array_shift( $value );
}
if ( ! empty( $settings['value'] ) ) {
foreach ( $settings['value'] as $index => $data ) {
if ( is_numeric( $index ) && ( is_string( $data ) || is_numeric( $data ) ) ) {
$option_label = $data;
$option_value = $data;
} elseif ( is_numeric( $index ) && is_array( $data ) ) {
$option_label = isset( $data['label'] ) ? $data['label'] : array_pop( $data );
$option_value = isset( $data['value'] ) ? $data['value'] : array_pop( $data );
} else {
$option_value = $data;
$option_label = $index;
}
$selected = '';
$option_value_string = (string) $option_value;
$value_string = (string) $value;
if ( '' !== $value && $option_value_string === $value_string ) {
$selected = 'selected="selected"';
}
$option_class = str_replace( '#', 'hash-', $option_value );
$output .= '' . htmlspecialchars( $option_label ) . ' ';
}
}
$output .= ' ';
return $output;
}
/**
* Checkbox shortcode attribute type generator.
*
* @param $settings
* @param string $value
*
* @return string - html string.
* @since 4.4
*/
function vc_checkbox_form_field( $settings, $value ) {
$output = '';
if ( is_array( $value ) ) {
$value = ''; // fix #1239
}
$current_value = strlen( $value ) > 0 ? explode( ',', $value ) : array();
$values = isset( $settings['value'] ) && is_array( $settings['value'] ) ? $settings['value'] : array( esc_html__( 'Yes', 'js_composer' ) => 'true' );
if ( ! empty( $values ) ) {
foreach ( $values as $label => $v ) {
// NOTE!! Don't use strict compare here for BC!
// @codingStandardsIgnoreLine
$checked = in_array( $v, $current_value ) ? 'checked' : '';
$output .= ' ' . $label . ' ';
}
}
return $output;
}
add_filter( 'vc_map_get_param_defaults', 'vc_checkbox_param_defaults', 10, 2 );
/**
* @param $value
* @param $param
* @return mixed|string
*/
function vc_checkbox_param_defaults( $value, $param ) {
if ( 'checkbox' === $param['type'] ) {
$value = '';
if ( isset( $param['std'] ) ) {
$value = $param['std'];
}
}
return $value;
}
/**
* Checkbox shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_posttypes_form_field( $settings, $value ) {
$output = '';
$args = array(
'public' => true,
);
$post_types = get_post_types( $args );
foreach ( $post_types as $post_type ) {
$checked = '';
if ( 'attachment' !== $post_type ) {
if ( in_array( $post_type, explode( ',', $value ), true ) ) {
$checked = 'checked="checked"';
}
$output .= ' ' . $post_type . ' ';
}
}
return $output;
}
/**
* Taxonomies shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_taxonomies_form_field( $settings, $value ) {
$output = '';
$post_types = get_post_types( array(
'public' => false,
'name' => 'attachment',
), 'names', 'NOT' );
foreach ( $post_types as $type ) {
$taxonomies = get_object_taxonomies( $type, '' );
foreach ( $taxonomies as $tax ) {
$checked = '';
if ( in_array( $tax->name, explode( ',', $value ), true ) ) {
$checked = 'checked';
}
$output .= ' ' . $tax->label . ' ';
}
}
return $output;
}
/**
* Exploded textarea shortcode attribute type generator.
*
* Data saved and coma-separated values are merged with line breaks and returned in a textarea.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_exploded_textarea_form_field( $settings, $value ) {
$value = str_replace( ',', "\n", $value );
return '';
}
/**
* Safe Textarea shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.8.2
*/
function vc_exploded_textarea_safe_form_field( $settings, $value ) {
$value = vc_value_from_safe( $value, true );
$value = str_replace( ',', "\n", $value );
return '';
}
/**
* Textarea raw html shortcode attribute type generator.
*
* This attribute type allows safely add custom html to your post/page.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_textarea_raw_html_form_field( $settings, $value ) {
// @codingStandardsIgnoreLine
return sprintf( '', $settings['param_name'], $settings['param_name'], $settings['type'], htmlentities( rawurldecode( base64_decode( $value ) ), ENT_COMPAT, 'UTF-8' ) );
}
/**
* Safe Textarea shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_textarea_safe_form_field( $settings, $value ) {
return '';
}
/**
* Textarea shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_textarea_form_field( $settings, $value ) {
return '';
}
/**
* Attach images shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @param $tag
* @param bool $single
*
* @return string - html string.
* @since 4.4
*
*/
function vc_attach_images_form_field( $settings, $value, $tag, $single = false ) {
$output = '';
$param_value = wpb_removeNotExistingImgIDs( $value );
$output .= ' ';
$output .= '';
$output .= '';
$output .= '
';
if ( true === $single ) {
$output .= ' ' . esc_html__( 'Add image', 'js_composer' ) . ' ';
} else {
$output .= ' ' . esc_html__( 'Add images', 'js_composer' ) . ' ';
}
return $output;
}
/**
* Attach image shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @param $tag
*
* @return string - html string.
* @since 4.4
*/
function vc_attach_image_form_field( $settings, $value, $tag ) {
return vc_attach_images_form_field( $settings, $value, $tag, true );
}
/**
* Widgetised sidebars shortcode attribute type generator.
*
* @param $settings
* @param $value
*
* @return string - html string.
* @since 4.4
*/
function vc_widgetised_sidebars_form_field( $settings, $value ) {
$output = '';
$sidebars = $GLOBALS['wp_registered_sidebars'];
$output .= '';
foreach ( $sidebars as $sidebar ) {
$selected = '';
if ( $sidebar['id'] === $value ) {
$selected = 'selected';
}
$sidebar_name = $sidebar['name'];
$output .= '' . $sidebar_name . ' ';
}
$output .= ' ';
return $output;
}
params/load.php 0000644 00000004414 15021217214 0007455 0 ustar 00 tag = $tag;
$this->settings = $settings;
$this->value = $value;
}
/**
* @return string
* @since 4.4
* vc_filter: vc_autocomplete_{shortcode_tag}_{param_name}_render - hook to define output for autocomplete item
*/
public function render() {
$output = sprintf( '', ( isset( $this->settings['settings'], $this->settings['settings']['display_inline'] ) && true === $this->settings['settings']['display_inline'] ) ? ' vc_autocomplete-inline' : '' );
if ( isset( $this->value ) && strlen( $this->value ) > 0 ) {
$values = explode( ',', $this->value );
foreach ( $values as $key => $val ) {
$value = array(
'value' => trim( $val ),
'label' => trim( $val ),
);
if ( isset( $this->settings['settings'], $this->settings['settings']['values'] ) && ! empty( $this->settings['settings']['values'] ) ) {
foreach ( $this->settings['settings']['values'] as $data ) {
if ( trim( $data['value'] ) === trim( $val ) ) {
$value['label'] = $data['label'];
break;
}
}
} else {
// Magic is here. this filter is used to render value correctly ( must return array with 'value', 'label' keys )
$value = apply_filters( 'vc_autocomplete_' . $this->tag . '_' . $this->settings['param_name'] . '_render', $value, $this->settings, $this->tag );
}
if ( is_array( $value ) && isset( $value['value'], $value['label'] ) ) {
$output .= '' . $value['label'] . ' × ';
}
}
}
$output .= sprintf( ' ', esc_attr__( 'Click here and start typing...', 'js_composer' ), $this->value );
$output .= sprintf( '
', $this->settings['param_name'], $this->settings['param_name'], $this->settings['type'], $this->value, ( isset( $this->settings['settings'] ) && ! empty( $this->settings['settings'] ) ) ? ' data-settings="' . htmlentities( wp_json_encode( $this->settings['settings'] ), ENT_QUOTES, 'utf-8' ) . '" ' : '' );
return $output;
}
}
/**
* @action wp_ajax_vc_get_autocomplete_suggestion - since 4.4 used to hook ajax requests for autocomplete suggestions
*/
add_action( 'wp_ajax_vc_get_autocomplete_suggestion', 'vc_get_autocomplete_suggestion' );
/**
* @since 4.4
*/
function vc_get_autocomplete_suggestion() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
$query = vc_post_param( 'query' );
$tag = wp_strip_all_tags( vc_post_param( 'shortcode' ) );
$param_name = vc_post_param( 'param' );
vc_render_suggestion( $query, $tag, $param_name );
}
/**
* @param $query
* @param $tag
* @param $param_name
*
* vc_filter: vc_autocomplete_{tag}_{param_name}_callback - hook to get suggestions from ajax. (here you need to hook).
* @since 4.4
*
*/
function vc_render_suggestion( $query, $tag, $param_name ) {
$suggestions = apply_filters( 'vc_autocomplete_' . stripslashes( $tag ) . '_' . stripslashes( $param_name ) . '_callback', $query, $tag, $param_name );
if ( is_array( $suggestions ) && ! empty( $suggestions ) ) {
die( wp_json_encode( $suggestions ) );
}
die( '' ); // if nothing found..
}
/**
* Function for rendering param in edit form (add element)
* Parse settings from vc_map and entered values.
*
* @param $settings
* @param $value
* @param $tag
*
* @return mixed rendered template for params in edit form
* @since 4.4
* vc_filter: vc_autocomplete_render_filter - hook to override output of edit for field "autocomplete"
*/
function vc_autocomplete_form_field( $settings, $value, $tag ) {
$auto_complete = new Vc_AutoComplete( $settings, $value, $tag );
return apply_filters( 'vc_autocomplete_render_filter', $auto_complete->render() );
}
params/href/href.php 0000644 00000001034 15021217214 0010401 0 ustar 00 ', esc_attr( $settings['param_name'] ), esc_attr( $settings['param_name'] ), esc_attr( $settings['type'] ), $value );
}
params/animation_style/animation_style.php 0000644 00000036163 15021217214 0015142 0 ustar 00 'animation_style',
* 'heading' => esc_html__( 'Animation', 'js_composer' ),
* 'param_name' => 'animation',
* ),
* Preview in https://daneden.github.io/animate.css/
* @since 4.4
*/
class Vc_ParamAnimation {
/**
* @since 4.4
* @var array $settings parameter settings from vc_map
*/
protected $settings;
/**
* @since 4.4
* @var string $value parameter value
*/
protected $value;
/**
* Define available animation effects
* @return array
* @since 4.4
* vc_filter: vc_param_animation_style_list - to override animation styles
* array
*/
protected function animationStyles() {
$styles = array(
array(
'values' => array(
esc_html__( 'None', 'js_composer' ) => 'none',
),
),
array(
'label' => esc_html__( 'Attention Seekers', 'js_composer' ),
'values' => array(
// text to display => value
esc_html__( 'bounce', 'js_composer' ) => array(
'value' => 'bounce',
'type' => 'other',
),
esc_html__( 'flash', 'js_composer' ) => array(
'value' => 'flash',
'type' => 'other',
),
esc_html__( 'pulse', 'js_composer' ) => array(
'value' => 'pulse',
'type' => 'other',
),
esc_html__( 'rubberBand', 'js_composer' ) => array(
'value' => 'rubberBand',
'type' => 'other',
),
esc_html__( 'shake', 'js_composer' ) => array(
'value' => 'shake',
'type' => 'other',
),
esc_html__( 'swing', 'js_composer' ) => array(
'value' => 'swing',
'type' => 'other',
),
esc_html__( 'tada', 'js_composer' ) => array(
'value' => 'tada',
'type' => 'other',
),
esc_html__( 'wobble', 'js_composer' ) => array(
'value' => 'wobble',
'type' => 'other',
),
),
),
array(
'label' => esc_html__( 'Bouncing Entrances', 'js_composer' ),
'values' => array(
// text to display => value
esc_html__( 'bounceIn', 'js_composer' ) => array(
'value' => 'bounceIn',
'type' => 'in',
),
esc_html__( 'bounceInDown', 'js_composer' ) => array(
'value' => 'bounceInDown',
'type' => 'in',
),
esc_html__( 'bounceInLeft', 'js_composer' ) => array(
'value' => 'bounceInLeft',
'type' => 'in',
),
esc_html__( 'bounceInRight', 'js_composer' ) => array(
'value' => 'bounceInRight',
'type' => 'in',
),
esc_html__( 'bounceInUp', 'js_composer' ) => array(
'value' => 'bounceInUp',
'type' => 'in',
),
),
),
array(
'label' => esc_html__( 'Bouncing Exits', 'js_composer' ),
'values' => array(
// text to display => value
esc_html__( 'bounceOut', 'js_composer' ) => array(
'value' => 'bounceOut',
'type' => 'out',
),
esc_html__( 'bounceOutDown', 'js_composer' ) => array(
'value' => 'bounceOutDown',
'type' => 'out',
),
esc_html__( 'bounceOutLeft', 'js_composer' ) => array(
'value' => 'bounceOutLeft',
'type' => 'out',
),
esc_html__( 'bounceOutRight', 'js_composer' ) => array(
'value' => 'bounceOutRight',
'type' => 'out',
),
esc_html__( 'bounceOutUp', 'js_composer' ) => array(
'value' => 'bounceOutUp',
'type' => 'out',
),
),
),
array(
'label' => esc_html__( 'Fading Entrances', 'js_composer' ),
'values' => array(
// text to display => value
esc_html__( 'fadeIn', 'js_composer' ) => array(
'value' => 'fadeIn',
'type' => 'in',
),
esc_html__( 'fadeInDown', 'js_composer' ) => array(
'value' => 'fadeInDown',
'type' => 'in',
),
esc_html__( 'fadeInDownBig', 'js_composer' ) => array(
'value' => 'fadeInDownBig',
'type' => 'in',
),
esc_html__( 'fadeInLeft', 'js_composer' ) => array(
'value' => 'fadeInLeft',
'type' => 'in',
),
esc_html__( 'fadeInLeftBig', 'js_composer' ) => array(
'value' => 'fadeInLeftBig',
'type' => 'in',
),
esc_html__( 'fadeInRight', 'js_composer' ) => array(
'value' => 'fadeInRight',
'type' => 'in',
),
esc_html__( 'fadeInRightBig', 'js_composer' ) => array(
'value' => 'fadeInRightBig',
'type' => 'in',
),
esc_html__( 'fadeInUp', 'js_composer' ) => array(
'value' => 'fadeInUp',
'type' => 'in',
),
esc_html__( 'fadeInUpBig', 'js_composer' ) => array(
'value' => 'fadeInUpBig',
'type' => 'in',
),
),
),
array(
'label' => esc_html__( 'Fading Exits', 'js_composer' ),
'values' => array(
esc_html__( 'fadeOut', 'js_composer' ) => array(
'value' => 'fadeOut',
'type' => 'out',
),
esc_html__( 'fadeOutDown', 'js_composer' ) => array(
'value' => 'fadeOutDown',
'type' => 'out',
),
esc_html__( 'fadeOutDownBig', 'js_composer' ) => array(
'value' => 'fadeOutDownBig',
'type' => 'out',
),
esc_html__( 'fadeOutLeft', 'js_composer' ) => array(
'value' => 'fadeOutLeft',
'type' => 'out',
),
esc_html__( 'fadeOutLeftBig', 'js_composer' ) => array(
'value' => 'fadeOutLeftBig',
'type' => 'out',
),
esc_html__( 'fadeOutRight', 'js_composer' ) => array(
'value' => 'fadeOutRight',
'type' => 'out',
),
esc_html__( 'fadeOutRightBig', 'js_composer' ) => array(
'value' => 'fadeOutRightBig',
'type' => 'out',
),
esc_html__( 'fadeOutUp', 'js_composer' ) => array(
'value' => 'fadeOutUp',
'type' => 'out',
),
esc_html__( 'fadeOutUpBig', 'js_composer' ) => array(
'value' => 'fadeOutUpBig',
'type' => 'out',
),
),
),
array(
'label' => esc_html__( 'Flippers', 'js_composer' ),
'values' => array(
esc_html__( 'flip', 'js_composer' ) => array(
'value' => 'flip',
'type' => 'other',
),
esc_html__( 'flipInX', 'js_composer' ) => array(
'value' => 'flipInX',
'type' => 'in',
),
esc_html__( 'flipInY', 'js_composer' ) => array(
'value' => 'flipInY',
'type' => 'in',
),
esc_html__( 'flipOutX', 'js_composer' ) => array(
'value' => 'flipOutX',
'type' => 'out',
),
esc_html__( 'flipOutY', 'js_composer' ) => array(
'value' => 'flipOutY',
'type' => 'out',
),
),
),
array(
'label' => esc_html__( 'Lightspeed', 'js_composer' ),
'values' => array(
esc_html__( 'lightSpeedIn', 'js_composer' ) => array(
'value' => 'lightSpeedIn',
'type' => 'in',
),
esc_html__( 'lightSpeedOut', 'js_composer' ) => array(
'value' => 'lightSpeedOut',
'type' => 'out',
),
),
),
array(
'label' => esc_html__( 'Rotating Entrances', 'js_composer' ),
'values' => array(
esc_html__( 'rotateIn', 'js_composer' ) => array(
'value' => 'rotateIn',
'type' => 'in',
),
esc_html__( 'rotateInDownLeft', 'js_composer' ) => array(
'value' => 'rotateInDownLeft',
'type' => 'in',
),
esc_html__( 'rotateInDownRight', 'js_composer' ) => array(
'value' => 'rotateInDownRight',
'type' => 'in',
),
esc_html__( 'rotateInUpLeft', 'js_composer' ) => array(
'value' => 'rotateInUpLeft',
'type' => 'in',
),
esc_html__( 'rotateInUpRight', 'js_composer' ) => array(
'value' => 'rotateInUpRight',
'type' => 'in',
),
),
),
array(
'label' => esc_html__( 'Rotating Exits', 'js_composer' ),
'values' => array(
esc_html__( 'rotateOut', 'js_composer' ) => array(
'value' => 'rotateOut',
'type' => 'out',
),
esc_html__( 'rotateOutDownLeft', 'js_composer' ) => array(
'value' => 'rotateOutDownLeft',
'type' => 'out',
),
esc_html__( 'rotateOutDownRight', 'js_composer' ) => array(
'value' => 'rotateOutDownRight',
'type' => 'out',
),
esc_html__( 'rotateOutUpLeft', 'js_composer' ) => array(
'value' => 'rotateOutUpLeft',
'type' => 'out',
),
esc_html__( 'rotateOutUpRight', 'js_composer' ) => array(
'value' => 'rotateOutUpRight',
'type' => 'out',
),
),
),
array(
'label' => esc_html__( 'Specials', 'js_composer' ),
'values' => array(
esc_html__( 'hinge', 'js_composer' ) => array(
'value' => 'hinge',
'type' => 'out',
),
esc_html__( 'rollIn', 'js_composer' ) => array(
'value' => 'rollIn',
'type' => 'in',
),
esc_html__( 'rollOut', 'js_composer' ) => array(
'value' => 'rollOut',
'type' => 'out',
),
),
),
array(
'label' => esc_html__( 'Zoom Entrances', 'js_composer' ),
'values' => array(
esc_html__( 'zoomIn', 'js_composer' ) => array(
'value' => 'zoomIn',
'type' => 'in',
),
esc_html__( 'zoomInDown', 'js_composer' ) => array(
'value' => 'zoomInDown',
'type' => 'in',
),
esc_html__( 'zoomInLeft', 'js_composer' ) => array(
'value' => 'zoomInLeft',
'type' => 'in',
),
esc_html__( 'zoomInRight', 'js_composer' ) => array(
'value' => 'zoomInRight',
'type' => 'in',
),
esc_html__( 'zoomInUp', 'js_composer' ) => array(
'value' => 'zoomInUp',
'type' => 'in',
),
),
),
array(
'label' => esc_html__( 'Zoom Exits', 'js_composer' ),
'values' => array(
esc_html__( 'zoomOut', 'js_composer' ) => array(
'value' => 'zoomOut',
'type' => 'out',
),
esc_html__( 'zoomOutDown', 'js_composer' ) => array(
'value' => 'zoomOutDown',
'type' => 'out',
),
esc_html__( 'zoomOutLeft', 'js_composer' ) => array(
'value' => 'zoomOutLeft',
'type' => 'out',
),
esc_html__( 'zoomOutRight', 'js_composer' ) => array(
'value' => 'zoomOutRight',
'type' => 'out',
),
esc_html__( 'zoomOutUp', 'js_composer' ) => array(
'value' => 'zoomOutUp',
'type' => 'out',
),
),
),
array(
'label' => esc_html__( 'Slide Entrances', 'js_composer' ),
'values' => array(
esc_html__( 'slideInDown', 'js_composer' ) => array(
'value' => 'slideInDown',
'type' => 'in',
),
esc_html__( 'slideInLeft', 'js_composer' ) => array(
'value' => 'slideInLeft',
'type' => 'in',
),
esc_html__( 'slideInRight', 'js_composer' ) => array(
'value' => 'slideInRight',
'type' => 'in',
),
esc_html__( 'slideInUp', 'js_composer' ) => array(
'value' => 'slideInUp',
'type' => 'in',
),
),
),
array(
'label' => esc_html__( 'Slide Exits', 'js_composer' ),
'values' => array(
esc_html__( 'slideOutDown', 'js_composer' ) => array(
'value' => 'slideOutDown',
'type' => 'out',
),
esc_html__( 'slideOutLeft', 'js_composer' ) => array(
'value' => 'slideOutLeft',
'type' => 'out',
),
esc_html__( 'slideOutRight', 'js_composer' ) => array(
'value' => 'slideOutRight',
'type' => 'out',
),
esc_html__( 'slideOutUp', 'js_composer' ) => array(
'value' => 'slideOutUp',
'type' => 'out',
),
),
),
);
/**
* Used to override animation style list
* @since 4.4
*/
return apply_filters( 'vc_param_animation_style_list', $styles );
}
/**
* @param array $styles - array of styles to group
* @param string|array $type - what type to return
*
* @return array
* @since 4.4
*/
public function groupStyleByType( $styles, $type ) {
$grouped = array();
foreach ( $styles as $group ) {
$inner_group = array( 'values' => array() );
if ( isset( $group['label'] ) ) {
$inner_group['label'] = $group['label'];
}
foreach ( $group['values'] as $key => $value ) {
if ( ( is_array( $value ) && isset( $value['type'] ) && ( ( is_string( $type ) && $value['type'] === $type ) || is_array( $type ) && in_array( $value['type'], $type, true ) ) ) || ! is_array( $value ) || ! isset( $value['type'] ) ) {
$inner_group['values'][ $key ] = $value;
}
}
if ( ! empty( $inner_group['values'] ) ) {
$grouped[] = $inner_group;
}
}
return $grouped;
}
/**
* Set variables and register animate-css asset
* @param $settings
* @param $value
* @since 4.4
*
*/
public function __construct( $settings, $value ) {
$this->settings = $settings;
$this->value = $value;
wp_register_style( 'vc_animate-css', vc_asset_url( 'lib/bower/animate-css/animate.min.css' ), array(), WPB_VC_VERSION );
}
/**
* Render edit form output
* @return string
* @since 4.4
*/
public function render() {
$output = '';
wp_enqueue_style( 'vc_animate-css' );
$styles = $this->animationStyles();
if ( isset( $this->settings['settings']['type'] ) ) {
$styles = $this->groupStyleByType( $styles, $this->settings['settings']['type'] );
}
if ( isset( $this->settings['settings']['custom'] ) && is_array( $this->settings['settings']['custom'] ) ) {
$styles = array_merge( $styles, $this->settings['settings']['custom'] );
}
if ( is_array( $styles ) && ! empty( $styles ) ) {
$left_side = '
';
$build_style_select = '';
foreach ( $styles as $style ) {
$build_style_select .= '';
if ( is_array( $style['values'] ) && ! empty( $style['values'] ) ) {
foreach ( $style['values'] as $key => $value ) {
$build_style_select .= '' . esc_html( $key ) . ' ';
}
}
$build_style_select .= ' ';
}
$build_style_select .= ' ';
$left_side .= $build_style_select;
$left_side .= '
';
$output .= $left_side;
$right_side = '
';
$right_side .= '
' . esc_html__( 'Animate it', 'js_composer' ) . '
';
$right_side .= '
';
$output .= $right_side;
}
$output .= '
'; // Close Row
$output .= sprintf( ' ', esc_attr( $this->settings['param_name'] ), esc_attr( $this->settings['param_name'] ), esc_attr( $this->settings['type'] ), $this->value );
return $output;
}
}
/**
* Function for rendering param in edit form (add element)
* Parse settings from vc_map and entered 'values'.
*
* @param array $settings - parameter settings in vc_map
* @param string $value - parameter value
* @param string $tag - shortcode tag
*
* vc_filter: vc_animation_style_render_filter - filter to override editor form
* field output
*
* @return mixed rendered template for params in edit form
*
* @since 4.4
*/
function vc_animation_style_form_field( $settings, $value, $tag ) {
$field = new Vc_ParamAnimation( $settings, $value );
/**
* Filter used to override full output of edit form field animation style
* @since 4.4
*/
return apply_filters( 'vc_animation_style_render_filter', $field->render(), $settings, $value, $tag );
}
params/param_group/param_group.php 0000644 00000015350 15021217214 0013367 0 ustar 00 setSettings( $settings );
}
/**
* Get shortcode attribute value wrapper for params group.
*
* This function checks if value isn't set then it uses std or value fields in param settings.
* @param $params_settings
* @param null $value
*
* @return mixed;
* @since 5.2.1
*
*/
public function getParamGroupAttributeValue( $params_settings, $value = null ) {
return $this->parseShortcodeAttributeValue( $params_settings, $value );
}
}
/**
* Class Vc_ParamGroup
* @since 4.4
*/
class Vc_ParamGroup {
/**
* @since 4.4
* @var
*/
protected $settings;
/**
* @since 4.4
* @var array|mixed
*/
protected $value;
/**
* @since 4.4
* @var
*/
protected $map;
/**
* @since 4.4
* @var
*/
protected $atts;
public $unparsed_value;
/**
* @param $settings
* @param $value
* @param $tag
*
* @since 4.4
*/
public function __construct( $settings, $value, $tag ) {
$this->settings = $settings;
$this->settings['base'] = $tag;
$this->value = vc_param_group_parse_atts( $value );
$this->unparsed_value = $value;
}
/**
* @param $param_name
* @param $arr
*
* @return array
* @since 4.4
*/
public function params_to_arr( $param_name, $arr ) {
$data = array();
foreach ( $arr as $param ) {
$data[ $param_name . '_' . $param['param_name'] ] = $param['type'];
}
return $data;
}
/**
* @return mixed|string
* @since 4.4
*/
public function render() {
$output = '';
$edit_form = new Vc_ParamGroup_Edit_Form_Fields( $this->settings );
$settings = $this->settings;
$output .= '';
$template = vc_include_template( 'params/param_group/content.tpl.php' );
// Parsing values
if ( ! empty( $this->value ) ) {
foreach ( $this->value as $values ) {
$output .= $template;
$value_block = "";
$data = $values;
foreach ( $this->settings['params'] as $param ) {
$param_value = isset( $data[ $param['param_name'] ] ) ? $data[ $param['param_name'] ] : ( isset( $param['value'] ) ? $param['value'] : null );
$param['param_name'] = $this->settings['param_name'] . '_' . $param['param_name'];
$value = $edit_form->getParamGroupAttributeValue( $param, $param_value );
$value_block .= $edit_form->renderField( $param, $value );
}
$value_block .= '
';
$output = str_replace( '%content%', $value_block, $output );
}
} else {
$output .= $template;
}
// Empty fields wrapper and Add new fields wrapper
$content = "";
foreach ( $this->settings['params'] as $param ) {
$param['param_name'] = $this->settings['param_name'] . '_' . $param['param_name'];
$value = $edit_form->getParamGroupAttributeValue( $param );
$content .= $edit_form->renderField( $param, $value );
}
$content .= '
';
$output = str_replace( '%content%', $content, $output );
// And button on bottom
$output .= ' ';
$add_template = vc_include_template( 'params/param_group/add.tpl.php' );
$add_template = str_replace( '%content%', $content, $add_template );
$custom_tag = 'script';
$output .= '<' . $custom_tag . ' type="text/html" class="vc_param_group-template">' . wp_json_encode( $add_template ) . '' . $custom_tag . '>';
$output .= ' ';
return $output;
}
}
/**
* Function for rendering param in edit form (add element)
* Parse settings from vc_map and entered values.
*
* @param $param_settings
* @param $param_value
* @param $tag
*
* @return mixed rendered template for params in edit form
* @since 4.4
*
* vc_filter: vc_param_group_render_filter
*
*/
function vc_param_group_form_field( $param_settings, $param_value, $tag ) {
$param_group = new Vc_ParamGroup( $param_settings, $param_value, $tag );
return apply_filters( 'vc_param_group_render_filter', $param_group->render() );
}
add_action( 'wp_ajax_vc_param_group_clone', 'vc_param_group_clone' );
/**
* @since 4.4
*/
function vc_param_group_clone() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
$param = vc_post_param( 'param' );
$value = vc_post_param( 'value' );
$tag = vc_post_param( 'shortcode' );
wp_send_json_success( vc_param_group_clone_by_data( $tag, json_decode( rawurldecode( $param ), true ), json_decode( rawurldecode( $value ), true ) ) );
}
/**
* @param $tag
* @param $params
* @param $data
*
* @return mixed|string
* @since 4.4
*/
function vc_param_group_clone_by_data( $tag, $params, $data ) {
$output = '';
$params['base'] = $tag;
$edit_form = new Vc_ParamGroup_Edit_Form_Fields( $params );
$edit_form->loadDefaultParams();
$template = vc_include_template( 'params/param_group/content.tpl.php' );
$output .= $template;
$value_block = "";
$data = $data[0];
if ( isset( $params['params'] ) && is_array( $params['params'] ) ) {
foreach ( $params['params'] as $param ) {
$param_data = isset( $data[ $param['param_name'] ] ) ? $data[ $param['param_name'] ] : ( isset( $param['value'] ) ? $param['value'] : '' );
$param['param_name'] = $params['param_name'] . '_' . $param['param_name'];
$value_block .= $edit_form->renderField( $param, $param_data );
}
}
$value_block .= '
';
$output = str_replace( '%content%', $value_block, $output );
return $output;
}
/**
* @param $atts_string
*
* @return array|mixed
* @since 4.4
*/
function vc_param_group_parse_atts( $atts_string ) {
$array = json_decode( urldecode( $atts_string ), true );
return $array;
}
add_filter( 'vc_map_get_param_defaults', 'vc_param_group_param_defaults', 10, 2 );
/**
* @param $value
* @param $param
* @return string
*/
function vc_param_group_param_defaults( $value, $param ) {
if ( 'param_group' === $param['type'] && isset( $param['params'] ) && empty( $value ) ) {
$defaults = vc_map_get_params_defaults( $param['params'] );
$value = rawurlencode( wp_json_encode( array( $defaults ) ) );
}
return $value;
}
params/column_offset/column_offset.php 0000644 00000011261 15021217214 0014242 0 ustar 00 'Large',
'md' => 'Medium',
'sm' => 'Small',
'xs' => 'Extra small',
);
/**
* @var array
*/
protected $column_width_list = array();
/**
* @param $settings
* @param $value
*/
public function __construct( $settings, $value ) {
$this->settings = $settings;
$this->value = $value;
$this->column_width_list = array(
esc_html__( '1 column - 1/12', 'js_composer' ) => '1',
esc_html__( '2 columns - 1/6', 'js_composer' ) => '2',
esc_html__( '3 columns - 1/4', 'js_composer' ) => '3',
esc_html__( '4 columns - 1/3', 'js_composer' ) => '4',
esc_html__( '5 columns - 5/12', 'js_composer' ) => '5',
esc_html__( '6 columns - 1/2', 'js_composer' ) => '6',
esc_html__( '7 columns - 7/12', 'js_composer' ) => '7',
esc_html__( '8 columns - 2/3', 'js_composer' ) => '8',
esc_html__( '9 columns - 3/4', 'js_composer' ) => '9',
esc_html__( '10 columns - 5/6', 'js_composer' ) => '10',
esc_html__( '11 columns - 11/12', 'js_composer' ) => '11',
esc_html__( '12 columns - 1/1', 'js_composer' ) => '12',
esc_html__( '20% - 1/5', 'js_composer' ) => '1/5',
esc_html__( '40% - 2/5', 'js_composer' ) => '2/5',
esc_html__( '60% - 3/5', 'js_composer' ) => '3/5',
esc_html__( '80% - 4/5', 'js_composer' ) => '4/5',
);
}
/**
* @return string
*/
public function render() {
ob_start();
vc_include_template( 'params/column_offset/template.tpl.php', array(
'settings' => $this->settings,
'value' => $this->value,
'data' => $this->valueData(),
'sizes' => $this->size_types,
'param' => $this,
) );
return ob_get_clean();
}
/**
* @return array|mixed
*/
public function valueData() {
if ( ! isset( $this->data ) ) {
$this->data = preg_split( '/\s+/', $this->value );
}
return $this->data;
}
/**
* @param $size
*
* @return string
*/
public function sizeControl( $size ) {
if ( 'sm' === $size ) {
return '' . esc_html__( 'Default value from width attribute', 'js_composer' ) . ' ';
}
$empty_label = 'xs' === $size ? '' : esc_html__( 'Inherit from smaller', 'js_composer' );
$output = sprintf( '%s ', $size, $size, $empty_label );
foreach ( $this->column_width_list as $label => $index ) {
$value = 'vc_col-' . $size . '-' . $index;
$output .= sprintf( '%s ', $value, in_array( $value, $this->data, true ) ? 'selected="true"' : '', $label );
}
$output .= ' ';
return $output;
}
/**
* @param $size
*
* @return string
*/
public function offsetControl( $size ) {
$prefix = 'vc_col-' . $size . '-offset-';
$empty_label = 'xs' === $size ? esc_html__( 'No offset', 'js_composer' ) : esc_html__( 'Inherit from smaller', 'js_composer' );
$output = sprintf( '%s ', $size, $size, $empty_label );
if ( 'xs' !== $size ) {
$output .= sprintf( '%s ', $prefix, in_array( $prefix . '0', $this->data, true ) ? ' selected="true"' : '', esc_html__( 'No offset', 'js_composer' ) );
}
foreach ( $this->column_width_list as $label => $index ) {
$value = $prefix . $index;
$output .= sprintf( '%s ', $value, in_array( $value, $this->data, true ) ? ' selected="true"' : '', $label );
}
$output .= ' ';
return $output;
}
}
/**
* @param $settings
* @param $value
*
* @return string
*/
function vc_column_offset_form_field( $settings, $value ) {
$column_offset = new Vc_Column_Offset( $settings, $value );
return $column_offset->render();
}
/**
* @param $column_offset
* @param $width
*
* @return mixed|string
*/
function vc_column_offset_class_merge( $column_offset, $width ) {
// Remove offset settings if
if ( '1' === vc_settings()->get( 'not_responsive_css' ) ) {
$column_offset = preg_replace( '/vc_col\-(lg|md|xs)[^\s]*/', '', $column_offset );
}
if ( preg_match( '/vc_col\-sm\-\d+/', $column_offset ) ) {
return $column_offset;
}
return $width . ( empty( $column_offset ) ? '' : ' ' . $column_offset );
}
/**
*
*/
function vc_load_column_offset_param() {
vc_add_shortcode_param( 'column_offset', 'vc_column_offset_form_field' );
}
add_action( 'vc_load_default_params', 'vc_load_column_offset_param' );
params/sorted_list/sorted_list.php 0000644 00000002763 15021217214 0013431 0 ustar 00 %s
', $settings['param_name'], $settings['param_name'], $settings['type'], $value, vc_sorted_list_parts_list( $settings['options'] ) );
}
/**
* @param $list
*
* @return string
* @since 4.2
*/
function vc_sorted_list_parts_list( $list ) {
$output = '';
foreach ( $list as $control ) {
$output .= sprintf( ' %s
', $control[0], $control[0], count( $control ) > 1 ? htmlspecialchars( wp_json_encode( array_slice( $control, 2 ) ) ) : '', htmlspecialchars( $control[1] ) );
}
return $output;
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
function vc_sorted_list_parse_value( $value ) {
$data = array();
$split = preg_split( '/\,/', $value );
foreach ( $split as $v ) {
$v_split = array_map( 'rawurldecode', preg_split( '/\|/', $v ) );
$count = count( $v_split );
if ( $count > 0 ) {
$data[] = array(
$v_split[0],
$count > 1 ? array_slice( $v_split, 1 ) : array(),
);
}
}
return $data;
}
params/colorpicker/colorpicker.php 0000644 00000000725 15021217214 0013367 0 ustar 00 ', $settings['param_name'], $settings['param_name'], $settings['type'], $value );
}
params/params.php 0000644 00000005614 15021217214 0010024 0 ustar 00 array(
'form' => $form_field_callback,
),
);
$result = true;
if ( is_string( $script_url ) && ! in_array( $script_url, self::$scripts, true ) ) {
self::$scripts[] = $script_url;
}
}
return $result;
}
/**
* Calls hook for attribute type
* @param $name - attribute name
* @param $param_settings - attribute settings from shortcode
* @param $param_value - attribute value
* @param $tag - attribute tag
*
* @return mixed|string - returns html which will be render in hook
* @since 4.2
* @static
*
*/
public static function renderSettingsField( $name, $param_settings, $param_value, $tag ) {
if ( isset( self::$params[ $name ]['callbacks']['form'] ) ) {
return call_user_func( self::$params[ $name ]['callbacks']['form'], $param_settings, $param_value, $tag );
}
return '';
}
/**
* List of javascript files urls for shortcode attributes.
* @return array - list of js scripts
* @since 4.2
* @static
*/
public static function getScripts() {
return self::$scripts;
}
}
params/gutenberg/gutenberg.php 0000644 00000001217 15021217214 0012500 0 ustar 00 Open Editor
';
}
params/gutenberg/class-vc-gutenberg-param.php 0000644 00000012470 15021217214 0015312 0 ustar 00 ' ) && 'post-new.php' === $pagenow && vc_user_access()->wpAll( 'edit_posts' )
->get() && vc_request_param( 'post_type' ) === $this->postTypeSlug ) {
$this->registerGutenbergAttributeType();
/** @see \Vc_Gutenberg_Param::removeAdminUi */
add_action( 'admin_enqueue_scripts', array(
$this,
'removeAdminUI',
) );
}
}
public function removeAdminUi() {
$style = '
#adminmenumain, #wpadminbar {
display: none;
}
html.wp-toolbar {
padding: 0 !important;
}
.wp-toolbar #wpcontent {
margin: 0;
}
.wp-toolbar #wpbody {
padding-top: 0;
}
.gutenberg .gutenberg__editor .edit-post-layout .edit-post-header, html .block-editor-page .edit-post-header {
top: 0;
left: 0;
}
.gutenberg .gutenberg__editor .edit-post-layout.is-sidebar-opened .edit-post-layout__content, html .block-editor-page .edit-post-layout.is-sidebar-opened .edit-post-layout__content {
margin-right: 0;
}
.gutenberg .gutenberg__editor .edit-post-layout .editor-post-publish-panel, html .block-editor-page .edit-post-layout .editor-post-publish-panel, html .block-editor-page .edit-post-header__settings {
display: none;
}
.editor-post-title {
display: none !important;
}
';
wp_add_inline_style( 'wp-edit-blocks', $style );
}
protected function registerGutenbergAttributeType() {
$labels = array(
'name' => _x( 'Gutenberg attrs', 'Post type general name', 'js_composer' ),
'singular_name' => _x( 'Gutenberg attr', 'Post type singular name', 'js_composer' ),
'menu_name' => _x( 'Gutenberg attrs', 'Admin Menu text', 'js_composer' ),
'name_admin_bar' => _x( 'Gutenberg attr', 'Add New on Toolbar', 'js_composer' ),
'add_new' => esc_html__( 'Add New', 'js_composer' ),
'add_new_item' => esc_html__( 'Add New Gutenberg attr', 'js_composer' ),
'new_item' => esc_html__( 'New Gutenberg attr', 'js_composer' ),
'edit_item' => esc_html__( 'Edit Gutenberg attr', 'js_composer' ),
'view_item' => esc_html__( 'View Gutenberg attr', 'js_composer' ),
'all_items' => esc_html__( 'All Gutenberg attrs', 'js_composer' ),
'search_items' => esc_html__( 'Search Gutenberg attrs', 'js_composer' ),
'parent_item_colon' => esc_html__( 'Parent Gutenberg attrs:', 'js_composer' ),
'not_found' => esc_html__( 'No Gutenberg attrs found.', 'js_composer' ),
'not_found_in_trash' => esc_html__( 'No Gutenberg attrs found in Trash.', 'js_composer' ),
'featured_image' => _x( 'Gutenberg attr Cover Image', 'Overrides the “Featured Image” phrase for this post type. Added in 4.3', 'js_composer' ),
'set_featured_image' => _x( 'Set cover image', 'Overrides the “Set featured image” phrase for this post type. Added in 4.3', 'js_composer' ),
'remove_featured_image' => _x( 'Remove cover image', 'Overrides the “Remove featured image” phrase for this post type. Added in 4.3', 'js_composer' ),
'use_featured_image' => _x( 'Use as cover image', 'Overrides the “Use as featured image” phrase for this post type. Added in 4.3', 'js_composer' ),
'archives' => _x( 'Gutenberg attr archives', 'The post type archive label used in nav menus. Default “Post Archives”. Added in 4.4', 'js_composer' ),
'insert_into_item' => _x( 'Add into Gutenberg attr', 'Overrides the “Insert into post”/”Insert into page” phrase (used when inserting media into a post). Added in 4.4', 'js_composer' ),
'uploaded_to_this_item' => _x( 'Uploaded to this Gutenberg attr', 'Overrides the “Uploaded to this post”/”Uploaded to this page” phrase (used when viewing media attached to a post). Added in 4.4', 'js_composer' ),
'filter_items_list' => _x( 'Filter Gutenberg attrs list', 'Screen reader text for the filter links heading on the post type listing screen. Default “Filter posts list”/”Filter pages list”. Added in 4.4', 'js_composer' ),
'items_list_navigation' => _x( 'Gutenberg attrs list navigation', 'Screen reader text for the pagination heading on the post type listing screen. Default “Posts list navigation”/”Pages list navigation”. Added in 4.4', 'js_composer' ),
'items_list' => _x( 'Gutenberg attrs list', 'Screen reader text for the items list heading on the post type listing screen. Default “Posts list”/”Pages list”. Added in 4.4', 'js_composer' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => false,
'query_var' => false,
'capability_type' => 'page',
'has_archive' => false,
'hierarchical' => false,
'menu_position' => null,
'show_in_rest' => true,
'supports' => array( 'editor' ),
);
register_post_type( $this->postTypeSlug, $args );
}
}
params/el_id/el_id.php 0000644 00000001012 15021217214 0010655 0 ustar 00 ', esc_attr( $settings['param_name'] ), esc_attr( $settings['param_name'] . ' ' . $settings['type'] ), $value );
return apply_filters( 'vc_el_id_render_filter', $value_output );
}
params/hidden/hidden.php 0000644 00000001716 15021217214 0011226 0 ustar 00 ';
}
/**
* Remove content before hidden field type input.
*
* @param $output
*
* @since 4.5
*
* @return string
*/
function vc_edit_form_fields_render_field_hidden_before() {
return '';
}
/**
* Remove content after hidden field type input.
*
* @param $output
*
* @since 4.5
*
* @return string
*/
function vc_edit_form_fields_render_field_hidden_after() {
return '
';
}
params/params_preset/params_preset.php 0000644 00000002243 15021217214 0014246 0 ustar 00 ';
foreach ( $settings['options'] as $option ) {
$selected = '';
if ( isset( $option['value'] ) ) {
$option_value_string = (string) $option['value'];
$value_string = (string) $value;
if ( '' !== $value && $option_value_string === $value_string ) {
$selected = 'selected';
}
$output .= '' . esc_html( isset( $option['label'] ) ? $option['label'] : $option['value'] ) . ' ';
}
}
$output .= '';
return $output;
}
params/css_editor/css_editor.php 0000644 00000016707 15021217214 0013042 0 ustar 00 settings = $settings;
}
return $this->settings;
}
/**
* @param $key
*
* @return string
*/
public function setting( $key ) {
return isset( $this->settings[ $key ] ) ? $this->settings[ $key ] : '';
}
/**
* @param null $value
*
* @return string
*/
public function value( $value = null ) {
if ( is_string( $value ) ) {
$this->value = $value;
}
return $this->value;
}
/**
* @param null $values
*
* @return array
*/
public function params( $values = null ) {
if ( is_array( $values ) ) {
$this->params = $values;
}
return $this->params;
}
// }}
/**
* vc_filter: vc_css_editor - hook to override output of this method
* @return mixed
*/
public function render() {
$output = '';
$output .= $this->onionLayout();
$output .= sprintf( '
', esc_html__( 'Border color', 'js_composer' ), esc_html__( 'Border style', 'js_composer' ), $this->getBorderStyleOptions(), esc_html__( 'Border radius', 'js_composer' ), $this->getBorderRadiusOptions(), esc_html__( 'Background', 'js_composer' ), $this->getBackgroundImageControl(), $this->getBackgroundStyleOptions(), esc_html__( 'Box controls', 'js_composer' ), esc_html__( 'Simplify controls', 'js_composer' ) );
$output .= sprintf( '
', esc_attr( $this->setting( 'param_name' ) ), esc_attr( $this->setting( 'param_name' ) ), esc_attr( $this->setting( 'type' ) ), esc_attr( $this->value() ) );
$output .= '
';
$custom_tag = 'script';
$output .= '<' . $custom_tag . ' type="text/html" id="vc_css-editor-image-block"> ' . $custom_tag . '>';
return apply_filters( 'vc_css_editor', $output );
}
/**
* @return string
*/
public function getBackgroundImageControl() {
$value = sprintf( ' %s ', esc_html__( 'Add image', 'js_composer' ) );
return apply_filters( 'vc_css_editor_background_image_control', $value );
}
/**
* @return string
*/
public function getBorderRadiusOptions() {
$radiuses = apply_filters( 'vc_css_editor_border_radius_options_data', array(
'' => esc_html__( 'None', 'js_composer' ),
'1px' => '1px',
'2px' => '2px',
'3px' => '3px',
'4px' => '4px',
'5px' => '5px',
'10px' => '10px',
'15px' => '15px',
'20px' => '20px',
'25px' => '25px',
'30px' => '30px',
'35px' => '35px',
) );
$output = '';
foreach ( $radiuses as $radius => $title ) {
$output .= '' . $title . ' ';
}
return $output;
}
/**
* @return string
*/
public function getBorderStyleOptions() {
$output = '' . esc_html__( 'Theme defaults', 'js_composer' ) . ' ';
$styles = apply_filters( 'vc_css_editor_border_style_options_data', array(
esc_html__( 'solid', 'js_composer' ),
esc_html__( 'dotted', 'js_composer' ),
esc_html__( 'dashed', 'js_composer' ),
esc_html__( 'none', 'js_composer' ),
esc_html__( 'hidden', 'js_composer' ),
esc_html__( 'double', 'js_composer' ),
esc_html__( 'groove', 'js_composer' ),
esc_html__( 'ridge', 'js_composer' ),
esc_html__( 'inset', 'js_composer' ),
esc_html__( 'outset', 'js_composer' ),
esc_html__( 'initial', 'js_composer' ),
esc_html__( 'inherit', 'js_composer' ),
) );
foreach ( $styles as $style ) {
$output .= '' . ucfirst( $style ) . ' ';
}
return $output;
}
/**
* @return string
*/
public function getBackgroundStyleOptions() {
$output = '' . esc_html__( 'Theme defaults', 'js_composer' ) . ' ';
$styles = apply_filters( 'vc_css_editor_background_style_options_data', array(
esc_html__( 'Cover', 'js_composer' ) => 'cover',
esc_html__( 'Contain', 'js_composer' ) => 'contain',
esc_html__( 'No Repeat', 'js_composer' ) => 'no-repeat',
esc_html__( 'Repeat', 'js_composer' ) => 'repeat',
) );
foreach ( $styles as $name => $style ) {
$output .= '' . $name . ' ';
}
return $output;
}
/**
* @return string
*/
public function onionLayout() {
$output = sprintf( '', $this->layerControls( 'margin' ), $this->layerControls( 'border', 'width' ), $this->layerControls( 'padding' ) );
return apply_filters( 'vc_css_editor_onion_layout', $output );
}
/**
* @param $name
* @param string $prefix
*
* @return string
*/
protected function layerControls( $name, $prefix = '' ) {
$output = '' . esc_html( $name ) . ' ';
foreach ( $this->positions as $pos ) {
$output .= sprintf( ' ', esc_attr( $name ), esc_attr( $pos ), '' !== $prefix ? '_' . esc_attr( $prefix ) : '', esc_attr( $name ), '' !== $prefix ? '-' . esc_attr( $prefix ) : '', esc_attr( $pos ), esc_attr( $pos ), esc_attr( $name ) );
}
return apply_filters( 'vc_css_editor_layer_controls', $output );
}
}
}
/**
* @param $settings
* @param $value
*
* @return mixed
*/
function vc_css_editor_form_field( $settings, $value ) {
$css_editor = new WPBakeryVisualComposerCssEditor();
$css_editor->settings( $settings );
$css_editor->value( $value );
return $css_editor->render();
}
params/custom_markup/custom_markup.php 0000644 00000001045 15021217214 0014315 0 ustar 00 shortcodes;
}
/**
* @param $template
*/
public function setTemplate( $template ) {
$this->template = $template;
$this->parseTemplate( $template );
}
/**
* @return string
*/
public function template() {
return $this->template;
}
/**
* @param $template
*/
public function parseTemplate( $template ) {
$this->setShortcodes();
$this->html_template = do_shortcode( $template );
}
/**
* @param \WP_Post $post
* @return string
*/
public function renderItem( WP_Post $post ) {
$attributes = $this->attributes();
$pattern = array();
$replacement = array();
foreach ( $attributes as $attr ) {
$pattern[] = '/\{\{' . preg_quote( $attr, '' ) . '\}\}/';
$replacement[] = $this->attribute( $attr, $post );
}
$css_class_items = 'vc_grid-item ' . ( $this->isEnd() ? ' vc_grid-last-item ' : '' ) . ' vc_grid-thumb vc_theme-thumb-full-overlay vc_animation-slide-left vc_col-sm-' . $this->gridAttribute( 'element_width', 12 );
foreach ( $post->filter_terms as $t ) {
$css_class_items .= ' vc_grid-term-' . $t;
}
return '' . "\n" . preg_replace( $pattern, $replacement, $this->html_template ) . "\n" . '
' . "\n";
}
/**
* @return string
*/
public function renderParam() {
$output = '
' . '' . esc_html__( 'Add row', 'js_composer' ) . ' ';
if ( false === self::$templates_added ) {
foreach ( $this->shortcodes as $tag ) {
$method = vc_camel_case( $tag . '_template' );
if ( method_exists( $this, $method ) ) {
$content = $this->$method();
} else {
$content = $this->vcDefaultTemplate( $tag );
}
$custom_tag = 'script';
$output .= '<' . $custom_tag . ' type="text/template" data-vc-grid-element-template="' . esc_attr( $tag ) . '">' . $content . '' . $custom_tag . '>';
$output .= '<' . $custom_tag . ' type="text/template" data-vc-grid-element-template="modal">' . '<# title #>
' . '<# controls #>
' . '<# body #>
' . '' . $custom_tag . '>';
}
self::$templates_added = true;
}
return $output;
}
/**
* @param $grid_atts
*/
public function setGridAttributes( $grid_atts ) {
$this->grid_atts = $grid_atts;
}
/**
* @param $name
* @param string $default
* @return mixed|string
*/
public function gridAttribute( $name, $default = '' ) {
return isset( $this->grid_atts[ $name ] ) ? $this->grid_atts[ $name ] : $default;
}
/**
* @param $name
*/
public function setAttribute( $name ) {
$this->attributes[] = $name;
}
/**
* @return array
*/
public function attributes() {
return $this->attributes;
}
/**
* @param $name
* @param $post
* @return string
*/
public function attribute( $name, $post ) {
if ( method_exists( $this, 'attribute' . ucfirst( $name ) ) ) {
$method_name = 'attribute' . ucfirst( $name );
return $this->$method_name( $post );
}
if ( isset( $post->$name ) ) {
return $post->$name;
}
return '';
}
/**
* @param bool $is_end
*/
public function setIsEnd( $is_end = true ) {
$this->is_end = $is_end;
}
/**
* @return bool
*/
public function isEnd() {
return $this->is_end;
}
/**
* Set elements templates.
*/
protected function setShortcodes() {
foreach ( $this->shortcodes as $tag ) {
add_shortcode( $tag, array(
$this,
vc_camel_case( $tag . '_shortcode' ),
) );
}
}
/**
* @param $atts
* @param string $content
* @return string
*/
public function vcGitemRowShortcode( $atts, $content = '' ) {
return '' . "\n" . do_shortcode( $content ) . "\n" . '
';
}
/**
* @return string
*/
public function vcGitemRowTemplate() {
$output = '';
$output .= '
';
// Move control
$output .= '
';
// Layout control
$output .= '
' // vc_col-sm-12
. '' . ' ' // vc_col-sm-6 + vc_col-sm-6
. '' . ' ' // vc_col-sm-4 + vc_col-sm-4 + vc_col-sm-4
. '' . ' ' . ' ' . '
' // Destroy control
. '' . ' ' . ' ' . ' ';
$output .= '
';
$output .= '
';
$output .= '
';
return $output;
}
/**
* @param $atts
* @param string $content
* @return string
*/
public function vcGitemColShortcode( $atts, $content = '' ) {
$width = '12';
$atts = shortcode_atts( array(
'width' => '12',
), $atts );
extract( $atts );
return '' . "\n" . do_shortcode( $content ) . "\n" . '
';
}
/**
* @return string
*/
public function vcGitemColTemplate() {
$output = '';
// Controls
// Control "Add"
$controls = '
' . ' ' . ' ';
$output .= '
' . $controls . '
';
// Content
$output .= '
' . '
';
$output .= '
';
return $output;
}
/**
* @param $atts
* @param string $content
* @return string
*/
public function vcGitemPostTitleShortcode( $atts, $content = '' ) {
$atts = shortcode_atts( array(), $atts );
extract( $atts );
$this->setAttribute( 'post_title' );
return '{{post_title}} ';
}
/**
* @param $tag
* @return string
*/
public function vcDefaultTemplate( $tag ) {
$name = preg_replace( '/^vc_gitem_/', '', $tag );
$title = ucfirst( preg_replace( '/\_/', ' ', $name ) );
return '' . $this->elementControls( $title, preg_match( '/^post/', $name ) ? 'orange' : 'green' ) . '
';
}
/**
* @param $title
* @param null $theme
* @return string
*/
protected function elementControls( $title, $theme = null ) {
return '';
}
// }}
}
/**
* @param $settings
* @param $value
* @return string
*/
function vc_vc_grid_element_form_field( $settings, $value ) {
$grid_element = new Vc_Grid_Element();
return '' . ' ' . $grid_element->renderParam() . '
';
}
function vc_load_vc_grid_element_param() {
vc_add_shortcode_param( 'vc_grid_element', 'vc_vc_grid_element_form_field' );
}
add_action( 'vc_load_default_params', 'vc_load_vc_grid_element_param' );
params/vc_grid_element/vc_grid_id/vc_grid_id.php 0000644 00000000714 15021217214 0016045 0 ustar 00 ', esc_attr( $settings['param_name'] ), esc_attr( $settings['param_name'] . ' ' . $settings['type'] ), $value );
}
params/font_container/font_container.php 0000644 00000033252 15021217214 0014560 0 ustar 00 'font_container',
* 'param_name' => 'font_container',
* 'value'=>'',
* 'settings'=>array(
* 'fields'=>array(
* 'tag'=>'h2',
* 'text_align',
* 'font_size',
* 'line_height',
* 'color',
*
* 'tag_description' => esc_html__('Select element tag.','js_composer'),
* 'text_align_description' => esc_html__('Select text alignment.','js_composer'),
* 'font_size_description' => esc_html__('Enter font size.','js_composer'),
* 'line_height_description' => esc_html__('Enter line height.','js_composer'),
* 'color_description' => esc_html__('Select color for your element.','js_composer'),
* ),
* ),
* ),
* Ordering of fields, font_family, tag, text_align and etc. will be Same as ordering in array!
* To provide default value to field use 'key' => 'value'
*/
class Vc_Font_Container {
/**
* @param $settings
* @param $value
*
* @return string
*/
public function render( $settings, $value ) {
$fields = array();
$values = array();
extract( $this->_vc_font_container_parse_attributes( $settings['settings']['fields'], $value ) );
$data = array();
$output = '';
if ( ! empty( $fields ) ) {
if ( isset( $fields['tag'] ) ) {
$data['tag'] = '
' . esc_html__( 'Element tag', 'js_composer' ) . '
';
$tags = $this->_vc_font_container_get_allowed_tags();
foreach ( $tags as $tag ) {
$data['tag'] .= '' . $tag . ' ';
}
$data['tag'] .= '
';
if ( isset( $fields['tag_description'] ) && strlen( $fields['tag_description'] ) > 0 ) {
$data['tag'] .= '
' . $fields['tag_description'] . '
';
}
$data['tag'] .= '
';
}
if ( isset( $fields['font_size'] ) ) {
$data['font_size'] = '
' . esc_html__( 'Font size', 'js_composer' ) . '
';
if ( isset( $fields['font_size_description'] ) && strlen( $fields['font_size_description'] ) > 0 ) {
$data['font_size'] .= '
' . $fields['font_size_description'] . '
';
}
$data['font_size'] .= '
';
}
if ( isset( $fields['text_align'] ) ) {
$data['text_align'] = '
' . esc_html__( 'Text align', 'js_composer' ) . '
' . esc_html__( 'left', 'js_composer' ) . '
' . esc_html__( 'right', 'js_composer' ) . '
' . esc_html__( 'center', 'js_composer' ) . '
' . esc_html__( 'justify', 'js_composer' ) . '
';
if ( isset( $fields['text_align_description'] ) && strlen( $fields['text_align_description'] ) > 0 ) {
$data['text_align'] .= '
' . $fields['text_align_description'] . '
';
}
$data['text_align'] .= '
';
}
if ( isset( $fields['line_height'] ) ) {
$data['line_height'] = '
' . esc_html__( 'Line height', 'js_composer' ) . '
';
if ( isset( $fields['line_height_description'] ) && strlen( $fields['line_height_description'] ) > 0 ) {
$data['line_height'] .= '
' . $fields['line_height_description'] . '
';
}
$data['line_height'] .= '
';
}
if ( isset( $fields['color'] ) ) {
$data['color'] = '
' . esc_html__( 'Text color', 'js_composer' ) . '
';
if ( isset( $fields['color_description'] ) && strlen( $fields['color_description'] ) > 0 ) {
$data['color'] .= '
' . $fields['color_description'] . '
';
}
$data['color'] .= '
';
}
if ( isset( $fields['font_family'] ) ) {
$data['font_family'] = '
' . esc_html__( 'Font Family', 'js_composer' ) . '
';
$fonts = $this->_vc_font_container_get_web_safe_fonts();
foreach ( $fonts as $font_name => $font_data ) {
$data['font_family'] .= '' . $font_name . ' ';
}
$data['font_family'] .= '
';
if ( isset( $fields['font_family_description'] ) && strlen( $fields['font_family_description'] ) > 0 ) {
$data['font_family'] .= '
' . $fields['font_family_description'] . '
';
}
$data['font_family'] .= '
';
}
if ( isset( $fields['font_style'] ) ) {
$data['font_style'] = '
';
}
$data = apply_filters( 'vc_font_container_output_data', $data, $fields, $values, $settings );
// combine all in output, make sure you follow ordering
foreach ( $fields as $key => $field ) {
if ( isset( $data[ $key ] ) ) {
$output .= $data[ $key ];
}
}
}
$output .= ' ';
return $output;
}
/**
* If field 'font_family' is used this is list of fonts available
* To modify this list, you should use add_filter('vc_font_container_get_fonts_filter','your_custom_function');
* vc_filter: vc_font_container_get_fonts_filter - to modify list of fonts
* @return array list of fonts
*/
public function _vc_font_container_get_web_safe_fonts() {
// this is "Web Safe FONTS" from w3c: http://www.w3schools.com/cssref/css_websafe_fonts.asp
$web_fonts = array(
'Georgia' => 'Georgia, serif',
'Palatino Linotype' => '"Palatino Linotype", "Book Antiqua", Palatino, serif',
'Book Antiqua' => '"Book Antiqua", Palatino, serif',
'Palatino' => 'Palatino, serif',
'Times New Roman' => '"Times New Roman", Times, serif',
'Arial' => 'Arial, Helvetica, sans-serif',
'Arial Black' => '"Arial Black", Gadget, sans-serif',
'Helvetica' => 'Helvetica, sans-serif',
'Comic Sans MS' => '"Comic Sans MS", cursive, sans-serif',
'Impact' => 'Impact, Charcoal, sans-serif',
'Charcoal' => 'Charcoal, sans-serif',
'Lucida Sans Unicode' => '"Lucida Sans Unicode", "Lucida Grande", sans-serif',
'Lucida Grande' => '"Lucida Grande", sans-serif',
'Tahoma' => 'Tahoma, Geneva, sans-serif',
'Geneva' => 'Geneva, sans-serif',
'Trebuchet MS' => '"Trebuchet MS", Helvetica, sans-serif',
'Verdana' => '"Trebuchet MS", Helvetica, sans-serif',
'Courier New' => '"Courier New", Courier, monospace',
'Lucida Console' => '"Lucida Console", Monaco, monospace',
'Monaco' => 'Monaco, monospace',
);
return apply_filters( 'vc_font_container_get_fonts_filter', $web_fonts );
}
/**
* If 'tag' field used this is list of allowed tags
* To modify this list, you should use add_filter('vc_font_container_get_allowed_tags','your_custom_function');
* vc_filter: vc_font_container_get_allowed_tags - to modify list of allowed tags by default
* @return array list of allowed tags
*/
public function _vc_font_container_get_allowed_tags() {
$allowed_tags = array(
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'p',
'div',
);
return apply_filters( 'vc_font_container_get_allowed_tags', $allowed_tags );
}
/**
* @param $attr
* @param $value
*
* @return array
*/
public function _vc_font_container_parse_attributes( $attr, $value ) {
$fields = array();
if ( isset( $attr ) ) {
foreach ( $attr as $key => $val ) {
if ( is_numeric( $key ) ) {
$fields[ $val ] = '';
} else {
$fields[ $key ] = $val;
}
}
}
$values = vc_parse_multi_attribute( $value, array(
'tag' => isset( $fields['tag'] ) ? $fields['tag'] : 'h2',
'font_size' => isset( $fields['font_size'] ) ? $fields['font_size'] : '',
'font_style_italic' => isset( $fields['font_style_italic'] ) ? $fields['font_style_italic'] : '',
'font_style_bold' => isset( $fields['font_style_bold'] ) ? $fields['font_style_bold'] : '',
'font_family' => isset( $fields['font_family'] ) ? $fields['font_family'] : '',
'color' => isset( $fields['color'] ) ? $fields['color'] : '',
'line_height' => isset( $fields['line_height'] ) ? $fields['line_height'] : '',
'text_align' => isset( $fields['text_align'] ) ? $fields['text_align'] : 'left',
'tag_description' => isset( $fields['tag_description'] ) ? $fields['tag_description'] : '',
'font_size_description' => isset( $fields['font_size_description'] ) ? $fields['font_size_description'] : '',
'font_style_description' => isset( $fields['font_style_description'] ) ? $fields['font_style_description'] : '',
'font_family_description' => isset( $fields['font_family_description'] ) ? $fields['font_family_description'] : '',
'color_description' => isset( $fields['color_description'] ) ? $fields['color_description'] : 'left',
'line_height_description' => isset( $fields['line_height_description'] ) ? $fields['line_height_description'] : '',
'text_align_description' => isset( $fields['text_align_description'] ) ? $fields['text_align_description'] : '',
) );
return array(
'fields' => $fields,
'values' => $values,
);
}
}
/**
* @param $settings
* @param $value
*
* @return mixed
*/
function vc_font_container_form_field( $settings, $value ) {
$font_container = new Vc_Font_Container();
return apply_filters( 'vc_font_container_render_filter', $font_container->render( $settings, $value ) );
}
params/textarea_html/textarea_html.php 0000644 00000003136 15021217214 0014240 0 ustar 00 ' . $value . '';
$output .= '' . sprintf( esc_html__( 'Field type is changed from "textarea_html" to "textarea", because it is already used by %s field. Textarea_html field\'s type can be used only once per shortcode.', 'js_composer' ), $vc_html_editor_already_is_use ) . '
';
} elseif ( function_exists( 'wp_editor' ) ) {
$default_content = $value;
// WP 3.3+
ob_start();
wp_editor( '', 'wpb_tinymce_' . esc_attr( $settings['param_name'] ), array(
'editor_class' => 'wpb-textarea visual_composer_tinymce ' . esc_attr( $settings['param_name'] . ' ' . $settings['type'] ),
'media_buttons' => true,
'wpautop' => false,
) );
$output_value = ob_get_contents();
ob_end_clean();
$output .= $output_value . ' ';
$vc_html_editor_already_is_use = $settings['param_name'];
}
return $output;
}
params/options/options.php 0000644 00000001733 15021217214 0011725 0 ustar 00 %s ', esc_attr( $settings['param_name'] ), esc_attr( $settings['param_name'] . ' ' . $settings['type'] ), $value, esc_attr( $settings['param_name'] ), esc_html__( 'Manage options', 'js_composer' ), htmlspecialchars( wp_json_encode( $settings['options'] ) ), esc_html__( 'Close', 'js_composer' ) );
}
/**
* @since 4.2
*/
function vc_options_include_templates() {
require_once vc_path_dir( 'TEMPLATES_DIR', 'params/options/templates.html' );
}
add_action( 'admin_footer', 'vc_options_include_templates' );
params/loop/loop.php 0000644 00000052043 15021217214 0010461 0 ustar 00 getContent();
$loop_info = '';
$parsed_value = array();
if ( is_array( $params ) ) {
foreach ( $params as $key => $param ) {
$param_value_render = vc_loop_get_value( $param );
if ( ! empty( $param_value_render ) ) {
$parsed_value[] = $key . ':' . ( is_array( $param['value'] ) ? implode( ',', $param['value'] ) : $param['value'] );
$loop_info .= ' ' . $query_builder->getLabel( $key ) . ' : ' . $param_value_render . ';';
}
}
}
if ( ! isset( $settings['settings'] ) ) {
$settings['settings'] = array();
}
return '';
}
/**
* @param $param
*
* @return string
* @since 4.2
*/
function vc_loop_get_value( $param ) {
$value = array();
$selected_values = (array) $param['value'];
if ( isset( $param['options'] ) && is_array( $param['options'] ) ) {
foreach ( $param['options'] as $option ) {
if ( is_array( $option ) && isset( $option['value'] ) ) {
if ( in_array( ( ( '-' === $option['action'] ? '-' : '' ) . $option['value'] ), $selected_values, true ) ) {
$value[] = $option['action'] . $option['name'];
}
} elseif ( is_array( $option ) && isset( $option[0] ) ) {
if ( in_array( $option[0], $selected_values, true ) ) {
$value[] = $option[1];
}
} elseif ( in_array( $option, $selected_values, true ) ) {
$value[] = $option;
}
}
} else {
$value[] = $param['value'];
}
return implode( ', ', $value );
}
/**
* Parses loop settings and creates WP_Query according to manual
* @since 4.2
* @link http://codex.wordpress.org/Class_Reference/WP_Query
*/
class VcLoopQueryBuilder {
/**
* @since 4.2
* @var array
*/
protected $args = array(
'post_status' => 'publish',
// show only published posts #1098
);
/**
* @param $data
* @since 4.2
*
*/
public function __construct( $data ) {
foreach ( $data as $key => $value ) {
$method = 'parse_' . $key;
if ( method_exists( $this, $method ) ) {
$this->$method( $value );
}
}
}
/**
* Pages count
* @param $value
* @since 4.2
*
*/
protected function parse_size( $value ) {
$this->args['posts_per_page'] = 'All' === $value ? - 1 : (int) $value;
}
/**
* Sorting field
* @param $value
* @since 4.2
*
*/
protected function parse_order_by( $value ) {
$this->args['orderby'] = $value;
}
/**
* Sorting order
* @param $value
* @since 4.2
*
*/
protected function parse_order( $value ) {
$this->args['order'] = $value;
}
/**
* By post types
* @param $value
* @since 4.2
*
*/
protected function parse_post_type( $value ) {
$this->args['post_type'] = $this->stringToArray( $value );
}
/**
* By author
* @param $value
* @since 4.2
*
*/
protected function parse_authors( $value ) {
$this->args['author'] = $value;
}
/**
* By categories
* @param $value
* @since 4.2
*
*/
protected function parse_categories( $value ) {
$this->args['cat'] = $value;
}
/**
* By taxonomies
* @param $value
* @since 4.2
*
*/
protected function parse_tax_query( $value ) {
$terms = $this->stringToArray( $value );
if ( empty( $this->args['tax_query'] ) ) {
$this->args['tax_query'] = array( 'relation' => 'AND' );
}
$negative_term_list = array();
foreach ( $terms as $term ) {
if ( (int) $term < 0 ) {
$negative_term_list[] = abs( $term );
}
}
$not_in = array();
$in = array();
$terms = get_terms( VcLoopSettings::getTaxonomies(), array( 'include' => array_map( 'abs', $terms ) ) );
foreach ( $terms as $t ) {
if ( in_array( (int) $t->term_id, $negative_term_list, true ) ) {
$not_in[ $t->taxonomy ][] = $t->term_id;
} else {
$in[ $t->taxonomy ][] = $t->term_id;
}
}
foreach ( $in as $taxonomy => $terms ) {
$this->args['tax_query'][] = array(
'field' => 'term_id',
'taxonomy' => $taxonomy,
'terms' => $terms,
'operator' => 'IN',
);
}
foreach ( $not_in as $taxonomy => $terms ) {
$this->args['tax_query'][] = array(
'field' => 'term_id',
'taxonomy' => $taxonomy,
'terms' => $terms,
'operator' => 'NOT IN',
);
}
}
/**
* By tags ids
* @param $value
* @since 4.2
*
*/
protected function parse_tags( $value ) {
$in = $not_in = array();
$tags_ids = $this->stringToArray( $value );
foreach ( $tags_ids as $tag ) {
$tag = (int) $tag;
if ( $tag < 0 ) {
$not_in[] = abs( $tag );
} else {
$in[] = $tag;
}
}
$this->args['tag__in'] = $in;
$this->args['tag__not_in'] = $not_in;
}
/**
* By posts ids
* @param $value
* @since 4.2
*
*/
protected function parse_by_id( $value ) {
$in = $not_in = array();
$ids = $this->stringToArray( $value );
foreach ( $ids as $id ) {
$id = (int) $id;
if ( $id < 0 ) {
$not_in[] = abs( $id );
} else {
$in[] = $id;
}
}
$this->args['post__in'] = $in;
$this->args['post__not_in'] = $not_in;
}
/**
* @param $id
* @since 4.2
*
*/
public function excludeId( $id ) {
if ( ! isset( $this->args['post__not_in'] ) ) {
$this->args['post__not_in'] = array();
}
if ( is_array( $id ) ) {
$this->args['post__not_in'] = array_merge( $this->args['post__not_in'], $id );
} else {
$this->args['post__not_in'][] = $id;
}
}
/**
* Converts string to array. Filters empty arrays values
* @param $value
*
* @return array
* @since 4.2
*
*/
protected function stringToArray( $value ) {
$valid_values = array();
$list = preg_split( '/\,[\s]*/', $value );
foreach ( $list as $v ) {
if ( strlen( $v ) > 0 ) {
$valid_values[] = $v;
}
}
return $valid_values;
}
/**
* @return array
*/
public function build() {
return array(
$this->args,
new WP_Query( $this->args ),
);
}
}
/**
* Class VcLoopSettings
* @since 4.2
*/
class VcLoopSettings {
// Available parts of loop for WP_Query object.
/**
* @since 4.2
* @var array
*/
protected $content = array();
/**
* @since 4.2
* @var array
*/
protected $parts;
/**
* @since 4.2
* @var array
*/
protected $query_parts = array(
'size',
'order_by',
'order',
'post_type',
'authors',
'categories',
'tags',
'tax_query',
'by_id',
);
public $settings = array();
/**
* @param $value
* @param array $settings
* @since 4.2
*
*/
public function __construct( $value, $settings = array() ) {
$this->parts = array(
'size' => esc_html__( 'Post count', 'js_composer' ),
'order_by' => esc_html__( 'Order by', 'js_composer' ),
'order' => esc_html__( 'Sort order', 'js_composer' ),
'post_type' => esc_html__( 'Post types', 'js_composer' ),
'authors' => esc_html__( 'Author', 'js_composer' ),
'categories' => esc_html__( 'Categories', 'js_composer' ),
'tags' => esc_html__( 'Tags', 'js_composer' ),
'tax_query' => esc_html__( 'Taxonomies', 'js_composer' ),
'by_id' => esc_html__( 'Individual posts/pages', 'js_composer' ),
);
$this->settings = $settings;
// Parse loop string
$data = $this->parseData( $value );
foreach ( $this->query_parts as $part ) {
$value = isset( $data[ $part ] ) ? $data[ $part ] : '';
$locked = 'true' === $this->getSettings( $part, 'locked' );
// Predefined value check.
if ( ! is_null( $this->getSettings( $part, 'value' ) ) && $this->replaceLockedValue( $part ) && ( true === $locked || 0 === strlen( (string) $value ) ) ) {
$value = $this->settings[ $part ]['value'];
} elseif ( ! is_null( $this->getSettings( $part, 'value' ) ) && ! $this->replaceLockedValue( $part ) && ( true === $locked || 0 === strlen( (string) $value ) ) ) {
$value = implode( ',', array_unique( explode( ',', $value . ',' . $this->settings[ $part ]['value'] ) ) );
}
// Find custom method for parsing
if ( method_exists( $this, 'parse_' . $part ) ) {
$method = 'parse_' . $part;
$this->content[ $part ] = $this->$method( $value );
} else {
$this->content[ $part ] = $this->parseString( $value );
}
// Set locked if value is locked by settings
if ( $locked ) {
$this->content[ $part ]['locked'] = true;
}
if ( 'true' === $this->getSettings( $part, 'hidden' ) ) {
$this->content[ $part ]['hidden'] = true;
}
}
}
/**
* @param $part
*
* @return bool
* @since 4.2
*/
protected function replaceLockedValue( $part ) {
return in_array( $part, array(
'size',
'order_by',
'order',
), true );
}
/**
* @param $key
*
* @return mixed
* @since 4.2
*/
public function getLabel( $key ) {
return isset( $this->parts[ $key ] ) ? $this->parts[ $key ] : $key;
}
/**
* @param $part
* @param $name
*
* @return null
* @since 4.2
*/
public function getSettings( $part, $name ) {
$settings_exists = isset( $this->settings[ $part ] ) && is_array( $this->settings[ $part ] );
return $settings_exists && isset( $this->settings[ $part ][ $name ] ) ? $this->settings[ $part ][ $name ] : null;
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parseString( $value ) {
return array( 'value' => $value );
}
/**
* @param $value
* @param array $options
*
* @return array
* @since 4.2
*/
protected function parseDropDown( $value, $options = array() ) {
return array(
'value' => $value,
'options' => $options,
);
}
/**
* @param $value
* @param array $options
*
* @return array
* @since 4.2
*/
protected function parseMultiSelect( $value, $options = array() ) {
return array(
'value' => explode( ',', trim( $value, ',' ) ),
'options' => $options,
);
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_order_by( $value ) {
return $this->parseDropDown( $value, array(
array(
'date',
esc_html__( 'Date', 'js_composer' ),
),
'ID',
array(
'author',
esc_html__( 'Author', 'js_composer' ),
),
array(
'title',
esc_html__( 'Title', 'js_composer' ),
),
array(
'modified',
esc_html__( 'Modified', 'js_composer' ),
),
array(
'rand',
esc_html__( 'Random', 'js_composer' ),
),
array(
'comment_count',
esc_html__( 'Comment count', 'js_composer' ),
),
array(
'menu_order',
esc_html__( 'Menu order', 'js_composer' ),
),
) );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_order( $value ) {
return $this->parseDropDown( $value, array(
array(
'ASC',
esc_html__( 'Ascending', 'js_composer' ),
),
array(
'DESC',
esc_html__( 'Descending', 'js_composer' ),
),
) );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_post_type( $value ) {
$options = array();
$args = array(
'public' => true,
);
$post_types = get_post_types( $args );
foreach ( $post_types as $post_type ) {
if ( 'attachment' !== $post_type ) {
$options[] = $post_type;
}
}
return $this->parseMultiSelect( $value, $options );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_authors( $value ) {
$options = $not_in = array();
if ( empty( $value ) ) {
return $this->parseMultiSelect( $value, $options );
}
$list = explode( ',', $value );
foreach ( $list as $id ) {
if ( (int) $id < 0 ) {
$not_in[] = abs( $id );
}
}
$users = get_users( array( 'include' => array_map( 'abs', $list ) ) );
foreach ( $users as $user ) {
$options[] = array(
'value' => (string) $user->ID,
'name' => $user->data->user_nicename,
'action' => in_array( (int) $user->ID, $not_in, true ) ? '-' : '+',
);
}
return $this->parseMultiSelect( $value, $options );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_categories( $value ) {
$options = $not_in = array();
if ( empty( $value ) ) {
return $this->parseMultiSelect( $value, $options );
}
$list = explode( ',', $value );
foreach ( $list as $id ) {
if ( (int) $id < 0 ) {
$not_in[] = abs( $id );
}
}
$list = get_categories( array( 'include' => array_map( 'abs', $list ) ) );
foreach ( $list as $obj ) {
$options[] = array(
'value' => (string) $obj->cat_ID,
'name' => $obj->cat_name,
'action' => in_array( (int) $obj->cat_ID, $not_in, true ) ? '-' : '+',
);
}
if ( empty( $list ) ) {
$value = '';
}
return $this->parseMultiSelect( $value, $options );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_tags( $value ) {
$options = $not_in = array();
if ( empty( $value ) ) {
return $this->parseMultiSelect( $value, $options );
}
$list = explode( ',', $value );
foreach ( $list as $id ) {
if ( (int) $id < 0 ) {
$not_in[] = abs( $id );
}
}
$list = get_tags( array( 'include' => array_map( 'abs', $list ) ) );
foreach ( $list as $obj ) {
$options[] = array(
'value' => (string) $obj->term_id,
'name' => $obj->name,
'action' => in_array( (int) $obj->term_id, $not_in, true ) ? '-' : '+',
);
}
return $this->parseMultiSelect( $value, $options );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_tax_query( $value ) {
$options = $not_in = array();
if ( empty( $value ) ) {
return $this->parseMultiSelect( $value, $options );
}
$list = explode( ',', $value );
foreach ( $list as $id ) {
if ( (int) $id < 0 ) {
$not_in[] = abs( $id );
}
}
$list = get_terms( self::getTaxonomies(), array( 'include' => array_map( 'abs', $list ) ) );
foreach ( $list as $obj ) {
$options[] = array(
'value' => (string) $obj->term_id,
'name' => $obj->name,
'action' => in_array( (int) $obj->term_id, $not_in, true ) ? '-' : '+',
);
}
return $this->parseMultiSelect( $value, $options );
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public function parse_by_id( $value ) {
$options = $not_in = array();
if ( empty( $value ) ) {
return $this->parseMultiSelect( $value, $options );
}
$list = explode( ',', $value );
foreach ( $list as $id ) {
if ( (int) $id < 0 ) {
$not_in[] = abs( $id );
}
}
$list = get_posts( array(
'post_type' => 'any',
'include' => array_map( 'abs', $list ),
) );
foreach ( $list as $obj ) {
$options[] = array(
'value' => (string) $obj->ID,
'name' => $obj->post_title,
'action' => in_array( (int) $obj->ID, $not_in, true ) ? '-' : '+',
);
}
return $this->parseMultiSelect( $value, $options );
}
/**
* @since 4.2
*/
public function render() {
echo wp_json_encode( $this->content );
}
/**
* @return array
* @since 4.2
*/
public function getContent() {
return $this->content;
}
/**
* get list of taxonomies which has no tags and categories items.
* @return array
* @since 4.2
* @static
*/
public static function getTaxonomies() {
$taxonomy_exclude = (array) apply_filters( 'get_categories_taxonomy', 'category' );
$taxonomy_exclude[] = 'post_tag';
$taxonomies = array();
foreach ( get_taxonomies() as $taxonomy ) {
if ( ! in_array( $taxonomy, $taxonomy_exclude, true ) ) {
$taxonomies[] = $taxonomy;
}
}
return $taxonomies;
}
/**
* @param $settings
*
* @return string
* @since 4.2
*/
public static function buildDefault( $settings ) {
if ( ! isset( $settings['settings'] ) || ! is_array( $settings['settings'] ) ) {
return '';
}
$value = '';
foreach ( $settings['settings'] as $key => $val ) {
if ( isset( $val['value'] ) ) {
$value .= ( empty( $value ) ? '' : '|' ) . $key . ':' . $val['value'];
}
}
return $value;
}
/**
* @param $query
* @param bool $exclude_id
*
* @return array
* @since 4.2
*/
public static function buildWpQuery( $query, $exclude_id = false ) {
$data = self::parseData( $query );
$query_builder = new VcLoopQueryBuilder( $data );
if ( $exclude_id ) {
$query_builder->excludeId( $exclude_id );
}
return $query_builder->build();
}
/**
* @param $value
*
* @return array
* @since 4.2
*/
public static function parseData( $value ) {
$data = array();
$values_pairs = preg_split( '/\|/', $value );
foreach ( $values_pairs as $pair ) {
if ( ! empty( $pair ) ) {
list( $key, $value ) = preg_split( '/\:/', $pair );
$data[ $key ] = $value;
}
}
return $data;
}
}
/**
* Suggestion list for wp_query field
* Class VcLoopSuggestions
* @since 4.2
*/
class VcLoopSuggestions {
/**
* @since 4.2
* @var array
*/
protected $content = array();
/**
* @since 4.2
* @var array
*/
protected $exclude = array();
/**
* @since 4.2
* @var
*/
protected $field;
/**
* @param $field
* @param $query
* @param $exclude
*
* @since 4.2
*/
public function __construct( $field, $query, $exclude ) {
$this->exclude = explode( ',', $exclude );
$method_name = 'get_' . preg_replace( '/_out$/', '', $field );
if ( method_exists( $this, $method_name ) ) {
$this->$method_name( $query );
}
}
/**
* @param $query
*
* @since 4.2
*/
public function get_authors( $query ) {
$args = ! empty( $query ) ? array(
'search' => '*' . $query . '*',
'search_columns' => array( 'user_nicename' ),
) : array();
if ( ! empty( $this->exclude ) ) {
$args['exclude'] = $this->exclude;
}
$users = get_users( $args );
foreach ( $users as $user ) {
$this->content[] = array(
'value' => (string) $user->ID,
'name' => (string) $user->data->user_nicename,
);
}
}
/**
* @param $query
*
* @since 4.2
*/
public function get_categories( $query ) {
$args = ! empty( $query ) ? array( 'search' => $query ) : array();
if ( ! empty( $this->exclude ) ) {
$args['exclude'] = $this->exclude;
}
$categories = get_categories( $args );
foreach ( $categories as $cat ) {
$this->content[] = array(
'value' => (string) $cat->cat_ID,
'name' => $cat->cat_name,
);
}
}
/**
* @param $query
*
* @since 4.2
*/
public function get_tags( $query ) {
$args = ! empty( $query ) ? array( 'search' => $query ) : array();
if ( ! empty( $this->exclude ) ) {
$args['exclude'] = $this->exclude;
}
$tags = get_tags( $args );
foreach ( $tags as $tag ) {
$this->content[] = array(
'value' => (string) $tag->term_id,
'name' => $tag->name,
);
}
}
/**
* @param $query
*
* @since 4.2
*/
public function get_tax_query( $query ) {
$args = ! empty( $query ) ? array( 'search' => $query ) : array();
if ( ! empty( $this->exclude ) ) {
$args['exclude'] = $this->exclude;
}
$tags = get_terms( VcLoopSettings::getTaxonomies(), $args );
foreach ( $tags as $tag ) {
$this->content[] = array(
'value' => $tag->term_id,
'name' => $tag->name . ' (' . $tag->taxonomy . ')',
);
}
}
/**
* @param $query
*
* @since 4.2
*/
public function get_by_id( $query ) {
$args = ! empty( $query ) ? array(
's' => $query,
'post_type' => 'any',
'no_found_rows' => true,
'orderby' => 'relevance',
) : array(
'post_type' => 'any',
'no_found_rows' => true,
'orderby' => 'relevance',
);
if ( ! empty( $this->exclude ) ) {
$args['exclude'] = $this->exclude;
}
$args['ignore_sticky_posts'] = true;
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$this->content[] = array(
'value' => $post->ID,
'name' => $post->post_title,
);
}
}
/**
* @since 4.2
*/
public function render() {
echo wp_json_encode( $this->content );
}
}
/**
* Build WP_Query object from query string.
* String created by loop controllers
*
* @param $query
* @param bool $exclude_id
*
* @return array
* @since 4.2
*/
function vc_build_loop_query( $query, $exclude_id = false ) {
return VcLoopSettings::buildWpQuery( $query, $exclude_id );
}
/**
* @since 4.2
*/
function vc_get_loop_suggestion() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
$loop_suggestions = new VcLoopSuggestions( vc_post_param( 'field' ), vc_post_param( 'query' ), vc_post_param( 'exclude' ) );
$loop_suggestions->render();
die();
}
/**
* @since 4.2
*/
function vc_get_loop_settings_json() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
$loop_settings = new VcLoopSettings( vc_post_param( 'value' ), vc_post_param( 'settings' ) );
$loop_settings->render();
die();
}
add_action( 'wp_ajax_wpb_get_loop_suggestion', 'vc_get_loop_suggestion' );
add_action( 'wp_ajax_wpb_get_loop_settings', 'vc_get_loop_settings_json' );
/**
* @since 4.2
*/
function vc_loop_include_templates() {
require_once vc_path_dir( 'TEMPLATES_DIR', 'params/loop/templates.html' );
}
add_action( 'admin_footer', 'vc_loop_include_templates' );
params/vc_grid_item/editor/navbar/class-vc-navbar-grid-item.php 0000644 00000005275 15021217214 0020577 0 ustar 00 ';
}
/**
* @return string
*/
public function getControlPreviewTemplate() {
return '' . '' . esc_html__( 'Preview', 'js_composer' ) . ' ' . ' ';
}
/**
* @return string
*/
public function getControlEdit() {
return '' . ' ' . ' ' . ' ';
}
/**
* @return string
*/
public function getControlSaveBackend() {
return '' . '' . esc_html__( 'Update', 'js_composer' ) . ' ' . ' ';
}
/**
* @return string
*/
public function getControlPreviewItemWidth() {
$output = '';
for ( $i = 1; $i <= 12; $i ++ ) {
$output .= '' . sprintf( esc_html__( '%s/12 width', 'js_composer' ), $i ) . ' ';
}
$output .= ' ';
return $output;
}
/**
* @return string
*/
public function getControlAnimationList() {
VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_Vc_Gitem_Animated_Block' );
$output = '';
$animations = WPBakeryShortCode_Vc_Gitem_Animated_Block::animations();
if ( is_array( $animations ) ) {
$output .= '';
foreach ( $animations as $value => $key ) {
$output .= '' . esc_html( $value ) . ' ';
}
$output .= ' ';
}
return $output;
}
}
params/vc_grid_item/editor/class-vc-grid-item-editor.php 0000644 00000017541 15021217214 0017342 0 ustar 00 render( get_post_type() );
}
/**
* @param $post_type
* @throws \Exception
*/
public function render( $post_type ) {
if ( $this->isValidPostType( $post_type ) ) {
$this->registerBackendJavascript();
$this->registerBackendCss();
// B.C:
visual_composer()->registerAdminCss();
visual_composer()->registerAdminJavascript();
add_action( 'admin_print_scripts-post.php', array(
$this,
'printScriptsMessages',
), 300 );
add_action( 'admin_print_scripts-post-new.php', array(
$this,
'printScriptsMessages',
), 300 );
}
}
/**
* @return bool
* @throws \Exception
*/
public function editorEnabled() {
return vc_user_access()->part( 'grid_builder' )->can()->get();
}
public function replaceTemplatesPanelEditorJsAction() {
wp_dequeue_script( 'vc-template-preview-script' );
$this->templatesEditor()->addScriptsToTemplatePreview();
}
/**
* Create post type and new item in the admin menu.
* @return void
*/
public static function createPostType() {
register_post_type( self::$post_type, array(
'labels' => self::getPostTypesLabels(),
'public' => false,
'has_archive' => false,
'show_in_nav_menus' => false,
'exclude_from_search' => true,
'publicly_queryable' => false,
'show_ui' => true,
'show_in_menu' => false,
'query_var' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array(
'title',
'editor',
),
) );
}
/**
* @return array
*/
public static function getPostTypesLabels() {
return array(
'add_new_item' => esc_html__( 'Add Grid template', 'js_composer' ),
'name' => esc_html__( 'Grid Builder', 'js_composer' ),
'singular_name' => esc_html__( 'Grid template', 'js_composer' ),
'edit_item' => esc_html__( 'Edit Grid template', 'js_composer' ),
'view_item' => esc_html__( 'View Grid template', 'js_composer' ),
'search_items' => esc_html__( 'Search Grid templates', 'js_composer' ),
'not_found' => esc_html__( 'No Grid templates found', 'js_composer' ),
'not_found_in_trash' => esc_html__( 'No Grid templates found in Trash', 'js_composer' ),
);
}
/**
* Rewrites validation for correct post_type of th post.
*
* @param string $type
*
* @return bool
* @throws \Exception
*/
public function isValidPostType( $type = '' ) {
$type = ! empty( $type ) ? $type : get_post_type();
return $this->editorEnabled() && $this->postType() === $type;
}
/**
* Get post type for Vc grid element editor.
*
* @static
* @return string
*/
public static function postType() {
return self::$post_type;
}
/**
* Calls add_meta_box to create Editor block.
*
* @access public
*/
public function addMetaBox() {
add_meta_box( 'wpb_visual_composer', esc_html__( 'Grid Builder', 'js_composer' ), array(
$this,
'renderEditor',
), $this->postType(), 'normal', 'high' );
}
/**
* Change order of the controls for shortcodes admin block.
*
* @return array
*/
public function shortcodesControls() {
return array(
'delete',
'edit',
);
}
/**
* Output html for backend editor meta box.
*
* @param null|int $post
*
* @throws \Exception
*/
public function renderEditor( $post = null ) {
if ( ! vc_user_access()->part( 'grid_builder' )->can()->get() ) {
return;
}
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' );
$this->post = $post;
vc_include_template( 'params/vc_grid_item/editor/vc_grid_item_editor.tpl.php', array(
'editor' => $this,
'post' => $this->post,
) );
add_action( 'admin_footer', array(
$this,
'renderEditorFooter',
) );
do_action( 'vc_backend_editor_render' );
do_action( 'vc_vc_grid_item_editor_render' );
add_action( 'vc_user_access_check-shortcode_edit', array(
$this,
'accessCheckShortcodeEdit',
), 10, 2 );
add_action( 'vc_user_access_check-shortcode_all', array(
$this,
'accessCheckShortcodeAll',
), 10, 2 );
}
/**
* @param $null
* @param $shortcode
* @return bool
* @throws \Exception
*/
public function accessCheckShortcodeEdit( $null, $shortcode ) {
return vc_user_access()->part( 'grid_builder' )->can()->get();
}
/**
* @param $null
* @param $shortcode
* @return bool
* @throws \Exception
*/
public function accessCheckShortcodeAll( $null, $shortcode ) {
return vc_user_access()->part( 'grid_builder' )->can()->get();
}
/**
* Output required html and js content for VC editor.
*
* Here comes panels, modals and js objects with data for mapped shortcodes.
*/
public function renderEditorFooter() {
vc_include_template( 'params/vc_grid_item/editor/partials/vc_grid_item_editor_footer.tpl.php', array(
'editor' => $this,
'post' => $this->post,
) );
do_action( 'vc_backend_editor_footer_render' );
}
public function registerBackendJavascript() {
parent::registerBackendJavascript();
wp_register_script( 'vc_grid_item_editor', vc_asset_url( 'js/dist/grid-builder.min.js' ), array( 'vc-backend-min-js' ), WPB_VC_VERSION, true );
wp_localize_script( 'vc_grid_item_editor', 'i18nLocaleGItem', array(
'preview' => esc_html__( 'Preview', 'js_composer' ),
'builder' => esc_html__( 'Builder', 'js_composer' ),
'add_template_message' => esc_html__( 'If you add this template, all your current changes will be removed. Are you sure you want to add template?', 'js_composer' ),
) );
}
public function enqueueJs() {
parent::enqueueJs();
wp_enqueue_script( 'vc_grid_item_editor' );
}
/**
* @return bool|\Vc_Templates_Editor_Grid_Item
*/
public function templatesEditor() {
if ( false === $this->templates_editor ) {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/editor/popups/class-vc-templates-editor-grid-item.php' );
$this->templates_editor = new Vc_Templates_Editor_Grid_Item();
}
return $this->templates_editor;
}
/**
* @param $template_id
* @param $template_type
* @return false|string
*/
public function loadPredefinedTemplate( $template_id, $template_type ) {
ob_start();
$this->templatesEditor()->load( $template_id );
return ob_get_clean();
}
/**
* @param $template_id
* @param $template_type
* @return false|string
*/
public function loadTemplate( $template_id, $template_type ) {
if ( 'grid_templates' === $template_type ) {
return $this->loadPredefinedTemplate( $template_id, $template_type );
} elseif ( 'grid_templates_custom' === $template_type ) {
return $this->templatesEditor()->loadCustomTemplate( $template_id );
}
return $template_id;
}
/**
* @param $path
* @return string
*/
public function templatePreviewPath( $path ) {
return 'params/vc_grid_item/editor/vc_ui-template-preview.tpl.php';
}
public function renderTemplatePreview() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'grid_builder' )->can()->validateDie();
add_action( 'vc_templates_render_backend_template_preview', array(
$this,
'loadTemplate',
), 10, 2 );
add_filter( 'vc_render_template_preview_include_template', array(
$this,
'templatePreviewPath',
) );
visual_composer()->templatesPanelEditor()->renderTemplatePreview();
}
}
params/vc_grid_item/editor/class-vc-grid-item-preview.php 0000644 00000010274 15021217214 0017531 0 ustar 00 post_id = (int) vc_request_param( 'post_id' );
$this->shortcodes_string = stripslashes( vc_request_param( 'shortcodes_string', true ) );
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' );
$grid_item = new Vc_Grid_Item();
$grid_item->setIsEnd( false );
$grid_item->setGridAttributes( array( 'element_width' => 4 ) );
$grid_item->setTemplate( $this->shortcodes_string, $this->post_id );
$this->enqueue();
vc_include_template( 'params/vc_grid_item/preview.tpl.php', array(
'preview' => $this,
'grid_item' => $grid_item,
'shortcodes_string' => $this->shortcodes_string,
'post' => $this->mockingPost(),
'default_width_value' => apply_filters( 'vc_grid_item_preview_render_default_width_value', 4 ),
) );
}
/**
* @param $css
* @return string
*/
public function addCssBackgroundImage( $css ) {
if ( empty( $css ) ) {
$css = 'background-image: url(' . vc_asset_url( 'vc/vc_gitem_image.png' ) . ') !important';
}
return $css;
}
/**
* @param $url
* @return string
*/
public function addImageUrl( $url ) {
if ( empty( $url ) ) {
$url = vc_asset_url( 'vc/vc_gitem_image.png' );
}
return $url;
}
/**
* @param $img
* @return string
*/
public function addImage( $img ) {
if ( empty( $img ) ) {
$img = ' ';
}
return $img;
}
/**
*
* @param $link
*
* @param $atts
* @param $css_class
* @return string
* @since 4.5
*
*/
public function disableContentLink( $link, $atts, $css_class ) {
return 'a' . ( strlen( $css_class ) > 0 ? ' class="' . esc_attr( $css_class ) . '"' : '' );
}
/**
*
* @param $link
*
* @param $atts
* @param $post
* @param $css_class
* @return string
* @since 4.5
*
*/
public function disableRealContentLink( $link, $atts, $post, $css_class ) {
return 'a' . ( strlen( $css_class ) > 0 ? ' class="' . esc_attr( $css_class ) . '"' : '' );
}
/**
* Used for filter: vc_gitem_zone_image_block_link
* @param $link
*
* @return string
* @since 4.5
*
*/
public function disableGitemZoneLink( $link ) {
return '';
}
public function enqueue() {
visual_composer()->frontCss();
visual_composer()->frontJsRegister();
wp_enqueue_script( 'prettyphoto' );
wp_enqueue_style( 'prettyphoto' );
wp_enqueue_style( 'js_composer_front' );
wp_enqueue_script( 'wpb_composer_front_js' );
wp_enqueue_style( 'js_composer_custom_css' );
VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_Vc_Basic_Grid' );
$grid = new WPBakeryShortCode_Vc_Basic_Grid( array( 'base' => 'vc_basic_grid' ) );
$grid->shortcodeScripts();
$grid->enqueueScripts();
}
/**
* @return array|\WP_Post|null
*/
public function mockingPost() {
$post = get_post( $this->post_id );
setup_postdata( $post );
$post->post_title = esc_html__( 'Post title', 'js_composer' );
$post->post_content = esc_html__( 'The WordPress Excerpt is an optional summary or description of a post; in short, a post summary.', 'js_composer' );
$post->post_excerpt = esc_html__( 'The WordPress Excerpt is an optional summary or description of a post; in short, a post summary.', 'js_composer' );
add_filter( 'get_the_categories', array(
$this,
'getTheCategories',
), 10, 2 );
$GLOBALS['post'] = $post;
return $post;
}
/**
* @param $categories
* @param $post_id
* @return array
*/
public function getTheCategories( $categories, $post_id ) {
$ret = $categories;
if ( ! $post_id || ( $post_id && $post_id === $this->post_id ) ) {
$cat = get_categories( 'number=5' );
if ( empty( $ret ) && ! empty( $cat ) ) {
$ret += $cat;
}
}
return $ret;
}
/**
* @param $img
* @return array
*/
public function addPlaceholderImage( $img ) {
if ( null === $img || false === $img ) {
$img = array(
'thumbnail' => ' ',
);
}
return $img;
}
}
params/vc_grid_item/editor/popups/class-vc-add-element-box-grid-item.php 0000644 00000001670 15021217214 0022343 0 ustar 00 part( 'grid_builder' )->getState();
}
}
params/vc_grid_item/editor/popups/class-vc-templates-editor-grid-item.php 0000644 00000014710 15021217214 0022657 0 ustar 00 ';
if ( isset( $category['category_name'] ) ) {
$category['output'] .= '' . esc_html( $category['category_name'] ) . ' ';
}
if ( isset( $category['category_description'] ) ) {
$category['output'] .= '' . esc_html( $category['category_description'] ) . '
';
}
$category['output'] .= '';
$category['output'] .= '
';
if ( ! empty( $category['templates'] ) ) {
foreach ( $category['templates'] as $template ) {
$category['output'] .= $this->renderTemplateListItem( $template );
}
}
$category['output'] .= '
';
}
return $category;
}
/** Output rendered template in modal dialog
* @param $template_name
* @param $template_data
*
* @return string
* @since 4.4
*
*/
public function renderTemplateWindowGrid( $template_name, $template_data ) {
if ( 'grid_templates' === $template_data['type'] || 'grid_templates_custom' === $template_data['type'] ) {
return $this->renderTemplateWindowGridTemplate( $template_name, $template_data );
}
return $template_name;
}
/**
* @param $template_name
* @param $template_data
*
* @return string
* @since 4.4
*
*/
protected function renderTemplateWindowGridTemplate( $template_name, $template_data ) {
ob_start();
$template_id = esc_attr( $template_data['unique_id'] );
$template_name = esc_html( $template_name );
$preview_template_title = esc_attr__( 'Preview template', 'js_composer' );
$add_template_title = esc_attr__( 'Preview template', 'js_composer' );
echo sprintf( '%s
', esc_attr( $add_template_title ), esc_html( $template_name ), esc_attr( $add_template_title ), esc_attr( $preview_template_title ), esc_attr( $template_id ) );
return ob_get_clean();
}
/**
* @param bool $template_id
*/
public function load( $template_id = false ) {
if ( ! $template_id ) {
$template_id = vc_post_param( 'template_unique_id' );
}
if ( ! isset( $template_id ) || '' === $template_id ) {
echo 'Error: TPL-02';
die;
}
$predefined_template = Vc_Grid_Item::predefinedTemplate( $template_id );
if ( $predefined_template ) {
echo esc_html( trim( $predefined_template['template'] ) );
}
}
/**
* @param bool $template_id
* @return string
*/
public function loadCustomTemplate( $template_id = false ) {
if ( ! $template_id ) {
$template_id = vc_post_param( 'template_unique_id' );
}
if ( ! isset( $template_id ) || '' === $template_id ) {
echo 'Error: TPL-02';
die();
}
$post = get_post( $template_id );
if ( $post && Vc_Grid_Item_Editor::postType() === $post->post_type ) {
return $post->post_content;
}
return '';
}
/**
* @return array|mixed|void
*/
public function getAllTemplates() {
$data = array();
$grid_templates = $this->getGridTemplates();
// this has only 'name' and 'template' key and index 'key' is template id.
if ( ! empty( $grid_templates ) ) {
$arr_category = array(
'category' => 'grid_templates',
'category_name' => esc_html__( 'Grid Templates', 'js_composer' ),
'category_weight' => 10,
);
$category_templates = array();
foreach ( $grid_templates as $template_id => $template_data ) {
$category_templates[] = array(
'unique_id' => $template_id,
'name' => $template_data['name'],
'type' => 'grid_templates',
// for rendering in backend/frontend with ajax
);
}
$arr_category['templates'] = $category_templates;
$data[] = $arr_category;
}
$custom_grid_templates = $this->getCustomTemplateList();
if ( ! empty( $custom_grid_templates ) ) {
$arr_category = array(
'category' => 'grid_templates_custom',
'category_name' => esc_html__( 'Custom Grid Templates', 'js_composer' ),
'category_weight' => 10,
);
$category_templates = array();
foreach ( $custom_grid_templates as $template_name => $template_id ) {
$category_templates[] = array(
'unique_id' => $template_id,
'name' => $template_name,
'type' => 'grid_templates_custom',
// for rendering in backend/frontend with ajax);
);
}
$arr_category['templates'] = $category_templates;
$data[] = $arr_category;
}
// To get any other 3rd "Custom template" - do this by hook filter 'vc_get_all_templates'
return apply_filters( 'vc_grid_get_all_templates', $data );
}
/**
* @return array
*/
protected function getCustomTemplateList() {
$list = array();
$templates = get_posts( array(
'post_type' => Vc_Grid_Item_Editor::postType(),
'numberposts' => - 1,
) );
foreach ( $templates as $template ) {
$id = $template->ID;
$list[ $template->post_title ] = $id;
}
return $list;
}
/**
* @return bool|mixed
*/
public function getGridTemplates() {
$list = Vc_Grid_Item::predefinedTemplates();
return $list;
}
}
params/vc_grid_item/shortcodes.php 0000644 00000102020 15021217214 0013336 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Gitem_Animated_Block' );
global $vc_gitem_add_link_param;
$vc_gitem_add_link_param = apply_filters( 'vc_gitem_add_link_param', array(
'type' => 'dropdown',
'heading' => esc_html__( 'Add link', 'js_composer' ),
'param_name' => 'link',
'value' => array(
esc_html__( 'None', 'js_composer' ) => 'none',
esc_html__( 'Post link', 'js_composer' ) => 'post_link',
esc_html__( 'Post author', 'js_composer' ) => 'post_author',
esc_html__( 'Large image', 'js_composer' ) => 'image',
esc_html__( 'Large image (prettyPhoto)', 'js_composer' ) => 'image_lightbox',
esc_html__( 'Custom', 'js_composer' ) => 'custom',
),
'description' => esc_html__( 'Select link option.', 'js_composer' ),
) );
$zone_params = array(
$vc_gitem_add_link_param,
array(
'type' => 'vc_link',
'heading' => esc_html__( 'URL (Link)', 'js_composer' ),
'param_name' => 'url',
'dependency' => array(
'element' => 'link',
'value' => array( 'custom' ),
),
'description' => esc_html__( 'Add custom link.', 'js_composer' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Use featured image on background?', 'js_composer' ),
'param_name' => 'featured_image',
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
'description' => esc_html__( 'Note: Featured image overwrites background image and color from "Design Options".', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Image size', 'js_composer' ),
'param_name' => 'img_size',
'value' => 'large',
'description' => esc_html__( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)).', 'js_composer' ),
'dependency' => array(
'element' => 'featured_image',
'not_empty' => true,
),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
);
$post_data_params = array(
$vc_gitem_add_link_param,
array(
'type' => 'vc_link',
'heading' => esc_html__( 'URL (Link)', 'js_composer' ),
'param_name' => 'url',
'dependency' => array(
'element' => 'link',
'value' => array( 'custom' ),
),
'description' => esc_html__( 'Add custom link.', 'js_composer' ),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
);
$custom_fonts_params = array(
array(
'type' => 'font_container',
'param_name' => 'font_container',
'value' => '',
'settings' => array(
'fields' => array(
'tag' => 'div',
// default value h2
'text_align',
'tag_description' => esc_html__( 'Select element tag.', 'js_composer' ),
'text_align_description' => esc_html__( 'Select text alignment.', 'js_composer' ),
'font_size_description' => esc_html__( 'Enter font size.', 'js_composer' ),
'line_height_description' => esc_html__( 'Enter line height.', 'js_composer' ),
'color_description' => esc_html__( 'Select color for your element.', 'js_composer' ),
),
),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Use custom fonts?', 'js_composer' ),
'param_name' => 'use_custom_fonts',
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
'description' => esc_html__( 'Enable Google fonts.', 'js_composer' ),
),
array(
'type' => 'font_container',
'param_name' => 'block_container',
'value' => '',
'settings' => array(
'fields' => array(
'font_size',
'line_height',
'color',
'tag_description' => esc_html__( 'Select element tag.', 'js_composer' ),
'text_align_description' => esc_html__( 'Select text alignment.', 'js_composer' ),
'font_size_description' => esc_html__( 'Enter font size.', 'js_composer' ),
'line_height_description' => esc_html__( 'Enter line height.', 'js_composer' ),
'color_description' => esc_html__( 'Select color for your element.', 'js_composer' ),
),
),
'group' => esc_html__( 'Custom fonts', 'js_composer' ),
'dependency' => array(
'element' => 'use_custom_fonts',
'value' => array( 'yes' ),
),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Yes theme default font family?', 'js_composer' ),
'param_name' => 'use_theme_fonts',
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
'description' => esc_html__( 'Yes font family from the theme.', 'js_composer' ),
'group' => esc_html__( 'Custom fonts', 'js_composer' ),
'dependency' => array(
'element' => 'use_custom_fonts',
'value' => array( 'yes' ),
),
),
array(
'type' => 'google_fonts',
'param_name' => 'google_fonts',
'value' => '',
// Not recommended, this will override 'settings'. 'font_family:'.rawurlencode('Exo:100,100italic,200,200italic,300,300italic,regular,italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic').'|font_style:'.rawurlencode('900 bold italic:900:italic'),
'settings' => array(
'fields' => array(
// Default font style. Name:weight:style, example: "800 bold regular:800:normal"
'font_family_description' => esc_html__( 'Select font family.', 'js_composer' ),
'font_style_description' => esc_html__( 'Select font styling.', 'js_composer' ),
),
),
'group' => esc_html__( 'Custom fonts', 'js_composer' ),
'dependency' => array(
'element' => 'use_theme_fonts',
'value_not_equal_to' => 'yes',
),
),
);
$list = array(
'vc_gitem' => array(
'name' => esc_html__( 'Grid Item', 'js_composer' ),
'base' => 'vc_gitem',
'is_container' => true,
'icon' => 'icon-wpb-gitem',
'content_element' => false,
'show_settings_on_create' => false,
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Main grid item', 'js_composer' ),
'params' => array(
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
'js_view' => 'VcGitemView',
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_animated_block' => array(
'base' => 'vc_gitem_animated_block',
'name' => esc_html__( 'A/B block', 'js_composer' ),
'content_element' => false,
'is_container' => true,
'show_settings_on_create' => false,
'icon' => 'icon-wpb-gitem-block',
'category' => esc_html__( 'Content', 'js_composer' ),
'controls' => array(),
'as_parent' => array(
'only' => array(
'vc_gitem_zone_a',
'vc_gitem_zone_b',
),
),
'params' => array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Animation', 'js_composer' ),
'param_name' => 'animation',
'value' => WPBakeryShortCode_Vc_Gitem_Animated_Block::animations(),
),
),
'js_view' => 'VcGitemAnimatedBlockView',
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_zone' => array(
'name' => esc_html__( 'Zone', 'js_composer' ),
'base' => 'vc_gitem_zone',
'content_element' => false,
'is_container' => true,
'show_settings_on_create' => false,
'icon' => 'icon-wpb-gitem-zone',
'category' => esc_html__( 'Content', 'js_composer' ),
'controls' => array( 'edit' ),
'as_parent' => array( 'only' => 'vc_gitem_row' ),
'js_view' => 'VcGitemZoneView',
'params' => $zone_params,
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_zone_a' => array(
'name' => esc_html__( 'Normal', 'js_composer' ),
'base' => 'vc_gitem_zone_a',
'content_element' => false,
'is_container' => true,
'show_settings_on_create' => false,
'icon' => 'icon-wpb-gitem-zone',
'category' => esc_html__( 'Content', 'js_composer' ),
'controls' => array( 'edit' ),
'as_parent' => array( 'only' => 'vc_gitem_row' ),
'js_view' => 'VcGitemZoneView',
'params' => array_merge( array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Height mode', 'js_composer' ),
'param_name' => 'height_mode',
'value' => array(
'1:1' => '1-1',
esc_html__( 'Original', 'js_composer' ) => 'original',
'4:3' => '4-3',
'3:4' => '3-4',
'16:9' => '16-9',
'9:16' => '9-16',
esc_html__( 'Custom', 'js_composer' ) => 'custom',
),
'description' => esc_html__( 'Sizing proportions for height and width. Select "Original" to scale image without cropping.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Height', 'js_composer' ),
'param_name' => 'height',
'dependency' => array(
'element' => 'height_mode',
'value' => array( 'custom' ),
),
'description' => esc_html__( 'Enter custom height.', 'js_composer' ),
),
), $zone_params ),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_zone_b' => array(
'name' => esc_html__( 'Hover', 'js_composer' ),
'base' => 'vc_gitem_zone_b',
'content_element' => false,
'is_container' => true,
'show_settings_on_create' => false,
'icon' => 'icon-wpb-gitem-zone',
'category' => esc_html__( 'Content', 'js_composer' ),
'controls' => array( 'edit' ),
'as_parent' => array( 'only' => 'vc_gitem_row' ),
'js_view' => 'VcGitemZoneView',
'params' => $zone_params,
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_zone_c' => array(
'name' => esc_html__( 'Additional', 'js_composer' ),
'base' => 'vc_gitem_zone_c',
'content_element' => false,
'is_container' => true,
'show_settings_on_create' => false,
'icon' => 'icon-wpb-gitem-zone',
'category' => esc_html__( 'Content', 'js_composer' ),
'controls' => array(
'move',
'delete',
'edit',
),
'as_parent' => array( 'only' => 'vc_gitem_row' ),
'js_view' => 'VcGitemZoneCView',
'params' => array(
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_row' => array(
'name' => esc_html__( 'Row', 'js_composer' ),
'base' => 'vc_gitem_row',
'content_element' => false,
'is_container' => true,
'icon' => 'icon-wpb-row',
'weight' => 1000,
'show_settings_on_create' => false,
'controls' => array(
'layout',
'delete',
),
'allowed_container_element' => 'vc_gitem_col',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Place content elements inside the row', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
'js_view' => 'VcGitemRowView',
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_col' => array(
'name' => esc_html__( 'Column', 'js_composer' ),
'base' => 'vc_gitem_col',
'icon' => 'icon-wpb-row',
'weight' => 1000,
'is_container' => true,
'allowed_container_element' => false,
'content_element' => false,
'controls' => array( 'edit' ),
'description' => esc_html__( 'Place content elements inside the column', 'js_composer' ),
'params' => array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Width', 'js_composer' ),
'param_name' => 'width',
'value' => array(
esc_html__( '1 column - 1/12', 'js_composer' ) => '1/12',
esc_html__( '2 columns - 1/6', 'js_composer' ) => '1/6',
esc_html__( '3 columns - 1/4', 'js_composer' ) => '1/4',
esc_html__( '4 columns - 1/3', 'js_composer' ) => '1/3',
esc_html__( '5 columns - 5/12', 'js_composer' ) => '5/12',
esc_html__( '6 columns - 1/2', 'js_composer' ) => '1/2',
esc_html__( '7 columns - 7/12', 'js_composer' ) => '7/12',
esc_html__( '8 columns - 2/3', 'js_composer' ) => '2/3',
esc_html__( '9 columns - 3/4', 'js_composer' ) => '3/4',
esc_html__( '10 columns - 5/6', 'js_composer' ) => '5/6',
esc_html__( '11 columns - 11/12', 'js_composer' ) => '11/12',
esc_html__( '12 columns - 1/1', 'js_composer' ) => '1/1',
),
'description' => esc_html__( 'Select column width.', 'js_composer' ),
'std' => '1/1',
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Use featured image on background?', 'js_composer' ),
'param_name' => 'featured_image',
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
'description' => esc_html__( 'Note: Featured image overwrites background image and color from "Design Options".', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Image size', 'js_composer' ),
'param_name' => 'img_size',
'value' => 'large',
'description' => esc_html__( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)).', 'js_composer' ),
'dependency' => array(
'element' => 'featured_image',
'not_empty' => true,
),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
'js_view' => 'VcGitemColView',
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_post_title' => array(
'name' => esc_html__( 'Post Title', 'js_composer' ),
'base' => 'vc_gitem_post_title',
'icon' => 'vc_icon-vc-gitem-post-title',
'category' => esc_html__( 'Post', 'js_composer' ),
'description' => esc_html__( 'Title of current post', 'js_composer' ),
'params' => array_merge( $post_data_params, $custom_fonts_params, array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
) ),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_post_excerpt' => array(
'name' => esc_html__( 'Post Excerpt', 'js_composer' ),
'base' => 'vc_gitem_post_excerpt',
'icon' => 'vc_icon-vc-gitem-post-excerpt',
'category' => esc_html__( 'Post', 'js_composer' ),
'description' => esc_html__( 'Excerpt or manual excerpt', 'js_composer' ),
'params' => array_merge( $post_data_params, $custom_fonts_params, array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
) ),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_post_author' => array(
'name' => esc_html__( 'Post Author', 'js_composer' ),
'base' => 'vc_gitem_post_author',
'icon' => 'vc_icon-vc-gitem-post-author',
// @todo change icon ?
'category' => esc_html__( 'Post', 'js_composer' ),
'description' => esc_html__( 'Author of current post', 'js_composer' ),
'params' => array_merge( array(
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Add link', 'js_composer' ),
'param_name' => 'link',
'value' => '',
'description' => esc_html__( 'Add link to author?', 'js_composer' ),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
), $custom_fonts_params, array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
) ),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_post_categories' => array(
'name' => esc_html__( 'Post Categories', 'js_composer' ),
'base' => 'vc_gitem_post_categories',
'icon' => 'vc_icon-vc-gitem-post-categories',
// @todo change icon ?
'category' => esc_html__( 'Post', 'js_composer' ),
'description' => esc_html__( 'Categories of current post', 'js_composer' ),
'params' => array(
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Add link', 'js_composer' ),
'param_name' => 'link',
'value' => '',
'description' => esc_html__( 'Add link to category?', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Style', 'js_composer' ),
'param_name' => 'category_style',
'value' => array(
esc_html__( 'None', 'js_composer' ) => ' ',
esc_html__( 'Comma', 'js_composer' ) => ', ',
esc_html__( 'Rounded', 'js_composer' ) => 'filled vc_grid-filter-filled-round-all',
esc_html__( 'Less Rounded', 'js_composer' ) => 'filled vc_grid-filter-filled-rounded-all',
esc_html__( 'Border', 'js_composer' ) => 'bordered',
esc_html__( 'Rounded Border', 'js_composer' ) => 'bordered-rounded vc_grid-filter-filled-round-all',
esc_html__( 'Less Rounded Border', 'js_composer' ) => 'bordered-rounded-less vc_grid-filter-filled-rounded-all',
),
'description' => esc_html__( 'Select category display style.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Color', 'js_composer' ),
'param_name' => 'category_color',
'value' => vc_get_shared( 'colors' ),
'std' => 'grey',
'param_holder_class' => 'vc_colored-dropdown',
'dependency' => array(
'element' => 'category_style',
'value_not_equal_to' => array(
' ',
', ',
),
),
'description' => esc_html__( 'Select category color.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Category size', 'js_composer' ),
'param_name' => 'category_size',
'value' => vc_get_shared( 'sizes' ),
'std' => 'md',
'description' => esc_html__( 'Select category size.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_image' => array(
'name' => esc_html__( 'Post Image', 'js_composer' ),
'base' => 'vc_gitem_image',
'icon' => 'vc_icon-vc-gitem-image',
'category' => esc_html__( 'Post', 'js_composer' ),
'description' => esc_html__( 'Featured image', 'js_composer' ),
'params' => array(
$vc_gitem_add_link_param,
array(
'type' => 'vc_link',
'heading' => esc_html__( 'URL (Link)', 'js_composer' ),
'param_name' => 'url',
'dependency' => array(
'element' => 'link',
'value' => array( 'custom' ),
),
'description' => esc_html__( 'Add custom link.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Image size', 'js_composer' ),
'param_name' => 'img_size',
'description' => esc_html__( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)). Leave parameter empty to use "thumbnail" by default.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Image alignment', 'js_composer' ),
'param_name' => 'alignment',
'value' => array(
esc_html__( 'Left', 'js_composer' ) => '',
esc_html__( 'Right', 'js_composer' ) => 'right',
esc_html__( 'Center', 'js_composer' ) => 'center',
),
'description' => esc_html__( 'Select image alignment.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Image style', 'js_composer' ),
'param_name' => 'style',
'value' => vc_get_shared( 'single image styles' ),
'description' => esc_html__( 'Select image display style.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Border color', 'js_composer' ),
'param_name' => 'border_color',
'value' => vc_get_shared( 'colors' ),
'std' => 'grey',
'dependency' => array(
'element' => 'style',
'value' => array(
'vc_box_border',
'vc_box_border_circle',
'vc_box_outline',
'vc_box_outline_circle',
),
),
'description' => esc_html__( 'Border color.', 'js_composer' ),
'param_holder_class' => 'vc_colored-dropdown',
),
vc_map_add_css_animation(),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_post_date' => array(
'name' => esc_html__( 'Post Date', 'js_composer' ),
'base' => 'vc_gitem_post_date',
'icon' => 'vc_icon-vc-gitem-post-date',
'category' => esc_html__( 'Post', 'js_composer' ),
'description' => esc_html__( 'Post publish date', 'js_composer' ),
'params' => array_merge( $post_data_params, $custom_fonts_params, array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
) ),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
'vc_gitem_post_meta' => array(
'name' => esc_html__( 'Custom Field', 'js_composer' ),
'base' => 'vc_gitem_post_meta',
'icon' => 'vc_icon-vc-gitem-post-meta',
'category' => array(
esc_html__( 'Elements', 'js_composer' ),
),
'description' => esc_html__( 'Custom fields data from meta values of the post.', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Field key name', 'js_composer' ),
'param_name' => 'key',
'description' => esc_html__( 'Enter custom field name to retrieve meta data value.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Label', 'js_composer' ),
'param_name' => 'label',
'description' => esc_html__( 'Enter label to display before key value.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Alignment', 'js_composer' ),
'param_name' => 'align',
'value' => array(
esc_html__( 'Left', 'js_composer' ) => 'left',
esc_html__( 'Right', 'js_composer' ) => 'right',
esc_html__( 'Center', 'js_composer' ) => 'center',
esc_html__( 'Justify', 'js_composer' ) => 'justify',
),
'description' => esc_html__( 'Select alignment.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
);
$shortcode_vc_column_text = WPBMap::getShortCode( 'vc_column_text' );
if ( is_array( $shortcode_vc_column_text ) && isset( $shortcode_vc_column_text['base'] ) ) {
$list['vc_column_text'] = $shortcode_vc_column_text;
$list['vc_column_text']['post_type'] = Vc_Grid_Item_Editor::postType();
$remove = array( 'el_id' );
foreach ( $list['vc_column_text']['params'] as $k => $v ) {
if ( in_array( $v['param_name'], $remove, true ) ) {
unset( $list['vc_column_text']['params'][ $k ] );
}
}
}
$shortcode_vc_separator = WPBMap::getShortCode( 'vc_separator' );
if ( is_array( $shortcode_vc_separator ) && isset( $shortcode_vc_separator['base'] ) ) {
$list['vc_separator'] = $shortcode_vc_separator;
$list['vc_separator']['post_type'] = Vc_Grid_Item_Editor::postType();
$remove = array( 'el_id' );
foreach ( $list['vc_separator']['params'] as $k => $v ) {
if ( in_array( $v['param_name'], $remove, true ) ) {
unset( $list['vc_separator']['params'][ $k ] );
}
}
}
$shortcode_vc_text_separator = WPBMap::getShortCode( 'vc_text_separator' );
if ( is_array( $shortcode_vc_text_separator ) && isset( $shortcode_vc_text_separator['base'] ) ) {
$list['vc_text_separator'] = $shortcode_vc_text_separator;
$list['vc_text_separator']['post_type'] = Vc_Grid_Item_Editor::postType();
$remove = array( 'el_id' );
foreach ( $list['vc_text_separator']['params'] as $k => $v ) {
if ( in_array( $v['param_name'], $remove, true ) ) {
unset( $list['vc_text_separator']['params'][ $k ] );
}
}
}
$shortcode_vc_icon = WPBMap::getShortCode( 'vc_icon' );
if ( is_array( $shortcode_vc_icon ) && isset( $shortcode_vc_icon['base'] ) ) {
$list['vc_icon'] = $shortcode_vc_icon;
$list['vc_icon']['post_type'] = Vc_Grid_Item_Editor::postType();
$list['vc_icon']['params'] = vc_map_integrate_shortcode( 'vc_icon', '', '', array(
'exclude' => array(
'link',
'el_id',
),
) );
}
$list['vc_single_image'] = array(
'name' => esc_html__( 'Single Image', 'js_composer' ),
'base' => 'vc_single_image',
'icon' => 'icon-wpb-single-image',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Simple image with CSS animation', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Widget title', 'js_composer' ),
'param_name' => 'title',
'description' => esc_html__( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Image source', 'js_composer' ),
'param_name' => 'source',
'value' => array(
esc_html__( 'Media library', 'js_composer' ) => 'media_library',
esc_html__( 'External link', 'js_composer' ) => 'external_link',
),
'std' => 'media_library',
'description' => esc_html__( 'Select image source.', 'js_composer' ),
),
array(
'type' => 'attach_image',
'heading' => esc_html__( 'Image', 'js_composer' ),
'param_name' => 'image',
'value' => '',
'description' => esc_html__( 'Select image from media library.', 'js_composer' ),
'dependency' => array(
'element' => 'source',
'value' => 'media_library',
),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'External link', 'js_composer' ),
'param_name' => 'custom_src',
'description' => esc_html__( 'Select external link.', 'js_composer' ),
'dependency' => array(
'element' => 'source',
'value' => 'external_link',
),
),
vc_map_add_css_animation(),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Image size', 'js_composer' ),
'param_name' => 'img_size',
'description' => esc_html__( 'Enter image size (Example: "thumbnail", "medium", "large", "full" or other sizes defined by theme). Alternatively enter size in pixels (Example: 200x100 (Width x Height)). Leave parameter empty to use "thumbnail" by default.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Image alignment', 'js_composer' ),
'param_name' => 'alignment',
'value' => array(
esc_html__( 'Left', 'js_composer' ) => '',
esc_html__( 'Right', 'js_composer' ) => 'right',
esc_html__( 'Center', 'js_composer' ) => 'center',
),
'description' => esc_html__( 'Select image alignment.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Image style', 'js_composer' ),
'param_name' => 'style',
'value' => vc_get_shared( 'single image styles' ),
'description' => esc_html__( 'Select image display style.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Border color', 'js_composer' ),
'param_name' => 'border_color',
'value' => vc_get_shared( 'colors' ),
'std' => 'grey',
'dependency' => array(
'element' => 'style',
'value' => array(
'vc_box_border',
'vc_box_border_circle',
'vc_box_outline',
'vc_box_outline_circle',
),
),
'description' => esc_html__( 'Border color.', 'js_composer' ),
'param_holder_class' => 'vc_colored-dropdown',
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'CSS box', 'js_composer' ),
'param_name' => 'css',
'group' => esc_html__( 'Design Options', 'js_composer' ),
),
),
'post_type' => Vc_Grid_Item_Editor::postType(),
);
$shortcode_vc_button2 = WPBMap::getShortCode( 'vc_button2' );
if ( is_array( $shortcode_vc_button2 ) && isset( $shortcode_vc_button2['base'] ) ) {
$list['vc_button2'] = $shortcode_vc_button2;
$list['vc_button2']['post_type'] = Vc_Grid_Item_Editor::postType();
}
$shortcode_vc_btn = WPBMap::getShortCode( 'vc_btn' );
if ( is_array( $shortcode_vc_btn ) && isset( $shortcode_vc_btn['base'] ) ) {
$list['vc_btn'] = $shortcode_vc_btn;
$list['vc_btn']['post_type'] = Vc_Grid_Item_Editor::postType();
unset( $list['vc_btn']['params'][1] );
$remove = array( 'el_id' );
foreach ( $list['vc_btn']['params'] as $k => $v ) {
if ( in_array( $v['param_name'], $remove, true ) ) {
unset( $list['vc_btn']['params'][ $k ] );
}
}
}
$shortcode_vc_custom_heading = WPBMap::getShortCode( 'vc_custom_heading' );
if ( is_array( $shortcode_vc_custom_heading ) && isset( $shortcode_vc_custom_heading['base'] ) ) {
$list['vc_custom_heading'] = $shortcode_vc_custom_heading;
$list['vc_custom_heading']['post_type'] = Vc_Grid_Item_Editor::postType();
$remove = array(
'link',
'source',
'el_id',
);
foreach ( $list['vc_custom_heading']['params'] as $k => $v ) {
if ( in_array( $v['param_name'], $remove, true ) ) {
unset( $list['vc_custom_heading']['params'][ $k ] );
}
// text depends on source. remove dependency so text is always saved
if ( 'text' === $v['param_name'] ) {
unset( $list['vc_custom_heading']['params'][ $k ]['dependency'] );
}
}
}
$shortcode_vc_empty_space = WPBMap::getShortCode( 'vc_empty_space' );
if ( is_array( $shortcode_vc_empty_space ) && isset( $shortcode_vc_empty_space['base'] ) ) {
$list['vc_empty_space'] = $shortcode_vc_empty_space;
$list['vc_empty_space']['post_type'] = Vc_Grid_Item_Editor::postType();
$remove = array( 'el_id' );
foreach ( $list['vc_empty_space']['params'] as $k => $v ) {
if ( in_array( $v['param_name'], $remove, true ) ) {
unset( $list['vc_empty_space']['params'][ $k ] );
}
}
}
foreach (
array(
'vc_icon',
'vc_button2',
'vc_btn',
'vc_custom_heading',
'vc_single_image',
) as $key
) {
if ( isset( $list[ $key ] ) ) {
if ( ! isset( $list[ $key ]['params'] ) ) {
$list[ $key ]['params'] = array();
}
if ( 'vc_button2' === $key ) {
// change settings for vc_link in dropdown. Add dependency.
$list[ $key ]['params'][0] = array(
'type' => 'vc_link',
'heading' => esc_html__( 'URL (Link)', 'js_composer' ),
'param_name' => 'url',
'dependency' => array(
'element' => 'link',
'value' => array( 'custom' ),
),
'description' => esc_html__( 'Add custom link.', 'js_composer' ),
);
} else {
array_unshift( $list[ $key ]['params'], array(
'type' => 'vc_link',
'heading' => esc_html__( 'URL (Link)', 'js_composer' ),
'param_name' => 'url',
'dependency' => array(
'element' => 'link',
'value' => array( 'custom' ),
),
'description' => esc_html__( 'Add custom link.', 'js_composer' ),
) );
}
// Add link dropdown
array_unshift( $list[ $key ]['params'], $vc_gitem_add_link_param );
}
}
foreach ( $list as $key => $value ) {
if ( isset( $list[ $key ]['params'] ) ) {
$list[ $key ]['params'] = array_values( $list[ $key ]['params'] );
}
}
return $list;
params/vc_grid_item/class-wpb-map-grid-item.php 0000644 00000006606 15021217214 0015523 0 ustar 00 $values ) {
if ( isset( $values['post_type'] ) && Vc_Grid_Item_Editor::postType() === $values['post_type'] && vc_user_access_check_shortcode_all( $name ) ) {
if ( ! isset( $values['content_element'] ) || true === $values['content_element'] ) {
$categories = isset( $values['category'] ) ? $values['category'] : '_other_category_';
$values['_category_ids'] = array();
if ( isset( $values['deprecated'] ) && false !== $values['deprecated'] ) {
$add_deprecated = true;
$values['_category_ids'][] = $deprecated;
} else {
if ( is_array( $categories ) && ! empty( $categories ) ) {
foreach ( $categories as $c ) {
if ( false === array_search( $c, self::$gitem_user_categories, true ) ) {
self::$gitem_user_categories[] = $c;
}
$values['_category_ids'][] = md5( $c );
}
} else {
if ( false === array_search( $categories, self::$gitem_user_categories, true ) ) {
self::$gitem_user_categories[] = $categories;
}
$values['_category_ids'][] = md5( $categories );
}
}
}
self::$gitem_user_sc[ $name ] = $values;
self::$gitem_user_sorted_sc[] = $values;
}
}
}
if ( $add_deprecated ) {
self::$gitem_user_categories[] = $deprecated;
}
$sort = new Vc_Sort( self::$gitem_user_sorted_sc );
self::$gitem_user_sorted_sc = $sort->sortByKey();
}
/**
* Get sorted list of mapped shortcode settings grid element
*
* Sorting depends on the weight attribute and mapping order.
*
* @static
* @return bool
* @throws \Exception
*/
public static function getSortedGitemUserShortCodes() {
self::generateGitemUserData();
return self::$gitem_user_sorted_sc;
}
/**
* Get list of mapped shortcode settings for current user.
* @static
* @return bool - associated array of shortcodes settings with tag as the key.
* @throws \Exception
*/
public static function getGitemUserShortCodes() {
self::generateGitemUserData();
return self::$gitem_user_sc;
}
/**
* Get all categories for current user.
*
* Category is added to the list when at least one shortcode of this category is allowed for current user
* by Vc access rules.
*
* @static
* @return bool
* @throws \Exception
*/
public static function getGitemUserCategories() {
self::generateGitemUserData();
return self::$gitem_user_categories;
}
}
params/vc_grid_item/templates.php 0000644 00000172345 15021217214 0013200 0 ustar 00 array(
'name' => esc_html__( 'Basic grid: Default', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419240516480{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'basicGrid_ScaleInWithRotation' => array(
'name' => esc_html__( 'Basic grid: Scale in with rotation', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419240793832{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419240595465{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'basicGrid_FadeInWithSideContent' => array(
'name' => esc_html__( 'Basic grid: Fade with side content', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="right" css=".vc_custom_1420541757398{background-color: #f9f9f9 !important;}"][vc_gitem_animated_block animation="fadeIn"][vc_gitem_zone_a height_mode="3-4" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419242201096{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419242120132{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_date link="none" font_container="tag:div|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'basicGrid_SlideBottomWithIcon' => array(
'name' => esc_html__( 'Basic grid: Slide bottom with icon', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419251931135{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-zoom" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="white" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419251874438{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:center" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:center" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'basicGrid_VerticalFlip' => array(
'name' => esc_html__( 'Basic grid: Vertical flip', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="" position=""][vc_gitem_animated_block animation="flipFadeIn"][vc_gitem_zone_a height_mode="3-4" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419250758402{background-color: #353535 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419250916067{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:500%20bold%20regular%3A500%3Anormal" block_container="font_size:22|color:%23ffffff|line_height:1.2"][vc_separator color="white" align="align_center" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal" block_container="font_size:14|color:%23ffffff|line_height:1.3"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'basicGrid_NoAnimation' => array(
'name' => esc_html__( 'Basic grid: No animation', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="none"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419253765784{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_date link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:12|color:%23e5e5e5" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h3|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'basicGrid_GoTopSlideout' => array(
'name' => esc_html__( 'Basic grid: Go top slideout', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="goTop20"][vc_gitem_zone_a height_mode="3-4" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419254486087{background-color: #f2f2f2 !important;}"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'basicGrid_TextFirst' => array(
'name' => esc_html__( 'Basic grid: Text first', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="flipHorizontalFadeIn"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="" css=".vc_custom_1419260513295{padding-right: 15px !important;padding-left: 15px !important;background-color: #2d2d2d !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal"][vc_separator color="white" align="align_left" border_width="2" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:14|color:%23e2e2e2|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'basicGrid_SlideFromLeft' => array(
'name' => esc_html__( 'Basic grid: Slide from left', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="" position=""][vc_gitem_animated_block animation="slideInRight"][vc_gitem_zone_a height_mode="4-3" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2" featured_image="" css=".vc_custom_1419258058654{padding-left: 15px !important;background-color: #282828 !important;}"][vc_gitem_post_date link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:12|color:%23efefef" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h3|text_align:left" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal" block_container="font_size:20|color:%23ffffff"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'basicGrid_SlideFromTop' => array(
'name' => esc_html__( 'Basic grid: Slide from top', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="slideTop"][vc_gitem_zone_a height_mode="1-1" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="none" featured_image="" css=".vc_custom_1419260990461{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.2" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:700%20bold%20regular%3A700%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:14|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'READ MORE', 'js_composer' ) . '" style="outline" shape="square" color="white" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryGrid_Default' => array(
'name' => esc_html__( 'Masonry grid: Default', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419328663991{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'masonryGrid_FadeIn' => array(
'name' => esc_html__( 'Masonry grid: Fade in', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="fadeIn"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419328603590{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419328565352{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'masonryGrid_IconSlideOut' => array(
'name' => esc_html__( 'Masonry grid: Icon slide out', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419328999899{background-color: rgba(0,0,0,0.5) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="blue" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419328781574{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'masonryGrid_SlideFromLeft' => array(
'name' => esc_html__( 'Masonry grid: Slide from left', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="slideInRight"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419328927507{background-color: #f4f4f4 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_separator color="black" align="align_left" border_width="2" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryGrid_GoTop' => array(
'name' => esc_html__( 'Masonry grid: Go top', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="goTop20"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419329081651{background-color: #2b2b2b !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:20|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:500%20bold%20regular%3A500%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:14|color:%23efefef|line_height:1.2" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryGrid_OverlayWithRotation' => array(
'name' => esc_html__( 'Masonry grid: Overlay with rotation', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419329305433{background-color: rgba(0,0,0,0.5) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_date link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:12|color:%23dbdbdb" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryGrid_BlurOut' => array(
'name' => esc_html__( 'Masonry grid: Blur out', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="blurOut"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419329691977{background-color: rgba(0,0,0,0.5) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:300%20light%20regular%3A300%3Anormal"][vc_separator color="grey" align="align_center" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:14|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryGrid_ScaleWithRotation' => array(
'name' => esc_html__( 'Masonry grid: Scale with rotation', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom" position=""][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419333125675{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419333453605{background-color: #f4f4f4 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'masonryGrid_SlideoOutFromRight' => array(
'name' => esc_html__( 'Masonry grid: Slideo out from right', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="slideInLeft"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2" featured_image=""][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2" featured_image="" css=".vc_custom_1419333716781{margin-bottom: 25px !important;padding-top: 20px !important;padding-left: 20px !important;background-color: #282828 !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryGrid_WithSideContent' => array(
'name' => esc_html__( 'Masonry grid: With side content', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="right" css=".vc_custom_1419334531994{background-color: #f4f4f4 !important;}"][vc_gitem_animated_block animation="blurScaleOut"][vc_gitem_zone_a height_mode="original" link="post_link" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="post_link" featured_image="" css=".vc_custom_1419334566318{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_date link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_btn link="post_link" title="' . esc_attr__( 'Read more', 'js_composer' ) . '" style="flat" shape="rounded" color="juicy-pink" size="md" align="left"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'mediaGrid_Default' => array(
'name' => esc_html__( 'Media grid: Default', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block][vc_gitem_zone_a height_mode="1-1" link="image_lightbox" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_SimpleOverlay' => array(
'name' => esc_html__( 'Media grid: Simple overlay', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="none"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="yes" css=".vc_custom_1419000810062{margin: -15px !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_FadeInWithIcon' => array(
'name' => esc_html__( 'Media grid: Fade in with icon', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="fadeIn"][vc_gitem_zone_a height_mode="4-3" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419001011185{background-color: rgba(40,40,40,0.5) !important;*background-color: rgb(40,40,40) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="entypo" icon_fontawesome="fa fa-adjust" icon_openiconic="vc-oi vc-oi-eye" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-plus" icon_linecons="vc_li vc_li-heart" color="white" background_color="blue" size="lg" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_BorderedScaleWithTitle' => array(
'name' => esc_html__( 'Media grid: Bordered scale with title', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="3-4" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419001608026{margin-top: 5px !important;margin-right: 5px !important;margin-bottom: 5px !important;margin-left: 5px !important;border-top-width: 5px !important;border-right-width: 5px !important;border-bottom-width: 5px !important;border-left-width: 5px !important;border-left-color: #ffffff !important;border-left-style: solid !important;border-right-color: #ffffff !important;border-right-style: solid !important;border-top-color: #ffffff !important;border-top-style: solid !important;border-bottom-color: #ffffff !important;border-bottom-style: solid !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419001517455{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Open%20Sans%3A300%2C300italic%2Cregular%2Citalic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_ScaleWithRotation' => array(
'name' => esc_html__( 'Media grid: Scale with rotation', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419001365234{background-color: rgba(0,0,0,0.3) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_SlideOutCaption' => array(
'name' => esc_html__( 'Media grid: Slide out caption', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419002217534{padding-right: 20px !important;padding-left: 20px !important;background-color: #4f4f4f !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:30|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal"][vc_separator color="white" align="align_center" border_width="2" el_width="50"][vc_gitem_post_excerpt link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:14|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_HorizontalFlipWithFade' => array(
'name' => esc_html__( 'Media grid: Horizontal flip with fade', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="flipHorizontalFadeIn"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419002089906{background-color: #4f4f4f !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419002184955{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_date link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:12|color:%23e0e0e0|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:30|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:100%20light%20regular%3A100%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_BlurWithContentBlock' => array(
'name' => esc_html__( 'Media grid: Blur with content block', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="blurScaleOut"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419002895369{background-color: rgba(255,255,255,0.15) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1419240502350{background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'mediaGrid_SlideInTitle' => array(
'name' => esc_html__( 'Media grid: Slide in title', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="slideTop"][vc_gitem_zone_a height_mode="4-3" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1419003984488{padding-right: 15px !important;padding-left: 15px !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:18|color:%23ffffff|line_height:1.3" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:500%20bold%20regular%3A500%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/2" featured_image=""][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'mediaGrid_ScaleInWithIcon' => array(
'name' => esc_html__( 'Media grid: Scale in with icon', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleIn"][vc_gitem_zone_a height_mode="1-1" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="white" size="lg" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_Default' => array(
'name' => esc_html__( 'Masonry media: Default', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block][vc_gitem_zone_a height_mode="original" link="image_lightbox" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_BorderedScale' => array(
'name' => esc_html__( 'Masonry media: Bordered scale', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleIn"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1418993682046{border: 10px solid #e8e8e8 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_SolidBlurOut' => array(
'name' => esc_html__( 'Masonry media: Solid blur out', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="blurOut"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1418993823084{background-color: rgba(0,0,0,0.4) !important;*background-color: rgb(0,0,0) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="typicons" icon_fontawesome="fa fa-adjust" icon_openiconic="vc-oi vc-oi-resize-full-alt" icon_typicons="typcn typcn-zoom-outline" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="white" size="lg" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_ScaleWithRotationLight' => array(
'name' => esc_html__( 'Masonry media: Scale with rotation light', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1418994252440{background-color: rgba(255,255,255,0.2) !important;*background-color: rgb(255,255,255) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_SlideWithTitleAndCaption' => array(
'name' => esc_html__( 'Masonry media: Slide with title and caption', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="" position=""][vc_gitem_animated_block animation="slideBottom"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1" featured_image="" css=".vc_custom_1418995080777{padding-top: 15px !important;padding-right: 15px !important;padding-bottom: 15px !important;padding-left: 15px !important;background-color: rgba(45,45,45,0.8) !important;*background-color: rgb(45,45,45) !important;}"][vc_gitem_post_title link="none" font_container="tag:div|text_align:left" use_custom_fonts="yes" block_container="font_size:18|color:%23ffffff|line_height:1.2" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="yes" google_fonts="font_family:Roboto%3A100%2C100italic%2C300%2C300italic%2Cregular%2Citalic%2C500%2C500italic%2C700%2C700italic%2C900%2C900italic|font_style:400%20regular%3A400%3Anormal" block_container="font_size:14|color:%23ffffff|line_height:1.3"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_ScaleWithContentBlock' => array(
'name' => esc_html__( 'Masonry media: Scale with content block', 'js_composer' ),
'template' => '[vc_gitem c_zone_position="bottom"][vc_gitem_animated_block animation="scaleRotateIn"][vc_gitem_zone_a height_mode="original" link="image_lightbox" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="none" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][vc_gitem_zone_c css=".vc_custom_1418995850605{padding-top: 5px !important;padding-right: 15px !important;padding-bottom: 5px !important;padding-left: 15px !important;background-color: #f9f9f9 !important;}"][vc_gitem_row][vc_gitem_col width="1/1" featured_image=""][vc_gitem_post_title link="none" font_container="tag:h4|text_align:left" use_custom_fonts="" block_container="font_size:18|line_height:1.2" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][vc_gitem_post_excerpt link="none" font_container="tag:p|text_align:left" use_custom_fonts="" google_fonts="font_family:Abril%20Fatface%3Aregular|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_c][/vc_gitem]',
),
'masonryMedia_SimpleOverlay' => array(
'name' => esc_html__( 'Masonry media: Simple overlay', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="none"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419337784115{background-color: #262626 !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_gitem_post_title link="none" font_container="tag:div|text_align:center" use_custom_fonts="yes" block_container="font_size:24|color:%23ffffff|line_height:1.3" google_fonts="font_family:Montserrat%3Aregular%2C700|font_style:400%20regular%3A400%3Anormal"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_SlideTop' => array(
'name' => esc_html__( 'Masonry media: Slide top', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="slideTop"][vc_gitem_zone_a height_mode="original" link="none" featured_image="yes"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="image_lightbox" featured_image="" css=".vc_custom_1419337643064{background-color: rgba(10,10,10,0.5) !important;*background-color: rgb(10,10,10) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/1"][vc_icon type="fontawesome" icon_fontawesome="fa fa-search" icon_openiconic="vc-oi vc-oi-dial" icon_typicons="typcn typcn-adjust-brightness" icon_entypo="entypo-icon entypo-icon-note" icon_linecons="vc_li vc_li-heart" color="white" background_color="blue" size="md" align="center"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
'masonryMedia_SimpleBlurWithScale' => array(
'name' => esc_html__( 'Masonry media: Simple blur with scale', 'js_composer' ),
'template' => '[vc_gitem][vc_gitem_animated_block animation="blurScaleOut"][vc_gitem_zone_a height_mode="original" link="image_lightbox" featured_image="yes" css=".vc_custom_1419338012126{background-color: rgba(10,10,10,0.7) !important;*background-color: rgb(10,10,10) !important;}"][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_a][vc_gitem_zone_b link="none" featured_image=""][vc_gitem_row position="top"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="middle"][vc_gitem_col width="1/2"][/vc_gitem_col][vc_gitem_col width="1/2"][/vc_gitem_col][/vc_gitem_row][vc_gitem_row position="bottom"][vc_gitem_col width="1/1"][/vc_gitem_col][/vc_gitem_row][/vc_gitem_zone_b][/vc_gitem_animated_block][/vc_gitem]',
),
);
params/vc_grid_item/class-vc-grid-item.php 0000644 00000023326 15021217214 0014566 0 ustar 00 shortcodes ) {
$this->shortcodes = include vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/shortcodes.php' );
$this->shortcodes = apply_filters( 'vc_grid_item_shortcodes', $this->shortcodes );
}
add_filter( 'vc_shortcode_set_template_vc_icon', array(
$this,
'addVcIconShortcodesTemplates',
) );
add_filter( 'vc_shortcode_set_template_vc_button2', array(
$this,
'addVcButton2ShortcodesTemplates',
) );
add_filter( 'vc_shortcode_set_template_vc_single_image', array(
$this,
'addVcSingleImageShortcodesTemplates',
) );
add_filter( 'vc_shortcode_set_template_vc_custom_heading', array(
$this,
'addVcCustomHeadingShortcodesTemplates',
) );
add_filter( 'vc_shortcode_set_template_vc_btn', array(
$this,
'addVcBtnShortcodesTemplates',
) );
return $this->shortcodes;
}
/**
* Used by filter vc_shortcode_set_template_vc_icon to set custom template for vc_icon shortcode.
*
* @param $template
*
* @return string
*/
public function addVcIconShortcodesTemplates( $template ) {
if ( Vc_Grid_Item_Editor::postType() === WPBMap::getScope() ) {
$file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_icon.php' );
if ( is_file( $file ) ) {
return $file;
}
}
return $template;
}
/**
* Used by filter vc_shortcode_set_template_vc_button2 to set custom template for vc_button2 shortcode.
*
* @param $template
*
* @return string
*/
public function addVcButton2ShortcodesTemplates( $template ) {
if ( Vc_Grid_Item_Editor::postType() === WPBMap::getScope() ) {
$file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_button2.php' );
if ( is_file( $file ) ) {
return $file;
}
}
return $template;
}
/**
* Used by filter vc_shortcode_set_template_vc_single_image to set custom template for vc_single_image shortcode.
*
* @param $template
*
* @return string
*/
public function addVcSingleImageShortcodesTemplates( $template ) {
if ( Vc_Grid_Item_Editor::postType() === WPBMap::getScope() ) {
$file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_single_image.php' );
if ( is_file( $file ) ) {
return $file;
}
}
return $template;
}
/**
* Used by filter vc_shortcode_set_template_vc_custom_heading to set custom template for vc_custom_heading
* shortcode.
*
* @param $template
*
* @return string
*/
public function addVcCustomHeadingShortcodesTemplates( $template ) {
if ( Vc_Grid_Item_Editor::postType() === WPBMap::getScope() ) {
$file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_custom_heading.php' );
if ( is_file( $file ) ) {
return $file;
}
}
return $template;
}
/**
* Used by filter vc_shortcode_set_template_vc_button2 to set custom template for vc_button2 shortcode.
*
* @param $template
*
* @return string
*/
public function addVcBtnShortcodesTemplates( $template ) {
if ( Vc_Grid_Item_Editor::postType() === WPBMap::getScope() ) {
$file = vc_path_dir( 'TEMPLATES_DIR', 'params/vc_grid_item/shortcodes/vc_btn.php' );
if ( is_file( $file ) ) {
return $file;
}
}
return $template;
}
/**
* Map shortcodes for vc_grid_item param type.
* @throws \Exception
*/
public function mapShortcodes() {
// @kludge
// TODO: refactor with with new way of roles for shortcodes.
// NEW ROLES like post_type for shortcode and access policies.
$shortcodes = $this->shortcodes();
foreach ( $shortcodes as $shortcode_settings ) {
vc_map( $shortcode_settings );
}
}
/**
* Get list of predefined templates.
*
* @return bool|mixed
*/
public static function predefinedTemplates() {
if ( false === self::$predefined_templates ) {
self::$predefined_templates = apply_filters( 'vc_grid_item_predefined_templates', include vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/templates.php' ) );
}
return self::$predefined_templates;
}
/**
* @param $id - Predefined templates id
*
* @return array|bool
*/
public static function predefinedTemplate( $id ) {
$predefined_templates = self::predefinedTemplates();
if ( isset( $predefined_templates[ $id ]['template'] ) ) {
return $predefined_templates[ $id ];
}
return false;
}
/**
* Set template which should grid used when vc_grid_item param value is rendered.
*
* @param $id
*
* @return bool
* @throws \Exception
*/
public function setTemplateById( $id ) {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/templates.php' );
if ( 0 === strlen( $id ) ) {
return false;
}
if ( preg_match( '/^\d+$/', $id ) ) {
$post = get_post( (int) $id );
if ( $post ) {
$this->setTemplate( $post->post_content, $post->ID );
}
return true;
} else {
$predefined_template = $this->predefinedTemplate( $id );
if ( $predefined_template ) {
$this->setTemplate( $predefined_template['template'], $id );
return true;
}
}
return false;
}
/**
* Setter for template attribute.
*
* @param $template
* @param $template_id
* @throws \Exception
*/
public function setTemplate( $template, $template_id ) {
$this->template = $template;
$this->template_id = $template_id;
$this->parseTemplate( $template );
}
/**
* Getter for template attribute.
* @return string
*/
public function template() {
return $this->template;
}
/**
* Add custom css from shortcodes that were mapped for vc grid item.
* @return string
* @throws \Exception
*/
public function addShortcodesCustomCss() {
$output = $shortcodes_custom_css = '';
$id = $this->template_id;
if ( preg_match( '/^\d+$/', $id ) ) {
$shortcodes_custom_css = get_post_meta( $id, '_wpb_shortcodes_custom_css', true );
} else {
$predefined_template = $this->predefinedTemplate( $id );
if ( $predefined_template ) {
$shortcodes_custom_css = visual_composer()->parseShortcodesCustomCss( $predefined_template['template'] );
}
}
if ( ! empty( $shortcodes_custom_css ) ) {
$shortcodes_custom_css = wp_strip_all_tags( $shortcodes_custom_css );
$first_tag = 'style';
$output .= '<' . $first_tag . ' data-type="vc_shortcodes-custom-css">';
$output .= $shortcodes_custom_css;
$output .= '' . $first_tag . '>';
}
return $output;
}
/**
* Generates html with template's variables for rendering new project.
*
* @param $template
* @throws \Exception
*/
public function parseTemplate( $template ) {
$this->mapShortcodes();
WPBMap::addAllMappedShortcodes();
$attr = ' width="' . $this->gridAttribute( 'element_width', 12 ) . '"' . ' is_end="' . ( 'true' === $this->isEnd() ? 'true' : '' ) . '"';
$template = preg_replace( '/(\[(\[?)vc_gitem\b)/', '$1' . $attr, $template );
$template = str_replace( array(
'[vc_gitem',
'[/vc_gitem]
',
), array(
'[vc_gitem',
'[/vc_gitem]',
), $template );
$this->html_template .= do_shortcode( trim( $template ) );
}
/**
* Regexp for variables.
* @return string
*/
public function templateVariablesRegex() {
return '/\{\{' . '\{?' . '\s*' . '([^\}\:]+)(\:([^\}]+))?' . '\s*' . '\}\}' . '\}?/';
}
/**
* Get default variables.
*
* @return array|bool
*/
public function getTemplateVariables() {
if ( ! is_array( $this->found_variables ) ) {
preg_match_all( $this->templateVariablesRegex(), $this->html_template, $this->found_variables, PREG_SET_ORDER );
}
return $this->found_variables;
}
/**
* Render item by replacing template variables for exact post.
*
* @param WP_Post $post
*
* @return mixed
*/
public function renderItem( WP_Post $post ) {
$pattern = array();
$replacement = array();
$this->addAttributesFilters();
foreach ( $this->getTemplateVariables() as $var ) {
$pattern[] = '/' . preg_quote( $var[0], '/' ) . '/';
$replacement[] = preg_replace( '/\\$/', '\\\$', $this->attribute( $var[1], $post, isset( $var[3] ) ? trim( $var[3] ) : '' ) );
}
return preg_replace( $pattern, $replacement, do_shortcode( $this->html_template ) );
}
/**
* Adds filters to build templates variables values.
*/
public function addAttributesFilters() {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/attributes.php' );
}
/**
* Getter for Grid shortcode attributes.
*
* @param $grid_atts
*/
public function setGridAttributes( $grid_atts ) {
$this->grid_atts = $grid_atts;
}
/**
* Setter for Grid shortcode attributes.
*
* @param $name
* @param string $default
*
* @return string
*/
public function gridAttribute( $name, $default = '' ) {
return isset( $this->grid_atts[ $name ] ) ? $this->grid_atts[ $name ] : $default;
}
/**
* Get attribute value for WP_post object.
*
* @param $name
* @param $post
* @param string $data
*
* @return mixed
*/
public function attribute( $name, $post, $data = '' ) {
$data = html_entity_decode( $data );
return apply_filters( 'vc_gitem_template_attribute_' . trim( $name ), ( isset( $post->$name ) ? $post->$name : '' ), array(
'post' => $post,
'data' => $data,
) );
}
/**
* Set that this is last items in the grid. Used for load more button and lazy loading.
*
* @param bool $is_end
*/
public function setIsEnd( $is_end = true ) {
$this->is_end = $is_end;
}
/**
* Checks is the end.
* @return bool
*/
public function isEnd() {
return $this->is_end;
}
}
params/vc_grid_item/attributes.php 0000644 00000026513 15021217214 0013363 0 ustar 00 null,
), $data ) );
if ( isset( $post->filter_terms ) && is_array( $post->filter_terms ) ) {
foreach ( $post->filter_terms as $t ) {
$output .= ' vc_grid-term-' . $t; // @todo fix #106154391786878 $t is array
}
}
return $output;
}
/**
* Get image for post
*
* @param $data
* @return mixed|string
*/
function vc_gitem_template_attribute_post_image( $data ) {
/**
* @var null|Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
if ( 'attachment' === $post->post_type ) {
return wp_get_attachment_image( $post->ID, 'large' );
}
$html = get_the_post_thumbnail( $post->ID );
return apply_filters( 'vc_gitem_template_attribute_post_image_html', $html );
}
/**
* @param $value
* @param $data
* @return mixed
*/
function vc_gitem_template_attribute_featured_image( $value, $data ) {
/**
* @var Wp_Post $post
* @var string $data
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return vc_include_template( 'params/vc_grid_item/attributes/featured_image.php', array(
'post' => $post,
'data' => $data,
) );
}
/**
* Create new btn
*
* @param $value
* @param $data
*
* @return mixed
* @since 4.5
*
*/
function vc_gitem_template_attribute_vc_btn( $value, $data ) {
/**
* @var Wp_Post $post
* @var string $data
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return vc_include_template( 'params/vc_grid_item/attributes/vc_btn.php', array(
'post' => $post,
'data' => $data,
) );
}
/**
* Get post image url
*
* @param $value
* @param $data
*
* @return string
*/
function vc_gitem_template_attribute_post_image_url( $value, $data ) {
$output = '';
/**
* @var null|Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
$extraImageMeta = explode( ':', $data );
$size = 'large'; // default size
if ( isset( $extraImageMeta[1] ) ) {
$size = $extraImageMeta[1];
}
if ( 'attachment' === $post->post_type ) {
$src = vc_get_image_by_size( $post->ID, $size );
} else {
$attachment_id = get_post_thumbnail_id( $post->ID );
$src = vc_get_image_by_size( $attachment_id, $size );
}
if ( ! empty( $src ) ) {
$output = is_array( $src ) ? $src[0] : $src;
} else {
$output = vc_asset_url( 'vc/vc_gitem_image.png' );
}
return apply_filters( 'vc_gitem_template_attribute_post_image_url_value', $output );
}
/**
* Get post image url with href for a dom element
*
* @param $value
* @param $data
*
* @return string
*/
function vc_gitem_template_attribute_post_image_url_href( $value, $data ) {
$link = vc_gitem_template_attribute_post_image_url( $value, $data );
return strlen( $link ) ? ' href="' . esc_url( $link ) . '"' : '';
}
/**
* Add image url as href with css classes for PrettyPhoto js plugin.
*
* @param $value
* @param $data
*
* @return string
*/
function vc_gitem_template_attribute_post_image_url_attr_prettyphoto( $value, $data ) {
$data_default = $data;
/**
* @var Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
$href = vc_gitem_template_attribute_post_image_url_href( $value, array(
'post' => $post,
'data' => '',
) );
$rel = ' data-rel="' . esc_attr( 'prettyPhoto[rel-' . md5( vc_request_param( 'shortcode_id' ) ) . ']' ) . '"';
return $href . $rel . ' class="' . esc_attr( $data . ( strlen( $href ) ? ' prettyphoto' : '' ) ) . '" title="' . esc_attr( apply_filters( 'vc_gitem_template_attribute_post_title', $post->post_title, $data_default ) ) . '"';
}
/**
* Get post image alt
*
* @param $value
* @param $data
* @return string
*/
function vc_gitem_template_attribute_post_image_alt( $value, $data ) {
if ( empty( $data['post']->ID ) ) {
return '';
}
if ( 'attachment' === $data['post']->post_type ) {
$attachment_id = $data['post']->ID;
} else {
$attachment_id = get_post_thumbnail_id( $data['post']->ID );
}
if ( ! $attachment_id ) {
return '';
}
$alt = trim( wp_strip_all_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) );
return apply_filters( 'vc_gitem_template_attribute_post_image_url_value', $alt );
}
/**
* Get post image url
*
* @param $value
* @param $data
* @return string
*/
function vc_gitem_template_attribute_post_image_background_image_css( $value, $data ) {
$output = '';
/**
* @var null|Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
$size = 'large'; // default size
if ( ! empty( $data ) ) {
$size = $data;
}
if ( 'attachment' === $post->post_type ) {
$src = vc_get_image_by_size( $post->ID, $size );
} else {
$attachment_id = get_post_thumbnail_id( $post->ID );
$src = vc_get_image_by_size( $attachment_id, $size );
}
if ( ! empty( $src ) ) {
$output = 'background-image: url(\'' . ( is_array( $src ) ? $src[0] : $src ) . '\') !important;';
} else {
$output = 'background-image: url(\'' . vc_asset_url( 'vc/vc_gitem_image.png' ) . '\') !important;';
}
return apply_filters( 'vc_gitem_template_attribute_post_image_background_image_css_value', $output );
}
/**
* Get post link
*
* @param $value
* @param $data
* @return bool|string
*/
function vc_gitem_template_attribute_post_link_url( $value, $data ) {
/**
* @var null|Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
), $data ) );
return get_permalink( $post->ID );
}
/**
* Get post date
*
* @param $value
* @param $data
* @return bool|int|string
*/
function vc_gitem_template_attribute_post_date( $value, $data ) {
/**
* @var null|Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
), $data ) );
return get_the_date( '', $post->ID );
}
/**
* Get post date time
*
* @param $value
* @param $data
* @return bool|int|string
*/
function vc_gitem_template_attribute_post_datetime( $value, $data ) {
/**
* @var null|Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
), $data ) );
return get_the_time( 'F j, Y g:i', $post->ID );
}
/**
* Get custom fields.
*
* @param $value
* @param $data
* @return mixed|string
*/
function vc_gitem_template_attribute_post_meta_value( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return strlen( $data ) > 0 ? get_post_meta( $post->ID, $data, true ) : $value;
}
/**
* Get post data. Used as wrapper for others post data attributes.
*
* @param $value
* @param $data
* @return mixed|string
*/
function vc_gitem_template_attribute_post_data( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return strlen( $data ) > 0 ? apply_filters( 'vc_gitem_template_attribute_' . $data, ( isset( $post->$data ) ? $post->$data : '' ), array(
'post' => $post,
'data' => '',
) ) : $value;
}
/**
* Get post excerpt. Used as wrapper for others post data attributes.
*
* @param $value
* @param $data
* @return mixed|string
*/
function vc_gitem_template_attribute_post_excerpt( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return apply_filters( 'the_excerpt', apply_filters( 'get_the_excerpt', $value ) );
}
/**
* Get post excerpt. Used as wrapper for others post data attributes.
*
* @param $value
* @param $data
* @return mixed|string
*/
function vc_gitem_template_attribute_post_title( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return the_title( '', '', false );
}
/**
* @param $value
* @param $data
* @return string|null
*/
function vc_gitem_template_attribute_post_author( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return get_the_author();
}
/**
* @param $value
* @param $data
* @return string
*/
function vc_gitem_template_attribute_post_author_href( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
return get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) );
}
/**
* @param $value
* @param $data
* @return mixed
*/
function vc_gitem_template_attribute_post_categories( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
$atts_extended = array();
parse_str( $data, $atts_extended );
return vc_include_template( 'params/vc_grid_item/attributes/post_categories.php', array(
'post' => $post,
'atts' => $atts_extended['atts'],
) );
}
/**
* Adding filters to parse grid template.
*/
add_filter( 'vc_gitem_template_attribute_filter_terms_css_classes', 'vc_gitem_template_attribute_filter_terms_css_classes', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_image', 'vc_gitem_template_attribute_post_image', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_image_url', 'vc_gitem_template_attribute_post_image_url', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_image_url_href', 'vc_gitem_template_attribute_post_image_url_href', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_image_url_attr_prettyphoto', 'vc_gitem_template_attribute_post_image_url_attr_prettyphoto', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_image_alt', 'vc_gitem_template_attribute_post_image_alt', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_link_url', 'vc_gitem_template_attribute_post_link_url', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_date', 'vc_gitem_template_attribute_post_date', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_datetime', 'vc_gitem_template_attribute_post_datetime', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_meta_value', 'vc_gitem_template_attribute_post_meta_value', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_data', 'vc_gitem_template_attribute_post_data', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_image_background_image_css', 'vc_gitem_template_attribute_post_image_background_image_css', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_excerpt', 'vc_gitem_template_attribute_post_excerpt', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_title', 'vc_gitem_template_attribute_post_title', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_author', 'vc_gitem_template_attribute_post_author', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_author_href', 'vc_gitem_template_attribute_post_author_href', 10, 2 );
add_filter( 'vc_gitem_template_attribute_post_categories', 'vc_gitem_template_attribute_post_categories', 10, 2 );
add_filter( 'vc_gitem_template_attribute_featured_image', 'vc_gitem_template_attribute_featured_image', 10, 2 );
add_filter( 'vc_gitem_template_attribute_vc_btn', 'vc_gitem_template_attribute_vc_btn', 10, 2 );
helpers/helpers_api.php 0000644 00000051310 15021217214 0011205 0 ustar 00 setIsAsTheme( true );
}
}
if ( ! function_exists( 'vc_is_as_theme' ) ) {
/**
* Is VC as-theme-plugin.
* @return bool
* @since 4.2
*/
function vc_is_as_theme() {
return vc_manager()->isAsTheme();
}
}
if ( ! function_exists( 'vc_is_updater_disabled' ) ) {
/**
* @return bool
* @since 4.2
*/
function vc_is_updater_disabled() {
return vc_manager()->isUpdaterDisabled();
}
}
if ( ! function_exists( 'vc_default_editor_post_types' ) ) {
/**
* Returns list of default post type.
* @return array
* @since 4.2
*/
function vc_default_editor_post_types() {
return vc_manager()->editorDefaultPostTypes();
}
}
if ( ! function_exists( 'vc_set_default_editor_post_types' ) ) {
/**
* Set post types for VC editor.
* @param array $list - list of valid post types to set
* @since 4.2
*
*/
function vc_set_default_editor_post_types( array $list ) {
vc_manager()->setEditorDefaultPostTypes( $list );
}
}
if ( ! function_exists( ( 'vc_editor_post_types' ) ) ) {
/**
* Returns list of post types where VC editor is enabled.
* @return array
* @since 4.2
*/
function vc_editor_post_types() {
return vc_manager()->editorPostTypes();
}
}
if ( ! function_exists( ( 'vc_editor_set_post_types' ) ) ) {
/**
* Set list of post types where VC editor is enabled.
* @param array $post_types
* @throws \Exception
* @since 4.4
*
*/
function vc_editor_set_post_types( array $post_types ) {
vc_manager()->setEditorPostTypes( $post_types );
}
}
if ( ! function_exists( 'vc_mode' ) ) {
/**
* Return current VC mode.
* @return string
* @see Vc_Mapper::$mode
* @since 4.2
*/
function vc_mode() {
return vc_manager()->mode();
}
}
if ( ! function_exists( 'vc_set_shortcodes_templates_dir' ) ) {
/**
* Sets directory where WPBakery Page Builder should look for template files for content elements.
* @param string - full directory path to new template directory with trailing slash
* @since 4.2
*
*/
function vc_set_shortcodes_templates_dir( $dir ) {
vc_manager()->setCustomUserShortcodesTemplateDir( $dir );
}
}
if ( ! function_exists( 'vc_shortcodes_theme_templates_dir' ) ) {
/**
* Get custom theme template path
* @param $template - filename for template
*
* @return string
* @since 4.2
*
*/
function vc_shortcodes_theme_templates_dir( $template ) {
return vc_manager()->getShortcodesTemplateDir( $template );
}
}
/**
* @param bool $value
*
* @todo check usage.
*
* @since 4.3
*/
function set_vc_is_inline( $value = true ) {
_deprecated_function( 'set_vc_is_inline', '5.2 (will be removed in 5.3)' );
global $vc_is_inline;
$vc_is_inline = $value;
}
/**
* Disable frontend editor for VC
* @param bool $disable
* @since 4.3
*
*/
function vc_disable_frontend( $disable = true ) {
vc_frontend_editor()->disableInline( $disable );
}
/**
* Check is front end enabled.
* @return bool
* @throws \Exception
* @since 4.3
*/
function vc_enabled_frontend() {
return vc_frontend_editor()->frontendEditorEnabled();
}
if ( ! function_exists( 'vc_add_default_templates' ) ) {
/**
* Add custom template in default templates list
*
* @param array $data | template data (name, content, custom_class, image_path)
*
* @return bool
* @since 4.3
*/
function vc_add_default_templates( $data ) {
return visual_composer()->templatesPanelEditor()->addDefaultTemplates( $data );
}
}
/**
* @param $shortcode
* @param string $field_prefix
* @param string $group_prefix
* @param null $change_fields
* @param null $dependency
* @return array
* @throws \Exception
*/
function vc_map_integrate_shortcode( $shortcode, $field_prefix = '', $group_prefix = '', $change_fields = null, $dependency = null ) {
if ( is_string( $shortcode ) ) {
$shortcode_data = WPBMap::getShortCode( $shortcode );
} else {
$shortcode_data = $shortcode;
}
if ( is_array( $shortcode_data ) && ! empty( $shortcode_data ) ) {
/**
* @var WPBakeryShortCodeFishBones $shortcode
*/
$params = isset( $shortcode_data['params'] ) && ! empty( $shortcode_data['params'] ) ? $shortcode_data['params'] : false;
if ( is_array( $params ) && ! empty( $params ) ) {
$keys = array_keys( $params );
$count = count( $keys );
for ( $i = 0; $i < $count; $i ++ ) {
$param = &$params[ $keys[ $i ] ]; // Note! passed by reference to automatically update data
if ( isset( $change_fields ) ) {
$param = vc_map_integrate_include_exclude_fields( $param, $change_fields );
if ( empty( $param ) ) {
continue;
}
}
if ( ! empty( $group_prefix ) ) {
if ( isset( $param['group'] ) ) {
$param['group'] = $group_prefix . ': ' . $param['group'];
} else {
$param['group'] = $group_prefix;
}
}
if ( ! empty( $field_prefix ) && isset( $param['param_name'] ) ) {
$param['param_name'] = $field_prefix . $param['param_name'];
if ( isset( $param['dependency'] ) && is_array( $param['dependency'] ) && isset( $param['dependency']['element'] ) ) {
$param['dependency']['element'] = $field_prefix . $param['dependency']['element'];
}
$param = vc_map_integrate_add_dependency( $param, $dependency );
} elseif ( ! empty( $dependency ) ) {
$param = vc_map_integrate_add_dependency( $param, $dependency );
}
$param['integrated_shortcode'] = is_array( $shortcode ) ? $shortcode['base'] : $shortcode;
$param['integrated_shortcode_field'] = $field_prefix;
}
}
return is_array( $params ) ? array_filter( $params ) : array();
}
return array();
}
/**
* Used to filter params (include/exclude)
*
* @param $param
* @param $change_fields
*
* @return array|null
* @internal
*
*/
function vc_map_integrate_include_exclude_fields( $param, $change_fields ) {
if ( is_array( $change_fields ) ) {
if ( isset( $change_fields['exclude'] ) && in_array( $param['param_name'], $change_fields['exclude'], true ) ) {
$param = null;
return $param; // to prevent group adding to $param
} elseif ( isset( $change_fields['exclude_regex'] ) ) {
if ( is_array( $change_fields['exclude_regex'] ) && ! empty( $change_fields['exclude_regex'] ) ) {
$break_foreach = false;
foreach ( $change_fields['exclude_regex'] as $regex ) {
/** @noinspection PhpUsageOfSilenceOperatorInspection */
// @codingStandardsIgnoreLine
if ( @preg_match( $regex, null ) ) {
if ( preg_match( $regex, $param['param_name'] ) ) {
$param = null;
$break_foreach = true;
}
}
if ( $break_foreach ) {
break;
}
}
if ( $break_foreach ) {
return $param; // to prevent group adding to $param
}
} elseif ( is_string( $change_fields['exclude_regex'] ) && strlen( $change_fields['exclude_regex'] ) > 0 ) {
/** @noinspection PhpUsageOfSilenceOperatorInspection */
// @codingStandardsIgnoreLine
if ( @preg_match( $change_fields['exclude_regex'], null ) ) {
if ( preg_match( $change_fields['exclude_regex'], $param['param_name'] ) ) {
$param = null;
return $param; // to prevent group adding to $param
}
}
}
}
if ( isset( $change_fields['include_only'] ) && ! in_array( $param['param_name'], $change_fields['include_only'], true ) ) {
// if we want to enclude only some fields
$param = null;
return $param; // to prevent group adding to $param
} elseif ( isset( $change_fields['include_only_regex'] ) ) {
if ( is_array( $change_fields['include_only_regex'] ) && ! empty( $change_fields['include_only_regex'] ) ) {
$break_foreach = false;
foreach ( $change_fields['include_only_regex'] as $regex ) {
/** @noinspection PhpUsageOfSilenceOperatorInspection */
// @codingStandardsIgnoreLine
if ( false === @preg_match( $regex, null ) ) {
// Regular expression is invalid, (don't remove @).
} else {
if ( ! preg_match( $regex, $param['param_name'] ) ) {
$param = null;
$break_foreach = true;
}
}
if ( $break_foreach ) {
break;
}
}
if ( $break_foreach ) {
return $param; // to prevent group adding to $param
}
} elseif ( is_string( $change_fields['include_only_regex'] ) && strlen( $change_fields['include_only_regex'] ) > 0 ) {
/** @noinspection PhpUsageOfSilenceOperatorInspection */
// @codingStandardsIgnoreLine
if ( false === @preg_match( $change_fields['include_only_regex'], null ) ) {
// Regular expression is invalid, (don't remove @).
} else {
if ( ! preg_match( $change_fields['include_only_regex'], $param['param_name'] ) ) {
$param = null;
return $param; // to prevent group adding to $param
}
}
}
}
}
return $param;
}
/**
* @param $param
* @param $dependency
*
* @return array
* @internal used to add dependency to existed param
*
*/
function vc_map_integrate_add_dependency( $param, $dependency ) {
// activator must be used for all elements who doesn't have 'dependency'
if ( ! empty( $dependency ) && ( ! isset( $param['dependency'] ) || empty( $param['dependency'] ) ) ) {
if ( is_array( $dependency ) ) {
$param['dependency'] = $dependency;
}
}
return $param;
}
/**
* @param $base_shortcode
* @param $integrated_shortcode
* @param string $field_prefix
* @return array
* @throws \Exception
*/
function vc_map_integrate_get_params( $base_shortcode, $integrated_shortcode, $field_prefix = '' ) {
$shortcode_data = WPBMap::getShortCode( $base_shortcode );
$params = array();
if ( is_array( $shortcode_data ) && is_array( $shortcode_data['params'] ) && ! empty( $shortcode_data['params'] ) ) {
foreach ( $shortcode_data['params'] as $param ) {
if ( is_array( $param ) && isset( $param['integrated_shortcode'] ) && $integrated_shortcode === $param['integrated_shortcode'] ) {
if ( ! empty( $field_prefix ) ) {
if ( isset( $param['integrated_shortcode_field'] ) && $field_prefix === $param['integrated_shortcode_field'] ) {
$params[] = $param;
}
} else {
$params[] = $param;
}
}
}
}
return $params;
}
/**
* @param $base_shortcode
* @param $integrated_shortcode
* @param string $field_prefix
* @return array
* @throws \Exception
*/
function vc_map_integrate_get_atts( $base_shortcode, $integrated_shortcode, $field_prefix = '' ) {
$params = vc_map_integrate_get_params( $base_shortcode, $integrated_shortcode, $field_prefix );
$atts = array();
if ( is_array( $params ) && ! empty( $params ) ) {
foreach ( $params as $param ) {
$value = '';
if ( isset( $param['value'] ) ) {
if ( isset( $param['std'] ) ) {
$value = $param['std'];
} elseif ( is_array( $param['value'] ) ) {
reset( $param['value'] );
$value = current( $param['value'] );
} else {
$value = $param['value'];
}
}
$atts[ $param['param_name'] ] = $value;
}
}
return $atts;
}
/**
* @param $base_shortcode
* @param $integrated_shortcode
* @param $atts
* @param string $field_prefix
* @return array
* @throws \Exception
*/
function vc_map_integrate_parse_atts( $base_shortcode, $integrated_shortcode, $atts, $field_prefix = '' ) {
$params = vc_map_integrate_get_params( $base_shortcode, $integrated_shortcode, $field_prefix );
$data = array();
if ( is_array( $params ) && ! empty( $params ) ) {
foreach ( $params as $param ) {
if ( isset( $atts[ $param['param_name'] ] ) ) {
$value = $atts[ $param['param_name'] ];
}
if ( isset( $value ) ) {
$key = $param['param_name'];
if ( strlen( $field_prefix ) > 0 ) {
$key = substr( $key, strlen( $field_prefix ) );
}
$data[ $key ] = $value;
}
}
}
return $data;
}
/**
* @param bool $label
* @return mixed|void
*/
function vc_map_add_css_animation( $label = true ) {
$data = array(
'type' => 'animation_style',
'heading' => esc_html__( 'CSS Animation', 'js_composer' ),
'param_name' => 'css_animation',
'admin_label' => $label,
'value' => '',
'settings' => array(
'type' => 'in',
'custom' => array(
array(
'label' => esc_html__( 'Default', 'js_composer' ),
'values' => array(
esc_html__( 'Top to bottom', 'js_composer' ) => 'top-to-bottom',
esc_html__( 'Bottom to top', 'js_composer' ) => 'bottom-to-top',
esc_html__( 'Left to right', 'js_composer' ) => 'left-to-right',
esc_html__( 'Right to left', 'js_composer' ) => 'right-to-left',
esc_html__( 'Appear from center', 'js_composer' ) => 'appear',
),
),
),
),
'description' => esc_html__( 'Select type of animation for element to be animated when it "enters" the browsers viewport (Note: works only in modern browsers).', 'js_composer' ),
);
return apply_filters( 'vc_map_add_css_animation', $data, $label );
}
/**
* Get settings of the mapped shortcode.
*
* @param $tag
*
* @return array|null - settings or null if shortcode not mapped
* @throws \Exception
* @since 4.4.3
*/
function vc_get_shortcode( $tag ) {
return WPBMap::getShortCode( $tag );
}
/**
* Remove all mapped shortcodes and the moment when function is called.
*
* @since 4.5
*/
function vc_remove_all_elements() {
WPBMap::dropAllShortcodes();
}
/**
* Function to get defaults values for shortcode.
* @param $tag - shortcode tag
*
* @return array - list of param=>default_value
* @throws \Exception
* @since 4.6
*
*/
function vc_map_get_defaults( $tag ) {
$shortcode = vc_get_shortcode( $tag );
$params = array();
if ( is_array( $shortcode ) && isset( $shortcode['params'] ) && ! empty( $shortcode['params'] ) ) {
$params = vc_map_get_params_defaults( $shortcode['params'] );
}
return $params;
}
/**
* @param $params
*
* @return array
* @since 4.12
*/
function vc_map_get_params_defaults( $params ) {
$resultParams = array();
foreach ( $params as $param ) {
if ( isset( $param['param_name'] ) && 'content' !== $param['param_name'] ) {
$value = '';
if ( isset( $param['std'] ) ) {
$value = $param['std'];
} elseif ( isset( $param['value'] ) ) {
if ( is_array( $param['value'] ) ) {
$value = current( $param['value'] );
if ( is_array( $value ) ) {
// in case if two-dimensional array provided (vc_basic_grid)
$value = current( $value );
}
// return first value from array (by default)
} else {
$value = $param['value'];
}
}
$resultParams[ $param['param_name'] ] = apply_filters( 'vc_map_get_param_defaults', $value, $param );
}
}
return $resultParams;
}
/**
* @param $tag - shortcode tag3
* @param array $atts - shortcode attributes
*
* @return array - return merged values with provided attributes (
* 'a'=>1,'b'=>2 + 'b'=>3,'c'=>4 --> 'a'=>1,'b'=>3 )
*
* @throws \Exception
* @see vc_shortcode_attribute_parse - return union of provided attributes (
* 'a'=>1,'b'=>2 + 'b'=>3,'c'=>4 --> 'a'=>1,
* 'b'=>3, 'c'=>4 )
*/
function vc_map_get_attributes( $tag, $atts = array() ) {
$atts = shortcode_atts( vc_map_get_defaults( $tag ), $atts, $tag );
return apply_filters( 'vc_map_get_attributes', $atts, $tag );
}
/**
* @param $name
* @return mixed|string
*/
function vc_convert_vc_color( $name ) {
$colors = array(
'blue' => '#5472d2',
'turquoise' => '#00c1cf',
'pink' => '#fe6c61',
'violet' => '#8d6dc4',
'peacoc' => '#4cadc9',
'chino' => '#cec2ab',
'mulled-wine' => '#50485b',
'vista-blue' => '#75d69c',
'orange' => '#f7be68',
'sky' => '#5aa1e3',
'green' => '#6dab3c',
'juicy-pink' => '#f4524d',
'sandy-brown' => '#f79468',
'purple' => '#b97ebb',
'black' => '#2a2a2a',
'grey' => '#ebebeb',
'white' => '#ffffff',
);
$name = str_replace( '_', '-', $name );
if ( isset( $colors[ $name ] ) ) {
return $colors[ $name ];
}
return '';
}
/**
* Extract width/height from string
*
* @param string $dimensions WxH
*
* @return mixed array(width, height) or false
* @since 4.7
*
*/
function vc_extract_dimensions( $dimensions ) {
$dimensions = str_replace( ' ', '', $dimensions );
$matches = null;
if ( preg_match( '/(\d+)x(\d+)/', $dimensions, $matches ) ) {
return array(
$matches[1],
$matches[2],
);
}
return false;
}
/**
* @param string $asset
*
* @return array|string
*/
function vc_get_shared( $asset = '' ) {
switch ( $asset ) {
case 'colors':
$asset = VcSharedLibrary::getColors();
break;
case 'colors-dashed':
$asset = VcSharedLibrary::getColorsDashed();
break;
case 'icons':
$asset = VcSharedLibrary::getIcons();
break;
case 'sizes':
$asset = VcSharedLibrary::getSizes();
break;
case 'button styles':
case 'alert styles':
$asset = VcSharedLibrary::getButtonStyles();
break;
case 'message_box_styles':
$asset = VcSharedLibrary::getMessageBoxStyles();
break;
case 'cta styles':
$asset = VcSharedLibrary::getCtaStyles();
break;
case 'text align':
$asset = VcSharedLibrary::getTextAlign();
break;
case 'cta widths':
case 'separator widths':
$asset = VcSharedLibrary::getElementWidths();
break;
case 'separator styles':
$asset = VcSharedLibrary::getSeparatorStyles();
break;
case 'separator border widths':
$asset = VcSharedLibrary::getBorderWidths();
break;
case 'single image styles':
$asset = VcSharedLibrary::getBoxStyles();
break;
case 'single image external styles':
$asset = VcSharedLibrary::getBoxStyles( array(
'default',
'round',
) );
break;
case 'toggle styles':
$asset = VcSharedLibrary::getToggleStyles();
break;
case 'animation styles':
$asset = VcSharedLibrary::getAnimationStyles();
break;
}
return $asset;
}
/**
* Helper function to register new shortcode attribute hook.
*
* @param $name - attribute name
* @param $form_field_callback - hook, will be called when settings form is shown and attribute added to shortcode
* param list
* @param $script_url - javascript file url which will be attached at the end of settings form.
*
* @return bool
* @since 4.4
*/
function vc_add_shortcode_param( $name, $form_field_callback, $script_url = null ) {
return WpbakeryShortcodeParams::addField( $name, $form_field_callback, $script_url );
}
/**
* Call hook for attribute.
*
* @param $name - attribute name
* @param $param_settings - attribute settings from shortcode
* @param $param_value - attribute value
* @param $tag - attribute tag
*
* @return mixed|string - returns html which will be render in hook
* @since 4.4
*/
function vc_do_shortcode_param_settings_field( $name, $param_settings, $param_value, $tag ) {
return WpbakeryShortcodeParams::renderSettingsField( $name, $param_settings, $param_value, $tag );
}
helpers/class-vc-image-filter.php 0000644 00000016573 15021217214 0013004 0 ustar 00 image = $image;
}
/**
* Get the current image resource
*
* @return resource
*/
public function getImage() {
return $this->image;
}
public function sepia() {
imagefilter( $this->image, IMG_FILTER_GRAYSCALE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 100, 50, 0 );
return $this;
}
public function sepia2() {
imagefilter( $this->image, IMG_FILTER_GRAYSCALE );
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, - 10 );
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 20 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 60, 30, - 15 );
return $this;
}
public function sharpen() {
$gaussian = array(
array(
1.0,
1.0,
1.0,
),
array(
1.0,
- 7.0,
1.0,
),
array(
1.0,
1.0,
1.0,
),
);
imageconvolution( $this->image, $gaussian, 1, 4 );
return $this;
}
public function emboss() {
$gaussian = array(
array(
- 2.0,
- 1.0,
0.0,
),
array(
- 1.0,
1.0,
1.0,
),
array(
0.0,
1.0,
2.0,
),
);
imageconvolution( $this->image, $gaussian, 1, 5 );
return $this;
}
public function cool() {
imagefilter( $this->image, IMG_FILTER_MEAN_REMOVAL );
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 50 );
return $this;
}
public function light() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, 10 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 100, 50, 0, 10 );
return $this;
}
public function aqua() {
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 70, 0, 30 );
return $this;
}
public function fuzzy() {
$gaussian = array(
array(
1.0,
1.0,
1.0,
),
array(
1.0,
1.0,
1.0,
),
array(
1.0,
1.0,
1.0,
),
);
imageconvolution( $this->image, $gaussian, 9, 20 );
return $this;
}
public function boost() {
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 35 );
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, 10 );
return $this;
}
public function gray() {
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 60 );
imagefilter( $this->image, IMG_FILTER_GRAYSCALE );
return $this;
}
public function antique() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, 0 );
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 30 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 75, 50, 25 );
return $this;
}
public function blackwhite() {
imagefilter( $this->image, IMG_FILTER_GRAYSCALE );
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, 10 );
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 20 );
return $this;
}
public function boost2() {
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 35 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 25, 25, 25 );
return $this;
}
public function blur() {
imagefilter( $this->image, IMG_FILTER_SELECTIVE_BLUR );
imagefilter( $this->image, IMG_FILTER_GAUSSIAN_BLUR );
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 15 );
imagefilter( $this->image, IMG_FILTER_SMOOTH, - 2 );
return $this;
}
public function vintage() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, 10 );
imagefilter( $this->image, IMG_FILTER_GRAYSCALE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 40, 10, - 15 );
return $this;
}
public function concentrate() {
imagefilter( $this->image, IMG_FILTER_GAUSSIAN_BLUR );
imagefilter( $this->image, IMG_FILTER_SMOOTH, - 10 );
return $this;
}
public function hermajesty() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, - 10 );
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 5 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 80, 0, 60 );
return $this;
}
public function everglow() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, - 30 );
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 5 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 30, 30, 0 );
return $this;
}
public function freshblue() {
imagefilter( $this->image, IMG_FILTER_CONTRAST, - 5 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 20, 0, 80, 60 );
return $this;
}
public function tender() {
imagefilter( $this->image, IMG_FILTER_CONTRAST, 5 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 80, 20, 40, 50 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 40, 40, 100 );
imagefilter( $this->image, IMG_FILTER_SELECTIVE_BLUR );
return $this;
}
public function dream() {
imagefilter( $this->image, IMG_FILTER_COLORIZE, 150, 0, 0, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 50, 0, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_GAUSSIAN_BLUR );
return $this;
}
public function frozen() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, - 15 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 0, 100, 50 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 0, 100, 50 );
imagefilter( $this->image, IMG_FILTER_GAUSSIAN_BLUR );
return $this;
}
public function forest() {
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 0, 150, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 0, 150, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_SMOOTH, 10 );
return $this;
}
public function rain() {
imagefilter( $this->image, IMG_FILTER_GAUSSIAN_BLUR );
imagefilter( $this->image, IMG_FILTER_MEAN_REMOVAL );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 80, 50, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_SMOOTH, 10 );
return $this;
}
public function orangepeel() {
imagefilter( $this->image, IMG_FILTER_COLORIZE, 100, 20, - 50, 20 );
imagefilter( $this->image, IMG_FILTER_SMOOTH, 10 );
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, - 10 );
imagefilter( $this->image, IMG_FILTER_CONTRAST, 10 );
imagegammacorrect( $this->image, 1, 1.2 );
return $this;
}
public function darken() {
imagefilter( $this->image, IMG_FILTER_GRAYSCALE );
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, - 50 );
return $this;
}
public function summer() {
imagefilter( $this->image, IMG_FILTER_COLORIZE, 0, 150, 0, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 25, 50, 0, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
return $this;
}
public function retro() {
imagefilter( $this->image, IMG_FILTER_GRAYSCALE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 100, 25, 25, 50 );
return $this;
}
public function country() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, - 30 );
imagefilter( $this->image, IMG_FILTER_COLORIZE, 50, 50, 50, 50 );
imagegammacorrect( $this->image, 1, 0.3 );
return $this;
}
public function washed() {
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, 30 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_COLORIZE, - 50, 0, 20, 50 );
imagefilter( $this->image, IMG_FILTER_NEGATE );
imagefilter( $this->image, IMG_FILTER_BRIGHTNESS, 10 );
imagegammacorrect( $this->image, 1, 1.2 );
return $this;
}
}
helpers/class-vc-color-helper.php 0000644 00000026660 15021217214 0013030 0 ustar 00
* Info: http://mexitek.github.io/phpColors/
* License: http://arlo.mit-license.org/
*
* @modified by js_composer
* @since 4.8
*/
class Vc_Color_Helper {
/**
* A color utility that helps manipulate HEX colors
* @var string
*/
private $hex;
private $hsl;
private $rgb;
/**
* Auto darkens/lightens by 10% for sexily-subtle gradients.
* Set this to FALSE to adjust automatic shade to be between given color
* and black (for darken) or white (for lighten)
*/
const DEFAULT_ADJUST = 10;
/**
* Instantiates the class with a HEX value
*
* @param string $hex
*
* @throws Exception "Bad color format".
*/
public function __construct( $hex ) {
// Strip # sign is present
$color = str_replace( '#', '', $hex );
// Make sure it's 6 digits
if ( strlen( $color ) === 3 ) {
$color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2];
} elseif ( strlen( $color ) !== 6 ) {
throw new Exception( 'HEX color needs to be 6 or 3 digits long' );
}
$this->hsl = self::hexToHsl( $color );
$this->hex = $color;
$this->rgb = self::hexToRgb( $color );
}
/**
* @param $val
* @param int $max
* @return mixed
*/
public static function clamp( $val, $max = 1 ) {
return min( max( $val, 0 ), $max );
}
// ====================
// = Public Interface =
// ====================
/**
* Given a HEX string returns a HSL array equivalent.
*
* @param string $color
*
* @return array HSL associative array
* @throws \Exception
*/
public static function hexToHsl( $color ) {
// Sanity check
$color = self::check_hex_private( $color );
// Convert HEX to DEC
$R = hexdec( $color[0] . $color[1] );
$G = hexdec( $color[2] . $color[3] );
$B = hexdec( $color[4] . $color[5] );
$HSL = array();
$var_R = ( $R / 255.0 );
$var_G = ( $G / 255.0 );
$var_B = ( $B / 255.0 );
$var_Min = min( $var_R, $var_G, $var_B );
$var_Max = max( $var_R, $var_G, $var_B );
$del_Max = floatval( $var_Max - $var_Min );
$L = ( $var_Max + $var_Min ) / 2.0;
$H = 0.0;
$S = 0.0;
if ( $del_Max > 0 ) {
if ( $L < 0.5 ) {
$S = $del_Max / ( $var_Max + $var_Min );
} else {
$S = $del_Max / ( 2 - $var_Max - $var_Min );
}
switch ( $var_Max ) {
case $var_R:
$H = ( $var_G - $var_B ) / $del_Max + ( $var_G < $var_B ? 6 : 0 );
break;
case $var_G:
$H = ( $var_B - $var_R ) / $del_Max + 2;
break;
case $var_B:
$H = ( $var_R - $var_G ) / $del_Max + 4;
break;
}
$H /= 6;
}
$HSL['H'] = ( $H * 360.0 );
$HSL['S'] = $S;
$HSL['L'] = $L;
return $HSL;
}
/**
* Given a HSL associative array returns the equivalent HEX string
*
* @param array $hsl
*
* @return string HEX string
* @throws Exception "Bad HSL Array".
*/
public static function hslToHex( $hsl = array() ) {
// Make sure it's HSL
if ( empty( $hsl ) || ! isset( $hsl['H'] ) || ! isset( $hsl['S'] ) || ! isset( $hsl['L'] ) ) {
throw new Exception( 'Param was not an HSL array' );
}
list( $H, $S, $L ) = array(
fmod( $hsl['H'], 360 ) / 360.0,
$hsl['S'],
$hsl['L'],
);
if ( ! $S ) {
$r = $L * 255.0;
$g = $L * 255.0;
$b = $L * 255.0;
} else {
if ( $L < 0.5 ) {
$var_2 = $L * ( 1.0 + $S );
} else {
$var_2 = ( $L + $S ) - ( $S * $L );
}
$var_1 = 2.0 * $L - $var_2;
$r = self::clamp( round( 255.0 * self::huetorgb_private( $var_1, $var_2, $H + ( 1 / 3 ) ) ), 255 );
$g = self::clamp( round( 255.0 * self::huetorgb_private( $var_1, $var_2, $H ) ), 255 );
$b = self::clamp( round( 255.0 * self::huetorgb_private( $var_1, $var_2, $H - ( 1 / 3 ) ) ), 255 );
}
// Convert to hex
$r = dechex( $r );
$g = dechex( $g );
$b = dechex( $b );
// Make sure we get 2 digits for decimals
$r = ( strlen( '' . $r ) === 1 ) ? '0' . $r : $r;
$g = ( strlen( '' . $g ) === 1 ) ? '0' . $g : $g;
$b = ( strlen( '' . $b ) === 1 ) ? '0' . $b : $b;
return $r . $g . $b;
}
/**
* Given a HEX string returns a RGB array equivalent.
*
* @param string $color
*
* @return array RGB associative array
* @throws \Exception
*/
public static function hexToRgb( $color ) {
// Sanity check
$color = self::check_hex_private( $color );
// Convert HEX to DEC
$R = hexdec( $color[0] . $color[1] );
$G = hexdec( $color[2] . $color[3] );
$B = hexdec( $color[4] . $color[5] );
$RGB['R'] = $R;
$RGB['G'] = $G;
$RGB['B'] = $B;
return $RGB;
}
/**
* Given an RGB associative array returns the equivalent HEX string
*
* @param array $rgb
*
* @return string RGB string
* @throws Exception "Bad RGB Array".
*/
public static function rgbToHex( $rgb = array() ) {
// Make sure it's RGB
if ( empty( $rgb ) || ! isset( $rgb['R'] ) || ! isset( $rgb['G'] ) || ! isset( $rgb['B'] ) ) {
throw new Exception( 'Param was not an RGB array' );
}
// Convert RGB to HEX
$hex[0] = dechex( $rgb['R'] );
if ( 1 === strlen( $hex[0] ) ) {
$hex[0] .= $hex[0];
}
$hex[1] = dechex( $rgb['G'] );
if ( 1 === strlen( $hex[1] ) ) {
$hex[1] .= $hex[1];
}
$hex[2] = dechex( $rgb['B'] );
if ( 1 === strlen( $hex[2] ) ) {
$hex[2] .= $hex[2];
}
return implode( '', $hex );
}
/**
* Given a HEX value, returns a darker color. If no desired amount provided, then the color halfway between
* given HEX and black will be returned.
*
* @param int $amount
*
* @return string Darker HEX value
* @throws \Exception
*/
public function darken( $amount = self::DEFAULT_ADJUST ) {
// Darken
$darkerHSL = $this->darken_private( $this->hsl, $amount );
// Return as HEX
return self::hslToHex( $darkerHSL );
}
/**
* Given a HEX value, returns a lighter color. If no desired amount provided, then the color halfway between
* given HEX and white will be returned.
*
* @param int $amount
*
* @return string Lighter HEX value
* @throws \Exception.
*/
public function lighten( $amount = self::DEFAULT_ADJUST ) {
// Lighten
$lighterHSL = $this->lighten_private( $this->hsl, $amount );
// Return as HEX
return self::hslToHex( $lighterHSL );
}
/**
* Given a HEX value, returns a mixed color. If no desired amount provided, then the color mixed by this ratio
*
* @param string $hex2 Secondary HEX value to mix with
* @param int $amount = -100..0..+100
*
* @return string mixed HEX value
* @throws \Exception
*/
public function mix( $hex2, $amount = 0 ) {
$rgb2 = self::hexToRgb( $hex2 );
$mixed = $this->mix_private( $this->rgb, $rgb2, $amount );
// Return as HEX
return self::rgbToHex( $mixed );
}
/**
* Creates an array with two shades that can be used to make a gradient
*
* @param int $amount Optional percentage amount you want your contrast color
*
* @return array An array with a 'light' and 'dark' index
* @throws \Exception
*/
public function makeGradient( $amount = self::DEFAULT_ADJUST ) {
// Decide which color needs to be made
if ( $this->isLight() ) {
$lightColor = $this->hex;
$darkColor = $this->darken( $amount );
} else {
$lightColor = $this->lighten( $amount );
$darkColor = $this->hex;
}
// Return our gradient array
return array(
'light' => $lightColor,
'dark' => $darkColor,
);
}
/**
* Returns whether or not given color is considered "light"
*
* @param string|Boolean $color
*
* @return boolean
*/
public function isLight( $color = false ) {
// Get our color
$color = ( $color ) ? $color : $this->hex;
// Calculate straight from rbg
$r = hexdec( $color[0] . $color[1] );
$g = hexdec( $color[2] . $color[3] );
$b = hexdec( $color[4] . $color[5] );
return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 > 130 );
}
/**
* Returns whether or not a given color is considered "dark"
*
* @param string|Boolean $color
*
* @return boolean
*/
public function isDark( $color = false ) {
// Get our color
$color = ( $color ) ? $color : $this->hex;
// Calculate straight from rbg
$r = hexdec( $color[0] . $color[1] );
$g = hexdec( $color[2] . $color[3] );
$b = hexdec( $color[4] . $color[5] );
return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 <= 130 );
}
/**
* Returns the complimentary color
* @return string Complementary hex color
* @throws \Exception
*/
public function complementary() {
// Get our HSL
$hsl = $this->hsl;
// Adjust Hue 180 degrees
$hsl['H'] += ( $hsl['H'] > 180 ) ? - 180 : 180;
// Return the new value in HEX
return self::hslToHex( $hsl );
}
/**
* Returns your color's HSL array
*/
public function getHsl() {
return $this->hsl;
}
/**
* Returns your original color
*/
public function getHex() {
return $this->hex;
}
/**
* Returns your color's RGB array
*/
public function getRgb() {
return $this->rgb;
}
// ===========================
// = Private Functions Below =
// ===========================
/**
* Darkens a given HSL array
*
* @param array $hsl
* @param int $amount
*
* @return array $hsl
*/
private function darken_private( $hsl, $amount = self::DEFAULT_ADJUST ) {
// Check if we were provided a number
if ( $amount ) {
$hsl['L'] = ( $hsl['L'] * 100 ) - $amount;
$hsl['L'] = ( $hsl['L'] < 0 ) ? 0 : $hsl['L'] / 100;
} else {
// We need to find out how much to darken
$hsl['L'] = $hsl['L'] / 2;
}
return $hsl;
}
/**
* Lightens a given HSL array
*
* @param array $hsl
* @param int $amount
*
* @return array $hsl
*/
private function lighten_private( $hsl, $amount = self::DEFAULT_ADJUST ) {
// Check if we were provided a number
if ( $amount ) {
$hsl['L'] = ( $hsl['L'] * 100.0 ) + $amount;
$hsl['L'] = ( $hsl['L'] > 100.0 ) ? 1.0 : $hsl['L'] / 100.0;
} else {
// We need to find out how much to lighten
$hsl['L'] += ( 1.0 - $hsl['L'] ) / 2.0;
}
return $hsl;
}
/**
* Mix 2 rgb colors and return an rgb color
*
* @param array $rgb1
* @param array $rgb2
* @param int $amount ranged -100..0..+100
*
* @return array $rgb
*
* ported from http://phpxref.pagelines.com/nav.html?includes/class.colors.php.source.html
*/
private function mix_private( $rgb1, $rgb2, $amount = 0 ) {
$r1 = ( $amount + 100 ) / 100;
$r2 = 2 - $r1;
$rmix = ( ( $rgb1['R'] * $r1 ) + ( $rgb2['R'] * $r2 ) ) / 2;
$gmix = ( ( $rgb1['G'] * $r1 ) + ( $rgb2['G'] * $r2 ) ) / 2;
$bmix = ( ( $rgb1['B'] * $r1 ) + ( $rgb2['B'] * $r2 ) ) / 2;
return array(
'R' => $rmix,
'G' => $gmix,
'B' => $bmix,
);
}
/**
* Given a Hue, returns corresponding RGB value
*
* @param int $v1
* @param int $v2
* @param int $vH
*
* @return int
*/
private static function huetorgb_private( $v1, $v2, $vH ) {
if ( $vH < 0 ) {
$vH ++;
}
if ( $vH > 1 ) {
$vH --;
}
if ( ( 6 * $vH ) < 1 ) {
return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
}
if ( ( 2 * $vH ) < 1 ) {
return $v2;
}
if ( ( 3 * $vH ) < 2 ) {
return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
}
return $v1;
}
/**
* You need to check if you were given a good hex string
*
* @param string $hex
*
* @return string Color
* @throws Exception "Bad color format".
*/
private static function check_hex_private( $hex ) {
// Strip # sign is present
$color = str_replace( '#', '', $hex );
// Make sure it's 6 digits
if ( strlen( $color ) === 3 ) {
$color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2];
} elseif ( strlen( $color ) !== 6 ) {
throw new Exception( 'HEX color needs to be 6 or 3 digits long' );
}
return $color;
}
}
helpers/helpers.php 0000644 00000103616 15021217214 0010363 0 ustar 00 null,
'attach_id' => null,
'thumb_size' => 'thumbnail',
'class' => '',
), $params );
if ( ! $params['thumb_size'] ) {
$params['thumb_size'] = 'thumbnail';
}
if ( ! $params['attach_id'] && ! $params['post_id'] ) {
return false;
}
$post_id = $params['post_id'];
$attach_id = $post_id ? get_post_thumbnail_id( $post_id ) : $params['attach_id'];
$attach_id = apply_filters( 'vc_object_id', $attach_id );
$thumb_size = $params['thumb_size'];
$thumb_class = ( isset( $params['class'] ) && '' !== $params['class'] ) ? $params['class'] . ' ' : '';
global $_wp_additional_image_sizes;
$thumbnail = '';
$sizes = array(
'thumbnail',
'thumb',
'medium',
'large',
'full',
);
if ( is_string( $thumb_size ) && ( ( ! empty( $_wp_additional_image_sizes[ $thumb_size ] ) && is_array( $_wp_additional_image_sizes[ $thumb_size ] ) ) || in_array( $thumb_size, $sizes, true ) ) ) {
$attributes = array( 'class' => $thumb_class . 'attachment-' . $thumb_size );
$thumbnail = wp_get_attachment_image( $attach_id, $thumb_size, false, $attributes );
} elseif ( $attach_id ) {
if ( is_string( $thumb_size ) ) {
preg_match_all( '/\d+/', $thumb_size, $thumb_matches );
if ( isset( $thumb_matches[0] ) ) {
$thumb_size = array();
$count = count( $thumb_matches[0] );
if ( $count > 1 ) {
$thumb_size[] = $thumb_matches[0][0]; // width
$thumb_size[] = $thumb_matches[0][1]; // height
} elseif ( 1 === $count ) {
$thumb_size[] = $thumb_matches[0][0]; // width
$thumb_size[] = $thumb_matches[0][0]; // height
} else {
$thumb_size = false;
}
}
}
if ( is_array( $thumb_size ) ) {
// Resize image to custom size
$p_img = wpb_resize( $attach_id, null, $thumb_size[0], $thumb_size[1], true );
$alt = trim( wp_strip_all_tags( get_post_meta( $attach_id, '_wp_attachment_image_alt', true ) ) );
$attachment = get_post( $attach_id );
if ( ! empty( $attachment ) ) {
$title = trim( wp_strip_all_tags( $attachment->post_title ) );
if ( empty( $alt ) ) {
$alt = trim( wp_strip_all_tags( $attachment->post_excerpt ) ); // If not, Use the Caption
}
if ( empty( $alt ) ) {
$alt = $title;
}
if ( $p_img ) {
$attributes = vc_stringify_attributes( array(
'class' => $thumb_class,
'src' => $p_img['url'],
'width' => $p_img['width'],
'height' => $p_img['height'],
'alt' => $alt,
'title' => $title,
) );
$thumbnail = ' ';
}
}
}
}
$p_img_large = wp_get_attachment_image_src( $attach_id, 'large' );
return apply_filters( 'vc_wpb_getimagesize', array(
'thumbnail' => $thumbnail,
'p_img_large' => $p_img_large,
), $attach_id, $params );
}
/**
* @param $id
* @param $size
* @return array|false|mixed|string
*/
function vc_get_image_by_size( $id, $size ) {
global $_wp_additional_image_sizes;
$sizes = array(
'thumbnail',
'thumb',
'medium',
'large',
'full',
);
if ( is_string( $size ) && ( ( ! empty( $_wp_additional_image_sizes[ $size ] ) && is_array( $_wp_additional_image_sizes[ $size ] ) ) || in_array( $size, $sizes, true ) ) ) {
return wp_get_attachment_image_src( $id, $size );
} else {
if ( is_string( $size ) ) {
preg_match_all( '/\d+/', $size, $thumb_matches );
if ( isset( $thumb_matches[0] ) ) {
$size = array();
$count = count( $thumb_matches[0] );
if ( $count > 1 ) {
$size[] = $thumb_matches[0][0]; // width
$size[] = $thumb_matches[0][1]; // height
} elseif ( 1 === $count ) {
$size[] = $thumb_matches[0][0]; // width
$size[] = $thumb_matches[0][0]; // height
} else {
$size = false;
}
}
}
if ( is_array( $size ) ) {
// Resize image to custom size
$p_img = wpb_resize( $id, null, $size[0], $size[1], true );
return $p_img['url'];
}
}
return '';
}
/**
* Convert vc_col-sm-3 to 1/4
* @param $width
*
* @return string
* @since 4.2
*/
function wpb_translateColumnWidthToFractional( $width ) {
switch ( $width ) {
case 'vc_col-sm-2':
$w = '1/6';
break;
case 'vc_col-sm-3':
$w = '1/4';
break;
case 'vc_col-sm-4':
$w = '1/3';
break;
case 'vc_col-sm-6':
$w = '1/2';
break;
case 'vc_col-sm-8':
$w = '2/3';
break;
case 'vc_col-sm-9':
$w = '3/4';
break;
case 'vc_col-sm-12':
$w = '1/1';
break;
default:
$w = is_string( $width ) ? $width : '1/1';
}
return $w;
}
/**
* @param $width
*
* @return bool|string
* @since 4.2
*/
function wpb_translateColumnWidthToSpan( $width ) {
$output = $width;
preg_match( '/(\d+)\/(\d+)/', $width, $matches );
if ( ! empty( $matches ) ) {
$part_x = (int) $matches[1];
$part_y = (int) $matches[2];
if ( $part_x > 0 && $part_y > 0 ) {
$value = ceil( $part_x / $part_y * 12 );
if ( $value > 0 && $value <= 12 ) {
$output = 'vc_col-sm-' . $value;
}
}
}
if ( preg_match( '/\d+\/5$/', $width ) ) {
$output = 'vc_col-sm-' . $width;
}
return apply_filters( 'vc_translate_column_width_class', $output, $width );
}
/**
* @param $content
* @param bool $autop
*
* @return string
* @since 4.2
*/
function wpb_js_remove_wpautop( $content, $autop = false ) {
if ( $autop ) {
$content = wpautop( preg_replace( '/<\/?p\>/', "\n", $content ) . "\n" );
}
return do_shortcode( shortcode_unautop( $content ) );
}
if ( ! function_exists( 'shortcode_exists' ) ) {
/**
* Check if a shortcode is registered in WordPress.
*
* Examples: shortcode_exists( 'caption' ) - will return true.
* shortcode_exists( 'blah' ) - will return false.
*
* @param bool $shortcode
*
* @return bool
* @since 4.2
*/
function shortcode_exists( $shortcode = false ) {
global $shortcode_tags;
if ( ! $shortcode ) {
return false;
}
if ( array_key_exists( $shortcode, $shortcode_tags ) ) {
return true;
}
return false;
}
}
if ( ! function_exists( 'vc_siteAttachedImages' ) ) {
/**
* Helper function which returns list of site attached images, and if image is attached to the current post it adds class 'added'
* @param array $att_ids
*
* @return string
* @since 4.11
*/
function vc_siteAttachedImages( $att_ids = array() ) {
$output = '';
$limit = (int) apply_filters( 'vc_site_attached_images_query_limit', - 1 );
$media_images = get_posts( 'post_type=attachment&orderby=ID&numberposts=' . $limit );
foreach ( $media_images as $image_post ) {
$thumb_src = wp_get_attachment_image_src( $image_post->ID, 'thumbnail' );
$thumb_src = $thumb_src[0];
$class = ( in_array( $image_post->ID, $att_ids, true ) ) ? ' class="added"' : '';
$output .= '
' . esc_html__( 'Added', 'js_composer' ) . '
';
}
if ( '' !== $output ) {
$output = '';
}
return $output;
}
}
/**
* @param array $images IDs or srcs of images
*
* @return string
* @since 5.8
*/
function vc_field_attached_images( $images = array() ) {
$output = '';
foreach ( $images as $image ) {
if ( is_numeric( $image ) ) {
$thumb_src = wp_get_attachment_image_src( $image, 'thumbnail' );
$thumb_src = isset( $thumb_src[0] ) ? $thumb_src[0] : '';
} else {
$thumb_src = $image;
}
if ( $thumb_src ) {
$output .= '
';
}
}
return $output;
}
/**
* @param $param_value
*
* @return array
* @since 4.2
*/
function wpb_removeNotExistingImgIDs( $param_value ) {
$tmp = explode( ',', $param_value );
$return_ar = array();
foreach ( $tmp as $id ) {
if ( wp_get_attachment_image( $id ) ) {
$return_ar[] = $id;
}
}
$tmp = implode( ',', $return_ar );
return $tmp;
}
/*
* Resize images dynamically using wp built in functions
* Victor Teixeira
*/
if ( ! function_exists( 'wpb_resize' ) ) {
/**
* @param int $attach_id
* @param string $img_url
* @param int $width
* @param int $height
* @param bool $crop
*
* @return array
* @since 4.2
*/
function wpb_resize( $attach_id = null, $img_url = null, $width, $height, $crop = false ) {
// this is an attachment, so we have the ID
$image_src = array();
if ( $attach_id ) {
$image_src = wp_get_attachment_image_src( $attach_id, 'full' );
$actual_file_path = get_attached_file( $attach_id );
// this is not an attachment, let's use the image url
} elseif ( $img_url ) {
$file_path = wp_parse_url( $img_url );
$actual_file_path = rtrim( ABSPATH, '/' ) . $file_path['path'];
$orig_size = getimagesize( $actual_file_path );
$image_src[0] = $img_url;
$image_src[1] = $orig_size[0];
$image_src[2] = $orig_size[1];
}
if ( ! empty( $actual_file_path ) ) {
$file_info = pathinfo( $actual_file_path );
$extension = '.' . $file_info['extension'];
// the image path without the extension
$no_ext_path = $file_info['dirname'] . '/' . $file_info['filename'];
$cropped_img_path = $no_ext_path . '-' . $width . 'x' . $height . $extension;
// checking if the file size is larger than the target size
// if it is smaller or the same size, stop right here and return
if ( $image_src[1] > $width || $image_src[2] > $height ) {
// the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
if ( file_exists( $cropped_img_path ) ) {
$cropped_img_url = str_replace( basename( $image_src[0] ), basename( $cropped_img_path ), $image_src[0] );
$vt_image = array(
'url' => $cropped_img_url,
'width' => $width,
'height' => $height,
);
return $vt_image;
}
if ( ! $crop ) {
// calculate the size proportionaly
$proportional_size = wp_constrain_dimensions( $image_src[1], $image_src[2], $width, $height );
$resized_img_path = $no_ext_path . '-' . $proportional_size[0] . 'x' . $proportional_size[1] . $extension;
// checking if the file already exists
if ( file_exists( $resized_img_path ) ) {
$resized_img_url = str_replace( basename( $image_src[0] ), basename( $resized_img_path ), $image_src[0] );
$vt_image = array(
'url' => $resized_img_url,
'width' => $proportional_size[0],
'height' => $proportional_size[1],
);
return $vt_image;
}
}
// no cache files - let's finally resize it
$img_editor = wp_get_image_editor( $actual_file_path );
if ( is_wp_error( $img_editor ) || is_wp_error( $img_editor->resize( $width, $height, $crop ) ) ) {
return array(
'url' => '',
'width' => '',
'height' => '',
);
}
$new_img_path = $img_editor->generate_filename();
if ( is_wp_error( $img_editor->save( $new_img_path ) ) ) {
return array(
'url' => '',
'width' => '',
'height' => '',
);
}
if ( ! is_string( $new_img_path ) ) {
return array(
'url' => '',
'width' => '',
'height' => '',
);
}
$new_img_size = getimagesize( $new_img_path );
$new_img = str_replace( basename( $image_src[0] ), basename( $new_img_path ), $image_src[0] );
// resized output
$vt_image = array(
'url' => $new_img,
'width' => $new_img_size[0],
'height' => $new_img_size[1],
);
return $vt_image;
}
// default output - without resizing
$vt_image = array(
'url' => $image_src[0],
'width' => $image_src[1],
'height' => $image_src[2],
);
return $vt_image;
}
return false;
}
}
/**
* Method adds css class to body tag.
*
* Hooked class method by body_class WP filter. Method adds custom css class to body tag of the page to help
* identify and build design specially for VC shortcodes.
* Used in wp-content/plugins/js_composer/include/classes/core/class-vc-base.php\Vc_Base\bodyClass
*
* @param $classes
*
* @return array
* @since 4.2
*/
function js_composer_body_class( $classes ) {
$classes[] = 'wpb-js-composer js-comp-ver-' . WPB_VC_VERSION;
$disable_responsive = vc_settings()->get( 'not_responsive_css' );
if ( '1' !== $disable_responsive ) {
$classes[] = 'vc_responsive';
} else {
$classes[] = 'vc_non_responsive';
}
return $classes;
}
/**
* @param $m
*
* @return string
* @since 4.2
*/
function vc_convert_shortcode( $m ) {
list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m;
if ( 'vc_row' === $tag || 'vc_section' === $tag ) {
return $output;
}
$result = '';
$el_position = '';
$width = '1/1';
$shortcode_attr = shortcode_parse_atts( $attr_string );
extract( shortcode_atts( array(
'width' => '1/1',
'el_class' => '',
'el_position' => '',
), $shortcode_attr ) );
// Start
if ( preg_match( '/first/', $el_position ) || empty( $shortcode_attr['width'] ) || '1/1' === $shortcode_attr['width'] ) {
$result = '[vc_row]';
}
if ( 'vc_column' !== $tag ) {
$result .= '[vc_column width="' . $width . '"]';
}
// Tag
$pattern = get_shortcode_regex();
if ( 'vc_column' === $tag ) {
$result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_inner_shortcode', $content ) . "[/{$tag}{$m_four}]";
} elseif ( 'vc_tabs' === $tag || 'vc_accordion' === $tag || 'vc_tour' === $tag ) {
$result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_tab_inner_shortcode', $content ) . "[/{$tag}{$m_four}]";
} else {
$result .= preg_replace( '/(\"\d\/\d\")/', '"1/1"', $output );
}
// End
if ( 'vc_column' !== $tag ) {
$result .= '[/vc_column]';
}
if ( preg_match( '/last/', $el_position ) || empty( $shortcode_attr['width'] ) || '1/1' === $shortcode_attr['width'] ) {
$result .= '[/vc_row]' . "\n";
}
return trim( $result );
}
/**
* @param $m
*
* @return string
* @since 4.2
*/
function vc_convert_tab_inner_shortcode( $m ) {
list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m;
$result = '';
extract( shortcode_atts( array(
'width' => '1/1',
'el_class' => '',
'el_position' => '',
), shortcode_parse_atts( $attr_string ) ) );
$pattern = get_shortcode_regex();
$result .= "[{$m_one}{$tag} {$attr_string}]" . preg_replace_callback( "/{$pattern}/s", 'vc_convert_inner_shortcode', $content ) . "[/{$tag}{$m_four}]";
return $result;
}
/**
* @param $m
*
* @return string
* @since 4.2
*/
function vc_convert_inner_shortcode( $m ) {
list( $output, $m_one, $tag, $attr_string, $m_four, $content ) = $m;
$result = '';
$width = '';
$el_position = '';
extract( shortcode_atts( array(
'width' => '1/1',
'el_class' => '',
'el_position' => '',
), shortcode_parse_atts( $attr_string ) ) );
if ( '1/1' !== $width ) {
if ( preg_match( '/first/', $el_position ) ) {
$result .= '[vc_row_inner]';
}
$result .= "\n" . '[vc_column_inner width="' . esc_attr( $width ) . '" el_position="' . esc_attr( $el_position ) . '"]';
$attr = '';
foreach ( shortcode_parse_atts( $attr_string ) as $key => $value ) {
if ( 'width' === $key ) {
$value = '1/1';
} elseif ( 'el_position' === $key ) {
$value = 'first last';
}
$attr .= ' ' . $key . '="' . $value . '"';
}
$result .= "[{$m_one}{$tag} {$attr}]" . $content . "[/{$tag}{$m_four}]";
$result .= '[/vc_column_inner]';
if ( preg_match( '/last/', $el_position ) ) {
$result .= '[/vc_row_inner]' . "\n";
}
} else {
$result = $output;
}
return $result;
}
global $vc_row_layouts;
$vc_row_layouts = array(
array(
'cells' => '11',
'mask' => '12',
'title' => '1/1',
'icon_class' => '1-1',
),
array(
'cells' => '12_12',
'mask' => '26',
'title' => '1/2 + 1/2',
'icon_class' => '1-2_1-2',
),
array(
'cells' => '23_13',
'mask' => '29',
'title' => '2/3 + 1/3',
'icon_class' => '2-3_1-3',
),
array(
'cells' => '13_13_13',
'mask' => '312',
'title' => '1/3 + 1/3 + 1/3',
'icon_class' => '1-3_1-3_1-3',
),
array(
'cells' => '14_14_14_14',
'mask' => '420',
'title' => '1/4 + 1/4 + 1/4 + 1/4',
'icon_class' => '1-4_1-4_1-4_1-4',
),
array(
'cells' => '14_34',
'mask' => '212',
'title' => '1/4 + 3/4',
'icon_class' => '1-4_3-4',
),
array(
'cells' => '14_12_14',
'mask' => '313',
'title' => '1/4 + 1/2 + 1/4',
'icon_class' => '1-4_1-2_1-4',
),
array(
'cells' => '56_16',
'mask' => '218',
'title' => '5/6 + 1/6',
'icon_class' => '5-6_1-6',
),
array(
'cells' => '16_16_16_16_16_16',
'mask' => '642',
'title' => '1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6',
'icon_class' => '1-6_1-6_1-6_1-6_1-6_1-6',
),
array(
'cells' => '16_23_16',
'mask' => '319',
'title' => '1/6 + 4/6 + 1/6',
'icon_class' => '1-6_2-3_1-6',
),
array(
'cells' => '16_16_16_12',
'mask' => '424',
'title' => '1/6 + 1/6 + 1/6 + 1/2',
'icon_class' => '1-6_1-6_1-6_1-2',
),
array(
'cells' => '15_15_15_15_15',
'mask' => '530',
'title' => '1/5 + 1/5 + 1/5 + 1/5 + 1/5',
'icon_class' => 'l_15_15_15_15_15',
),
);
/**
* @param $width
*
* @return string
* @since 4.2
*/
function wpb_vc_get_column_width_indent( $width ) {
$identy = '11';
if ( 'vc_col-sm-6' === $width ) {
$identy = '12';
} elseif ( 'vc_col-sm-3' === $width ) {
$identy = '14';
} elseif ( 'vc_col-sm-4' === $width ) {
$identy = '13';
} elseif ( 'vc_col-sm-8' === $width ) {
$identy = '23';
} elseif ( 'vc_col-sm-9' === $width ) {
$identy = '34';
} elseif ( 'vc_col-sm-2' === $width ) {
$identy = '16'; // TODO: check why there is no "vc_col-sm-1, -5, -6, -7, -11, -12.
} elseif ( 'vc_col-sm-10' === $width ) {
$identy = '56';
}
return $identy;
}
/**
* Make any HEX color lighter or darker
* @param $colour
* @param $per
*
* @return string
* @since 4.2
*/
function vc_colorCreator( $colour, $per = 10 ) {
require_once 'class-vc-color-helper.php';
$color = $colour;
if ( stripos( $colour, 'rgba(' ) !== false ) {
$rgb = str_replace( array(
'rgba',
'rgb',
'(',
')',
), '', $colour );
$rgb = explode( ',', $rgb );
$rgb_array = array(
'R' => $rgb[0],
'G' => $rgb[1],
'B' => $rgb[2],
);
$alpha = $rgb[3];
try {
$color = Vc_Color_Helper::rgbToHex( $rgb_array );
$color_obj = new Vc_Color_Helper( $color );
if ( $per >= 0 ) {
$color = $color_obj->lighten( $per );
} else {
$color = $color_obj->darken( abs( $per ) );
}
$rgba = $color_obj->hexToRgb( $color );
$rgba[] = $alpha;
$css_rgba_color = 'rgba(' . implode( ', ', $rgba ) . ')';
return $css_rgba_color;
} catch ( Exception $e ) {
// In case of error return same as given
return $colour;
}
} elseif ( stripos( $colour, 'rgb(' ) !== false ) {
$rgb = str_replace( array(
'rgba',
'rgb',
'(',
')',
), '', $colour );
$rgb = explode( ',', $rgb );
$rgb_array = array(
'R' => $rgb[0],
'G' => $rgb[1],
'B' => $rgb[2],
);
try {
$color = Vc_Color_Helper::rgbToHex( $rgb_array );
} catch ( Exception $e ) {
// In case of error return same as given
return $colour;
}
}
try {
$color_obj = new Vc_Color_Helper( $color );
if ( $per >= 0 ) {
$color = $color_obj->lighten( $per );
} else {
$color = $color_obj->darken( abs( $per ) );
}
return '#' . $color;
} catch ( Exception $e ) {
return $colour;
}
}
/**
* HEX to RGB converter
* @param $color
*
* @return array|bool
* @since 4.2
*/
function vc_hex2rgb( $color ) {
$color = str_replace( '#', '', $color );
if ( strlen( $color ) === 6 ) {
list( $r, $g, $b ) = array(
$color[0] . $color[1],
$color[2] . $color[3],
$color[4] . $color[5],
);
} elseif ( strlen( $color ) === 3 ) {
list( $r, $g, $b ) = array(
$color[0] . $color[0],
$color[1] . $color[1],
$color[2] . $color[2],
);
} else {
return false;
}
$r = hexdec( $r );
$g = hexdec( $g );
$b = hexdec( $b );
return array(
$r,
$g,
$b,
);
}
/**
* Parse string like "title:Hello world|weekday:Monday" to array('title' => 'Hello World', 'weekday' => 'Monday')
*
* @param $value
* @param array $default
*
* @return array
* @since 4.2
*/
function vc_parse_multi_attribute( $value, $default = array() ) {
$result = $default;
$params_pairs = explode( '|', $value );
if ( ! empty( $params_pairs ) ) {
foreach ( $params_pairs as $pair ) {
$param = preg_split( '/\:/', $pair );
if ( ! empty( $param[0] ) && isset( $param[1] ) ) {
$result[ $param[0] ] = rawurldecode( $param[1] );
}
}
}
return $result;
}
/**
* @param $v
*
* @return string
* @since 4.2
*/
function vc_param_options_parse_values( $v ) {
return rawurldecode( $v );
}
/**
* @param $name
* @param $settings
*
* @return bool
* @since 4.2
*/
function vc_param_options_get_settings( $name, $settings ) {
if ( is_array( $settings ) ) {
foreach ( $settings as $params ) {
if ( isset( $params['name'] ) && $params['name'] === $name && isset( $params['type'] ) ) {
return $params;
}
}
}
return false;
}
/**
* @param $atts
*
* @return string
* @since 4.2
*/
function vc_convert_atts_to_string( $atts ) {
$output = '';
foreach ( $atts as $key => $value ) {
$output .= ' ' . $key . '="' . $value . '"';
}
return $output;
}
/**
* @param $string
* @param $tag
* @param $param
*
* @return array
* @throws \Exception
* @since 4.2
*/
function vc_parse_options_string( $string, $tag, $param ) {
$options = array();
$option_settings_list = array();
$settings = WPBMap::getParam( $tag, $param );
foreach ( preg_split( '/\|/', $string ) as $value ) {
if ( preg_match( '/\:/', $value ) ) {
$split = preg_split( '/\:/', $value );
$option_name = $split[0];
$option_settings = vc_param_options_get_settings( $option_name, $settings['options'] );
$option_settings_list[ $option_name ] = $option_settings;
if ( isset( $option_settings['type'] ) && 'checkbox' === $option_settings['type'] ) {
$option_value = array_map( 'vc_param_options_parse_values', preg_split( '/\,/', $split[1] ) );
} else {
$option_value = rawurldecode( $split[1] );
}
$options[ $option_name ] = $option_value;
}
}
if ( isset( $settings['options'] ) ) {
foreach ( $settings['options'] as $setting_option ) {
if ( 'separator' !== $setting_option['type'] && isset( $setting_option['value'] ) && empty( $options[ $setting_option['name'] ] ) ) {
$options[ $setting_option['name'] ] = 'checkbox' === $setting_option['type'] ? preg_split( '/\,/', $setting_option['value'] ) : $setting_option['value'];
}
if ( isset( $setting_option['name'] ) && isset( $options[ $setting_option['name'] ] ) && isset( $setting_option['value_type'] ) ) {
if ( 'integer' === $setting_option['value_type'] ) {
$options[ $setting_option['name'] ] = (int) $options[ $setting_option['name'] ];
} elseif ( 'float' === $setting_option['value_type'] ) {
$options[ $setting_option['name'] ] = (float) $options[ $setting_option['name'] ];
} elseif ( 'boolean' === $setting_option['value_type'] ) {
$options[ $setting_option['name'] ] = (bool) $options[ $setting_option['name'] ];
}
}
}
}
return $options;
}
/**
* Convert string to a valid css class name.
*
* @param string $class
*
* @return string
* @since 4.3
*
*/
function vc_build_safe_css_class( $class ) {
return preg_replace( '/\W+/', '', strtolower( str_replace( ' ', '_', wp_strip_all_tags( $class ) ) ) );
}
/**
* Include template from templates dir.
*
* @param $template
* @param array $variables - passed variables to the template.
*
* @param bool $once
*
* @return mixed
* @since 4.3
*
*/
function vc_include_template( $template, $variables = array(), $once = false ) {
is_array( $variables ) && extract( $variables );
if ( $once ) {
return require_once vc_template( $template );
} else {
return require vc_template( $template );
}
}
/**
* Output template from templates dir.
*
* @param $template
* @param array $variables - passed variables to the template.
*
* @param bool $once
*
* @return string
* @since 4.4
*
*/
function vc_get_template( $template, $variables = array(), $once = false ) {
ob_start();
$output = vc_include_template( $template, $variables, $once );
if ( 1 === $output ) {
$output = ob_get_contents();
}
ob_end_clean();
return $output;
}
/**
* if php version < 5.3 this function is required.
*/
if ( ! function_exists( 'lcfirst' ) ) {
/**
* @param $str
*
* @return mixed
* @since 4.3, fix #1093
*/
function lcfirst( $str ) {
$str[0] = function_exists( 'mb_strtolower' ) ? mb_strtolower( $str[0] ) : strtolower( $str[0] );
return $str;
}
}
/**
* VC Convert a value to studly caps case.
*
* @param string $value
*
* @return string
* @since 4.3
*
*/
function vc_studly( $value ) {
$value = ucwords( str_replace( array(
'-',
'_',
), ' ', $value ) );
return str_replace( ' ', '', $value );
}
/**
* VC Convert a value to camel case.
*
* @param string $value
*
* @return string
* @since 4.3
*
*/
function vc_camel_case( $value ) {
return lcfirst( vc_studly( $value ) );
}
/**
* Enqueue icon element font
* @param $font
* @since 4.4
*
* @todo move to separate folder
*/
function vc_icon_element_fonts_enqueue( $font ) {
switch ( $font ) {
case 'fontawesome':
wp_enqueue_style( 'vc_font_awesome_5' );
break;
case 'openiconic':
wp_enqueue_style( 'vc_openiconic' );
break;
case 'typicons':
wp_enqueue_style( 'vc_typicons' );
break;
case 'entypo':
wp_enqueue_style( 'vc_entypo' );
break;
case 'linecons':
wp_enqueue_style( 'vc_linecons' );
break;
case 'monosocial':
wp_enqueue_style( 'vc_monosocialiconsfont' );
break;
case 'material':
wp_enqueue_style( 'vc_material' );
break;
default:
do_action( 'vc_enqueue_font_icon_element', $font ); // hook to custom do enqueue style
}
}
/**
* Function merges defaults attributes in attributes by keeping it values
*
* Example
* array defaults | array attributes | result array
* 'color'=>'black', - 'color'=>'black',
* 'target'=>'_self', 'target'=>'_blank', 'target'=>'_blank',
* - 'link'=>'google.com' 'link'=>'google.com'
*
* @param array $defaults
* @param array $attributes
*
* @return array - merged attributes
*
* @since 4.4
*
* @see vc_map_get_attributes
*/
function vc_shortcode_attribute_parse( $defaults = array(), $attributes = array() ) {
$atts = $attributes + shortcode_atts( $defaults, $attributes );
return $atts;
}
/**
* @param string $tagregexp
* @return string
*/
function vc_get_shortcode_regex( $tagregexp = '' ) {
if ( 0 === strlen( $tagregexp ) ) {
return get_shortcode_regex();
}
return '\\[' // Opening bracket
. '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]]
. "($tagregexp)" // 2: Shortcode name
. '(?![\\w\-])' // Not followed by word character or hyphen
. '(' // 3: Unroll the loop: Inside the opening shortcode tag
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. '(?:' . '\\/(?!\\])' // A forward slash not followed by a closing bracket
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. ')*?' . ')' . '(?:' . '(\\/)' // 4: Self closing tag ...
. '\\]' // ... and closing bracket
. '|' . '\\]' // Closing bracket
. '(?:' . '(' // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags
. '[^\\[]*+' // Not an opening bracket
. '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
. '[^\\[]*+' // Not an opening bracket
. ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag
. ')?' . ')' . '(\\]?)';
}
/**
* Used to send warning message
*
* @param $message
*
* @return string
* @since 4.5
*
*/
function vc_message_warning( $message ) {
return '';
}
/**
* Extract video ID from youtube url
*
* @param string $url Youtube url
*
* @return string
*/
function vc_extract_youtube_id( $url ) {
parse_str( wp_parse_url( $url, PHP_URL_QUERY ), $vars );
if ( ! isset( $vars['v'] ) ) {
return '';
}
return $vars['v'];
}
/**
* @return string[]|\WP_Taxonomy[]
*/
/**
* @return string[]|\WP_Taxonomy[]
*/
/**
* @return string[]|\WP_Taxonomy[]
*/
/**
* @return string[]|\WP_Taxonomy[]
*/
/**
* @return string[]|\WP_Taxonomy[]
*/
function vc_taxonomies_types( $post_type = null ) {
global $vc_taxonomies_types;
if ( is_null( $vc_taxonomies_types ) || $post_type ) {
$query = array( 'public' => true );
$vc_taxonomies_types = get_taxonomies( $query, 'objects' );
if ( ! empty( $post_type ) && is_array( $vc_taxonomies_types ) ) {
foreach ( $vc_taxonomies_types as $key => $taxonomy ) {
$arr = (array) $taxonomy;
if ( isset( $arr['object_type'] ) && ! in_array( $post_type, $arr['object_type'] ) ) {
unset( $vc_taxonomies_types[ $key ] );
}
}
}
}
return $vc_taxonomies_types;
}
/**
* Since
*
* @param $term
*
* @return array
* @since 4.5.3
*
*/
function vc_get_term_object( $term ) {
$vc_taxonomies_types = vc_taxonomies_types();
return array(
'label' => $term->name,
'value' => $term->term_id,
'group_id' => $term->taxonomy,
'group' => isset( $vc_taxonomies_types[ $term->taxonomy ], $vc_taxonomies_types[ $term->taxonomy ]->labels, $vc_taxonomies_types[ $term->taxonomy ]->labels->name ) ? $vc_taxonomies_types[ $term->taxonomy ]->labels->name : esc_html__( 'Taxonomies', 'js_composer' ),
);
}
/**
* Check if element has specific class
*
* E.g. f('foo', 'foo bar baz') -> true
*
* @param string $class Class to check for
* @param string $classes Classes separated by space(s)
*
* @return bool
*/
function vc_has_class( $class, $classes ) {
return in_array( $class, explode( ' ', strtolower( $classes ), true ), true );
}
/**
* Remove specific class from classes string
*
* E.g. f('foo', 'foo bar baz') -> 'bar baz'
*
* @param string $class Class to remove
* @param string $classes Classes separated by space(s)
*
* @return string
*/
function vc_remove_class( $class, $classes ) {
$list_classes = explode( ' ', strtolower( $classes ) );
$key = array_search( $class, $list_classes, true );
if ( false === $key ) {
return $classes;
}
unset( $list_classes[ $key ] );
return implode( ' ', $list_classes );
}
/**
* Convert array of named params to string version
* All values will be escaped
*
* E.g. f(array('name' => 'foo', 'id' => 'bar')) -> 'name="foo" id="bar"'
*
* @param $attributes
*
* @return string
*/
function vc_stringify_attributes( $attributes ) {
$atts = array();
foreach ( $attributes as $name => $value ) {
$atts[] = $name . '="' . esc_attr( $value ) . '"';
}
return implode( ' ', $atts );
}
/**
* @return bool
*/
/**
* @return bool
*/
/**
* @return bool
*/
/**
* @return bool
*/
/**
* @return bool
*/
function vc_is_responsive_disabled() {
$disable_responsive = vc_settings()->get( 'not_responsive_css' );
return '1' === $disable_responsive;
}
/**
* Do shortcode single render point
*
* @param $atts
* @param null $content
* @param null $tag
*
* @return string
* @throws \Exception
*/
function vc_do_shortcode( $atts, $content = null, $tag = null ) {
ob_start();
echo Vc_Shortcodes_Manager::getInstance()->getElementClass( $tag )->output( $atts, $content );
$content = ob_get_clean();
// @codingStandardsIgnoreStart
global $wp_embed;
if ( is_object( $wp_embed ) ) {
$content = $wp_embed->run_shortcode( $content );
$content = $wp_embed->autoembed( $content );
// @codingStandardsIgnoreEnd
}
return $content;
}
/**
* Return random string
*
* @param int $length
*
* @return string
*/
function vc_random_string( $length = 10 ) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$len = strlen( $characters );
$str = '';
for ( $i = 0; $i < $length; $i ++ ) {
$str .= $characters[ wp_rand( 0, $len - 1 ) ];
}
return $str;
}
/**
* @param $str
* @return string|string[]|null
*/
/**
* @param $str
* @return string|string[]|null
*/
/**
* @param $str
* @return string|string[]|null
*/
/**
* @param $str
* @return string|string[]|null
*/
/**
* @param $str
* @return string|string[]|null
*/
function vc_slugify( $str ) {
$str = strtolower( $str );
$str = html_entity_decode( $str );
$str = preg_replace( '/[^\w ]+/', '', $str );
$str = preg_replace( '/ +/', '-', $str );
return $str;
}
/**
* WPBakery WPBakery Page Builder filter functions
*
* @package WPBakeryPageBuilder
*/
/**
* This filter should be applied to all content elements titles
*
* $params['extraclass'] Extra class name will be added
*
*
* To override content element title default html markup, paste this code in your theme's functions.php file
* vc_filter: wpb_widget_title
* add_filter('wpb_widget_title', 'override_widget_title', 10, 2);
* function override_widget_title($output = '', $params = array('')) {
* $extraclass = (isset($params['extraclass'])) ? " ".$params['extraclass'] : "";
* return '';
* }
*
* @param array $params
*
* @return mixed|string
*/
function wpb_widget_title( $params = array( 'title' => '' ) ) {
if ( '' === $params['title'] ) {
return '';
}
$extraclass = ( isset( $params['extraclass'] ) ) ? ' ' . $params['extraclass'] : '';
$output = '';
return apply_filters( 'wpb_widget_title', $output, $params );
}
helpers/helpers_factory.php 0000644 00000033142 15021217214 0012106 0 ustar 00 vc();
}
}
if ( ! function_exists( 'vc_mapper' ) ) {
/**
* Shorthand for Vc Mapper.
* @return Vc_Mapper
* @since 4.2
*/
function vc_mapper() {
return vc_manager()->mapper();
}
}
if ( ! function_exists( 'vc_settings' ) ) {
/**
* Shorthand for WPBakery Page Builder settings.
* @return Vc_Settings
* @since 4.2
*/
function vc_settings() {
return vc_manager()->settings();
}
}
if ( ! function_exists( 'vc_license' ) ) {
/**
* Get License manager
* @return Vc_License
* @since 4.2
*/
function vc_license() {
return vc_manager()->license();
}
}
if ( ! function_exists( 'vc_automapper' ) ) {
/**
* @return Vc_Automapper
* @since 4.2
*/
function vc_automapper() {
return vc_manager()->automapper();
}
}
if ( ! function_exists( 'vc_frontend_editor' ) ) {
/**
* Shorthand for VC frontend editor
* @return Vc_Frontend_Editor
* @since 4.2
*/
function vc_frontend_editor() {
return vc_manager()->frontendEditor();
}
}
if ( ! function_exists( 'vc_backend_editor' ) ) {
/**
* Shorthand for VC frontend editor
* @return Vc_Backend_Editor
* @since 4.2
*/
function vc_backend_editor() {
return vc_manager()->backendEditor();
}
}
if ( ! function_exists( 'vc_updater' ) ) {
/**
* @return Vc_Updater
* @since 4.2
*/
function vc_updater() {
return vc_manager()->updater();
}
}
if ( ! function_exists( 'vc_is_network_plugin' ) ) {
/**
* Vc is network plugin or not.
* @return bool
* @since 4.2
*/
function vc_is_network_plugin() {
return vc_manager()->isNetworkPlugin();
}
}
if ( ! function_exists( 'vc_path_dir' ) ) {
/**
* Get file/directory path in Vc.
*
* @param string $name - path name
* @param string $file
*
* @return string
* @since 4.2
*/
function vc_path_dir( $name, $file = '' ) {
return vc_manager()->path( $name, $file );
}
}
if ( ! function_exists( 'vc_asset_url' ) ) {
/**
* Get full url for assets.
*
* @param string $file
*
* @return string
* @since 4.2
*/
function vc_asset_url( $file ) {
return vc_manager()->assetUrl( $file );
}
}
if ( ! function_exists( 'vc_upload_dir' ) ) {
/**
* Temporary files upload dir;
* @return string
* @since 4.2
*/
function vc_upload_dir() {
return vc_manager()->uploadDir();
}
}
if ( ! function_exists( 'vc_template' ) ) {
/**
* @param $file
*
* @return string
* @since 4.2
*/
function vc_template( $file ) {
return vc_path_dir( 'TEMPLATES_DIR', $file );
}
}
if ( ! function_exists( 'vc_post_param' ) ) {
/**
* Get param value from $_POST if exists.
*
* @param $param
* @param $default
*
* @param bool $check
* @return null|string - null for undefined param.
* @since 4.2
*/
function vc_post_param( $param, $default = null, $check = false ) {
if ( 'admin' === $check ) {
check_admin_referer();
} elseif ( 'ajax' === $check ) {
check_ajax_referer();
}
return isset( $_POST[ $param ] ) ? $_POST[ $param ] : $default;
}
}
if ( ! function_exists( 'vc_get_param' ) ) {
/**
* Get param value from $_GET if exists.
*
* @param string $param
* @param $default
*
* @param bool $check
* @return null|string - null for undefined param.
* @since 4.2
*/
function vc_get_param( $param, $default = null, $check = false ) {
if ( 'admin' === $check ) {
check_admin_referer();
} elseif ( 'ajax' === $check ) {
check_ajax_referer();
}
// @codingStandardsIgnoreLine
return isset( $_GET[ $param ] ) ? $_GET[ $param ] : $default;
}
}
if ( ! function_exists( 'vc_request_param' ) ) {
/**
* Get param value from $_REQUEST if exists.
*
* @param $param
* @param $default
*
* @param bool $check
* @return null|string - null for undefined param.
* @since 4.4
*/
function vc_request_param( $param, $default = null, $check = false ) {
if ( 'admin' === $check ) {
check_admin_referer();
} elseif ( 'ajax' === $check ) {
check_ajax_referer();
}
// @codingStandardsIgnoreLine
return isset( $_REQUEST[ $param ] ) ? $_REQUEST[ $param ] : $default;
}
}
if ( ! function_exists( 'vc_is_frontend_editor' ) ) {
/**
* @return bool
* @since 4.2
*/
function vc_is_frontend_editor() {
return 'admin_frontend_editor' === vc_mode();
}
}
if ( ! function_exists( 'vc_is_page_editable' ) ) {
/**
* @return bool
* @since 4.2
*/
function vc_is_page_editable() {
return 'page_editable' === vc_mode();
}
}
if ( ! function_exists( 'vc_action' ) ) {
/**
* Get VC special action param.
* @return string|null
* @since 4.2
*/
function vc_action() {
$vc_action = wp_strip_all_tags( vc_request_param( 'vc_action' ) );
return $vc_action;
}
}
if ( ! function_exists( 'vc_is_inline' ) ) {
/**
* Get is inline or not.
* @return bool
* @since 4.2
*/
function vc_is_inline() {
global $vc_is_inline;
if ( is_null( $vc_is_inline ) ) {
$vc_is_inline = ( current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' ) ) && 'vc_inline' === vc_action() || ! is_null( vc_request_param( 'vc_inline' ) ) || 'true' === vc_request_param( 'vc_editable' );
}
return $vc_is_inline;
}
}
if ( ! function_exists( 'vc_is_frontend_ajax' ) ) {
/**
* @return bool
* @since 4.2
*/
function vc_is_frontend_ajax() {
return 'true' === vc_post_param( 'vc_inline' ) || vc_get_param( 'vc_inline' );
}
}
/**
* @depreacted since 4.8 ( use vc_is_frontend_editor )
* @return bool
* @since 4.2
*/
function vc_is_editor() {
return vc_is_frontend_editor();
}
/**
* @param $value
* @param bool $encode
*
* @return string
* @since 4.2
*/
function vc_value_from_safe( $value, $encode = false ) {
// @codingStandardsIgnoreLine
$value = preg_match( '/^#E\-8_/', $value ) ? rawurldecode( base64_decode( preg_replace( '/^#E\-8_/', '', $value ) ) ) : $value;
if ( $encode ) {
$value = htmlentities( $value, ENT_COMPAT, 'UTF-8' );
}
return $value;
}
/**
* @param bool $disable
* @since 4.2
*
*/
function vc_disable_automapper( $disable = true ) {
vc_automapper()->setDisabled( $disable );
}
/**
* @return bool
* @since 4.2
*/
function vc_automapper_is_disabled() {
return vc_automapper()->disabled();
}
/**
* @param $param
* @param $value
*
* @return mixed|string
* @since 4.2
*/
function vc_get_dropdown_option( $param, $value ) {
if ( '' === $value && is_array( $param['value'] ) ) {
$value = array_shift( $param['value'] );
}
if ( is_array( $value ) ) {
reset( $value );
$value = isset( $value['value'] ) ? $value['value'] : current( $value );
}
$value = preg_replace( '/\s/', '_', $value );
return ( '' !== $value ? $value : '' );
}
/**
* @param $prefix
* @param $color
*
* @return string
* @since 4.2
*/
function vc_get_css_color( $prefix, $color ) {
$rgb_color = preg_match( '/rgba/', $color ) ? preg_replace( array(
'/\s+/',
'/^rgba\((\d+)\,(\d+)\,(\d+)\,([\d\.]+)\)$/',
), array(
'',
'rgb($1,$2,$3)',
), $color ) : $color;
$string = $prefix . ':' . $rgb_color . ';';
if ( $rgb_color !== $color ) {
$string .= $prefix . ':' . $color . ';';
}
return $string;
}
/**
* @param $param_value
* @param string $prefix
*
* @return string
* @since 4.2
*/
function vc_shortcode_custom_css_class( $param_value, $prefix = '' ) {
$css_class = preg_match( '/\s*\.([^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', $param_value ) ? $prefix . preg_replace( '/\s*\.([^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', '$1', $param_value ) : '';
return $css_class;
}
/**
* @param $subject
* @param $property
* @param bool|false $strict
*
* @return bool
* @since 4.9
*/
function vc_shortcode_custom_css_has_property( $subject, $property, $strict = false ) {
$styles = array();
$pattern = '/\{([^\}]*?)\}/i';
preg_match( $pattern, $subject, $styles );
if ( array_key_exists( 1, $styles ) ) {
$styles = explode( ';', $styles[1] );
}
$new_styles = array();
foreach ( $styles as $val ) {
$val = explode( ':', $val );
if ( is_array( $property ) ) {
foreach ( $property as $prop ) {
$pos = strpos( $val[0], $prop );
$full = ( $strict ) ? ( 0 === $pos && strlen( $val[0] ) === strlen( $prop ) ) : true;
if ( false !== $pos && $full ) {
$new_styles[] = $val;
}
}
} else {
$pos = strpos( $val[0], $property );
$full = ( $strict ) ? ( 0 === $pos && strlen( $val[0] ) === strlen( $property ) ) : true;
if ( false !== $pos && $full ) {
$new_styles[] = $val;
}
}
}
return ! empty( $new_styles );
}
/**
* Plugin name for VC.
*
* @return string
* @since 4.2
*/
function vc_plugin_name() {
return vc_manager()->pluginName();
}
/**
* @param $filename
*
* @return bool|mixed|string
* @since 4.4.3 used in vc_base when getting an custom css output
*
*/
function vc_file_get_contents( $filename ) {
global $wp_filesystem;
if ( empty( $wp_filesystem ) ) {
require_once ABSPATH . '/wp-admin/includes/file.php';
WP_Filesystem( false, false, true );
}
/** @var WP_Filesystem_Base $wp_filesystem */
$output = '';
if ( is_object( $wp_filesystem ) ) {
$output = $wp_filesystem->get_contents( $filename );
}
if ( ! $output ) {
// @codingStandardsIgnoreLine
$output = file_get_contents( $filename );
}
return $output;
}
/**
* HowTo: vc_role_access()->who('administrator')->with('editor')->can('frontend_editor');
* @return Vc_Role_Access;
* @since 4.8
*/
function vc_role_access() {
return vc_manager()->getRoleAccess();
}
/**
* Get access manager for current user.
* HowTo: vc_user_access()->->with('editor')->can('frontend_editor');
* @return Vc_Current_User_Access;
* @since 4.8
*/
function vc_user_access() {
return vc_manager()->getCurrentUserAccess();
}
/**
* @return array
* @throws \Exception
*/
function vc_user_roles_get_all() {
require_once vc_path_dir( 'SETTINGS_DIR', 'class-vc-roles.php' );
$vc_roles = new Vc_Roles();
$capabilities = array();
foreach ( $vc_roles->getParts() as $part ) {
$partObj = vc_user_access()->part( $part );
$capabilities[ $part ] = array(
'state' => $partObj->getState(),
'state_key' => $partObj->getStateKey(),
'capabilities' => $partObj->getAllCaps(),
);
}
return $capabilities;
}
/**
* @param $data
*
* @return string
*/
function vc_generate_nonce( $data ) {
return wp_create_nonce( is_array( $data ) ? ( 'vc-nonce-' . implode( '|', $data ) ) : ( 'vc-nonce-' . $data ) );
}
/**
* @param $nonce
* @param $data
*
* @return bool
*/
function vc_verify_nonce( $nonce, $data ) {
return (bool) wp_verify_nonce( $nonce, ( is_array( $data ) ? ( 'vc-nonce-' . implode( '|', $data ) ) : ( 'vc-nonce-' . $data ) ) );
}
/**
* @param $nonce
*
* @return bool
*/
function vc_verify_admin_nonce( $nonce = '' ) {
return (bool) vc_verify_nonce( ! empty( $nonce ) ? $nonce : vc_request_param( '_vcnonce' ), 'vc-admin-nonce' );
}
/**
* @param $nonce
*
* @return bool
*/
function vc_verify_public_nonce( $nonce = '' ) {
return (bool) vc_verify_nonce( ( ! empty( $nonce ) ? $nonce : vc_request_param( '_vcnonce' ) ), 'vc-public-nonce' );
}
/**
* @param $type
* @return bool|mixed|void
* @throws \Exception
*/
function vc_check_post_type( $type ) {
if ( empty( $type ) ) {
$type = get_post_type();
}
$valid = apply_filters( 'vc_check_post_type_validation', null, $type );
if ( is_null( $valid ) ) {
if ( is_multisite() && is_super_admin() ) {
return true;
}
$state = vc_user_access()->part( 'post_types' )->getState();
if ( null === $state ) {
return in_array( $type, vc_default_editor_post_types(), true );
} elseif ( true === $state && ! in_array( $type, vc_default_editor_post_types(), true ) ) {
$valid = false;
} else {
$valid = vc_user_access()->part( 'post_types' )->can( $type )->get();
}
}
return $valid;
}
/**
* @param $shortcode
* @return bool|mixed|void
*/
function vc_user_access_check_shortcode_edit( $shortcode ) {
$do_check = apply_filters( 'vc_user_access_check-shortcode_edit', null, $shortcode );
if ( is_null( $do_check ) ) {
$state_check = vc_user_access()->part( 'shortcodes' )->checkStateAny( true, 'edit', null )->get();
if ( $state_check ) {
return true;
} else {
return vc_user_access()->part( 'shortcodes' )->canAny( $shortcode . '_all', $shortcode . '_edit' )->get();
}
} else {
return $do_check;
}
}
/**
* @param $shortcode
* @return bool|mixed|void
* @throws \Exception
*/
function vc_user_access_check_shortcode_all( $shortcode ) {
$do_check = apply_filters( 'vc_user_access_check-shortcode_all', null, $shortcode );
if ( is_null( $do_check ) ) {
return vc_user_access()->part( 'shortcodes' )->checkStateAny( true, 'custom', null )->can( $shortcode . '_all' )->get();
} else {
return $do_check;
}
}
/**
* htmlspecialchars_decode_deep
* Call the htmlspecialchars_decode to a gived multilevel array
*
* @param mixed $value The value to be stripped.
*
* @return mixed Stripped value.
* @since 4.8
*
*/
function vc_htmlspecialchars_decode_deep( $value ) {
if ( is_array( $value ) ) {
$value = array_map( 'vc_htmlspecialchars_decode_deep', $value );
} elseif ( is_object( $value ) ) {
$vars = get_object_vars( $value );
foreach ( $vars as $key => $data ) {
$value->{$key} = vc_htmlspecialchars_decode_deep( $data );
}
} elseif ( is_string( $value ) ) {
$value = htmlspecialchars_decode( $value );
}
return $value;
}
/**
* @param $str
* @return mixed
*/
function vc_str_remove_protocol( $str ) {
return str_replace( array(
'https://',
'http://',
), '//', $str );
}
classes/updaters/class-vc-updater.php 0000644 00000011536 15021217214 0013717 0 ustar 00 auto_updater = $updater;
}
/**
* Getter for manager updater.
*
* @return Vc_Updating_Manager|bool
*/
public function updateManager() {
return $this->auto_updater;
}
/**
* Get url for version validation
* @return string
*/
public function versionUrl() {
return $this->version_url;
}
/**
* Get unique, short-lived download link
*
* @return array|boolean JSON response or false if request failed
*/
public function getDownloadUrl() {
$url = $this->getUrl();
// FIX SSL SNI
$filter_add = true;
if ( function_exists( 'curl_version' ) ) {
$version = curl_version();
if ( version_compare( $version['version'], '7.18', '>=' ) ) {
$filter_add = false;
}
}
if ( $filter_add ) {
add_filter( 'https_ssl_verify', '__return_false' );
}
$response = wp_remote_get( $url, array( 'timeout' => 30 ) );
if ( $filter_add ) {
remove_filter( 'https_ssl_verify', '__return_false' );
}
if ( is_wp_error( $response ) ) {
return false;
}
return json_decode( $response['body'], true );
}
/**
* @return string
*/
protected function getUrl() {
$host = esc_url( vc_license()->getSiteUrl() );
$key = rawurlencode( vc_license()->getLicenseKey() );
$url = $this->download_link_url . '?product=vc&url=' . $host . '&key=' . $key . '&version=' . WPB_VC_VERSION;
return $url;
}
/**
* @return string|void
*/
public static function getUpdaterUrl() {
return vc_is_network_plugin() ? network_admin_url( 'admin.php?page=vc-updater' ) : admin_url( 'admin.php?page=vc-updater' );
}
/**
* Get link to newest VC
*
* @param $reply
* @param $package
* @param WP_Upgrader $updater
*
* @return mixed|string|WP_Error
*/
public function preUpgradeFilter( $reply, $package, $updater ) {
$condition1 = isset( $updater->skin->plugin ) && vc_plugin_name() === $updater->skin->plugin;
// Must use I18N otherwise France or other languages will not work
$condition2 = isset( $updater->skin->plugin_info ) && __( 'WPBakery Page Builder', 'js_composer' ) === $updater->skin->plugin_info['Name'];
if ( ! $condition1 && ! $condition2 ) {
return $reply;
}
$res = $updater->fs_connect( array( WP_CONTENT_DIR ) );
if ( ! $res ) {
return new WP_Error( 'no_credentials', esc_html__( "Error! Can't connect to filesystem", 'js_composer' ) );
}
if ( ! vc_license()->isActivated() ) {
if ( vc_is_as_theme() && vc_get_param( 'action' ) !== 'update-selected' ) {
return false;
}
$url = self::getUpdaterUrl();
return new WP_Error( 'no_credentials', sprintf( esc_html__( 'To receive automatic updates license activation is required. Please visit %sSettings%s to activate your WPBakery Page Builder.', 'js_composer' ), '', ' ' ) . ' ' . sprintf( ' %s ', esc_html__( 'Got WPBakery Page Builder in theme?', 'js_composer' ) ) );
}
$updater->strings['downloading_package_url'] = esc_html__( 'Getting download link...', 'js_composer' );
$updater->skin->feedback( 'downloading_package_url' );
$response = $this->getDownloadUrl();
if ( ! $response ) {
return new WP_Error( 'no_credentials', esc_html__( 'Download link could not be retrieved', 'js_composer' ) );
}
if ( ! $response['status'] ) {
return new WP_Error( 'no_credentials', $response['error'] );
}
$updater->strings['downloading_package'] = esc_html__( 'Downloading package...', 'js_composer' );
$updater->skin->feedback( 'downloading_package' );
$downloaded_archive = download_url( $response['url'] );
if ( is_wp_error( $downloaded_archive ) ) {
return $downloaded_archive;
}
$plugin_directory_name = dirname( vc_plugin_name() );
// WP will use same name for plugin directory as archive name, so we have to rename it
if ( basename( $downloaded_archive, '.zip' ) !== $plugin_directory_name ) {
$new_archive_name = dirname( $downloaded_archive ) . '/' . $plugin_directory_name . time() . '.zip';
if ( rename( $downloaded_archive, $new_archive_name ) ) {
$downloaded_archive = $new_archive_name;
}
}
return $downloaded_archive;
}
}
classes/updaters/class-vc-updating-manager.php 0000644 00000012363 15021217214 0015475 0 ustar 00 current_version = $current_version;
$this->update_path = $update_path;
$this->plugin_slug = $plugin_slug;
$t = explode( '/', $plugin_slug );
$this->slug = str_replace( '.php', '', $t[1] );
// define the alternative API for updating checking
add_filter( 'pre_set_site_transient_update_plugins', array(
$this,
'check_update',
) );
// Define the alternative response for information checking
add_filter( 'plugins_api', array(
$this,
'check_info',
), 10, 3 );
add_action( 'in_plugin_update_message-' . vc_plugin_name(), array(
$this,
'addUpgradeMessageLink',
) );
}
/**
* Add our self-hosted autoupdate plugin to the filter transient
*
* @param $transient
*
* @return object $ transient
*/
public function check_update( $transient ) {
// Extra check for 3rd plugins
if ( isset( $transient->response[ $this->plugin_slug ] ) ) {
return $transient;
}
// Get the remote version
$remote_version = $this->getRemote_version();
// If a newer version is available, add the update
if ( version_compare( $this->current_version, $remote_version, '<' ) ) {
$obj = new stdClass();
$obj->slug = $this->slug;
$obj->new_version = $remote_version;
$obj->plugin = $this->plugin_slug;
$obj->url = '';
$obj->package = vc_license()->isActivated();
$obj->name = vc_updater()->title;
$transient->response[ $this->plugin_slug ] = $obj;
}
return $transient;
}
/**
* Add our self-hosted description to the filter
*
* @param bool $false
* @param array $action
* @param object $arg
*
* @return bool|object
*/
public function check_info( $false, $action, $arg ) {
if ( isset( $arg->slug ) && $arg->slug === $this->slug ) {
$information = $this->getRemote_information();
$array_pattern = array(
'/^([\*\s])*(\d\d\.\d\d\.\d\d\d\d[^\n]*)/m',
'/^\n+|^[\t\s]*\n+/m',
'/\n/',
);
$array_replace = array(
'$2 ',
'',
'
',
);
$information->name = vc_updater()->title;
$information->sections = (array) $information->sections;
$information->sections['changelog'] = '
' . preg_replace( $array_pattern, $array_replace, $information->sections['changelog'] ) . '
';
return $information;
}
return $false;
}
/**
* Return the remote version
*
* @return string $remote_version
*/
public function getRemote_version() {
// FIX SSL SNI
$filter_add = true;
if ( function_exists( 'curl_version' ) ) {
$version = curl_version();
if ( version_compare( $version['version'], '7.18', '>=' ) ) {
$filter_add = false;
}
}
if ( $filter_add ) {
add_filter( 'https_ssl_verify', '__return_false' );
}
$request = wp_remote_get( $this->update_path, array( 'timeout' => 30 ) );
if ( $filter_add ) {
remove_filter( 'https_ssl_verify', '__return_false' );
}
if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) {
return $request['body'];
}
return false;
}
/**
* Get information about the remote version
*
* @return bool|object
*/
public function getRemote_information() {
// FIX SSL SNI
$filter_add = true;
if ( function_exists( 'curl_version' ) ) {
$version = curl_version();
if ( version_compare( $version['version'], '7.18', '>=' ) ) {
$filter_add = false;
}
}
if ( $filter_add ) {
add_filter( 'https_ssl_verify', '__return_false' );
}
$request = wp_remote_get( $this->update_path . 'information.json', array( 'timeout' => 30 ) );
if ( $filter_add ) {
remove_filter( 'https_ssl_verify', '__return_false' );
}
if ( ! is_wp_error( $request ) || wp_remote_retrieve_response_code( $request ) === 200 ) {
return json_decode( $request['body'] );
}
return false;
}
/**
* Shows message on Wp plugins page with a link for updating from envato.
*/
public function addUpgradeMessageLink() {
$is_activated = vc_license()->isActivated();
if ( ! $is_activated ) {
$url = vc_updater()->getUpdaterUrl();
echo sprintf( ' ' . esc_html__( 'To receive automatic updates license activation is required. Please visit %ssettings%s to activate your WPBakery Page Builder.', 'js_composer' ), '
', ' ' ) . sprintf( '
%s ', esc_html__( 'Got WPBakery Page Builder in theme?', 'js_composer' ) );
}
}
}
classes/shortcodes/vc-cta-button2.php 0000644 00000000327 15021217214 0013634 0 ustar 00 ' . do_shortcode( '[vc_tab title="' . esc_attr__( 'Slide', 'js_composer' ) . '" tab_id=""][/vc_tab]' ) . '
';
}
}
classes/shortcodes/vc-section.php 0000644 00000012543 15021217214 0013141 0 ustar 00 shortcodeScripts();
}
protected function shortcodeScripts() {
wp_register_script( 'vc_jquery_skrollr_js', vc_asset_url( 'lib/bower/skrollr/dist/skrollr.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_youtube_iframe_api_js', 'https://www.youtube.com/iframe_api', array(), WPB_VC_VERSION, true );
}
/**
* @return string
* @throws \Exception
*/
public function cssAdminClass() {
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? ' wpb_sortable' : ' ' . $this->nonDraggableClass );
return 'wpb_' . $this->settings['base'] . $sortable . '' . ( ! empty( $this->settings['class'] ) ? ' ' . $this->settings['class'] : '' );
}
/**
* @param string $controls
* @param string $extended_css
* @return string
* @throws \Exception
*/
public function getColumnControls( $controls = 'full', $extended_css = '' ) {
$controls_start = '';
$output = '
';
$controls_end = '
';
// Create columns
$controls_move = '
';
$moveAccess = vc_user_access()->part( 'dragndrop' )->checkStateAny( true, null )->get();
if ( ! $moveAccess ) {
$controls_move = '';
}
$controls_add = '
';
$controls_delete = '
';
$controls_edit = '
';
$controls_clone = '
';
$editAccess = vc_user_access_check_shortcode_edit( $this->shortcode );
$allAccess = vc_user_access_check_shortcode_all( $this->shortcode );
$row_edit_clone_delete = '
';
if ( 'add' === $controls ) {
return $controls_start . $controls_add . $controls_end;
}
if ( $allAccess ) {
$row_edit_clone_delete .= $controls_delete . $controls_clone . $controls_edit;
} elseif ( $editAccess ) {
$row_edit_clone_delete .= $controls_edit;
}
$row_edit_clone_delete .= ' ';
if ( $allAccess ) {
$output .= '
' . $controls_move . $controls_add . '
' . $row_edit_clone_delete . $controls_end;
} elseif ( $editAccess ) {
$output .= $row_edit_clone_delete . $controls_end;
} else {
$output .= $row_edit_clone_delete . $controls_end;
}
return $output;
}
/**
* @param $atts
* @param null $content
* @return string
* @throws \Exception
*/
public function contentAdmin( $atts, $content = null ) {
$width = '';
$atts = shortcode_atts( $this->predefined_atts, $atts );
$output = '';
$column_controls = $this->getColumnControls();
$output .= '
';
$output .= str_replace( '%column_size%', 1, $column_controls );
$output .= '
';
if ( isset( $this->settings['custom_markup'] ) && '' !== $this->settings['custom_markup'] ) {
$markup = $this->settings['custom_markup'];
$output .= $this->customMarkup( $markup );
} else {
$output .= '
containerHtmlBlockParams( $width, 1 ) . '>';
$output .= do_shortcode( shortcode_unautop( $content ) );
$output .= '
';
}
if ( isset( $this->settings['params'] ) ) {
$inner = '';
foreach ( $this->settings['params'] as $param ) {
if ( ! isset( $param['param_name'] ) ) {
continue;
}
$param_value = isset( $atts[ $param['param_name'] ] ) ? $atts[ $param['param_name'] ] : '';
if ( is_array( $param_value ) ) {
// Get first element from the array
reset( $param_value );
$first_key = key( $param_value );
$param_value = $param_value[ $first_key ];
}
$inner .= $this->singleParamHtmlHolder( $param, $param_value );
}
$output .= $inner;
}
$output .= '
';
if ( $this->backened_editor_prepend_controls ) {
$output .= $this->getColumnControls( 'add', 'vc_section-bottom-controls bottom-controls' );
}
$output .= '
';
return $output;
}
}
classes/shortcodes/vc-button.php 0000644 00000000761 15021217214 0013007 0 ustar 00 settings( 'icon' );
return '
';
}
}
classes/shortcodes/vc-widget-sidebar.php 0000644 00000000264 15021217214 0014364 0 ustar 00 '1/1' );
foreach ( $this->settings['params'] as $param ) {
if ( 'content' !== $param['param_name'] ) {
$shortcode_attributes[ $param['param_name'] ] = isset( $param['value'] ) ? $param['value'] : null;
} elseif ( 'content' === $param['param_name'] && null === $content ) {
$content = $param['value'];
}
}
extract( shortcode_atts( $shortcode_attributes, $atts ) );
// Extract tab titles
preg_match_all( '/vc_tab title="([^\"]+)"(\stab_id\=\"([^\"]+)\"){0,1}/i', $content, $matches, PREG_OFFSET_CAPTURE );
$tab_titles = array();
if ( isset( $matches[0] ) ) {
$tab_titles = $matches[0];
}
$tmp = '';
if ( count( $tab_titles ) ) {
$tmp .= '
';
foreach ( $tab_titles as $tab ) {
preg_match( '/title="([^\"]+)"(\stab_id\=\"([^\"]+)\"){0,1}/i', $tab[0], $tab_matches, PREG_OFFSET_CAPTURE );
if ( isset( $tab_matches[1][0] ) ) {
$tmp .= '' . $tab_matches[1][0] . ' ';
}
}
$tmp .= ' ' . "\n";
}
$elem = $this->getElementHolder( $width );
$iner = '';
foreach ( $this->settings['params'] as $param ) {
$param_value = isset( ${$param['param_name']} ) ? ${$param['param_name']} : '';
if ( is_array( $param_value ) ) {
// Get first element from the array
reset( $param_value );
$first_key = key( $param_value );
$param_value = $param_value[ $first_key ];
}
$iner .= $this->singleParamHtmlHolder( $param, $param_value );
}
if ( isset( $this->settings['custom_markup'] ) && '' !== $this->settings['custom_markup'] ) {
if ( '' !== $content ) {
$custom_markup = str_ireplace( '%content%', $tmp . $content, $this->settings['custom_markup'] );
} elseif ( '' === $content && isset( $this->settings['default_content_in_template'] ) && '' !== $this->settings['default_content_in_template'] ) {
$custom_markup = str_ireplace( '%content%', $this->settings['default_content_in_template'], $this->settings['custom_markup'] );
} else {
$custom_markup = str_ireplace( '%content%', '', $this->settings['custom_markup'] );
}
$iner .= do_shortcode( $custom_markup );
}
$elem = str_ireplace( '%wpb_element_content%', $iner, $elem );
$output = $elem;
return $output;
}
/**
* @return string
*/
public function getTabTemplate() {
return '
' . do_shortcode( '[vc_tab title="Tab" tab_id=""][/vc_tab]' ) . '
';
}
/**
* @param $content
* @return string|string[]|null
*/
public function setCustomTabId( $content ) {
return preg_replace( '/tab\_id\=\"([^\"]+)\"/', 'tab_id="$1-' . time() . '"', $content );
}
}
classes/shortcodes/vc-gitem-animated-block.php 0000644 00000004000 15021217214 0015437 0 ustar 00 ' . '
' . '
';
$output .= '' . '
' . '
';
return $output;
}
/**
* @param $width
* @param $i
* @return string
*/
public function containerHtmlBlockParams( $width, $i ) {
return 'class="vc_gitem-animated-block-content"';
}
/**
* @return array
*/
public static function animations() {
return array(
esc_html__( 'Single block (no animation)', 'js_composer' ) => '',
esc_html__( 'Double block (no animation)', 'js_composer' ) => 'none',
esc_html__( 'Fade in', 'js_composer' ) => 'fadeIn',
esc_html__( 'Scale in', 'js_composer' ) => 'scaleIn',
esc_html__( 'Scale in with rotation', 'js_composer' ) => 'scaleRotateIn',
esc_html__( 'Blur out', 'js_composer' ) => 'blurOut',
esc_html__( 'Blur scale out', 'js_composer' ) => 'blurScaleOut',
esc_html__( 'Slide in from left', 'js_composer' ) => 'slideInRight',
esc_html__( 'Slide in from right', 'js_composer' ) => 'slideInLeft',
esc_html__( 'Slide bottom', 'js_composer' ) => 'slideBottom',
esc_html__( 'Slide top', 'js_composer' ) => 'slideTop',
esc_html__( 'Vertical flip in with fade', 'js_composer' ) => 'flipFadeIn',
esc_html__( 'Horizontal flip in with fade', 'js_composer' ) => 'flipHorizontalFadeIn',
esc_html__( 'Go top', 'js_composer' ) => 'goTop20',
esc_html__( 'Go bottom', 'js_composer' ) => 'goBottom20',
);
}
}
classes/shortcodes/vc-media-grid.php 0000644 00000007366 15021217214 0013506 0 ustar 00 shortcode . '_items_list', array(
$this,
'setItemsIfEmpty',
) );
}
/**
* @return mixed|string
*/
protected function getFileName() {
return 'vc_basic_grid';
}
/**
* @param $max_items
*/
protected function setPagingAll( $max_items ) {
$this->atts['items_per_page'] = $this->atts['query_items_per_page'] = apply_filters( 'vc_basic_grid_items_per_page_all_max_items', self::$default_max_items );
}
/**
* @param $atts
* @return array
*/
public function buildQuery( $atts ) {
if ( empty( $atts['include'] ) ) {
$atts['include'] = - 1;
}
$settings = array(
'include' => $atts['include'],
'posts_per_page' => apply_filters( 'vc_basic_grid_max_items', self::$default_max_items ),
'offset' => 0,
'post_type' => 'attachment',
'orderby' => 'post__in',
);
return $settings;
}
/**
* @param $items
* @return string
*/
public function setItemsIfEmpty( $items ) {
if ( empty( $items ) ) {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' );
$grid_item = new Vc_Grid_Item();
$grid_item->setGridAttributes( $this->atts );
$grid_item->shortcodes();
$item = '[vc_gitem] [/vc_gitem]';
$grid_item->parseTemplate( $item );
$items = str_repeat( $grid_item->renderItem( get_post( (int) vc_request_param( 'vc_post_id' ) ) ), 3 );
}
return $items;
}
/**
* @param $param
* @param $value
* @return string
*/
public function singleParamHtmlHolder( $param, $value ) {
$output = '';
// Compatibility fixes
// TODO: check $old_names & &new_names. Leftover from copypasting?
$old_names = array(
'yellow_message',
'blue_message',
'green_message',
'button_green',
'button_grey',
'button_yellow',
'button_blue',
'button_red',
'button_orange',
);
$new_names = array(
'alert-block',
'alert-info',
'alert-success',
'btn-success',
'btn',
'btn-info',
'btn-primary',
'btn-danger',
'btn-warning',
);
$value = str_ireplace( $old_names, $new_names, $value );
$param_name = isset( $param['param_name'] ) ? $param['param_name'] : '';
$type = isset( $param['type'] ) ? $param['type'] : '';
$class = isset( $param['class'] ) ? $param['class'] : '';
if ( isset( $param['holder'] ) && 'hidden' !== $param['holder'] ) {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . '' . $param['holder'] . '>';
}
if ( 'include' === $param_name ) {
$images_ids = empty( $value ) ? array() : explode( ',', trim( $value ) );
$output .= '';
foreach ( $images_ids as $image ) {
$img = wpb_getImageBySize( array(
'attach_id' => (int) $image,
'thumb_size' => 'thumbnail',
) );
$output .= ( $img ? '' . $img['thumbnail'] . ' ' : ' ' );
}
$output .= ' ';
$output .= '' . esc_html__( 'Add images', 'js_composer' ) . ' ';
}
return $output;
}
}
classes/shortcodes/vc-posts-slider.php 0000644 00000000260 15021217214 0014116 0 ustar 00 getShortcode(), $atts );
extract( $atts );
$css = isset( $atts['css'] ) ? $atts['css'] : '';
$el_class = isset( $atts['el_class'] ) ? $atts['el_class'] : '';
$class_to_filter = 'wpb_googleplus vc_social-placeholder wpb_content_element vc_socialtype-' . $type;
$class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation );
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts );
return '
';
}
}
classes/shortcodes/vc-pie.php 0000644 00000003020 15021217214 0012240 0 ustar 00 jsScripts();
}
public function jsScripts() {
wp_register_script( 'vc_waypoints', vc_asset_url( 'lib/vc_waypoints/vc-waypoints.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'progressCircle', vc_asset_url( 'lib/bower/progress-circle/ProgressCircle.min.js' ), array(), WPB_VC_VERSION, true );
wp_register_script( 'vc_pie', vc_asset_url( 'lib/vc_chart/jquery.vc_chart.min.js' ), array(
'jquery',
'vc_waypoints',
'progressCircle',
), WPB_VC_VERSION, true );
}
/**
* Convert old color names to new ones for BC
*
* @param array $atts
*
* @return array
*/
public static function convertOldColorsToNew( $atts ) {
$map = array(
'btn-primary' => '#0088cc',
'btn-success' => '#6ab165',
'btn-warning' => '#ff9900',
'btn-inverse' => '#555555',
'btn-danger' => '#ff675b',
'btn-info' => '#58b9da',
'primary' => '#0088cc',
'success' => '#6ab165',
'warning' => '#ff9900',
'inverse' => '#555555',
'danger' => '#ff675b',
'info' => '#58b9da',
'default' => '#f7f7f7',
);
if ( isset( $atts['color'] ) && isset( $map[ $atts['color'] ] ) ) {
$atts['custom_color'] = $map[ $atts['color'] ];
$atts['color'] = 'custom';
}
return $atts;
}
}
classes/shortcodes/vc-row-inner.php 0000644 00000000633 15021217214 0013412 0 ustar 00 contentAdmin( $this->atts );
}
}
classes/shortcodes/vc-raw-html.php 0000644 00000003345 15021217214 0013230 0 ustar 00 %s%s> ', $param['holder'], $param_name, $type, $class, $param_name, htmlentities( rawurldecode( base64_decode( wp_strip_all_tags( $value ) ) ), ENT_COMPAT, 'UTF-8' ), $param['holder'], $param_name, $param_name, wp_strip_all_tags( $value ) );
} else {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . '' . $param['holder'] . '>';
}
}
return $output;
}
}
classes/shortcodes/vc-gitem-post-excerpt.php 0000644 00000001115 15021217214 0015226 0 ustar 00 ';
foreach ( array_slice( $vc_row_layouts, 0, 4 ) as $layout ) {
$controls_layout .= ' ';
}
$controls_layout .= '';
return $controls_layout;
}
}
classes/shortcodes/vc-accordion-tab.php 0000644 00000010154 15021217214 0014176 0 ustar 00 getShortcode(), $atts ) );
$output = '';
$column_controls = $this->getColumnControls( $this->settings( 'controls' ) );
$column_controls_bottom = $this->getColumnControls( 'add', 'bottom-controls' );
if ( 'column_14' === $width || '1/4' === $width ) {
$width = array( 'vc_col-sm-3' );
} elseif ( 'column_14-14-14-14' === $width ) {
$width = array(
'vc_col-sm-3',
'vc_col-sm-3',
'vc_col-sm-3',
'vc_col-sm-3',
);
} elseif ( 'column_13' === $width || '1/3' === $width ) {
$width = array( 'vc_col-sm-4' );
} elseif ( 'column_13-23' === $width ) {
$width = array(
'vc_col-sm-4',
'vc_col-sm-8',
);
} elseif ( 'column_13-13-13' === $width ) {
$width = array(
'vc_col-sm-4',
'vc_col-sm-4',
'vc_col-sm-4',
);
} elseif ( 'column_12' === $width || '1/2' === $width ) {
$width = array( 'vc_col-sm-6' );
} elseif ( 'column_12-12' === $width ) {
$width = array(
'vc_col-sm-6',
'vc_col-sm-6',
);
} elseif ( 'column_23' === $width || '2/3' === $width ) {
$width = array( 'vc_col-sm-8' );
} elseif ( 'column_34' === $width || '3/4' === $width ) {
$width = array( 'vc_col-sm-9' );
} elseif ( 'column_16' === $width || '1/6' === $width ) {
$width = array( 'vc_col-sm-2' );
} else {
$width = array( '' );
}
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? 'wpb_sortable' : $this->nonDraggableClass );
$count = count( $width );
for ( $i = 0; $i < $count; $i ++ ) {
$output .= '';
$output .= '
<%= params.title %> ';
$output .= '
mainHtmlBlockParams( $width, $i ) . '>';
$output .= str_replace( '%column_size%', wpb_translateColumnWidthToFractional( $width[ $i ] ), $column_controls );
$output .= '
';
$output .= '
containerHtmlBlockParams( $width, $i ) . '>';
$output .= do_shortcode( shortcode_unautop( $content ) );
$output .= '
';
if ( isset( $this->settings['params'] ) ) {
$inner = '';
foreach ( $this->settings['params'] as $param ) {
$param_value = isset( ${$param['param_name']} ) ? ${$param['param_name']} : '';
if ( is_array( $param_value ) ) {
// Get first element from the array
reset( $param_value );
$first_key = key( $param_value );
$param_value = $param_value[ $first_key ];
}
$inner .= $this->singleParamHtmlHolder( $param, $param_value );
}
$output .= $inner;
}
$output .= '
';
$output .= str_replace( '%column_size%', wpb_translateColumnWidthToFractional( $width[ $i ] ), $column_controls_bottom );
$output .= '
';
$output .= '
';
}
return $output;
}
/**
* @param $width
* @param $i
* @return string
*/
public function mainHtmlBlockParams( $width, $i ) {
return 'data-element_type="' . esc_attr( $this->settings['base'] ) . '" class=" wpb_' . esc_attr( $this->settings['base'] ) . '"' . $this->customAdminBlockParams();
}
/**
* @param $width
* @param $i
* @return string
*/
public function containerHtmlBlockParams( $width, $i ) {
return 'class="wpb_column_container vc_container_for_children"';
}
/**
* @param $title
* @return string
*/
protected function outputTitle( $title ) {
return '';
}
/**
* @return string
*/
public function customAdminBlockParams() {
return '';
}
}
classes/shortcodes/vc-round-chart.php 0000644 00000001476 15021217214 0013726 0 ustar 00 jsScripts();
}
public function jsScripts() {
wp_register_script( 'vc_waypoints', vc_asset_url( 'lib/vc_waypoints/vc-waypoints.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'ChartJS', vc_asset_url( 'lib/bower/chartjs/Chart.min.js' ), array(), WPB_VC_VERSION, true );
wp_register_script( 'vc_round_chart', vc_asset_url( 'lib/vc_round_chart/vc_round_chart.min.js' ), array(
'jquery',
'vc_waypoints',
'ChartJS',
), WPB_VC_VERSION, true );
}
}
classes/shortcodes/vc-empty-space.php 0000644 00000000256 15021217214 0013722 0 ustar 00 getVcIcon( $atts );
$main_wrapper_classes[] = 'vc_cta3-icons-' . $atts['add_icon'];
}
if ( ! empty( $atts['add_button'] ) ) {
$output[ 'actions-' . $atts['add_button'] ] = $this->getButton( $atts );
$main_wrapper_classes[] = 'vc_cta3-actions-' . $atts['add_button'];
}
if ( ! empty( $atts['css_animation'] ) ) {
$main_wrapper_classes[] = $this->getCSSAnimation( $atts['css_animation'] );
}
if ( ! empty( $atts['css'] ) ) {
$main_wrapper_classes[] = vc_shortcode_custom_css_class( $atts['css'] );
}
$output['content'] = wpb_js_remove_wpautop( $content, true );
$output['heading1'] = $this->getHeading( 'h2', $atts );
$output['heading2'] = $this->getHeading( 'h4', $atts );
$output['css-class'] = $main_wrapper_classes;
$output['container-class'] = $container_classes;
$output['inline-css'] = $inline_css;
$this->template_vars = $output;
}
/**
* @param $tag
* @param $atts
* @return string
* @throws \Exception
*/
public function getHeading( $tag, $atts ) {
if ( isset( $atts[ $tag ] ) && '' !== trim( $atts[ $tag ] ) ) {
if ( isset( $atts[ 'use_custom_fonts_' . $tag ] ) && 'true' === $atts[ 'use_custom_fonts_' . $tag ] ) {
$custom_heading = visual_composer()->getShortCode( 'vc_custom_heading' );
$data = vc_map_integrate_parse_atts( $this->shortcode, 'vc_custom_heading', $atts, $tag . '_' );
$data['font_container'] = implode( '|', array_filter( array(
'tag:' . $tag,
$data['font_container'],
) ) );
$data['text'] = $atts[ $tag ]; // provide text to shortcode
return $custom_heading->render( array_filter( $data ) );
} else {
$inline_css = array();
$inline_css_string = '';
if ( isset( $atts['style'] ) && 'custom' === $atts['style'] ) {
if ( ! empty( $atts['custom_text'] ) ) {
$inline_css[] = vc_get_css_color( 'color', $atts['custom_text'] );
}
}
if ( ! empty( $inline_css ) ) {
$inline_css_string = ' style="' . implode( '', $inline_css ) . '"';
}
return '<' . $tag . $inline_css_string . '>' . $atts[ $tag ] . '' . $tag . '>';
}
}
return '';
}
/**
* @param $atts
* @return string
* @throws \Exception
*/
public function getButton( $atts ) {
$data = vc_map_integrate_parse_atts( $this->shortcode, 'vc_btn', $atts, 'btn_' );
if ( $data ) {
$btn = visual_composer()->getShortCode( 'vc_btn' );
if ( is_object( $btn ) ) {
return '' . $btn->render( array_filter( $data ) ) . '
';
}
}
return '';
}
/**
* @param $atts
* @return string
* @throws \Exception
*/
public function getVcIcon( $atts ) {
if ( empty( $atts['i_type'] ) ) {
$atts['i_type'] = 'fontawesome';
}
$data = vc_map_integrate_parse_atts( $this->shortcode, 'vc_icon', $atts, 'i_' );
if ( $data ) {
$icon = visual_composer()->getShortCode( 'vc_icon' );
if ( is_object( $icon ) ) {
return '' . $icon->render( array_filter( $data ) ) . '
';
}
}
return '';
}
/**
* @param $string
* @return mixed|string
*/
public function getTemplateVariable( $string ) {
if ( is_array( $this->template_vars ) && isset( $this->template_vars[ $string ] ) ) {
return $this->template_vars[ $string ];
}
return '';
}
}
classes/shortcodes/vc-cta-button.php 0000644 00000000326 15021217214 0013551 0 ustar 00 '1/1' );
foreach ( $this->settings['params'] as $param ) {
if ( 'content' !== $param['param_name'] ) {
$shortcode_attributes[ $param['param_name'] ] = isset( $param['value'] ) ? $param['value'] : null;
} elseif ( 'content' === $param['param_name'] && null === $content ) {
$content = $param['value'];
}
}
extract( shortcode_atts( $shortcode_attributes, $atts ) );
$elem = $this->getElementHolder( $width );
$inner = '';
foreach ( $this->settings['params'] as $param ) {
$param_value = isset( ${$param['param_name']} ) ? ${$param['param_name']} : '';
if ( is_array( $param_value ) ) {
// Get first element from the array
reset( $param_value );
$first_key = key( $param_value );
$param_value = $param_value[ $first_key ];
}
$inner .= $this->singleParamHtmlHolder( $param, $param_value );
}
$tmp = '';
if ( isset( $this->settings['custom_markup'] ) && '' !== $this->settings['custom_markup'] ) {
if ( '' !== $content ) {
$custom_markup = str_ireplace( '%content%', $tmp . $content, $this->settings['custom_markup'] );
} elseif ( '' === $content && isset( $this->settings['default_content_in_template'] ) && '' !== $this->settings['default_content_in_template'] ) {
$custom_markup = str_ireplace( '%content%', $this->settings['default_content_in_template'], $this->settings['custom_markup'] );
} else {
$custom_markup = str_ireplace( '%content%', '', $this->settings['custom_markup'] );
}
$inner .= do_shortcode( $custom_markup );
}
$output = str_ireplace( '%wpb_element_content%', $inner, $elem );
return $output;
}
}
classes/shortcodes/vc-column-inner.php 0000644 00000000372 15021217214 0014100 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Tta_Accordion' );
/**
* Class WPBakeryShortCode_Vc_Tta_Section
*/
class WPBakeryShortCode_Vc_Tta_Section extends WPBakeryShortCode_Vc_Tta_Accordion {
protected $controls_css_settings = 'tc vc_control-container';
protected $controls_list = array(
'add',
'edit',
'clone',
'delete',
);
protected $backened_editor_prepend_controls = false;
/**
* @var WPBakeryShortCode_Vc_Tta_Accordion
*/
public static $tta_base_shortcode;
public static $self_count = 0;
public static $section_info = array();
/**
* @return mixed|string
*/
public function getFileName() {
if ( isset( self::$tta_base_shortcode ) && 'vc_tta_pageable' === self::$tta_base_shortcode->getShortcode() ) {
return 'vc_tta_pageable_section';
} else {
return 'vc_tta_section';
}
}
/**
* @return string
*/
public function containerContentClass() {
return 'wpb_column_container vc_container_for_children vc_clearfix';
}
/**
* @return string
*/
public function getElementClasses() {
$classes = array();
$classes[] = 'vc_tta-panel';
$isActive = ! vc_is_page_editable() && $this->getTemplateVariable( 'section-is-active' );
if ( $isActive ) {
$classes[] = $this->activeClass;
}
/**
* @since 4.6.2
*/
if ( isset( $this->atts['el_class'] ) ) {
$classes[] = $this->atts['el_class'];
}
return implode( ' ', array_filter( $classes ) );
}
/**
* @param $atts
* @param $content
*
* @return string
*/
public function getParamContent( $atts, $content ) {
return wpb_js_remove_wpautop( $content );
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTabId( $atts, $content ) {
if ( isset( $atts['tab_id'] ) && strlen( $atts['tab_id'] ) > 0 ) {
return $atts['tab_id'];
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTitle( $atts, $content ) {
if ( isset( $atts['title'] ) && strlen( $atts['title'] ) > 0 ) {
return $atts['title'];
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamIcon( $atts, $content ) {
if ( ! empty( $atts['add_icon'] ) && 'true' === $atts['add_icon'] ) {
$iconClass = '';
if ( isset( $atts[ 'i_icon_' . $atts['i_type'] ] ) ) {
$iconClass = $atts[ 'i_icon_' . $atts['i_type'] ];
}
vc_icon_element_fonts_enqueue( $atts['i_type'] );
return ' ';
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamIconLeft( $atts, $content ) {
if ( 'left' === $atts['i_position'] ) {
return $this->getParamIcon( $atts, $content );
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamIconRight( $atts, $content ) {
if ( 'right' === $atts['i_position'] ) {
return $this->getParamIcon( $atts, $content );
}
return null;
}
/**
* Section param active
* @param $atts
* @param $content
* @return bool|null
*/
public function getParamSectionIsActive( $atts, $content ) {
if ( is_object( self::$tta_base_shortcode ) ) {
if ( isset( self::$tta_base_shortcode->atts['active_section'] ) && strlen( self::$tta_base_shortcode->atts['active_section'] ) > 0 ) {
$active = (int) self::$tta_base_shortcode->atts['active_section'];
if ( $active === self::$self_count ) {
return true;
}
}
}
return null;
}
/**
* @param $atts
* @param $content
* @return string|null
*/
public function getParamControlIconPosition( $atts, $content ) {
if ( is_object( self::$tta_base_shortcode ) ) {
if ( isset( self::$tta_base_shortcode->atts['c_icon'] ) && strlen( self::$tta_base_shortcode->atts['c_icon'] ) > 0 && isset( self::$tta_base_shortcode->atts['c_position'] ) && strlen( self::$tta_base_shortcode->atts['c_position'] ) > 0 ) {
$c_position = self::$tta_base_shortcode->atts['c_position'];
return 'vc_tta-controls-icon-position-' . $c_position;
}
}
return null;
}
/**
* @param $atts
* @param $content
* @return string|null
*/
public function getParamControlIcon( $atts, $content ) {
if ( is_object( self::$tta_base_shortcode ) ) {
if ( isset( self::$tta_base_shortcode->atts['c_icon'] ) && strlen( self::$tta_base_shortcode->atts['c_icon'] ) > 0 ) {
$c_icon = self::$tta_base_shortcode->atts['c_icon'];
return ' ';
}
}
return null;
}
/**
* @param $atts
* @param $content
* @return string
*/
public function getParamHeading( $atts, $content ) {
$isPageEditable = vc_is_page_editable();
$h4attributes = array();
$h4classes = array(
'vc_tta-panel-title',
);
if ( $isPageEditable ) {
$h4attributes[] = 'data-vc-tta-controls-icon-position=""';
} else {
$controlIconPosition = $this->getTemplateVariable( 'control-icon-position' );
if ( $controlIconPosition ) {
$h4classes[] = $controlIconPosition;
}
}
$h4attributes[] = 'class="' . implode( ' ', $h4classes ) . '"';
$output = ''; // close h4 fix #2229
return $output;
}
/**
* Get basic heading
*
* These are used in Pageable element inside content and are hidden from view
*
* @param $atts
* @param $content
*
* @return string
*/
public function getParamBasicHeading( $atts, $content ) {
$isPageEditable = vc_is_page_editable();
if ( $isPageEditable ) {
$attributes = array(
'href' => 'javascript:;',
'data-vc-container' => '.vc_tta-container',
'data-vc-accordion' => '',
'data-vc-target' => '',
'data-vc-tta-controls-icon-wrapper' => '',
'data-vc-use-cache' => 'false',
);
} else {
$attributes = array(
'data-vc-container' => '.vc_tta-container',
'data-vc-accordion' => '',
'data-vc-target' => esc_attr( '#' . $this->getTemplateVariable( 'tab_id' ) ),
);
}
$output = '
';
return $output;
}
/**
* Check is allowed to add another element inside current element.
*
* @return bool
* @since 4.8
*
*/
public function getAddAllowed() {
return vc_user_access()->part( 'shortcodes' )->checkStateAny( true, 'custom', null )->get();
}
}
classes/shortcodes/vc-masonry-media-grid.php 0000644 00000002622 15021217214 0015162 0 ustar 00 grid_settings['style'] .= '-masonry';
}
/**
* @param $grid_style
* @param $settings
* @param $content
* @return string
*/
protected function contentAllMasonry( $grid_style, $settings, $content ) {
return parent::contentAll( $grid_style, $settings, $content );
}
/**
* @param $grid_style
* @param $settings
* @param $content
* @return string
*/
protected function contentLazyMasonry( $grid_style, $settings, $content ) {
return parent::contentLazy( $grid_style, $settings, $content );
}
/**
* @param $grid_style
* @param $settings
* @param $content
* @return string
*/
protected function contentLoadMoreMasonry( $grid_style, $settings, $content ) {
return parent::contentLoadMore( $grid_style, $settings, $content );
}
}
classes/shortcodes/vc-flickr.php 0000644 00000003553 15021217214 0012750 0 ustar 00 getShortcode(), $atts );
extract( $atts );
$css = isset( $atts['css'] ) ? $atts['css'] : '';
$el_class = isset( $atts['el_class'] ) ? $atts['el_class'] : '';
$class_to_filter = 'wpb_flickr_widget wpb_content_element';
$class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation );
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts );
$params = array(
'title' => $title,
'extraclass' => 'wpb_flickr_heading',
);
$output = sprintf( '
', $css_class, wpb_widget_title( $params ), $count, $display, $type, $type, $flickr_id, $flickr_id, esc_html__( 'View stream on flickr', 'js_composer' ) );
return $output;
}
}
classes/shortcodes/vc-googleplus.php 0000644 00000002557 15021217214 0013661 0 ustar 00 getShortcode(), $atts );
extract( $atts );
if ( strlen( $type ) === 0 ) {
$type = 'standard';
}
if ( strlen( $annotation ) === 0 ) {
$annotation = 'bubble';
}
$css = isset( $atts['css'] ) ? $atts['css'] : '';
$el_class = isset( $atts['el_class'] ) ? $atts['el_class'] : '';
$class_to_filter = 'wpb_googleplus vc_social-placeholder wpb_content_element vc_socialtype-' . $type;
$class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation );
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts );
return '
';
}
}
classes/shortcodes/vc-custom-field.php 0000644 00000000330 15021217214 0014057 0 ustar 00 settings( 'icon' );
return ' ';
}
}
classes/shortcodes/vc-gallery.php 0000644 00000004654 15021217214 0013140 0 ustar 00 shortcodeScripts();
}
public function shortcodeScripts() {
wp_register_script( 'vc_grid-js-imagesloaded', vc_asset_url( 'lib/bower/imagesloaded/imagesloaded.pkgd.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
}
/**
* @param $param
* @param $value
* @return string
*/
public function singleParamHtmlHolder( $param, $value ) {
$output = '';
// Compatibility fixes
$old_names = array(
'yellow_message',
'blue_message',
'green_message',
'button_green',
'button_grey',
'button_yellow',
'button_blue',
'button_red',
'button_orange',
);
$new_names = array(
'alert-block',
'alert-info',
'alert-success',
'btn-success',
'btn',
'btn-info',
'btn-primary',
'btn-danger',
'btn-warning',
);
$value = str_ireplace( $old_names, $new_names, $value );
$param_name = isset( $param['param_name'] ) ? $param['param_name'] : '';
$type = isset( $param['type'] ) ? $param['type'] : '';
$class = isset( $param['class'] ) ? $param['class'] : '';
if ( isset( $param['holder'] ) && 'hidden' !== $param['holder'] ) {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . '' . $param['holder'] . '>';
}
if ( 'images' === $param_name ) {
$images_ids = empty( $value ) ? array() : explode( ',', trim( $value ) );
$output .= '';
foreach ( $images_ids as $image ) {
$img = wpb_getImageBySize( array(
'attach_id' => (int) $image,
'thumb_size' => 'thumbnail',
) );
$output .= ( $img ? '' . $img['thumbnail'] . ' ' : ' ' );
}
$output .= ' ';
$output .= '' . esc_html__( 'Add images', 'js_composer' ) . ' ';
}
return $output;
}
}
classes/shortcodes/rev-slider-vc.php 0000644 00000000254 15021217214 0013545 0 ustar 00 shortcodeScripts();
}
/**
* Register scripts and styles for pager
*/
public function shortcodeScripts() {
wp_register_script( 'vc_pageable_owl-carousel', vc_asset_url( 'lib/owl-carousel2-dist/owl.carousel.min.js' ), array(
'jquery',
), WPB_VC_VERSION, true );
wp_register_script( 'vc_waypoints', vc_asset_url( 'lib/vc_waypoints/vc-waypoints.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_style( 'vc_pageable_owl-carousel-css', vc_asset_url( 'lib/owl-carousel2-dist/assets/owl.min.css' ), array(), WPB_VC_VERSION );
}
/**
* @param $grid_style
* @param $settings
* @param $content
*
* @return string
*/
protected function contentAll( $grid_style, $settings, $content ) {
return '' . $content . '
';
}
/**
* @param $grid_style
* @param $settings
* @param $content
*
* @return string
*/
protected function contentLoadMore( $grid_style, $settings, $content ) {
if ( ! isset( $settings['btn_data'] ) && isset( $settings['button_style'] ) && isset( $settings['button_size'] ) && isset( $settings['button_color'] ) ) {
// BC: for those who overrided
$output = sprintf( '%s
%s
', $content, do_shortcode( '[vc_button2 size="' . $settings['button_size'] . '" title="' . esc_attr__( 'Load more', 'js_composer' ) . '" style="' . $settings['button_style'] . '" color="' . $settings['button_color'] . '" el_class="vc_grid-btn-load_more"]' ) );
return $output;
} elseif ( isset( $settings['btn_data'] ) ) {
$data = $settings['btn_data'];
$data['el_class'] = 'vc_grid-btn-load_more';
$data['link'] = 'load-more-grid';
$button3 = new WPBakeryShortCode_Vc_Btn( array( 'base' => 'vc_btn' ) );
$output = sprintf( '%s
%s
', $content, apply_filters( 'vc_gitem_template_attribute_vc_btn', '', array(
'post' => new stdClass(),
'data' => str_replace( array(
'{{ vc_btn:',
'}}',
), '', $button3->output( $data ) ),
) ) );
return $output;
}
return '';
}
/**
* @param $grid_style
* @param $settings
* @param $content
*
* @return string
*/
protected function contentLazy( $grid_style, $settings, $content ) {
return '' . $content . '
';
}
/**
* @param $grid_style
* @param $settings
* @param string $content
*
* @param string $css_class
*
* @return string
*/
public function renderPagination( $grid_style, $settings, $content = '', $css_class = '' ) {
$css_class .= empty( $css_class ) ? '' : ' vc_pageable-wrapper vc_hook_hover';
$content_method = vc_camel_case( 'content-' . $grid_style );
$content = method_exists( $this, $content_method ) ? $this->$content_method( $grid_style, $settings, $content ) : $content;
$output = '' . $content . '
';
return $output;
}
public function enqueueScripts() {
wp_enqueue_script( 'vc_pageable_owl-carousel' );
wp_enqueue_style( 'vc_pageable_owl-carousel-css' );
wp_enqueue_style( 'vc_animate-css' );
}
/**
* Check is pageable
* @return bool
* @since 4.7.4
*/
public function isObjectPageable() {
return true;
}
/**
* Check can user manage post.
*
* @param int $page_id
*
* @return bool
*/
public function currentUserCanManage( $page_id ) {
return vc_user_access()->wpAny( array(
'edit_post',
(int) $page_id,
) )->get();
}
}
classes/shortcodes/vc-gitem-post-data.php 0000644 00000002316 15021217214 0014471 0 ustar 00 getShortcode(), $atts );
if ( isset( $atts['block_container'] ) && strlen( $atts['block_container'] ) > 0 ) {
if ( ! isset( $atts['font_container'] ) ) {
$atts['font_container'] = $atts['block_container'];
} else {
// merging two params into font_container
$atts['font_container'] .= '|' . $atts['block_container'];
}
}
$atts = parent::getAttributes( $atts );
if ( ! isset( $this->atts['use_custom_fonts'] ) || 'yes' !== $this->atts['use_custom_fonts'] ) {
$atts['google_fonts_data'] = array();
}
return $atts;
}
}
classes/shortcodes/vc-tta-accordion.php 0000644 00000026767 15021217214 0014241 0 ustar 00 atts = $atts;
$this->content = $content;
$this->template_vars = array();
}
/**
* @return bool
* @throws \Exception
*/
public function setGlobalTtaInfo() {
$sectionClass = visual_composer()->getShortCode( 'vc_tta_section' )->shortcodeClass();
$this->sectionClass = $sectionClass;
/** @var WPBakeryShortCode_Vc_Tta_Section $sectionClass */
if ( is_object( $sectionClass ) ) {
VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_Vc_Tta_Section' );
WPBakeryShortCode_Vc_Tta_Section::$tta_base_shortcode = $this;
WPBakeryShortCode_Vc_Tta_Section::$self_count = 0;
WPBakeryShortCode_Vc_Tta_Section::$section_info = array();
return true;
}
return false;
}
/**
* Override default getColumnControls to make it "simple"(blue), as single element has
*
* @param string $controls
* @param string $extended_css
*
* @return string
* @throws \Exception
*/
public function getColumnControls( $controls = 'full', $extended_css = '' ) {
// we don't need containers bottom-controls for tabs
if ( 'bottom-controls' === $extended_css ) {
return '';
}
$column_controls = $this->getColumnControlsModular();
return $output = $column_controls;
}
/**
* @return string
*/
public function getTtaContainerClasses() {
$classes = array();
$classes[] = 'vc_tta-container';
return implode( ' ', apply_filters( 'vc_tta_container_classes', array_filter( $classes ), $this->getAtts() ) );
}
/**
* @return string
*/
public function getTtaGeneralClasses() {
$classes = array();
$classes[] = 'vc_general';
$classes[] = 'vc_tta';
$classes[] = 'vc_tta-' . $this->layout;
$classes[] = $this->getTemplateVariable( 'color' );
$classes[] = $this->getTemplateVariable( 'style' );
$classes[] = $this->getTemplateVariable( 'shape' );
$classes[] = $this->getTemplateVariable( 'spacing' );
$classes[] = $this->getTemplateVariable( 'gap' );
$classes[] = $this->getTemplateVariable( 'c_align' );
$classes[] = $this->getTemplateVariable( 'no_fill' );
if ( isset( $this->atts['collapsible_all'] ) && 'true' === $this->atts['collapsible_all'] ) {
$classes[] = 'vc_tta-o-all-clickable';
}
$pagination = isset( $this->atts['pagination_style'] ) ? trim( $this->atts['pagination_style'] ) : false;
if ( $pagination && 'none' !== $pagination && strlen( $pagination ) > 0 ) {
$classes[] = 'vc_tta-has-pagination';
}
/**
* @since 4.6.2
*/
if ( isset( $this->atts['el_class'] ) ) {
$classes[] = $this->getExtraClass( $this->atts['el_class'] );
}
return implode( ' ', apply_filters( 'vc_tta_accordion_general_classes', array_filter( $classes ), $this->getAtts() ) );
}
/**
* @return string
*/
public function getTtaPaginationClasses() {
$classes = array();
$classes[] = 'vc_general';
$classes[] = 'vc_pagination';
if ( isset( $this->atts['pagination_style'] ) && strlen( $this->atts['pagination_style'] ) > 0 ) {
$chunks = explode( '-', $this->atts['pagination_style'] );
$classes[] = 'vc_pagination-style-' . $chunks[0];
$classes[] = 'vc_pagination-shape-' . $chunks[1];
}
if ( isset( $this->atts['pagination_color'] ) && strlen( $this->atts['pagination_color'] ) > 0 ) {
$classes[] = 'vc_pagination-color-' . $this->atts['pagination_color'];
}
return implode( ' ', $classes );
}
/**
* @return string
*/
public function getWrapperAttributes() {
$attributes = array();
$attributes[] = 'class="' . esc_attr( $this->getTtaContainerClasses() ) . '"';
$attributes[] = 'data-vc-action="' . ( 'true' === $this->atts['collapsible_all'] ? 'collapseAll' : 'collapse' ) . '"';
$autoplay = isset( $this->atts['autoplay'] ) ? trim( $this->atts['autoplay'] ) : false;
if ( $autoplay && 'none' !== $autoplay && intval( $autoplay ) > 0 ) {
$autoplayAttr = wp_json_encode( array(
'delay' => intval( $autoplay ) * 1000,
) );
$attributes[] = 'data-vc-tta-autoplay="' . esc_attr( $autoplayAttr ) . '"';
}
if ( ! empty( $this->atts['el_id'] ) ) {
$attributes[] = 'id="' . esc_attr( $this->atts['el_id'] ) . '"';
}
return implode( ' ', $attributes );
}
/**
* @param $string
* @return mixed|string
*/
public function getTemplateVariable( $string ) {
if ( isset( $this->template_vars[ $string ] ) ) {
return $this->template_vars[ $string ];
} elseif ( method_exists( $this, 'getParam' . vc_studly( $string ) ) ) {
$this->template_vars[ $string ] = $this->{'getParam' . vc_studly( $string )}( $this->atts, $this->content );
return $this->template_vars[ $string ];
}
return '';
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamColor( $atts, $content ) {
if ( isset( $atts['color'] ) && strlen( $atts['color'] ) > 0 ) {
return 'vc_tta-color-' . esc_attr( $atts['color'] );
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamStyle( $atts, $content ) {
if ( isset( $atts['style'] ) && strlen( $atts['style'] ) > 0 ) {
return 'vc_tta-style-' . esc_attr( $atts['style'] );
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTitle( $atts, $content ) {
if ( isset( $atts['title'] ) && strlen( $atts['title'] ) > 0 ) {
return '' . $atts['title'] . ' ';
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamContent( $atts, $content ) {
$panelsContent = wpb_js_remove_wpautop( $content );
if ( isset( $atts['c_icon'] ) && strlen( $atts['c_icon'] ) > 0 ) {
$isPageEditable = vc_is_page_editable();
if ( ! $isPageEditable ) {
$panelsContent = str_replace( '{{{ control-icon }}}', ' ', $panelsContent );
} else {
$panelsContent = str_replace( '{{{ control-icon }}}', ' ', $panelsContent );
}
} else {
$panelsContent = str_replace( '{{{ control-icon }}}', '', $panelsContent );
}
return $panelsContent;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamShape( $atts, $content ) {
if ( isset( $atts['shape'] ) && strlen( $atts['shape'] ) > 0 ) {
return 'vc_tta-shape-' . $atts['shape'];
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string
*/
public function getParamSpacing( $atts, $content ) {
if ( isset( $atts['spacing'] ) && strlen( $atts['spacing'] ) > 0 ) {
return 'vc_tta-spacing-' . $atts['spacing'];
}
// In case if no spacing set we need to append extra class
return 'vc_tta-o-shape-group';
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamGap( $atts, $content ) {
if ( isset( $atts['gap'] ) && strlen( $atts['gap'] ) > 0 ) {
return 'vc_tta-gap-' . $atts['gap'];
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamNoFill( $atts, $content ) {
if ( isset( $atts['no_fill'] ) && 'true' === $atts['no_fill'] ) {
return 'vc_tta-o-no-fill';
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamCAlign( $atts, $content ) {
if ( isset( $atts['c_align'] ) && strlen( $atts['c_align'] ) > 0 ) {
return 'vc_tta-controls-align-' . $atts['c_align'];
}
return null;
}
/**
* Accordion doesn't have pagination
*
* @param $atts
* @param $content
*
* @return null
*/
public function getParamPaginationTop( $atts, $content ) {
return null;
}
/**
* Accordion doesn't have pagination
*
* @param $atts
* @param $content
*
* @return null
*/
public function getParamPaginationBottom( $atts, $content ) {
return null;
}
/**
* Get currently active section (from $atts)
*
* @param $atts
* @param bool $strict_bounds If true, check for min/max bounds
*
* @return int nth position (one-based) of active section
*/
public function getActiveSection( $atts, $strict_bounds = false ) {
$active_section = intval( $atts['active_section'] );
if ( $strict_bounds ) {
VcShortcodeAutoloader::getInstance()->includeClass( 'WPBakeryShortCode_Vc_Tta_Section' );
if ( $active_section < 1 ) {
$active_section = 1;
} elseif ( $active_section > WPBakeryShortCode_Vc_Tta_Section::$self_count ) {
$active_section = WPBakeryShortCode_Vc_Tta_Section::$self_count;
}
}
return $active_section;
}
/**
* @param $atts
* @param $content
*
* @return string
*/
public function getParamPaginationList( $atts, $content ) {
if ( empty( $atts['pagination_style'] ) ) {
return null;
}
$isPageEditabe = vc_is_page_editable();
$html = array();
$html[] = '';
return implode( '', $html );
}
public function enqueueTtaStyles() {
wp_register_style( 'vc_tta_style', vc_asset_url( 'css/js_composer_tta.min.css' ), false, WPB_VC_VERSION );
wp_enqueue_style( 'vc_tta_style' );
}
public function enqueueTtaScript() {
wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_tta_autoplay_script', vc_asset_url( 'lib/vc-tta-autoplay/vc-tta-autoplay.min.js' ), array( 'vc_accordion_script' ), WPB_VC_VERSION, true );
wp_enqueue_script( 'vc_accordion_script' );
if ( ! vc_is_page_editable() ) {
wp_enqueue_script( 'vc_tta_autoplay_script' );
}
}
/**
* Override default outputTitle (also Icon). To remove anything, also Icon.
*
* @param $title - just for strict standards
*
* @return string
*/
protected function outputTitle( $title ) {
return '';
}
/**
* Check is allowed to add another element inside current element.
*
* @return bool
* @throws \Exception
* @since 4.8
*/
public function getAddAllowed() {
return vc_user_access_check_shortcode_all( 'vc_tta_section' );
}
}
classes/shortcodes/vc-tta-tour.php 0000644 00000003461 15021217214 0013253 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Tta_Tabs' );
/**
* Class WPBakeryShortCode_Vc_Tta_Tour
*/
class WPBakeryShortCode_Vc_Tta_Tour extends WPBakeryShortCode_Vc_Tta_Tabs {
public $layout = 'tabs';
/**
* @return string
*/
public function getTtaGeneralClasses() {
$classes = parent::getTtaGeneralClasses();
if ( isset( $this->atts['controls_size'] ) ) {
$classes .= ' ' . $this->getTemplateVariable( 'controls_size' );
}
return $classes;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamControlsSize( $atts, $content ) {
if ( isset( $atts['controls_size'] ) && strlen( $atts['controls_size'] ) > 0 ) {
return 'vc_tta-controls-size-' . $atts['controls_size'];
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTabsListLeft( $atts, $content ) {
if ( empty( $atts['tab_position'] ) || 'left' !== $atts['tab_position'] ) {
return null;
}
return $this->getParamTabsList( $atts, $content );
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTabsListRight( $atts, $content ) {
if ( empty( $atts['tab_position'] ) || 'right' !== $atts['tab_position'] ) {
return null;
}
return $this->getParamTabsList( $atts, $content );
}
/**
* Never on top
*
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamPaginationTop( $atts, $content ) {
return null;
}
/**
* Always on bottom
*
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamPaginationBottom( $atts, $content ) {
return $this->getParamPaginationList( $atts, $content );
}
}
classes/shortcodes/vc-single-image.php 0000644 00000011444 15021217214 0014035 0 ustar 00 jsScripts();
}
public function jsScripts() {
wp_register_script( 'zoom', vc_asset_url( 'lib/bower/zoom/jquery.zoom.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_image_zoom', vc_asset_url( 'lib/vc_image_zoom/vc_image_zoom.min.js' ), array(
'jquery',
'zoom',
), WPB_VC_VERSION, true );
}
/**
* @param $param
* @param $value
* @return string
*/
public function singleParamHtmlHolder( $param, $value ) {
$output = '';
// Compatibility fixes
$old_names = array(
'yellow_message',
'blue_message',
'green_message',
'button_green',
'button_grey',
'button_yellow',
'button_blue',
'button_red',
'button_orange',
);
$new_names = array(
'alert-block',
'alert-info',
'alert-success',
'btn-success',
'btn',
'btn-info',
'btn-primary',
'btn-danger',
'btn-warning',
);
$value = str_ireplace( $old_names, $new_names, $value );
$param_name = isset( $param['param_name'] ) ? $param['param_name'] : '';
$type = isset( $param['type'] ) ? $param['type'] : '';
$class = isset( $param['class'] ) ? $param['class'] : '';
if ( 'attach_image' === $param['type'] && 'image' === $param_name ) {
$output .= ' ';
$element_icon = $this->settings( 'icon' );
$img = wpb_getImageBySize( array(
'attach_id' => (int) preg_replace( '/[^\d]/', '', $value ),
'thumb_size' => 'thumbnail',
) );
$this->setSettings( 'logo', ( $img ? $img['thumbnail'] : ' ' ) . '' . esc_html__( 'Add image', 'js_composer' ) . ' ' );
$output .= $this->outputTitleTrue( $this->settings['name'] );
} elseif ( ! empty( $param['holder'] ) ) {
if ( 'input' === $param['holder'] ) {
$output .= '<' . $param['holder'] . ' readonly="true" class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '" value="' . $value . '">';
} elseif ( in_array( $param['holder'], array(
'img',
'iframe',
), true ) ) {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '" src="' . esc_url( $value ) . '">';
} elseif ( 'hidden' !== $param['holder'] ) {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . '' . $param['holder'] . '>';
}
}
if ( ! empty( $param['admin_label'] ) && true === $param['admin_label'] ) {
$output .= '' . $param['heading'] . ' : ' . $value . ' ';
}
return $output;
}
/**
* @param $img_id
* @param $img_size
* @return string
*/
public function getImageSquareSize( $img_id, $img_size ) {
if ( preg_match_all( '/(\d+)x(\d+)/', $img_size, $sizes ) ) {
$exact_size = array(
'width' => isset( $sizes[1][0] ) ? $sizes[1][0] : '0',
'height' => isset( $sizes[2][0] ) ? $sizes[2][0] : '0',
);
} else {
$image_downsize = image_downsize( $img_id, $img_size );
$exact_size = array(
'width' => $image_downsize[1],
'height' => $image_downsize[2],
);
}
$exact_size_int_w = (int) $exact_size['width'];
$exact_size_int_h = (int) $exact_size['height'];
if ( isset( $exact_size['width'] ) && $exact_size_int_w !== $exact_size_int_h ) {
$img_size = $exact_size_int_w > $exact_size_int_h ? $exact_size['height'] . 'x' . $exact_size['height'] : $exact_size['width'] . 'x' . $exact_size['width'];
}
return $img_size;
}
/**
* @param $title
* @return string
*/
protected function outputTitle( $title ) {
return '';
}
/**
* @param $title
* @return string
*/
protected function outputTitleTrue( $title ) {
return '' . $title . ' ' . $this->settings( 'logo' ) . ' ';
}
}
classes/shortcodes/vc-twitter.php 0000644 00000000246 15021217214 0013174 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Tta_Tabs' );
/**
* Class WPBakeryShortCode_Vc_Tta_Pageable
*/
class WPBakeryShortCode_Vc_Tta_Pageable extends WPBakeryShortCode_Vc_Tta_Tabs {
public $layout = 'tabs';
/**
* @return string
*/
public function getTtaContainerClasses() {
$classes = parent::getTtaContainerClasses();
$classes .= ' vc_tta-o-non-responsive';
return $classes;
}
/**
* @return mixed|string
*/
public function getTtaGeneralClasses() {
$classes = parent::getTtaGeneralClasses();
$classes .= ' vc_tta-pageable';
// tabs have pagination on opposite side of tabs. pageable should behave normally
if ( false !== strpos( $classes, 'vc_tta-tabs-position-top' ) ) {
$classes = str_replace( 'vc_tta-tabs-position-top', 'vc_tta-tabs-position-bottom', $classes );
} else {
$classes = str_replace( 'vc_tta-tabs-position-bottom', 'vc_tta-tabs-position-top', $classes );
}
return $classes;
}
/**
* Disable all tabs
*
* @param $atts
* @param $content
*
* @return string
*/
public function getParamTabsList( $atts, $content ) {
return '';
}
}
classes/shortcodes/vc-basic-grid.php 0000644 00000045040 15021217214 0013477 0 ustar 00 'zoomIn',
'full_width' => '',
'layout' => '',
'element_width' => '4',
'items_per_page' => '5',
'gap' => '',
'style' => 'all',
'show_filter' => '',
'filter_default_title' => 'all',
'exclude_filter' => '',
'filter_style' => '',
'filter_size' => 'md',
'filter_align' => '',
'filter_color' => '',
'arrows_design' => '',
'arrows_position' => '',
'arrows_color' => '',
'paging_design' => '',
'paging_color' => '',
'paging_animation_in' => '',
'paging_animation_out' => '',
'loop' => '',
'autoplay' => '',
'post_type' => 'post',
'filter_source' => 'category',
'orderby' => '',
'order' => 'DESC',
// @codingStandardsIgnoreLine
'meta_key' => '',
'max_items' => '10',
'offset' => '0',
'taxonomies' => '',
'custom_query' => '',
'data_type' => 'query',
'include' => '',
'exclude' => '',
'item' => 'none',
'grid_id' => '',
// disabled, needed for-BC:
'button_style' => '',
'button_color' => '',
'button_size' => '',
// New button3:
'btn_title' => '',
'btn_style' => 'modern',
'btn_el_id' => '',
'btn_custom_background' => '#ededed',
'btn_custom_text' => '#666',
'btn_outline_custom_color' => '#666',
'btn_outline_custom_hover_background' => '#666',
'btn_outline_custom_hover_text' => '#fff',
'btn_shape' => 'rounded',
'btn_color' => 'blue',
'btn_size' => 'md',
'btn_align' => 'inline',
'btn_button_block' => '',
'btn_add_icon' => '',
'btn_i_align' => 'left',
'btn_i_type' => 'fontawesome',
'btn_i_icon_fontawesome' => 'fa fa-adjust',
'btn_i_icon_openiconic' => 'vc-oi vc-oi-dial',
'btn_i_icon_typicons' => 'typcn typcn-adjust-brightness',
'btn_i_icon_entypo' => 'entypo-icon entypo-icon-note',
'btn_i_icon_linecons' => 'vc_li vc_li-heart',
'btn_i_icon_pixelicons' => 'vc_pixel_icon vc_pixel_icon-alert',
'btn_custom_onclick' => '',
'btn_custom_onclick_code' => '',
// fix template
'page_id' => '',
);
protected $grid_settings = array();
protected $grid_id_unique_name = 'vc_gid'; // if you change this also change in hook-vc-grid.php
/**
* @var \WP_Query
*/
protected $query;
/**
* WPBakeryShortCode_Vc_Basic_Grid constructor.
* @param $settings
*/
public function __construct( $settings ) {
parent::__construct( $settings );
$this->attributes_defaults['btn_title'] = esc_html__( 'Load more', 'js_composer' );
$this->shortcodeScripts();
}
public function shortcodeScripts() {
parent::shortcodeScripts();
wp_register_script( 'vc_grid-js-imagesloaded', vc_asset_url( 'lib/bower/imagesloaded/imagesloaded.pkgd.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_grid', vc_asset_url( 'js/dist/vc_grid.min.js' ), array(
'jquery',
'underscore',
'vc_pageable_owl-carousel',
'vc_waypoints',
// 'isotope',
'vc_grid-js-imagesloaded',
), WPB_VC_VERSION, true );
}
public function enqueueScripts() {
parent::enqueueScripts();
wp_enqueue_script( 'vc_grid-js-imagesloaded' );
wp_enqueue_script( 'vc_grid' );
}
/**
* @param $id
*/
public static function addExcludedId( $id ) {
self::$excluded_ids[] = $id;
}
/**
* @return array
*/
public static function excludedIds() {
return self::$excluded_ids;
}
/**
* @param $atts
* @param $content
* @return false|mixed|string|void
*/
public function getId( $atts, $content ) {
if ( vc_is_page_editable() || is_preview() ) {
/*
* We are in Frontend editor
* We need to send RAW shortcode data, so hash is just json_encode of atts and content
*/
return rawurlencode( wp_json_encode( array(
'tag' => $this->shortcode,
'atts' => $atts,
'content' => $content,
) ) );
}
$id_pattern = '/' . $this->grid_id_unique_name . '\:([\w\-_]+)/';
$id_value = isset( $atts['grid_id'] ) ? $atts['grid_id'] : '';
preg_match( $id_pattern, $id_value, $id_matches );
$id_to_save = wp_json_encode( array( 'failed_to_get_id' => esc_attr( $id_value ) ) );
if ( ! empty( $id_matches ) ) {
$id_to_save = $id_matches[1];
}
return $id_to_save;
}
/**
* @param $page_id
* @param $grid_id
* @return array|mixed|object|void
*/
public function findPostShortcodeById( $page_id, $grid_id ) {
if ( $this->currentUserCanManage( $page_id ) && preg_match( '/\"tag\"\:/', urldecode( $grid_id ) ) ) {
return json_decode( urldecode( $grid_id ), true ); // if frontend, no hash exists - just RAW data
}
$post_meta = get_post_meta( (int) $page_id, '_vc_post_settings' );
$shortcode = false;
if ( is_array( $post_meta ) ) {
foreach ( $post_meta as $meta ) {
if ( isset( $meta['vc_grid_id'] ) && ! empty( $meta['vc_grid_id']['shortcodes'] ) && isset( $meta['vc_grid_id']['shortcodes'][ $grid_id ] ) ) {
$shortcode = $meta['vc_grid_id']['shortcodes'][ $grid_id ];
break;
}
}
}
return apply_filters( 'vc_basic_grid_find_post_shortcode', $shortcode, $page_id, $grid_id );
}
/**
* @return string
* @throws \Exception
*/
public function renderItems() {
$output = '';
$items = '';
$this->buildGridSettings();
$atts = $this->atts;
$settings = $this->grid_settings;
$filter_terms = $this->filter_terms;
$is_end = isset( $this->is_end ) && $this->is_end;
$css_classes = 'vc_grid vc_row' . esc_attr( $atts['gap'] > 0 ? ' vc_grid-gutter-' . (int) $atts['gap'] . 'px' : '' );
$currentScope = WPBMap::getScope();
if ( is_array( $this->items ) && ! empty( $this->items ) ) {
// Adding before vc_map
WPBMap::setScope( Vc_Grid_Item_Editor::postType() );
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/class-vc-grid-item.php' );
$this->grid_item = new Vc_Grid_Item();
$this->grid_item->setGridAttributes( $atts );
$this->grid_item->setIsEnd( $is_end );
$this->grid_item->setTemplateById( $atts['item'] );
$output .= $this->grid_item->addShortcodesCustomCss();
ob_start();
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
wp_print_styles();
}
$output .= ob_get_clean();
$attributes = array(
'filter_terms' => $filter_terms,
'atts' => $atts,
'grid_item',
$this->grid_item,
);
$output .= apply_filters( 'vc_basic_grid_template_filter', vc_get_template( 'shortcodes/vc_basic_grid_filter.php', $attributes ), $attributes );
global $post;
$backup = $post;
foreach ( $this->items as $postItem ) {
$this->query->setup_postdata( $postItem );
// @codingStandardsIgnoreLine
$post = $postItem;
$items .= $this->grid_item->renderItem( $postItem );
}
wp_reset_postdata();
$post = $backup;
} else {
return '';
}
$items = apply_filters( $this->shortcode . '_items_list', $items );
$output .= $this->renderPagination( $atts['style'], $settings, $items, $css_classes );
WPBMap::setScope( $currentScope );
return $output;
}
public function setContentLimits() {
$atts = $this->atts;
if ( 'ids' === $this->atts['post_type'] ) {
$this->atts['max_items'] = 0;
$this->atts['offset'] = 0;
$this->atts['items_per_page'] = apply_filters( 'vc_basic_grid_max_items', self::$default_max_items );
} else {
$offset = isset( $atts['offset'] ) ? (int) $atts['offset'] : $this->attributes_defaults['offset'];
$this->atts['offset'] = $offset;
$this->atts['max_items'] = isset( $atts['max_items'] ) ? (int) $atts['max_items'] : (int) $this->attributes_defaults['max_items'];
$this->atts['items_per_page'] = ! isset( $atts['items_per_page'] ) ? (int) $this->attributes_defaults['items_per_page'] : (int) $atts['items_per_page'];
if ( $this->atts['max_items'] < 1 ) {
$this->atts['max_items'] = apply_filters( 'vc_basic_grid_max_items', self::$default_max_items );
}
}
$this->setPagingAll( $this->atts['max_items'] );
}
/**
* @param $max_items
*/
protected function setPagingAll( $max_items ) {
$atts = $this->atts;
$this->atts['query_items_per_page'] = $max_items > 0 ? $max_items : apply_filters( 'vc_basic_grid_items_per_page_all_max_items', self::$default_max_items );
$this->atts['items_per_page'] = $this->atts['query_items_per_page'];
$this->atts['query_offset'] = isset( $atts['offset'] ) ? (int) $atts['offset'] : $this->attributes_defaults['offset'];
}
/**
* @param $vc_request_param
* @return false|mixed|string|void
* @throws \Exception
*/
public function renderAjax( $vc_request_param ) {
$this->items = array(); // clear this items array (if used more than once);
$id = isset( $vc_request_param['shortcode_id'] ) ? $vc_request_param['shortcode_id'] : false;
$shortcode = false;
if ( ! isset( $vc_request_param['page_id'] ) ) {
return wp_json_encode( array( 'status' => 'Nothing found' ) );
}
if ( $id ) {
$shortcode = $this->findPostShortcodeById( $vc_request_param['page_id'], $id );
}
if ( ! is_array( $shortcode ) ) {
return wp_json_encode( array( 'status' => 'Nothing found' ) );
}
visual_composer()->registerAdminCss();
visual_composer()->registerAdminJavascript();
// Set post id
$this->post_id = (int) $vc_request_param['page_id'];
$shortcode_atts = $shortcode['atts'];
$this->shortcode_content = $shortcode['content'];
$this->buildAtts( $shortcode_atts, $shortcode['content'] );
$this->buildItems();
return $this->renderItems();
}
/**
* @return bool|false|int
*/
public function postID() {
if ( ! $this->post_id ) {
$this->post_id = get_the_ID();
}
return $this->post_id;
}
/**
* @param $atts
* @param $content
* @throws \Exception
*/
public function buildAtts( $atts, $content ) {
$this->post_id = false;
$this->grid_settings = array();
$this->filter_terms = null;
$this->items = array();
$arr_keys = array_keys( $atts );
$count = count( $atts );
for ( $i = 0; $i < $count; $i ++ ) {
$atts[ $arr_keys[ $i ] ] = html_entity_decode( $atts[ $arr_keys[ $i ] ], ENT_QUOTES, 'utf-8' );
}
if ( isset( $atts['grid_id'] ) && ! empty( $atts['grid_id'] ) ) {
$id_to_save = $this->getId( $atts, $content );
}
$atts = $this->convertButton2ToButton3( $atts );
$atts = shortcode_atts( $this->attributes_defaults, vc_map_get_attributes( $this->getShortcode(), $atts ) );
$this->atts = $atts;
if ( isset( $id_to_save ) ) {
$this->atts['shortcode_id'] = $id_to_save;
}
$this->atts['page_id'] = $this->postID();
$this->element_template = $content;
// @since 4.4.3
if ( 'custom' === $this->attr( 'post_type' ) ) {
$this->atts['style'] = 'all';
}
}
/**
* Getter attribute.
*
* @param $key
*
* @return mixed|null
*/
public function attr( $key ) {
return isset( $this->atts[ $key ] ) ? $this->atts[ $key ] : null;
}
public function buildGridSettings() {
$this->grid_settings = array(
'page_id' => $this->atts['page_id'],
// used in basic grid for initialization
'style' => $this->atts['style'],
'action' => 'vc_get_vc_grid_data',
);
// used in ajax request for items
if ( isset( $this->atts['shortcode_id'] ) && ! empty( $this->atts['shortcode_id'] ) ) {
$this->grid_settings['shortcode_id'] = $this->atts['shortcode_id'];
} elseif ( isset( $this->atts['shortcode_hash'] ) && ! empty( $this->atts['shortcode_hash'] ) ) {
// @deprecated since 4.4.3
$this->grid_settings['shortcode_hash'] = $this->atts['shortcode_hash'];
}
if ( 'load-more' === $this->atts['style'] ) {
$this->grid_settings = array_merge( $this->grid_settings, array(
// used in dispaly style load more button, lazy, pagination
'items_per_page' => $this->atts['items_per_page'],
'btn_data' => vc_map_integrate_parse_atts( $this->shortcode, 'vc_btn', $this->atts, 'btn_' ),
) );
} elseif ( 'lazy' === $this->atts['style'] ) {
$this->grid_settings = array_merge( $this->grid_settings, array(
'items_per_page' => $this->atts['items_per_page'],
) );
} elseif ( 'pagination' === $this->atts['style'] ) {
$this->grid_settings = array_merge( $this->grid_settings, array(
'items_per_page' => $this->atts['items_per_page'],
// used in pagination style
'auto_play' => $this->atts['autoplay'] > 0 ? true : false,
'gap' => (int) $this->atts['gap'],
// not used yet, but can be used in isotope..
'speed' => (int) $this->atts['autoplay'] * 1000,
'loop' => $this->atts['loop'],
'animation_in' => $this->atts['paging_animation_in'],
'animation_out' => $this->atts['paging_animation_out'],
'arrows_design' => $this->atts['arrows_design'],
'arrows_color' => $this->atts['arrows_color'],
'arrows_position' => $this->atts['arrows_position'],
'paging_design' => $this->atts['paging_design'],
'paging_color' => $this->atts['paging_color'],
) );
}
$this->grid_settings['tag'] = $this->shortcode;
}
// TODO: setter & getter to attributes
/**
* @param $atts
* @return array
*/
public function buildQuery( $atts ) {
// Set include & exclude
if ( 'ids' !== $atts['post_type'] && ! empty( $atts['exclude'] ) ) {
$atts['exclude'] .= ',' . implode( ',', $this->excludedIds() );
} else {
$atts['exclude'] = implode( ',', $this->excludedIds() );
}
if ( 'ids' !== $atts['post_type'] ) {
$settings = array(
'posts_per_page' => $atts['query_items_per_page'],
'offset' => $atts['query_offset'],
'orderby' => $atts['orderby'],
'order' => $atts['order'],
'meta_key' => in_array( $atts['orderby'], array(
'meta_value',
'meta_value_num',
), true ) ? $atts['meta_key'] : '',
'post_type' => $atts['post_type'],
'exclude' => $atts['exclude'],
);
if ( ! empty( $atts['taxonomies'] ) ) {
$vc_taxonomies_types = get_taxonomies( array( 'public' => true ) );
$terms = get_terms( array_keys( $vc_taxonomies_types ), array(
'hide_empty' => false,
'include' => $atts['taxonomies'],
) );
$settings['tax_query'] = array();
$tax_queries = array(); // List of taxnonimes
foreach ( $terms as $term ) {
if ( ! isset( $tax_queries[ $term->taxonomy ] ) ) {
$tax_queries[ $term->taxonomy ] = array(
'taxonomy' => $term->taxonomy,
'field' => 'id',
'terms' => array( $term->term_id ),
'relation' => 'IN',
);
} else {
$tax_queries[ $term->taxonomy ]['terms'][] = $term->term_id;
}
}
$settings['tax_query'] = array_values( $tax_queries );
$settings['tax_query']['relation'] = 'OR';
}
} else {
if ( empty( $atts['include'] ) ) {
$atts['include'] = - 1;
} elseif ( ! empty( $atts['exclude'] ) ) {
$include = array_map( 'trim', explode( ',', $atts['include'] ) );
$exclude = array_map( 'trim', explode( ',', $atts['exclude'] ) );
$diff = array_diff( $include, $exclude );
$atts['include'] = implode( ', ', $diff );
}
$settings = array(
'include' => $atts['include'],
'posts_per_page' => $atts['query_items_per_page'],
'offset' => $atts['query_offset'],
'post_type' => 'any',
'orderby' => 'post__in',
);
$this->atts['items_per_page'] = - 1;
}
return $settings;
}
public function buildItems() {
$this->filter_terms = $this->items = array();
$this->query = new WP_Query();
$this->setContentLimits();
$this->addExcludedId( $this->postID() );
if ( 'custom' === $this->atts['post_type'] && ! empty( $this->atts['custom_query'] ) ) {
$query = html_entity_decode( vc_value_from_safe( $this->atts['custom_query'] ), ENT_QUOTES, 'utf-8' );
$query = apply_filters( 'vc_basic_grid_filter_query_filters', $query, $this->atts, $this->shortcode );
$post_data = $this->query->query( $query );
$this->atts['items_per_page'] = - 1;
} elseif ( false !== $this->atts['query_items_per_page'] ) {
$settings = $this->filterQuerySettings( $this->buildQuery( $this->atts ) );
$post_data = $this->query->query( $settings );
} else {
return;
}
if ( $this->atts['items_per_page'] > 0 && count( $post_data ) > $this->atts['items_per_page'] ) {
$post_data = array_slice( $post_data, 0, $this->atts['items_per_page'] );
}
foreach ( $post_data as $post ) {
$post->filter_terms = wp_get_object_terms( $post->ID, $this->atts['filter_source'], array( 'fields' => 'ids' ) );
$this->filter_terms = wp_parse_args( $this->filter_terms, $post->filter_terms );
$this->items[] = $post;
}
}
/**
* @param $args
* @return array
*/
public function filterQuerySettings( $args ) {
$defaults = array(
'numberposts' => 5,
'offset' => 0,
'category' => 0,
'orderby' => 'date',
'order' => 'DESC',
'include' => array(),
'exclude' => array(),
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'suppress_filters' => apply_filters( 'vc_basic_grid_filter_query_suppress_filters', true ),
'public' => true,
);
$r = wp_parse_args( $args, $defaults );
if ( empty( $r['post_status'] ) ) {
$r['post_status'] = ( 'attachment' === $r['post_type'] ) ? 'inherit' : 'publish';
}
if ( ! empty( $r['numberposts'] ) && empty( $r['posts_per_page'] ) ) {
$r['posts_per_page'] = $r['numberposts'];
}
if ( ! empty( $r['category'] ) ) {
$r['cat'] = $r['category'];
}
if ( ! empty( $r['include'] ) ) {
$incposts = wp_parse_id_list( $r['include'] );
$r['posts_per_page'] = count( $incposts ); // only the number of posts included
$r['post__in'] = $incposts;
} elseif ( ! empty( $r['exclude'] ) ) {
$r['post__not_in'] = wp_parse_id_list( $r['exclude'] );
}
$r['ignore_sticky_posts'] = true;
$r['no_found_rows'] = true;
return $r;
}
/**
* @param $atts
* @return mixed
*/
public static function convertButton2ToButton3( $atts ) {
if ( isset( $atts['button_style'] ) || isset( $atts['button_size'] ) || isset( $atts['button_color'] ) ) {
// we use old button 2 attributes:
$style = isset( $atts['button_style'] ) ? $atts['button_style'] : 'rounded';
$size = isset( $atts['button_size'] ) ? $atts['button_size'] : 'md';
$color = isset( $atts['button_color'] ) ? $atts['button_color'] : 'blue';
$oldData = array(
'style' => $style,
'size' => $size,
'color' => str_replace( '_', '-', $color ),
);
// remove attributes on save
$atts['button_style'] = '';
$atts['button_size'] = '';
$atts['button_color'] = '';
$newData = WPBakeryShortCode_Vc_Btn::convertAttributesToButton3( $oldData );
foreach ( $newData as $key => $value ) {
$atts[ 'btn_' . $key ] = $value;
}
}
return $atts;
}
}
classes/shortcodes/vc-gitem-zone-a.php 0000644 00000000601 15021217214 0013761 0 ustar 00 getShortcode(), $atts );
extract( $atts );
$url = get_permalink();
$css = isset( $atts['css'] ) ? $atts['css'] : '';
$el_class = isset( $atts['el_class'] ) ? $atts['el_class'] : '';
$class_to_filter = 'wpb_googleplus vc_social-placeholder wpb_content_element vc_socialtype-' . $type;
$class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $css_animation );
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts );
return ' ';
}
}
classes/shortcodes/vc-gitem-post-author.php 0000644 00000000601 15021217214 0015055 0 ustar 00 shortcode ) ? ' wpb_sortable ' : ' ' . $this->nonDraggableClass . ' ' );
return 'data-element_type="' . $this->settings['base'] . '" data-vc-column-width="' . wpb_vc_get_column_width_indent( $width[ $i ] ) . '" class="wpb_vc_column wpb_' . $this->settings['base'] . $sortable . $this->templateWidth() . ' wpb_content_holder"' . $this->customAdminBlockParams();
}
/**
* @return string
*/
public function outputEditorControlAlign() {
$alignment = array(
array(
'name' => 'left',
'label' => esc_html__( 'Left', 'js_composer' ),
),
array(
'name' => 'center',
'label' => esc_html__( 'Center', 'js_composer' ),
),
array(
'name' => 'right',
'label' => esc_html__( 'Right', 'js_composer' ),
),
);
$output = '';
foreach ( $alignment as $data ) {
$attr = esc_attr( $data['name'] );
$output .= sprintf( ' ', esc_attr( $attr ), $attr, esc_html( $data['label'] ), $attr );
}
return $output . ' ';
}
}
classes/shortcodes/vc-gitem-post-title.php 0000644 00000001107 15021217214 0014676 0 ustar 00 0 ) {
$link = $atts['href'];
$target = isset( $atts['target'] ) ? $atts['target'] : '';
$title = isset( $atts['title'] ) ? $atts['title'] : $link;
$atts['link'] = 'url:' . rawurlencode( $link ) . '|title:' . $title . ( strlen( $target ) > 0 ? '|target:' . rawurlencode( $target ) : '' );
}
if ( ( ! isset( $atts['add_icon'] ) || 'true' !== $atts['add_icon'] ) && isset( $atts['icon'] ) && strlen( $atts['icon'] ) > 0 && 'none' !== $atts['icon'] ) {
// old icon from btn1 is set, let's convert it to new btn
$atts['add_icon'] = 'true';
$atts['icon_type'] = 'pixelicons';
$atts['icon_align'] = 'right';
$atts['icon_pixelicons'] = 'vc_pixel_icon vc_pixel_icon-' . str_replace( 'wpb_', '', $atts['icon'] );
}
$haystack = array(
'rounded',
'square',
'round',
'outlined',
'square_outlined',
);
if ( isset( $atts['style'] ) && in_array( $atts['style'], $haystack, true ) ) {
switch ( $atts['style'] ) {
case 'rounded':
$atts['style'] = 'flat';
$atts['shape'] = 'rounded';
break;
case 'square':
$atts['style'] = 'flat';
$atts['shape'] = 'square';
break;
case 'round':
$atts['style'] = 'flat';
$atts['shape'] = 'round';
break;
case 'outlined':
$atts['style'] = 'outline';
break;
case 'square_outlined':
$atts['style'] = 'outline';
$atts['shape'] = 'square';
break;
}
}
return $atts;
}
/**
* @param $title
*
* @return string
* @since 4.5
*/
protected function outputTitle( $title ) {
$icon = $this->settings( 'icon' );
return ' ';
}
}
classes/shortcodes/vc-column.php 0000644 00000021612 15021217214 0012767 0 ustar 00 shortcodeScripts();
}
/**
*
*/
protected function shortcodeScripts() {
wp_register_script( 'vc_jquery_skrollr_js', vc_asset_url( 'lib/bower/skrollr/dist/skrollr.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_youtube_iframe_api_js', 'https://www.youtube.com/iframe_api', array(), WPB_VC_VERSION, true );
}
/**
* @param $controls
* @param string $extended_css
*
* @return string
* @throws \Exception
*/
public function getColumnControls( $controls, $extended_css = '' ) {
$output = '';
$controls_end = '
';
if ( ' bottom-controls' === $extended_css ) {
$control_title = __( 'Append to this column', 'js_composer' );
} else {
$control_title = __( 'Prepend to this column', 'js_composer' );
}
if ( vc_user_access()->part( 'shortcodes' )->checkStateAny( true, 'custom', null )->get() ) {
$controls_add = ' ';
} else {
$controls_add = '';
}
$controls_edit = ' ';
$controls_delete = ' ';
$editAccess = vc_user_access_check_shortcode_edit( $this->shortcode );
$allAccess = vc_user_access_check_shortcode_all( $this->shortcode );
if ( is_array( $controls ) && ! empty( $controls ) ) {
foreach ( $controls as $control ) {
if ( 'add' === $control || ( $editAccess && 'edit' === $control ) || $allAccess ) {
$method_name = vc_camel_case( 'output-editor-control-' . $control );
if ( method_exists( $this, $method_name ) ) {
$output .= $this->$method_name();
} else {
$control_var = 'controls_' . $control;
if ( isset( ${$control_var} ) ) {
$output .= ${$control_var};
}
}
}
}
return $output . $controls_end;
} elseif ( is_string( $controls ) && 'full' === $controls ) {
if ( $allAccess ) {
return $output . $controls_add . $controls_edit . $controls_delete . $controls_end;
} elseif ( $editAccess ) {
return $output . $controls_add . $controls_edit . $controls_end;
}
return $output . $controls_add . $controls_end;
} elseif ( is_string( $controls ) ) {
$control_var = 'controls_' . $controls;
if ( 'add' === $controls || ( $editAccess && 'edit' === $controls || $allAccess ) && isset( ${$control_var} ) ) {
return $output . ${$control_var} . $controls_end;
}
return $output . $controls_end;
}
if ( $allAccess ) {
return $output . $controls_add . $controls_edit . $controls_delete . $controls_end;
} elseif ( $editAccess ) {
return $output . $controls_add . $controls_edit . $controls_end;
}
return $output . $controls_add . $controls_end;
}
/**
* @param $param
* @param $value
*
* @return string
*/
public function singleParamHtmlHolder( $param, $value ) {
$output = '';
// Compatibility fixes.
$old_names = array(
'yellow_message',
'blue_message',
'green_message',
'button_green',
'button_grey',
'button_yellow',
'button_blue',
'button_red',
'button_orange',
);
$new_names = array(
'alert-block',
'alert-info',
'alert-success',
'btn-success',
'btn',
'btn-info',
'btn-primary',
'btn-danger',
'btn-warning',
);
$value = str_ireplace( $old_names, $new_names, $value );
$param_name = isset( $param['param_name'] ) ? $param['param_name'] : '';
$type = isset( $param['type'] ) ? $param['type'] : '';
$class = isset( $param['class'] ) ? $param['class'] : '';
if ( isset( $param['holder'] ) && 'hidden' !== $param['holder'] ) {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . '' . $param['holder'] . '>';
}
return $output;
}
/**
* @param $atts
* @param null $content
*
* @return string
*/
public function contentAdmin( $atts, $content = null ) {
$width = '';
$atts = vc_map_get_attributes( $this->getShortcode(), $atts );
// @codingStandardsIgnoreLine
extract( $atts );
$this->atts = $atts;
$output = '';
$column_controls = $this->getColumnControls( $this->settings( 'controls' ) );
$column_controls_bottom = $this->getColumnControls( 'add', 'bottom-controls' );
if ( 'column_14' === $width || '1/4' === $width ) {
$width = array( 'vc_col-sm-3' );
} elseif ( 'column_14-14-14-14' === $width ) {
$width = array(
'vc_col-sm-3',
'vc_col-sm-3',
'vc_col-sm-3',
'vc_col-sm-3',
);
} elseif ( 'column_13' === $width || '1/3' === $width ) {
$width = array( 'vc_col-sm-4' );
} elseif ( 'column_13-23' === $width ) {
$width = array(
'vc_col-sm-4',
'vc_col-sm-8',
);
} elseif ( 'column_13-13-13' === $width ) {
$width = array(
'vc_col-sm-4',
'vc_col-sm-4',
'vc_col-sm-4',
);
} elseif ( 'column_12' === $width || '1/2' === $width ) {
$width = array( 'vc_col-sm-6' );
} elseif ( 'column_12-12' === $width ) {
$width = array(
'vc_col-sm-6',
'vc_col-sm-6',
);
} elseif ( 'column_23' === $width || '2/3' === $width ) {
$width = array( 'vc_col-sm-8' );
} elseif ( 'column_34' === $width || '3/4' === $width ) {
$width = array( 'vc_col-sm-9' );
} elseif ( 'column_16' === $width || '1/6' === $width ) {
$width = array( 'vc_col-sm-2' );
} elseif ( ' column_56' === $width || ' 5/6' === $width ) {
$width = array( 'vc_col-sm-10' );
} else {
$width = array( '' );
}
$count = count( $width );
for ( $i = 0; $i < $count; $i ++ ) {
$output .= 'mainHtmlBlockParams( $width, $i ) . '>';
$output .= str_replace( '%column_size%', wpb_translateColumnWidthToFractional( $width[ $i ] ), $column_controls );
$output .= '
';
$output .= '
containerHtmlBlockParams( $width, $i ) . '>';
$output .= do_shortcode( shortcode_unautop( $content ) );
$output .= '
';
if ( isset( $this->settings['params'] ) ) {
$inner = '';
foreach ( $this->settings['params'] as $param ) {
$param_value = isset( ${$param['param_name']} ) ? ${$param['param_name']} : '';
if ( is_array( $param_value ) ) {
// Get first element from the array
reset( $param_value );
$first_key = key( $param_value );
$param_value = $param_value[ $first_key ];
}
$inner .= $this->singleParamHtmlHolder( $param, $param_value );
}
$output .= $inner;
}
$output .= '
';
$output .= str_replace( '%column_size%', wpb_translateColumnWidthToFractional( $width[ $i ] ), $column_controls_bottom );
$output .= '
';
}
return $output;
}
/**
* @return string
*/
public function customAdminBlockParams() {
return '';
}
/**
* @param $width
* @param $i
*
* @return string
* @throws \Exception
*/
public function mainHtmlBlockParams( $width, $i ) {
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? 'wpb_sortable' : $this->nonDraggableClass );
return 'data-element_type="' . $this->settings['base'] . '" data-vc-column-width="' . wpb_vc_get_column_width_indent( $width[ $i ] ) . '" class="wpb_' . $this->settings['base'] . ' ' . $sortable . '' . ( ! empty( $this->settings['class'] ) ? ' ' . $this->settings['class'] : '' ) . ' ' . $this->templateWidth() . ' wpb_content_holder"' . $this->customAdminBlockParams();
}
/**
* @param $width
* @param $i
*
* @return string
*/
public function containerHtmlBlockParams( $width, $i ) {
return 'class="wpb_column_container vc_container_for_children"';
}
/**
* @param string $content
*
* @return string
*/
public function template( $content = '' ) {
return $this->contentAdmin( $this->atts );
}
/**
* @return string
*/
protected function templateWidth() {
return '<%= window.vc_convert_column_size(params.width) %>';
}
/**
* @param string $font_color
*
* @return string
*/
public function buildStyle( $font_color = '' ) {
$style = '';
if ( ! empty( $font_color ) ) {
$style .= vc_get_css_color( 'color', $font_color );
}
return empty( $style ) ? $style : ' style="' . esc_attr( $style ) . '"';
}
}
classes/shortcodes/vc-toggle.php 0000644 00000001457 15021217214 0012760 0 ustar 00 getShortCode( 'vc_custom_heading' );
$data = vc_map_integrate_parse_atts( $this->shortcode, 'vc_custom_heading', $atts, 'custom_' );
$data['text'] = $atts['title'];
return $custom_heading->render( array_filter( $data ) );
} else {
return '' . esc_html( $atts['title'] ) . ' ';
}
}
}
classes/shortcodes/vc-gmaps.php 0000644 00000000242 15021217214 0012575 0 ustar 00 '',
);
public $nonDraggableClass = 'vc-non-draggable-row';
/**
* @param $settings
*/
public function __construct( $settings ) {
parent::__construct( $settings );
$this->shortcodeScripts();
}
protected function shortcodeScripts() {
wp_register_script( 'vc_jquery_skrollr_js', vc_asset_url( 'lib/bower/skrollr/dist/skrollr.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_youtube_iframe_api_js', 'https://www.youtube.com/iframe_api', array(), WPB_VC_VERSION, true );
}
/**
* @param $atts
* @param null $content
* @return mixed|string
*/
protected function content( $atts, $content = null ) {
$prefix = '';
return $prefix . $this->loadTemplate( $atts, $content );
}
/**
* This returs block controls
*/
public function getLayoutsControl() {
global $vc_row_layouts;
$controls_layout = '';
foreach ( $vc_row_layouts as $layout ) {
$controls_layout .= ' ';
}
$controls_layout .= '' . esc_html__( 'Custom', 'js_composer' ) . ' ';
$controls_layout .= ' ';
return $controls_layout;
}
/**
* @param $controls
* @param string $extended_css
* @return string
* @throws \Exception
*/
public function getColumnControls( $controls, $extended_css = '' ) {
$output = '';
$controls_end = '
';
// Create columns
$controls_layout = $this->getLayoutsControl();
$controls_move = ' ';
$moveAccess = vc_user_access()->part( 'dragndrop' )->checkStateAny( true, null )->get();
if ( ! $moveAccess ) {
$controls_move = '';
}
$controls_add = ' ';
$controls_delete = ' ';
$controls_edit = ' ';
$controls_clone = ' ';
$controls_toggle = ' ';
$editAccess = vc_user_access_check_shortcode_edit( $this->shortcode );
$allAccess = vc_user_access_check_shortcode_all( $this->shortcode );
if ( is_array( $controls ) && ! empty( $controls ) ) {
foreach ( $controls as $control ) {
$control_var = 'controls_' . $control;
if ( ( $editAccess && 'edit' === $control ) || $allAccess ) {
if ( isset( ${$control_var} ) ) {
$output .= ${$control_var};
}
}
}
$output .= $controls_end;
} elseif ( is_string( $controls ) ) {
$control_var = 'controls_' . $controls;
if ( ( $editAccess && 'edit' === $controls ) || $allAccess ) {
if ( isset( ${$control_var} ) ) {
$output .= ${$control_var} . $controls_end;
}
}
} else {
$row_edit_clone_delete = '';
if ( $allAccess ) {
$row_edit_clone_delete .= $controls_delete . $controls_clone . $controls_edit;
} elseif ( $editAccess ) {
$row_edit_clone_delete .= $controls_edit;
}
$row_edit_clone_delete .= $controls_toggle;
$row_edit_clone_delete .= ' ';
if ( $allAccess ) {
$output .= '' . $controls_move . $controls_layout . $controls_add . '
' . $row_edit_clone_delete . $controls_end;
} elseif ( $editAccess ) {
$output .= $row_edit_clone_delete . $controls_end;
} else {
$output .= $row_edit_clone_delete . $controls_end;
}
}
return $output;
}
/**
* @param $atts
* @param null $content
* @return string
* @throws \Exception
*/
public function contentAdmin( $atts, $content = null ) {
$atts = shortcode_atts( $this->predefined_atts, $atts );
$output = '';
$column_controls = $this->getColumnControls( $this->settings( 'controls' ) );
$output .= '';
$output .= str_replace( '%column_size%', 1, $column_controls );
$output .= '
';
$output .= '
';
if ( '' === $content && ! empty( $this->settings['default_content_in_template'] ) ) {
$output .= do_shortcode( shortcode_unautop( $this->settings['default_content_in_template'] ) );
} else {
$output .= do_shortcode( shortcode_unautop( $content ) );
}
$output .= '
';
if ( isset( $this->settings['params'] ) ) {
$inner = '';
foreach ( $this->settings['params'] as $param ) {
if ( ! isset( $param['param_name'] ) ) {
continue;
}
$param_value = isset( $atts[ $param['param_name'] ] ) ? $atts[ $param['param_name'] ] : '';
if ( is_array( $param_value ) ) {
// Get first element from the array
reset( $param_value );
$first_key = key( $param_value );
$param_value = $param_value[ $first_key ];
}
$inner .= $this->singleParamHtmlHolder( $param, $param_value );
}
$output .= $inner;
}
$output .= '
';
$output .= '
';
return $output;
}
/**
* @return string
* @throws \Exception
*/
public function cssAdminClass() {
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? ' wpb_sortable' : ' ' . $this->nonDraggableClass );
return 'wpb_' . $this->settings['base'] . $sortable . '' . ( ! empty( $this->settings['class'] ) ? ' ' . $this->settings['class'] : '' );
}
/**
* @return string
* @deprecated 4.5 - due to it is not used anywhere? 4.5
* @typo Bock - Block
*/
public function customAdminBockParams() {
// this function is depreacted
return '';
}
/**
* @param string $bg_image
* @param string $bg_color
* @param string $bg_image_repeat
* @param string $font_color
* @param string $padding
* @param string $margin_bottom
*
* @return string
* @deprecated 4.5
*
*/
public function buildStyle( $bg_image = '', $bg_color = '', $bg_image_repeat = '', $font_color = '', $padding = '', $margin_bottom = '' ) {
// this function is deprecated
$has_image = false;
$style = '';
$image_url = wp_get_attachment_url( $bg_image );
if ( $image_url ) {
$has_image = true;
$style .= 'background-image: url(' . $image_url . ');';
}
if ( ! empty( $bg_color ) ) {
$style .= vc_get_css_color( 'background-color', $bg_color );
}
if ( ! empty( $bg_image_repeat ) && $has_image ) {
if ( 'cover' === $bg_image_repeat ) {
$style .= 'background-repeat:no-repeat;background-size: cover;';
} elseif ( 'contain' === $bg_image_repeat ) {
$style .= 'background-repeat:no-repeat;background-size: contain;';
} elseif ( 'no-repeat' === $bg_image_repeat ) {
$style .= 'background-repeat: no-repeat;';
}
}
if ( ! empty( $font_color ) ) {
$style .= vc_get_css_color( 'color', $font_color );
}
if ( '' !== $padding ) {
$style .= 'padding: ' . ( preg_match( '/(px|em|\%|pt|cm)$/', $padding ) ? $padding : $padding . 'px' ) . ';';
}
if ( '' !== $margin_bottom ) {
$style .= 'margin-bottom: ' . ( preg_match( '/(px|em|\%|pt|cm)$/', $margin_bottom ) ? $margin_bottom : $margin_bottom . 'px' ) . ';';
}
return empty( $style ) ? '' : ' style="' . esc_attr( $style ) . '"';
}
}
classes/shortcodes/vc-custom-heading.php 0000644 00000012250 15021217214 0014377 0 ustar 00 'google_fonts',
'font_container' => 'font_container',
'el_class' => 'el_class',
'css' => 'css',
'text' => 'text',
);
/**
* Used to get field name in vc_map function for google_fonts, font_container and etc..
*
* @param $key
*
* @return bool
* @since 4.4
*/
protected function getField( $key ) {
return isset( $this->fields[ $key ] ) ? $this->fields[ $key ] : false;
}
/**
* Get param value by providing key
*
* @param $key
*
* @return array|bool
* @throws \Exception
* @since 4.4
*/
protected function getParamData( $key ) {
return WPBMap::getParam( $this->shortcode, $this->getField( $key ) );
}
/**
* Parses shortcode attributes and set defaults based on vc_map function relative to shortcode and fields names
*
* @param $atts
*
* @return array
* @throws \Exception
* @since 4.3
*/
public function getAttributes( $atts ) {
/**
* Shortcode attributes
* @var $text
* @var $google_fonts
* @var $font_container
* @var $el_class
* @var $link
* @var $css
*/
$atts = vc_map_get_attributes( $this->getShortcode(), $atts );
extract( $atts );
/**
* Get default values from VC_MAP.
*/
$google_fonts_field = $this->getParamData( 'google_fonts' );
$font_container_field = $this->getParamData( 'font_container' );
$el_class = $this->getExtraClass( $el_class );
$font_container_obj = new Vc_Font_Container();
$google_fonts_obj = new Vc_Google_Fonts();
$font_container_field_settings = isset( $font_container_field['settings'], $font_container_field['settings']['fields'] ) ? $font_container_field['settings']['fields'] : array();
$google_fonts_field_settings = isset( $google_fonts_field['settings'], $google_fonts_field['settings']['fields'] ) ? $google_fonts_field['settings']['fields'] : array();
$font_container_data = $font_container_obj->_vc_font_container_parse_attributes( $font_container_field_settings, $font_container );
$google_fonts_data = strlen( $google_fonts ) > 0 ? $google_fonts_obj->_vc_google_fonts_parse_attributes( $google_fonts_field_settings, $google_fonts ) : '';
return array(
'text' => isset( $text ) ? $text : '',
'google_fonts' => $google_fonts,
'font_container' => $font_container,
'el_class' => $el_class,
'css' => isset( $css ) ? $css : '',
'link' => ( 0 === strpos( $link, '|' ) ) ? false : $link,
'font_container_data' => $font_container_data,
'google_fonts_data' => $google_fonts_data,
);
}
/**
* Parses google_fonts_data and font_container_data to get needed css styles to markup
*
* @param $el_class
* @param $css
* @param $google_fonts_data
* @param $font_container_data
* @param $atts
*
* @return array
* @since 4.3
*/
public function getStyles( $el_class, $css, $google_fonts_data, $font_container_data, $atts ) {
$styles = array();
if ( ! empty( $font_container_data ) && isset( $font_container_data['values'] ) ) {
foreach ( $font_container_data['values'] as $key => $value ) {
if ( 'tag' !== $key && strlen( $value ) ) {
if ( preg_match( '/description/', $key ) ) {
continue;
}
if ( 'font_size' === $key || 'line_height' === $key ) {
$value = preg_replace( '/\s+/', '', $value );
}
if ( 'font_size' === $key ) {
$pattern = '/^(\d*(?:\.\d+)?)\s*(px|\%|in|cm|mm|em|rem|ex|pt|pc|vw|vh|vmin|vmax)?$/';
// allowed metrics: http://www.w3schools.com/cssref/css_units.asp
preg_match( $pattern, $value, $matches );
$value = isset( $matches[1] ) ? (float) $matches[1] : (float) $value;
$unit = isset( $matches[2] ) ? $matches[2] : 'px';
$value = $value . $unit;
}
if ( strlen( $value ) > 0 ) {
$styles[] = str_replace( '_', '-', $key ) . ': ' . $value;
}
}
}
}
if ( ( ! isset( $atts['use_theme_fonts'] ) || 'yes' !== $atts['use_theme_fonts'] ) && ! empty( $google_fonts_data ) && isset( $google_fonts_data['values'], $google_fonts_data['values']['font_family'], $google_fonts_data['values']['font_style'] ) ) {
$google_fonts_family = explode( ':', $google_fonts_data['values']['font_family'] );
$styles[] = 'font-family:' . $google_fonts_family[0];
$google_fonts_styles = explode( ':', $google_fonts_data['values']['font_style'] );
$styles[] = 'font-weight:' . $google_fonts_styles[1];
$styles[] = 'font-style:' . $google_fonts_styles[2];
}
/**
* Filter 'VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG' to change vc_custom_heading class
*
* @param string - filter_name
* @param string - element_class
* @param string - shortcode_name
* @param array - shortcode_attributes
*
* @since 4.3
*/
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'vc_custom_heading ' . $el_class . vc_shortcode_custom_css_class( $css, ' ' ), $this->settings['base'], $atts );
return array(
'css_class' => trim( preg_replace( '/\s+/', ' ', $css_class ) ),
'styles' => $styles,
);
}
}
classes/shortcodes/vc-tweetmeme.php 0000644 00000002034 15021217214 0013463 0 ustar 00 getShortcode(), $atts );
$css = isset( $atts['css'] ) ? $atts['css'] : '';
$el_class = isset( $atts['el_class'] ) ? $atts['el_class'] : '';
$class_to_filter = 'wpb_googleplus vc_social-placeholder wpb_content_element';
$class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ) . $this->getCSSAnimation( $atts['css_animation'] );
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts );
return '
';
}
}
classes/shortcodes/vc-gitem.php 0000644 00000010157 15021217214 0012601 0 ustar 00 predefined_atts, $atts ) );
$output = '';
$column_controls = $this->getControls( $this->settings( 'controls' ) );
$output .= 'mainHtmlBlockParams( '12', '' ) . '>';
$output .= $column_controls;
$output .= '
containerHtmlBlockParams( '12', '' ) . '>';
$output .= $this->itemGrid();
$output .= do_shortcode( shortcode_unautop( $content ) );
$output .= '
';
if ( isset( $this->settings['params'] ) ) {
$inner = '';
foreach ( $this->settings['params'] as $param ) {
$param_value = isset( ${$param['param_name']} ) ? ${$param['param_name']} : '';
if ( is_array( $param_value ) ) {
// Get first element from the array
reset( $param_value );
$first_key = key( $param_value );
$param_value = $param_value[ $first_key ];
}
$inner .= $this->singleParamHtmlHolder( $param, $param_value );
}
$output .= $inner;
}
$output .= '
';
$output .= '';
return $output;
}
/**
* @param $width
* @param $i
* @return string
* @throws \Exception
*/
public function mainHtmlBlockParams( $width, $i ) {
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? 'wpb_sortable' : $this->nonDraggableClass );
return 'data-element_type="' . $this->settings['base'] . '" class="' . $this->settings['base'] . '-shortcode ' . $sortable . ' wpb_content_holder vc_shortcodes_container"' . $this->customAdminBlockParams();
}
/**
* @return string
*/
public function itemGrid() {
$output = '';
return $output;
}
/**
* @param $width
* @param $i
* @return string
*/
public function containerHtmlBlockParams( $width, $i ) {
return 'class="vc_gitem-content"';
}
/**
* Get rendered controls
*
* @param array $controls
*
* @return string
* @throws \Exception
*/
public function getControls( $controls ) {
if ( ! is_array( $controls ) || empty( $controls ) ) {
return '';
}
$buttons = array();
$editAccess = vc_user_access_check_shortcode_edit( $this->shortcode );
$allAccess = vc_user_access_check_shortcode_all( $this->shortcode );
foreach ( $controls as $control ) {
switch ( $control ) {
case 'add':
if ( $allAccess ) {
$buttons[] = ' ';
}
break;
case 'edit':
if ( $editAccess ) {
$buttons[] = ' ';
}
break;
case 'delete':
if ( $allAccess ) {
$buttons[] = ' ';
}
break;
}
}
$html = '' . implode( ' ', $buttons ) . '
';
return $html;
}
}
classes/shortcodes/vc-tab.php 0000644 00000003673 15021217214 0012247 0 ustar 00 atts['tab_id'] . '"';
}
/**
* @param $width
* @param $i
* @return string
* @throws \Exception
*/
public function mainHtmlBlockParams( $width, $i ) {
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? 'wpb_sortable' : $this->nonDraggableClass );
return 'data-element_type="' . $this->settings['base'] . '" class="wpb_' . $this->settings['base'] . ' ' . $sortable . ' wpb_content_holder"' . $this->customAdminBlockParams();
}
/**
* @param $width
* @param $i
* @return string
*/
public function containerHtmlBlockParams( $width, $i ) {
return 'class="wpb_column_container vc_container_for_children"';
}
/**
* @param $controls
* @param string $extended_css
* @return string
* @throws \Exception
*/
public function getColumnControls( $controls, $extended_css = '' ) {
return $this->getColumnControlsModular( $extended_css );
}
}
/**
* @param $settings
* @param $value
*
* @return string
* @since 4.4
*/
function vc_tab_id_settings_field( $settings, $value ) {
return sprintf( '%s
', $settings['param_name'], $settings['param_name'], $settings['type'], $value, $value );
}
vc_add_shortcode_param( 'tab_id', 'vc_tab_id_settings_field' );
classes/shortcodes/vc-hoverbox.php 0000644 00000003501 15021217214 0013323 0 ustar 00 getShortCode( 'vc_custom_heading' );
$data = vc_map_integrate_parse_atts( $this->shortcode, 'vc_custom_heading', $atts, $tag . '_' );
$data['font_container'] = implode( '|', array_filter( array(
'tag:h2',
'text_align:' . esc_attr( $align ),
$data['font_container'],
) ) );
$data['text'] = $atts[ $tag ]; // provide text to shortcode
return $custom_heading->render( array_filter( $data ) );
} else {
$inline_css = array();
$inline_css_string = '';
if ( isset( $atts['style'] ) && 'custom' === $atts['style'] ) {
if ( ! empty( $atts['custom_text'] ) ) {
$inline_css[] = vc_get_css_color( 'color', $atts['custom_text'] );
}
}
if ( $align ) {
$inline_css[] = 'text-align:' . esc_attr( $align );
}
if ( ! empty( $inline_css ) ) {
$inline_css_string = ' style="' . implode( '', $inline_css ) . '"';
}
return '' . $atts[ $tag ] . ' ';
}
}
return '';
}
/**
* @param $atts
* @return string
* @throws \Exception
*/
public function renderButton( $atts ) {
$button_atts = vc_map_integrate_parse_atts( $this->shortcode, 'vc_btn', $atts, 'hover_btn_' );
$button = visual_composer()->getShortCode( 'vc_btn' );
return $button->render( array_filter( $button_atts ) );
}
}
classes/shortcodes/vc-masonry-grid.php 0000644 00000002751 15021217214 0014110 0 ustar 00 grid_settings['style'] .= '-masonry';
}
/**
* @param $grid_style
* @param $settings
* @param $content
* @return string
*/
protected function contentAllMasonry( $grid_style, $settings, $content ) {
return parent::contentAll( $grid_style, $settings, $content );
}
/**
* @param $grid_style
* @param $settings
* @param $content
* @return string
*/
protected function contentLazyMasonry( $grid_style, $settings, $content ) {
return parent::contentLazy( $grid_style, $settings, $content );
}
/**
* @param $grid_style
* @param $settings
* @param $content
* @return string
*/
protected function contentLoadMoreMasonry( $grid_style, $settings, $content ) {
return parent::contentLoadMore( $grid_style, $settings, $content );
}
}
classes/shortcodes/vc-gitem-zone.php 0000644 00000000317 15021217214 0013547 0 ustar 00 '',
'el_position' => '',
'width' => '1/2',
), $atts ) );
$el_class = $this->getExtraClass( $el_class );
$el_class .= ' wpb_raw_js';
// @codingStandardsIgnoreLine
$content = rawurldecode( base64_decode( wp_strip_all_tags( $content ) ) );
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, 'wpb_raw_code' . $el_class, $this->settings['base'], $atts );
$output = '
';
return $output;
}
}
classes/shortcodes/vc-gitem-image.php 0000644 00000000722 15021217214 0013656 0 ustar 00 0 ) {
$values = vc_param_group_parse_atts( $atts['values'] );
if ( ! is_array( $values ) ) {
$temp = explode( ',', $atts['values'] );
$paramValues = array();
foreach ( $temp as $value ) {
$data = explode( '|', $value );
$colorIndex = 2;
$newLine = array();
$newLine['value'] = isset( $data[0] ) ? $data[0] : 0;
$newLine['label'] = isset( $data[1] ) ? $data[1] : '';
if ( isset( $data[1] ) && preg_match( '/^\d{1,3}\%$/', $data[1] ) ) {
$colorIndex ++;
$newLine['value'] = (float) str_replace( '%', '', $data[1] );
$newLine['label'] = isset( $data[2] ) ? $data[2] : '';
}
if ( isset( $data[ $colorIndex ] ) ) {
$newLine['customcolor'] = $data[ $colorIndex ];
}
$paramValues[] = $newLine;
}
$atts['values'] = rawurlencode( wp_json_encode( $paramValues ) );
}
}
return $atts;
}
}
classes/shortcodes/vc-text-separator.php 0000644 00000001337 15021217214 0014456 0 ustar 00 shortcode, 'vc_icon', $atts, 'i_' );
if ( $data ) {
$icon = visual_composer()->getShortCode( 'vc_icon' );
if ( is_object( $icon ) ) {
return $icon->render( array_filter( $data ) );
}
}
return '';
}
}
classes/shortcodes/layerslider-vc.php 0000644 00000000256 15021217214 0014012 0 ustar 00 shortcode ) ? 'wpb_sortable' : $this->nonDraggableClass );
return 'data-element_type="' . esc_attr( $this->settings['base'] ) . '" class="wpb_' . esc_attr( $this->settings['base'] ) . ' ' . esc_attr( $sortable ) . '' . ( ! empty( $this->settings['class'] ) ? ' ' . esc_attr( $this->settings['class'] ) : '' ) . ' wpb_content_holder vc_shortcodes_container"' . $this->customAdminBlockParams();
}
/**
* @param $width
* @param $i
*
* @return string
*/
public function containerHtmlBlockParams( $width, $i ) {
return 'class="' . $this->containerContentClass() . '"';
}
/**
*
* @return string
*/
public function containerContentClass() {
return 'wpb_column_container vc_container_for_children vc_clearfix';
}/** @noinspection PhpMissingParentCallCommonInspection */
/**
* @param string $controls
* @param string $extended_css
*
* @return string
* @throws \Exception
*/
public function getColumnControls( $controls = 'full', $extended_css = '' ) {
$controls_html = array();
$controls_html['start'] = '';
$controls_html['end'] = '
';
if ( 'bottom-controls' === $extended_css ) {
$controls_html['title'] = sprintf( esc_attr__( 'Append to this %s', 'js_composer' ), strtolower( $this->settings( 'name' ) ) );
} else {
$controls_html['title'] = sprintf( esc_attr__( 'Prepend to this %s', 'js_composer' ), strtolower( $this->settings( 'name' ) ) );
}
$controls_html['move'] = ' ';
$moveAccess = vc_user_access()->part( 'dragndrop' )->checkStateAny( true, null )->get();
if ( ! $moveAccess ) {
$controls_html['move'] = '';
}
$controls_html['add'] = ' ';
$controls_html['edit'] = ' ';
$controls_html['clone'] = ' ';
$controls_html['delete'] = ' ';
$controls_html['full'] = $controls_html['move'] . $controls_html['add'] . $controls_html['edit'] . $controls_html['clone'] . $controls_html['delete'];
$editAccess = vc_user_access_check_shortcode_edit( $this->shortcode );
$allAccess = vc_user_access_check_shortcode_all( $this->shortcode );
if ( ! empty( $controls ) ) {
if ( is_string( $controls ) ) {
$controls = array( $controls );
}
$controls_string = $controls_html['start'];
foreach ( $controls as $control ) {
if ( ( $editAccess && 'edit' === $control ) || $allAccess ) {
if ( isset( $controls_html[ $control ] ) ) {
$controls_string .= $controls_html[ $control ];
}
}
}
return $controls_string . $controls_html['end'];
}
if ( $allAccess ) {
return $controls_html['start'] . $controls_html['full'] . $controls_html['end'];
} elseif ( $editAccess ) {
return $controls_html['start'] . $controls_html['edit'] . $controls_html['end'];
}
return $controls_html['start'] . $controls_html['end'];
}
/**
* @param $atts
* @param null $content
*
* @return string
* @throws \Exception
*/
public function contentAdmin( $atts, $content = null ) {
$width = '';
$atts = shortcode_atts( $this->predefined_atts, $atts );
extract( $atts );
$this->atts = $atts;
$output = '';
$output .= 'mainHtmlBlockParams( $width, 1 ) . '>';
if ( $this->backened_editor_prepend_controls ) {
$output .= $this->getColumnControls( $this->settings( 'controls' ) );
}
$output .= '
';
if ( isset( $this->settings['custom_markup'] ) && '' !== $this->settings['custom_markup'] ) {
$markup = $this->settings['custom_markup'];
$output .= $this->customMarkup( $markup );
} else {
$output .= $this->outputTitle( $this->settings['name'] );
$output .= '
containerHtmlBlockParams( $width, 1 ) . '>';
$output .= do_shortcode( shortcode_unautop( $content ) );
$output .= '
';
$output .= $this->paramsHtmlHolders( $atts );
}
$output .= '
';
if ( $this->backened_editor_prepend_controls ) {
$output .= $this->getColumnControls( 'add', 'bottom-controls' );
}
$output .= '
';
return $output;
}
/**
* @param $title
*
* @return string
*/
protected function outputTitle( $title ) {
$icon = $this->settings( 'icon' );
if ( filter_var( $icon, FILTER_VALIDATE_URL ) ) {
$icon = '';
}
$params = array(
'icon' => $icon,
'is_container' => $this->settings( 'is_container' ),
'title' => $title,
);
return ' ' . $this->getIcon( $params ) . ' ';
}
/**
* @return string
*/
/**
* @return string
*/
public function getBackendEditorChildControlsElementCssClass() {
return 'vc_element-name';
}
}
classes/shortcodes/core/class-wpbakeryshortcode.php 0000644 00000061467 15021217214 0016672 0 ustar 00 settings = $settings;
$this->shortcode = $this->settings['base'];
}
/**
* @param $content
*
* @return string
*/
public function addInlineAnchors( $content ) {
return ( $this->isInline() || $this->isEditor() && true === $this->settings( 'is_container' ) ? ' ' : '' ) . $content;
}
/**
*
*/
public function enqueueAssets() {
if ( ! empty( $this->settings['admin_enqueue_js'] ) ) {
$this->registerJs( $this->settings['admin_enqueue_js'] );
}
if ( ! empty( $this->settings['admin_enqueue_css'] ) ) {
$this->registerCss( $this->settings['admin_enqueue_css'] );
}
}
/**
* Prints out the styles needed to render the element icon for the back end interface.
* Only performed if the 'icon' setting is a valid URL.
*
* @return void
* @since 4.2
* @modified 4.4
* @author Benjamin Intal
*/
public function printIconStyles() {
if ( ! filter_var( $this->settings( 'icon' ), FILTER_VALIDATE_URL ) ) {
return;
}
$first_tag = 'style';
echo '
<' . esc_attr( $first_tag ) . '>
.vc_el-container #' . esc_attr( $this->settings['base'] ) . ' .vc_element-icon,
.wpb_' . esc_attr( $this->settings['base'] ) . ' > .wpb_element_wrapper > .wpb_element_title > .vc_element-icon,
.vc_el-container > #' . esc_attr( $this->settings['base'] ) . ' > .vc_element-icon,
.vc_el-container > #' . esc_attr( $this->settings['base'] ) . ' > .vc_element-icon[data-is-container="true"],
.compose_mode .vc_helper.vc_helper-' . esc_attr( $this->settings['base'] ) . ' > .vc_element-icon,
.vc_helper.vc_helper-' . esc_attr( $this->settings['base'] ) . ' > .vc_element-icon,
.compose_mode .vc_helper.vc_helper-' . esc_attr( $this->settings['base'] ) . ' > .vc_element-icon[data-is-container="true"],
.vc_helper.vc_helper-' . esc_attr( $this->settings['base'] ) . ' > .vc_element-icon[data-is-container="true"],
.wpb_' . esc_attr( $this->settings['base'] ) . ' > .wpb_element_wrapper > .wpb_element_title > .vc_element-icon,
.wpb_' . esc_attr( $this->settings['base'] ) . ' > .wpb_element_wrapper > .wpb_element_title > .vc_element-icon[data-is-container="true"] {
background-position: 0 0;
background-image: url(' . esc_url( $this->settings['icon'] ) . ');
-webkit-background-size: contain;
-moz-background-size: contain;
-ms-background-size: contain;
-o-background-size: contain;
background-size: contain;
}
' . esc_attr( $first_tag ) . '>';
}
/**
* @param $param
*/
protected function registerJs( $param ) {
if ( is_array( $param ) && ! empty( $param ) ) {
foreach ( $param as $value ) {
$this->registerJs( $value );
}
} elseif ( is_string( $param ) && ! empty( $param ) ) {
$name = 'admin_enqueue_js_' . md5( $param );
self::$js_scripts[] = $name;
wp_register_script( $name, $param, array( 'jquery' ), WPB_VC_VERSION, true );
}
}
/**
* @param $param
*/
protected function registerCss( $param ) {
if ( is_array( $param ) && ! empty( $param ) ) {
foreach ( $param as $value ) {
$this->registerCss( $value );
}
} elseif ( is_string( $param ) && ! empty( $param ) ) {
$name = 'admin_enqueue_css_' . md5( $param );
self::$css_scripts[] = $name;
wp_register_style( $name, $param, array( 'js_composer' ), WPB_VC_VERSION );
}
}
/**
*
*/
public static function enqueueCss() {
if ( ! empty( self::$css_scripts ) ) {
foreach ( self::$css_scripts as $stylesheet ) {
wp_enqueue_style( $stylesheet );
}
}
}
/**
*
*/
public static function enqueueJs() {
if ( ! empty( self::$js_scripts ) ) {
foreach ( self::$js_scripts as $script ) {
wp_enqueue_script( $script );
}
}
}
/**
* @param $shortcode
*/
public function shortcode( $shortcode ) {
}
/**
* @param $template
*
* @return string
*/
protected function setTemplate( $template ) {
return $this->html_template = apply_filters( 'vc_shortcode_set_template_' . $this->shortcode, $template );
}
/**
* @return bool
*/
protected function getTemplate() {
if ( isset( $this->html_template ) ) {
return $this->html_template;
}
return false;
}
/**
* @return mixed
*/
protected function getFileName() {
return $this->shortcode;
}
/**
* Find html template for shortcode output.
*/
protected function findShortcodeTemplate() {
// Check template path in shortcode's mapping settings
if ( ! empty( $this->settings['html_template'] ) && is_file( $this->settings( 'html_template' ) ) ) {
return $this->setTemplate( $this->settings['html_template'] );
}
// Check template in theme directory
$user_template = vc_shortcodes_theme_templates_dir( $this->getFileName() . '.php' );
if ( is_file( $user_template ) ) {
return $this->setTemplate( $user_template );
}
// Check default place
$default_dir = vc_manager()->getDefaultShortcodesTemplatesDir() . '/';
if ( is_file( $default_dir . $this->getFileName() . '.php' ) ) {
return $this->setTemplate( $default_dir . $this->getFileName() . '.php' );
}
$template = apply_filters( 'vc_shortcode_set_template_' . $this->shortcode, '' );
if ( ! empty( $template ) ? $template : '' ) {
return $this->setTemplate( $template );
}
return '';
}
/**
* @param $atts
* @param null $content
*
* @return mixed
* @throws \Exception
*/
protected function content( $atts, $content = null ) {
return $this->loadTemplate( $atts, $content );
}
/**
* @param $atts
* @param null $content
*
* vc_filter: vc_shortcode_content_filter - hook to edit template content
* vc_filter: vc_shortcode_content_filter_after - hook after template is loaded to override output
*
* @return mixed
* @throws \Exception
*/
protected function loadTemplate( $atts, $content = null ) {
$output = '';
if ( ! is_null( $content ) ) {
/** @var string $content */
$content = apply_filters( 'vc_shortcode_content_filter', $content, $this->shortcode );
}
$this->findShortcodeTemplate();
if ( $this->html_template && file_exists( $this->html_template ) ) {
if ( strpos( $this->html_template, WPB_PLUGIN_DIR ) === false ) {
// Modified or new
Vc_Modifications::$modified = true;
}
ob_start();
/** @var string $content - used inside template */
$output = require $this->html_template;
// Allow return in template files
if ( 1 === $output ) {
$output = ob_get_contents();
}
ob_end_clean();
}
return apply_filters( 'vc_shortcode_content_filter_after', $output, $this->shortcode, $atts, $content );
}
/**
* @param $atts
* @param $content
*
* @return string
* @throws \Exception
*/
public function contentAdmin( $atts, $content = null ) {
$output = $custom_markup = $width = $el_position = '';
if ( null !== $content ) {
$content = wpautop( stripslashes( $content ) );
}
$shortcode_attributes = array( 'width' => '1/1' );
$atts = vc_map_get_attributes( $this->getShortcode(), $atts ) + $shortcode_attributes;
$this->atts = $atts;
$elem = $this->getElementHolder( $width );
if ( isset( $this->settings['custom_markup'] ) && '' !== $this->settings['custom_markup'] ) {
$markup = $this->settings['custom_markup'];
$elem = str_ireplace( '%wpb_element_content%', $this->customMarkup( $markup, $content ), $elem );
$output .= $elem;
} else {
$inner = $this->outputTitle( $this->settings['name'] );
$inner .= $this->paramsHtmlHolders( $atts );
$elem = str_ireplace( '%wpb_element_content%', $inner, $elem );
$output .= $elem;
}
return $output;
}
/**
* @return bool
*/
public function isAdmin() {
return apply_filters( 'vc_shortcodes_is_admin', is_admin() );
}
/**
* @return bool
*/
public function isInline() {
return vc_is_inline();
}
/**
* @return bool
*/
public function isEditor() {
return vc_is_editor();
}
/**
* @param $atts
* @param null $content
* @param string $base
*
* vc_filter: vc_shortcode_output - hook to override output of shortcode
*
* @return string
* @throws \Exception
*/
public function output( $atts, $content = null, $base = '' ) {
$this->atts = $prepared_atts = $this->prepareAtts( $atts );
$this->shortcode_content = $content;
$output = '';
$content = empty( $content ) && ! empty( $atts['content'] ) ? $atts['content'] : $content;
if ( ( $this->isInline() || vc_is_page_editable() ) && method_exists( $this, 'contentInline' ) ) {
$output .= $this->contentInline( $this->atts, $content );
} else {
$this->enqueueDefaultScripts();
$custom_output = VC_SHORTCODE_CUSTOMIZE_PREFIX . $this->shortcode;
$custom_output_before = VC_SHORTCODE_BEFORE_CUSTOMIZE_PREFIX . $this->shortcode; // before shortcode function hook
$custom_output_after = VC_SHORTCODE_AFTER_CUSTOMIZE_PREFIX . $this->shortcode; // after shortcode function hook
// Before shortcode
if ( function_exists( $custom_output_before ) ) {
$output .= $custom_output_before( $this->atts, $content );
} else {
$output .= $this->beforeShortcode( $this->atts, $content );
}
// Shortcode content
if ( function_exists( $custom_output ) ) {
$output .= $custom_output( $this->atts, $content );
} else {
$output .= $this->content( $this->atts, $content );
}
// After shortcode
if ( function_exists( $custom_output_after ) ) {
$output .= $custom_output_after( $this->atts, $content );
} else {
$output .= $this->afterShortcode( $this->atts, $content );
}
}
// Filter for overriding outputs
$output = apply_filters( 'vc_shortcode_output', $output, $this, $prepared_atts, $this->shortcode );
return $output;
}
public function enqueueDefaultScripts() {
if ( false === self::$default_scripts_enqueued ) {
wp_enqueue_script( 'wpb_composer_front_js' );
wp_enqueue_style( 'js_composer_front' );
self::$default_scripts_enqueued = true;
}
}
/**
* Return shortcode attributes, see \WPBakeryShortCode::output
* @return array
* @since 4.4
*/
public function getAtts() {
return $this->atts;
}
/**
* Creates html before shortcode html.
*
* @param $atts - shortcode attributes list
* @param $content - shortcode content
*
* @return string - html which will be displayed before shortcode html.
*/
public function beforeShortcode( $atts, $content ) {
return '';
}
/**
* Creates html before shortcode html.
*
* @param $atts - shortcode attributes list
* @param $content - shortcode content
*
* @return string - html which will be displayed after shortcode html.
*/
public function afterShortcode( $atts, $content ) {
return '';
}
/**
* @param $el_class
*
* @return string
*/
public function getExtraClass( $el_class ) {
$output = '';
if ( '' !== $el_class ) {
$output = ' ' . str_replace( '.', '', $el_class );
}
return $output;
}
/**
* @param $css_animation
*
* @return string
*/
public function getCSSAnimation( $css_animation ) {
$output = '';
if ( '' !== $css_animation && 'none' !== $css_animation ) {
wp_enqueue_script( 'vc_waypoints' );
wp_enqueue_style( 'vc_animate-css' );
$output = ' wpb_animate_when_almost_visible wpb_' . $css_animation . ' ' . $css_animation;
}
return $output;
}
/**
* Create HTML comment for blocks only if wpb_debug=true
*
* @param $string
*
* @return string
* @deprecated 4.7 For debug type html comments use more generic debugComment function.
*
*/
public function endBlockComment( $string ) {
return '';
}
/**
* if wpb_debug=true return HTML comment
*
* @param string $comment
*
* @return string
* @since 4.7
* @deprecated 5.5 no need for extra info in output, use xdebug
*/
public function debugComment( $comment ) {
return '';
}
/**
* @param $name
*
* @return null
*/
public function settings( $name ) {
return isset( $this->settings[ $name ] ) ? $this->settings[ $name ] : null;
}
/**
* @param $name
* @param $value
*/
public function setSettings( $name, $value ) {
$this->settings[ $name ] = $value;
}
/**
* @return mixed
* @since 5.5
*/
public function getSettings() {
return $this->settings;
}
/**
* @param $width
*
* @return string
* @throws \Exception
*/
public function getElementHolder( $width ) {
$output = '';
$column_controls = $this->getColumnControlsModular();
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) ? 'wpb_sortable' : $this->nonDraggableClass );
$css_class = 'wpb_' . $this->settings['base'] . ' wpb_content_element ' . $sortable . '' . ( ! empty( $this->settings['class'] ) ? ' ' . $this->settings['class'] : '' );
$output .= '';
$output .= str_replace( '%column_size%', wpb_translateColumnWidthToFractional( $width ), $column_controls );
$output .= $this->getCallbacks( $this->shortcode );
$output .= '
';
$output .= '%wpb_element_content%';
$output .= '
';
$output .= '
';
return $output;
}
// Return block controls
/**
* @param $controls
* @param string $extended_css
*
* @return string
* @throws \Exception
*/
public function getColumnControls( $controls, $extended_css = '' ) {
$controls_start = '';
$controls_end = '
';
$controls_add = '';
$controls_edit = ' ';
$controls_delete = ' ';
$column_controls_full = $controls_start . $controls_add . $controls_edit . $controls_delete . $controls_end;
$column_controls_size_delete = $controls_start . $controls_delete . $controls_end;
$column_controls_popup_delete = $controls_start . $controls_delete . $controls_end;
$column_controls_edit_popup_delete = $controls_start . $controls_edit . $controls_delete . $controls_end;
$column_controls_edit = $controls_start . $controls_edit . $controls_end;
$editAccess = vc_user_access_check_shortcode_edit( $this->shortcode );
$allAccess = vc_user_access_check_shortcode_all( $this->shortcode );
if ( 'popup_delete' === $controls ) {
return $allAccess ? $column_controls_popup_delete : '';
} elseif ( 'edit_popup_delete' === $controls ) {
return $allAccess ? $column_controls_edit_popup_delete : ( $editAccess ? $column_controls_edit : '' );
} elseif ( 'size_delete' === $controls ) {
return $allAccess ? $column_controls_size_delete : '';
} elseif ( 'add' === $controls ) {
return $allAccess ? ( $controls_start . $controls_add . $controls_end ) : '';
} else {
return $allAccess ? $column_controls_full : ( $editAccess ? $column_controls_edit : '' );
}
}
/**
* Return list of controls
* @return array
* @throws \Exception
*/
public function getControlsList() {
$editAccess = vc_user_access_check_shortcode_edit( $this->shortcode );
$allAccess = vc_user_access_check_shortcode_all( $this->shortcode );
if ( $allAccess ) {
return apply_filters( 'vc_wpbakery_shortcode_get_controls_list', $this->controls_list, $this->shortcode );
} else {
$controls = apply_filters( 'vc_wpbakery_shortcode_get_controls_list', $this->controls_list, $this->shortcode );
if ( $editAccess ) {
foreach ( $controls as $key => $value ) {
if ( 'edit' !== $value && 'add' !== $value ) {
unset( $controls[ $key ] );
}
}
return $controls;
} else {
return in_array( 'add', $controls, true ) ? array( 'add' ) : array();
}
}
}
/**
* Build new modern controls for shortcode.
*
* @param string $extended_css
*
* @return string
* @throws \Exception
*/
public function getColumnControlsModular( $extended_css = '' ) {
ob_start();
vc_include_template( apply_filters( 'vc_wpbakery_shortcode_get_column_controls_modular_template', $this->controls_template_file ), array(
'shortcode' => $this->shortcode,
'position' => $this->controls_css_settings,
'extended_css' => $extended_css,
'name' => $this->settings( 'name' ),
'controls' => $this->getControlsList(),
'name_css_class' => $this->getBackendEditorControlsElementCssClass(),
'add_allowed' => $this->getAddAllowed(),
) );
return ob_get_clean();
}
/**
* @return string
* @throws \Exception
*/
public function getBackendEditorControlsElementCssClass() {
$moveAccess = vc_user_access()->part( 'dragndrop' )->checkStateAny( true, null )->get();
$sortable = ( vc_user_access_check_shortcode_all( $this->shortcode ) && $moveAccess ? ' vc_element-move' : ' ' . $this->nonDraggableClass );
return 'vc_control-btn vc_element-name' . $sortable;
}
/**
* This will fire callbacks if they are defined in map.php
*
* @param $id
*
* @return string
*/
public function getCallbacks( $id ) {
$output = '';
if ( isset( $this->settings['js_callback'] ) ) {
foreach ( $this->settings['js_callback'] as $text_val => $val ) {
// TODO: name explain
$output .= ' ';
}
}
return $output;
}
/**
* @param $param
* @param $value
*
* vc_filter: vc_wpbakeryshortcode_single_param_html_holder_value - hook to override param value (param type and etc is available in args)
*
* @return string
*/
public function singleParamHtmlHolder( $param, $value ) {
$value = apply_filters( 'vc_wpbakeryshortcode_single_param_html_holder_value', $value, $param, $this->settings, $this->atts );
$output = '';
// Compatibility fixes
$old_names = array(
'yellow_message',
'blue_message',
'green_message',
'button_green',
'button_grey',
'button_yellow',
'button_blue',
'button_red',
'button_orange',
);
$new_names = array(
'alert-block',
'alert-info',
'alert-success',
'btn-success',
'btn',
'btn-info',
'btn-primary',
'btn-danger',
'btn-warning',
);
$value = str_ireplace( $old_names, $new_names, $value );
$param_name = isset( $param['param_name'] ) ? $param['param_name'] : '';
$type = isset( $param['type'] ) ? $param['type'] : '';
$class = isset( $param['class'] ) ? $param['class'] : '';
if ( ! empty( $param['holder'] ) ) {
if ( 'input' === $param['holder'] ) {
$output .= '<' . $param['holder'] . ' readonly="true" class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '" value="' . $value . '">';
} elseif ( in_array( $param['holder'], array(
'img',
'iframe',
), true ) ) {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '" src="' . esc_url( $value ) . '">';
} elseif ( 'hidden' !== $param['holder'] ) {
$output .= '<' . $param['holder'] . ' class="wpb_vc_param_value ' . $param_name . ' ' . $type . ' ' . $class . '" name="' . $param_name . '">' . $value . '' . $param['holder'] . '>';
}
}
if ( ! empty( $param['admin_label'] ) && true === $param['admin_label'] ) {
$output .= '' . $param['heading'] . ' : ' . $value . ' ';
}
return $output;
}
/**
* @param $params
*
* @return string
*/
protected function getIcon( $params ) {
$data = '';
if ( isset( $params['is_container'] ) && true === $params['is_container'] ) {
$data = ' data-is-container="true"';
}
$title = '';
if ( isset( $params['title'] ) ) {
$title = 'title="' . esc_attr( $params['title'] ) . '" ';
}
return ' ';
}
/**
* @param $title
*
* @return string
*/
protected function outputTitle( $title ) {
$icon = $this->settings( 'icon' );
if ( filter_var( $icon, FILTER_VALIDATE_URL ) ) {
$icon = '';
}
$params = array(
'icon' => $icon,
'is_container' => $this->settings( 'is_container' ),
);
return ' ' . $this->getIcon( $params ) . esc_attr( $title ) . ' ';
}
/**
* @param string $content
*
* @return string
* @throws \Exception
*/
public function template( $content = '' ) {
return $this->contentAdmin( $this->atts, $content );
}
/**
* This functions prepares attributes to use in template
* Converts back escaped characters
*
* @param $atts
*
* @return array
*/
protected function prepareAtts( $atts ) {
$returnAttributes = array();
if ( is_array( $atts ) ) {
foreach ( $atts as $key => $val ) {
$returnAttributes[ $key ] = str_replace( array(
'`{`',
'`}`',
'``',
), array(
'[',
']',
'"',
), $val );
}
}
return apply_filters( 'vc_shortcode_prepare_atts', $returnAttributes, $this->shortcode, $this->settings );
}
/**
* @return string
*/
public function getShortcode() {
return $this->shortcode;
}
/**
* Since 4.5
* Possible placeholders:
* {{ content }}
* {{ title }}
* {{ container-class }}
*
* Possible keys:
* {{
* <%
* %
* @param $markup
* @param string $content
*
* @return string
* @throws \Exception
* @since 4.5
*/
protected function customMarkup( $markup, $content = '' ) {
$pattern = '/\{\{([\s\S][^\n]+?)\}\}|<%([\s\S][^\n]+?)%>|%([\s\S][^\n]+?)%/';
preg_match_all( $pattern, $markup, $matches, PREG_SET_ORDER );
if ( is_array( $matches ) && ! empty( $matches ) ) {
foreach ( $matches as $match ) {
switch ( strtolower( trim( $match[1] ) ) ) {
case 'content':
if ( '' !== $content ) {
$markup = str_replace( $match[0], $content, $markup );
} elseif ( isset( $this->settings['default_content_in_template'] ) && '' !== $this->settings['default_content_in_template'] ) {
$markup = str_replace( $match[0], $this->settings['default_content_in_template'], $markup );
} else {
$markup = str_replace( $match[0], '', $markup );
}
break;
case 'title':
$markup = str_replace( $match[0], $this->outputTitle( $this->settings['name'] ), $markup );
break;
case 'container-class':
if ( method_exists( $this, 'containerContentClass' ) ) {
$markup = str_replace( $match[0], $this->containerContentClass(), $markup );
} else {
$markup = str_replace( $match[0], '', $markup );
}
break;
case 'editor_controls':
$markup = str_replace( $match[0], $this->getColumnControls( $this->settings( 'controls' ) ), $markup );
break;
case 'editor_controls_bottom_add':
$markup = str_replace( $match[0], $this->getColumnControls( 'add', 'bottom-controls' ), $markup );
break;
}
}
}
return do_shortcode( $markup );
}
/**
* @param $atts
*
* @return string
*/
protected function paramsHtmlHolders( $atts ) {
$inner = '';
if ( isset( $this->settings['params'] ) && is_array( $this->settings['params'] ) ) {
foreach ( $this->settings['params'] as $param ) {
$param_value = isset( $atts[ $param['param_name'] ] ) ? $atts[ $param['param_name'] ] : '';
$inner .= $this->singleParamHtmlHolder( $param, $param_value );
}
}
return $inner;
}
/**
* Check is allowed to add another element inside current element.
*
* @return bool
* @since 4.8
*
*/
public function getAddAllowed() {
return true;
}
}
classes/shortcodes/core/class-wbpakeryshortcodefishbones.php 0000644 00000007222 15021217214 0020560 0 ustar 00 settings = $settings;
$this->shortcode = $this->settings['base'];
add_action( 'admin_init', array(
$this,
'hookAdmin',
) );
if ( ! shortcode_exists( $this->shortcode ) ) {
add_shortcode( $this->shortcode, array(
$this,
'render',
) );
}
}
public function hookAdmin() {
$this->enqueueAssets();
add_action( 'admin_init', array(
$this,
'enqueueAssets',
) );
if ( vc_is_page_editable() ) {
// fix for page editable
add_action( 'wp_head', array(
$this,
'printIconStyles',
) );
}
add_action( 'admin_head', array(
$this,
'printIconStyles',
) ); // fe+be
add_action( 'admin_print_scripts-post.php', array(
$this,
'enqueueAssets',
) );
add_action( 'admin_print_scripts-post-new.php', array(
$this,
'enqueueAssets',
) );
}
/**
* @return WPBakeryShortCodeFishBones
* @throws \Exception
*/
public function shortcodeClass() {
if ( false !== $this->shortcode_class ) {
return $this->shortcode_class;
}
require_once vc_path_dir( 'SHORTCODES_DIR', 'wordpress-widgets.php' );
$class_name = $this->settings( 'php_class_name' ) ? $this->settings( 'php_class_name' ) : 'WPBakeryShortCode_' . $this->settings( 'base' );
$autoloaded_dependencies = VcShortcodeAutoloader::includeClass( $class_name );
if ( ! $autoloaded_dependencies ) {
$file = vc_path_dir( 'SHORTCODES_DIR', str_replace( '_', '-', $this->settings( 'base' ) ) . '.php' );
if ( is_file( $file ) ) {
require_once $file;
}
}
if ( class_exists( $class_name ) && is_subclass_of( $class_name, 'WPBakeryShortCode' ) ) {
$this->shortcode_class = new $class_name( $this->settings );
} else {
$this->shortcode_class = new WPBakeryShortCodeFishBones( $this->settings );
}
return $this->shortcode_class;
}
/**
*
*
* @param $tag
*
* @return \WPBakeryShortCodeFishBones
* @throws \Exception
* @since 4.9
*
*/
public static function getElementClass( $tag ) {
$settings = WPBMap::getShortCode( $tag );
if ( empty( $settings ) ) {
throw new Exception( 'Element must be mapped in system' );
}
require_once vc_path_dir( 'SHORTCODES_DIR', 'wordpress-widgets.php' );
$class_name = ! empty( $settings['php_class_name'] ) ? $settings['php_class_name'] : 'WPBakeryShortCode_' . $settings['base'];
$autoloaded_dependencies = VcShortcodeAutoloader::includeClass( $class_name );
if ( ! $autoloaded_dependencies ) {
$file = vc_path_dir( 'SHORTCODES_DIR', str_replace( '_', '-', $settings['base'] ) . '.php' );
if ( is_file( $file ) ) {
require_once $file;
}
}
if ( class_exists( $class_name ) && is_subclass_of( $class_name, 'WPBakeryShortCode' ) ) {
$shortcode_class = new $class_name( $settings );
} else {
$shortcode_class = new WPBakeryShortCodeFishBones( $settings );
}
return $shortcode_class;
}
/**
* @param $atts
* @param null $content
* @param null $tag
*
* @return string
* @throws \Exception
*/
public function render( $atts, $content = null, $tag = null ) {
return self::getElementClass( $tag )->output( $atts, $content );
}
/**
* @param string $content
*
* @return string
* @throws \Exception
*/
public function template( $content = '' ) {
return $this->shortcodeClass()->contentAdmin( array(), $content );
}
}
classes/shortcodes/core/class-vc-shortcodes-manager.php 0000644 00000011757 15021217214 0017323 0 ustar 00 path( 'SHORTCODES_DIR', 'core/class-wpbakery-visualcomposer-abstract.php' );
require_once $this->path( 'SHORTCODES_DIR', 'core/class-wpbakeryshortcode.php' );
require_once $this->path( 'SHORTCODES_DIR', 'core/class-wbpakeryshortcodefishbones.php' );
require_once $this->path( 'SHORTCODES_DIR', 'core/class-wpbakeryshortcodescontainer.php' );
/**
* @since 4.9
*
* Class Vc_Shortcodes_Manager
*/
class Vc_Shortcodes_Manager {
private $shortcode_classes = array(
'default' => array(),
);
private $tag;
/**
* Core singleton class
* @var self - pattern realization
*/
private static $instance;
/**
* Get the instance of Vc_Shortcodes_Manager
*
* @return self
*/
public static function getInstance() {
if ( ! ( self::$instance instanceof self ) ) {
self::$instance = new self();
}
return self::$instance;
}
public function getTag() {
return $this->tag;
}
/**
* @param $tag
* @return $this
*/
/**
* @param $tag
* @return $this
*/
public function setTag( $tag ) {
$this->tag = $tag;
return $this;
}
/**
* @param $tag
* @return \WPBakeryShortCodeFishBones
* @throws \Exception
*/
/**
* @param $tag
* @return \WPBakeryShortCodeFishBones
* @throws \Exception
*/
public function getElementClass( $tag ) {
$currentScope = WPBMap::getScope();
if ( isset( $this->shortcode_classes[ $currentScope ], $this->shortcode_classes[ $currentScope ][ $tag ] ) ) {
return $this->shortcode_classes[ $currentScope ][ $tag ];
}
if ( ! isset( $this->shortcode_classes[ $currentScope ] ) ) {
$this->shortcode_classes[ $currentScope ] = array();
}
$settings = WPBMap::getShortCode( $tag );
if ( empty( $settings ) ) {
throw new Exception( 'Element must be mapped in system' );
}
require_once vc_path_dir( 'SHORTCODES_DIR', 'wordpress-widgets.php' );
$class_name = ! empty( $settings['php_class_name'] ) ? $settings['php_class_name'] : 'WPBakeryShortCode_' . $settings['base'];
$autoloaded_dependencies = VcShortcodeAutoloader::includeClass( $class_name );
if ( ! $autoloaded_dependencies ) {
$file = vc_path_dir( 'SHORTCODES_DIR', str_replace( '_', '-', $settings['base'] ) . '.php' );
if ( is_file( $file ) ) {
require_once $file;
}
}
if ( class_exists( $class_name ) && is_subclass_of( $class_name, 'WPBakeryShortCode' ) ) {
$shortcode_class = new $class_name( $settings );
} else {
$shortcode_class = new WPBakeryShortCodeFishBones( $settings );
}
$this->shortcode_classes[ $currentScope ][ $tag ] = $shortcode_class;
return $shortcode_class;
}
/**
* @return \WPBakeryShortCodeFishBones
* @throws \Exception
*/
/**
* @return \WPBakeryShortCodeFishBones
* @throws \Exception
*/
public function shortcodeClass() {
return $this->getElementClass( $this->tag );
}
/**
* @param string $content
*
* @return string
* @throws \Exception
*/
public function template( $content = '' ) {
return $this->getElementClass( $this->tag )->contentAdmin( array(), $content );
}
/**
* @param $name
*
* @return null
* @throws \Exception
*/
public function settings( $name ) {
$settings = WPBMap::getShortCode( $this->tag );
return isset( $settings[ $name ] ) ? $settings[ $name ] : null;
}
/**
* @param $atts
* @param null $content
* @param null $tag
*
* @return string
* @throws \Exception
*/
public function render( $atts, $content = null, $tag = null ) {
return $this->getElementClass( $this->tag )->output( $atts, $content );
}
public function buildShortcodesAssets() {
$elements = WPBMap::getAllShortCodes();
foreach ( $elements as $tag => $settings ) {
$element_class = $this->getElementClass( $tag );
$element_class->enqueueAssets();
$element_class->printIconStyles();
}
}
public function buildShortcodesAssetsForEditable() {
$elements = WPBMap::getAllShortCodes(); // @todo create pull to use only where it is set inside function. BC problem
foreach ( $elements as $tag => $settings ) {
$element_class = $this->getElementClass( $tag );
$element_class->printIconStyles();
}
}
/**
* @param $tag
* @return bool
*/
/**
* @param $tag
* @return bool
*/
public function isShortcodeClassInitialized( $tag ) {
$currentScope = WPBMap::getScope();
return isset( $this->shortcode_classes[ $currentScope ], $this->shortcode_classes[ $currentScope ][ $tag ] );
}
/**
* @param $tag
* @return bool
*/
/**
* @param $tag
* @return bool
*/
public function unsetElementClass( $tag ) {
$currentScope = WPBMap::getScope();
unset( $this->shortcode_classes[ $currentScope ][ $tag ] );
return true;
}
}
classes/shortcodes/core/class-wpbakery-visualcomposer-abstract.php 0000644 00000006525 15021217214 0021623 0 ustar 00 jsScripts();
}
public function jsScripts() {
wp_register_script( 'vc_waypoints', vc_asset_url( 'lib/vc_waypoints/vc-waypoints.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'ChartJS', vc_asset_url( 'lib/bower/chartjs/Chart.min.js' ), array(), WPB_VC_VERSION, true );
wp_register_script( 'vc_line_chart', vc_asset_url( 'lib/vc_line_chart/vc_line_chart.min.js' ), array(
'jquery',
'vc_waypoints',
'ChartJS',
), WPB_VC_VERSION, true );
}
}
classes/shortcodes/vc-tta-tabs.php 0000644 00000012063 15021217214 0013211 0 ustar 00 includeClass( 'WPBakeryShortCode_Vc_Tta_Accordion' );
/**
* Class WPBakeryShortCode_Vc_Tta_Tabs
*/
class WPBakeryShortCode_Vc_Tta_Tabs extends WPBakeryShortCode_Vc_Tta_Accordion {
public $layout = 'tabs';
public function enqueueTtaScript() {
wp_register_script( 'vc_tabs_script', vc_asset_url( 'lib/vc_tabs/vc-tabs.min.js' ), array( 'vc_accordion_script' ), WPB_VC_VERSION, true );
parent::enqueueTtaScript();
wp_enqueue_script( 'vc_tabs_script' );
}
/**
* @return string
*/
public function getWrapperAttributes() {
$attributes = array();
$attributes[] = 'class="' . esc_attr( $this->getTtaContainerClasses() ) . '"';
$attributes[] = 'data-vc-action="collapse"';
$autoplay = $this->atts['autoplay'];
if ( $autoplay && 'none' !== $autoplay && intval( $autoplay ) > 0 ) {
$attributes[] = 'data-vc-tta-autoplay="' . esc_attr( wp_json_encode( array(
'delay' => intval( $autoplay ) * 1000,
) ) ) . '"';
}
if ( ! empty( $this->atts['el_id'] ) ) {
$attributes[] = 'id="' . esc_attr( $this->atts['el_id'] ) . '"';
}
return implode( ' ', $attributes );
}
/**
* @return string
*/
public function getTtaGeneralClasses() {
$classes = parent::getTtaGeneralClasses();
if ( ! empty( $this->atts['no_fill_content_area'] ) ) {
$classes .= ' vc_tta-o-no-fill';
}
if ( isset( $this->atts['tab_position'] ) ) {
$classes .= ' ' . $this->getTemplateVariable( 'tab_position' );
}
$classes .= ' ' . $this->getParamAlignment( $this->atts, $this->content );
return $classes;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTabPosition( $atts, $content ) {
if ( isset( $atts['tab_position'] ) && strlen( $atts['tab_position'] ) > 0 ) {
return 'vc_tta-tabs-position-' . $atts['tab_position'];
}
return null;
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTabsListTop( $atts, $content ) {
if ( empty( $atts['tab_position'] ) || 'top' !== $atts['tab_position'] ) {
return null;
}
return $this->getParamTabsList( $atts, $content );
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamTabsListBottom( $atts, $content ) {
if ( empty( $atts['tab_position'] ) || 'bottom' !== $atts['tab_position'] ) {
return null;
}
return $this->getParamTabsList( $atts, $content );
}
/**
* Pagination is on top only if tabs are at bottom
*
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamPaginationTop( $atts, $content ) {
if ( empty( $atts['tab_position'] ) || 'bottom' !== $atts['tab_position'] ) {
return null;
}
return $this->getParamPaginationList( $atts, $content );
}
/**
* Pagination is at bottom only if tabs are on top
*
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamPaginationBottom( $atts, $content ) {
if ( empty( $atts['tab_position'] ) || 'top' !== $atts['tab_position'] ) {
return null;
}
return $this->getParamPaginationList( $atts, $content );
}
/**
* @param $atts
*
* @return string
*/
public function constructIcon( $atts ) {
vc_icon_element_fonts_enqueue( $atts['i_type'] );
$class = 'vc_tta-icon';
if ( isset( $atts[ 'i_icon_' . $atts['i_type'] ] ) ) {
$class .= ' ' . $atts[ 'i_icon_' . $atts['i_type'] ];
} else {
$class .= ' fa fa-adjust';
}
return ' ';
}
/**
* @param $atts
* @param $content
*
* @return string
*/
public function getParamTabsList( $atts, $content ) {
$isPageEditabe = vc_is_page_editable();
$html = array();
$html[] = '';
$html[] = '
';
if ( ! $isPageEditabe ) {
$active_section = $this->getActiveSection( $atts, false );
foreach ( WPBakeryShortCode_Vc_Tta_Section::$section_info as $nth => $section ) {
$classes = array( 'vc_tta-tab' );
if ( ( $nth + 1 ) === $active_section ) {
$classes[] = $this->activeClass;
}
$title = '' . $section['title'] . ' ';
if ( 'true' === $section['add_icon'] ) {
$icon_html = $this->constructIcon( $section );
if ( 'left' === $section['i_position'] ) {
$title = $icon_html . $title;
} else {
$title = $title . $icon_html;
}
}
$a_html = '' . $title . ' ';
$html[] = '' . $a_html . ' ';
}
}
$html[] = ' ';
$html[] = '
';
return implode( '', apply_filters( 'vc-tta-get-params-tabs-list', $html, $atts, $content, $this ) );
}
/**
* @param $atts
* @param $content
*
* @return string|null
*/
public function getParamAlignment( $atts, $content ) {
if ( isset( $atts['alignment'] ) && strlen( $atts['alignment'] ) > 0 ) {
return 'vc_tta-controls-align-' . $atts['alignment'];
}
return null;
}
}
classes/shortcodes/vc-images-carousel.php 0000644 00000003412 15021217214 0014550 0 ustar 00 jsCssScripts();
}
public function jsCssScripts() {
wp_register_script( 'vc_transition_bootstrap_js', vc_asset_url( 'lib/vc_carousel/js/transition.min.js' ), array(), WPB_VC_VERSION, true );
wp_register_script( 'vc_carousel_js', vc_asset_url( 'lib/vc_carousel/js/vc_carousel.min.js' ), array( 'vc_transition_bootstrap_js' ), WPB_VC_VERSION, true );
wp_register_style( 'vc_carousel_css', vc_asset_url( 'lib/vc_carousel/css/vc_carousel.min.css' ), array(), WPB_VC_VERSION );
}
/**
* @return string
*/
public static function getCarouselIndex() {
return ( self::$carousel_index ++ ) . '-' . time();
}
/**
* @param $size
* @return string
*/
protected function getSliderWidth( $size ) {
global $_wp_additional_image_sizes;
$width = '100%';
if ( in_array( $size, get_intermediate_image_sizes(), true ) ) {
if ( in_array( $size, array(
'thumbnail',
'medium',
'large',
), true ) ) {
$width = get_option( $size . '_size_w' ) . 'px';
} else {
if ( isset( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes[ $size ] ) ) {
$width = $_wp_additional_image_sizes[ $size ]['width'] . 'px';
}
}
} else {
preg_match_all( '/\d+/', $size, $matches );
if ( count( $matches[0] ) > 1 ) {
$width = $matches[0][0] . 'px';
}
}
return $width;
}
}
classes/editors/navbar/class-vc-navbar-frontend.php 0000644 00000012627 15021217214 0016436 0 ustar 00 get( 'not_responsive_css' );
if ( '1' !== $disable_responsive ) {
$screen_sizes = array(
array(
'title' => esc_html__( 'Desktop', 'js_composer' ),
'size' => '100%',
'key' => 'default',
'active' => true,
),
array(
'title' => esc_html__( 'Tablet landscape mode', 'js_composer' ),
'size' => '1024px',
'key' => 'landscape-tablets',
),
array(
'title' => esc_html__( 'Tablet portrait mode', 'js_composer' ),
'size' => '768px',
'key' => 'portrait-tablets',
),
array(
'title' => esc_html__( 'Smartphone landscape mode', 'js_composer' ),
'size' => '480px',
'key' => 'landscape-smartphones',
),
array(
'title' => esc_html__( 'Smartphone portrait mode', 'js_composer' ),
'size' => '320px',
'key' => 'portrait-smartphones',
),
);
$output = '' . '' . '
' . '
';
$screen = current( $screen_sizes );
while ( $screen ) {
$output .= ' ';
next( $screen_sizes );
$screen = current( $screen_sizes );
}
$output .= ' ';
return $output;
}
return '';
}
/**
* @return string
* @throws \Exception
*/
public function getControlSaveUpdate() {
$post = $this->post();
$post_type = get_post_type_object( $this->post->post_type );
$can_publish = current_user_can( $post_type->cap->publish_posts );
ob_start();
?>
part( 'backend_editor' )->can()->get() ? esc_html__( 'Backend Editor', 'js_composer' ) : esc_html__( 'Edit', 'js_composer' );
?>
post_status, array(
'publish',
'future',
'private',
), true ) ) :
?>
post_status ) : ?>
post_status && $can_publish ) : ?>
' . ' ' . '';
}
}
classes/editors/navbar/class-vc-navbar-undoredo.php 0000644 00000001670 15021217214 0016432 0 ustar 00 ',
);
$controls[] = array(
'undo',
' ',
);
return $controls;
}
}
classes/editors/navbar/class-vc-navbar.php 0000644 00000012553 15021217214 0014617 0 ustar 00 post = $post;
}
/**
* Generate array of controls by iterating property $controls list.
* vc_filter: vc_nav_controls - hook to override list of controls
* @return array - list of arrays witch contains key name and html output for button.
*/
public function getControls() {
$control_list = array();
foreach ( $this->controls as $control ) {
$method = vc_camel_case( 'get_control_' . $control );
if ( method_exists( $this, $method ) ) {
$control_list[] = array(
$control,
$this->$method(),
);
}
}
return apply_filters( $this->controls_filter_name, $control_list );
}
/**
* Get current post.
* @return null|WP_Post
*/
public function post() {
if ( $this->post ) {
return $this->post;
} else {
$this->post = get_post();
}
return $this->post;
}
/**
* Render template.
*/
public function render() {
vc_include_template( 'editors/navbar/navbar.tpl.php', array(
'css_class' => $this->css_class,
'controls' => $this->getControls(),
'nav_bar' => $this,
'post' => $this->post(),
) );
}
/**
* vc_filter: vc_nav_front_logo - hook to override WPBakery Page Builder logo
* @return string
*/
public function getLogo() {
$output = '' . esc_attr__( 'WPBakery Page Builder', 'js_composer' ) . ' ';
return apply_filters( 'vc_nav_front_logo', $output );
}
/**
* @return string
* @throws \Exception
*/
public function getControlCustomCss() {
if ( ! vc_user_access()->part( 'post_settings' )->can()->get() ) {
return '';
}
return '' . '' . esc_attr__( 'CSS', 'js_composer' ) . ' ' . ' ';
}
/**
* @return string
*/
public function getControlFullscreen() {
return '' . ' ' . ' ';
}
/**
* @return string
*/
public function getControlWindowed() {
return '' . ' ' . ' ';
}
/**
* @return string
* @throws \Exception
*/
public function getControlAddElement() {
if ( vc_user_access()->part( 'shortcodes' )->checkStateAny( true, 'custom', null )
->get() && vc_user_access_check_shortcode_all( 'vc_row' ) && vc_user_access_check_shortcode_all( 'vc_column' ) ) {
return '' . ' ' . ' ' . ' ' . ' ';
}
return '';
}
/**
* @return string
* @throws \Exception
*/
public function getControlTemplates() {
if ( ! vc_user_access()->part( 'templates' )->can()->get() ) {
return '';
}
return ' ';
}
/**
* @return string
* @throws \Exception
*/
public function getControlFrontend() {
if ( ! vc_enabled_frontend() ) {
return '';
}
return '' . '' . esc_html__( 'Frontend', 'js_composer' ) . ' ' . ' ';
}
/**
* @return string
*/
public function getControlPreview() {
return '';
}
/**
* @return string
*/
public function getControlSaveBackend() {
return '' . '' . esc_attr__( 'Preview', 'js_composer' ) . ' ' . '' . esc_attr__( 'Update', 'js_composer' ) . ' ' . ' ';
}
}
classes/editors/class-vc-edit-form-fields.php 0000644 00000025720 15021217214 0015227 0 ustar 00 tag = $tag;
$this->atts = apply_filters( 'vc_edit_form_fields_attributes_' . $this->tag, $atts );
$this->setSettings( WPBMap::getShortCode( $this->tag ) );
}
/**
* Get settings
* @param $key
*
* @return null
* @since 4.4
*
*/
public function setting( $key ) {
return isset( $this->settings[ $key ] ) ? $this->settings[ $key ] : null;
}
/**
* Set settings data
* @param array $settings
* @since 4.4
*
*/
public function setSettings( array $settings ) {
$this->settings = $settings;
}
/**
* Shortcode Post ID getter.
* If post id isn't set try to get from get_the_ID function.
* @return int|bool;
* @since 4.4
*/
public function postId() {
if ( ! $this->post_id ) {
$this->post_id = get_the_ID();
}
return $this->post_id;
}
/**
* Shortcode Post ID setter.
* @param $post_id - integer value in post_id
* @since 4.4
*
*/
public function setPostId( $post_id ) {
$this->post_id = (int) $post_id;
}
/**
* Get shortcode attribute value.
*
* This function checks if value isn't set then it uses std or value fields in param settings.
* @param $param_settings
* @param $value
*
* @return null
* @since 4.4
*
*/
protected function parseShortcodeAttributeValue( $param_settings, $value ) {
if ( is_null( $value ) ) { // If value doesn't exists
if ( isset( $param_settings['std'] ) ) {
$value = $param_settings['std'];
} elseif ( isset( $param_settings['value'] ) && is_array( $param_settings['value'] ) && ! empty( $param_settings['type'] ) && 'checkbox' !== $param_settings['type'] ) {
$first_key = key( $param_settings['value'] );
$value = $first_key ? $param_settings['value'][ $first_key ] : '';
} elseif ( isset( $param_settings['value'] ) && ! is_array( $param_settings['value'] ) ) {
$value = $param_settings['value'];
}
}
return $value;
}
/**
* Enqueue js scripts for attributes types.
* @return string
* @since 4.4
*/
public function enqueueScripts() {
$output = '';
$scripts = apply_filters( 'vc_edit_form_enqueue_script', WpbakeryShortcodeParams::getScripts() );
if ( is_array( $scripts ) ) {
foreach ( $scripts as $script ) {
$custom_tag = 'script';
// @todo Check posibility to use wp_add_inline_script
// @codingStandardsIgnoreLine
$output .= '<' . $custom_tag . ' src="' . esc_url( $script ) . '">' . $custom_tag . '>';
}
}
return $output;
}
/**
* Render grouped fields.
* @param $groups
* @param $groups_content
*
* @return string
* @since 4.4
*
*/
protected function renderGroupedFields( $groups, $groups_content ) {
$output = '';
if ( count( $groups ) > 1 || ( count( $groups ) >= 1 && empty( $groups_content['_general'] ) ) ) {
$output .= '';
} elseif ( ! empty( $groups_content['_general'] ) ) {
$output .= '' . $groups_content['_general'] . '
';
}
return $output;
}
/**
* Render fields html and output it.
* @since 4.4
* vc_filter: vc_edit_form_class - filter to override editor_css_classes array
*/
public function render() {
$this->loadDefaultParams();
$output = $el_position = '';
$groups_content = $groups = array();
$params = $this->setting( 'params' );
$editor_css_classes = apply_filters( 'vc_edit_form_class', array(
'wpb_edit_form_elements',
'vc_edit_form_elements',
), $this->atts, $params );
$deprecated = $this->setting( 'deprecated' );
require_once vc_path_dir( 'AUTOLOAD_DIR', 'class-vc-settings-presets.php' );
// TODO: check presets 6.0
// $list_vendor_presets = Vc_Settings_Preset::listVendorSettingsPresets( $this->tag );
// $list_presets = Vc_Settings_Preset::listSettingsPresets( $this->tag );
$show_settings = false;
$saveAsTemplateElements = apply_filters( 'vc_popup_save_as_template_elements', array(
'vc_row',
'vc_section',
) );
$show_presets = ! in_array( $this->tag, $saveAsTemplateElements, true ) && vc_user_access()->part( 'presets' )->checkStateAny( true, null )->get();
if ( in_array( $this->tag, $saveAsTemplateElements, true ) && vc_user_access()->part( 'templates' )->checkStateAny( true, null )->get() ) {
$show_settings = true;
}
$custom_tag = 'script';
$output .= sprintf( '<' . $custom_tag . '>window.vc_presets_show=%s;' . $custom_tag . '>', $show_presets ? 'true' : 'false' );
$output .= sprintf( '<' . $custom_tag . '>window.vc_settings_show=%s;' . $custom_tag . '>', $show_presets || $show_settings ? 'true' : 'false' );
if ( ! empty( $deprecated ) ) {
$output .= '';
}
$output .= '';
if ( is_array( $params ) ) {
foreach ( $params as $param ) {
$name = isset( $param['param_name'] ) ? $param['param_name'] : null;
if ( ! is_null( $name ) ) {
$value = isset( $this->atts[ $name ] ) ? $this->atts[ $name ] : null;
$value = $this->parseShortcodeAttributeValue( $param, $value );
$group = isset( $param['group'] ) && '' !== $param['group'] ? $param['group'] : '_general';
if ( ! isset( $groups_content[ $group ] ) ) {
$groups[] = $group;
$groups_content[ $group ] = '';
}
$groups_content[ $group ] .= $this->renderField( $param, $value );
}
}
}
$output .= $this->renderGroupedFields( $groups, $groups_content );
$output .= '
';
$output .= $this->enqueueScripts();
// @codingStandardsIgnoreLine
echo $output;
do_action( 'vc_edit_form_fields_after_render' );
}
/**
* Generate html for shortcode attribute.
*
* Method
* @param $param
* @param $value
*
* vc_filter: vc_single_param_edit - hook to edit any shortode param
* vc_filter: vc_form_fields_render_field_{shortcode_name}_{param_name}_param_value - hook to edit shortcode param
* value vc_filter: vc_form_fields_render_field_{shortcode_name}_{param_name}_param - hook to edit shortcode
* param attributes vc_filter: vc_single_param_edit_holder_output - hook to edit output of this method
*
* @return mixed
* @since 4.4
*
*/
public function renderField( $param, $value ) {
$param['vc_single_param_edit_holder_class'] = array(
'wpb_el_type_' . $param['type'],
'vc_wrapper-param-type-' . $param['type'],
'vc_shortcode-param',
'vc_column',
);
if ( ! empty( $param['param_holder_class'] ) ) {
$param['vc_single_param_edit_holder_class'][] = $param['param_holder_class'];
}
$param = apply_filters( 'vc_single_param_edit', $param, $value );
$output = '';
$output .= ( isset( $param['heading'] ) ) ? '
' . $param['heading'] . '
' : '';
$output .= '
';
$value = apply_filters( 'vc_form_fields_render_field_' . $this->setting( 'base' ) . '_' . $param['param_name'] . '_param_value', $value, $param, $this->settings, $this->atts );
$param = apply_filters( 'vc_form_fields_render_field_' . $this->setting( 'base' ) . '_' . $param['param_name'] . '_param', $param, $value, $this->settings, $this->atts );
$output = apply_filters( 'vc_edit_form_fields_render_field_' . $param['type'] . '_before', $output );
$output .= vc_do_shortcode_param_settings_field( $param['type'], $param, $value, $this->setting( 'base' ) );
$output_after = '';
if ( isset( $param['description'] ) ) {
$output_after .= '' . $param['description'] . ' ';
}
$output_after .= '
';
$output .= apply_filters( 'vc_edit_form_fields_render_field_' . $param['type'] . '_after', $output_after );
return apply_filters( 'vc_single_param_edit_holder_output', $output, $param, $value, $this->settings, $this->atts );
}
/**
* Create default shortcode params
*
* List of params stored in global variable $vc_params_list.
* Please check include/params/load.php for default params list.
* @return bool
* @since 4.4
*/
public function loadDefaultParams() {
global $vc_params_list;
if ( empty( $vc_params_list ) ) {
return false;
}
$script_url = vc_asset_url( 'js/dist/edit-form.min.js' );
foreach ( $vc_params_list as $param ) {
vc_add_shortcode_param( $param, 'vc_' . $param . '_form_field', $script_url );
}
do_action( 'vc_load_default_params' );
return true;
}
}
classes/editors/popups/class-vc-edit-layout.php 0000644 00000000477 15021217214 0015665 0 ustar 00 $vc_row_layouts,
) );
}
}
classes/editors/popups/class-vc-shortcode-edit-form.php 0000644 00000004405 15021217214 0017276 0 ustar 00 initialized ) {
return;
}
$this->initialized = true;
add_action( 'wp_ajax_vc_edit_form', array(
$this,
'renderFields',
) );
add_filter( 'vc_single_param_edit', array(
$this,
'changeEditFormFieldParams',
) );
add_filter( 'vc_edit_form_class', array(
$this,
'changeEditFormParams',
) );
}
/**
*
*/
public function render() {
vc_include_template( 'editors/popups/vc_ui-panel-edit-element.tpl.php', array(
'box' => $this,
) );
}
/**
* Build edit form fields.
*
* @since 4.4
*/
public function renderFields() {
$tag = vc_post_param( 'tag' );
vc_user_access()->checkAdminNonce()->validateDie( esc_html__( 'Access denied', 'js_composer' ) )->wpAny( array(
'edit_post',
(int) vc_request_param( 'post_id' ),
) )->validateDie( esc_html__( 'Access denied', 'js_composer' ) )->check( 'vc_user_access_check_shortcode_edit', $tag )->validateDie( esc_html__( 'Access denied', 'js_composer' ) );
$params = (array) stripslashes_deep( vc_post_param( 'params' ) );
$params = array_map( 'vc_htmlspecialchars_decode_deep', $params );
require_once vc_path_dir( 'EDITORS_DIR', 'class-vc-edit-form-fields.php' );
$fields = new Vc_Edit_Form_Fields( $tag, $params );
$output = $fields->render();
// @codingStandardsIgnoreLine
wp_die( $output );
}
/**
* @param $param
*
* @return mixed
*/
public function changeEditFormFieldParams( $param ) {
$css = $param['vc_single_param_edit_holder_class'];
if ( isset( $param['edit_field_class'] ) ) {
$new_css = $param['edit_field_class'];
} else {
$new_css = 'vc_col-xs-12';
}
array_unshift( $css, $new_css );
$param['vc_single_param_edit_holder_class'] = $css;
return $param;
}
/**
* @param $css_classes
*
* @return mixed
*/
public function changeEditFormParams( $css_classes ) {
$css = '';
array_unshift( $css_classes, $css );
return $css_classes;
}
}
classes/editors/popups/class-vc-preset-panel-editor.php 0000644 00000005603 15021217214 0017304 0 ustar 00 initialized ) {
return;
}
$this->initialized = true;
}
/**
* @since 5.2
*/
public function renderUIPreset() {
vc_include_template( 'editors/popups/vc_ui-panel-preset.tpl.php', array(
'box' => $this,
) );
return '';
}
/**
* Get list of all presets for specific shortcode
*
* @return array E.g. array(id1 => title1, id2 => title2, ...)
* @since 5.2
*
*
*/
public function listPresets() {
$list = array();
$args = array(
'post_type' => 'vc_settings_preset',
'orderby' => array( 'post_date' => 'DESC' ),
'posts_per_page' => - 1,
);
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$presetParentName = self::constructPresetParent( $post->post_mime_type );
$list[ $post->ID ] = array(
'title' => $post->post_title,
'parent' => $presetParentName,
);
}
return $list;
}
/**
* Single preset html
*
* @return string
* @since 5.2
*
*
*/
public function getPresets() {
$listPresets = $this->listPresets();
$output = '';
foreach ( $listPresets as $presetId => $preset ) {
$output .= '';
$output .= '
';
$output .= '
' . esc_html( $preset['title'] ) . ' ';
$output .= '
';
$output .= '';
$output .= ' ';
$output .= ' ';
$output .= '';
$output .= ' ';
$output .= ' ';
$output .= '
';
$output .= '
';
$output .= '
';
}
return $output;
}
/**
* Get preset parent shortcode name from post mime type
*
* @param $presetMimeType
*
* @return string
* @since 5.2
*
*/
public static function constructPresetParent( $presetMimeType ) {
return str_replace( '-', '_', str_replace( 'vc-settings-preset/', '', $presetMimeType ) );
}
}
classes/editors/popups/class-vc-post-settings.php 0000644 00000000761 15021217214 0016244 0 ustar 00 editor = $editor;
}
public function editor() {
return $this->editor;
}
public function renderUITemplate() {
vc_include_template( 'editors/popups/vc_ui-panel-post-settings.tpl.php', array(
'box' => $this,
) );
}
}
classes/editors/popups/class-vc-add-element-box.php 0000644 00000011146 15021217214 0016365 0 ustar 00 ';
}
/**
* Single button html template
*
* @param $params
*
* @return string
*/
public function renderButton( $params ) {
if ( ! is_array( $params ) || empty( $params ) ) {
return '';
}
$output = $class = $class_out = $data = $category_css_classes = '';
if ( ! empty( $params['class'] ) ) {
$class_ar = $class_at_out = explode( ' ', $params['class'] );
$count = count( $class_ar );
for ( $n = 0; $n < $count; $n ++ ) {
$class_ar[ $n ] .= '_nav';
$class_at_out[ $n ] .= '_o';
}
$class = ' ' . implode( ' ', $class_ar );
$class_out = ' ' . implode( ' ', $class_at_out );
}
if ( isset( $params['_category_ids'] ) ) {
foreach ( $params['_category_ids'] as $id ) {
$category_css_classes .= ' js-category-' . $id;
}
}
if ( isset( $params['is_container'] ) && true === $params['is_container'] ) {
$data .= ' data-is-container="true"';
}
$data .= ' data-vc-ui-element="add-element-button"';
$description = ! empty( $params['description'] ) ? '' . htmlspecialchars( esc_html( $params['description'] ), ENT_QUOTES, 'UTF-8' ) . ' ' : '';
$name = '' . htmlspecialchars( esc_html( stripslashes( $params['name'] ) ), ENT_QUOTES, 'UTF-8' ) . ' ';
$output .= ' ';
return $output;
}
/**
* Get mapped shortcodes list.
*
* @return array
* @throws \Exception
* @since 4.4
*/
public function shortcodes() {
return apply_filters( 'vc_add_new_elements_to_box', WPBMap::getSortedUserShortCodes() );
}
/**
* Render list of buttons for each mapped and allowed VC shortcodes.
* vc_filter: vc_add_element_box_buttons - hook to override output of getControls method
* @return mixed
* @throws \Exception
* @see WPBMap::getSortedUserShortCodes
*/
public function getControls() {
$output = '';
/** @var array $element */
$buttons_count = 0;
$shortcodes = $this->shortcodes();
foreach ( $shortcodes as $element ) {
if ( isset( $element['content_element'] ) && false === $element['content_element'] ) {
continue;
}
$button = $this->renderButton( $element );
if ( ! empty( $button ) ) {
$buttons_count ++;
}
$output .= $button;
}
$output .= ' ';
if ( 0 === $buttons_count ) {
$this->show_empty_message = true;
}
return apply_filters( 'vc_add_element_box_buttons', $output );
}
/**
* Get categories list from mapping data.
* @return array
* @throws \Exception
* @since 4.5
*/
public function getCategories() {
return apply_filters( 'vc_add_new_category_filter', WPBMap::getUserCategories() );
}
/**
*
*/
public function render() {
vc_include_template( 'editors/popups/vc_ui-panel-add-element.tpl.php', array(
'box' => $this,
'template_variables' => array(
'categories' => $this->getCategories(),
),
) );
}
/**
* Render icon for shortcode
*
* @param $params
*
* @return string
* @since 4.8
*/
public function renderIcon( $params ) {
return $this->getIcon( $params );
}
/**
* @return boolean
*/
public function isShowEmptyMessage() {
return $this->show_empty_message;
}
/**
* @return mixed
* @throws \Exception
*/
public function getPartState() {
return vc_user_access()->part( 'shortcodes' )->getState();
}
}
classes/editors/popups/class-vc-templates-panel-editor.php 0000644 00000070142 15021217214 0020000 0 ustar 00 initialized ) {
return;
}
$this->initialized = true;
add_filter( 'vc_load_default_templates_welcome_block', array(
$this,
'loadDefaultTemplatesLimit',
) );
add_filter( 'vc_templates_render_category', array(
$this,
'renderTemplateBlock',
), 10 );
add_filter( 'vc_templates_render_template', array(
$this,
'renderTemplateWindow',
), 10, 2 );
/**
* Ajax methods
* 'vc_save_template' -> saving content as template
* 'vc_backend_load_template' -> loading template content for backend
* 'vc_frontend_load_template' -> loading template content for frontend
* 'vc_delete_template' -> deleting template by index
*/
add_action( 'wp_ajax_vc_save_template', array(
$this,
'save',
) );
add_action( 'wp_ajax_vc_backend_load_template', array(
$this,
'renderBackendTemplate',
) );
add_action( 'wp_ajax_vc_frontend_load_template', array(
$this,
'renderFrontendTemplate',
) );
add_action( 'wp_ajax_vc_load_template_preview', array(
$this,
'renderTemplatePreview',
) );
add_action( 'wp_ajax_vc_delete_template', array(
$this,
'delete',
) );
}
/**
* @return string
*/
public function addBodyClassTemplatePreview() {
return 'vc_general-template-preview';
}
/**
* @param $category
* @return mixed
*/
public function renderTemplateBlock( $category ) {
if ( 'my_templates' === $category['category'] ) {
$category['output'] = '';
if ( vc_user_access()->part( 'templates' )->checkStateAny( true, null )->get() ) {
$category['output'] .= '
';
}
$category['output'] .= '';
if ( isset( $category['category_name'] ) ) {
$category['output'] .= '
' . esc_html( $category['category_name'] ) . ' ';
}
if ( isset( $category['category_description'] ) ) {
$category['output'] .= '
' . esc_html( $category['category_description'] ) . '
';
}
$category['output'] .= '
';
$category['output'] .= '
';
if ( ! empty( $category['templates'] ) ) {
foreach ( $category['templates'] as $template ) {
$category['output'] .= $this->renderTemplateListItem( $template );
}
}
$category['output'] .= '
';
} else {
if ( 'default_templates' === $category['category'] ) {
$category['output'] = '';
if ( isset( $category['category_name'] ) ) {
$category['output'] .= '
' . esc_html( $category['category_name'] ) . ' ';
}
if ( isset( $category['category_description'] ) ) {
$category['output'] .= '
' . esc_html( $category['category_description'] ) . '
';
}
$category['output'] .= '
';
$category['output'] .= '
';
if ( ! empty( $category['templates'] ) ) {
foreach ( $category['templates'] as $template ) {
$category['output'] .= $this->renderTemplateListItem( $template );
}
}
$category['output'] .= '
';
}
}
return $category;
}
/** Output rendered template in new panel dialog
* @param $template_name
* @param $template_data
*
* @return string
* @since 4.4
*
*/
public function renderTemplateWindow( $template_name, $template_data ) {
if ( 'my_templates' === $template_data['type'] ) {
return $this->renderTemplateWindowMyTemplates( $template_name, $template_data );
} else {
if ( 'default_templates' === $template_data['type'] ) {
return $this->renderTemplateWindowDefaultTemplates( $template_name, $template_data );
}
}
return $template_name;
}
/**
* @param $template_name
* @param $template_data
*
* @return string
* @since 4.4
*
*/
public function renderTemplateWindowMyTemplates( $template_name, $template_data ) {
ob_start();
$template_id = esc_attr( $template_data['unique_id'] );
$template_id_hash = md5( $template_id ); // needed for jquery target for TTA
$template_name = esc_html( $template_name );
$preview_template_title = esc_attr__( 'Preview template', 'js_composer' );
$add_template_title = esc_attr__( 'Add template', 'js_composer' );
echo '' . esc_html( $template_name ) . ' ';
if ( vc_user_access()->part( 'templates' )->checkStateAny( true, null )->get() ) {
$delete_template_title = esc_attr__( 'Delete template', 'js_composer' );
echo ' ';
}
echo '
';
return ob_get_clean();
}
/**
* @param $template_name
* @param $template_data
*
* @return string
* @since 4.4
*
*/
public function renderTemplateWindowDefaultTemplates( $template_name, $template_data ) {
ob_start();
$template_id = esc_attr( $template_data['unique_id'] );
$template_id_hash = md5( $template_id ); // needed for jquery target for TTA
$template_name = esc_html( $template_name );
$preview_template_title = esc_attr__( 'Preview template', 'js_composer' );
$add_template_title = esc_attr__( 'Add template', 'js_composer' );
echo sprintf( '%s
', esc_attr( $add_template_title ), esc_html( $template_name ), esc_attr( $add_template_title ), esc_attr( $preview_template_title ), esc_attr( $template_id_hash ) );
return ob_get_clean();
}
/**
* @since 4.4
* vc_filter: vc_templates_render_frontend_template - called when unknown template received to render in frontend.
*/
public function renderFrontendTemplate() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->can()->validateDie();
add_filter( 'vc_frontend_template_the_content', array(
$this,
'frontendDoTemplatesShortcodes',
) );
$template_id = vc_post_param( 'template_unique_id' );
$template_type = vc_post_param( 'template_type' );
add_action( 'wp_print_scripts', array(
$this,
'addFrontendTemplatesShortcodesCustomCss',
) );
if ( '' === $template_id ) {
die( 'Error: Vc_Templates_Panel_Editor::renderFrontendTemplate:1' );
}
WPBMap::addAllMappedShortcodes();
if ( 'my_templates' === $template_type ) {
$saved_templates = get_option( $this->option_name );
vc_frontend_editor()->setTemplateContent( $saved_templates[ $template_id ]['template'] );
vc_frontend_editor()->enqueueRequired();
vc_include_template( 'editors/frontend_template.tpl.php', array(
'editor' => vc_frontend_editor(),
) );
die();
} else {
if ( 'default_templates' === $template_type ) {
$this->renderFrontendDefaultTemplate();
} else {
// @codingStandardsIgnoreLine
print apply_filters( 'vc_templates_render_frontend_template', $template_id, $template_type );
}
}
die; // no needs to do anything more. optimization.
}
/**
* Load frontend default template content by index
* @since 4.4
*/
public function renderFrontendDefaultTemplate() {
$template_index = (int) vc_post_param( 'template_unique_id' );
$data = $this->getDefaultTemplate( $template_index );
if ( ! $data ) {
die( 'Error: Vc_Templates_Panel_Editor::renderFrontendDefaultTemplate:1' );
}
vc_frontend_editor()->setTemplateContent( trim( $data['content'] ) );
vc_frontend_editor()->enqueueRequired();
vc_include_template( 'editors/frontend_template.tpl.php', array(
'editor' => vc_frontend_editor(),
) );
die();
}
/**
* @since 4.7
*/
public function renderUITemplate() {
vc_include_template( 'editors/popups/vc_ui-panel-templates.tpl.php', array(
'box' => $this,
) );
return '';
}
/**
* @since 4.4
*/
public function save() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->checkStateAny( true, null )->validateDie();
$template_name = vc_post_param( 'template_name' );
$template = vc_post_param( 'template' );
if ( ! isset( $template_name ) || '' === trim( $template_name ) || ! isset( $template ) || '' === trim( $template ) ) {
header( ':', true, 500 );
throw new Exception( 'Error: Vc_Templates_Panel_Editor::save:1' );
}
$template_arr = array(
'name' => stripslashes( $template_name ),
'template' => stripslashes( $template ),
);
$saved_templates = get_option( $this->option_name );
$template_id = sanitize_title( $template_name ) . '_' . wp_rand();
if ( false === $saved_templates ) {
$autoload = 'no';
$new_template = array();
$new_template[ $template_id ] = $template_arr;
add_option( $this->option_name, $new_template, '', $autoload );
} else {
$saved_templates[ $template_id ] = $template_arr;
update_option( $this->option_name, $saved_templates );
}
$template = array(
'name' => $template_arr['name'],
'type' => 'my_templates',
'unique_id' => $template_id,
);
// @codingStandardsIgnoreLine
print $this->renderTemplateListItem( $template );
die;
}
/**
* Loading Any templates Shortcodes for backend by string $template_id from AJAX
* @since 4.4
* vc_filter: vc_templates_render_backend_template - called when unknown template requested to render in backend
*/
public function renderBackendTemplate() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->can()->validateDie();
$template_id = vc_post_param( 'template_unique_id' );
$template_type = vc_post_param( 'template_type' );
if ( ! isset( $template_id, $template_type ) || '' === $template_id || '' === $template_type ) {
die( 'Error: Vc_Templates_Panel_Editor::renderBackendTemplate:1' );
}
WPBMap::addAllMappedShortcodes();
if ( 'my_templates' === $template_type ) {
$saved_templates = get_option( $this->option_name );
$content = trim( $saved_templates[ $template_id ]['template'] );
$content = str_replace( '\"', '"', $content );
$pattern = get_shortcode_regex();
$content = preg_replace_callback( "/{$pattern}/s", 'vc_convert_shortcode', $content );
// @codingStandardsIgnoreLine
print $content;
die();
} else {
if ( 'default_templates' === $template_type ) {
$this->getBackendDefaultTemplate();
die();
} else {
// @codingStandardsIgnoreLine
print apply_filters( 'vc_templates_render_backend_template', $template_id, $template_type );
die();
}
}
}
/**
* Render new template view as backened editor content.
*
* @since 4.8
*/
public function renderTemplatePreview() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( array(
'edit_post',
(int) vc_request_param( 'post_id' ),
) )->validateDie()->part( 'templates' )->can()->validateDie();
$template_id = vc_request_param( 'template_unique_id' );
$template_type = vc_request_param( 'template_type' );
global $current_user;
wp_get_current_user();
if ( ! isset( $template_id, $template_type ) || '' === $template_id || '' === $template_type ) {
die( esc_html__( 'Error: wrong template id.', 'js_composer' ) );
}
WPBMap::addAllMappedShortcodes();
if ( 'my_templates' === $template_type ) {
$saved_templates = get_option( $this->option_name );
$content = trim( $saved_templates[ $template_id ]['template'] );
$content = str_replace( '\"', '"', $content );
$pattern = get_shortcode_regex();
$content = preg_replace_callback( "/{$pattern}/s", 'vc_convert_shortcode', $content );
} else {
if ( 'default_templates' === $template_type ) {
$content = $this->getBackendDefaultTemplate( true );
} else {
$content = apply_filters( 'vc_templates_render_backend_template_preview', $template_id, $template_type );
}
}
vc_include_template( apply_filters( 'vc_render_template_preview_include_template', 'editors/vc_ui-template-preview.tpl.php' ), array(
'content' => $content,
'editorPost' => get_post( vc_request_param( 'post_id' ) ),
'current_user' => $current_user,
) );
die();
}
public function registerPreviewScripts() {
visual_composer()->registerAdminJavascript();
visual_composer()->registerAdminCss();
vc_backend_editor()->registerBackendJavascript();
vc_backend_editor()->registerBackendCss();
wp_register_script( 'vc_editors-templates-preview-js', vc_asset_url( 'js/editors/templates-preview.js' ), array(
'vc-backend-min-js',
), WPB_VC_VERSION, true );
}
/**
* Enqueue required scripts for template preview
* @since 4.8
*/
public function enqueuePreviewScripts() {
vc_backend_editor()->enqueueCss();
vc_backend_editor()->enqueueJs();
wp_enqueue_script( 'vc_editors-templates-preview-js' );
}
/**
* @since 4.4
*/
public function delete() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie()->part( 'templates' )->checkStateAny( true, null )->validateDie();
$template_id = vc_post_param( 'template_id' );
$template_type = vc_post_param( 'template_type' );
if ( ! isset( $template_id ) || '' === $template_id ) {
die( 'Error: Vc_Templates_Panel_Editor::delete:1' );
}
if ( 'my_templates' === $template_type ) {
$saved_templates = get_option( $this->option_name );
unset( $saved_templates[ $template_id ] );
if ( count( $saved_templates ) > 0 ) {
update_option( $this->option_name, $saved_templates );
} else {
delete_option( $this->option_name );
}
wp_send_json_success();
} else {
do_action( 'vc_templates_delete_templates', $template_id, $template_type );
}
wp_send_json_error();
}
/**
* @param $templates
*
* vc_filter: vc_load_default_templates_limit_total - total items to show
*
* @return array
* @since 4.4
*
*/
public function loadDefaultTemplatesLimit( $templates ) {
$start_index = 0;
$total_templates_to_show = apply_filters( 'vc_load_default_templates_limit_total', 6 );
return array_slice( $templates, $start_index, $total_templates_to_show );
}
/**
* Get user templates
*
* @return mixed
* @since 4.12
*/
public function getUserTemplates() {
return apply_filters( 'vc_get_user_templates', get_option( $this->option_name ) );
}
/**
* Function to get all templates for display
* - with image (optional preview image)
* - with unique_id (required for do something for rendering.. )
* - with name (required for display? )
* - with type (required for requesting data in server)
* - with category key (optional/required for filtering), if no category provided it will be displayed only in
* "All" category type vc_filter: vc_get_user_templates - hook to override "user My Templates" vc_filter:
* vc_get_all_templates - hook for override return array(all templates), hook to add/modify/remove more templates,
* - this depends only to displaying in panel window (more layouts)
* @return array - all templates with name/unique_id/category_key(optional)/image
* @since 4.4
*/
public function getAllTemplates() {
$data = array();
// Here we go..
if ( apply_filters( 'vc_show_user_templates', true ) ) {
// We need to get all "My Templates"
$user_templates = $this->getUserTemplates();
// this has only 'name' and 'template' key and index 'key' is template id.
$arr_category = array(
'category' => 'my_templates',
'category_name' => esc_html__( 'My Templates', 'js_composer' ),
'category_description' => esc_html__( 'Append previously saved template to the current layout.', 'js_composer' ),
'category_weight' => 10,
);
$category_templates = array();
if ( ! empty( $user_templates ) ) {
foreach ( $user_templates as $template_id => $template_data ) {
$category_templates[] = array(
'unique_id' => $template_id,
'name' => $template_data['name'],
'type' => 'my_templates',
// for rendering in backend/frontend with ajax
);
}
}
$arr_category['templates'] = $category_templates;
$data[] = $arr_category;
}
// To get all "Default Templates"
$default_templates = $this->getDefaultTemplates();
if ( ! empty( $default_templates ) ) {
$arr_category = array(
'category' => 'default_templates',
'category_name' => esc_html__( 'Default Templates', 'js_composer' ),
'category_description' => esc_html__( 'Append default template to the current layout.', 'js_composer' ),
'category_weight' => 11,
);
$category_templates = array();
foreach ( $default_templates as $template_id => $template_data ) {
if ( isset( $template_data['disabled'] ) && $template_data['disabled'] ) {
continue;
}
$category_templates[] = array(
'unique_id' => $template_id,
'name' => $template_data['name'],
'type' => 'default_templates',
// for rendering in backend/frontend with ajax
'image' => isset( $template_data['image_path'] ) ? $template_data['image_path'] : false,
// preview image
'custom_class' => isset( $template_data['custom_class'] ) ? $template_data['custom_class'] : false,
);
}
if ( ! empty( $category_templates ) ) {
$arr_category['templates'] = $category_templates;
$data[] = $arr_category;
}
}
// To get any other 3rd "Custom template" - do this by hook filter 'vc_get_all_templates'
return apply_filters( 'vc_get_all_templates', $data );
}
/**
* Load default templates list and initialize variable
* To modify you should use add_filter('vc_load_default_templates','your_custom_function');
* Argument is array of templates data like:
* array(
* array(
* 'name'=>esc_html__('My custom template','my_plugin'),
* 'image_path'=> preg_replace( '/\s/', '%20', plugins_url( 'images/my_image.png', __FILE__ ) ), //
* always use preg replace to be sure that "space" will not break logic
* 'custom_class'=>'my_custom_class', // if needed
* 'content'=>'[my_shortcode]yeah[/my_shortcode]', // Use HEREDoc better to escape all single-quotes
* and double quotes
* ),
* ...
* );
* Also see filters 'vc_load_default_templates_panels' and 'vc_load_default_templates_welcome_block' to modify
* templates in panels tab and/or in welcome block. vc_filter: vc_load_default_templates - filter to override
* default templates array
* @return array
* @since 4.4
*/
public function loadDefaultTemplates() {
if ( ! $this->initialized ) {
$this->init(); // add hooks if not added already (fix for in frontend)
}
if ( ! is_array( $this->default_templates ) ) {
require_once vc_path_dir( 'CONFIG_DIR', 'templates.php' );
$templates = apply_filters( 'vc_load_default_templates', $this->default_templates );
$this->default_templates = $templates;
do_action( 'vc_load_default_templates_action' );
}
return $this->default_templates;
}
/**
* Alias for loadDefaultTemplates
* @return array - list of default templates
* @since 4.4
*/
public function getDefaultTemplates() {
return $this->loadDefaultTemplates();
}
/**
* Get default template data by template index in array.
* @param number $template_index
*
* @return array|bool
* @since 4.4
*
*/
public function getDefaultTemplate( $template_index ) {
$this->loadDefaultTemplates();
if ( ! is_numeric( $template_index ) || ! is_array( $this->default_templates ) || ! isset( $this->default_templates[ $template_index ] ) ) {
return false;
}
return $this->default_templates[ $template_index ];
}
/**
* Add custom template to default templates list ( at end of list )
* $data = array( 'name'=>'', 'image'=>'', 'content'=>'' )
* @param $data
*
* @return bool true if added, false if failed
* @since 4.4
*
*/
public function addDefaultTemplates( $data ) {
if ( is_array( $data ) && ! empty( $data ) && isset( $data['name'], $data['content'] ) ) {
if ( ! is_array( $this->default_templates ) ) {
$this->default_templates = array();
}
$this->default_templates[] = $data;
return true;
}
return false;
}
/**
* Load default template content by index from ajax
* @param bool $return | should function return data or not
*
* @return string
* @since 4.4
*
*/
public function getBackendDefaultTemplate( $return = false ) {
$template_index = (int) vc_request_param( 'template_unique_id' );
$data = $this->getDefaultTemplate( $template_index );
if ( ! $data ) {
die( 'Error: Vc_Templates_Panel_Editor::getBackendDefaultTemplate:1' );
}
if ( $return ) {
return trim( $data['content'] );
} else {
print trim( $data['content'] );
die;
}
}
/**
* @param array $data
*
* @return array
* @since 4.4
*
*/
public function sortTemplatesByCategories( array $data ) {
$buffer = $data;
uasort( $buffer, array(
$this,
'cmpCategory',
) );
return $buffer;
}
/**
* @param array $data
*
* @return array
* @since 4.4
*
*/
public function sortTemplatesByNameWeight( array $data ) {
$buffer = $data;
uasort( $buffer, array(
$this,
'cmpNameWeight',
) );
return $buffer;
}
/**
* Function should return array of templates categories
* @param array $categories
*
* @return array - associative array of category key => and visible Name
* @since 4.4
*
*/
public function getAllCategoriesNames( array $categories ) {
$categories_names = array();
foreach ( $categories as $category ) {
if ( isset( $category['category'] ) ) {
$categories_names[ $category['category'] ] = isset( $category['category_name'] ) ? $category['category_name'] : $category['category'];
}
}
return $categories_names;
}
/**
* @return array
* @since 4.4
*/
public function getAllTemplatesSorted() {
$data = $this->getAllTemplates();
// firstly we need to sort by categories
$data = $this->sortTemplatesByCategories( $data );
// secondly we need to sort templates by their weight or name
foreach ( $data as $key => $category ) {
$data[ $key ]['templates'] = $this->sortTemplatesByNameWeight( $category['templates'] );
}
return $data;
}
/**
* Used to compare two templates by category, category_weight
* If category weight is less template will appear in first positions
* @param array $a - template one
* @param array $b - second template to compare
*
* @return int
* @since 4.4
*
*/
protected function cmpCategory( $a, $b ) {
$a_k = isset( $a['category'] ) ? $a['category'] : '*';
$b_k = isset( $b['category'] ) ? $b['category'] : '*';
$a_category_weight = isset( $a['category_weight'] ) ? $a['category_weight'] : 0;
$b_category_weight = isset( $b['category_weight'] ) ? $b['category_weight'] : 0;
return $a_category_weight === $b_category_weight ? strcmp( $a_k, $b_k ) : $a_category_weight - $b_category_weight;
}
/**
* @param $a
* @param $b
*
* @return int
* @since 4.4
*
*/
protected function cmpNameWeight( $a, $b ) {
$a_k = isset( $a['name'] ) ? $a['name'] : '*';
$b_k = isset( $b['name'] ) ? $b['name'] : '*';
$a_weight = isset( $a['weight'] ) ? $a['weight'] : 0;
$b_weight = isset( $b['weight'] ) ? $b['weight'] : 0;
return $a_weight === $b_weight ? strcmp( $a_k, $b_k ) : $a_weight - $b_weight;
}
/**
* Calls do_shortcode for templates.
*
* @param $content
*
* @return string
*/
public function frontendDoTemplatesShortcodes( $content ) {
return do_shortcode( $content );
}
/**
* Add custom css from shortcodes from template for template editor.
*
* Used by action 'wp_print_scripts'.
*
* @todo move to autoload or else some where.
* @since 4.4.3
*
*/
public function addFrontendTemplatesShortcodesCustomCss() {
$output = $shortcodes_custom_css = '';
$shortcodes_custom_css = visual_composer()->parseShortcodesCustomCss( vc_frontend_editor()->getTemplateContent() );
if ( ! empty( $shortcodes_custom_css ) ) {
$shortcodes_custom_css = wp_strip_all_tags( $shortcodes_custom_css );
$first_tag = 'style';
$output .= '<' . $first_tag . ' data-type="vc_shortcodes-custom-css">';
$output .= $shortcodes_custom_css;
$output .= '' . $first_tag . '>';
}
// @todo Check for wp_add_inline_style posibility
// @codingStandardsIgnoreLine
print $output;
}
public function addScriptsToTemplatePreview() {
}
/**
* @param $template
* @return string
*/
public function renderTemplateListItem( $template ) {
$name = isset( $template['name'] ) ? esc_html( $template['name'] ) : esc_html__( 'No title', 'js_composer' );
$template_id = esc_attr( $template['unique_id'] );
$template_id_hash = md5( $template_id ); // needed for jquery target for TTA
$template_name = esc_html( $name );
$template_name_lower = esc_attr( vc_slugify( $template_name ) );
$template_type = esc_attr( isset( $template['type'] ) ? $template['type'] : 'custom' );
$custom_class = esc_attr( isset( $template['custom_class'] ) ? $template['custom_class'] : '' );
$output = <<
HTML;
$output .= apply_filters( 'vc_templates_render_template', $name, $template );
$output .= <<
HTML;
return $output;
}
/**
* @return string
*/
/**
* @return string
*/
public function getOptionName() {
return $this->option_name;
}
}
classes/editors/class-vc-frontend-editor.php 0000644 00000070316 15021217214 0015201 0 ustar 00 'assets',
'templates_dir' => 'templates',
'template_extension' => 'tpl.php',
'plugin_path' => 'js_composer/inline',
);
/**
* @var string
*/
protected static $content_editor_id = 'content';
/**
* @var array
*/
protected static $content_editor_settings = array(
'dfw' => true,
'tabfocus_elements' => 'insert-media-button',
'editor_height' => 360,
);
/**
* @var string
*/
protected static $brand_url = 'https://wpbakery.com/?utm_campaign=VCplugin&utm_source=vc_user&utm_medium=frontend_editor';
public $post_custom_css;
/**
* @var string
*/
protected $vc_post_content = '';
/**
*
*/
public function init() {
$this->addHooks();
/**
* If current mode of VC is frontend editor load it.
*/
if ( vc_is_frontend_editor() ) {
$this->hookLoadEdit();
} elseif ( vc_is_page_editable() ) {
/**
* if page loaded inside frontend editor iframe it has page_editable mode.
* It required to some some js/css elements and add few helpers for editor to be used.
*/
$this->buildEditablePage();
} else {
// Is it is simple page just enable buttons and controls
$this->buildPage();
}
}
/**
*
*/
public function addHooks() {
add_action( 'template_redirect', array(
$this,
'loadShortcodes',
) );
add_filter( 'page_row_actions', array(
$this,
'renderRowAction',
) );
add_filter( 'post_row_actions', array(
$this,
'renderRowAction',
) );
add_shortcode( 'vc_container_anchor', 'vc_container_anchor' );
}
/**
*
*/
public function hookLoadEdit() {
add_action( 'current_screen', array(
$this,
'adminInit',
) );
do_action( 'vc_frontend_editor_hook_load_edit' );
}
/**
*
*/
public function adminInit() {
$this->setPost();
$this->renderEditor();
}
/**
*
*/
public function buildEditablePage() {
if ( 'vc_load_shortcode' === vc_request_param( 'action' ) ) {
return;
}
visual_composer()->shared_templates->init();
add_filter( 'the_title', array(
$this,
'setEmptyTitlePlaceholder',
) );
add_action( 'the_post', array(
$this,
'parseEditableContent',
), 9999 ); // after all the_post actions ended
do_action( 'vc_inline_editor_page_view' );
add_filter( 'wp_enqueue_scripts', array(
$this,
'loadIFrameJsCss',
) );
add_action( 'wp_footer', array(
$this,
'printPostShortcodes',
) );
}
/**
*
*/
public function buildPage() {
add_action( 'admin_bar_menu', array(
$this,
'adminBarEditLink',
), 1000 );
add_filter( 'edit_post_link', array(
$this,
'renderEditButton',
) );
}
/**
* @return bool
*/
public static function inlineEnabled() {
return true === self::$enabled_inline;
}
/**
* @return bool
* @throws \Exception
*/
public static function frontendEditorEnabled() {
return self::inlineEnabled() && vc_user_access()->part( 'frontend_editor' )->can()->get();
}
/**
* @param bool $disable
*/
public static function disableInline( $disable = true ) {
self::$enabled_inline = ! $disable;
}
/**
* Main purpose of this function is to
* 1) Parse post content to get ALL shortcodes in to array
* 2) Wrap all shortcodes into editable-wrapper
* 3) Return "iframe" editable content in extra-script wrapper
*
* @param Wp_Post $post
* @throws \Exception
*/
public function parseEditableContent( $post ) {
if ( ! vc_is_page_editable() || vc_action() || vc_post_param( 'action' ) ) {
return;
}
$post_id = (int) vc_get_param( 'vc_post_id' );
if ( $post_id > 0 && $post->ID === $post_id && ! defined( 'VC_LOADING_EDITABLE_CONTENT' ) ) {
$post_content = '';
define( 'VC_LOADING_EDITABLE_CONTENT', true );
remove_filter( 'the_content', 'wpautop' );
do_action( 'vc_load_shortcode' );
$post_content .= $this->getPageShortcodesByContent( $post->post_content );
ob_start();
vc_include_template( 'editors/partials/vc_welcome_block.tpl.php' );
$post_content .= ob_get_clean();
ob_start();
vc_include_template( 'editors/partials/post_shortcodes.tpl.php', array( 'editor' => $this ) );
$post_shortcodes = ob_get_clean();
$custom_tag = 'script';
$this->vc_post_content = '<' . $custom_tag . ' type="template/html" id="vc_template-post-content" style="display:none">' . rawurlencode( apply_filters( 'the_content', $post_content ) ) . '' . $custom_tag . '>' . $post_shortcodes;
// We already used the_content filter, we need to remove it to avoid double-using
remove_all_filters( 'the_content' );
// Used for just returning $post->post_content
add_filter( 'the_content', array(
$this,
'editableContent',
) );
}
}
/**
* @since 4.4
* Used to print rendered post content, wrapped with frontend editors "div" and etc.
*/
public function printPostShortcodes() {
// @codingStandardsIgnoreLine
print $this->vc_post_content;
}
/**
* @param $content
*
* @return string
*/
public function editableContent( $content ) {
// same addContentAnchor
do_shortcode( $content ); // this will not be outputted, but this is needed to enqueue needed js/styles.
return ' ';
}
/**
* @param string $url
* @param string $id
*
* vc_filter: vc_get_inline_url - filter to edit frontend editor url (can be used for example in vendors like
* qtranslate do)
*
* @return mixed
*/
public static function getInlineUrl( $url = '', $id = '' ) {
$the_ID = ( strlen( $id ) > 0 ? $id : get_the_ID() );
return apply_filters( 'vc_get_inline_url', admin_url() . 'post.php?vc_action=vc_inline&post_id=' . $the_ID . '&post_type=' . get_post_type( $the_ID ) . ( strlen( $url ) > 0 ? '&url=' . rawurlencode( $url ) : '' ) );
}
/**
* @return string
*/
public function wrapperStart() {
return '';
}
/**
* @return string
*/
public function wrapperEnd() {
return '';
}
/**
* @param $url
*/
public static function setBrandUrl( $url ) {
self::$brand_url = $url;
}
/**
* @return string
*/
public static function getBrandUrl() {
return self::$brand_url;
}
/**
* @return string
*/
public static function shortcodesRegexp() {
$tagnames = array_keys( WPBMap::getShortCodes() );
$tagregexp = implode( '|', array_map( 'preg_quote', $tagnames ) );
// WARNING from shortcodes.php! Do not change this regex without changing do_shortcode_tag() and strip_shortcode_tag()
// Also, see shortcode_unautop() and shortcode.js.
return '\\[' // Opening bracket
. '(\\[?)' // 1: Optional second opening bracket for escaping shortcodes: [[tag]]
. "($tagregexp)" // 2: Shortcode name
. '(?![\\w\-])' // Not followed by word character or hyphen
. '(' // 3: Unroll the loop: Inside the opening shortcode tag
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. '(?:' . '\\/(?!\\])' // A forward slash not followed by a closing bracket
. '[^\\]\\/]*' // Not a closing bracket or forward slash
. ')*?' . ')' . '(?:' . '(\\/)' // 4: Self closing tag ...
. '\\]' // ... and closing bracket
. '|' . '\\]' // Closing bracket
. '(?:' . '(' // 5: Unroll the loop: Optionally, anything between the opening and closing shortcode tags
. '[^\\[]*+' // Not an opening bracket
. '(?:' . '\\[(?!\\/\\2\\])' // An opening bracket not followed by the closing shortcode tag
. '[^\\[]*+' // Not an opening bracket
. ')*+' . ')' . '\\[\\/\\2\\]' // Closing shortcode tag
. ')?' . ')' . '(\\]?)'; // 6: Optional second closing brocket for escaping shortcodes: [[tag]]
}
/**
*
*/
public function setPost() {
global $post;
$this->post = get_post(); // fixes #1342 if no get/post params set
$this->post_id = vc_get_param( 'post_id' );
if ( vc_post_param( 'post_id' ) ) {
$this->post_id = vc_post_param( 'post_id' );
}
if ( $this->post_id ) {
$this->post = get_post( $this->post_id );
}
do_action_ref_array( 'the_post', array( $this->post ) );
$post = $this->post;
$this->post_id = $this->post->ID;
}
/**
* @return mixed
*/
public function post() {
! isset( $this->post ) && $this->setPost();
return $this->post;
}
/**
* Used for wp filter 'wp_insert_post_empty_content' to allow empty post insertion.
*
* @param $allow_empty
*
* @return bool
*/
public function allowInsertEmptyPost( $allow_empty ) {
return false;
}
/**
* vc_filter: vc_frontend_editor_iframe_url - hook to edit iframe url, can be used in vendors like qtranslate do.
*/
public function renderEditor() {
global $current_user;
wp_get_current_user();
$this->current_user = $current_user;
$this->post_url = set_url_scheme( get_permalink( $this->post_id ) );
$array = array(
'edit_post',
$this->post_id,
);
if ( ! self::inlineEnabled() || ! vc_user_access()->wpAny( $array )->get() ) {
header( 'Location: ' . $this->post_url );
}
$this->registerJs();
$this->registerCss();
visual_composer()->registerAdminCss(); // bc
visual_composer()->registerAdminJavascript(); // bc
if ( $this->post && 'auto-draft' === $this->post->post_status ) {
$post_data = array(
'ID' => $this->post_id,
'post_status' => 'draft',
'post_title' => '',
);
add_filter( 'wp_insert_post_empty_content', array(
$this,
'allowInsertEmptyPost',
) );
wp_update_post( $post_data, true );
$this->post->post_status = 'draft';
$this->post->post_title = '';
}
add_filter( 'admin_body_class', array(
$this,
'filterAdminBodyClass',
) );
$this->post_type = get_post_type_object( $this->post->post_type );
$this->url = $this->post_url . ( preg_match( '/\?/', $this->post_url ) ? '&' : '?' ) . 'vc_editable=true&vc_post_id=' . $this->post->ID . '&_vcnonce=' . vc_generate_nonce( 'vc-admin-nonce' );
$this->url = apply_filters( 'vc_frontend_editor_iframe_url', $this->url );
$this->enqueueAdmin();
$this->enqueueMappedShortcode();
wp_enqueue_media( array( 'post' => $this->post_id ) );
remove_all_actions( 'admin_notices', 3 );
remove_all_actions( 'network_admin_notices', 3 );
$post_custom_css = wp_strip_all_tags( get_post_meta( $this->post_id, '_wpb_post_custom_css', true ) );
$this->post_custom_css = $post_custom_css;
if ( ! defined( 'IFRAME_REQUEST' ) ) {
define( 'IFRAME_REQUEST', true );
}
/**
* @deprecated vc_admin_inline_editor action hook
*/
do_action( 'vc_admin_inline_editor' );
/**
* new one
*/
do_action( 'vc_frontend_editor_render' );
add_filter( 'admin_title', array(
$this,
'setEditorTitle',
) );
$this->render( 'editor' );
die();
}
/**
* @return string
*/
public function setEditorTitle() {
return sprintf( esc_html__( 'Edit %s with WPBakery Page Builder', 'js_composer' ), $this->post_type->labels->singular_name );
}
/**
* @param $title
*
* @return string
*/
public function setEmptyTitlePlaceholder( $title ) {
return ! is_string( $title ) || strlen( $title ) === 0 ? esc_attr__( '(no title)', 'js_composer' ) : $title;
}
/**
* @param $template
*/
public function render( $template ) {
vc_include_template( 'editors/frontend_' . $template . '.tpl.php', array( 'editor' => $this ) );
}
/**
* @param $link
*
* @return string
* @throws \Exception
*/
public function renderEditButton( $link ) {
if ( $this->showButton( get_the_ID() ) ) {
return $link . ' ' . esc_html__( 'Edit with WPBakery Page Builder', 'js_composer' ) . ' ';
}
return $link;
}
/**
* @param $actions
*
* @return mixed
* @throws \Exception
*/
public function renderRowAction( $actions ) {
$post = get_post();
if ( $this->showButton( $post->ID ) ) {
$actions['edit_vc'] = '' . esc_html__( 'Edit with WPBakery Page Builder', 'js_composer' ) . ' ';
}
return $actions;
}
/**
* @param null $post_id
*
* @return bool
* @throws \Exception
*/
public function showButton( $post_id = null ) {
$type = get_post_type();
$post_status = array(
'private',
'trash',
);
$post_types = array(
'templatera',
'vc_grid_item',
);
$cap_edit_post = array(
'edit_post',
$post_id,
);
$result = self::inlineEnabled() && ! in_array( get_post_status(), $post_status, true ) && ! in_array( $type, $post_types, true ) && vc_user_access()->wpAny( $cap_edit_post )
->get() && vc_check_post_type( $type );
return apply_filters( 'vc_show_button_fe', $result, $post_id, $type );
}
/**
* @param WP_Admin_Bar $wp_admin_bar
* @throws \Exception
*/
public function adminBarEditLink( $wp_admin_bar ) {
if ( ! is_object( $wp_admin_bar ) ) {
global $wp_admin_bar;
}
if ( is_singular() ) {
if ( $this->showButton( get_the_ID() ) ) {
$wp_admin_bar->add_menu( array(
'id' => 'vc_inline-admin-bar-link',
'title' => esc_html__( 'Edit with WPBakery Page Builder', 'js_composer' ),
'href' => self::getInlineUrl(),
'meta' => array( 'class' => 'vc_inline-link' ),
) );
}
}
}
/**
* @param $content
*/
public function setTemplateContent( $content ) {
$this->template_content = $content;
}
/**
* vc_filter: vc_inline_template_content - filter to override template content
* @return mixed
*/
public function getTemplateContent() {
return apply_filters( 'vc_inline_template_content', $this->template_content );
}
/**
*
*/
public function renderTemplates() {
$this->render( 'templates' );
die;
}
/**
*
*/
public function loadTinyMceSettings() {
if ( ! class_exists( '_WP_Editors' ) ) {
require ABSPATH . WPINC . '/class-wp-editor.php';
}
$set = _WP_Editors::parse_settings( self::$content_editor_id, self::$content_editor_settings );
_WP_Editors::editor_settings( self::$content_editor_id, $set );
}
/**
*
*/
public function loadIFrameJsCss() {
wp_enqueue_script( 'jquery-ui-tabs' );
wp_enqueue_script( 'jquery-ui-sortable' );
wp_enqueue_script( 'jquery-ui-droppable' );
wp_enqueue_script( 'jquery-ui-draggable' );
wp_enqueue_script( 'jquery-ui-accordion' );
wp_enqueue_script( 'jquery-ui-autocomplete' );
wp_enqueue_script( 'wpb_composer_front_js' );
wp_enqueue_style( 'js_composer_front' );
wp_enqueue_style( 'vc_inline_css', vc_asset_url( 'css/js_composer_frontend_editor_iframe.min.css' ), array(), WPB_VC_VERSION );
wp_enqueue_script( 'vc_waypoints' );
wp_enqueue_script( 'wpb_scrollTo_js', vc_asset_url( 'lib/bower/scrollTo/jquery.scrollTo.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_enqueue_style( 'js_composer_custom_css' );
wp_enqueue_script( 'wpb_php_js', vc_asset_url( 'lib/php.default/php.default.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_enqueue_script( 'vc_inline_iframe_js', vc_asset_url( 'js/dist/page_editable.min.js' ), array(
'jquery',
'underscore',
), WPB_VC_VERSION, true );
do_action( 'vc_load_iframe_jscss' );
}
/**
*
* @throws \Exception
*/
public function loadShortcodes() {
if ( vc_is_page_editable() && vc_enabled_frontend() ) {
$action = vc_post_param( 'action' );
if ( 'vc_load_shortcode' === $action ) {
$output = '';
ob_start();
$this->setPost();
$shortcodes = (array) vc_post_param( 'shortcodes' );
do_action( 'vc_load_shortcode', $shortcodes );
$output .= ob_get_clean();
$output .= $this->renderShortcodes( $shortcodes );
$output .= '';
ob_start();
_print_styles();
print_head_scripts();
wp_footer();
$output .= ob_get_clean();
$output .= '
';
// @codingStandardsIgnoreLine
print apply_filters( 'vc_frontend_editor_load_shortcode_ajax_output', $output );
} elseif ( 'vc_frontend_load_template' === $action ) {
$this->setPost();
visual_composer()->templatesPanelEditor()->renderFrontendTemplate();
} elseif ( '' !== $action ) {
do_action( 'vc_front_load_page_' . esc_attr( vc_post_param( 'action' ) ) );
}
}
}
/**
* @param $s
*
* @return string
*/
public function fullUrl( $s ) {
$ssl = ( ! empty( $s['HTTPS'] ) && 'on' === $s['HTTPS'] ) ? true : false;
$sp = strtolower( $s['SERVER_PROTOCOL'] );
$protocol = substr( $sp, 0, strpos( $sp, '/' ) ) . ( ( $ssl ) ? 's' : '' );
$port = $s['SERVER_PORT'];
$port = ( ( ! $ssl && '80' === $port ) || ( $ssl && '443' === $port ) ) ? '' : ':' . $port;
if ( isset( $s['HTTP_X_FORWARDED_HOST'] ) ) {
$host = $s['HTTP_X_FORWARDED_HOST'];
} else {
$host = ( isset( $s['HTTP_HOST'] ) ? $s['HTTP_HOST'] : $s['SERVER_NAME'] );
}
return $protocol . '://' . $host . $port . $s['REQUEST_URI'];
}
/**
* @return string
*/
public static function cleanStyle() {
return '';
}
/**
*
*/
public function enqueueRequired() {
do_action( 'wp_enqueue_scripts' );
visual_composer()->frontCss();
visual_composer()->frontJsRegister();
}
/**
* @param array $shortcodes
*
* vc_filter: vc_front_render_shortcodes - hook to override shortcode rendered output
* @return mixed|void
* @throws \Exception
*/
public function renderShortcodes( array $shortcodes ) {
$this->enqueueRequired();
$output = '';
foreach ( $shortcodes as $shortcode ) {
if ( isset( $shortcode['id'] ) && isset( $shortcode['string'] ) ) {
if ( isset( $shortcode['tag'] ) ) {
$shortcode_obj = visual_composer()->getShortCode( $shortcode['tag'] );
if ( is_object( $shortcode_obj ) ) {
$output .= '';
$is_container = $shortcode_obj->settings( 'is_container' ) || ( null !== $shortcode_obj->settings( 'as_parent' ) && false !== $shortcode_obj->settings( 'as_parent' ) );
if ( $is_container ) {
$shortcode['string'] = preg_replace( '/\]/', '][vc_container_anchor]', $shortcode['string'], 1 );
}
$output .= '
' . $this->wrapperStart() . do_shortcode( stripslashes( $shortcode['string'] ) ) . $this->wrapperEnd() . '
';
$output .= '
';
}
}
}
}
return apply_filters( 'vc_front_render_shortcodes', $output );
}
/**
* @param $string
*
* @return string
*/
public function filterAdminBodyClass( $string ) {
// @todo check vc_inline-shortcode-edit-form class looks like incorrect place
$string .= ( strlen( $string ) > 0 ? ' ' : '' ) . 'vc_editor vc_inline-shortcode-edit-form';
if ( '1' === vc_settings()->get( 'not_responsive_css' ) ) {
$string .= ' vc_responsive_disabled';
}
return $string;
}
/**
* @param $path
*
* @return string
*/
public function adminFile( $path ) {
return ABSPATH . 'wp-admin/' . $path;
}
public function registerJs() {
wp_register_script( 'vc_bootstrap_js', vc_asset_url( 'lib/bower/bootstrap3/dist/js/bootstrap.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'wpb_php_js', vc_asset_url( 'lib/php.default/php.default.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
// used as polyfill for JSON.stringify and etc
wp_register_script( 'wpb_json-js', vc_asset_url( 'lib/bower/json-js/json2.min.js' ), array(), WPB_VC_VERSION, true );
// used in post settings editor
wp_register_script( 'ace-editor', vc_asset_url( 'lib/bower/ace-builds/src-min-noconflict/ace.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'webfont', 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js', array(), WPB_VC_VERSION, true ); // Google Web Font CDN
wp_register_script( 'wpb_scrollTo_js', vc_asset_url( 'lib/bower/scrollTo/jquery.scrollTo.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'vc-frontend-editor-min-js', vc_asset_url( 'js/dist/frontend-editor.min.js' ), array(), WPB_VC_VERSION, true );
wp_localize_script( 'vc-frontend-editor-min-js', 'i18nLocale', visual_composer()->getEditorsLocale() );
}
/**
*
*/
public function enqueueJs() {
$wp_dependencies = array(
'jquery',
'underscore',
'backbone',
'media-views',
'media-editor',
'wp-pointer',
'mce-view',
'wp-color-picker',
'jquery-ui-sortable',
'jquery-ui-droppable',
'jquery-ui-draggable',
'jquery-ui-resizable',
'jquery-ui-accordion',
'jquery-ui-autocomplete',
// used in @deprecated tabs
'jquery-ui-tabs',
'wp-color-picker',
'farbtastic',
);
$dependencies = array(
'vc_bootstrap_js',
'vc_accordion_script',
'wpb_php_js',
'wpb_json-js',
'ace-editor',
'webfont',
'vc_accordion_script',
'vc-frontend-editor-min-js',
);
// This workaround will allow to disable any of dependency on-the-fly
foreach ( $wp_dependencies as $dependency ) {
wp_enqueue_script( $dependency );
}
foreach ( $dependencies as $dependency ) {
wp_enqueue_script( $dependency );
}
}
public function registerCss() {
wp_register_style( 'ui-custom-theme', vc_asset_url( 'css/ui-custom-theme/jquery-ui-less.custom.min.css' ), false, WPB_VC_VERSION );
wp_register_style( 'vc_animate-css', vc_asset_url( 'lib/bower/animate-css/animate.min.css' ), false, WPB_VC_VERSION, 'screen' );
wp_register_style( 'vc_font_awesome_5_shims', vc_asset_url( 'lib/bower/font-awesome/css/v4-shims.min.css' ), array(), WPB_VC_VERSION );
wp_register_style( 'vc_font_awesome_5', vc_asset_url( 'lib/bower/font-awesome/css/all.min.css' ), array( 'vc_font_awesome_5_shims' ), WPB_VC_VERSION );
wp_register_style( 'vc_inline_css', vc_asset_url( 'css/js_composer_frontend_editor.min.css' ), array(), WPB_VC_VERSION );
}
public function enqueueCss() {
$wp_dependencies = array(
'wp-color-picker',
'farbtastic',
);
$dependencies = array(
'ui-custom-theme',
'vc_animate-css',
'vc_font_awesome_5',
// 'wpb_jscomposer_autosuggest',
'vc_inline_css',
);
// This workaround will allow to disable any of dependency on-the-fly
foreach ( $wp_dependencies as $dependency ) {
wp_enqueue_style( $dependency );
}
foreach ( $dependencies as $dependency ) {
wp_enqueue_style( $dependency );
}
}
/**
*
*/
public function enqueueAdmin() {
$this->enqueueJs();
$this->enqueueCss();
do_action( 'vc_frontend_editor_enqueue_js_css' );
}
/**
* Enqueue js/css files from mapped shortcodes.
*
* To add js/css files to this enqueue please add front_enqueue_js/front_enqueue_css setting in vc_map array.
* @since 4.3
*
*/
public function enqueueMappedShortcode() {
$userShortCodes = WPBMap::getUserShortCodes();
if ( is_array( $userShortCodes ) ) {
foreach ( $userShortCodes as $shortcode ) {
$param = isset( $shortcode['front_enqueue_js'] ) ? $shortcode['front_enqueue_js'] : null;
if ( is_array( $param ) && ! empty( $param ) ) {
foreach ( $param as $value ) {
$this->enqueueMappedShortcodeJs( $value );
}
} elseif ( is_string( $param ) && ! empty( $param ) ) {
$this->enqueueMappedShortcodeJs( $param );
}
$param = isset( $shortcode['front_enqueue_css'] ) ? $shortcode['front_enqueue_css'] : null;
if ( is_array( $param ) && ! empty( $param ) ) {
foreach ( $param as $value ) {
$this->enqueueMappedShortcodeCss( $value );
}
} elseif ( is_string( $param ) && ! empty( $param ) ) {
$this->enqueueMappedShortcodeCss( $param );
}
}
}
}
/**
* @param $value
*/
/**
* @param $value
*/
/**
* @param $value
*/
/**
* @param $value
*/
public function enqueueMappedShortcodeJs( $value ) {
wp_enqueue_script( 'front_enqueue_js_' . md5( $value ), $value, array( 'vc-frontend-editor-min-js' ), WPB_VC_VERSION, true );
}
/**
* @param $value
*/
/**
* @param $value
*/
/**
* @param $value
*/
public function enqueueMappedShortcodeCss( $value ) {
wp_enqueue_style( 'front_enqueue_css_' . md5( $value ), $value, array( 'vc_inline_css' ), WPB_VC_VERSION );
}
/**
* @param $content
*
* @return string|void
* @throws \Exception
* @since 4.4
*/
public function getPageShortcodesByContent( $content ) {
if ( ! empty( $this->post_shortcodes ) ) {
return;
}
$content = shortcode_unautop( trim( $content ) ); // @todo this seems not working fine.
$not_shortcodes = preg_split( '/' . self::shortcodesRegexp() . '/', $content );
foreach ( $not_shortcodes as $string ) {
$temp = str_replace( array(
'',
'
',
), '', $string ); // just to avoid autop @todo maybe do it better like vc_wpnop in js.
if ( strlen( trim( $temp ) ) > 0 ) {
$content = preg_replace( '/(' . preg_quote( $string, '/' ) . '(?!\[\/))/', '[vc_row][vc_column width="1/1"][vc_column_text]$1[/vc_column_text][/vc_column][/vc_row]', $content );
}
}
return $this->parseShortcodesString( $content );
}
/**
* @param $content
* @param bool $is_container
* @param bool $parent_id
*
* @return string
* @throws \Exception
* @since 4.2
*/
public function parseShortcodesString( $content, $is_container = false, $parent_id = false ) {
$string = '';
preg_match_all( '/' . self::shortcodesRegexp() . '/', trim( $content ), $found );
WPBMap::addAllMappedShortcodes();
add_shortcode( 'vc_container_anchor', 'vc_container_anchor' );
if ( count( $found[2] ) === 0 ) {
return $is_container && strlen( $content ) > 0 ? $this->parseShortcodesString( '[vc_column_text]' . $content . '[/vc_column_text]', false, $parent_id ) : $content;
}
foreach ( $found[2] as $index => $s ) {
$id = md5( time() . '-' . $this->tag_index ++ );
$content = $found[5][ $index ];
$attrs = shortcode_parse_atts( $found[3][ $index ] );
if ( empty( $attrs ) ) {
$attrs = array();
} elseif ( ! is_array( $attrs ) ) {
$attrs = (array) $attrs;
}
$shortcode = array(
'tag' => $s,
'attrs_query' => $found[3][ $index ],
'attrs' => $attrs,
'id' => $id,
'parent_id' => $parent_id,
);
if ( false !== WPBMap::getParam( $s, 'content' ) ) {
$shortcode['attrs']['content'] = $content;
}
$this->post_shortcodes[] = rawurlencode( wp_json_encode( $shortcode ) );
$string .= $this->toString( $shortcode, $content );
}
return $string;
}
/**
* @param $shortcode
* @param $content
*
* @return string
* @throws \Exception
* @since 4.2
*/
public function toString( $shortcode, $content ) {
$shortcode_obj = visual_composer()->getShortCode( $shortcode['tag'] );
$is_container = $shortcode_obj->settings( 'is_container' ) || ( null !== $shortcode_obj->settings( 'as_parent' ) && false !== $shortcode_obj->settings( 'as_parent' ) );
$shortcode = apply_filters( 'vc_frontend_editor_to_string', $shortcode, $shortcode_obj );
$output = sprintf( '%s[%s %s]%s[/%s]%s
', esc_attr( $shortcode['tag'] ), esc_attr( wp_json_encode( $shortcode_obj->shortcodeClass()
->getControlsList() ) ), esc_attr( $shortcode['id'] ), $this->wrapperStart(), $shortcode['tag'], $shortcode['attrs_query'], $is_container ? '[vc_container_anchor]' . $this->parseShortcodesString( $content, $is_container, $shortcode['id'] ) : do_shortcode( $content ), $shortcode['tag'], $this->wrapperEnd() );
return $output;
}
}
if ( ! function_exists( 'vc_container_anchor' ) ) {
/**
* @return string
* @since 4.2
*/
function vc_container_anchor() {
return ' ';
}
}
classes/editors/class-vc-backend-editor.php 0000644 00000020747 15021217214 0014754 0 ustar 00 registerBackendJavascript();
$this->registerBackendCss();
// B.C:
visual_composer()->registerAdminCss();
visual_composer()->registerAdminJavascript();
}
/**
* Calls add_meta_box to create Editor block. Block is rendered by WPBakeryVisualComposerLayout.
*
* @param $post_type
* @throws \Exception
* @since 4.2
* @access public
*
* @see WPBakeryVisualComposerLayout
*/
public function render( $post_type ) {
if ( $this->isValidPostType( $post_type ) ) {
// meta box to render
add_meta_box( 'wpb_visual_composer', esc_html__( 'WPBakery Page Builder', 'js_composer' ), array(
$this,
'renderEditor',
), $post_type, 'normal', 'high' );
}
}
/**
* Output html for backend editor meta box.
*
* @param null|Wp_Post $post
*
* @return bool
*/
public function renderEditor( $post = null ) {
/**
* TODO: setter/getter for $post
*/
if ( ! is_object( $post ) || 'WP_Post' !== get_class( $post ) || ! isset( $post->ID ) ) {
return false;
}
$this->post = $post;
$post_custom_css = wp_strip_all_tags( get_post_meta( $post->ID, '_wpb_post_custom_css', true ) );
$this->post_custom_css = $post_custom_css;
vc_include_template( 'editors/backend_editor.tpl.php', array(
'editor' => $this,
'post' => $this->post,
) );
add_action( 'admin_footer', array(
$this,
'renderEditorFooter',
) );
do_action( 'vc_backend_editor_render' );
return true;
}
/**
* Output required html and js content for VC editor.
*
* Here comes panels, modals and js objects with data for mapped shortcodes.
*/
public function renderEditorFooter() {
vc_include_template( 'editors/partials/backend_editor_footer.tpl.php', array(
'editor' => $this,
'post' => $this->post,
) );
do_action( 'vc_backend_editor_footer_render' );
}
/**
* Check is post type is valid for rendering VC backend editor.
*
* @param string $type
*
* @return bool
* @throws \Exception
*/
public function isValidPostType( $type = '' ) {
$type = ! empty( $type ) ? $type : get_post_type();
if ( 'vc_grid_item' === $type ) {
return false;
}
return apply_filters( 'vc_is_valid_post_type_be', vc_check_post_type( $type ), $type );
}
/**
* Enqueue required javascript libraries and css files.
*
* This method also setups reminder about license activation.
*
* @since 4.2
* @access public
*/
public function printScriptsMessages() {
if ( ! vc_is_frontend_editor() && $this->isValidPostType( get_post_type() ) ) {
$this->enqueueEditorScripts();
}
}
/**
* Enqueue required javascript libraries and css files.
*
* @since 4.8
* @access public
*/
public function enqueueEditorScripts() {
if ( $this->editorEnabled() ) {
$this->enqueueJs();
$this->enqueueCss();
WPBakeryShortCodeFishBones::enqueueCss();
WPBakeryShortCodeFishBones::enqueueJs();
} else {
wp_enqueue_script( 'vc-backend-actions-js' );
$this->enqueueCss(); // needed for navbar @todo split
}
do_action( 'vc_backend_editor_enqueue_js_css' );
}
public function registerBackendJavascript() {
// editor can be disabled but fe can be enabled. so we currently need this file. @todo maybe make backend-disabled.min.js
wp_register_script( 'vc-backend-actions-js', vc_asset_url( 'js/dist/backend-actions.min.js' ), array(
'jquery',
'backbone',
'underscore',
), WPB_VC_VERSION, true );
wp_register_script( 'vc-backend-min-js', vc_asset_url( 'js/dist/backend.min.js' ), array( 'vc-backend-actions-js' ), WPB_VC_VERSION, true );
// used in tta shortcodes, and panels.
wp_register_script( 'vc_accordion_script', vc_asset_url( 'lib/vc_accordion/vc-accordion.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'wpb_php_js', vc_asset_url( 'lib/php.default/php.default.min.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
// used as polyfill for JSON.stringify and etc
wp_register_script( 'wpb_json-js', vc_asset_url( 'lib/bower/json-js/json2.min.js' ), array(), WPB_VC_VERSION, true );
// used in post settings editor
wp_register_script( 'ace-editor', vc_asset_url( 'lib/bower/ace-builds/src-min-noconflict/ace.js' ), array( 'jquery' ), WPB_VC_VERSION, true );
wp_register_script( 'webfont', 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js', array(), WPB_VC_VERSION, true ); // Google Web Font CDN
wp_localize_script( 'vc-backend-actions-js', 'i18nLocale', visual_composer()->getEditorsLocale() );
}
public function registerBackendCss() {
wp_register_style( 'js_composer', vc_asset_url( 'css/js_composer_backend_editor.min.css' ), array(), WPB_VC_VERSION, false );
if ( $this->editorEnabled() ) {
/**
* @deprecated, used for accordions/tabs/tours
*/
wp_register_style( 'ui-custom-theme', vc_asset_url( 'css/ui-custom-theme/jquery-ui-less.custom.min.css' ), array(), WPB_VC_VERSION );
/**
* @todo check vc_add-element-deprecated-warning for fa icon usage ( set to our font )
* also used in vc_icon shortcode
*/
wp_register_style( 'vc_font_awesome_5_shims', vc_asset_url( 'lib/bower/font-awesome/css/v4-shims.min.css' ), array(), WPB_VC_VERSION );
wp_register_style( 'vc_font_awesome_5', vc_asset_url( 'lib/bower/font-awesome/css/all.min.css' ), array( 'vc_font_awesome_5_shims' ), WPB_VC_VERSION );
/**
* @todo check for usages
* definetelly used in edit form param: css_animation, but curreny vc_add_shortcode_param doesn't accept css [ @todo refactor that ]
*/
wp_register_style( 'vc_animate-css', vc_asset_url( 'lib/bower/animate-css/animate.min.css' ), array(), WPB_VC_VERSION );
}
}
public function enqueueJs() {
$wp_dependencies = array(
'jquery',
'underscore',
'backbone',
'media-views',
'media-editor',
'wp-pointer',
'mce-view',
'wp-color-picker',
'jquery-ui-sortable',
'jquery-ui-droppable',
'jquery-ui-draggable',
'jquery-ui-autocomplete',
'jquery-ui-resizable',
// used in @deprecated tabs
'jquery-ui-tabs',
'jquery-ui-accordion',
);
$dependencies = array(
'vc_accordion_script',
'wpb_php_js',
// used in our files [e.g. edit form saving sprintf]
'wpb_json-js',
'ace-editor',
'webfont',
'vc-backend-min-js',
);
// This workaround will allow to disable any of dependency on-the-fly
foreach ( $wp_dependencies as $dependency ) {
wp_enqueue_script( $dependency );
}
foreach ( $dependencies as $dependency ) {
wp_enqueue_script( $dependency );
}
}
public function enqueueCss() {
$wp_dependencies = array(
'wp-color-picker',
'farbtastic',
// deprecated for tabs/accordion
'ui-custom-theme',
// used in deprecated message and also in vc-icon shortcode
'vc_font_awesome_5',
// used in css_animation edit form param
'vc_animate-css',
);
$dependencies = array(
'js_composer',
);
// This workaround will allow to disable any of dependency on-the-fly
foreach ( $wp_dependencies as $dependency ) {
wp_enqueue_style( $dependency );
}
foreach ( $dependencies as $dependency ) {
wp_enqueue_style( $dependency );
}
}
/**
* @return bool
* @throws \Exception
*/
public function editorEnabled() {
return vc_user_access()->part( 'backend_editor' )->can()->get();
}
}
classes/vendors/plugins/class-vc-vendor-mqtranslate.php 0000644 00000001322 15021217214 0017403 0 ustar 00 languages = $languages;
}
/**
* @since 4.3
*/
public function qtransSwitch() {
global $q_config;
$q_config['js']['qtrans_save'] .= '
var mqtranslate = true;
';
}
}
classes/vendors/plugins/acf/grid-item-attributes.php 0000644 00000002604 15021217214 0016646 0 ustar 00 null,
'data' => '',
), $data ) );
if ( strstr( $data, 'field_from_group_' ) ) {
$group_id = preg_replace( '/(^field_from_group_|_labeled$)/', '', $data );
$fields = function_exists( 'acf_get_fields' ) ? acf_get_fields( $group_id ) : apply_filters( 'acf/field_group/get_fields', array(), $group_id );
$field = is_array( $fields ) && isset( $fields[0] ) ? $fields[0] : false;
if ( is_array( $field ) && isset( $field['key'] ) ) {
$data = $field['key'] . ( strstr( $data, '_labeled' ) ? '_labeled' : '' );
}
}
$label = '';
if ( preg_match( '/_labeled$/', $data ) ) {
$data = preg_replace( '/_labeled$/', '', $data );
$field = get_field_object( $data );
$label = is_array( $field ) && isset( $field['label'] ) ? '' . $field['label'] . ': ' : '';
}
$value = '';
if ( $data ) {
$value = do_shortcode( '[acf field="' . $data . '" post_id="' . $post->ID . '"]' );
}
return $label . apply_filters( 'vc_gitem_template_attribute_acf_value', $value );
}
add_filter( 'vc_gitem_template_attribute_acf', 'vc_gitem_template_attribute_acf', 10, 2 );
classes/vendors/plugins/acf/shortcode.php 0000644 00000005231 15021217214 0014572 0 ustar 00 'dropdown',
'heading' => esc_html__( 'Field name', 'js_composer' ),
'param_name' => 'field_from_' . $group[ $id ],
'value' => $fields_param_value,
'save_always' => true,
'description' => esc_html__( 'Choose field from group.', 'js_composer' ),
'dependency' => array(
'element' => 'field_group',
'value' => array( (string) $group[ $id ] ),
),
);
}
return array(
'name' => esc_html__( 'Advanced Custom Field', 'js_composer' ),
'base' => 'vc_acf',
'icon' => 'vc_icon-acf',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Advanced Custom Field', 'js_composer' ),
'params' => array_merge( array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Field group', 'js_composer' ),
'param_name' => 'field_group',
'value' => $groups_param_values,
'save_always' => true,
'description' => esc_html__( 'Select field group.', 'js_composer' ),
),
), $fields_params, array(
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Show label', 'js_composer' ),
'param_name' => 'show_label',
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
'description' => esc_html__( 'Enter label to display before key value.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Align', 'js_composer' ),
'param_name' => 'align',
'value' => array(
esc_attr__( 'left', 'js_composer' ) => 'left',
esc_attr__( 'right', 'js_composer' ) => 'right',
esc_attr__( 'center', 'js_composer' ) => 'center',
esc_attr__( 'justify', 'js_composer' ) => 'justify',
),
'description' => esc_html__( 'Select alignment.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
) ),
);
classes/vendors/plugins/acf/class-vc-gitem-acf-shortcode.php 0000644 00000003015 15021217214 0020133 0 ustar 00 '',
'field_group' => '',
'show_label' => '',
'align' => '',
), $atts ) );
if ( 0 === strlen( $field_group ) ) {
$groups = function_exists( 'acf_get_field_groups' ) ? acf_get_field_groups() : apply_filters( 'acf/get_field_groups', array() );
if ( is_array( $groups ) && isset( $groups[0] ) ) {
$key = isset( $groups[0]['id'] ) ? 'id' : ( isset( $groups[0]['ID'] ) ? 'ID' : 'id' );
$field_group = $groups[0][ $key ];
}
}
if ( ! empty( $field_group ) ) {
$field_key = ! empty( $atts[ 'field_from_' . $field_group ] ) ? $atts[ 'field_from_' . $field_group ] : 'field_from_group_' . $field_group;
}
if ( 'yes' === $show_label && $field_key ) {
$field_key .= '_labeled';
}
$css_class = 'vc_gitem-acf' . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . ( strlen( $align ) ? ' vc_gitem-align-' . $align : '' ) . ( strlen( $field_key ) ? ' ' . $field_key : '' );
return '' . '{{ acf' . ( ! empty( $field_key ) ? ':' . $field_key : '' ) . ' }}' . '
';
}
}
classes/vendors/plugins/acf/class-vc-acf-shortcode.php 0000644 00000003332 15021217214 0017032 0 ustar 00 getShortcode(), $atts );
$field_group = $atts['field_group'];
$field_key = '';
if ( 0 === strlen( $atts['field_group'] ) ) {
$groups = function_exists( 'acf_get_field_groups' ) ? acf_get_field_groups() : apply_filters( 'acf/get_field_groups', array() );
if ( is_array( $groups ) && isset( $groups[0] ) ) {
$key = isset( $groups[0]['id'] ) ? 'id' : ( isset( $groups[0]['ID'] ) ? 'ID' : 'id' );
$field_group = $groups[0][ $key ];
}
}
if ( $field_group ) {
$field_key = ! empty( $atts[ 'field_from_' . $field_group ] ) ? $atts[ 'field_from_' . $field_group ] : 'field_from_group_' . $field_group;
}
$css_class = array();
$css_class[] = 'vc_acf';
if ( $atts['el_class'] ) {
$css_class[] = $atts['el_class'];
}
if ( $atts['align'] ) {
$css_class[] = 'vc_txt_align_' . $atts['align'];
}
$value = '';
if ( $field_key ) {
$css_class[] = $field_key;
$value = do_shortcode( '[acf field="' . $field_key . '" post_id="' . get_the_ID() . '"]' );
if ( $atts['show_label'] ) {
$field = get_field_object( $field_key );
$label = is_array( $field ) && isset( $field['label'] ) ? '' . $field['label'] . ': ' : '';
$value = $label . $value;
}
}
$css_string = implode( ' ', $css_class );
$output = '' . $value . '
';
return $output;
}
}
classes/vendors/plugins/acf/grid-item-shortcodes.php 0000644 00000005500 15021217214 0016633 0 ustar 00 'dropdown',
'heading' => esc_html__( 'Field name', 'js_composer' ),
'param_name' => 'field_from_' . $group[ $id ],
'value' => $fields_param_value,
'save_always' => true,
'description' => esc_html__( 'Choose field from group.', 'js_composer' ),
'dependency' => array(
'element' => 'field_group',
'value' => array( (string) $group[ $id ] ),
),
);
}
return array(
'vc_gitem_acf' => array(
'name' => esc_html__( 'Advanced Custom Field', 'js_composer' ),
'base' => 'vc_gitem_acf',
'icon' => 'vc_icon-acf',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Advanced Custom Field', 'js_composer' ),
'php_class_name' => 'Vc_Gitem_Acf_Shortcode',
'params' => array_merge( array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Field group', 'js_composer' ),
'param_name' => 'field_group',
'value' => $groups_param_values,
'save_always' => true,
'description' => esc_html__( 'Select field group.', 'js_composer' ),
),
), $fields_params, array(
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Show label', 'js_composer' ),
'param_name' => 'show_label',
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
'description' => esc_html__( 'Enter label to display before key value.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Align', 'js_composer' ),
'param_name' => 'align',
'value' => array(
esc_attr__( 'left', 'js_composer' ) => 'left',
esc_attr__( 'right', 'js_composer' ) => 'right',
esc_attr__( 'center', 'js_composer' ) => 'center',
esc_attr__( 'justify', 'js_composer' ) => 'justify',
),
'description' => esc_html__( 'Select alignment.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
) ),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
);
classes/vendors/plugins/class-vc-vendor-qtranslate.php 0000644 00000021567 15021217214 0017243 0 ustar 00 languages = $languages;
}
/**
* @return bool
*/
public function isValidPostType() {
return in_array( get_post_type(), vc_editor_post_types(), true );
}
/**
* @since 4.3
*/
public function load() {
$this->setLanguages();
global $q_config;
add_filter( 'vc_frontend_get_page_shortcodes_post_content', array(
$this,
'filterPostContent',
) );
add_action( 'vc_backend_editor_render', array(
$this,
'enqueueJsBackend',
) );
add_action( 'vc_frontend_editor_render', array(
$this,
'enqueueJsFrontend',
) );
add_action( 'vc_frontend_editor_render_template', array(
$this,
'vcFrontEndEditorRender',
) );
add_filter( 'vc_nav_controls', array(
$this,
'vcNavControls',
) );
add_filter( 'vc_nav_front_controls', array(
$this,
'vcNavControlsFrontend',
) );
add_filter( 'vc_frontend_editor_iframe_url', array(
$this,
'vcRenderEditButtonLink',
) );
if ( ! vc_is_frontend_editor() ) {
add_filter( 'vc_get_inline_url', array(
$this,
'vcRenderEditButtonLink',
) );
}
$q_lang = vc_get_param( 'qlang' );
if ( is_string( $q_lang ) ) {
$q_config['language'] = $q_lang;
}
add_action( 'init', array(
$this,
'qtransPostInit',
), 1000 );
}
/**
* @since 4.3
*/
public function qtransPostInit() {
global $q_config;
$q_config['js']['qtrans_switch'] = "
var swtg= jQuery.extend(true, {}, switchEditors);
switchEditors.go = function(id, lang) {
if ('content' !== id && 'qtrans_textarea_content' !== id && -1 === id.indexOf('qtrans')) {
return swtg.go(id,lang);
}
id = id || 'qtrans_textarea_content';
lang = lang || 'toggle';
if ( 'toggle' === lang ) {
if ( ed && !ed.isHidden() )
lang = 'html';
else
lang = 'tmce';
} else if ( 'tinymce' === lang )
lang = 'tmce';
var inst = tinyMCE.get('qtrans_textarea_' + id);
var vta = document.getElementById('qtrans_textarea_' + id);
var ta = document.getElementById(id);
var dom = tinymce.DOM;
var wrap_id = 'wp-'+id+'-wrap';
var wrap_id2 = 'wp-qtrans_textarea_content-wrap';
// update merged content
if (inst && ! inst.isHidden()) {
tinyMCE.triggerSave();
} else {
qtrans_save(vta.value);
}
// check if language is already active
if (lang !== 'tmce' && lang !== 'html' && document.getElementById('qtrans_select_'+lang).className === 'wp-switch-editor switch-tmce switch-html') {
return;
}
if (lang !== 'tmce' && lang !== 'html') {
document.getElementById('qtrans_select_'+qtrans_get_active_language()).className='wp-switch-editor';
document.getElementById('qtrans_select_'+lang).className='wp-switch-editor switch-tmce switch-html';
}
if (lang === 'html') {
if ( inst && inst.isHidden() )
return false;
if ( inst ) {
vta.style.height = inst.getContentAreaContainer().offsetHeight + 20 + 'px';
inst.hide();
}
dom.removeClass(wrap_id, 'tmce-active');
dom.addClass(wrap_id, 'html-active');
dom.removeClass(wrap_id2, 'tmce-active');
dom.addClass(wrap_id2, 'html-active');
setUserSetting( 'editor', 'html' );
} else if (lang === 'tmce') {
if (inst && ! inst.isHidden())
return false;
if ( 'undefined' !== typeof(QTags) )
QTags.closeAllTags('qtrans_textarea_' + id);
if ( tinyMCEPreInit.mceInit['qtrans_textarea_'+id] && tinyMCEPreInit.mceInit['qtrans_textarea_'+id].wpautop )
vta.value = this.wpautop(qtrans_use(qtrans_get_active_language(),ta.value));
if (inst) {
inst.show();
} else {
qtrans_hook_on_tinyMCE('qtrans_textarea_'+id, true);
}
dom.removeClass(wrap_id, 'html-active');
dom.addClass(wrap_id, 'tmce-active');
dom.removeClass(wrap_id2, 'html-active');
dom.addClass(wrap_id2, 'tmce-active');
setUserSetting('editor', 'tinymce');
} else {
// switch content
qtrans_assign('qtrans_textarea_'+id,qtrans_use(lang,ta.value));
}
}
";
$this->qtransSwitch();
}
/**
* @since 4.3
*/
public function qtransSwitch() {
global $q_config;
$q_config['js']['qtrans_switch'] .= '
jQuery(document).ready(function(){ switchEditors.switchto(document.getElementById("content-html")); });
';
}
/**
* @since 4.3
*/
public function enqueueJsBackend() {
if ( $this->isValidPostType() || apply_filters( 'vc_vendor_qtranslate_enqueue_js_backend', false ) ) {
wp_enqueue_script( 'vc_vendor_qtranslate_backend', vc_asset_url( 'js/vendors/qtranslate_backend.js' ), array( 'vc-backend-min-js' ), '1.0', true );
}
}
/**
* @since 4.3
*/
public function enqueueJsFrontend() {
if ( $this->isValidPostType() ) {
wp_enqueue_script( 'vc_vendor_qtranslate_frontend', vc_asset_url( 'js/vendors/qtranslate_frontend.js' ), array( 'vc-frontend-editor-min-js' ), '1.0', true );
global $q_config;
$q_config['js']['qtrans_save'] = '';
$q_config['js']['qtrans_integrate_category'] = '';
$q_config['js']['qtrans_integrate_title'] = '';
$q_config['js']['qtrans_assign'] = '';
$q_config['js']['qtrans_tinyMCEOverload'] = '';
$q_config['js']['qtrans_wpActiveEditorOverload'] = '';
$q_config['js']['qtrans_updateTinyMCE'] = '';
$q_config['js']['qtrans_wpOnload'] = '';
$q_config['js']['qtrans_editorInit'] = '';
$q_config['js']['qtrans_hook_on_tinyMCE'] = '';
$q_config['js']['qtrans_switch_postbox'] = '';
$q_config['js']['qtrans_switch'] = '';
}
}
/**
* @return string
* @since 4.3
*/
public function generateSelect() {
$output = '';
if ( is_array( $this->languages ) && ! empty( $this->languages ) ) {
$output .= '';
$inline_url = vc_frontend_editor()->getInlineUrl();
foreach ( $this->languages as $lang ) {
$output .= '' . qtrans_getLanguageName( $lang ) . ' ';
}
$output .= ' ';
}
return $output;
}
/**
* @return string
* @since 4.3
*/
public function generateSelectFrontend() {
$output = '';
if ( is_array( $this->languages ) && ! empty( $this->languages ) ) {
$output .= '';
$q_lang = vc_get_param( 'qlang' );
$inline_url = vc_frontend_editor()->getInlineUrl();
foreach ( $this->languages as $lang ) {
$output .= ' ' . qtrans_getLanguageName( $lang ) . ' ';
}
$output .= ' ';
}
return $output;
}
/**
* @param $list
*
* @return array
* @since 4.3
*
*/
public function vcNavControls( $list ) {
if ( $this->isValidPostType() ) {
if ( is_array( $list ) ) {
$list[] = array(
'qtranslate',
$this->getControlSelectDropdown(),
);
}
}
return $list;
}
/**
* @param $list
*
* @return array
* @since 4.3
*
*/
public function vcNavControlsFrontend( $list ) {
if ( $this->isValidPostType() ) {
if ( is_array( $list ) ) {
$list[] = array(
'qtranslate',
$this->getControlSelectDropdownFrontend(),
);
}
}
return $list;
}
/**
* @return string
* @since 4.3
*/
public function getControlSelectDropdown() {
return ' ' . $this->generateSelect() . ' ';
}
/**
* @return string
*/
public function getControlSelectDropdownFrontend() {
return ' ' . $this->generateSelectFrontend() . ' ';
}
/**
* @param $link
*
* @return string
* @since 4.3
*
*/
public function vcRenderEditButtonLink( $link ) {
return add_query_arg( array( 'qlang' => qtrans_getLanguage() ), $link );
}
/**
* @since 4.3
*/
public function vcFrontendEditorRender() {
global $q_config;
$output = '';
$q_lang = vc_get_param( 'qlang' );
if ( ! is_string( $q_lang ) ) {
$q_lang = $q_config['language'];
}
$output .= ' ';
$output .= ' ';
echo $output;
}
/**
* @param $content
*
* @return string
* @since 4.3
*
*/
public function filterPostContent( $content ) {
return qtrans_useCurrentLanguageIfNotFoundShowAvailable( $content );
}
}
classes/vendors/plugins/woocommerce/grid-item-attributes.php 0000644 00000011227 15021217214 0020435 0 ustar 00 null,
'data' => '',
), $data ) );
require_once WC()->plugin_path() . '/includes/abstracts/abstract-wc-product.php';
/** @noinspection PhpUndefinedClassInspection */
$product = new WC_Product( $post );
if ( preg_match( '/_labeled$/', $data ) ) {
$data = preg_replace( '/_labeled$/', '', $data );
$label = apply_filters( 'vc_gitem_template_attribute_woocommerce_product_' . $data . '_label', Vc_Vendor_Woocommerce::getProductFieldLabel( $data ) . ': ' );
}
switch ( $data ) {
case 'id':
$value = $product->get_id();
break;
case 'sku':
$value = $product->get_sku();
break;
case 'price':
$value = wc_price( $product->get_price() );
break;
case 'regular_price':
$value = wc_price( $product->get_regular_price() );
break;
case 'sale_price':
$value = wc_price( $product->get_sale_price() );
break;
case 'price_html':
$value = $product->get_price_html();
break;
case 'reviews_count':
$value = count( get_comments( array(
'post_id' => $post->ID,
'approve' => 'approve',
) ) );
break;
case 'short_description':
$value = apply_filters( 'woocommerce_short_description', get_post( $product->get_id() )->post_excerpt );
break;
case 'dimensions':
$units = get_option( 'woocommerce_dimension_unit' );
$value = $product->length . $units . 'x' . $product->width . $units . 'x' . $product->height . $units;
break;
case 'rating_count':
$value = $product->get_rating_count();
break;
case 'weight':
$value = $product->get_weight() ? wc_format_decimal( $product->get_weight(), 2 ) : '';
break;
case 'on_sale':
$value = $product->is_on_sale() ? 'yes' : 'no'; // TODO: change
break;
default:
$value = $product->$data;
}
return strlen( $value ) > 0 ? $label . apply_filters( 'vc_gitem_template_attribute_woocommerce_product_' . $data . '_value', $value ) : '';
}
/**
* Gte woocommerce data for order
*
* @param $value
* @param $data
*
* @return string
*/
function vc_gitem_template_attribute_woocommerce_order( $value, $data ) {
$label = '';
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
require_once WC()->plugin_path() . '/includes/class-wc-order.php';
/** @noinspection PhpUndefinedClassInspection */
$order = new WC_Order( $post->ID );
if ( preg_match( '/_labeled$/', $data ) ) {
$data = preg_replace( '/_labeled$/', '', $data );
$label = apply_filters( 'vc_gitem_template_attribute_woocommerce_order_' . $data . '_label', Vc_Vendor_Woocommerce::getOrderFieldLabel( $data ) . ': ' );
}
switch ( $data ) {
case 'id':
$value = $order->get_id();
break;
case 'order_number':
$value = $order->get_order_number();
break;
case 'total':
$value = sprintf( get_woocommerce_price_format(), wc_format_decimal( $order->get_total(), 2 ), $order->get_currency() );
break;
case 'payment_method':
$value = $order->get_payment_method_title();
break;
case 'billing_address_city':
$value = $order->get_billing_city();
break;
case 'billing_address_country':
$value = $order->get_billing_country();
break;
case 'shipping_address_city':
$value = $order->get_shipping_city();
break;
case 'shipping_address_country':
$value = $order->get_shipping_country();
break;
default:
$value = $order->{$data};
}
return strlen( $value ) > 0 ? $label . apply_filters( 'vc_gitem_template_attribute_woocommerce_order_' . $data . '_value', $value ) : '';
}
/**
* Get woocommerce product add to cart url.
*
* @param $value
* @param $data
*
* @return string
* @since 4.5
*
*/
function vc_gitem_template_attribute_woocommerce_product_link( $value, $data ) {
/**
* @var null|Wp_Post $post ;
* @var string $data ;
*/
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
$link = do_shortcode( '[add_to_cart_url id="' . $post->ID . '"]' );
return apply_filters( 'vc_gitem_template_attribute_woocommerce_product_link_value', $link );
}
add_filter( 'vc_gitem_template_attribute_woocommerce_product', 'vc_gitem_template_attribute_woocommerce_product', 10, 2 );
add_filter( 'vc_gitem_template_attribute_woocommerce_order', 'vc_gitem_template_attribute_woocommerce_order', 10, 2 );
add_filter( 'vc_gitem_template_attribute_woocommerce_product_link', 'vc_gitem_template_attribute_woocommerce_product_link', 10, 2 );
classes/vendors/plugins/woocommerce/class-vc-gitem-woocommerce-shortcode.php 0000644 00000002730 15021217214 0023512 0 ustar 00 '',
'post_type' => 'product',
'product_field_key' => 'sku',
'product_custom_key' => '',
'order_field_key' => 'order_number',
'order_custom_key' => '',
'show_label' => '',
'align' => '',
), $atts );
extract( $atts );
if ( 'product' === $post_type ) {
$key = '_custom_' === $product_field_key ? $product_custom_key : $product_field_key;
} elseif ( 'order' === $post_type ) {
$key = '_custom_' === $order_field_key ? $order_custom_key : $order_field_key;
}
if ( 'yes' === $show_label ) {
$key .= '_labeled';
}
$css_class = 'vc_gitem-woocommerce vc_gitem-woocommerce-' . $post_type . '-' . $key . ( strlen( $el_class ) ? ' ' . $el_class : '' ) . ( strlen( $align ) ? ' vc_gitem-align-' . $align : '' );
return '' . '{{ woocommerce_' . $post_type . ':' . $key . ' }}' . '
';
}
}
classes/vendors/plugins/woocommerce/grid-item-filters.php 0000644 00000006125 15021217214 0017720 0 ustar 00 ID . '"]' ) ) . '" class="' . esc_attr( $css_class ) . '" data-product_id="' . esc_attr( vc_gitem_template_attribute_woocommerce_product( '', array(
'post' => $post,
'data' => 'id',
) ) ) . '"' . ' data-product_sku="' . esc_attr( vc_gitem_template_attribute_woocommerce_product( '', array(
'post' => $post,
'data' => 'sku',
) ) ) . '" data-product-quantity="1"';
}
return $link;
}
/**¬
* Remove target as useless for add to cart link.
*
* @param $link
* @param $atts
* @param $post
*
* @return string
* @since 4.5
*
*/
function vc_gitem_post_data_get_link_real_target_woocommerce( $link, $atts, $post ) {
return 'woo_add_to_card' === $link ? '' : $link;
}
/**
* @param $image_block
* @param $link
* @param $css_class
* @return string
*/
function vc_gitem_zone_image_block_link_woocommerce( $image_block, $link, $css_class ) {
if ( 'woo_add_to_card' === $link ) {
$css_class .= ' add_to_cart_button vc-gitem-link-ajax product_type_simple';
return ' ';
}
return $image_block;
}
classes/vendors/plugins/woocommerce/grid-item-shortcodes.php 0000644 00000006605 15021217214 0020430 0 ustar 00 array(
'name' => esc_html__( 'WooCommerce field', 'js_composer' ),
'base' => 'vc_gitem_wocommerce',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Woocommerce', 'js_composer' ),
'php_class_name' => 'Vc_Gitem_Woocommerce_Shortcode',
'params' => array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Content type', 'js_composer' ),
'param_name' => 'post_type',
'value' => array(
esc_html__( 'Product', 'js_composer' ) => 'product',
esc_html__( 'Order', 'js_composer' ) => 'order',
),
'save_always' => true,
'description' => esc_html__( 'Select Woo Commerce post type.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Product field name', 'js_composer' ),
'param_name' => 'product_field_key',
'value' => Vc_Vendor_Woocommerce::getProductsFieldsList(),
'dependency' => array(
'element' => 'post_type',
'value' => array( 'product' ),
),
'save_always' => true,
'description' => esc_html__( 'Choose field from product.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Product custom key', 'js_composer' ),
'param_name' => 'product_custom_key',
'description' => esc_html__( 'Enter custom key.', 'js_composer' ),
'dependency' => array(
'element' => 'product_field_key',
'value' => array( '_custom_' ),
),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order fields', 'js_composer' ),
'param_name' => 'order_field_key',
'value' => Vc_Vendor_Woocommerce::getOrderFieldsList(),
'dependency' => array(
'element' => 'post_type',
'value' => array( 'order' ),
),
'save_always' => true,
'description' => esc_html__( 'Choose field from order.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Order custom key', 'js_composer' ),
'param_name' => 'order_custom_key',
'dependency' => array(
'element' => 'order_field_key',
'value' => array( '_custom_' ),
),
'description' => esc_html__( 'Enter custom key.', 'js_composer' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Show label', 'js_composer' ),
'param_name' => 'show_label',
'value' => array( esc_html__( 'Yes', 'js_composer' ) => 'yes' ),
'save_always' => true,
'description' => esc_html__( 'Enter label to display before key value.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Align', 'js_composer' ),
'param_name' => 'align',
'value' => array(
esc_attr__( 'left', 'js_composer' ) => 'left',
esc_attr__( 'right', 'js_composer' ) => 'right',
esc_attr__( 'center', 'js_composer' ) => 'center',
esc_attr__( 'justify', 'js_composer' ) => 'justify',
),
'save_always' => true,
'description' => esc_html__( 'Select alignment.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
'post_type' => Vc_Grid_Item_Editor::postType(),
),
);
classes/vendors/plugins/class-vc-vendor-woocommerce.php 0000644 00000155247 15021217214 0017407 0 ustar 00 esc_html__( 'Description', 'woocommerce' ),
'priority' => 10,
'callback' => 'woocommerce_product_description_tab',
);
}
return $tabs;
}
/**
* @since 4.4
*/
public function enqueueJsBackend() {
wp_enqueue_script( 'vc_vendor_woocommerce_backend', vc_asset_url( 'js/vendors/woocommerce.js' ), array( 'vc-backend-min-js' ), '1.0', true );
}
/**
* @since 4.4
*/
public function enqueueJsFrontend() {
wp_enqueue_script( 'vc_vendor_woocommerce_frontend', vc_asset_url( 'js/vendors/woocommerce.js' ), array( 'vc-frontend-editor-min-js' ), '1.0', true );
}
/**
* Add settings for shortcodes
*
* @param $tag
*
* @return array
* @since 4.9
*
*/
public function addShortcodeSettings( $tag ) {
$args = array(
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => '',
'taxonomy' => 'product_cat',
'pad_counts' => false,
);
$order_by_values = array(
'',
esc_html__( 'Date', 'js_composer' ) => 'date',
esc_html__( 'ID', 'js_composer' ) => 'ID',
esc_html__( 'Author', 'js_composer' ) => 'author',
esc_html__( 'Title', 'js_composer' ) => 'title',
esc_html__( 'Modified', 'js_composer' ) => 'modified',
esc_html__( 'Random', 'js_composer' ) => 'rand',
esc_html__( 'Comment count', 'js_composer' ) => 'comment_count',
esc_html__( 'Menu order', 'js_composer' ) => 'menu_order',
esc_html__( 'Menu order & title', 'js_composer' ) => 'menu_order title',
esc_html__( 'Include', 'js_composer' ) => 'include',
esc_html__( 'Custom post__in', 'js_composer' ) => 'post__in',
);
$order_way_values = array(
'',
esc_html__( 'Descending', 'js_composer' ) => 'DESC',
esc_html__( 'Ascending', 'js_composer' ) => 'ASC',
);
$settings = array();
switch ( $tag ) {
case 'woocommerce_cart':
$settings = array(
'name' => esc_html__( 'Cart', 'js_composer' ),
'base' => 'woocommerce_cart',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Displays the cart contents', 'js_composer' ),
'show_settings_on_create' => false,
'php_class_name' => 'Vc_WooCommerce_NotEditable',
);
break;
case 'woocommerce_checkout':
/**
* @shortcode woocommerce_checkout
* @description Used on the checkout page, the checkout shortcode displays the checkout process.
* @no_params
* @not_editable
*/ $settings = array(
'name' => esc_html__( 'Checkout', 'js_composer' ),
'base' => 'woocommerce_checkout',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Displays the checkout', 'js_composer' ),
'show_settings_on_create' => false,
'php_class_name' => 'Vc_WooCommerce_NotEditable',
);
break;
case 'woocommerce_order_tracking':
/**
* @shortcode woocommerce_order_tracking
* @description Lets a user see the status of an order by entering their order details.
* @no_params
* @not_editable
*/ $settings = array(
'name' => esc_html__( 'Order Tracking Form', 'js_composer' ),
'base' => 'woocommerce_order_tracking',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Lets a user see the status of an order', 'js_composer' ),
'show_settings_on_create' => false,
'php_class_name' => 'Vc_WooCommerce_NotEditable',
);
break;
case 'woocommerce_my_account':
/**
* @shortcode woocommerce_my_account
* @description Shows the ‘my account’ section where the customer can view past orders and update their information.
* You can specify the number or order to show, it’s set by default to 15 (use -1 to display all orders.)
*
* @param order_count integer
* Current user argument is automatically set using get_user_by( ‘id’, get_current_user_id() ).
*/ $settings = array(
'name' => esc_html__( 'My Account', 'js_composer' ),
'base' => 'woocommerce_my_account',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Shows the "my account" section', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Order count', 'js_composer' ),
'value' => 15,
'save_always' => true,
'param_name' => 'order_count',
'description' => esc_html__( 'You can specify the number or order to show, it\'s set by default to 15 (use -1 to display all orders.)', 'js_composer' ),
),
),
);
break;
case 'recent_products':
/**
* @shortcode recent_products
* @description Lists recent products – useful on the homepage. The ‘per_page’ shortcode determines how many products
* to show on the page and the columns attribute controls how many columns wide the products should be before wrapping.
* To learn more about the default ‘orderby’ parameters please reference the WordPress Codex: http://codex.wordpress.org/Class_Reference/WP_Query
*
* @param per_page integer
* @param columns integer
* @param orderby array
* @param order array
*/ $settings = array(
'name' => esc_html__( 'Recent products', 'js_composer' ),
'base' => 'recent_products',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Lists recent products', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'save_always' => true,
'param_name' => 'per_page',
'description' => esc_html__( 'The "per_page" shortcode determines how many products to show on the page', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'param_name' => 'columns',
'save_always' => true,
'description' => esc_html__( 'The columns attribute controls how many columns wide the products should be before wrapping.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'date',
// default WC value for recent_products
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'DESC',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
),
);
break;
case 'featured_products':
/**
* @shortcode featured_products
* @description Works exactly the same as recent products but displays products which have been set as “featured”.
*
* @param per_page integer
* @param columns integer
* @param orderby array
* @param order array
*/ $settings = array(
'name' => esc_html__( 'Featured products', 'js_composer' ),
'base' => 'featured_products',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Display products set as "featured"', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'param_name' => 'per_page',
'save_always' => true,
'description' => esc_html__( 'The "per_page" shortcode determines how many products to show on the page', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'param_name' => 'columns',
'save_always' => true,
'description' => esc_html__( 'The columns attribute controls how many columns wide the products should be before wrapping.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'date',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'DESC',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
),
);
break;
case 'product':
/**
* @shortcode product
* @description Show a single product by ID or SKU.
*
* @param id integer
* @param sku string
* If the product isn’t showing, make sure it isn’t set to Hidden in the Catalog Visibility.
* To find the Product ID, go to the Product > Edit screen and look in the URL for the postid= .
*/ $settings = array(
'name' => esc_html__( 'Product', 'js_composer' ),
'base' => 'product',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Show a single product by ID or SKU', 'js_composer' ),
'params' => array(
array(
'type' => 'autocomplete',
'heading' => esc_html__( 'Select identificator', 'js_composer' ),
'param_name' => 'id',
'description' => esc_html__( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ),
),
array(
'type' => 'hidden',
// This will not show on render, but will be used when defining value for autocomplete
'param_name' => 'sku',
),
),
);
break;
case 'products':
$settings = array(
'name' => esc_html__( 'Products', 'js_composer' ),
'base' => 'products',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Show multiple products by ID or SKU.', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'param_name' => 'columns',
'save_always' => true,
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'title',
// Default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s. Default by Title', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'ASC',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s. Default by ASC', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'autocomplete',
'heading' => esc_html__( 'Products', 'js_composer' ),
'param_name' => 'ids',
'settings' => array(
'multiple' => true,
'sortable' => true,
'unique_values' => true,
// In UI show results except selected. NB! You should manually check values in backend
),
'save_always' => true,
'description' => esc_html__( 'Enter List of Products', 'js_composer' ),
),
array(
'type' => 'hidden',
'param_name' => 'skus',
),
),
);
break;
case 'add_to_cart':
/**
* @shortcode add_to_cart
* @description Show the price and add to cart button of a single product by ID (or SKU).
*
* @param id integer
* @param sku string
* @param style string
* If the product isn’t showing, make sure it isn’t set to Hidden in the Catalog Visibility.
*/ $settings = array(
'name' => esc_html__( 'Add to cart', 'js_composer' ),
'base' => 'add_to_cart',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Show multiple products by ID or SKU', 'js_composer' ),
'params' => array(
array(
'type' => 'autocomplete',
'heading' => esc_html__( 'Select identificator', 'js_composer' ),
'param_name' => 'id',
'description' => esc_html__( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ),
),
array(
'type' => 'hidden',
'param_name' => 'sku',
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Wrapper inline style', 'js_composer' ),
'param_name' => 'style',
),
),
);
break;
case 'add_to_cart_url':
/**
* @shortcode add_to_cart_url
* @description Print the URL on the add to cart button of a single product by ID.
*
* @param id integer
* @param sku string
*/ $settings = array(
'name' => esc_html__( 'Add to cart URL', 'js_composer' ),
'base' => 'add_to_cart_url',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Show URL on the add to cart button', 'js_composer' ),
'params' => array(
array(
'type' => 'autocomplete',
'heading' => esc_html__( 'Select identificator', 'js_composer' ),
'param_name' => 'id',
'description' => esc_html__( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ),
),
array(
'type' => 'hidden',
'param_name' => 'sku',
),
),
);
break;
case 'product_page':
/**
* @shortcode product_page
* @description Show a full single product page by ID or SKU.
*
* @param id integer
* @param sku string
*/ $settings = array(
'name' => esc_html__( 'Product page', 'js_composer' ),
'base' => 'product_page',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Show single product by ID or SKU', 'js_composer' ),
'params' => array(
array(
'type' => 'autocomplete',
'heading' => esc_html__( 'Select identificator', 'js_composer' ),
'param_name' => 'id',
'description' => esc_html__( 'Input product ID or product SKU or product title to see suggestions', 'js_composer' ),
),
array(
'type' => 'hidden',
'param_name' => 'sku',
),
),
);
break;
case 'product_category':
/**
* @shortcode product_category
* @description Show multiple products in a category by slug.
*
* @param per_page integer
* @param columns integer
* @param orderby array
* @param order array
* @param category string
* Go to: WooCommerce > Products > Categories to find the slug column.
*/ // All this move to product
$categories = get_categories( $args );
$product_categories_dropdown = array();
$this->getCategoryChildsFull( 0, $categories, 0, $product_categories_dropdown );
$settings = array(
'name' => esc_html__( 'Product category', 'js_composer' ),
'base' => 'product_category',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Show multiple products in a category', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'save_always' => true,
'param_name' => 'per_page',
'description' => esc_html__( 'How much items per page to show', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'save_always' => true,
'param_name' => 'columns',
'description' => esc_html__( 'How much columns grid', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'menu_order title',
// Default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'ASC',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Category', 'js_composer' ),
'value' => $product_categories_dropdown,
'param_name' => 'category',
'save_always' => true,
'description' => esc_html__( 'Product category list', 'js_composer' ),
),
),
);
break;
case 'product_categories':
$settings = array(
'name' => esc_html__( 'Product categories', 'js_composer' ),
'base' => 'product_categories',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'Display product categories loop', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Number', 'js_composer' ),
'param_name' => 'number',
'description' => esc_html__( 'The `number` field is used to display the number of products.', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'name',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'ASC',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'param_name' => 'columns',
'save_always' => true,
'description' => esc_html__( 'How much columns grid', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Number', 'js_composer' ),
'param_name' => 'hide_empty',
'description' => esc_html__( 'Hide empty', 'js_composer' ),
),
array(
'type' => 'autocomplete',
'heading' => esc_html__( 'Categories', 'js_composer' ),
'param_name' => 'ids',
'settings' => array(
'multiple' => true,
'sortable' => true,
),
'save_always' => true,
'description' => esc_html__( 'List of product categories', 'js_composer' ),
),
),
);
break;
case 'sale_products':
/**
* @shortcode sale_products
* @description List all products on sale.
*
* @param per_page integer
* @param columns integer
* @param orderby array
* @param order array
*/ $settings = array(
'name' => esc_html__( 'Sale products', 'js_composer' ),
'base' => 'sale_products',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'List all products on sale', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'save_always' => true,
'param_name' => 'per_page',
'description' => esc_html__( 'How much items per page to show', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'save_always' => true,
'param_name' => 'columns',
'description' => esc_html__( 'How much columns grid', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'title',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'ASC',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
),
);
break;
case 'best_selling_products':
/**
* @shortcode best_selling_products
* @description List best selling products on sale.
*
* @param per_page integer
* @param columns integer
*/ $settings = array(
'name' => esc_html__( 'Best Selling Products', 'js_composer' ),
'base' => 'best_selling_products',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'List best selling products on sale', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'param_name' => 'per_page',
'save_always' => true,
'description' => esc_html__( 'How much items per page to show', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'param_name' => 'columns',
'save_always' => true,
'description' => esc_html__( 'How much columns grid', 'js_composer' ),
),
),
);
break;
case 'top_rated_products':
/**
* @shortcode top_rated_products
* @description List top rated products on sale.
*
* @param per_page integer
* @param columns integer
* @param orderby array
* @param order array
*/ $settings = array(
'name' => esc_html__( 'Top Rated Products', 'js_composer' ),
'base' => 'top_rated_products',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'List all products on sale', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'param_name' => 'per_page',
'save_always' => true,
'description' => esc_html__( 'How much items per page to show', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'param_name' => 'columns',
'save_always' => true,
'description' => esc_html__( 'How much columns grid', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'title',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'ASC',
// Default WP Value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
),
);
break;
case 'product_attribute':
/**
* @shortcode product_attribute
* @description List products with an attribute shortcode.
*
* @param per_page integer
* @param columns integer
* @param orderby array
* @param order array
* @param attribute string
* @param filter string
*/ $attributes_tax = wc_get_attribute_taxonomies();
$attributes = array();
foreach ( $attributes_tax as $attribute ) {
$attributes[ $attribute->attribute_label ] = $attribute->attribute_name;
}
$settings = array(
'name' => esc_html__( 'Product Attribute', 'js_composer' ),
'base' => 'product_attribute',
'icon' => 'icon-wpb-woocommerce',
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'List products with an attribute shortcode', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'param_name' => 'per_page',
'save_always' => true,
'description' => esc_html__( 'How much items per page to show', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'param_name' => 'columns',
'save_always' => true,
'description' => esc_html__( 'How much columns grid', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'title',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'ASC',
// Default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Attribute', 'js_composer' ),
'param_name' => 'attribute',
'value' => $attributes,
'save_always' => true,
'description' => esc_html__( 'List of product taxonomy attribute', 'js_composer' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Filter', 'js_composer' ),
'param_name' => 'filter',
'value' => array( 'empty' => 'empty' ),
'save_always' => true,
'description' => esc_html__( 'Taxonomy values', 'js_composer' ),
'dependency' => array(
'callback' => 'vcWoocommerceProductAttributeFilterDependencyCallback',
),
),
),
);
break;
case 'related_products':
/**
* @shortcode related_products
* @description List related products.
*
* @param per_page integer
* @param columns integer
* @param orderby array
* @param order array
*/ /* we need to detect post type to show this shortcode */ global $post, $typenow, $current_screen;
$post_type = '';
if ( $post && $post->post_type ) {
//we have a post so we can just get the post type from that
$post_type = $post->post_type;
} elseif ( $typenow ) {
//check the global $typenow - set in admin.php
$post_type = $typenow;
} elseif ( $current_screen && $current_screen->post_type ) {
//check the global $current_screen object - set in sceen.php
$post_type = $current_screen->post_type;
} elseif ( isset( $_REQUEST['post_type'] ) ) {
//lastly check the post_type querystring
$post_type = sanitize_key( $_REQUEST['post_type'] );
//we do not know the post type!
}
$settings = array(
'name' => esc_html__( 'Related Products', 'js_composer' ),
'base' => 'related_products',
'icon' => 'icon-wpb-woocommerce',
'content_element' => 'product' === $post_type,
// disable showing if not product type
'category' => esc_html__( 'WooCommerce', 'js_composer' ),
'description' => esc_html__( 'List related products', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Per page', 'js_composer' ),
'value' => 12,
'save_always' => true,
'param_name' => 'per_page',
'description' => esc_html__( 'Please note: the "per_page" shortcode argument will determine how many products are shown on a page. This will not add pagination to the shortcode. ', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Columns', 'js_composer' ),
'value' => 4,
'save_always' => true,
'param_name' => 'columns',
'description' => esc_html__( 'How much columns grid', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Order by', 'js_composer' ),
'param_name' => 'orderby',
'value' => $order_by_values,
'std' => 'rand',
// default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Select how to sort retrieved products. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Sort order', 'js_composer' ),
'param_name' => 'order',
'value' => $order_way_values,
'std' => 'DESC',
// Default WC value
'save_always' => true,
'description' => sprintf( esc_html__( 'Designates the ascending or descending order. More at %s.', 'js_composer' ), 'WordPress codex page ' ),
),
),
);
break;
}
return $settings;
}
/**
* Add woocommerce shortcodes and hooks/filters for it.
* @since 4.4
*/
public function mapShortcodes() {
add_action( 'wp_ajax_vc_woocommerce_get_attribute_terms', array(
$this,
'getAttributeTermsAjax',
) );
$tags = array(
'woocommerce_cart',
'woocommerce_checkout',
'woocommerce_order_tracking',
'woocommerce_my_account',
'recent_products',
'featured_products',
'product',
'products',
'add_to_cart',
'add_to_cart_url',
'product_page',
'product_category',
'product_categories',
'sale_products',
'best_selling_products',
'top_rated_products',
'product_attribute',
'related_products',
);
while ( $tag = current( $tags ) ) {
vc_lean_map( $tag, array(
$this,
'addShortcodeSettings',
) );
next( $tags );
}
//Filters For autocomplete param:
//For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
add_filter( 'vc_autocomplete_product_id_callback', array(
$this,
'productIdAutocompleteSuggester',
), 10, 1 ); // Get suggestion(find). Must return an array
add_filter( 'vc_autocomplete_product_id_render', array(
$this,
'productIdAutocompleteRender',
), 10, 1 ); // Render exact product. Must return an array (label,value)
//For param: ID default value filter
add_filter( 'vc_form_fields_render_field_product_id_param_value', array(
$this,
'productIdDefaultValue',
), 10, 4 ); // Defines default value for param if not provided. Takes from other param value.
//Filters For autocomplete param:
//For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
add_filter( 'vc_autocomplete_products_ids_callback', array(
$this,
'productIdAutocompleteSuggester',
), 10, 1 ); // Get suggestion(find). Must return an array
add_filter( 'vc_autocomplete_products_ids_render', array(
$this,
'productIdAutocompleteRender',
), 10, 1 ); // Render exact product. Must return an array (label,value)
//For param: ID default value filter
add_filter( 'vc_form_fields_render_field_products_ids_param_value', array(
$this,
'productsIdsDefaultValue',
), 10, 4 ); // Defines default value for param if not provided. Takes from other param value.
//Filters For autocomplete param: Exactly Same as "product" shortcode
//For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
add_filter( 'vc_autocomplete_add_to_cart_id_callback', array(
$this,
'productIdAutocompleteSuggester',
), 10, 1 ); // Get suggestion(find). Must return an array
add_filter( 'vc_autocomplete_add_to_cart_id_render', array(
$this,
'productIdAutocompleteRender',
), 10, 1 ); // Render exact product. Must return an array (label,value)
//For param: ID default value filter
add_filter( 'vc_form_fields_render_field_add_to_cart_id_param_value', array(
$this,
'productIdDefaultValue',
), 10, 4 ); // Defines default value for param if not provided. Takes from other param value.
//Filters For autocomplete param: Exactly Same as "product" shortcode
//For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
add_filter( 'vc_autocomplete_add_to_cart_url_id_callback', array(
$this,
'productIdAutocompleteSuggester',
), 10, 1 ); // Get suggestion(find). Must return an array
add_filter( 'vc_autocomplete_add_to_cart_url_id_render', array(
$this,
'productIdAutocompleteRender',
), 10, 1 ); // Render exact product. Must return an array (label,value)
//For param: ID default value filter
add_filter( 'vc_form_fields_render_field_add_to_cart_url_id_param_value', array(
$this,
'productIdDefaultValue',
), 10, 4 ); // Defines default value for param if not provided. Takes from other param value.
//Filters For autocomplete param: Exactly Same as "product" shortcode
//For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
add_filter( 'vc_autocomplete_product_page_id_callback', array(
$this,
'productIdAutocompleteSuggester',
), 10, 1 ); // Get suggestion(find). Must return an array
add_filter( 'vc_autocomplete_product_page_id_render', array(
$this,
'productIdAutocompleteRender',
), 10, 1 ); // Render exact product. Must return an array (label,value)
//For param: ID default value filter
add_filter( 'vc_form_fields_render_field_product_page_id_param_value', array(
$this,
'productIdDefaultValue',
), 10, 4 ); // Defines default value for param if not provided. Takes from other param value.
//Filters For autocomplete param:
//For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
add_filter( 'vc_autocomplete_product_category_category_callback', array(
$this,
'productCategoryCategoryAutocompleteSuggesterBySlug',
), 10, 1 ); // Get suggestion(find). Must return an array
add_filter( 'vc_autocomplete_product_category_category_render', array(
$this,
'productCategoryCategoryRenderBySlugExact',
), 10, 1 ); // Render exact category by Slug. Must return an array (label,value)
//Filters For autocomplete param:
//For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
add_filter( 'vc_autocomplete_product_categories_ids_callback', array(
$this,
'productCategoryCategoryAutocompleteSuggester',
), 10, 1 ); // Get suggestion(find). Must return an array
add_filter( 'vc_autocomplete_product_categories_ids_render', array(
$this,
'productCategoryCategoryRenderByIdExact',
), 10, 1 ); // Render exact category by id. Must return an array (label,value)
//For param: "filter" param value
//vc_form_fields_render_field_{shortcode_name}_{param_name}_param
add_filter( 'vc_form_fields_render_field_product_attribute_filter_param', array(
$this,
'productAttributeFilterParamValue',
), 10, 4 ); // Defines default value for param if not provided. Takes from other param value.
}
/**
* @param array $shortcodes
* @return array|mixed
*/
/**
* @param array $shortcodes
* @return array|mixed
*/
public function mapGridItemShortcodes( array $shortcodes ) {
require_once vc_path_dir( 'VENDORS_DIR', 'plugins/woocommerce/class-vc-gitem-woocommerce-shortcode.php' );
require_once vc_path_dir( 'VENDORS_DIR', 'plugins/woocommerce/grid-item-attributes.php' );
$wc_shortcodes = include vc_path_dir( 'VENDORS_DIR', 'plugins/woocommerce/grid-item-shortcodes.php' );
return $shortcodes + $wc_shortcodes;
}
/**
* Defines default value for param if not provided. Takes from other param value.
* @param array $param_settings
* @param $current_value
* @param $map_settings
* @param $atts
*
* @return array
* @since 4.4
*
*/
public function productAttributeFilterParamValue( $param_settings, $current_value, $map_settings, $atts ) {
if ( isset( $atts['attribute'] ) ) {
$value = $this->getAttributeTerms( $atts['attribute'] );
if ( is_array( $value ) && ! empty( $value ) ) {
$param_settings['value'] = $value;
}
}
return $param_settings;
}
/**
* Get attribute terms hooks from ajax request
* @since 4.4
*/
public function getAttributeTermsAjax() {
vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
$attribute = vc_post_param( 'attribute' );
$values = $this->getAttributeTerms( $attribute );
$param = array(
'param_name' => 'filter',
'type' => 'checkbox',
);
$param_line = '';
foreach ( $values as $label => $v ) {
$param_line .= ' ' . $label . ' ';
}
die( wp_json_encode( $param_line ) );
}
/**
* Get attribute terms suggester
* @param $attribute
*
* @return array
* @since 4.4
*
*/
public function getAttributeTerms( $attribute ) {
$terms = get_terms( 'pa_' . $attribute ); // return array. take slug
$data = array();
if ( ! empty( $terms ) && empty( $terms->errors ) ) {
foreach ( $terms as $term ) {
$data[ $term->name ] = $term->slug;
}
}
return $data;
}
/**
* Get lists of categories.
* @param $parent_id
* @param array $array
* @param $level
* @param array $dropdown - passed by reference
* @return array
* @since 4.5.3
*
*/
protected function getCategoryChildsFull( $parent_id, $array, $level, &$dropdown ) {
$keys = array_keys( $array );
$i = 0;
while ( $i < count( $array ) ) {
$key = $keys[ $i ];
$item = $array[ $key ];
$i ++;
if ( $item->category_parent == $parent_id ) {
$name = str_repeat( '- ', $level ) . $item->name;
$value = $item->slug;
$dropdown[] = array(
'label' => $name . '(' . $item->term_id . ')',
'value' => $value,
);
unset( $array[ $key ] );
$array = $this->getCategoryChildsFull( $item->term_id, $array, $level + 1, $dropdown );
$keys = array_keys( $array );
$i = 0;
}
}
return $array;
}
/**
* Replace single product sku to id.
* @param $current_value
* @param $param_settings
* @param $map_settings
* @param $atts
*
* @return bool|string
* @since 4.4
*
*/
public function productIdDefaultValue( $current_value, $param_settings, $map_settings, $atts ) {
$value = trim( $current_value );
if ( strlen( trim( $current_value ) ) === 0 && isset( $atts['sku'] ) && strlen( $atts['sku'] ) > 0 ) {
$value = $this->productIdDefaultValueFromSkuToId( $atts['sku'] );
}
return $value;
}
/**
* Replaces product skus to id's.
* @param $current_value
* @param $param_settings
* @param $map_settings
* @param $atts
*
* @return string
* @since 4.4
*
*/
public function productsIdsDefaultValue( $current_value, $param_settings, $map_settings, $atts ) {
$value = trim( $current_value );
if ( strlen( trim( $value ) ) === 0 && isset( $atts['skus'] ) && strlen( $atts['skus'] ) > 0 ) {
$data = array();
$skus = $atts['skus'];
$skus_array = explode( ',', $skus );
foreach ( $skus_array as $sku ) {
$id = $this->productIdDefaultValueFromSkuToId( trim( $sku ) );
if ( is_numeric( $id ) ) {
$data[] = $id;
}
}
if ( ! empty( $data ) ) {
$values = explode( ',', $value );
$values = array_merge( $values, $data );
$value = implode( ',', $values );
}
}
return $value;
}
/**
* Suggester for autocomplete by id/name/title/sku
* @param $query
*
* @return array - id's from products with title/sku.
* @since 4.4
*
*/
public function productIdAutocompleteSuggester( $query ) {
global $wpdb;
$product_id = (int) $query;
$post_meta_infos = $wpdb->get_results( $wpdb->prepare( "SELECT a.ID AS id, a.post_title AS title, b.meta_value AS sku
FROM {$wpdb->posts} AS a
LEFT JOIN ( SELECT meta_value, post_id FROM {$wpdb->postmeta} WHERE `meta_key` = '_sku' ) AS b ON b.post_id = a.ID
WHERE a.post_type = 'product' AND ( a.ID = '%d' OR b.meta_value LIKE '%%%s%%' OR a.post_title LIKE '%%%s%%' )", $product_id > 0 ? $product_id : - 1, stripslashes( $query ), stripslashes( $query ) ), ARRAY_A );
$results = array();
if ( is_array( $post_meta_infos ) && ! empty( $post_meta_infos ) ) {
foreach ( $post_meta_infos as $value ) {
$data = array();
$data['value'] = $value['id'];
$data['label'] = esc_html__( 'Id', 'js_composer' ) . ': ' . $value['id'] . ( ( strlen( $value['title'] ) > 0 ) ? ' - ' . esc_html__( 'Title', 'js_composer' ) . ': ' . $value['title'] : '' ) . ( ( strlen( $value['sku'] ) > 0 ) ? ' - ' . esc_html__( 'Sku', 'js_composer' ) . ': ' . $value['sku'] : '' );
$results[] = $data;
}
}
return $results;
}
/**
* Find product by id
* @param $query
*
* @return bool|array
* @since 4.4
*
*/
public function productIdAutocompleteRender( $query ) {
$query = trim( $query['value'] ); // get value from requested
if ( ! empty( $query ) ) {
// get product
$product_object = wc_get_product( (int) $query );
if ( is_object( $product_object ) ) {
$product_sku = $product_object->get_sku();
$product_title = $product_object->get_title();
$product_id = $product_object->get_id();
$product_sku_display = '';
if ( ! empty( $product_sku ) ) {
$product_sku_display = ' - ' . esc_html__( 'Sku', 'js_composer' ) . ': ' . $product_sku;
}
$product_title_display = '';
if ( ! empty( $product_title ) ) {
$product_title_display = ' - ' . esc_html__( 'Title', 'js_composer' ) . ': ' . $product_title;
}
$product_id_display = esc_html__( 'Id', 'js_composer' ) . ': ' . $product_id;
$data = array();
$data['value'] = $product_id;
$data['label'] = $product_id_display . $product_title_display . $product_sku_display;
return ! empty( $data ) ? $data : false;
}
return false;
}
return false;
}
/**
* Return ID of product by provided SKU of product.
* @param $query
*
* @return bool
* @since 4.4
*
*/
public function productIdDefaultValueFromSkuToId( $query ) {
$result = $this->productIdAutocompleteSuggesterExactSku( $query );
return isset( $result['value'] ) ? $result['value'] : false;
}
/**
* Find product by SKU
* @param $query
*
* @return bool|array
* @since 4.4
*
*/
public function productIdAutocompleteSuggesterExactSku( $query ) {
global $wpdb;
$query = trim( $query );
$product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", stripslashes( $query ) ) );
$product_data = get_post( $product_id );
if ( 'product' !== $product_data->post_type ) {
return '';
}
$product_object = wc_get_product( $product_data );
if ( is_object( $product_object ) ) {
$product_sku = $product_object->get_sku();
$product_title = $product_object->get_title();
$product_id = $product_object->get_id();
$product_sku_display = '';
if ( ! empty( $product_sku ) ) {
$product_sku_display = ' - ' . esc_html__( 'Sku', 'js_composer' ) . ': ' . $product_sku;
}
$product_title_display = '';
if ( ! empty( $product_title ) ) {
$product_title_display = ' - ' . esc_html__( 'Title', 'js_composer' ) . ': ' . $product_title;
}
$product_id_display = esc_html__( 'Id', 'js_composer' ) . ': ' . $product_id;
$data = array();
$data['value'] = $product_id;
$data['label'] = $product_id_display . $product_title_display . $product_sku_display;
return ! empty( $data ) ? $data : false;
}
return false;
}
/**
* Autocomplete suggester to search product category by name/slug or id.
* @param $query
* @param bool $slug - determines what output is needed
* default false - return id of product category
* true - return slug of product category
*
* @return array
* @since 4.4
*
*/
public function productCategoryCategoryAutocompleteSuggester( $query, $slug = false ) {
global $wpdb;
$cat_id = (int) $query;
$query = trim( $query );
$post_meta_infos = $wpdb->get_results( $wpdb->prepare( "SELECT a.term_id AS id, b.name as name, b.slug AS slug
FROM {$wpdb->term_taxonomy} AS a
INNER JOIN {$wpdb->terms} AS b ON b.term_id = a.term_id
WHERE a.taxonomy = 'product_cat' AND (a.term_id = '%d' OR b.slug LIKE '%%%s%%' OR b.name LIKE '%%%s%%' )", $cat_id > 0 ? $cat_id : - 1, stripslashes( $query ), stripslashes( $query ) ), ARRAY_A );
$result = array();
if ( is_array( $post_meta_infos ) && ! empty( $post_meta_infos ) ) {
foreach ( $post_meta_infos as $value ) {
$data = array();
$data['value'] = $slug ? $value['slug'] : $value['id'];
$data['label'] = esc_html__( 'Id', 'js_composer' ) . ': ' . $value['id'] . ( ( strlen( $value['name'] ) > 0 ) ? ' - ' . esc_html__( 'Name', 'js_composer' ) . ': ' . $value['name'] : '' ) . ( ( strlen( $value['slug'] ) > 0 ) ? ' - ' . esc_html__( 'Slug', 'js_composer' ) . ': ' . $value['slug'] : '' );
$result[] = $data;
}
}
return $result;
}
/**
* Search product category by id
* @param $query
*
* @return bool|array
* @since 4.4
*
*/
public function productCategoryCategoryRenderByIdExact( $query ) {
$query = $query['value'];
$cat_id = (int) $query;
$term = get_term( $cat_id, 'product_cat' );
return $this->productCategoryTermOutput( $term );
}
/**
* Suggester for autocomplete to find product category by id/name/slug but return found product category SLUG
* @param $query
*
* @return array - slug of products categories.
* @since 4.4
*
*/
public function productCategoryCategoryAutocompleteSuggesterBySlug( $query ) {
$result = $this->productCategoryCategoryAutocompleteSuggester( $query, true );
return $result;
}
/**
* Search product category by slug.
* @param $query
*
* @return bool|array
* @since 4.4
*
*/
public function productCategoryCategoryRenderBySlugExact( $query ) {
$query = $query['value'];
$query = trim( $query );
$term = get_term_by( 'slug', $query, 'product_cat' );
return $this->productCategoryTermOutput( $term );
}
/**
* Return product category value|label array
*
* @param $term
*
* @return array|bool
* @since 4.4
*/
protected function productCategoryTermOutput( $term ) {
$term_slug = $term->slug;
$term_title = $term->name;
$term_id = $term->term_id;
$term_slug_display = '';
if ( ! empty( $term_slug ) ) {
$term_slug_display = ' - ' . esc_html__( 'Sku', 'js_composer' ) . ': ' . $term_slug;
}
$term_title_display = '';
if ( ! empty( $term_title ) ) {
$term_title_display = ' - ' . esc_html__( 'Title', 'js_composer' ) . ': ' . $term_title;
}
$term_id_display = esc_html__( 'Id', 'js_composer' ) . ': ' . $term_id;
$data = array();
$data['value'] = $term_id;
$data['label'] = $term_id_display . $term_title_display . $term_slug_display;
return ! empty( $data ) ? $data : false;
}
/**
* @return array
*/
/**
* @return array
*/
public static function getProductsFieldsList() {
return array(
esc_html__( 'SKU', 'js_composer' ) => 'sku',
esc_html__( 'ID', 'js_composer' ) => 'id',
esc_html__( 'Price', 'js_composer' ) => 'price',
esc_html__( 'Regular Price', 'js_composer' ) => 'regular_price',
esc_html__( 'Sale Price', 'js_composer' ) => 'sale_price',
esc_html__( 'Price html', 'js_composer' ) => 'price_html',
esc_html__( 'Reviews count', 'js_composer' ) => 'reviews_count',
esc_html__( 'Short description', 'js_composer' ) => 'short_description',
esc_html__( 'Dimensions', 'js_composer' ) => 'dimensions',
esc_html__( 'Rating count', 'js_composer' ) => 'rating_count',
esc_html__( 'Weight', 'js_composer' ) => 'weight',
esc_html__( 'Is on sale', 'js_composer' ) => 'on_sale',
esc_html__( 'Custom field', 'js_composer' ) => '_custom_',
);
}
/**
* @param $key
* @return string
*/
/**
* @param $key
* @return string
*/
public static function getProductFieldLabel( $key ) {
if ( false === self::$product_fields_list ) {
self::$product_fields_list = array_flip( self::getProductsFieldsList() );
}
return isset( self::$product_fields_list[ $key ] ) ? self::$product_fields_list[ $key ] : '';
}
/**
* @return array
*/
/**
* @return array
*/
public static function getOrderFieldsList() {
return array(
esc_html__( 'ID', 'js_composer' ) => 'id',
esc_html__( 'Order number', 'js_composer' ) => 'order_number',
esc_html__( 'Currency', 'js_composer' ) => 'order_currency',
esc_html__( 'Total', 'js_composer' ) => 'total',
esc_html__( 'Status', 'js_composer' ) => 'status',
esc_html__( 'Payment method', 'js_composer' ) => 'payment_method',
esc_html__( 'Billing address city', 'js_composer' ) => 'billing_address_city',
esc_html__( 'Billing address country', 'js_composer' ) => 'billing_address_country',
esc_html__( 'Shipping address city', 'js_composer' ) => 'shipping_address_city',
esc_html__( 'Shipping address country', 'js_composer' ) => 'shipping_address_country',
esc_html__( 'Customer Note', 'js_composer' ) => 'customer_note',
esc_html__( 'Customer API', 'js_composer' ) => 'customer_api',
esc_html__( 'Custom field', 'js_composer' ) => '_custom_',
);
}
/**
* @param $key
* @return string
*/
/**
* @param $key
* @return string
*/
public static function getOrderFieldLabel( $key ) {
if ( false === self::$order_fields_list ) {
self::$order_fields_list = array_flip( self::getOrderFieldsList() );
}
return isset( self::$order_fields_list[ $key ] ) ? self::$order_fields_list[ $key ] : '';
}
public function yoastSeoCompatibility() {
if ( function_exists( 'WC' ) ) {
// WC()->frontend_includes();
include_once( WC()->plugin_path() . '/includes/wc-template-functions.php' );
// include_once WC()->plugin_path() . '';
}
}
}
/**
* Removes EDIT button in backend and frontend editor
* Class Vc_WooCommerce_NotEditable
* @since 4.4
*/
class Vc_WooCommerce_NotEditable extends WPBakeryShortCode {
/**
* @since 4.4
* @var array
*/
protected $controls_list = array(
'clone',
'delete',
);
}
classes/vendors/plugins/class-vc-vendor-yoast_seo.php 0000644 00000006717 15021217214 0017072 0 ustar 00 parsedContent ) ) {
global $post, $wp_the_query;
$wp_the_query->post = $post; // since 4.5.3 to avoid the_post replaces
/**
* @since 4.4.3
* vc_filter: vc_vendor_yoastseo_filter_results
*/
do_action( 'vc_vendor_yoastseo_filter_results' );
$this->parsedContent = do_shortcode( shortcode_unautop( $content ) );
wp_reset_query();
}
return $this->parsedContent;
}
/**
* @since 4.4
*/
public function enqueueJs() {
require_once vc_path_dir( 'PARAMS_DIR', 'vc_grid_item/editor/class-vc-grid-item-editor.php' );
if ( get_post_type() === Vc_Grid_Item_Editor::postType() ) {
return;
}
wp_enqueue_script( 'vc_vendor_yoast_js', vc_asset_url( 'js/vendors/yoast.js' ), array( 'yoast-seo-post-scraper' ), WPB_VC_VERSION, true );
}
public function frontendEditorBuild() {
$vc_yoast_meta_box = $GLOBALS['wpseo_metabox'];
remove_action( 'admin_init', array(
$GLOBALS['wpseo_meta_columns'],
'setup_hooks',
) );
apply_filters( 'wpseo_use_page_analysis', false );
remove_action( 'add_meta_boxes', array(
$vc_yoast_meta_box,
'add_meta_box',
) );
remove_action( 'admin_enqueue_scripts', array(
$vc_yoast_meta_box,
'enqueue',
) );
remove_action( 'wp_insert_post', array(
$vc_yoast_meta_box,
'save_postdata',
) );
remove_action( 'edit_attachment', array(
$vc_yoast_meta_box,
'save_postdata',
) );
remove_action( 'add_attachment', array(
$vc_yoast_meta_box,
'save_postdata',
) );
remove_action( 'post_submitbox_start', array(
$vc_yoast_meta_box,
'publish_box',
) );
remove_action( 'admin_init', array(
$vc_yoast_meta_box,
'setup_page_analysis',
) );
remove_action( 'admin_init', array(
$vc_yoast_meta_box,
'translate_meta_boxes',
) );
remove_action( 'admin_footer', array(
$vc_yoast_meta_box,
'template_keyword_tab',
) );
}
/**
* @param $images
* @param $id
* @return array
*/
public function filterSitemapUrlImages( $images, $id ) {
if ( empty( $images ) ) {
$post = get_post( $id );
if ( $post && strpos( $post->post_content, '[vc_row' ) !== false ) {
preg_match_all( '/(?:image|images|ids|include)\=\"([^\"]+)\"/', $post->post_content, $matches );
foreach ( $matches[1] as $m ) {
$ids = explode( ',', $m );
foreach ( $ids as $id ) {
if ( (int) $id ) {
$images[] = array(
'src' => wp_get_attachment_url( $id ),
'title' => get_the_title( $id ),
);
}
}
}
}
}
return $images;
}
}
classes/vendors/plugins/class-vc-vendor-wpml.php 0000644 00000002412 15021217214 0016030 0 ustar 00 $sitepress->get_current_language() ), $link );
}
}
}
return $link;
}
/**
* @param $id
* @return mixed|void
*/
public function filterMediaId( $id ) {
return apply_filters( 'wpml_object_id', $id, 'post', true );
}
}
classes/vendors/plugins/class-vc-vendor-revslider.php 0000644 00000010235 15021217214 0017052 0 ustar 00 'rev_slider_vc',
'name' => esc_html__( 'Revolution Slider', 'js_composer' ),
'icon' => 'icon-wpb-revslider',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Place Revolution slider', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Widget title', 'js_composer' ),
'param_name' => 'title',
'description' => esc_html__( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Revolution Slider', 'js_composer' ),
'param_name' => 'alias',
'admin_label' => true,
'value' => $revsliders,
'save_always' => true,
'description' => esc_html__( 'Select your Revolution Slider.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
) );
}
/**
* Replaces id of revslider for frontend editor.
* @param $output
*
* @return string
* @since 4.3
*
*/
public function setId( $output ) {
return preg_replace( '/rev_slider_(\d+)_(\d+)/', 'rev_slider_$1_$2' . time() . '_' . self::$instanceIndex ++, $output );
}
/**
* Mapping settings for lean method.
*
* @param $tag
*
* @return array
* @since 4.9
*
*/
public function addShortcodeSettings( $tag ) {
/** @noinspection PhpUndefinedClassInspection */
$slider = new RevSlider();
$arrSliders = $slider->getArrSliders();
$revsliders = array();
if ( $arrSliders ) {
foreach ( $arrSliders as $slider ) {
/** @noinspection PhpUndefinedClassInspection */
/** @var RevSlider $slider */
$revsliders[ $slider->getTitle() ] = $slider->getAlias();
}
} else {
$revsliders[ esc_html__( 'No sliders found', 'js_composer' ) ] = 0;
}
// Add fixes for frontend editor to regenerate id
return array(
'base' => $tag,
'name' => esc_html__( 'Revolution Slider', 'js_composer' ),
'icon' => 'icon-wpb-revslider',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Place Revolution slider', 'js_composer' ),
'params' => array(
array(
'type' => 'textfield',
'heading' => esc_html__( 'Widget title', 'js_composer' ),
'param_name' => 'title',
'description' => esc_html__( 'Enter text used as widget title (Note: located above content element).', 'js_composer' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Revolution Slider', 'js_composer' ),
'param_name' => 'alias',
'admin_label' => true,
'value' => $revsliders,
'save_always' => true,
'description' => esc_html__( 'Select your Revolution Slider.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Extra class name', 'js_composer' ),
'param_name' => 'el_class',
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS.', 'js_composer' ),
),
),
);
}
}
classes/vendors/plugins/class-vc-vendor-contact-form7.php 0000644 00000003555 15021217214 0017545 0 ustar 00 post_title ] = $cform->ID;
}
} else {
$contact_forms[ esc_html__( 'No contact forms found', 'js_composer' ) ] = 0;
}
return array(
'base' => $tag,
'name' => esc_html__( 'Contact Form 7', 'js_composer' ),
'icon' => 'icon-wpb-contactform7',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Place Contact Form7', 'js_composer' ),
'params' => array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Select contact form', 'js_composer' ),
'param_name' => 'id',
'value' => $contact_forms,
'save_always' => true,
'description' => esc_html__( 'Choose previously created contact form from the drop down list.', 'js_composer' ),
),
array(
'type' => 'textfield',
'heading' => esc_html__( 'Search title', 'js_composer' ),
'param_name' => 'title',
'admin_label' => true,
'description' => esc_html__( 'Enter optional title to search if no ID selected or cannot find by ID.', 'js_composer' ),
),
),
);
}
}
classes/vendors/plugins/class-vc-vendor-ninja-forms.php 0000644 00000005752 15021217214 0017306 0 ustar 00 get_forms();
return array(
'base' => $tag,
'name' => esc_html__( 'Ninja Forms', 'js_composer' ),
'icon' => 'icon-wpb-ninjaforms',
'category' => esc_html__( 'Content', 'js_composer' ),
'description' => esc_html__( 'Place Ninja Form', 'js_composer' ),
'params' => array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Select ninja form', 'js_composer' ),
'param_name' => 'id',
'value' => $ninja_forms,
'save_always' => true,
'description' => esc_html__( 'Choose previously created ninja form from the drop down list.', 'js_composer' ),
),
),
);
}
/**
* @return array
*/
private function get_forms() {
$ninja_forms = array();
if ( $this->is_ninja_forms_three() ) {
$ninja_forms_data = ninja_forms_get_all_forms();
if ( ! empty( $ninja_forms_data ) ) {
// Fill array with Name=>Value(ID)
foreach ( $ninja_forms_data as $key => $value ) {
if ( is_array( $value ) ) {
$ninja_forms[ $value['name'] ] = $value['id'];
}
}
}
} else {
$ninja_forms_data = Ninja_Forms()->form()->get_forms();
if ( ! empty( $ninja_forms_data ) ) {
// Fill array with Name=>Value(ID)
foreach ( $ninja_forms_data as $form ) {
$ninja_forms[ $form->get_setting( 'title' ) ] = $form->get_id();
}
}
}
return $ninja_forms;
}
/**
* @return bool
*/
private function is_ninja_forms_three() {
return ( version_compare( get_option( 'ninja_forms_version', '0.0.0' ), '3.0', '<' ) || get_option( 'ninja_forms_load_deprecated', false ) );
}
/**
* @param $output
* @return mixed
*/
public function replaceIds( $output ) {
if ( is_null( self::$ninjaCount ) ) {
self::$ninjaCount = 1;
} else {
self::$ninjaCount ++;
}
$patterns = array(
'(nf-form-)(\d+)(-cont)',
'(nf-form-title-)(\d+)()',
'(nf-form-errors-)(\d+)()',
'(form.id\s*=\s*\')(\d+)(\')',
);
$time = time() . self::$ninjaCount . rand( 100, 999 );
foreach ( $patterns as $pattern ) {
$output = preg_replace( '/' . $pattern . '/', '${1}' . $time . '${3}', $output );
}
$replaceTo = <<