posttype/portfolio/cpt.php000066600000013471152143340070011760 0ustar00 __('Portfolio','nimbus'), 'singular_name' => __('Portfolio','nimbus'), 'add_new' => __('Add New','nimbus'), 'add_new_item' => __('Add New Project','nimbus'), 'edit_item' => __('Edit Project','nimbus'), 'new_item' => __('New Project','nimbus'), 'all_items' => __('All Projects','nimbus'), 'view_item' => __('View Project','nimbus'), 'search_items' => __('Search Project','nimbus'), 'not_found' => __('No projects found','nimbus'), 'not_found_in_trash' => __('No projects found in Trash','nimbus'), 'parent_item_colon' => __('','nimbus'), 'menu_name' => __('Portfolio','nimbus') ); $nb_portfolio_args = array( 'labels' => $nb_portfolio_labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => $portfolio_slug ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'menu_icon' => 'dashicons-analytics', 'supports' => array( 'title', 'editor', 'thumbnail', 'comments' ) ); register_post_type( 'portfolio', $nb_portfolio_args ); // Templates $nb_template_labels = array( 'name' => __('Template','nimbus'), 'singular_name' => __('Template','nimbus'), 'add_new' => __('Add New','nimbus'), 'add_new_item' => __('Add New Template','nimbus'), 'edit_item' => __('Edit Template','nimbus'), 'new_item' => __('New Template','nimbus'), 'all_items' => __('All Templates','nimbus'), 'view_item' => __('View Template','nimbus'), 'search_items' => __('Search Template','nimbus'), 'not_found' => __('No templates found','nimbus'), 'not_found_in_trash' => __('No templates found in Trash','nimbus'), 'parent_item_colon' => __('','nimbus'), 'menu_name' => __('Templates','nimbus') ); $nb_template_args = array( 'labels' => $nb_template_labels, 'public' => true, 'publicly_queryable' => false, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'nb_template' ), 'capability_type' => 'post', 'has_archive' => false, 'hierarchical' => false, 'menu_position' => null, 'menu_icon' => 'dashicons-layout', 'supports' => array( 'title', 'editor' ) ); register_post_type( 'nb_templates', $nb_template_args ); } add_action( 'init', 'nb_portfolio' ); /** * Register Portfolio Taxonomies */ function nb_portfolio_taxonomies() { $portfolio_cat_slug = nimbus_option_data('text_portfolio_category_slug') ? nimbus_option_data('text_portfolio_category_slug') : 'portfolio_categoy'; $portfolio_tag_slug = nimbus_option_data('text_portfolio_tag_slug') ? nimbus_option_data('text_portfolio_tag_slug') : 'portfolio_tag'; // Portfolio categories taxonomy $labels = array( 'name' => __( 'Categories', 'nimbus' ), 'singular_name' => __( 'Category', 'nimbus' ), 'search_items' => __( 'Search Categories', 'nimbus' ), 'all_items' => __( 'All Categories', 'nimbus' ), 'parent_item' => __( 'Parent Category', 'nimbus' ), 'parent_item_colon' => __( 'Parent Category:', 'nimbus' ), 'edit_item' => __( 'Edit Category', 'nimbus' ), 'update_item' => __( 'Update Category' , 'nimbus'), 'add_new_item' => __( 'Add New Category', 'nimbus' ), 'new_item_name' => __( 'New Category Name', 'nimbus' ), 'menu_name' => __( 'Category', 'nimbus' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => $portfolio_cat_slug ), ); register_taxonomy( 'portfolio_category', array( 'portfolio' ), $args ); // Portfolio tags taxonomy $labels = array( 'name' => __( 'Tags', 'nimbus' ), 'singular_name' => __( 'Tag', 'nimbus' ), 'search_items' => __( 'Search Tags', 'nimbus' ), 'all_items' => __( 'All Tags', 'nimbus' ), 'parent_item' => __( 'Parent Tag', 'nimbus' ), 'parent_item_colon' => __( 'Parent Tag:', 'nimbus' ), 'edit_item' => __( 'Edit Tag', 'nimbus' ), 'update_item' => __( 'Update Tag' , 'nimbus'), 'add_new_item' => __( 'Add New Tag', 'nimbus' ), 'new_item_name' => __( 'New Tag Name', 'nimbus' ), 'menu_name' => __( 'Tag', 'nimbus' ), ); $args = array( 'hierarchical' => false, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => $portfolio_tag_slug ), ); register_taxonomy( 'portfolio_tag', array( 'portfolio' ), $args ); } add_action( 'init', 'nb_portfolio_taxonomies', 0 );.DS_Store000066600000034004152143340070006233 0ustar00Bud100  talsvCblobmetalsvCblobrbplist00 F HXiconSize_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumn_useRelativeDates_viewOptionsVersion#@0 #(-27@^dateLastOpened BYdateAdded#@( "4<PYdw()+,1:;=>CLMOPV_`bcktuxyI 9K Wversion < >, Xcomments AC^dateLastOpened EYdateAdded#@(Tname#@0,>FZcnw  !"#/89;<AJKMNS\]_`foprs{Mapilsvpblob^bplist00 FGHB_useRelativeDat  @ @ @ @ metalsvpblobWbplist00 F $XiconSize_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumn_useRelativeDates_viewOptionsVersion#@0 #(,16;@Xcomments^dateLastOpened\dateModified[dateCreatedTsizeUlabelTkindWversionTname UindexUwidthYascendingWvisible,  $%  )%-. a 23 d 78 s <= K  B D  #@( "4<PYdw  #$%.0234=?ABCLNOPY[]^_hjlmnwy{|}HmetavSrnlongposttypedsclboolreduxbwspblobbplist00 ]ShowStatusBar[ShowSidebar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowPathbar _{{53, 54}, {1559, 946}} %1=I`myz{|}~reduxlsvCblobrbplist00 F H_viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumn_useRelativeDatesXiconSize #(-27@^dateLastOpened BYdateAdded#@( #@0.@H\ep   !"$%*3467<EFHIOXY[\dmnqr{IreduxlsvpblobWbplist00 E G_viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumn_useRelativeDatesXiconSize #'+05:?Xcomments^dateLastOpened\dateModified[dateCreatedTsizeUlabelTkindWversionTname UindexUwidthYascendingWvisible,   $  ($,- a 12 d 67 s ;< K @A  #@( #@0.@H\ep')+,-689:CEFGPRTUV_acdenprst}HreduxvSrnlong vc_templatesbwspblobbplist00 ]ShowStatusBar[ShowSidebar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowPathbar _{{52, 37}, {1559, 946}} %1=I`myz{|}~ vc_templateslsvCblobrbplist00 FG _viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumnXiconSize_useRelativeDates #(-27^dateLastOpened DYdateAdded#@(#@0 .@H\epy !&()*38:;<EKMNOX`bcdmvyz{I vc_templateslsvpblobWbplist00 EF _viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumnXiconSize_useRelativeDates #'+05:?Xcomments^dateLastOpened\dateModified[dateCreatedTsizeUlabelTkindWversionTname WvisibleUwidthYascendingUindex,  " % %* -/ a2 4d  7 9 s < >K @A  #@(#@0 .@H\epy'(*+-679:CDEGPQSTV_`bcenoqrt}~H vc_templatesvSrnlongapibwspblobbplist00 ]ShowStatusBar[ShowSidebar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowPathbar _{{52, 37}, {1559, 946}} %1=I`myz{|}~apidsclboolapilg1ScompapilsvCblobbplist00 IJKL_useRelativeDates_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumnXiconSize_viewOptionsVersion "&+05:?D  ZidentifierUwidthYascendingWvisibleTname UwidthYascendingWvisibleXubiquity# ! \dateModified %[dateCreated (* aTsize - / s Tkind 2 4d Ulabel 7 9K Wversion < >, Xcomments AC^dateLastOpened EYdateAdded#@(Tname#@0,>FZcnw  !"#/89;<AJKMNS\]_`foprs{Mapilsvpblob^bplist00 FGHB_useRelativeDates_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumnXiconSize_viewOptionsVersion #(-27 @  B%  #@(Tname#@0,>FZcnw&(*+,579:;DFHIJSUWXYbdfghqsuvwIapimoDDdutcapimodDdutcapiph1ScompapivSrnlongincbwspblobbplist00  ]ShowStatusBar[ShowSidebar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowPathbar  _{{83, 51}, {1559, 946}} %1=I`myz{|}~incdsclboolinclsvCblobrbplist00 FG _viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumnXiconSize_useRelativeDates #(-27@^dateLastOpened BYdateAdded#@(#@0 .@H\epy   !"$%*3467<EFHIOXY[\dmnqr{IinclsvpblobWbplist00 EF _viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumnXiconSize_useRelativeDates #'+05:?Xcomments^dateLastOpened\dateModified[dateCreatedTsizeUlabelTkindWversionTname UindexUwidthYascendingWvisible,   $  ($,- a 12 d 67 s ;< K @A  #@(#@0 .@H\epy')+,-689:CEFGPRTUV_acdenprst}HincvSrnlongmetabwspblobbplist00 ]ShowStatusBar[ShowSidebar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowPathbar _{{145, 3}, {1559, 946}} %1=I`myz{|}~metadsclbool % %* -/ a2 4d  7 9 s < >K @A  #@(#@0 .@H\epy'(*+-679:CDEGPQSTV_`bcenoqrt}~H vc_templatesvSrnlong0 E  DSDB `8@ @ @ $%)* a ./ d 34 s 89 K  > @  B%  #@(Tname#@0,>FZcnw&(*+,579:;DFHIJSUWXYbdfghqsuvwIapimoDDdutcapimodDdutcapiph1ScompapivSrnlongincbwspblobbplist00  ]ShowStatusBar[ShowSidebar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowPathbar  _{{83, 51}, {1559, 946}} %1=I`myz{|}~incdsclboolinclsvCblobrbplist00 FG _viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextmegamenus.php000066600000005501152143340070007242 0ustar00\n"; $output .= '
'; $output .= $contents; $output .= "
\n"; $output .= "\n"; } $post = $old_post; setup_postdata($post); } } return $output; } static function edit_nav_menu_walker($walker_classname) { include_once(CF_MEGA_MENUS_DIR.'inc/menu.php'); return 'CF_Mega_Menu_Walker_Nav_Menu_Edit'; } static function save_mega_menu_setting($menu_id, $menu_item_id) { $mega_menu_id = false; if (!empty($_REQUEST['menu-item-mega-menu']) && !empty($_REQUEST['menu-item-mega-menu'][$menu_item_id])) { $mega_menu_id = intval($_REQUEST['menu-item-mega-menu'][$menu_item_id]); } if (!empty($mega_menu_id)) { update_post_meta($menu_item_id, '_cf_mega_menu_id', $mega_menu_id); } else { delete_post_meta($menu_item_id, '_cf_mega_menu_id'); } } static function add_carrington_build_support($post_types) { return array_merge($post_types, array('templates')); } } CF_Mega_Menus::add_hooks();api/config.php000066600000001041152143340070007272 0ustar00apps.twitter.com
'; exit; } // If count of tweets is not fall back to default setting $username = filter_input(INPUT_GET, 'username', FILTER_SANITIZE_SPECIAL_CHARS); $number = filter_input(INPUT_GET, 'count', FILTER_SANITIZE_NUMBER_INT); $exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS); $list_slug = filter_input(INPUT_GET, 'list', FILTER_SANITIZE_SPECIAL_CHARS); $hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS); if(CACHE_ENABLED) { // Generate cache key from query data $cache_key = md5( var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT ); // Remove old files from cache dir $cache_path = dirname(__FILE__) . '/cache/'; foreach (glob($cache_path . '*') as $file) { if (filemtime($file) < time() - CACHE_LIFETIME) { unlink($file); } } // If cache file exists - return it if(file_exists($cache_path . $cache_key)) { header('Content-Type: application/json'); echo file_get_contents($cache_path . $cache_key); exit; } } /** * Gets connection with user Twitter account * @param String $cons_key Consumer Key * @param String $cons_secret Consumer Secret Key * @param String $oauth_token Access Token * @param String $oauth_secret Access Secrete Token * @return Object Twitter Session */ function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret) { $connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret); return $connection; } // Connect $connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET); // Get Tweets if (!empty($list_slug)) { $params = array( 'owner_screen_name' => $username, 'slug' => $list_slug, 'per_page' => $number ); $url = '/lists/statuses'; } else if($hashtag) { $params = array( 'count' => $number, 'q' => '#'.$hashtag ); $url = '/search/tweets'; } else { $params = array( 'count' => $number, 'exclude_replies' => $exclude_replies, 'screen_name' => $username ); $url = '/statuses/user_timeline'; } $tweets = $connection->get($url, $params); // Return JSON Object header('Content-Type: application/json'); $tweets = json_encode($tweets); if(CACHE_ENABLED) file_put_contents($cache_path . $cache_key, $tweets); echo $tweets; api/twitteroauth/OAuth.php000066600000063635152143340070011631 0ustar00key = $key; $this->secret = $secret; $this->callback_url = $callback_url; } function __toString() { return "OAuthConsumer[key=$this->key,secret=$this->secret]"; } } class OAuthToken { // access tokens and request tokens public $key; public $secret; /** * key = the token * secret = the token secret */ function __construct($key, $secret) { $this->key = $key; $this->secret = $secret; } /** * generates the basic string serialization of a token that a server * would respond to request_token and access_token calls with */ function to_string() { return "oauth_token=" . OAuthUtil::urlencode_rfc3986($this->key) . "&oauth_token_secret=" . OAuthUtil::urlencode_rfc3986($this->secret); } function __toString() { return $this->to_string(); } } /** * A class for implementing a Signature Method * See section 9 ("Signing Requests") in the spec */ abstract class OAuthSignatureMethod { /** * Needs to return the name of the Signature Method (ie HMAC-SHA1) * @return string */ abstract public function get_name(); /** * Build up the signature * NOTE: The output of this function MUST NOT be urlencoded. * the encoding is handled in OAuthRequest when the final * request is serialized * @param OAuthRequest $request * @param OAuthConsumer $consumer * @param OAuthToken $token * @return string */ abstract public function build_signature($request, $consumer, $token); /** * Verifies that a given signature is correct * @param OAuthRequest $request * @param OAuthConsumer $consumer * @param OAuthToken $token * @param string $signature * @return bool */ public function check_signature($request, $consumer, $token, $signature) { $built = $this->build_signature($request, $consumer, $token); return $built == $signature; } } /** * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104] * where the Signature Base String is the text and the key is the concatenated values (each first * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&' * character (ASCII code 38) even if empty. * - Chapter 9.2 ("HMAC-SHA1") */ class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod { function get_name() { return "HMAC-SHA1"; } public function build_signature($request, $consumer, $token) { $base_string = $request->get_signature_base_string(); $request->base_string = $base_string; $key_parts = array( $consumer->secret, ($token) ? $token->secret : "" ); $key_parts = OAuthUtil::urlencode_rfc3986($key_parts); $key = implode('&', $key_parts); return base64_encode(hash_hmac('sha1', $base_string, $key, true)); } } /** * The PLAINTEXT method does not provide any security protection and SHOULD only be used * over a secure channel such as HTTPS. It does not use the Signature Base String. * - Chapter 9.4 ("PLAINTEXT") */ class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod { public function get_name() { return "PLAINTEXT"; } /** * oauth_signature is set to the concatenated encoded values of the Consumer Secret and * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is * empty. The result MUST be encoded again. * - Chapter 9.4.1 ("Generating Signatures") * * Please note that the second encoding MUST NOT happen in the SignatureMethod, as * OAuthRequest handles this! */ public function build_signature($request, $consumer, $token) { $key_parts = array( $consumer->secret, ($token) ? $token->secret : "" ); $key_parts = OAuthUtil::urlencode_rfc3986($key_parts); $key = implode('&', $key_parts); $request->base_string = $key; return $key; } } /** * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a * verified way to the Service Provider, in a manner which is beyond the scope of this * specification. * - Chapter 9.3 ("RSA-SHA1") */ abstract class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod { public function get_name() { return "RSA-SHA1"; } // Up to the SP to implement this lookup of keys. Possible ideas are: // (1) do a lookup in a table of trusted certs keyed off of consumer // (2) fetch via http using a url provided by the requester // (3) some sort of specific discovery code based on request // // Either way should return a string representation of the certificate protected abstract function fetch_public_cert(&$request); // Up to the SP to implement this lookup of keys. Possible ideas are: // (1) do a lookup in a table of trusted certs keyed off of consumer // // Either way should return a string representation of the certificate protected abstract function fetch_private_cert(&$request); public function build_signature($request, $consumer, $token) { $base_string = $request->get_signature_base_string(); $request->base_string = $base_string; // Fetch the private key cert based on the request $cert = $this->fetch_private_cert($request); // Pull the private key ID from the certificate $privatekeyid = openssl_get_privatekey($cert); // Sign using the key $ok = openssl_sign($base_string, $signature, $privatekeyid); // Release the key resource openssl_free_key($privatekeyid); return base64_encode($signature); } public function check_signature($request, $consumer, $token, $signature) { $decoded_sig = base64_decode($signature); $base_string = $request->get_signature_base_string(); // Fetch the public key cert based on the request $cert = $this->fetch_public_cert($request); // Pull the public key ID from the certificate $publickeyid = openssl_get_publickey($cert); // Check the computed signature against the one passed in the query $ok = openssl_verify($base_string, $decoded_sig, $publickeyid); // Release the key resource openssl_free_key($publickeyid); return $ok == 1; } } class OAuthRequest { private $parameters; private $http_method; private $http_url; // for debug purposes public $base_string; public static $version = '1.0'; public static $POST_INPUT = 'php://input'; function __construct($http_method, $http_url, $parameters=NULL) { @$parameters or $parameters = array(); $parameters = array_merge( OAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters); $this->parameters = $parameters; $this->http_method = $http_method; $this->http_url = $http_url; } /** * attempt to build up a request from what was passed to the server */ public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) { $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https'; @$http_url or $http_url = $scheme . '://' . $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI']; @$http_method or $http_method = $_SERVER['REQUEST_METHOD']; // We weren't handed any parameters, so let's find the ones relevant to // this request. // If you run XML-RPC or similar you should use this to provide your own // parsed parameter-list if (!$parameters) { // Find request headers $request_headers = OAuthUtil::get_headers(); // Parse the query-string to find GET parameters $parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']); // It's a POST request of the proper content-type, so parse POST // parameters and add those overriding any duplicates from GET if ($http_method == "POST" && @strstr($request_headers["Content-Type"], "application/x-www-form-urlencoded") ) { $post_data = OAuthUtil::parse_parameters( file_get_contents(self::$POST_INPUT) ); $parameters = array_merge($parameters, $post_data); } // We have a Authorization-header with OAuth data. Parse the header // and add those overriding any duplicates from GET or POST if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") { $header_parameters = OAuthUtil::split_header( $request_headers['Authorization'] ); $parameters = array_merge($parameters, $header_parameters); } } return new OAuthRequest($http_method, $http_url, $parameters); } /** * pretty much a helper function to set up the request */ public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) { @$parameters or $parameters = array(); $defaults = array("oauth_version" => OAuthRequest::$version, "oauth_nonce" => OAuthRequest::generate_nonce(), "oauth_timestamp" => OAuthRequest::generate_timestamp(), "oauth_consumer_key" => $consumer->key); if ($token) $defaults['oauth_token'] = $token->key; $parameters = array_merge($defaults, $parameters); return new OAuthRequest($http_method, $http_url, $parameters); } public function set_parameter($name, $value, $allow_duplicates = true) { if ($allow_duplicates && isset($this->parameters[$name])) { // We have already added parameter(s) with this name, so add to the list if (is_scalar($this->parameters[$name])) { // This is the first duplicate, so transform scalar (string) // into an array so we can add the duplicates $this->parameters[$name] = array($this->parameters[$name]); } $this->parameters[$name][] = $value; } else { $this->parameters[$name] = $value; } } public function get_parameter($name) { return isset($this->parameters[$name]) ? $this->parameters[$name] : null; } public function get_parameters() { return $this->parameters; } public function unset_parameter($name) { unset($this->parameters[$name]); } /** * The request parameters, sorted and concatenated into a normalized string. * @return string */ public function get_signable_parameters() { // Grab all parameters $params = $this->parameters; // Remove oauth_signature if present // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.") if (isset($params['oauth_signature'])) { unset($params['oauth_signature']); } return OAuthUtil::build_http_query($params); } /** * Returns the base string of this request * * The base string defined as the method, the url * and the parameters (normalized), each urlencoded * and the concated with &. */ public function get_signature_base_string() { $parts = array( $this->get_normalized_http_method(), $this->get_normalized_http_url(), $this->get_signable_parameters() ); $parts = OAuthUtil::urlencode_rfc3986($parts); return implode('&', $parts); } /** * just uppercases the http method */ public function get_normalized_http_method() { return strtoupper($this->http_method); } /** * parses the url and rebuilds it to be * scheme://host/path */ public function get_normalized_http_url() { $parts = parse_url($this->http_url); $port = @$parts['port']; $scheme = $parts['scheme']; $host = $parts['host']; $path = @$parts['path']; $port or $port = ($scheme == 'https') ? '443' : '80'; if (($scheme == 'https' && $port != '443') || ($scheme == 'http' && $port != '80')) { $host = "$host:$port"; } return "$scheme://$host$path"; } /** * builds a url usable for a GET request */ public function to_url() { $post_data = $this->to_postdata(); $out = $this->get_normalized_http_url(); if ($post_data) { $out .= '?'.$post_data; } return $out; } /** * builds the data one would send in a POST request */ public function to_postdata() { return OAuthUtil::build_http_query($this->parameters); } /** * builds the Authorization: header */ public function to_header($realm=null) { $first = true; if($realm) { $out = 'Authorization: OAuth realm="' . OAuthUtil::urlencode_rfc3986($realm) . '"'; $first = false; } else $out = 'Authorization: OAuth'; $total = array(); foreach ($this->parameters as $k => $v) { if (substr($k, 0, 5) != "oauth") continue; if (is_array($v)) { throw new OAuthException('Arrays not supported in headers'); } $out .= ($first) ? ' ' : ','; $out .= OAuthUtil::urlencode_rfc3986($k) . '="' . OAuthUtil::urlencode_rfc3986($v) . '"'; $first = false; } return $out; } public function __toString() { return $this->to_url(); } public function sign_request($signature_method, $consumer, $token) { $this->set_parameter( "oauth_signature_method", $signature_method->get_name(), false ); $signature = $this->build_signature($signature_method, $consumer, $token); $this->set_parameter("oauth_signature", $signature, false); } public function build_signature($signature_method, $consumer, $token) { $signature = $signature_method->build_signature($this, $consumer, $token); return $signature; } /** * util function: current timestamp */ private static function generate_timestamp() { return time(); } /** * util function: current nonce */ private static function generate_nonce() { $mt = microtime(); $rand = mt_rand(); return md5($mt . $rand); // md5s look nicer than numbers } } class OAuthServer { protected $timestamp_threshold = 300; // in seconds, five minutes protected $version = '1.0'; // hi blaine protected $signature_methods = array(); protected $data_store; function __construct($data_store) { $this->data_store = $data_store; } public function add_signature_method($signature_method) { $this->signature_methods[$signature_method->get_name()] = $signature_method; } // high level functions /** * process a request_token request * returns the request token on success */ public function fetch_request_token(&$request) { $this->get_version($request); $consumer = $this->get_consumer($request); // no token required for the initial token request $token = NULL; $this->check_signature($request, $consumer, $token); // Rev A change $callback = $request->get_parameter('oauth_callback'); $new_token = $this->data_store->new_request_token($consumer, $callback); return $new_token; } /** * process an access_token request * returns the access token on success */ public function fetch_access_token(&$request) { $this->get_version($request); $consumer = $this->get_consumer($request); // requires authorized request token $token = $this->get_token($request, $consumer, "request"); $this->check_signature($request, $consumer, $token); // Rev A change $verifier = $request->get_parameter('oauth_verifier'); $new_token = $this->data_store->new_access_token($token, $consumer, $verifier); return $new_token; } /** * verify an api call, checks all the parameters */ public function verify_request(&$request) { $this->get_version($request); $consumer = $this->get_consumer($request); $token = $this->get_token($request, $consumer, "access"); $this->check_signature($request, $consumer, $token); return array($consumer, $token); } // Internals from here /** * version 1 */ private function get_version(&$request) { $version = $request->get_parameter("oauth_version"); if (!$version) { // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present. // Chapter 7.0 ("Accessing Protected Ressources") $version = '1.0'; } if ($version !== $this->version) { throw new OAuthException("OAuth version '$version' not supported"); } return $version; } /** * figure out the signature with some defaults */ private function get_signature_method(&$request) { $signature_method = @$request->get_parameter("oauth_signature_method"); if (!$signature_method) { // According to chapter 7 ("Accessing Protected Ressources") the signature-method // parameter is required, and we can't just fallback to PLAINTEXT throw new OAuthException('No signature method parameter. This parameter is required'); } if (!in_array($signature_method, array_keys($this->signature_methods))) { throw new OAuthException( "Signature method '$signature_method' not supported " . "try one of the following: " . implode(", ", array_keys($this->signature_methods)) ); } return $this->signature_methods[$signature_method]; } /** * try to find the consumer for the provided request's consumer key */ private function get_consumer(&$request) { $consumer_key = @$request->get_parameter("oauth_consumer_key"); if (!$consumer_key) { throw new OAuthException("Invalid consumer key"); } $consumer = $this->data_store->lookup_consumer($consumer_key); if (!$consumer) { throw new OAuthException("Invalid consumer"); } return $consumer; } /** * try to find the token for the provided request's token key */ private function get_token(&$request, $consumer, $token_type="access") { $token_field = @$request->get_parameter('oauth_token'); $token = $this->data_store->lookup_token( $consumer, $token_type, $token_field ); if (!$token) { throw new OAuthException("Invalid $token_type token: $token_field"); } return $token; } /** * all-in-one function to check the signature on a request * should guess the signature method appropriately */ private function check_signature(&$request, $consumer, $token) { // this should probably be in a different method $timestamp = @$request->get_parameter('oauth_timestamp'); $nonce = @$request->get_parameter('oauth_nonce'); $this->check_timestamp($timestamp); $this->check_nonce($consumer, $token, $nonce, $timestamp); $signature_method = $this->get_signature_method($request); $signature = $request->get_parameter('oauth_signature'); $valid_sig = $signature_method->check_signature( $request, $consumer, $token, $signature ); if (!$valid_sig) { throw new OAuthException("Invalid signature"); } } /** * check that the timestamp is new enough */ private function check_timestamp($timestamp) { if( ! $timestamp ) throw new OAuthException( 'Missing timestamp parameter. The parameter is required' ); // verify that timestamp is recentish $now = time(); if (abs($now - $timestamp) > $this->timestamp_threshold) { throw new OAuthException( "Expired timestamp, yours $timestamp, ours $now" ); } } /** * check that the nonce is not repeated */ private function check_nonce($consumer, $token, $nonce, $timestamp) { if( ! $nonce ) throw new OAuthException( 'Missing nonce parameter. The parameter is required' ); // verify that the nonce is uniqueish $found = $this->data_store->lookup_nonce( $consumer, $token, $nonce, $timestamp ); if ($found) { throw new OAuthException("Nonce already used: $nonce"); } } } class OAuthDataStore { function lookup_consumer($consumer_key) { // implement me } function lookup_token($consumer, $token_type, $token) { // implement me } function lookup_nonce($consumer, $token, $nonce, $timestamp) { // implement me } function new_request_token($consumer, $callback = null) { // return a new token attached to this consumer } function new_access_token($token, $consumer, $verifier = null) { // return a new access token attached to this consumer // for the user associated with this token if the request token // is authorized // should also invalidate the request token } } class OAuthUtil { public static function urlencode_rfc3986($input) { if (is_array($input)) { return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input); } else if (is_scalar($input)) { return str_replace( '+', ' ', str_replace('%7E', '~', rawurlencode($input)) ); } else { return ''; } } // This decode function isn't taking into consideration the above // modifications to the encoding process. However, this method doesn't // seem to be used anywhere so leaving it as is. public static function urldecode_rfc3986($string) { return urldecode($string); } // Utility function for turning the Authorization: header into // parameters, has to do some unescaping // Can filter out any non-oauth parameters if needed (default behaviour) public static function split_header($header, $only_allow_oauth_parameters = true) { $pattern = '/(([-_a-z]*)=("([^"]*)"|([^,]*)),?)/'; $offset = 0; $params = array(); while (preg_match($pattern, $header, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) { $match = $matches[0]; $header_name = $matches[2][0]; $header_content = (isset($matches[5])) ? $matches[5][0] : $matches[4][0]; if (preg_match('/^oauth_/', $header_name) || !$only_allow_oauth_parameters) { $params[$header_name] = OAuthUtil::urldecode_rfc3986($header_content); } $offset = $match[1] + strlen($match[0]); } if (isset($params['realm'])) { unset($params['realm']); } return $params; } // helper to try to sort out headers for people who aren't running apache public static function get_headers() { if (function_exists('apache_request_headers')) { // we need this to get the actual Authorization: header // because apache tends to tell us it doesn't exist $headers = apache_request_headers(); // sanitize the output of apache_request_headers because // we always want the keys to be Cased-Like-This and arh() // returns the headers in the same case as they are in the // request $out = array(); foreach( $headers AS $key => $value ) { $key = str_replace( " ", "-", ucwords(strtolower(str_replace("-", " ", $key))) ); $out[$key] = $value; } } else { // otherwise we don't have apache and are just going to have to hope // that $_SERVER actually contains what we need $out = array(); if( isset($_SERVER['CONTENT_TYPE']) ) $out['Content-Type'] = $_SERVER['CONTENT_TYPE']; if( isset($_ENV['CONTENT_TYPE']) ) $out['Content-Type'] = $_ENV['CONTENT_TYPE']; foreach ($_SERVER as $key => $value) { if (substr($key, 0, 5) == "HTTP_") { // this is chaos, basically it is just there to capitalize the first // letter of every word that is not an initial HTTP and strip HTTP // code from przemek $key = str_replace( " ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5)))) ); $out[$key] = $value; } } } return $out; } // This function takes a input like a=b&a=c&d=e and returns the parsed // parameters like this // array('a' => array('b','c'), 'd' => 'e') public static function parse_parameters( $input ) { if (!isset($input) || !$input) return array(); $pairs = explode('&', $input); $parsed_parameters = array(); foreach ($pairs as $pair) { $split = explode('=', $pair, 2); $parameter = OAuthUtil::urldecode_rfc3986($split[0]); $value = isset($split[1]) ? OAuthUtil::urldecode_rfc3986($split[1]) : ''; if (isset($parsed_parameters[$parameter])) { // We have already recieved parameter(s) with this name, so add to the list // of parameters with this name if (is_scalar($parsed_parameters[$parameter])) { // This is the first duplicate, so transform scalar (string) into an array // so we can add the duplicates $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]); } $parsed_parameters[$parameter][] = $value; } else { $parsed_parameters[$parameter] = $value; } } return $parsed_parameters; } public static function build_http_query($params) { if (!$params) return ''; // Urlencode both keys and values $keys = OAuthUtil::urlencode_rfc3986(array_keys($params)); $values = OAuthUtil::urlencode_rfc3986(array_values($params)); $params = array_combine($keys, $values); // Parameters are sorted by name, using lexicographical byte value ordering. // Ref: Spec: 9.1.1 (1) uksort($params, 'strcmp'); $pairs = array(); foreach ($params as $parameter => $value) { if (is_array($value)) { // If two or more parameters share the same name, they are sorted by their value // Ref: Spec: 9.1.1 (1) natsort($value); foreach ($value as $duplicate_value) { $pairs[] = $parameter . '=' . $duplicate_value; } } else { $pairs[] = $parameter . '=' . $value; } } // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61) // Each name-value pair is separated by an '&' character (ASCII code 38) return implode('&', $pairs); } } api/twitteroauth/twitteroauth.php000066600000016750152143340070013350 0ustar00http_status; } function lastAPICall() { return $this->last_api_call; } /** * construct TwitterOAuth object */ function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) { $this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1(); $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret); if (!empty($oauth_token) && !empty($oauth_token_secret)) { $this->token = new OAuthConsumer($oauth_token, $oauth_token_secret); } else { $this->token = NULL; } } /** * Get a request_token from Twitter * * @returns a key/value array containing oauth_token and oauth_token_secret */ function getRequestToken($oauth_callback) { $parameters = array(); $parameters['oauth_callback'] = $oauth_callback; $request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * Get the authorize URL * * @returns a string */ function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) { if (is_array($token)) { $token = $token['oauth_token']; } if (empty($sign_in_with_twitter)) { return $this->authorizeURL() . "?oauth_token={$token}"; } else { return $this->authenticateURL() . "?oauth_token={$token}"; } } /** * Exchange request token and secret for an access token and * secret, to sign API calls. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham") */ function getAccessToken($oauth_verifier) { $parameters = array(); $parameters['oauth_verifier'] = $oauth_verifier; $request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * One time exchange of username and password for access token and secret. * * @returns array("oauth_token" => "the-access-token", * "oauth_token_secret" => "the-access-secret", * "user_id" => "9436992", * "screen_name" => "abraham", * "x_auth_expires" => "0") */ function getXAuthToken($username, $password) { $parameters = array(); $parameters['x_auth_username'] = $username; $parameters['x_auth_password'] = $password; $parameters['x_auth_mode'] = 'client_auth'; $request = $this->oAuthRequest($this->accessTokenURL(), 'POST', $parameters); $token = OAuthUtil::parse_parameters($request); $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); return $token; } /** * GET wrapper for oAuthRequest. */ function get($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'GET', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * POST wrapper for oAuthRequest. */ function post($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'POST', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * DELETE wrapper for oAuthReqeust. */ function delete($url, $parameters = array()) { $response = $this->oAuthRequest($url, 'DELETE', $parameters); if ($this->format === 'json' && $this->decode_json) { return json_decode($response); } return $response; } /** * Format and sign an OAuth / API request */ function oAuthRequest($url, $method, $parameters) { if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) { $url = "{$this->host}{$url}.{$this->format}"; } $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters); $request->sign_request($this->sha1_method, $this->consumer, $this->token); switch ($method) { case 'GET': return $this->http($request->to_url(), 'GET'); default: return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata()); } } /** * Make an HTTP request * * @return API results */ function http($url, $method, $postfields = NULL) { $this->http_info = array(); $ci = curl_init(); /* Curl settings */ curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent); curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout); curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout); curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader')); curl_setopt($ci, CURLOPT_HEADER, FALSE); switch ($method) { case 'POST': curl_setopt($ci, CURLOPT_POST, TRUE); if (!empty($postfields)) { curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); } break; case 'DELETE': curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE'); if (!empty($postfields)) { $url = "{$url}?{$postfields}"; } } curl_setopt($ci, CURLOPT_URL, $url); $response = curl_exec($ci); $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); $this->url = $url; curl_close ($ci); return $response; } /** * Get the header info to store. */ function getHeader($ch, $header) { $i = strpos($header, ':'); if (!empty($i)) { $key = str_replace('-', '_', strtolower(substr($header, 0, $i))); $value = trim(substr($header, $i + 2)); $this->http_header[$key] = $value; } return strlen($header); } } api/.DS_Store000066600000014004152143340070007002 0ustar00Bud1teroau twitteroauthdsclbool  @ @ @ @ EDSDB ` @ @ @index.php000066600000000000152143340070006355 0ustar00inc/theme_pagebuilder.php000066600000220706152143340070011505 0ustar00 'dripicons-alarm'), array( 'dripicons-align-center' => 'dripicons-align-center'), array( 'dripicons-align-justify' => 'dripicons-align-justify'), array( 'dripicons-align-left' => 'dripicons-align-left'), array( 'dripicons-align-right' => 'dripicons-align-right'), array( 'dripicons-anchor' => 'dripicons-anchor'), array( 'dripicons-archive' => 'dripicons-archive'), array( 'dripicons-arrow-down' => 'dripicons-arrow-down'), array( 'dripicons-arrow-left' => 'dripicons-arrow-left'), array( 'dripicons-arrow-right' => 'dripicons-arrow-right'), array( 'dripicons-arrow-thin-down' => 'dripicons-arrow-thin-down'), array( 'dripicons-arrow-thin-left' => 'dripicons-arrow-thin-left'), array( 'dripicons-arrow-thin-right' => 'dripicons-arrow-thin-right'), array( 'dripicons-arrow-thin-up' => 'dripicons-arrow-thin-up'), array( 'dripicons-arrow-up' => 'dripicons-arrow-up'), array( 'dripicons-article' => 'dripicons-article'), array( 'dripicons-backspace' => 'dripicons-backspace'), array( 'dripicons-basket' => 'dripicons-basket'), array( 'dripicons-basketball' => 'dripicons-basketball'), array( 'dripicons-battery-empty' => 'dripicons-battery-empty'), array( 'dripicons-battery-full' => 'dripicons-battery-full'), array( 'dripicons-battery-low' => 'dripicons-battery-low'), array( 'dripicons-battery-medium' => 'dripicons-battery-medium'), array( 'dripicons-bell' => 'dripicons-bell'), array( 'dripicons-blog' => 'dripicons-blog'), array( 'dripicons-bluetooth' => 'dripicons-bluetooth'), array( 'dripicons-bold' => 'dripicons-bold'), array( 'dripicons-bookmark' => 'dripicons-bookmark'), array( 'dripicons-bookmarks' => 'dripicons-bookmarks'), array( 'dripicons-box' => 'dripicons-box'), array( 'dripicons-briefcase' => 'dripicons-briefcase'), array( 'dripicons-brightness-low' => 'dripicons-brightness-low'), array( 'dripicons-brightness-max' => 'dripicons-brightness-max'), array( 'dripicons-brightness-medium' => 'dripicons-brightness-medium'), array( 'dripicons-broadcast' => 'dripicons-broadcast'), array( 'dripicons-browser' => 'dripicons-browser'), array( 'dripicons-browser-upload' => 'dripicons-browser-upload'), array( 'dripicons-brush' => 'dripicons-brush'), array( 'dripicons-calendar' => 'dripicons-calendar'), array( 'dripicons-camcorder' => 'dripicons-camcorder'), array( 'dripicons-camera' => 'dripicons-camera'), array( 'dripicons-card' => 'dripicons-card'), array( 'dripicons-cart' => 'dripicons-cart'), array( 'dripicons-checklist' => 'dripicons-checklist'), array( 'dripicons-checkmark' => 'dripicons-checkmark'), array( 'dripicons-chevron-down' => 'dripicons-chevron-down'), array( 'dripicons-chevron-left' => 'dripicons-chevron-left'), array( 'dripicons-chevron-right' => 'dripicons-chevron-right'), array( 'dripicons-chevron-up' => 'dripicons-chevron-up'), array( 'dripicons-clipboard' => 'dripicons-clipboard'), array( 'dripicons-clock' => 'dripicons-clock'), array( 'dripicons-clockwise' => 'dripicons-clockwise'), array( 'dripicons-cloud' => 'dripicons-cloud'), array( 'dripicons-cloud-download' => 'dripicons-cloud-download'), array( 'dripicons-cloud-upload' => 'dripicons-cloud-upload'), array( 'dripicons-code' => 'dripicons-code'), array( 'dripicons-contract' => 'dripicons-contract'), array( 'dripicons-contract-2' => 'dripicons-contract-2'), array( 'dripicons-conversation' => 'dripicons-conversation'), array( 'dripicons-copy' => 'dripicons-copy'), array( 'dripicons-crop' => 'dripicons-crop'), array( 'dripicons-cross' => 'dripicons-cross'), array( 'dripicons-crosshair' => 'dripicons-crosshair'), array( 'dripicons-cutlery' => 'dripicons-cutlery'), array( 'dripicons-device-desktop' => 'dripicons-device-desktop'), array( 'dripicons-device-mobile' => 'dripicons-device-mobile'), array( 'dripicons-device-tablet' => 'dripicons-device-tablet'), array( 'dripicons-direction' => 'dripicons-direction'), array( 'dripicons-disc' => 'dripicons-disc'), array( 'dripicons-document' => 'dripicons-document'), array( 'dripicons-document-delete' => 'dripicons-document-delete'), array( 'dripicons-document-edit' => 'dripicons-document-edit'), array( 'dripicons-document-new' => 'dripicons-document-new'), array( 'dripicons-document-remove' => 'dripicons-document-remove'), array( 'dripicons-dot' => 'dripicons-dot'), array( 'dripicons-dots-2' => 'dripicons-dots-2'), array( 'dripicons-dots-3' => 'dripicons-dots-3'), array( 'dripicons-download' => 'dripicons-download'), array( 'dripicons-duplicate' => 'dripicons-duplicate'), array( 'dripicons-enter' => 'dripicons-enter'), array( 'dripicons-exit' => 'dripicons-exit'), array( 'dripicons-expand' => 'dripicons-expand'), array( 'dripicons-expand-2' => 'dripicons-expand-2'), array( 'dripicons-experiment' => 'dripicons-experiment'), array( 'dripicons-export' => 'dripicons-export'), array( 'dripicons-feed' => 'dripicons-feed'), array( 'dripicons-flag' => 'dripicons-flag'), array( 'dripicons-flashlight' => 'dripicons-flashlight'), array( 'dripicons-folder' => 'dripicons-folder'), array( 'dripicons-folder-open' => 'dripicons-folder-open'), array( 'dripicons-forward' => 'dripicons-forward'), array( 'dripicons-gaming' => 'dripicons-gaming'), array( 'dripicons-gear' => 'dripicons-gear'), array( 'dripicons-graduation' => 'dripicons-graduation'), array( 'dripicons-graph-bar' => 'dripicons-graph-bar'), array( 'dripicons-graph-line' => 'dripicons-graph-line'), array( 'dripicons-graph-pie' => 'dripicons-graph-pie'), array( 'dripicons-headset' => 'dripicons-headset'), array( 'dripicons-heart' => 'dripicons-heart'), array( 'dripicons-help' => 'dripicons-help'), array( 'dripicons-home' => 'dripicons-home'), array( 'dripicons-hourglass' => 'dripicons-hourglass'), array( 'dripicons-inbox' => 'dripicons-inbox'), array( 'dripicons-information' => 'dripicons-information'), array( 'dripicons-italic' => 'dripicons-italic'), array( 'dripicons-jewel' => 'dripicons-jewel'), array( 'dripicons-lifting' => 'dripicons-lifting'), array( 'dripicons-lightbulb' => 'dripicons-lightbulb'), array( 'dripicons-link' => 'dripicons-link'), array( 'dripicons-link-broken' => 'dripicons-link-broken'), array( 'dripicons-list' => 'dripicons-list'), array( 'dripicons-loading' => 'dripicons-loading'), array( 'dripicons-location' => 'dripicons-location'), array( 'dripicons-lock' => 'dripicons-lock'), array( 'dripicons-lock-open' => 'dripicons-lock-open'), array( 'dripicons-mail' => 'dripicons-mail'), array( 'dripicons-map' => 'dripicons-map'), array( 'dripicons-media-loop' => 'dripicons-media-loop'), array( 'dripicons-media-next' => 'dripicons-media-next'), array( 'dripicons-media-pause' => 'dripicons-media-pause'), array( 'dripicons-media-play' => 'dripicons-media-play'), array( 'dripicons-media-previous' => 'dripicons-media-previous'), array( 'dripicons-media-record' => 'dripicons-media-record'), array( 'dripicons-media-shuffle' => 'dripicons-media-shuffle'), array( 'dripicons-media-stop' => 'dripicons-media-stop'), array( 'dripicons-medical' => 'dripicons-medical'), array( 'dripicons-menu' => 'dripicons-menu'), array( 'dripicons-message' => 'dripicons-message'), array( 'dripicons-meter' => 'dripicons-meter'), array( 'dripicons-microphone' => 'dripicons-microphone'), array( 'dripicons-minus' => 'dripicons-minus'), array( 'dripicons-monitor' => 'dripicons-monitor'), array( 'dripicons-move' => 'dripicons-move'), array( 'dripicons-music' => 'dripicons-music'), array( 'dripicons-network-1' => 'dripicons-network-1'), array( 'dripicons-network-2' => 'dripicons-network-2'), array( 'dripicons-network-3' => 'dripicons-network-3'), array( 'dripicons-network-4' => 'dripicons-network-4'), array( 'dripicons-network-5' => 'dripicons-network-5'), array( 'dripicons-pamphlet' => 'dripicons-pamphlet'), array( 'dripicons-paperclip' => 'dripicons-paperclip'), array( 'dripicons-pencil' => 'dripicons-pencil'), array( 'dripicons-phone' => 'dripicons-phone'), array( 'dripicons-photo' => 'dripicons-photo'), array( 'dripicons-photo-group' => 'dripicons-photo-group'), array( 'dripicons-pill' => 'dripicons-pill'), array( 'dripicons-pin' => 'dripicons-pin'), array( 'dripicons-plus' => 'dripicons-plus'), array( 'dripicons-power' => 'dripicons-power'), array( 'dripicons-preview' => 'dripicons-preview'), array( 'dripicons-print' => 'dripicons-print'), array( 'dripicons-pulse' => 'dripicons-pulse'), array( 'dripicons-question' => 'dripicons-question'), array( 'dripicons-reply' => 'dripicons-reply'), array( 'dripicons-reply-all' => 'dripicons-reply-all'), array( 'dripicons-return' => 'dripicons-return'), array( 'dripicons-retweet' => 'dripicons-retweet'), array( 'dripicons-rocket' => 'dripicons-rocket'), array( 'dripicons-scale' => 'dripicons-scale'), array( 'dripicons-search' => 'dripicons-search'), array( 'dripicons-shopping-bag' => 'dripicons-shopping-bag'), array( 'dripicons-skip' => 'dripicons-skip'), array( 'dripicons-stack' => 'dripicons-stack'), array( 'dripicons-star' => 'dripicons-star'), array( 'dripicons-stopwatch' => 'dripicons-stopwatch'), array( 'dripicons-store' => 'dripicons-store'), array( 'dripicons-suitcase' => 'dripicons-suitcase'), array( 'dripicons-swap' => 'dripicons-swap'), array( 'dripicons-tag' => 'dripicons-tag'), array( 'dripicons-tag-delete' => 'dripicons-tag-delete'), array( 'dripicons-tags' => 'dripicons-tags'), array( 'dripicons-thumbs-down' => 'dripicons-thumbs-down'), array( 'dripicons-thumbs-up' => 'dripicons-thumbs-up'), array( 'dripicons-ticket' => 'dripicons-ticket'), array( 'dripicons-time-reverse' => 'dripicons-time-reverse'), array( 'dripicons-to-do' => 'dripicons-to-do'), array( 'dripicons-toggles' => 'dripicons-toggles'), array( 'dripicons-trash' => 'dripicons-trash'), array( 'dripicons-trophy' => 'dripicons-trophy'), array( 'dripicons-upload' => 'dripicons-upload'), array( 'dripicons-user' => 'dripicons-user'), array( 'dripicons-user-group' => 'dripicons-user-group'), array( 'dripicons-user-id' => 'dripicons-user-id'), array( 'dripicons-vibrate' => 'dripicons-vibrate'), array( 'dripicons-view-apps' => 'dripicons-view-apps'), array( 'dripicons-view-list' => 'dripicons-view-list'), array( 'dripicons-view-list-large' => 'dripicons-view-list-large'), array( 'dripicons-view-thumb' => 'dripicons-view-thumb'), array( 'dripicons-volume-full' => 'dripicons-volume-full'), array( 'dripicons-volume-low' => 'dripicons-volume-low'), array( 'dripicons-volume-medium' => 'dripicons-volume-medium'), array( 'dripicons-volume-off' => 'dripicons-volume-off'), array( 'dripicons-wallet' => 'dripicons-wallet'), array( 'dripicons-warning' => 'dripicons-warning'), array( 'dripicons-web' => 'dripicons-web'), array( 'dripicons-weight' => 'dripicons-weight'), array( 'dripicons-wifi' => 'dripicons-wifi'), array( 'dripicons-wrong' => 'dripicons-wrong'), array( 'dripicons-zoom-in' => 'dripicons-zoom-in'), array( 'dripicons-zoom-out' => 'dripicons-zoom-out'), ); return array_merge( $icons, $dripicons ); } add_filter( 'vc_iconpicker-type-elegantlcons', 'vc_iconpicknimbus_type_elegantlcons' ); function vc_iconpicknimbus_type_elegantlcons( $icons ) { $elegantlcons = array( array( 'arrow_up' => 'arrow_up'), array( 'arrow_down' => 'arrow_down'), array( 'arrow_left' => 'arrow_left'), array( 'arrow_right' => 'arrow_right'), array( 'arrow_left-up' => 'arrow_left-up'), array( 'arrow_right-up' => 'arrow_right-up'), array( 'arrow_right-down' => 'arrow_right-down'), array( 'arrow_left-down' => 'arrow_left-down'), array( 'arrow-up-down' => 'arrow-up-down'), array( 'arrow_up-down_alt' => 'arrow_up-down_alt'), array( 'arrow_left-right_alt' => 'arrow_left-right_alt'), array( 'arrow_left-right' => 'arrow_left-right'), array( 'arrow_expand_alt2' => 'arrow_expand_alt2'), array( 'arrow_expand_alt' => 'arrow_expand_alt'), array( 'arrow_condense' => 'arrow_condense'), array( 'arrow_expand' => 'arrow_expand'), array( 'arrow_move' => 'arrow_move'), array( 'arrow_carrot-up' => 'arrow_carrot-up'), array( 'arrow_carrot-down' => 'arrow_carrot-down'), array( 'arrow_carrot-left' => 'arrow_carrot-left'), array( 'arrow_carrot-right' => 'arrow_carrot-right'), array( 'arrow_carrot-2up' => 'arrow_carrot-2up'), array( 'arrow_carrot-2down' => 'arrow_carrot-2down'), array( 'arrow_carrot-2left' => 'arrow_carrot-2left'), array( 'arrow_carrot-2right' => 'arrow_carrot-2right'), array( 'arrow_carrot-up_alt2' => 'arrow_carrot-up_alt2'), array( 'arrow_carrot-down_alt2' => 'arrow_carrot-down_alt2'), array( 'arrow_carrot-left_alt2' => 'arrow_carrot-left_alt2'), array( 'arrow_carrot-right_alt2' => 'arrow_carrot-right_alt2'), array( 'arrow_carrot-2up_alt2' => 'arrow_carrot-2up_alt2'), array( 'arrow_carrot-2down_alt2' => 'arrow_carrot-2down_alt2'), array( 'arrow_carrot-2left_alt2' => 'arrow_carrot-2left_alt2'), array( 'arrow_carrot-2right_alt2' => 'arrow_carrot-2right_alt2'), array( 'arrow_triangle-up' => 'arrow_triangle-up'), array( 'arrow_triangle-down' => 'arrow_triangle-down'), array( 'arrow_triangle-left' => 'arrow_triangle-left'), array( 'arrow_triangle-right' => 'arrow_triangle-right'), array( 'arrow_triangle-up_alt2' => 'arrow_triangle-up_alt2'), array( 'arrow_triangle-down_alt2' => 'arrow_triangle-down_alt2'), array( 'arrow_triangle-left_alt2' => 'arrow_triangle-left_alt2'), array( 'arrow_triangle-right_alt2' => 'arrow_triangle-right_alt2'), array( 'arrow_back' => 'arrow_back'), array( 'icon_minus-06' => 'icon_minus-06'), array( 'icon_plus' => 'icon_plus'), array( 'icon_close' => 'icon_close'), array( 'icon_check' => 'icon_check'), array( 'icon_minus_alt2' => 'icon_minus_alt2'), array( 'icon_plus_alt2' => 'icon_plus_alt2'), array( 'icon_close_alt2' => 'icon_close_alt2'), array( 'icon_check_alt2' => 'icon_check_alt2'), array( 'icon_zoom-out_alt' => 'icon_zoom-out_alt'), array( 'icon_zoom-in_alt' => 'icon_zoom-in_alt'), array( 'icon_search' => 'icon_search'), array( 'icon_box-empty' => 'icon_box-empty'), array( 'icon_box-selected' => 'icon_box-selected'), array( 'icon_minus-box' => 'icon_minus-box'), array( 'icon_plus-box' => 'icon_plus-box'), array( 'icon_box-checked' => 'icon_box-checked'), array( 'icon_circle-empty' => 'icon_circle-empty'), array( 'icon_circle-slelected' => 'icon_circle-slelected'), array( 'icon_stop_alt2' => 'icon_stop_alt2'), array( 'icon_stop' => 'icon_stop'), array( 'icon_pause_alt2' => 'icon_pause_alt2'), array( 'icon_pause' => 'icon_pause'), array( 'icon_menu' => 'icon_menu'), array( 'icon_menu-square_alt2' => 'icon_menu-square_alt2'), array( 'icon_menu-circle_alt2' => 'icon_menu-circle_alt2'), array( 'icon_ul' => 'icon_ul'), array( 'icon_ol' => 'icon_ol'), array( 'icon_adjust-horiz' => 'icon_adjust-horiz'), array( 'icon_adjust-vert' => 'icon_adjust-vert'), array( 'icon_document_alt' => 'icon_document_alt'), array( 'icon_documents_alt' => 'icon_documents_alt'), array( 'icon_pencil' => 'icon_pencil'), array( 'icon_pencil-edit_alt' => 'icon_pencil-edit_alt'), array( 'icon_pencil-edit' => 'icon_pencil-edit'), array( 'icon_folder-alt' => 'icon_folder-alt'), array( 'icon_folder-open_alt' => 'icon_folder-open_alt'), array( 'icon_folder-add_alt' => 'icon_folder-add_alt'), array( 'icon_info_alt' => 'icon_info_alt'), array( 'icon_error-oct_alt' => 'icon_error-oct_alt'), array( 'icon_error-circle_alt' => 'icon_error-circle_alt'), array( 'icon_error-triangle_alt' => 'icon_error-triangle_alt'), array( 'icon_question_alt2' => 'icon_question_alt2'), array( 'icon_question' => 'icon_question'), array( 'icon_comment_alt' => 'icon_comment_alt'), array( 'icon_chat_alt' => 'icon_chat_alt'), array( 'icon_vol-mute_alt' => 'icon_vol-mute_alt'), array( 'icon_volume-low_alt' => 'icon_volume-low_alt'), array( 'icon_volume-high_alt' => 'icon_volume-high_alt'), array( 'icon_quotations' => 'icon_quotations'), array( 'icon_quotations_alt2' => 'icon_quotations_alt2'), array( 'icon_clock_alt' => 'icon_clock_alt'), array( 'icon_lock_alt' => 'icon_lock_alt'), array( 'icon_lock-open_alt' => 'icon_lock-open_alt'), array( 'icon_key_alt' => 'icon_key_alt'), array( 'icon_cloud_alt' => 'icon_cloud_alt'), array( 'icon_cloud-upload_alt' => 'icon_cloud-upload_alt'), array( 'icon_cloud-download_alt' => 'icon_cloud-download_alt'), array( 'icon_image' => 'icon_image'), array( 'icon_images' => 'icon_images'), array( 'icon_lightbulb_alt' => 'icon_lightbulb_alt'), array( 'icon_gift_alt' => 'icon_gift_alt'), array( 'icon_house_alt' => 'icon_house_alt'), array( 'icon_genius' => 'icon_genius'), array( 'icon_mobile' => 'icon_mobile'), array( 'icon_tablet' => 'icon_tablet'), array( 'icon_laptop' => 'icon_laptop'), array( 'icon_desktop' => 'icon_desktop'), array( 'icon_camera_alt' => 'icon_camera_alt'), array( 'icon_mail_alt' => 'icon_mail_alt'), array( 'icon_cone_alt' => 'icon_cone_alt'), array( 'icon_ribbon_alt' => 'icon_ribbon_alt'), array( 'icon_bag_alt' => 'icon_bag_alt'), array( 'icon_creditcard' => 'icon_creditcard'), array( 'icon_cart_alt' => 'icon_cart_alt'), array( 'icon_paperclip' => 'icon_paperclip'), array( 'icon_tag_alt' => 'icon_tag_alt'), array( 'icon_tags_alt' => 'icon_tags_alt'), array( 'icon_trash_alt' => 'icon_trash_alt'), array( 'icon_cursor_alt' => 'icon_cursor_alt'), array( 'icon_mic_alt' => 'icon_mic_alt'), array( 'icon_compass_alt' => 'icon_compass_alt'), array( 'icon_pin_alt' => 'icon_pin_alt'), array( 'icon_pushpin_alt' => 'icon_pushpin_alt'), array( 'icon_map_alt' => 'icon_map_alt'), array( 'icon_drawer_alt' => 'icon_drawer_alt'), array( 'icon_toolbox_alt' => 'icon_toolbox_alt'), array( 'icon_book_alt' => 'icon_book_alt'), array( 'icon_calendar' => 'icon_calendar'), array( 'icon_film' => 'icon_film'), array( 'icon_table' => 'icon_table'), array( 'icon_contacts_alt' => 'icon_contacts_alt'), array( 'icon_headphones' => 'icon_headphones'), array( 'icon_lifesaver' => 'icon_lifesaver'), array( 'icon_piechart' => 'icon_piechart'), array( 'icon_refresh' => 'icon_refresh'), array( 'icon_link_alt' => 'icon_link_alt'), array( 'icon_link' => 'icon_link'), array( 'icon_loading' => 'icon_loading'), array( 'icon_blocked' => 'icon_blocked'), array( 'icon_archive_alt' => 'icon_archive_alt'), array( 'icon_heart_alt' => 'icon_heart_alt'), array( 'icon_star_alt' => 'icon_star_alt'), array( 'icon_star-half_alt' => 'icon_star-half_alt'), array( 'icon_star' => 'icon_star'), array( 'icon_star-half' => 'icon_star-half'), array( 'icon_tools' => 'icon_tools'), array( 'icon_tool' => 'icon_tool'), array( 'icon_cog' => 'icon_cog'), array( 'icon_cogs' => 'icon_cogs'), array( 'arrow_up_alt' => 'arrow_up_alt'), array( 'arrow_down_alt' => 'arrow_down_alt'), array( 'arrow_left_alt' => 'arrow_left_alt'), array( 'arrow_right_alt' => 'arrow_right_alt'), array( 'arrow_left-up_alt' => 'arrow_left-up_alt'), array( 'arrow_right-up_alt' => 'arrow_right-up_alt'), array( 'arrow_right-down_alt' => 'arrow_right-down_alt'), array( 'arrow_left-down_alt' => 'arrow_left-down_alt'), array( 'arrow_condense_alt' => 'arrow_condense_alt'), array( 'arrow_expand_alt3' => 'arrow_expand_alt3'), array( 'arrow_carrot_up_alt' => 'arrow_carrot_up_alt'), array( 'arrow_carrot-down_alt' => 'arrow_carrot-down_alt'), array( 'arrow_carrot-left_alt' => 'arrow_carrot-left_alt'), array( 'arrow_carrot-right_alt' => 'arrow_carrot-right_alt'), array( 'arrow_carrot-2up_alt' => 'arrow_carrot-2up_alt'), array( 'arrow_carrot-2dwnn_alt' => 'arrow_carrot-2dwnn_alt'), array( 'arrow_carrot-2left_alt' => 'arrow_carrot-2left_alt'), array( 'arrow_carrot-2right_alt' => 'arrow_carrot-2right_alt'), array( 'arrow_triangle-up_alt' => 'arrow_triangle-up_alt'), array( 'arrow_triangle-down_alt' => 'arrow_triangle-down_alt'), array( 'arrow_triangle-left_alt' => 'arrow_triangle-left_alt'), array( 'arrow_triangle-right_alt' => 'arrow_triangle-right_alt'), array( 'icon_minus_alt' => 'icon_minus_alt'), array( 'icon_plus_alt' => 'icon_plus_alt'), array( 'icon_close_alt' => 'icon_close_alt'), array( 'icon_check_alt' => 'icon_check_alt'), array( 'icon_zoom-out' => 'icon_zoom-out'), array( 'icon_zoom-in' => 'icon_zoom-in'), array( 'icon_stop_alt' => 'icon_stop_alt'), array( 'icon_menu-square_alt' => 'icon_menu-square_alt'), array( 'icon_menu-circle_alt' => 'icon_menu-circle_alt'), array( 'icon_document' => 'icon_document'), array( 'icon_documents' => 'icon_documents'), array( 'icon_pencil_alt' => 'icon_pencil_alt'), array( 'icon_folder' => 'icon_folder'), array( 'icon_folder-open' => 'icon_folder-open'), array( 'icon_folder-add' => 'icon_folder-add'), array( 'icon_folder_upload' => 'icon_folder_upload'), array( 'icon_folder_download' => 'icon_folder_download'), array( 'icon_info' => 'icon_info'), array( 'icon_error-circle' => 'icon_error-circle'), array( 'icon_error-oct' => 'icon_error-oct'), array( 'icon_error-triangle' => 'icon_error-triangle'), array( 'icon_question_alt' => 'icon_question_alt'), array( 'icon_comment' => 'icon_comment'), array( 'icon_chat' => 'icon_chat'), array( 'icon_vol-mute' => 'icon_vol-mute'), array( 'icon_volume-low' => 'icon_volume-low'), array( 'icon_volume-high' => 'icon_volume-high'), array( 'icon_quotations_alt' => 'icon_quotations_alt'), array( 'icon_clock' => 'icon_clock'), array( 'icon_lock' => 'icon_lock'), array( 'icon_lock-open' => 'icon_lock-open'), array( 'icon_key' => 'icon_key'), array( 'icon_cloud' => 'icon_cloud'), array( 'icon_cloud-upload' => 'icon_cloud-upload'), array( 'icon_cloud-download' => 'icon_cloud-download'), array( 'icon_lightbulb' => 'icon_lightbulb'), array( 'icon_gift' => 'icon_gift'), array( 'icon_house' => 'icon_house'), array( 'icon_camera' => 'icon_camera'), array( 'icon_mail' => 'icon_mail'), array( 'icon_cone' => 'icon_cone'), array( 'icon_ribbon' => 'icon_ribbon'), array( 'icon_bag' => 'icon_bag'), array( 'icon_cart' => 'icon_cart'), array( 'icon_tag' => 'icon_tag'), array( 'icon_tags' => 'icon_tags'), array( 'icon_trash' => 'icon_trash'), array( 'icon_cursor' => 'icon_cursor'), array( 'icon_mic' => 'icon_mic'), array( 'icon_compass' => 'icon_compass'), array( 'icon_pin' => 'icon_pin'), array( 'icon_pushpin' => 'icon_pushpin'), array( 'icon_map' => 'icon_map'), array( 'icon_drawer' => 'icon_drawer'), array( 'icon_toolbox' => 'icon_toolbox'), array( 'icon_book' => 'icon_book'), array( 'icon_contacts' => 'icon_contacts'), array( 'icon_archive' => 'icon_archive'), array( 'icon_heart' => 'icon_heart'), array( 'icon_profile' => 'icon_profile'), array( 'icon_group' => 'icon_group'), array( 'icon_grid-2x2' => 'icon_grid-2x2'), array( 'icon_grid-3x3' => 'icon_grid-3x3'), array( 'icon_music' => 'icon_music'), array( 'icon_pause_alt' => 'icon_pause_alt'), array( 'icon_phone' => 'icon_phone'), array( 'icon_upload' => 'icon_upload'), array( 'icon_download' => 'icon_download'), array( 'social_facebook' => 'social_facebook'), array( 'social_twitter' => 'social_twitter'), array( 'social_pinterest' => 'social_pinterest'), array( 'social_googleplus' => 'social_googleplus'), array( 'social_tumblr' => 'social_tumblr'), array( 'social_tumbleupon' => 'social_tumbleupon'), array( 'social_wordpress' => 'social_wordpress'), array( 'social_instagram' => 'social_instagram'), array( 'social_dribbble' => 'social_dribbble'), array( 'social_vimeo' => 'social_vimeo'), array( 'social_linkedin' => 'social_linkedin'), array( 'social_rss' => 'social_rss'), array( 'social_deviantart' => 'social_deviantart'), array( 'social_share' => 'social_share'), array( 'social_myspace' => 'social_myspace'), array( 'social_skype' => 'social_skype'), array( 'social_youtube' => 'social_youtube'), array( 'social_picassa' => 'social_picassa'), array( 'social_googledrive' => 'social_googledrive'), array( 'social_flickr' => 'social_flickr'), array( 'social_blogger' => 'social_blogger'), array( 'social_spotify' => 'social_spotify'), array( 'social_delicious' => 'social_delicious'), array( 'social_facebook_circle' => 'social_facebook_circle'), array( 'social_twitter_circle' => 'social_twitter_circle'), array( 'social_pinterest_circle' => 'social_pinterest_circle'), array( 'social_googleplus_circle' => 'social_googleplus_circle'), array( 'social_tumblr_circle' => 'social_tumblr_circle'), array( 'social_stumbleupon_circle' => 'social_stumbleupon_circle'), array( 'social_wordpress_circle' => 'social_wordpress_circle'), array( 'social_instagram_circle' => 'social_instagram_circle'), array( 'social_dribbble_circle' => 'social_dribbble_circle'), array( 'social_vimeo_circle' => 'social_vimeo_circle'), array( 'social_linkedin_circle' => 'social_linkedin_circle'), array( 'social_rss_circle' => 'social_rss_circle'), array( 'social_deviantart_circle' => 'social_deviantart_circle'), array( 'social_share_circle' => 'social_share_circle'), array( 'social_myspace_circle' => 'social_myspace_circle'), array( 'social_skype_circle' => 'social_skype_circle'), array( 'social_youtube_circle' => 'social_youtube_circle'), array( 'social_picassa_circle' => 'social_picassa_circle'), array( 'social_googledrive_alt2' => 'social_googledrive_alt2'), array( 'social_flickr_circle' => 'social_flickr_circle'), array( 'social_blogger_circle' => 'social_blogger_circle'), array( 'social_spotify_circle' => 'social_spotify_circle'), array( 'social_delicious_circle' => 'social_delicious_circle'), array( 'social_facebook_square' => 'social_facebook_square'), array( 'social_twitter_square' => 'social_twitter_square'), array( 'social_pinterest_square' => 'social_pinterest_square'), array( 'social_googleplus_square' => 'social_googleplus_square'), array( 'social_tumblr_square' => 'social_tumblr_square'), array( 'social_stumbleupon_square' => 'social_stumbleupon_square'), array( 'social_wordpress_square' => 'social_wordpress_square'), array( 'social_instagram_square' => 'social_instagram_square'), array( 'social_dribbble_square' => 'social_dribbble_square'), array( 'social_vimeo_square' => 'social_vimeo_square'), array( 'social_linkedin_square' => 'social_linkedin_square'), array( 'social_rss_square' => 'social_rss_square'), array( 'social_deviantart_square' => 'social_deviantart_square'), array( 'social_share_square' => 'social_share_square'), array( 'social_myspace_square' => 'social_myspace_square'), array( 'social_skype_square' => 'social_skype_square'), array( 'social_youtube_square' => 'social_youtube_square'), array( 'social_picassa_square' => 'social_picassa_square'), array( 'social_googledrive_square' => 'social_googledrive_square'), array( 'social_flickr_square' => 'social_flickr_square'), array( 'social_blogger_square' => 'social_blogger_square'), array( 'social_spotify_square' => 'social_spotify_square'), array( 'social_delicious_square' => 'social_delicious_square'), array( 'icon_printer' => 'icon_printer'), array( 'icon_calulator' => 'icon_calulator'), array( 'icon_building' => 'icon_building'), array( 'icon_floppy' => 'icon_floppy'), array( 'icon_drive' => 'icon_drive'), array( 'icon_search-2' => 'icon_search-2'), array( 'icon_id' => 'icon_id'), array( 'icon_id-2' => 'icon_id-2'), array( 'icon_puzzle' => 'icon_puzzle'), array( 'icon_like' => 'icon_like'), array( 'icon_dislike' => 'icon_dislike'), array( 'icon_mug' => 'icon_mug'), array( 'icon_currency' => 'icon_currency'), array( 'icon_wallet' => 'icon_wallet'), array( 'icon_pens' => 'icon_pens'), array( 'icon_easel' => 'icon_easel'), array( 'icon_flowchart' => 'icon_flowchart'), array( 'icon_datareport' => 'icon_datareport'), array( 'icon_briefcase' => 'icon_briefcase'), array( 'icon_shield' => 'icon_shield'), array( 'icon_percent' => 'icon_percent'), array( 'icon_globe' => 'icon_globe'), array( 'icon_globe-2' => 'icon_globe-2'), array( 'icon_target' => 'icon_target'), array( 'icon_hourglass' => 'icon_hourglass'), array( 'icon_balance' => 'icon_balance'), array( 'icon_rook' => 'icon_rook'), array( 'icon_printer-alt' => 'icon_printer-alt'), array( 'icon_calculator_alt' => 'icon_calculator_alt'), array( 'icon_building_alt' => 'icon_building_alt'), array( 'icon_floppy_alt' => 'icon_floppy_alt'), array( 'icon_drive_alt' => 'icon_drive_alt'), array( 'icon_search_alt' => 'icon_search_alt'), array( 'icon_id_alt' => 'icon_id_alt'), array( 'icon_id-2_alt' => 'icon_id-2_alt'), array( 'icon_puzzle_alt' => 'icon_puzzle_alt'), array( 'icon_like_alt' => 'icon_like_alt'), array( 'icon_dislike_alt' => 'icon_dislike_alt'), array( 'icon_mug_alt' => 'icon_mug_alt'), array( 'icon_currency_alt' => 'icon_currency_alt'), array( 'icon_wallet_alt' => 'icon_wallet_alt'), array( 'icon_pens_alt' => 'icon_pens_alt'), array( 'icon_easel_alt' => 'icon_easel_alt'), array( 'icon_flowchart_alt' => 'icon_flowchart_alt'), array( 'icon_datareport_alt' => 'icon_datareport_alt'), array( 'icon_briefcase_alt' => 'icon_briefcase_alt'), array( 'icon_shield_alt' => 'icon_shield_alt'), array( 'icon_percent_alt' => 'icon_percent_alt'), array( 'icon_globe_alt' => 'icon_globe_alt'), array( 'icon_clipboard' => 'icon_clipboard'), ); return array_merge( $icons, $elegantlcons ); } add_filter( 'vc_iconpicker-type-pe7icons', 'vc_iconpicknimbus_type_pe7icons' ); function vc_iconpicknimbus_type_pe7icons( $icons ) { $pe7icons = array( array('pe-7s-album' => 'pe-7s-album'), array('pe-7s-arc' => 'pe-7s-arc'), array('pe-7s-back-2' => 'pe-7s-back-2'), array('pe-7s-bandaid' => 'pe-7s-bandaid'), array('pe-7s-car' => 'pe-7s-car'), array('pe-7s-diamond' => 'pe-7s-diamond'), array('pe-7s-door-lock' => 'pe-7s-door-lock'), array('pe-7s-eyedropper' => 'pe-7s-eyedropper'), array('pe-7s-female' => 'pe-7s-female'), array('pe-7s-gym' => 'pe-7s-gym'), array('pe-7s-hammer' => 'pe-7s-hammer'), array('pe-7s-headphones' => 'pe-7s-headphones'), array('pe-7s-helm' => 'pe-7s-helm'), array('pe-7s-hourglass' => 'pe-7s-hourglass'), array('pe-7s-leaf' => 'pe-7s-leaf'), array('pe-7s-magic-wand' => 'pe-7s-magic-wand'), array('pe-7s-male' => 'pe-7s-male'), array('pe-7s-map-2' => 'pe-7s-map-2'), array('pe-7s-next-2' => 'pe-7s-next-2'), array('pe-7s-paint-bucket' => 'pe-7s-paint-bucket'), array('pe-7s-pendrive' => 'pe-7s-pendrive'), array('pe-7s-photo' => 'pe-7s-photo'), array('pe-7s-piggy' => 'pe-7s-piggy'), array('pe-7s-plugin' => 'pe-7s-plugin'), array('pe-7s-refresh-2' => 'pe-7s-refresh-2'), array('pe-7s-rocket' => 'pe-7s-rocket'), array('pe-7s-settings' => 'pe-7s-settings'), array('pe-7s-shield' => 'pe-7s-shield'), array('pe-7s-smile' => 'pe-7s-smile'), array('pe-7s-usb' => 'pe-7s-usb'), array('pe-7s-vector' => 'pe-7s-vector'), array('pe-7s-wine' => 'pe-7s-wine'), array('pe-7s-cloud-upload' => 'pe-7s-cloud-upload'), array('pe-7s-cash' => 'pe-7s-cash'), array('pe-7s-close' => 'pe-7s-close'), array('pe-7s-bluetooth' => 'pe-7s-bluetooth'), array('pe-7s-cloud-download' => 'pe-7s-cloud-download'), array('pe-7s-way' => 'pe-7s-way'), array('pe-7s-close-circle' => 'pe-7s-close-circle'), array('pe-7s-id' => 'pe-7s-id'), array('pe-7s-angle-up' => 'pe-7s-angle-up'), array('pe-7s-wristwatch' => 'pe-7s-wristwatch'), array('pe-7s-angle-up-circle' => 'pe-7s-angle-up-circle'), array('pe-7s-world' => 'pe-7s-world'), array('pe-7s-angle-right' => 'pe-7s-angle-right'), array('pe-7s-volume' => 'pe-7s-volume'), array('pe-7s-angle-right-circle' => 'pe-7s-angle-right-circle'), array('pe-7s-users' => 'pe-7s-users'), array('pe-7s-angle-left' => 'pe-7s-angle-left'), array('pe-7s-user-female' => 'pe-7s-user-female'), array('pe-7s-angle-left-circle' => 'pe-7s-angle-left-circle'), array('pe-7s-up-arrow' => 'pe-7s-up-arrow'), array('pe-7s-angle-down' => 'pe-7s-angle-down'), array('pe-7s-switch' => 'pe-7s-switch'), array('pe-7s-angle-down-circle' => 'pe-7s-angle-down-circle'), array('pe-7s-scissors' => 'pe-7s-scissors'), array('pe-7s-wallet' => 'pe-7s-wallet'), array('pe-7s-safe' => 'pe-7s-safe'), array('pe-7s-volume2' => 'pe-7s-volume2'), array('pe-7s-volume1' => 'pe-7s-volume1'), array('pe-7s-voicemail' => 'pe-7s-voicemail'), array('pe-7s-video' => 'pe-7s-video'), array('pe-7s-user' => 'pe-7s-user'), array('pe-7s-upload' => 'pe-7s-upload'), array('pe-7s-unlock' => 'pe-7s-unlock'), array('pe-7s-umbrella' => 'pe-7s-umbrella'), array('pe-7s-trash' => 'pe-7s-trash'), array('pe-7s-tools' => 'pe-7s-tools'), array('pe-7s-timer' => 'pe-7s-timer'), array('pe-7s-ticket' => 'pe-7s-ticket'), array('pe-7s-target' => 'pe-7s-target'), array('pe-7s-sun' => 'pe-7s-sun'), array('pe-7s-study' => 'pe-7s-study'), array('pe-7s-stopwatch' => 'pe-7s-stopwatch'), array('pe-7s-star' => 'pe-7s-star'), array('pe-7s-speaker' => 'pe-7s-speaker'), array('pe-7s-signal' => 'pe-7s-signal'), array('pe-7s-shuffle' => 'pe-7s-shuffle'), array('pe-7s-shopbag' => 'pe-7s-shopbag'), array('pe-7s-share' => 'pe-7s-share'), array('pe-7s-server' => 'pe-7s-server'), array('pe-7s-search' => 'pe-7s-search'), array('pe-7s-film' => 'pe-7s-film'), array('pe-7s-science' => 'pe-7s-science'), array('pe-7s-disk' => 'pe-7s-disk'), array('pe-7s-ribbon' => 'pe-7s-ribbon'), array('pe-7s-repeat' => 'pe-7s-repeat'), array('pe-7s-refresh' => 'pe-7s-refresh'), array('pe-7s-add-user' => 'pe-7s-add-user'), array('pe-7s-refresh-cloud' => 'pe-7s-refresh-cloud'), array('pe-7s-paperclip' => 'pe-7s-paperclip'), array('pe-7s-radio' => 'pe-7s-radio'), array('pe-7s-note2' => 'pe-7s-note2'), array('pe-7s-print' => 'pe-7s-print'), array('pe-7s-network' => 'pe-7s-network'), array('pe-7s-prev' => 'pe-7s-prev'), array('pe-7s-mute' => 'pe-7s-mute'), array('pe-7s-power' => 'pe-7s-power'), array('pe-7s-medal' => 'pe-7s-medal'), array('pe-7s-portfolio' => 'pe-7s-portfolio'), array('pe-7s-like2' => 'pe-7s-like2'), array('pe-7s-plus' => 'pe-7s-plus'), array('pe-7s-left-arrow' => 'pe-7s-left-arrow'), array('pe-7s-play' => 'pe-7s-play'), array('pe-7s-key' => 'pe-7s-key'), array('pe-7s-plane' => 'pe-7s-plane'), array('pe-7s-joy' => 'pe-7s-joy'), array('pe-7s-photo-gallery' => 'pe-7s-photo-gallery'), array('pe-7s-pin' => 'pe-7s-pin'), array('pe-7s-phone' => 'pe-7s-phone'), array('pe-7s-plug' => 'pe-7s-plug'), array('pe-7s-pen' => 'pe-7s-pen'), array('pe-7s-right-arrow' => 'pe-7s-right-arrow'), array('pe-7s-paper-plane' => 'pe-7s-paper-plane'), array('pe-7s-delete-user' => 'pe-7s-delete-user'), array('pe-7s-paint' => 'pe-7s-paint'), array('pe-7s-bottom-arrow' => 'pe-7s-bottom-arrow'), array('pe-7s-notebook' => 'pe-7s-notebook'), array('pe-7s-note' => 'pe-7s-note'), array('pe-7s-next' => 'pe-7s-next'), array('pe-7s-news-paper' => 'pe-7s-news-paper'), array('pe-7s-musiclist' => 'pe-7s-musiclist'), array('pe-7s-music' => 'pe-7s-music'), array('pe-7s-mouse' => 'pe-7s-mouse'), array('pe-7s-more' => 'pe-7s-more'), array('pe-7s-moon' => 'pe-7s-moon'), array('pe-7s-monitor' => 'pe-7s-monitor'), array('pe-7s-micro' => 'pe-7s-micro'), array('pe-7s-menu' => 'pe-7s-menu'), array('pe-7s-map' => 'pe-7s-map'), array('pe-7s-map-marker' => 'pe-7s-map-marker'), array('pe-7s-mail' => 'pe-7s-mail'), array('pe-7s-mail-open' => 'pe-7s-mail-open'), array('pe-7s-mail-open-file' => 'pe-7s-mail-open-file'), array('pe-7s-magnet' => 'pe-7s-magnet'), array('pe-7s-loop' => 'pe-7s-loop'), array('pe-7s-look' => 'pe-7s-look'), array('pe-7s-lock' => 'pe-7s-lock'), array('pe-7s-lintern' => 'pe-7s-lintern'), array('pe-7s-link' => 'pe-7s-link'), array('pe-7s-like' => 'pe-7s-like'), array('pe-7s-light' => 'pe-7s-light'), array('pe-7s-less' => 'pe-7s-less'), array('pe-7s-keypad' => 'pe-7s-keypad'), array('pe-7s-junk' => 'pe-7s-junk'), array('pe-7s-info' => 'pe-7s-info'), array('pe-7s-home' => 'pe-7s-home'), array('pe-7s-help2' => 'pe-7s-help2'), array('pe-7s-help1' => 'pe-7s-help1'), array('pe-7s-graph3' => 'pe-7s-graph3'), array('pe-7s-graph2' => 'pe-7s-graph2'), array('pe-7s-graph1' => 'pe-7s-graph1'), array('pe-7s-graph' => 'pe-7s-graph'), array('pe-7s-global' => 'pe-7s-global'), array('pe-7s-gleam' => 'pe-7s-gleam'), array('pe-7s-glasses' => 'pe-7s-glasses'), array('pe-7s-gift' => 'pe-7s-gift'), array('pe-7s-folder' => 'pe-7s-folder'), array('pe-7s-flag' => 'pe-7s-flag'), array('pe-7s-filter' => 'pe-7s-filter'), array('pe-7s-file' => 'pe-7s-file'), array('pe-7s-expand1' => 'pe-7s-expand1'), array('pe-7s-exapnd2' => 'pe-7s-exapnd2'), array('pe-7s-edit' => 'pe-7s-edit'), array('pe-7s-drop' => 'pe-7s-drop'), array('pe-7s-drawer' => 'pe-7s-drawer'), array('pe-7s-download' => 'pe-7s-download'), array('pe-7s-display2' => 'pe-7s-display2'), array('pe-7s-display1' => 'pe-7s-display1'), array('pe-7s-diskette' => 'pe-7s-diskette'), array('pe-7s-date' => 'pe-7s-date'), array('pe-7s-cup' => 'pe-7s-cup'), array('pe-7s-culture' => 'pe-7s-culture'), array('pe-7s-crop' => 'pe-7s-crop'), array('pe-7s-credit' => 'pe-7s-credit'), array('pe-7s-copy-file' => 'pe-7s-copy-file'), array('pe-7s-config' => 'pe-7s-config'), array('pe-7s-compass' => 'pe-7s-compass'), array('pe-7s-comment' => 'pe-7s-comment'), array('pe-7s-coffee' => 'pe-7s-coffee'), array('pe-7s-cloud' => 'pe-7s-cloud'), array('pe-7s-clock' => 'pe-7s-clock'), array('pe-7s-check' => 'pe-7s-check'), array('pe-7s-chat' => 'pe-7s-chat'), array('pe-7s-cart' => 'pe-7s-cart'), array('pe-7s-camera' => 'pe-7s-camera'), array('pe-7s-call' => 'pe-7s-call'), array('pe-7s-calculator' => 'pe-7s-calculator'), array('pe-7s-browser' => 'pe-7s-browser'), array('pe-7s-box2' => 'pe-7s-box2'), array('pe-7s-box1' => 'pe-7s-box1'), array('pe-7s-bookmarks' => 'pe-7s-bookmarks'), array('pe-7s-bicycle' => 'pe-7s-bicycle'), array('pe-7s-bell' => 'pe-7s-bell'), array('pe-7s-battery' => 'pe-7s-battery'), array('pe-7s-ball' => 'pe-7s-ball'), array('pe-7s-back' => 'pe-7s-back'), array('pe-7s-attention' => 'pe-7s-attention'), array('pe-7s-anchor' => 'pe-7s-anchor'), array('pe-7s-albums' => 'pe-7s-albums'), array('pe-7s-alarm' => 'pe-7s-alarm'), array('pe-7s-airplay' => 'pe-7s-airplay'), ); return array_merge( $icons, $pe7icons ); } // Add CSS add_action( 'vc_backend_editor_enqueue_js_css', 'nimbus_vpb_bk_icon' ); function nimbus_vpb_bk_icon(){ wp_enqueue_style( 'nimbus-icons', get_theme_file_uri( '/assets/css/fonts.css' ) , array(), '1.0' ); } // Add elements if ( function_exists( 'vc_add_param' )) { $attributes = array( 'type' => 'dropdown', 'heading' => "Content Width", 'param_name' => 'nimbus_content_width', 'description' => 'Select row content width.', "value" => array( esc_html__("Fixed Width", 'nimbus') => "nb-container", esc_html__("Full Width", 'nimbus') => "nb-container-fluid", ) ); vc_add_param('vc_row', $attributes); vc_add_param('vc_section', $attributes); vc_add_param('vc_row_inner', $attributes); $attributes = array( 'type' => 'dropdown', 'heading' => "Gutter Width", 'param_name' => 'nimbus_gutter_row', 'description' => 'Select row gutter.', "value" => array( esc_html__("Normal", 'nimbus') => "normal", esc_html__("Small", 'nimbus') => "small", esc_html__("No Space", 'nimbus') => "no-margin", ) ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); $attributes = array( 'type' => 'checkbox', 'heading' => "Parallax Effects ?", 'param_name' => 'nimbus_parallax', 'description' => 'Check this box to enable parallax effect.', 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_section', $attributes); vc_add_param('vc_row_inner', $attributes); $attributes = array( 'type' => 'dropdown', 'heading' => "Background Position", 'param_name' => 'nb_bg_position', "value" => array( esc_html__("Theme Default", 'nimbus') => "bg-default", esc_html__("Top Right", 'nimbus') => "top-right", esc_html__("Top Left", 'nimbus') => "top-left", esc_html__("Top Center", 'nimbus') => "top-center", esc_html__("Half Right", 'nimbus') => "half-right", esc_html__("Half Left", 'nimbus') => "half-left", esc_html__("Bottom Left", 'nimbus') => "bottom-left", esc_html__("Bottom Right", 'nimbus') => "bottom-right", esc_html__("Bottom Center", 'nimbus') => "bottom-center", ), 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); $attributes = array( 'type' => 'dropdown', 'heading' => "Mobile Background Position", 'param_name' => 'nb_mobile_bg_position', "value" => array( esc_html__("Theme Default", 'nimbus') => "mobile-bg-default", esc_html__("Hidden", 'nimbus') => "mobile-bg-hidden", esc_html__("Cover", 'nimbus') => "mobile-bg-cover", esc_html__("Top Right", 'nimbus') => "mobile-bg-top-right", esc_html__("Top Left", 'nimbus') => "mobile-bg-top-left", esc_html__("Top Center", 'nimbus') => "mobile-bg-top-center", esc_html__("Half Right", 'nimbus') => "mobile-bg-half-right", esc_html__("Half Left", 'nimbus') => "mobile-bg-half-left", esc_html__("Bottom Left", 'nimbus') => "mobile-bg-bottom-left", esc_html__("Bottom Right", 'nimbus') => "mobile-bg-bottom-right", esc_html__("Bottom Center", 'nimbus') => "mobile-bg-bottom-center", ), 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); $attributes = array( 'type' => 'checkbox', 'heading' => "Fixed Effects ?", 'param_name' => 'nimbus_parallax_fixed', 'description' => 'Check this box to enable parallax effect.', 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_section', $attributes); $attributes = array( 'type' => 'checkbox', 'heading' => "Gray Effects ?", 'param_name' => 'nimbus_gray_effects', 'description' => 'Check this box to enable parallax effect.', 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_section', $attributes); $attributes = array( 'type' => 'checkbox', 'heading' => "Kenburn Effect ?", 'param_name' => 'nimbus_kenburn_effect', 'description' => 'Check this box to enable kenburn effect.', 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_section', $attributes); /* $attributes = array( 'type' => 'textfield', 'heading' => "Parallax Video", 'param_name' => 'nimbus_parallax_video', 'description' => 'Enter your video background URL', 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_section', $attributes); */ $attributes = array( 'type' => 'colorpicker', 'heading' => "Overlay Background Color", 'param_name' => 'nimbus_parallax_overlay', 'description' => 'Select your overlay background color.', 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_section', $attributes); $attributes = array( 'type' => 'colorpicker', 'heading' => "Mobile Overlay Background Color", 'param_name' => 'nimbus_mobile_parallax_overlay', 'description' => 'Select your overlay background color.', 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_section', $attributes); $attributes = array( 'type' => 'dropdown', 'heading' => "Overlay Position", 'param_name' => 'nb_overlay_position', "value" => array( esc_html__("Full", 'nimbus') => "nb-background-mark-full", esc_html__("Half Right", 'nimbus') => "nb-background-mark-right", esc_html__("Half Left", 'nimbus') => "nb-background-mark-left", ), 'group' => 'Background Settings' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); // Animations $attributes = array( 'type' => 'dropdown', 'heading' => "Origin", 'param_name' => 'nb_a_origin', "value" => array( esc_html__("Disable", 'nimbus') => "", esc_html__("Top", 'nimbus') => "top", esc_html__("Bottom", 'nimbus') => "bottom", esc_html__("Left", 'nimbus') => "left", esc_html__("Right", 'nimbus') => "right", ), 'group' => 'Animation' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_column', $attributes); vc_add_param('vc_column_inner', $attributes); $attributes = array( 'type' => 'textfield', 'heading' => "Duration", 'param_name' => 'nb_a_duration', 'description' => 'Time in milliseconds.', 'value' => '0', 'group' => 'Animation' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_column', $attributes); vc_add_param('vc_column_inner', $attributes); $attributes = array( 'type' => 'textfield', 'heading' => "Delay", 'param_name' => 'nb_a_delaytime', 'description' => 'Time in milliseconds.', 'value' => '0', 'group' => 'Animation' ); vc_add_param('vc_row', $attributes); vc_add_param('vc_row_inner', $attributes); vc_add_param('vc_column', $attributes); vc_add_param('vc_column_inner', $attributes); }inc/theme_maps.php000066600000311366152143340070010165 0ustar00 esc_html__("Icon", 'nimbus'), "description" => esc_html__("Icon.",'nimbus'), "base" => "nb_icon", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( "type" => "dropdown", "heading" => esc_html__("Size", 'nimbus'), "param_name" => "size", 'value' => array( __( 'Normal', 'nimbus' ) => 'normal-size', __( 'Medium', 'nimbus' ) => 'medium-size', __( 'Large', 'nimbus' ) => 'large-size', ), ), array( "type" => "dropdown", "heading" => esc_html__("Border Style", 'nimbus'), "param_name" => "border_style", 'value' => array( __( 'Square', 'nimbus' ) => 'square-border', __( 'Round', 'nimbus' ) => 'round-border', __( 'Small Round', 'nimbus' ) => 'small-border', ), ), array( "type" => "colorpicker", "heading" => esc_html__("Icon Color", 'nimbus'), "param_name" => "icon_color", ), array( "type" => "dropdown", "heading" => esc_html__("Icon Style", 'nimbus'), "param_name" => "icon_style", "value" => array( esc_html__("Select icon style", 'nimbus') => "", esc_html__("Icon Font", 'nimbus') => "icon", esc_html__("SVG", 'nimbus') => "svg", ), ), array( "type" => "textfield", "heading" => esc_html__("SVG URL", 'nimbus'), "param_name" => "svg", 'dependency' => array( 'element' => 'icon_style', 'value' => 'svg', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Icon', 'nimbus' ), 'value' => array( __( 'Font Awesome', 'nimbus' ) => 'fontawesome', __( 'Open Iconic', 'nimbus' ) => 'openiconic', __( 'Typicons', 'nimbus' ) => 'typicons', __( 'Entypo', 'nimbus' ) => 'entypo', __( 'Linecons', 'nimbus' ) => 'linecons', __( 'Mono Social', 'nimbus' ) => 'monosocial', __( 'Material', 'nimbus' ) => 'material', __( 'Dripicons', 'nimbus' ) => 'dripicons', __( 'Elegant', 'nimbus' ) => 'elegantlcons', __( 'pe7 Line', 'nimbus' ) => 'pe7icons', ), 'admin_label' => true, 'param_name' => 'type', 'description' => __( 'Select icon library.', 'nimbus' ), 'dependency' => array( 'element' => 'icon_style', 'value' => 'icon', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-adjust', 'settings' => array( 'emptyIcon' => false, 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_openiconic', 'value' => 'vc-oi vc-oi-dial', 'settings' => array( 'emptyIcon' => false, 'type' => 'openiconic', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_typicons', 'value' => 'typcn typcn-adjust-brightness', 'settings' => array( 'emptyIcon' => false, 'type' => 'typicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_entypo', 'value' => 'entypo-icon entypo-icon-note', 'settings' => array( 'emptyIcon' => false, 'type' => 'entypo', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_linecons', 'value' => 'vc_li vc_li-heart', 'settings' => array( 'emptyIcon' => false, 'type' => 'linecons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', 'settings' => array( 'emptyIcon' => false, 'type' => 'monosocial', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_material', 'value' => 'vc-material vc-material-cake', 'settings' => array( 'emptyIcon' => false, 'type' => 'material', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'material', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_dripicons', 'value' => 'dripicons-alarm', 'settings' => array( 'emptyIcon' => false, 'type' => 'dripicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'dripicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_elegantlcons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'elegantlcons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'elegantlcons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_pe7icons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'pe7icons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'pe7icons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ), array( 'type' => 'css_editor', 'heading' => __( 'Css', 'nimbus' ), 'param_name' => 'css', 'group' => __( 'Design options', 'nimbus' ), ), ) )); // Icon Box vc_map(array( "name" => esc_html__("Icon Box", 'nimbus'), "description" => esc_html__("Content with icon.",'nimbus'), "base" => "nb_iconbox", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( "type" => "dropdown", "heading" => esc_html__("Style", 'nimbus'), "param_name" => "style", "value" => array( esc_html__("Normal Style", 'nimbus') => "normal-style", esc_html__("Boxed Style", 'nimbus') => "boxed-style", ), ), array( "type" => "dropdown", "heading" => esc_html__("Icon Style", 'nimbus'), "param_name" => "icon_style", "value" => array( esc_html__("Select icon style", 'nimbus') => "", esc_html__("Icon Font", 'nimbus') => "icon", esc_html__("SVG", 'nimbus') => "svg", ), ), array( "type" => "dropdown", "heading" => esc_html__("Icon Position", 'nimbus'), "param_name" => "icon_position", "value" => array( esc_html__("Left", 'nimbus') => "left", esc_html__("Top", 'nimbus') => "top", ), ), array( "type" => "dropdown", "heading" => esc_html__("Main Color", 'nimbus'), "param_name" => "color", "value" => array( esc_html__("Black", 'nimbus') => "black", esc_html__("White", 'nimbus') => "white", ), ), array( "type" => "colorpicker", "heading" => esc_html__("Icon Color", 'nimbus'), "param_name" => "icon_color", ), array( "type" => "textfield", "heading" => esc_html__("Title", 'nimbus'), "param_name" => "title", ), array( "type" => "textarea", "heading" => esc_html__("Description", 'nimbus'), "param_name" => "desc", ), array( "type" => "textfield", "heading" => esc_html__("Link", 'nimbus'), "param_name" => "link", ), array( "type" => "textfield", "heading" => esc_html__("SVG URL", 'nimbus'), "param_name" => "svg", 'dependency' => array( 'element' => 'icon_style', 'value' => 'svg', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Icon', 'nimbus' ), 'value' => array( __( 'Font Awesome', 'nimbus' ) => 'fontawesome', __( 'Open Iconic', 'nimbus' ) => 'openiconic', __( 'Typicons', 'nimbus' ) => 'typicons', __( 'Entypo', 'nimbus' ) => 'entypo', __( 'Linecons', 'nimbus' ) => 'linecons', __( 'Mono Social', 'nimbus' ) => 'monosocial', __( 'Material', 'nimbus' ) => 'material', __( 'Dripicons', 'nimbus' ) => 'dripicons', __( 'Elegant', 'nimbus' ) => 'elegantlcons', __( 'pe7 Line', 'nimbus' ) => 'pe7icons', ), 'admin_label' => true, 'param_name' => 'type', 'description' => __( 'Select icon library.', 'nimbus' ), 'dependency' => array( 'element' => 'icon_style', 'value' => 'icon', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-adjust', 'settings' => array( 'emptyIcon' => false, 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_openiconic', 'value' => 'vc-oi vc-oi-dial', 'settings' => array( 'emptyIcon' => false, 'type' => 'openiconic', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_typicons', 'value' => 'typcn typcn-adjust-brightness', 'settings' => array( 'emptyIcon' => false, 'type' => 'typicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_entypo', 'value' => 'entypo-icon entypo-icon-note', 'settings' => array( 'emptyIcon' => false, 'type' => 'entypo', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_linecons', 'value' => 'vc_li vc_li-heart', 'settings' => array( 'emptyIcon' => false, 'type' => 'linecons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', 'settings' => array( 'emptyIcon' => false, 'type' => 'monosocial', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_material', 'value' => 'vc-material vc-material-cake', 'settings' => array( 'emptyIcon' => false, 'type' => 'material', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'material', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_dripicons', 'value' => 'dripicons-alarm', 'settings' => array( 'emptyIcon' => false, 'type' => 'dripicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'dripicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_elegantlcons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'elegantlcons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'elegantlcons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_pe7icons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'pe7icons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'pe7icons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Content Box vc_map(array( "name" => esc_html__("Content Box", 'nimbus'), "description" => esc_html__("Content box.",'nimbus'), "base" => "nb_contentbox", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( "type" => "textfield", "heading" => esc_html__("Title", 'nimbus'), "param_name" => "title", ), array( "type" => "textfield", "heading" => esc_html__("Description", 'nimbus'), "param_name" => "desc", ), array( 'type' => 'textarea_html', 'heading' => esc_html__( 'Content', 'nimbus' ), 'param_name' => 'content', 'admin_label' => false ), array( "type" => "textfield", "heading" => esc_html__("Link", 'nimbus'), "param_name" => "vc_link", ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Count Box vc_map(array( "name" => esc_html__("Count Box", 'nimbus'), "description" => esc_html__("Count to special number.",'nimbus'), "base" => "nb_countbox", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'dropdown', 'heading' => __( 'Color', 'nimbus' ), 'value' => array( __( 'Black', 'nimbus' ) => 'black', __( 'White', 'nimbus' ) => 'white', ), 'param_name' => 'color', ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'nimbus' ), 'value' => array( __( 'Default', 'nimbus' ) => 'default', __( 'Alt', 'nimbus' ) => 'alt', ), 'param_name' => 'style', ), array( "type" => "textfield", "heading" => esc_html__("Number", 'nimbus'), "param_name" => "number", ), array( "type" => "textfield", "heading" => esc_html__("Title", 'nimbus'), "param_name" => "title", ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Features List vc_map(array( "name" => esc_html__("Features List", 'nimbus'), "description" => esc_html__("High light list item.",'nimbus'), "base" => "nb_feature_list", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'List Item', 'nimbus' ), 'param_name' => 'lists', 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Icon', 'nimbus' ), 'value' => array( __( 'Font Awesome', 'nimbus' ) => 'fontawesome', __( 'Open Iconic', 'nimbus' ) => 'openiconic', __( 'Typicons', 'nimbus' ) => 'typicons', __( 'Entypo', 'nimbus' ) => 'entypo', __( 'Linecons', 'nimbus' ) => 'linecons', __( 'Mono Social', 'nimbus' ) => 'monosocial', __( 'Material', 'nimbus' ) => 'material', __( 'Dripicons', 'nimbus' ) => 'dripicons', __( 'Elegant', 'nimbus' ) => 'elegantlcons', __( 'pe7 Line', 'nimbus' ) => 'pe7icons', ), 'param_name' => 'type', 'description' => __( 'Select icon library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-adjust', 'settings' => array( 'emptyIcon' => false, 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_openiconic', 'value' => 'vc-oi vc-oi-dial', 'settings' => array( 'emptyIcon' => false, 'type' => 'openiconic', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_typicons', 'value' => 'typcn typcn-adjust-brightness', 'settings' => array( 'emptyIcon' => false, 'type' => 'typicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_entypo', 'value' => 'entypo-icon entypo-icon-note', 'settings' => array( 'emptyIcon' => false, 'type' => 'entypo', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_linecons', 'value' => 'vc_li vc_li-heart', 'settings' => array( 'emptyIcon' => false, 'type' => 'linecons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', 'settings' => array( 'emptyIcon' => false, 'type' => 'monosocial', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_material', 'value' => 'vc-material vc-material-cake', 'settings' => array( 'emptyIcon' => false, 'type' => 'material', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'material', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_dripicons', 'value' => 'dripicons-alarm', 'settings' => array( 'emptyIcon' => false, 'type' => 'dripicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'dripicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_elegantlcons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'elegantlcons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'elegantlcons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_pe7icons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'pe7icons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'pe7icons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => true ), array( 'type' => 'textarea', 'heading' => esc_html__( 'Content', 'nimbus' ), 'param_name' => 'content', 'admin_label' => false ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'nimbus' ), 'value' => array( __( 'Black', 'nimbus' ) => 'black', __( 'White', 'nimbus' ) => 'white', ), 'admin_label' => false, 'param_name' => 'color', ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Features List vc_map(array( "name" => esc_html__("Simple Features List", 'nimbus'), "description" => esc_html__("High light list item.",'nimbus'), "base" => "nb_simple_feature_list", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'List Item', 'nimbus' ), 'param_name' => 'lists', 'params' => array( array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => true ), array( 'type' => 'textarea', 'heading' => esc_html__( 'Description', 'nimbus' ), 'param_name' => 'desc', 'admin_label' => false ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'nimbus' ), 'value' => array( __( 'Black', 'nimbus' ) => 'black', __( 'White', 'nimbus' ) => 'white', ), 'admin_label' => false, 'param_name' => 'color', ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ), array( 'type' => 'css_editor', 'heading' => __( 'Css', 'nimbus' ), 'param_name' => 'css', 'group' => __( 'Design options', 'nimbus' ), ), ) )); // Icon List vc_map(array( "name" => esc_html__("Icon List", 'nimbus'), "description" => esc_html__("Icon list item with link.",'nimbus'), "base" => "nb_iconlist", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'List Item', 'nimbus' ), 'param_name' => 'lists', 'params' => array( array( 'type' => 'dropdown', 'heading' => __( 'Icon', 'nimbus' ), 'value' => array( __( 'Font Awesome', 'nimbus' ) => 'fontawesome', __( 'Open Iconic', 'nimbus' ) => 'openiconic', __( 'Typicons', 'nimbus' ) => 'typicons', __( 'Entypo', 'nimbus' ) => 'entypo', __( 'Linecons', 'nimbus' ) => 'linecons', __( 'Mono Social', 'nimbus' ) => 'monosocial', __( 'Material', 'nimbus' ) => 'material', __( 'Dripicons', 'nimbus' ) => 'dripicons', __( 'Elegant', 'nimbus' ) => 'elegantlcons', __( 'pe7 Line', 'nimbus' ) => 'pe7icons', ), 'param_name' => 'type', 'description' => __( 'Select icon library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-adjust', 'settings' => array( 'emptyIcon' => false, 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_openiconic', 'value' => 'vc-oi vc-oi-dial', 'settings' => array( 'emptyIcon' => false, 'type' => 'openiconic', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_typicons', 'value' => 'typcn typcn-adjust-brightness', 'settings' => array( 'emptyIcon' => false, 'type' => 'typicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_entypo', 'value' => 'entypo-icon entypo-icon-note', 'settings' => array( 'emptyIcon' => false, 'type' => 'entypo', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_linecons', 'value' => 'vc_li vc_li-heart', 'settings' => array( 'emptyIcon' => false, 'type' => 'linecons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', 'settings' => array( 'emptyIcon' => false, 'type' => 'monosocial', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_material', 'value' => 'vc-material vc-material-cake', 'settings' => array( 'emptyIcon' => false, 'type' => 'material', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'material', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_dripicons', 'value' => 'dripicons-alarm', 'settings' => array( 'emptyIcon' => false, 'type' => 'dripicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'dripicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_elegantlcons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'elegantlcons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'elegantlcons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_pe7icons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'pe7icons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'pe7icons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link', 'nimbus' ), 'param_name' => 'link', 'admin_label' => true ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'nimbus' ), 'value' => array( __( 'Black', 'nimbus' ) => 'black', __( 'White', 'nimbus' ) => 'white', ), 'admin_label' => false, 'param_name' => 'color', ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Partner Logo vc_map(array( "name" => esc_html__("Partner Logo", 'nimbus'), "description" => esc_html__("Upload your partner logo",'nimbus'), "base" => "nb_partner_logo", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'List Item', 'nimbus' ), 'param_name' => 'partner', 'params' => array( array( 'type' => 'attach_image', 'heading' => esc_html__( 'Partner Logo', 'nimbus' ), 'param_name' => 'logo', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Partner Name', 'nimbus' ), 'param_name' => 'name', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link', 'nimbus' ), 'param_name' => 'link', 'admin_label' => false ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Columns', 'nimbus' ), 'value' => array( __( '2 Columns', 'nimbus' ) => 2, __( '3 Columns', 'nimbus' ) => 3, __( '4 Columns', 'nimbus' ) => 4, __( '5 Columns', 'nimbus' ) => 5, __( '6 Columns', 'nimbus' ) => 6, ), 'param_name' => 'col', 'description' => __( 'Select columns to display.', 'nimbus' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Layout', 'nimbus' ), 'value' => array( __( 'Carousel', 'nimbus' ) => 'carousel', __( 'Grid', 'nimbus' ) => 'grid', ), 'param_name' => 'layout', 'description' => __( 'Select layout to display.', 'nimbus' ), ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Prcing Item vc_map(array( "name" => esc_html__("Pricing Item", 'nimbus'), "description" => esc_html__("Add pricing table to your site",'nimbus'), "base" => "nb_pricing_item", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'dropdown', 'heading' => __( 'Icon', 'nimbus' ), 'value' => array( __( 'Font Awesome', 'nimbus' ) => 'fontawesome', __( 'Open Iconic', 'nimbus' ) => 'openiconic', __( 'Typicons', 'nimbus' ) => 'typicons', __( 'Entypo', 'nimbus' ) => 'entypo', __( 'Linecons', 'nimbus' ) => 'linecons', __( 'Mono Social', 'nimbus' ) => 'monosocial', __( 'Material', 'nimbus' ) => 'material', __( 'Dripicons', 'nimbus' ) => 'dripicons', __( 'Elegant', 'nimbus' ) => 'elegantlcons', __( 'pe7 Line', 'nimbus' ) => 'pe7icons', ), 'param_name' => 'type', 'description' => __( 'Select icon library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-adjust', 'settings' => array( 'emptyIcon' => false, 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_openiconic', 'value' => 'vc-oi vc-oi-dial', 'settings' => array( 'emptyIcon' => false, 'type' => 'openiconic', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_typicons', 'value' => 'typcn typcn-adjust-brightness', 'settings' => array( 'emptyIcon' => false, 'type' => 'typicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_entypo', 'value' => 'entypo-icon entypo-icon-note', 'settings' => array( 'emptyIcon' => false, 'type' => 'entypo', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_linecons', 'value' => 'vc_li vc_li-heart', 'settings' => array( 'emptyIcon' => false, 'type' => 'linecons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', 'settings' => array( 'emptyIcon' => false, 'type' => 'monosocial', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_material', 'value' => 'vc-material vc-material-cake', 'settings' => array( 'emptyIcon' => false, 'type' => 'material', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'material', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_dripicons', 'value' => 'dripicons-alarm', 'settings' => array( 'emptyIcon' => false, 'type' => 'dripicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'dripicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_elegantlcons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'elegantlcons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'elegantlcons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_pe7icons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'pe7icons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'pe7icons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => true ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Description', 'nimbus' ), 'param_name' => 'desc', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Price', 'nimbus' ), 'param_name' => 'price', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Currency', 'nimbus' ), 'param_name' => 'currency', 'admin_label' => false ), array( 'type' => 'textarea', 'heading' => esc_html__( 'Content', 'nimbus' ), 'param_name' => 'content', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link', 'nimbus' ), 'param_name' => 'link', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link Title', 'nimbus' ), 'param_name' => 'link_title', 'admin_label' => false ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Pricing Tabs vc_map(array( "name" => esc_html__("Pricing Tab", 'nimbus'), "description" => esc_html__("Add pricing tab to your site",'nimbus'), "base" => "nb_pricing_tab", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'Pricing Item', 'nimbus' ), 'param_name' => 'item', 'params' => array( array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => true ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Description', 'nimbus' ), 'param_name' => 'desc', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Price', 'nimbus' ), 'param_name' => 'price', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Currency', 'nimbus' ), 'param_name' => 'currency', 'admin_label' => false ), array( 'type' => 'textarea', 'heading' => esc_html__( 'Features', 'nimbus' ), 'param_name' => 'content', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link', 'nimbus' ), 'param_name' => 'link', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link Title', 'nimbus' ), 'param_name' => 'link_title', 'admin_label' => false ), ), ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Description', 'nimbus' ), 'param_name' => 'desc', 'admin_label' => false ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Testimonial Slider vc_map(array( "name" => esc_html__("Testimonial Slider", 'nimbus'), "description" => esc_html__("Add testimonial slider item",'nimbus'), "base" => "nb_testimonial_slider", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'Pricing Item', 'nimbus' ), 'param_name' => 'item', 'params' => array( array( 'type' => 'attach_image', 'heading' => esc_html__( 'Avatar', 'nimbus' ), 'param_name' => 'avatar', 'admin_label' => true ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Name', 'nimbus' ), 'param_name' => 'name', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Position', 'nimbus' ), 'param_name' => 'position', 'admin_label' => false ), array( 'type' => 'textarea', 'heading' => esc_html__( 'Content', 'nimbus' ), 'param_name' => 'content', 'admin_label' => false ), ), ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Skillbar vc_map(array( "name" => esc_html__("Skillbar", 'nimbus'), "description" => esc_html__("Skill bar",'nimbus'), "base" => "nb_skillbar", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( "type" => "textfield", "heading" => esc_html__("Title", 'nimbus'), "param_name" => "title", ), array( "type" => "textfield", "heading" => esc_html__("Percent", 'nimbus'), "param_name" => "percent", ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Solid Title vc_map(array( "name" => esc_html__("Title", 'nimbus'), "description" => esc_html__("Special title style",'nimbus'), "base" => "nb_solid_title", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( "type" => "textfield", "heading" => esc_html__("Title", 'nimbus'), "param_name" => "title", ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Team Member vc_map(array( "name" => esc_html__("Member", 'nimbus'), "description" => esc_html__("Member profile",'nimbus'), "base" => "nb_team_member", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( "type" => "attach_image", "heading" => esc_html__("Avatar", 'nimbus'), "param_name" => "avatar", ), array( "type" => "textfield", "heading" => esc_html__("Name", 'nimbus'), "param_name" => "name", ), array( "type" => "textfield", "heading" => esc_html__("Position", 'nimbus'), "param_name" => "position", ), array( "type" => "textfield", "heading" => esc_html__("Facebook", 'nimbus'), "param_name" => "facebook", ), array( "type" => "textfield", "heading" => esc_html__("Twitter", 'nimbus'), "param_name" => "twitter", ), array( "type" => "textfield", "heading" => esc_html__("LinkedIn", 'nimbus'), "param_name" => "linkedin", ), array( "type" => "textfield", "heading" => esc_html__("Email", 'nimbus'), "param_name" => "email", ), array( "type" => "textfield", "heading" => esc_html__("Web", 'nimbus'), "param_name" => "web", ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Timeline List vc_map(array( "name" => esc_html__("Timeline List", 'nimbus'), "description" => esc_html__("Add your timeline to your site",'nimbus'), "base" => "nb_timeline_list", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'Timeline Item', 'nimbus' ), 'param_name' => 'lists', 'params' => array( array( 'type' => 'textfield', 'heading' => esc_html__( 'Date', 'nimbus' ), 'param_name' => 'date', 'admin_label' => true ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link', 'nimbus' ), 'param_name' => 'link', 'admin_label' => false ), ), ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Portfolio vc_map(array( "name" => esc_html__("Portfolio", 'nimbus'), "description" => esc_html__("Add your portfolio",'nimbus'), "base" => "nb_portfolio", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'dropdown', 'heading' => __( 'Filter', 'nimbus' ), 'value' => array( __( 'Disable', 'nimbus' ) => '', __( 'Categories', 'nimbus' ) => 'portfolio_category', __( 'Tags', 'nimbus' ) => 'portfolio_tag', ), 'param_name' => 'filter', ), array( 'type' => 'textfield', 'heading' => __( 'Filter Default', 'nimbus' ), 'value' => 'All', 'param_name' => 'filter_default', ), array( 'type' => 'dropdown', 'heading' => __( 'Columns', 'nimbus' ), 'value' => array( __( '2 Columns', 'nimbus' ) => 6, __( '3 Columns', 'nimbus' ) => 4, __( '4 Columns', 'nimbus' ) => 3, __( '5 Columns', 'nimbus' ) => 24, __( '6 Columns', 'nimbus' ) => 2, ), 'param_name' => 'col', 'description' => __( 'Select columns to display.', 'nimbus' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Row', 'nimbus' ), 'value' => array( 'Default' => 'default', 'No Margin' => 'no-margin', ), 'param_name' => 'row', 'description' => __( 'Select row.', 'nimbus' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Layout', 'nimbus' ), 'value' => array( 'Grid' => 'grid', 'Metro' => 'metro', 'Masonry' => 'masonry', ), 'param_name' => 'layout', 'description' => __( 'Select layout to display.', 'nimbus' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'nimbus' ), 'value' => array( 'Default' => 'default', 'Overlay' => 'hover', 'Title' => 'fadein', 'Modern' => 'modern', ), 'param_name' => 'style', 'description' => __( 'Select layout to display.', 'nimbus' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Color', 'nimbus' ), 'value' => array( 'Black' => 'black', 'White' => 'white', ), 'param_name' => 'color', 'description' => __( 'Select color to display.', 'nimbus' ), ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Number item to display', 'nimbus' ), 'param_name' => 'num', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Metro Layout', 'nimbus' ), 'param_name' => 'portfolio_metro_layout', 'value' => '3,3,3,3,6,6,6,6,3,3,6,6,3,3,6', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Category', 'nimbus' ), 'param_name' => 'portfolio_category', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Tag', 'nimbus' ), 'param_name' => 'portfolio_tag', 'admin_label' => false ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Blog vc_map(array( "name" => esc_html__("Blog", 'nimbus'), "description" => esc_html__("Add your blog",'nimbus'), "base" => "nb_blog", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'dropdown', 'heading' => __( 'Columns', 'nimbus' ), 'value' => array( __( '2 Columns', 'nimbus' ) => 6, __( '3 Columns', 'nimbus' ) => 4, __( '4 Columns', 'nimbus' ) => 3, __( '5 Columns', 'nimbus' ) => 24, __( '6 Columns', 'nimbus' ) => 2, ), 'param_name' => 'col', 'description' => __( 'Select columns to display.', 'nimbus' ), ), array( 'type' => 'dropdown', 'heading' => __( 'Layout', 'nimbus' ), 'value' => array( 'Grid' => 'grid', 'Metro' => 'metro', 'Masonry' => 'masonry', ), 'param_name' => 'layout', 'description' => __( 'Select layout to display.', 'nimbus' ), ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Number item to display', 'nimbus' ), 'param_name' => 'num', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Category', 'nimbus' ), 'param_name' => 'cat', 'admin_label' => false ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Tag', 'nimbus' ), 'param_name' => 'tag', 'admin_label' => false ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Button vc_map(array( "name" => esc_html__("Button", 'nimbus'), "description" => esc_html__("Add button to your site.",'nimbus'), "base" => "nb_button", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'vc_link', 'heading' => esc_html__( 'Link', 'nimbus' ), 'param_name' => 'link', 'admin_label' => false ), array( 'type' => 'dropdown', 'heading' => __( 'Style', 'nimbus' ), 'value' => array( __( 'Solid', 'nimbus' ) => 'solid-style', __( 'Border', 'nimbus' ) => 'border-style', ), 'param_name' => 'style', ), array( 'type' => 'dropdown', 'heading' => __( 'Size', 'nimbus' ), 'value' => array( __( 'Normal', 'nimbus' ) => 'normal-size', __( 'Medium', 'nimbus' ) => 'medium-size', __( 'Large', 'nimbus' ) => 'large-size', ), 'param_name' => 'size', ), array( 'type' => 'dropdown', 'heading' => __( 'Border Style', 'nimbus' ), 'value' => array( __( 'None', 'nimbus' ) => 'none-border', __( 'Small Border', 'nimbus' ) => 'small-style', __( 'Strong Border', 'nimbus' ) => 'strong-style', ), 'param_name' => 'border', ), array( 'type' => 'dropdown', 'heading' => __( 'Text Color', 'nimbus' ), 'value' => array( __( 'Theme Color', 'nimbus' ) => 'theme-color-text', __( 'White', 'nimbus' ) => 'white-text', __( 'Black', 'nimbus' ) => 'black-text', ), 'param_name' => 'color', ), array( 'type' => 'dropdown', 'heading' => __( 'Effect', 'nimbus' ), 'value' => array( __( 'Normal', 'nimbus' ) => 'normal-effect', __( 'Slide Out', 'nimbus' ) => 'slide-effect', ), 'param_name' => 'effect', ), array( 'type' => 'checkbox', 'heading' => esc_html__( 'User Icon ?', 'nimbus' ), 'param_name' => 'icon_use', 'admin_label' => false ), array( "type" => "dropdown", "heading" => esc_html__("Icon Style", 'nimbus'), "param_name" => "icon_style", "value" => array( esc_html__("Select icon style", 'nimbus') => "", esc_html__("Icon Font", 'nimbus') => "icon", esc_html__("SVG", 'nimbus') => "svg", ), 'dependency' => array( 'element' => 'icon_use', 'value' => 'true', ), ), array( "type" => "colorpicker", "heading" => esc_html__("Background Color", 'nimbus'), "param_name" => "bg_color", ), array( "type" => "colorpicker", "heading" => esc_html__("Hover Background Color", 'nimbus'), "param_name" => "bghover_color", ), array( "type" => "textfield", "heading" => esc_html__("SVG URL", 'nimbus'), "param_name" => "svg", 'dependency' => array( 'element' => 'icon_style', 'value' => 'svg', ), ), array( 'type' => 'dropdown', 'heading' => __( 'Icon', 'nimbus' ), 'value' => array( __( 'Font Awesome', 'nimbus' ) => 'fontawesome', __( 'Open Iconic', 'nimbus' ) => 'openiconic', __( 'Typicons', 'nimbus' ) => 'typicons', __( 'Entypo', 'nimbus' ) => 'entypo', __( 'Linecons', 'nimbus' ) => 'linecons', __( 'Mono Social', 'nimbus' ) => 'monosocial', __( 'Material', 'nimbus' ) => 'material', __( 'Dripicons', 'nimbus' ) => 'dripicons', __( 'Elegant', 'nimbus' ) => 'elegantlcons', __( 'pe7 Line', 'nimbus' ) => 'pe7icons', ), 'admin_label' => true, 'param_name' => 'type', 'description' => __( 'Select icon library.', 'nimbus' ), 'dependency' => array( 'element' => 'icon_style', 'value' => 'icon', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_fontawesome', 'value' => 'fa fa-adjust', 'settings' => array( 'emptyIcon' => false, 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'fontawesome', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_openiconic', 'value' => 'vc-oi vc-oi-dial', 'settings' => array( 'emptyIcon' => false, 'type' => 'openiconic', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'openiconic', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_typicons', 'value' => 'typcn typcn-adjust-brightness', 'settings' => array( 'emptyIcon' => false, 'type' => 'typicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'typicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_entypo', 'value' => 'entypo-icon entypo-icon-note', 'settings' => array( 'emptyIcon' => false, 'type' => 'entypo', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'entypo', ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_linecons', 'value' => 'vc_li vc_li-heart', 'settings' => array( 'emptyIcon' => false, 'type' => 'linecons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'linecons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_monosocial', 'value' => 'vc-mono vc-mono-fivehundredpx', 'settings' => array( 'emptyIcon' => false, 'type' => 'monosocial', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'monosocial', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_material', 'value' => 'vc-material vc-material-cake', 'settings' => array( 'emptyIcon' => false, 'type' => 'material', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'material', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_dripicons', 'value' => 'dripicons-alarm', 'settings' => array( 'emptyIcon' => false, 'type' => 'dripicons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'dripicons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_elegantlcons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'elegantlcons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'elegantlcons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( 'type' => 'iconpicker', 'heading' => __( 'Icon', 'nimbus' ), 'param_name' => 'icon_pe7icons', 'value' => 'arrow_up', 'settings' => array( 'emptyIcon' => false, 'type' => 'pe7icons', 'iconsPerPage' => 4000, ), 'dependency' => array( 'element' => 'type', 'value' => 'pe7icons', ), 'description' => __( 'Select icon from library.', 'nimbus' ), ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Video Button vc_map(array( "name" => esc_html__("Video Button", 'nimbus'), "description" => esc_html__("Add your video button to your site.",'nimbus'), "base" => "nb_video_button", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'textfield', 'heading' => esc_html__( 'Video Link', 'nimbus' ), 'param_name' => 'link', 'admin_label' => false ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Title Slider vc_map(array( "name" => esc_html__("Title Slider", 'nimbus'), "description" => esc_html__("Add your slider title to your site",'nimbus'), "base" => "nb_title_slider", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'dropdown', 'heading' => __( 'Color', 'nimbus' ), 'value' => array( __( 'Black', 'nimbus' ) => 'black', __( 'White', 'nimbus' ) => 'white', ), 'param_name' => 'black', ), array( 'type' => 'dropdown', 'heading' => __( 'Title Size', 'nimbus' ), 'value' => array( __( 'Normal', 'nimbus' ) => 'nb-large-text', __( 'Medium', 'nimbus' ) => 'nb-s-text', __( 'Large', 'nimbus' ) => 'nb-x-text', ), 'param_name' => 'title_size', ), array( 'type' => 'dropdown', 'heading' => __( 'Description Size', 'nimbus' ), 'value' => array( __( 'Normal', 'nimbus' ) => 'nb-large-text', __( 'Medium', 'nimbus' ) => 'nb-s-text', __( 'Large', 'nimbus' ) => 'nb-x-text', ), 'param_name' => 'desc_size', ), array( 'type' => 'param_group', 'heading' => esc_html__( 'Title Item', 'nimbus' ), 'param_name' => 'item', 'params' => array( array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => true ), array( 'type' => 'textarea', 'heading' => esc_html__( 'Description', 'nimbus' ), 'param_name' => 'desc', 'admin_label' => false ), ), ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ) ) )); // Divider vc_map(array( "name" => esc_html__("Divider", 'nimbus'), "description" => esc_html__("Add divider to your site",'nimbus'), "base" => "nb_divider", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'dropdown', 'heading' => __( 'Color', 'nimbus' ), 'value' => array( __( 'Black', 'nimbus' ) => 'black', __( 'White', 'nimbus' ) => 'white', ), 'param_name' => 'black', ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ), array( 'type' => 'css_editor', 'heading' => __( 'Css', 'nimbus' ), 'param_name' => 'css', 'group' => __( 'Design options', 'nimbus' ), ), ) )); // Title vc_map(array( "name" => esc_html__("Title", 'nimbus'), "description" => esc_html__("Add title to your site",'nimbus'), "base" => "nb_title", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => true ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ), array( 'type' => 'css_editor', 'heading' => __( 'Css', 'nimbus' ), 'param_name' => 'css', 'group' => __( 'Design options', 'nimbus' ), ), ) )); // Templates $nb_template = array(); $nb_template['default'] = 'Select your template'; $nb_templates = get_posts( array( 'post_type' => 'nb_templates', 'posts_per_page' => -1 ) ); if ( $nb_templates ) { foreach ($nb_templates as $item) { $nb_template[$item->post_title] = $item->ID; } }; vc_map(array( "name" => esc_html__("Template", 'nimbus'), "description" => esc_html__("Add custom templates",'nimbus'), "base" => "nb_template", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'dropdown', 'heading' => esc_html__( 'Template', 'nimbus' ), 'param_name' => 'template', 'admin_label' => true, 'value' => $nb_template, ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ), ) )); // Image Slider vc_map(array( "name" => esc_html__("Image Slider", 'nimbus'), "description" => esc_html__("Add custom slider to your site",'nimbus'), "base" => "nb_image_slider", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'attach_images', 'heading' => esc_html__( 'Images', 'nimbus' ), 'param_name' => 'images', ), array( 'type' => 'dropdown', 'heading' => __( 'Columns', 'nimbus' ), 'value' => array( __( '1 Column', 'nimbus' ) => 1, __( '2 Column', 'nimbus' ) => 2, __( '3 Column', 'nimbus' ) => 3, __( '4 Column', 'nimbus' ) => 4, __( '5 Column', 'nimbus' ) => 5, __( '6 Column', 'nimbus' ) => 6, ), 'param_name' => 'col', ), array( 'type' => 'checkbox', 'heading' => esc_html__( 'Center ?', 'nimbus' ), 'param_name' => 'center', ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ), ) )); // Gallery vc_map(array( "name" => esc_html__("Gallery", 'nimbus'), "description" => esc_html__("Add custom gallery to your site",'nimbus'), "base" => "nb_gallery", "wrapper_class" => "clearfix", "category" => esc_html__('Nimbus', 'nimbus'), "params" => array( array( 'type' => 'param_group', 'heading' => esc_html__( 'Gallery Item', 'nimbus' ), 'param_name' => 'item', 'params' => array( array( 'type' => 'attach_image', 'heading' => esc_html__( 'Image', 'nimbus' ), 'param_name' => 'img', ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Title', 'nimbus' ), 'param_name' => 'title', 'admin_label' => true ), array( 'type' => 'textfield', 'heading' => esc_html__( 'Link', 'nimbus' ), 'param_name' => 'link', ), ), ), array( 'type' => 'dropdown', 'heading' => __( 'Columns', 'nimbus' ), 'value' => array( __( '2 Column', 'nimbus' ) => 6, __( '3 Column', 'nimbus' ) => 4, __( '4 Column', 'nimbus' ) => 3, __( '6 Column', 'nimbus' ) => 2, ), 'param_name' => 'col', ), array( 'type' => 'dropdown', 'heading' => __( 'Layout', 'nimbus' ), 'value' => array( __( 'Grid', 'nimbus' ) => 'grid', __( 'Masonry', 'nimbus' ) => 'masonry', __( 'Metro', 'nimbus' ) => 'metro', ), 'param_name' => 'layout', ), array( 'type' => 'textfield', 'heading' => __( 'Metro Grid', 'nimbus' ), 'param_name' => 'metro_grid', ), array( "type" => "textfield", "heading" => esc_html__("Extra class name", 'nimbus'), "param_name" => "class", "description" => esc_html__("If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.", 'nimbus') ), ) )); }inc/class.php000066600000001706152143340070007142 0ustar00input( array( 'class' => 'cmb2-colorpicker color-picker', 'data-default-color' => $field->args( 'default' ), 'data-alpha' => 'true', ) ); } public function setup_admin_scripts() { wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'jw-cmb2-rgba-picker-js', get_theme_file_uri( 'assets/js/admin.js' ), array( 'wp-color-picker' ), self::VERSION, true ); } } $jw_fancy_color = new JW_Fancy_Color(); $jw_fancy_color->hooks();inc/menu.php000066600000031476152143340070007010 0ustar00 $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth; $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; ob_start(); $item_id = esc_attr( $item->ID ); $removed_args = array( 'action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce', ); $original_title = ''; if ( 'taxonomy' == $item->type ) { $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); if ( is_wp_error( $original_title ) ) $original_title = false; } elseif ( 'post_type' == $item->type ) { $original_object = get_post( $item->object_id ); $original_title = $original_object->post_title; } $classes = array( 'menu-item menu-item-depth-' . $depth, 'menu-item-' . esc_attr( $item->object ), 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), ); $title = $item->title; if ( ! empty( $item->_invalid ) ) { $classes[] = 'menu-item-invalid'; /* translators: %s: title of menu item which is invalid */ $title = sprintf( __( '%s (Invalid)' ), $item->title ); } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) { $classes[] = 'pending'; /* translators: %s: title of menu item in draft status */ $title = sprintf( __('%s (Pending)'), $item->title ); } $title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label; $submenu_text = ''; $mega_menu_id = get_post_meta($item->ID, '_cf_mega_menu_id', true); if ( 0 == $depth ) $submenu_text = 'style="display: none;"'; ?>
  • ' ); el = $( '#redux_rAds' ); } el.css( 'position', 'relative' ); el.find( '.rAds' ).attr( 'style', 'position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;' ).css( 'left', '-99999px' ); el.find( '.rAds' ).html( redux.rAds.replace( //, '' ) ); var rAds = el.find( '.rAds' ); var maxHeight = el.height(); var maxWidth = el.width() - el.find( '.display_header' ).width() - 30; rAds.find( 'a' ).css( 'float', 'right' ).css( 'line-height', el.height() + 'px' ).css( 'margin-left', '5px' ); $( document ).ajaxComplete( function() { rAds.find( 'a' ).hide(); setTimeout( function() { $.redux.resizeAds(); rAds.find( 'a' ).fadeIn(); }, 1400 ); setTimeout( function() { $.redux.resizeAds(); }, 1500 ); $( document ).unbind( 'ajaxComplete' ); } ); $( window ).resize( function() { $.redux.resizeAds(); } ); }, 400 ); } } ); })( jQuery ); jQuery.noConflict(); var confirmOnPageExit = function( e ) { //return; // ONLY FOR DEBUGGING // If we haven't been passed the event get the window.event e = e || window.event; var message = redux.args.save_pending; // For IE6-8 and Firefox prior to version 4 if ( e ) { e.returnValue = message; } window.onbeforeunload = null; // For Chrome, Safari, IE8+ and Opera 12+ return message; }; function redux_change( variable ) { variable = jQuery(variable); jQuery( 'body' ).trigger( 'check_dependencies', variable ); if ( variable.hasClass( 'compiler' ) ) { jQuery( '#redux-compiler-hook' ).val( 1 ); } // var test = jQuery( variable ).parents( '.redux-field-container:first' ); // if ( test.hasClass( 'redux-container-typography' ) && redux.field_objects.typography ) { // redux.field_objects.typography.change( test ); // } var rContainer = jQuery( variable ).parents( '.redux-container:first' ); var parentID = jQuery( variable ).closest( '.redux-group-tab' ).attr( 'id' ); // Let's count down the errors now. Fancy. ;) var id = parentID.split( '_' ); id = id[0]; var th = rContainer.find( '.redux-group-tab-link-a[data-key="' + id + '"]' ).parents( '.redux-group-tab-link-li:first' ); var subParent = jQuery( '#' + parentID + '_li' ).parents( '.hasSubSections:first' ); if ( jQuery( variable ).parents( 'fieldset.redux-field:first' ).hasClass( 'redux-field-error' ) ) { jQuery( variable ).parents( 'fieldset.redux-field:first' ).removeClass( 'redux-field-error' ); jQuery( variable ).parent().find( '.redux-th-error' ).slideUp(); var errorCount = (parseInt( rContainer.find( '.redux-field-errors span' ).text() ) - 1); if ( errorCount <= 0 ) { //console.log('HERE'); jQuery( '#' + parentID + '_li .redux-menu-error' ).fadeOut( 'fast' ).remove(); jQuery( '#' + parentID + '_li .redux-group-tab-link-a' ).removeClass( 'hasError' ); jQuery( '#' + parentID + '_li' ).parents( '.inside:first' ).find( '.redux-field-errors' ).slideUp(); jQuery( variable ).parents( '.redux-container:first' ).find( '.redux-field-errors' ).slideUp(); jQuery( '#redux_metaboxes_errors' ).slideUp(); } else { var errorsLeft = (parseInt( th.find( '.redux-menu-error:first' ).text() ) - 1); if ( errorsLeft <= 0 ) { th.find( '.redux-menu-error:first' ).fadeOut().remove(); } else { th.find( '.redux-menu-error:first' ).text( errorsLeft ); } rContainer.find( '.redux-field-errors span' ).text( errorCount ); } if ( subParent.length !== 0 ) { if ( subParent.find( '.redux-menu-error' ).length === 0 ) { subParent.find( '.hasError' ).removeClass( 'hasError' ); } } } if ( jQuery( variable ).parents( 'fieldset.redux-field:first' ).hasClass( 'redux-field-warning' ) ) { jQuery( variable ).parents( 'fieldset.redux-field:first' ).removeClass( 'redux-field-warning' ); jQuery( variable ).parent().find( '.redux-th-warning' ).slideUp(); var warningCount = (parseInt( rContainer.find( '.redux-field-warnings span' ).text() ) - 1); if ( warningCount <= 0 ) { //console.log('HERE'); jQuery( '#' + parentID + '_li .redux-menu-warning' ).fadeOut( 'fast' ).remove(); jQuery( '#' + parentID + '_li .redux-group-tab-link-a' ).removeClass( 'hasWarning' ); jQuery( '#' + parentID + '_li' ).parents( '.inside:first' ).find( '.redux-field-warnings' ).slideUp(); jQuery( variable ).parents( '.redux-container:first' ).find( '.redux-field-warnings' ).slideUp(); jQuery( '#redux_metaboxes_warnings' ).slideUp(); } else { // Let's count down the warnings now. Fancy. ;) var warningsLeft = (parseInt( th.find( '.redux-menu-warning:first' ).text() ) - 1); if ( warningsLeft <= 0 ) { th.find( '.redux-menu-warning:first' ).fadeOut().remove(); } else { th.find( '.redux-menu-warning:first' ).text( warningsLeft ); } rContainer.find( '.redux-field-warning span' ).text( warningCount ); } if ( subParent.length !== 0 ) { if ( subParent.find( '.redux-menu-warning' ).length === 0 ) { subParent.find( '.hasWarning' ).removeClass( 'hasWarning' ); } } } // Don't show the changed value notice while save_notice is visible. if ( rContainer.find( '.saved_notice:visible' ).length > 0 ) { return; } if ( !redux.args.disable_save_warn ) { rContainer.find( '.redux-save-warn' ).slideDown(); window.onbeforeunload = confirmOnPageExit; } } function colorValidate( field ) { var value = jQuery( field ).val(); var hex = colorNameToHex( value ); if ( hex !== value.replace( '#', '' ) ) { return hex; } return value; } function colorNameToHex( colour ) { var tcolour = colour.replace( /^\s\s*/, '' ).replace( /\s\s*$/, '' ).replace( "#", "" ); var colours = { "aliceblue": "#f0f8ff", "antiquewhite": "#faebd7", "aqua": "#00ffff", "aquamarine": "#7fffd4", "azure": "#f0ffff", "beige": "#f5f5dc", "bisque": "#ffe4c4", "black": "#000000", "blanchedalmond": "#ffebcd", "blue": "#0000ff", "blueviolet": "#8a2be2", "brown": "#a52a2a", "burlywood": "#deb887", "cadetblue": "#5f9ea0", "chartreuse": "#7fff00", "chocolate": "#d2691e", "coral": "#ff7f50", "cornflowerblue": "#6495ed", "cornsilk": "#fff8dc", "crimson": "#dc143c", "cyan": "#00ffff", "darkblue": "#00008b", "darkcyan": "#008b8b", "darkgoldenrod": "#b8860b", "darkgray": "#a9a9a9", "darkgreen": "#006400", "darkkhaki": "#bdb76b", "darkmagenta": "#8b008b", "darkolivegreen": "#556b2f", "darkorange": "#ff8c00", "darkorchid": "#9932cc", "darkred": "#8b0000", "darksalmon": "#e9967a", "darkseagreen": "#8fbc8f", "darkslateblue": "#483d8b", "darkslategray": "#2f4f4f", "darkturquoise": "#00ced1", "darkviolet": "#9400d3", "deeppink": "#ff1493", "deepskyblue": "#00bfff", "dimgray": "#696969", "dodgerblue": "#1e90ff", "firebrick": "#b22222", "floralwhite": "#fffaf0", "forestgreen": "#228b22", "fuchsia": "#ff00ff", "gainsboro": "#dcdcdc", "ghostwhite": "#f8f8ff", "gold": "#ffd700", "goldenrod": "#daa520", "gray": "#808080", "green": "#008000", "greenyellow": "#adff2f", "honeydew": "#f0fff0", "hotpink": "#ff69b4", "indianred ": "#cd5c5c", "indigo ": "#4b0082", "ivory": "#fffff0", "khaki": "#f0e68c", "lavender": "#e6e6fa", "lavenderblush": "#fff0f5", "lawngreen": "#7cfc00", "lemonchiffon": "#fffacd", "lightblue": "#add8e6", "lightcoral": "#f08080", "lightcyan": "#e0ffff", "lightgoldenrodyellow": "#fafad2", "lightgrey": "#d3d3d3", "lightgreen": "#90ee90", "lightpink": "#ffb6c1", "lightsalmon": "#ffa07a", "lightseagreen": "#20b2aa", "lightskyblue": "#87cefa", "lightslategray": "#778899", "lightsteelblue": "#b0c4de", "lightyellow": "#ffffe0", "lime": "#00ff00", "limegreen": "#32cd32", "linen": "#faf0e6", "magenta": "#ff00ff", "maroon": "#800000", "mediumaquamarine": "#66cdaa", "mediumblue": "#0000cd", "mediumorchid": "#ba55d3", "mediumpurple": "#9370d8", "mediumseagreen": "#3cb371", "mediumslateblue": "#7b68ee", "mediumspringgreen": "#00fa9a", "mediumturquoise": "#48d1cc", "mediumvioletred": "#c71585", "midnightblue": "#191970", "mintcream": "#f5fffa", "mistyrose": "#ffe4e1", "moccasin": "#ffe4b5", "navajowhite": "#ffdead", "navy": "#000080", "oldlace": "#fdf5e6", "olive": "#808000", "olivedrab": "#6b8e23", "orange": "#ffa500", "orangered": "#ff4500", "orchid": "#da70d6", "palegoldenrod": "#eee8aa", "palegreen": "#98fb98", "paleturquoise": "#afeeee", "palevioletred": "#d87093", "papayawhip": "#ffefd5", "peachpuff": "#ffdab9", "peru": "#cd853f", "pink": "#ffc0cb", "plum": "#dda0dd", "powderblue": "#b0e0e6", "purple": "#800080", "red": "#ff0000", "redux": "#01a3e3", "rosybrown": "#bc8f8f", "royalblue": "#4169e1", "saddlebrown": "#8b4513", "salmon": "#fa8072", "sandybrown": "#f4a460", "seagreen": "#2e8b57", "seashell": "#fff5ee", "sienna": "#a0522d", "silver": "#c0c0c0", "skyblue": "#87ceeb", "slateblue": "#6a5acd", "slategray": "#708090", "snow": "#fffafa", "springgreen": "#00ff7f", "steelblue": "#4682b4", "tan": "#d2b48c", "teal": "#008080", "thistle": "#d8bfd8", "tomato": "#ff6347", "turquoise": "#40e0d0", "violet": "#ee82ee", "wheat": "#f5deb3", "white": "#ffffff", "whitesmoke": "#f5f5f5", "yellow": "#ffff00", "yellowgreen": "#9acd32" }; if ( colours[tcolour.toLowerCase()] !== 'undefined' ) { return colours[tcolour.toLowerCase()]; } return colour; } function redux_hook( object, functionName, callback, before ) { (function( originalFunction ) { object[functionName] = function() { if ( before === true ) { callback.apply( this, [returnValue, originalFunction, arguments] ); } var returnValue = originalFunction.apply( this, arguments ); if ( before !== true ) { callback.apply( this, [returnValue, originalFunction, arguments] ); } return returnValue; }; }( object[functionName] )); }redux/ReduxCore/assets/js/media/media.js000066600000017324152143340070014217 0ustar00/*global redux_change, wp, redux, libFilter */ /** * Media Uploader * Dependencies : jquery, wp media uploader * Feature added by : Smartik - http://smartik.ws/ * Date : 05.28.2013 */ (function($){ "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.media = redux.field_objects.media || {}; var isFiltered; $( document ).ready( function() { } ); redux.field_objects.media.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-media:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } isFiltered = false; // Remove the image button el.find( '.remove-image, .remove-file' ).unbind( 'click' ).on( 'click', function() { redux.field_objects.media.removeFile( $( this ).parents( 'fieldset.redux-field:first' ) ); } ); // Upload media button el.find( '.media_upload_button' ).unbind().on( 'click', function( event ) { redux.field_objects.media.addFile( event, $( this ).parents( 'fieldset.redux-field:first' ) ); } ); } ); }; // Add a file via the wp.media function redux.field_objects.media.addFile = function( event, selector ) { event.preventDefault(); var frame; var jQueryel = $( this ); var libFilter; // If the media frame already exists, reopen it. if ( frame ) { frame.open(); return; } // Get library filter data var filter = $( selector ).find('.library-filter').data('lib-filter'); // Must exist to do decoding if (filter !== undefined) { if (filter !== ''){ libFilter = []; isFiltered = true; filter = decodeURIComponent(filter); filter = JSON.parse(filter); $.each(filter, function(index, value) { libFilter.push(value); }); } } // Create the media frame. frame = wp.media( { multiple: false, library: { type: libFilter //Only allow images }, // Set the title of the modal. title: jQueryel.data( 'choose' ), // Customize the submit button. button: { // Set the text of the button. text: jQueryel.data( 'update' ) // Tell the button not to close the modal, since we're // going to refresh the page when the image is selected. } } ); // When an image is selected, run a callback. frame.on( 'select', function() { // Grab the selected attachment. var attachment = frame.state().get( 'selection' ).first(); frame.close(); var data = $( selector ).find('.data').data(); if ( typeof redux.field_objects.media === 'undefined' || typeof redux.field_objects.media === undefined ) { redux.field_objects.media = {}; } if ( data === undefined || data.mode === 'undefined' ) { data = {}; data.mode = "image"; } if (isFiltered === true) { data.mode = 0; } if (data.mode === 0) { } else { if ( data.mode !== false) { if (attachment.attributes.type !== data.mode) { if (attachment.attributes.subtype !== data.mode ) { return; } } } } selector.find( '.upload' ).val( attachment.attributes.url ); selector.find( '.upload-id' ).val( attachment.attributes.id ); selector.find( '.upload-height' ).val( attachment.attributes.height ); selector.find( '.upload-width' ).val( attachment.attributes.width ); redux_change( $( selector ).find( '.upload-id' ) ); var thumbSrc = attachment.attributes.url; if ( typeof attachment.attributes.sizes !== 'undefined' && typeof attachment.attributes.sizes.thumbnail !== 'undefined' ) { thumbSrc = attachment.attributes.sizes.thumbnail.url; } else if ( typeof attachment.attributes.sizes !== 'undefined' ) { var height = attachment.attributes.height; for ( var key in attachment.attributes.sizes ) { var object = attachment.attributes.sizes[key]; if ( object.height < height ) { height = object.height; thumbSrc = object.url; } } } else { thumbSrc = attachment.attributes.icon; } selector.find( '.upload-thumbnail' ).val( thumbSrc ); if ( !selector.find( '.upload' ).hasClass( 'noPreview' ) ) { selector.find( '.screenshot' ).empty().hide().append( '' ).slideDown( 'fast' ); } //selector.find('.media_upload_button').unbind(); selector.find( '.remove-image' ).removeClass( 'hide' );//show "Remove" button selector.find( '.redux-background-properties' ).slideDown(); } ); // Finally, open the modal. frame.open(); }; // Function to remove the image on click. Still requires a save redux.field_objects.media.removeFile = function( selector ) { // This shouldn't have been run... if ( !selector.find( '.remove-image' ).addClass( 'hide' ) ) { return; } selector.find( '.remove-image' ).addClass( 'hide' );//hide "Remove" button selector.find( '.upload' ).val( '' ); selector.find( '.upload-id' ).val( '' ); selector.find( '.upload-height' ).val( '' ); selector.find( '.upload-width' ).val( '' ); selector.find( '.upload-thumbnail' ).val( '' ); redux_change( $( selector ).find( '.upload-id' ) ); selector.find( '.redux-background-properties' ).hide(); var screenshot = selector.find( '.screenshot' ); // Hide the screenshot screenshot.slideUp(); selector.find( '.remove-file' ).unbind(); // We don't display the upload button if .upload-notice is present // This means the user doesn't have the WordPress 3.5 Media Library Support if ( selector.find( '.section-upload .upload-notice' ).length > 0 ) { selector.find( '.media_upload_button' ).remove(); } }; })( jQuery );redux/ReduxCore/assets/js/media/media.min.js000066600000005675152143340070015007 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.media=redux.field_objects.media||{};var b;a(document).ready(function(){}),redux.field_objects.media.init=function(c){c||(c=a(document).find(".redux-group-tab:visible").find(".redux-container-media:visible")),a(c).each(function(){var c=a(this),d=c;c.hasClass("redux-field-container")||(d=c.parents(".redux-field-container:first")),d.is(":hidden")||d.hasClass("redux-field-init")&&(d.removeClass("redux-field-init"),b=!1,c.find(".remove-image, .remove-file").unbind("click").on("click",function(){redux.field_objects.media.removeFile(a(this).parents("fieldset.redux-field:first"))}),c.find(".media_upload_button").unbind().on("click",function(b){redux.field_objects.media.addFile(b,a(this).parents("fieldset.redux-field:first"))}))})},redux.field_objects.media.addFile=function(c,d){c.preventDefault();var e,f,g=a(this);if(e)return void e.open();var h=a(d).find(".library-filter").data("lib-filter");void 0!==h&&""!==h&&(f=[],b=!0,h=decodeURIComponent(h),h=JSON.parse(h),a.each(h,function(a,b){f.push(b)})),e=wp.media({multiple:!1,library:{type:f},title:g.data("choose"),button:{text:g.data("update")}}),e.on("select",function(){var c=e.state().get("selection").first();e.close();var f=a(d).find(".data").data();if(("undefined"==typeof redux.field_objects.media||void 0===typeof redux.field_objects.media)&&(redux.field_objects.media={}),(void 0===f||"undefined"===f.mode)&&(f={},f.mode="image"),b===!0&&(f.mode=0),0===f.mode);else if(f.mode!==!1&&c.attributes.type!==f.mode&&c.attributes.subtype!==f.mode)return;d.find(".upload").val(c.attributes.url),d.find(".upload-id").val(c.attributes.id),d.find(".upload-height").val(c.attributes.height),d.find(".upload-width").val(c.attributes.width),redux_change(a(d).find(".upload-id"));var g=c.attributes.url;if("undefined"!=typeof c.attributes.sizes&&"undefined"!=typeof c.attributes.sizes.thumbnail)g=c.attributes.sizes.thumbnail.url;else if("undefined"!=typeof c.attributes.sizes){var h=c.attributes.height;for(var i in c.attributes.sizes){var j=c.attributes.sizes[i];j.height').slideDown("fast"),d.find(".remove-image").removeClass("hide"),d.find(".redux-background-properties").slideDown()}),e.open()},redux.field_objects.media.removeFile=function(b){if(b.find(".remove-image").addClass("hide")){b.find(".remove-image").addClass("hide"),b.find(".upload").val(""),b.find(".upload-id").val(""),b.find(".upload-height").val(""),b.find(".upload-width").val(""),b.find(".upload-thumbnail").val(""),redux_change(a(b).find(".upload-id")),b.find(".redux-background-properties").hide();var c=b.find(".screenshot");c.slideUp(),b.find(".remove-file").unbind(),b.find(".section-upload .upload-notice").length>0&&b.find(".media_upload_button").remove()}}}(jQuery);redux/ReduxCore/assets/js/vendor/redux.select2.sortable.js000066600000012770152143340070017657 0ustar00/** * jQuery Select2 Sortable * - enable select2 to be sortable via normal select element * * author : Vafour * modified : Kevin Provance (kprovance) * inspired by : jQuery Chosen Sortable (https://github.com/mrhenry/jquery-chosen-sortable) * License : GPL */ (function ($) { $.fn.extend({ select2SortableOrder: function () { var $this = this.filter('[multiple]'); $this.each(function () { var $select = $(this); // skip elements not select2-ed if (typeof ($select.data('select2')) !== 'object') { return false; } var $select2 = $select.siblings('.select2-container'); var sorted; // Opt group names var optArr = []; $select.find('optgroup').each(function(idx, val) { optArr.push (val); }); $select.find('option').each(function(idx, val) { var groupName = $(this).parent('optgroup').prop('label'); var optVal = this; if (groupName === undefined) { if (this.value !== '' && !this.selected) { optArr.push (optVal); } } }); sorted = $($select2.find('.select2-choices li[class!="select2-search-field"]').map(function () { if (!this) { return undefined; } if($(this).data('select2Data') != undefined){ var id = $(this).data('select2Data').id; return $select.find('option[value="' + id + '"]')[0]; } //var id = $(this).data('select2Data').id; //return $select.find('option[value="' + id + '"]')[0]; })); sorted.push.apply(sorted, optArr); $select.children().remove(); $select.append(sorted); }); return $this; }, select2Sortable: function () { var args = Array.prototype.slice.call(arguments, 0); $this = this.filter('[multiple]'), validMethods = ['destroy']; if (args.length === 0 || typeof (args[0]) === 'object') { var defaultOptions = { bindOrder: 'formSubmit', // or sortableStop sortableOptions: { placeholder: 'ui-state-highlight', items: 'li:not(.select2-search-field)', tolerance: 'pointer' } }; var options = $.extend(defaultOptions, args[0]); // Init select2 only if not already initialized to prevent select2 configuration loss if (typeof ($this.data('select2')) !== 'object') { $this.select2(); } $this.each(function () { var $select = $(this) var $select2choices = $select.siblings('.select2-container').find('.select2-choices'); // Init jQuery UI Sortable $select2choices.sortable(options.sortableOptions); switch (options.bindOrder) { case 'sortableStop': // apply options ordering in sortstop event $select2choices.on("sortstop.select2sortable", function (event, ui) { $select.select2SortableOrder(); }); $select.on('change', function (e) { $(this).select2SortableOrder(); }); break; default: // apply options ordering in form submit $select.closest('form').unbind('submit.select2sortable').on('submit.select2sortable', function () { $select.select2SortableOrder(); }); break; } }); } else if (typeof (args[0] === 'string')) { if ($.inArray(args[0], validMethods) == -1) { throw "Unknown method: " + args[0]; } if (args[0] === 'destroy') { $this.select2SortableDestroy(); } } return $this; }, select2SortableDestroy: function () { var $this = this.filter('[multiple]'); $this.each(function () { var $select = $(this) var $select2choices = $select.parent().find('.select2-choices'); // unbind form submit event $select.closest('form').unbind('submit.select2sortable'); // unbind sortstop event $select2choices.unbind("sortstop.select2sortable"); // destroy select2Sortable $select2choices.sortable('destroy'); }); return $this; } }); }(jQuery));redux/ReduxCore/assets/js/vendor/cookie.js000066600000004434152143340070014625 0ustar00/*! * jQuery Cookie Plugin v1.3.1 * https://github.com/carhartl/jquery-cookie * * Copyright 2013 Klaus Hartl * Released under the MIT license */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as anonymous module. jQueryCookie.define(['jquery'], factory); } else { // Browser globals. factory(jQuery); } }(function ($) { var pluses = /\+/g; function raw(s) { return s; } function decoded(s) { return decodeURIComponent(s.replace(pluses, ' ')); } function converted(s) { if (s.indexOf('"') === 0) { // This is a quoted cookie as according to RFC2068, unescape s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); } try { return config.json ? JSON.parse(s) : s; } catch(er) {} } var config = $.cookie = function (key, value, options) { // write if (value !== undefined) { options = $.extend({}, config.defaults, options); if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); } value = config.json ? JSON.stringify(value) : String(value); return (document.cookie = [ config.raw ? key : encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // read var decode = config.raw ? raw : decoded; var cookies = document.cookie.split('; '); var result = key ? undefined : {}; for (var i = 0, l = cookies.length; i < l; i++) { var parts = cookies[i].split('='); var name = decode(parts.shift()); var cookie = decode(parts.join('=')); if (key && key === name) { result = converted(cookie); break; } if (!key) { result[name] = converted(cookie); } } return result; }; config.defaults = {}; $.removeCookie = function (key, options) { if ($.cookie(key) !== undefined) { // Must not alter options, thus extending a fresh object... $.cookie(key, '', $.extend({}, options, { expires: -1 })); return true; } return false; }; }));redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js000066600000213551152143340070020207 0ustar00// Spectrum Colorpicker v1.3.3 // https://github.com/bgrins/spectrum // Author: Brian Grinstead // License: MIT (function (window, $, undefined) { var defaultOpts = { // Callbacks beforeShow: noop, move: noop, change: noop, show: noop, hide: noop, // Options color: false, flat: false, showInput: false, allowEmpty: false, showButtons: true, clickoutFiresChange: false, showInitial: false, showPalette: false, showPaletteOnly: false, showSelectionPalette: true, localStorageKey: false, appendTo: "body", maxSelectionSize: 7, cancelText: "cancel", chooseText: "choose", clearText: "Clear Color Selection", preferredFormat: false, className: "", // Deprecated - use containerClassName and replacerClassName instead. containerClassName: "", replacerClassName: "", showAlpha: false, theme: "sp-light", palette: [["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]], selectionPalette: [], disabled: false, inputText: '' }, spectrums = [], IE = !!/msie/i.exec( window.navigator.userAgent ), rgbaSupport = (function() { function contains( str, substr ) { return !!~('' + str).indexOf(substr); } var elem = document.createElement('div'); var style = elem.style; style.cssText = 'background-color:rgba(0,0,0,.5)'; return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); })(), inputTypeColorSupport = (function() { var colorInput = $("")[0]; return colorInput.type === "color" && colorInput.value !== "#ffffff"; })(), replaceInput = [ "
    ", "
    ", "
    ", //"
    " + opts.inputText + "
    ", "
    " ].join(''), markup = (function () { // IE does not support gradients with multiple stops, so we need to simulate // that for the rainbow slider with 8 divs that each have a single gradient var gradientFix = ""; if (IE) { for (var i = 1; i <= 6; i++) { gradientFix += "
    "; } } return [ "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", "
    ", gradientFix, "
    ", "
    ", "
    ", "
    ", "
    ", "", "
    ", "
    ", "
    ", "", "", "
    ", "
    ", "
    " ].join(""); })(); function paletteTemplate (p, color, className, tooltipFormat) { var html = []; for (var i = 0; i < p.length; i++) { var current = p[i]; if(current) { var tiny = tinycolor(current); var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light"; c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : ""; var formattedString = tiny.toString(tooltipFormat || "rgb"); var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter(); html.push(''); } else { var cls = 'sp-clear-display'; html.push(''); } } return "
    " + html.join('') + "
    "; } function hideAll() { for (var i = 0; i < spectrums.length; i++) { if (spectrums[i]) { spectrums[i].hide(); } } } function instanceOptions(o, callbackContext) { var opts = $.extend({}, defaultOpts, o); opts.callbacks = { 'move': bind(opts.move, callbackContext), 'change': bind(opts.change, callbackContext), 'show': bind(opts.show, callbackContext), 'hide': bind(opts.hide, callbackContext), 'beforeShow': bind(opts.beforeShow, callbackContext) }; return opts; } function spectrum(element, o) { var opts = instanceOptions(o, element), flat = opts.flat, showSelectionPalette = opts.showSelectionPalette, localStorageKey = opts.localStorageKey, theme = opts.theme, callbacks = opts.callbacks, resize = throttle(reflow, 10), visible = false, dragWidth = 0, dragHeight = 0, dragHelperHeight = 0, slideHeight = 0, slideWidth = 0, alphaWidth = 0, alphaSlideHelperWidth = 0, slideHelperHeight = 0, currentHue = 0, currentSaturation = 0, currentValue = 0, currentAlpha = 1, palette = [], paletteArray = [], paletteLookup = {}, selectionPalette = opts.selectionPalette.slice(0), maxSelectionSize = opts.maxSelectionSize, draggingClass = "sp-dragging", inputText = opts.inputText, shiftMovementDirection = null; var doc = element.ownerDocument, body = doc.body, boundElement = $(element), disabled = false, container = $(markup, doc).addClass(theme), dragger = container.find(".sp-color"), dragHelper = container.find(".sp-dragger"), slider = container.find(".sp-hue"), slideHelper = container.find(".sp-slider"), alphaSliderInner = container.find(".sp-alpha-inner"), alphaSlider = container.find(".sp-alpha"), alphaSlideHelper = container.find(".sp-alpha-handle"), textInput = container.find(".sp-input"), paletteContainer = container.find(".sp-palette"), initialColorContainer = container.find(".sp-initial"), cancelButton = container.find(".sp-cancel"), clearButton = container.find(".sp-clear"), chooseButton = container.find(".sp-choose"), isInput = boundElement.is("input"), isInputTypeColor = isInput && inputTypeColorSupport && boundElement.attr("type") === "color", shouldReplace = isInput && !flat, replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]), offsetElement = (shouldReplace) ? replacer : boundElement, previewElement = replacer.find(".sp-preview-inner"), initialColor = opts.color || (isInput && boundElement.val()), colorOnShow = false, preferredFormat = opts.preferredFormat, currentPreferredFormat = preferredFormat, clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange, isEmpty = !initialColor, allowEmpty = opts.allowEmpty && !isInputTypeColor; if (inputText !== '') { var x = $(offsetElement).find('div.sp-dd'); x.text(inputText); } function applyOptions() { if (opts.showPaletteOnly) { opts.showPalette = true; } if (opts.palette) { palette = opts.palette.slice(0); paletteArray = $.isArray(palette[0]) ? palette : [palette]; paletteLookup = {}; for (var i = 0; i < paletteArray.length; i++) { for (var j = 0; j < paletteArray[i].length; j++) { var rgb = tinycolor(paletteArray[i][j]).toRgbString(); paletteLookup[rgb] = true; } } } container.toggleClass("sp-flat", flat); container.toggleClass("sp-input-disabled", !opts.showInput); container.toggleClass("sp-alpha-enabled", opts.showAlpha); container.toggleClass("sp-clear-enabled", allowEmpty); container.toggleClass("sp-buttons-disabled", !opts.showButtons); container.toggleClass("sp-palette-disabled", !opts.showPalette); container.toggleClass("sp-palette-only", opts.showPaletteOnly); container.toggleClass("sp-initial-disabled", !opts.showInitial); container.addClass(opts.className).addClass(opts.containerClassName); reflow(); } function initialize() { if (IE) { container.find("*:not(input)").attr("unselectable", "on"); } applyOptions(); if (shouldReplace) { boundElement.after(replacer).hide(); } if (!allowEmpty) { clearButton.hide(); } if (flat) { boundElement.after(container).hide(); } else { var appendTo = opts.appendTo === "parent" ? boundElement.parent() : $(opts.appendTo); if (appendTo.length !== 1) { appendTo = $("body"); } appendTo.append(container); } updateSelectionPaletteFromStorage(); offsetElement.bind("click.spectrum touchstart.spectrum", function (e) { if (!disabled) { toggle(); } e.stopPropagation(); if (!$(e.target).is("input")) { e.preventDefault(); } }); if(boundElement.is(":disabled") || (opts.disabled === true)) { disable(); } // Prevent clicks from bubbling up to document. This would cause it to be hidden. container.click(stopPropagation); // Handle user typed input textInput.change(setFromTextInput); textInput.bind("paste", function () { setTimeout(setFromTextInput, 1); }); textInput.keydown(function (e) { if (e.keyCode == 13) { setFromTextInput(); } }); cancelButton.text(opts.cancelText); cancelButton.bind("click.spectrum", function (e) { e.stopPropagation(); e.preventDefault(); hide("cancel"); }); clearButton.attr("title", opts.clearText); clearButton.bind("click.spectrum", function (e) { e.stopPropagation(); e.preventDefault(); isEmpty = true; move(); if(flat) { //for the flat style, this is a change event updateOriginalInput(true); } }); chooseButton.text(opts.chooseText); chooseButton.bind("click.spectrum", function (e) { e.stopPropagation(); e.preventDefault(); if (isValid()) { updateOriginalInput(true); hide(); } }); draggable(alphaSlider, function (dragX, dragY, e) { currentAlpha = (dragX / alphaWidth); isEmpty = false; if (e.shiftKey) { currentAlpha = Math.round(currentAlpha * 10) / 10; } move(); }, dragStart, dragStop); draggable(slider, function (dragX, dragY) { currentHue = parseFloat(dragY / slideHeight); isEmpty = false; if (!opts.showAlpha) { currentAlpha = 1; } move(); }, dragStart, dragStop); draggable(dragger, function (dragX, dragY, e) { // shift+drag should snap the movement to either the x or y axis. if (!e.shiftKey) { shiftMovementDirection = null; } else if (!shiftMovementDirection) { var oldDragX = currentSaturation * dragWidth; var oldDragY = dragHeight - (currentValue * dragHeight); var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY); shiftMovementDirection = furtherFromX ? "x" : "y"; } var setSaturation = !shiftMovementDirection || shiftMovementDirection === "x"; var setValue = !shiftMovementDirection || shiftMovementDirection === "y"; if (setSaturation) { currentSaturation = parseFloat(dragX / dragWidth); } if (setValue) { currentValue = parseFloat((dragHeight - dragY) / dragHeight); } isEmpty = false; if (!opts.showAlpha) { currentAlpha = 1; } move(); }, dragStart, dragStop); if (!!initialColor) { set(initialColor); // In case color was black - update the preview UI and set the format // since the set function will not run (default color is black). updateUI(); currentPreferredFormat = preferredFormat || tinycolor(initialColor).format; addColorToSelectionPalette(initialColor); } else { updateUI(); } if (flat) { show(); } function palletElementClick(e) { if (e.data && e.data.ignore) { set($(this).data("color")); move(); } else { set($(this).data("color")); move(); updateOriginalInput(true); hide(); } return false; } var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum"; paletteContainer.delegate(".sp-thumb-el", paletteEvent, palletElementClick); initialColorContainer.delegate(".sp-thumb-el:nth-child(1)", paletteEvent, { ignore: true }, palletElementClick); } function updateSelectionPaletteFromStorage() { if (localStorageKey && window.localStorage) { // Migrate old palettes over to new format. May want to remove this eventually. try { var oldPalette = window.localStorage[localStorageKey].split(",#"); if (oldPalette.length > 1) { delete window.localStorage[localStorageKey]; $.each(oldPalette, function(i, c) { addColorToSelectionPalette(c); }); } } catch(e) { } try { selectionPalette = window.localStorage[localStorageKey].split(";"); } catch (e) { } } } function addColorToSelectionPalette(color) { if (showSelectionPalette) { var rgb = tinycolor(color).toRgbString(); if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) { selectionPalette.push(rgb); while(selectionPalette.length > maxSelectionSize) { selectionPalette.shift(); } } if (localStorageKey && window.localStorage) { try { window.localStorage[localStorageKey] = selectionPalette.join(";"); } catch(e) { } } } } function getUniqueSelectionPalette() { var unique = []; if (opts.showPalette) { for (i = 0; i < selectionPalette.length; i++) { var rgb = tinycolor(selectionPalette[i]).toRgbString(); if (!paletteLookup[rgb]) { unique.push(selectionPalette[i]); } } } return unique.reverse().slice(0, opts.maxSelectionSize); } function drawPalette() { var currentColor = get(); var html = $.map(paletteArray, function (palette, i) { return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i, opts.preferredFormat); }); updateSelectionPaletteFromStorage(); if (selectionPalette) { html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection", opts.preferredFormat)); } paletteContainer.html(html.join("")); } function drawInitial() { if (opts.showInitial) { var initial = colorOnShow; var current = get(); initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial", opts.preferredFormat)); } } function dragStart() { if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) { reflow(); } container.addClass(draggingClass); shiftMovementDirection = null; boundElement.trigger('dragstart.spectrum', [ get() ]); } function dragStop() { container.removeClass(draggingClass); boundElement.trigger('dragstop.spectrum', [ get() ]); } function setFromTextInput() { var value = textInput.val(); if ((value === null || value === "") && allowEmpty) { set(null); updateOriginalInput(true); } else { var tiny = tinycolor(value); if (tiny.ok) { set(tiny); updateOriginalInput(true); } else { textInput.addClass("sp-validation-error"); } } } function toggle() { if (visible) { hide(); } else { show(); } } function show() { var event = $.Event('beforeShow.spectrum'); if (visible) { reflow(); return; } boundElement.trigger(event, [ get() ]); if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) { return; } hideAll(); visible = true; $(doc).bind("click.spectrum", hide); $(window).bind("resize.spectrum", resize); replacer.addClass("sp-active"); container.removeClass("sp-hidden"); reflow(); updateUI(); colorOnShow = get(); drawInitial(); callbacks.show(colorOnShow); boundElement.trigger('show.spectrum', [ colorOnShow ]); } function hide(e) { // Return on right click if (e && e.type == "click" && e.button == 2) { return; } // Return if hiding is unnecessary if (!visible || flat) { return; } visible = false; $(doc).unbind("click.spectrum", hide); $(window).unbind("resize.spectrum", resize); replacer.removeClass("sp-active"); container.addClass("sp-hidden"); var colorHasChanged = !tinycolor.equals(get(), colorOnShow); if (colorHasChanged) { if (clickoutFiresChange && e !== "cancel") { updateOriginalInput(true); } else { revert(); } } callbacks.hide(get()); boundElement.trigger('hide.spectrum', [ get() ]); } function revert() { set(colorOnShow, true); } function set(color, ignoreFormatChange) { if (tinycolor.equals(color, get())) { // Update UI just in case a validation error needs // to be cleared. updateUI(); return; } var newColor, newHsv; if (!color && allowEmpty) { isEmpty = true; } else { isEmpty = false; newColor = tinycolor(color); newHsv = newColor.toHsv(); currentHue = (newHsv.h % 360) / 360; currentSaturation = newHsv.s; currentValue = newHsv.v; currentAlpha = newHsv.a; } updateUI(); if (newColor && newColor.ok && !ignoreFormatChange) { currentPreferredFormat = preferredFormat || newColor.format; } } function get(opts) { opts = opts || { }; if (allowEmpty && isEmpty) { return null; } return tinycolor.fromRatio({ h: currentHue, s: currentSaturation, v: currentValue, a: Math.round(currentAlpha * 100) / 100 }, { format: opts.format || currentPreferredFormat }); } function isValid() { return !textInput.hasClass("sp-validation-error"); } function move() { updateUI(); callbacks.move(get()); boundElement.trigger('move.spectrum', [ get() ]); } function updateUI() { textInput.removeClass("sp-validation-error"); updateHelperLocations(); // Update dragger background color (gradients take care of saturation and value). var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 }); dragger.css("background-color", flatColor.toHexString()); // Get a format that alpha will be included in (hex and names ignore alpha) var format = currentPreferredFormat; if (currentAlpha < 1 && !(currentAlpha === 0 && format === "name")) { if (format === "hex" || format === "hex3" || format === "hex6" || format === "name") { format = "rgb"; } } var realColor = get({ format: format }), displayColor = ''; //reset background info for preview element previewElement.removeClass("sp-clear-display"); previewElement.css('background-color', 'transparent'); if (!realColor && allowEmpty) { // Update the replaced elements background with icon indicating no color selection previewElement.addClass("sp-clear-display"); } else { var realHex = realColor.toHexString(), realRgb = realColor.toRgbString(); // Update the replaced elements background color (with actual selected color) if (rgbaSupport || realColor.alpha === 1) { previewElement.css("background-color", realRgb); } else { previewElement.css("background-color", "transparent"); previewElement.css("filter", realColor.toFilter()); } if (opts.showAlpha) { var rgb = realColor.toRgb(); rgb.a = 0; var realAlpha = tinycolor(rgb).toRgbString(); var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")"; if (IE) { alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)); } else { alphaSliderInner.css("background", "-webkit-" + gradient); alphaSliderInner.css("background", "-moz-" + gradient); alphaSliderInner.css("background", "-ms-" + gradient); // Use current syntax gradient on unprefixed property. alphaSliderInner.css("background", "linear-gradient(to right, " + realAlpha + ", " + realHex + ")"); } } displayColor = realColor.toString(format); } // Update the text entry input as it changes happen if (opts.showInput) { textInput.val(displayColor); } if (opts.showPalette) { drawPalette(); } drawInitial(); } function updateHelperLocations() { var s = currentSaturation; var v = currentValue; if(allowEmpty && isEmpty) { //if selected color is empty, hide the helpers alphaSlideHelper.hide(); slideHelper.hide(); dragHelper.hide(); } else { //make sure helpers are visible alphaSlideHelper.show(); slideHelper.show(); dragHelper.show(); // Where to show the little circle in that displays your current selected color var dragX = s * dragWidth; var dragY = dragHeight - (v * dragHeight); dragX = Math.max( -dragHelperHeight, Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight) ); dragY = Math.max( -dragHelperHeight, Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight) ); dragHelper.css({ "top": dragY + "px", "left": dragX + "px" }); var alphaX = currentAlpha * alphaWidth; alphaSlideHelper.css({ "left": (alphaX - (alphaSlideHelperWidth / 2)) + "px" }); // Where to show the bar that displays your current selected hue var slideY = (currentHue) * slideHeight; slideHelper.css({ "top": (slideY - slideHelperHeight) + "px" }); } } function updateOriginalInput(fireCallback) { var color = get(), displayColor = '', hasChanged = !tinycolor.equals(color, colorOnShow); if (color) { displayColor = color.toString(currentPreferredFormat); // Update the selection palette with the current color addColorToSelectionPalette(color); } if (isInput) { boundElement.val(displayColor); } colorOnShow = color; if (fireCallback && hasChanged) { callbacks.change(color); boundElement.trigger('change', [ color ]); } } function reflow() { dragWidth = dragger.width(); dragHeight = dragger.height(); dragHelperHeight = dragHelper.height(); slideWidth = slider.width(); slideHeight = slider.height(); slideHelperHeight = slideHelper.height(); alphaWidth = alphaSlider.width(); alphaSlideHelperWidth = alphaSlideHelper.width(); if (!flat) { container.css("position", "absolute"); container.offset(getOffset(container, offsetElement)); } updateHelperLocations(); if (opts.showPalette) { drawPalette(); } boundElement.trigger('reflow.spectrum'); } function destroy() { boundElement.show(); offsetElement.unbind("click.spectrum touchstart.spectrum"); container.remove(); replacer.remove(); spectrums[spect.id] = null; } function option(optionName, optionValue) { if (optionName === undefined) { return $.extend({}, opts); } if (optionValue === undefined) { return opts[optionName]; } opts[optionName] = optionValue; applyOptions(); } function enable() { disabled = false; boundElement.attr("disabled", false); offsetElement.removeClass("sp-disabled"); } function disable() { hide(); disabled = true; boundElement.attr("disabled", true); offsetElement.addClass("sp-disabled"); } initialize(); var spect = { show: show, hide: hide, toggle: toggle, reflow: reflow, option: option, enable: enable, disable: disable, set: function (c) { set(c); updateOriginalInput(); }, get: get, destroy: destroy, container: container }; spect.id = spectrums.push(spect) - 1; return spect; } /** * checkOffset - get the offset below/above and left/right element depending on screen position * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js */ function getOffset(picker, input) { var extraY = 0; var dpWidth = picker.outerWidth(); var dpHeight = picker.outerHeight(); var inputHeight = input.outerHeight(); var doc = picker[0].ownerDocument; var docElem = doc.documentElement; var viewWidth = docElem.clientWidth + $(doc).scrollLeft(); var viewHeight = docElem.clientHeight + $(doc).scrollTop(); var offset = input.offset(); offset.top += inputHeight; offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0); offset.top -= Math.min(offset.top, ((offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(dpHeight + inputHeight - extraY) : extraY)); return offset; } /** * noop - do nothing */ function noop() { } /** * stopPropagation - makes the code only doing this a little easier to read in line */ function stopPropagation(e) { e.stopPropagation(); } /** * Create a function bound to a given object * Thanks to underscore.js */ function bind(func, obj) { var slice = Array.prototype.slice; var args = slice.call(arguments, 2); return function () { return func.apply(obj, args.concat(slice.call(arguments))); }; } /** * Lightweight drag helper. Handles containment within the element, so that * when dragging, the x is within [0,element.width] and y is within [0,element.height] */ function draggable(element, onmove, onstart, onstop) { onmove = onmove || function () { }; onstart = onstart || function () { }; onstop = onstop || function () { }; var doc = element.ownerDocument || document; var dragging = false; var offset = {}; var maxHeight = 0; var maxWidth = 0; var hasTouch = ('ontouchstart' in window); var duringDragEvents = {}; duringDragEvents["selectstart"] = prevent; duringDragEvents["dragstart"] = prevent; duringDragEvents["touchmove mousemove"] = move; duringDragEvents["touchend mouseup"] = stop; function prevent(e) { if (e.stopPropagation) { e.stopPropagation(); } if (e.preventDefault) { e.preventDefault(); } e.returnValue = false; } function move(e) { if (dragging) { // Mouseup happened outside of window if (IE && document.documentMode < 9 && !e.button) { return stop(); } var touches = e.originalEvent.touches; var pageX = touches ? touches[0].pageX : e.pageX; var pageY = touches ? touches[0].pageY : e.pageY; var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth)); var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight)); if (hasTouch) { // Stop scrolling in iOS prevent(e); } onmove.apply(element, [dragX, dragY, e]); } } function start(e) { var rightclick = (e.which) ? (e.which == 3) : (e.button == 2); var touches = e.originalEvent.touches; if (!rightclick && !dragging) { if (onstart.apply(element, arguments) !== false) { dragging = true; maxHeight = $(element).height(); maxWidth = $(element).width(); offset = $(element).offset(); $(doc).bind(duringDragEvents); $(doc.body).addClass("sp-dragging"); if (!hasTouch) { move(e); } prevent(e); } } } function stop() { if (dragging) { $(doc).unbind(duringDragEvents); $(doc.body).removeClass("sp-dragging"); onstop.apply(element, arguments); } dragging = false; } $(element).bind("touchstart mousedown", start); } function throttle(func, wait, debounce) { var timeout; return function () { var context = this, args = arguments; var throttler = function () { timeout = null; func.apply(context, args); }; if (debounce) clearTimeout(timeout); if (debounce || !timeout) timeout = setTimeout(throttler, wait); }; } function log(){/* jshint -W021 */if(window.console){if(Function.prototype.bind)log=Function.prototype.bind.call(console.log,console);else log=function(){Function.prototype.apply.call(console.log,console,arguments);};log.apply(this,arguments);}} /** * Define a jQuery plugin */ var dataID = "spectrum.id"; $.fn.spectrum = function (opts, extra) { if (typeof opts == "string") { var returnValue = this; var args = Array.prototype.slice.call( arguments, 1 ); this.each(function () { var spect = spectrums[$(this).data(dataID)]; if (spect) { var method = spect[opts]; if (!method) { throw new Error( "Spectrum: no such method: '" + opts + "'" ); } if (opts == "get") { returnValue = spect.get(); } else if (opts == "container") { returnValue = spect.container; } else if (opts == "option") { returnValue = spect.option.apply(spect, args); } else if (opts == "destroy") { spect.destroy(); $(this).removeData(dataID); } else { method.apply(spect, args); } } }); return returnValue; } // Initializing a new instance of spectrum return this.spectrum("destroy").each(function () { var options = $.extend({}, opts, $(this).data()); var spect = spectrum(this, options); $(this).data(dataID, spect.id); }); }; $.fn.spectrum.load = true; $.fn.spectrum.loadOpts = {}; $.fn.spectrum.draggable = draggable; $.fn.spectrum.defaults = defaultOpts; $.spectrum = { }; $.spectrum.localization = { }; $.spectrum.palettes = { }; $.fn.spectrum.processNativeColorInputs = function () { if (!inputTypeColorSupport) { $("input[type=color]").spectrum({ preferredFormat: "hex6" }); } }; // TinyColor v0.9.17 // https://github.com/bgrins/TinyColor // 2013-08-10, Brian Grinstead, MIT License (function() { var trimLeft = /^[\s,#]+/, trimRight = /\s+$/, tinyCounter = 0, math = Math, mathRound = math.round, mathMin = math.min, mathMax = math.max, mathRandom = math.random; function tinycolor (color, opts) { color = (color) ? color : ''; opts = opts || { }; // If input is already a tinycolor, return itself if (typeof color == "object" && color.hasOwnProperty("_tc_id")) { return color; } var rgb = inputToRGB(color); var r = rgb.r, g = rgb.g, b = rgb.b, a = rgb.a, roundA = mathRound(100*a) / 100, format = opts.format || rgb.format; // Don't let the range of [0,255] come back in [0,1]. // Potentially lose a little bit of precision here, but will fix issues where // .5 gets interpreted as half of the total, instead of half of 1 // If it was supposed to be 128, this was already taken care of by `inputToRgb` if (r < 1) { r = mathRound(r); } if (g < 1) { g = mathRound(g); } if (b < 1) { b = mathRound(b); } return { ok: rgb.ok, format: format, _tc_id: tinyCounter++, alpha: a, getAlpha: function() { return a; }, setAlpha: function(value) { a = boundAlpha(value); roundA = mathRound(100*a) / 100; }, toHsv: function() { var hsv = rgbToHsv(r, g, b); return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: a }; }, toHsvString: function() { var hsv = rgbToHsv(r, g, b); var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); return (a == 1) ? "hsv(" + h + ", " + s + "%, " + v + "%)" : "hsva(" + h + ", " + s + "%, " + v + "%, "+ roundA + ")"; }, toHsl: function() { var hsl = rgbToHsl(r, g, b); return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: a }; }, toHslString: function() { var hsl = rgbToHsl(r, g, b); var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); return (a == 1) ? "hsl(" + h + ", " + s + "%, " + l + "%)" : "hsla(" + h + ", " + s + "%, " + l + "%, "+ roundA + ")"; }, toHex: function(allow3Char) { return rgbToHex(r, g, b, allow3Char); }, toHexString: function(allow3Char) { return '#' + this.toHex(allow3Char); }, toHex8: function() { return rgbaToHex(r, g, b, a); }, toHex8String: function() { return '#' + this.toHex8(); }, toRgb: function() { return { r: mathRound(r), g: mathRound(g), b: mathRound(b), a: a }; }, toRgbString: function() { return (a == 1) ? "rgb(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ")" : "rgba(" + mathRound(r) + ", " + mathRound(g) + ", " + mathRound(b) + ", " + roundA + ")"; }, toPercentageRgb: function() { return { r: mathRound(bound01(r, 255) * 100) + "%", g: mathRound(bound01(g, 255) * 100) + "%", b: mathRound(bound01(b, 255) * 100) + "%", a: a }; }, toPercentageRgbString: function() { return (a == 1) ? "rgb(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%)" : "rgba(" + mathRound(bound01(r, 255) * 100) + "%, " + mathRound(bound01(g, 255) * 100) + "%, " + mathRound(bound01(b, 255) * 100) + "%, " + roundA + ")"; }, toName: function() { if (a === 0) { return "transparent"; } return hexNames[rgbToHex(r, g, b, true)] || false; }, toFilter: function(secondColor) { var hex8String = '#' + rgbaToHex(r, g, b, a); var secondHex8String = hex8String; var gradientType = opts && opts.gradientType ? "GradientType = 1, " : ""; if (secondColor) { var s = tinycolor(secondColor); secondHex8String = s.toHex8String(); } return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; }, toString: function(format) { var formatSet = !!format; format = format || this.format; var formattedString = false; var hasAlphaAndFormatNotSet = !formatSet && a < 1 && a > 0; var formatWithAlpha = hasAlphaAndFormatNotSet && (format === "hex" || format === "hex6" || format === "hex3" || format === "name"); if (format === "rgb") { formattedString = this.toRgbString(); } if (format === "prgb") { formattedString = this.toPercentageRgbString(); } if (format === "hex" || format === "hex6") { formattedString = this.toHexString(); } if (format === "hex3") { formattedString = this.toHexString(true); } if (format === "hex8") { formattedString = this.toHex8String(); } if (format === "name") { formattedString = this.toName(); } if (format === "hsl") { formattedString = this.toHslString(); } if (format === "hsv") { formattedString = this.toHsvString(); } if (formatWithAlpha) { return this.toRgbString(); } return formattedString || this.toHexString(); } }; } // If input is an object, force 1 into "1.0" to handle ratios properly // String input requires "1.0" as input, so 1 will be treated as 1 tinycolor.fromRatio = function(color, opts) { if (typeof color == "object") { var newColor = {}; for (var i in color) { if (color.hasOwnProperty(i)) { if (i === "a") { newColor[i] = color[i]; } else { newColor[i] = convertToPercentage(color[i]); } } } color = newColor; } return tinycolor(color, opts); }; // Given a string or object, convert that input to RGB // Possible string inputs: // // "red" // "#f00" or "f00" // "#ff0000" or "ff0000" // "#ff000000" or "ff000000" // "rgb 255 0 0" or "rgb (255, 0, 0)" // "rgb 1.0 0 0" or "rgb (1, 0, 0)" // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" // function inputToRGB(color) { var rgb = { r: 0, g: 0, b: 0 }; var a = 1; var ok = false; var format = false; if (typeof color == "string") { color = stringInputToObject(color); } if (typeof color == "object") { if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { rgb = rgbToRgb(color.r, color.g, color.b); ok = true; format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; } else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { color.s = convertToPercentage(color.s); color.v = convertToPercentage(color.v); rgb = hsvToRgb(color.h, color.s, color.v); ok = true; format = "hsv"; } else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { color.s = convertToPercentage(color.s); color.l = convertToPercentage(color.l); rgb = hslToRgb(color.h, color.s, color.l); ok = true; format = "hsl"; } if (color.hasOwnProperty("a")) { a = color.a; } } a = boundAlpha(a); return { ok: ok, format: color.format || format, r: mathMin(255, mathMax(rgb.r, 0)), g: mathMin(255, mathMax(rgb.g, 0)), b: mathMin(255, mathMax(rgb.b, 0)), a: a }; } // Conversion Functions // -------------------- // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: // // `rgbToRgb` // Handle bounds / percentage checking to conform to CSS color spec // // *Assumes:* r, g, b in [0, 255] or [0, 1] // *Returns:* { r, g, b } in [0, 255] function rgbToRgb(r, g, b){ return { r: bound01(r, 255) * 255, g: bound01(g, 255) * 255, b: bound01(b, 255) * 255 }; } // `rgbToHsl` // Converts an RGB color value to HSL. // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] // *Returns:* { h, s, l } in [0,1] function rgbToHsl(r, g, b) { r = bound01(r, 255); g = bound01(g, 255); b = bound01(b, 255); var max = mathMax(r, g, b), min = mathMin(r, g, b); var h, s, l = (max + min) / 2; if(max == min) { h = s = 0; // achromatic } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch(max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return { h: h, s: s, l: l }; } // `hslToRgb` // Converts an HSL color value to RGB. // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] // *Returns:* { r, g, b } in the set [0, 255] function hslToRgb(h, s, l) { var r, g, b; h = bound01(h, 360); s = bound01(s, 100); l = bound01(l, 100); function hue2rgb(p, q, t) { if(t < 0) t += 1; if(t > 1) t -= 1; if(t < 1/6) return p + (q - p) * 6 * t; if(t < 1/2) return q; if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; return p; } if(s === 0) { r = g = b = l; // achromatic } else { var q = l < 0.5 ? l * (1 + s) : l + s - l * s; var p = 2 * l - q; r = hue2rgb(p, q, h + 1/3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1/3); } return { r: r * 255, g: g * 255, b: b * 255 }; } // `rgbToHsv` // Converts an RGB color value to HSV // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] // *Returns:* { h, s, v } in [0,1] function rgbToHsv(r, g, b) { r = bound01(r, 255); g = bound01(g, 255); b = bound01(b, 255); var max = mathMax(r, g, b), min = mathMin(r, g, b); var h, s, v = max; var d = max - min; s = max === 0 ? 0 : d / max; if(max == min) { h = 0; // achromatic } else { switch(max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return { h: h, s: s, v: v }; } // `hsvToRgb` // Converts an HSV color value to RGB. // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] // *Returns:* { r, g, b } in the set [0, 255] function hsvToRgb(h, s, v) { h = bound01(h, 360) * 6; s = bound01(s, 100); v = bound01(v, 100); var i = math.floor(h), f = h - i, p = v * (1 - s), q = v * (1 - f * s), t = v * (1 - (1 - f) * s), mod = i % 6, r = [v, q, p, p, t, v][mod], g = [t, v, v, q, p, p][mod], b = [p, p, t, v, v, q][mod]; return { r: r * 255, g: g * 255, b: b * 255 }; } // `rgbToHex` // Converts an RGB color to hex // Assumes r, g, and b are contained in the set [0, 255] // Returns a 3 or 6 character hex function rgbToHex(r, g, b, allow3Char) { var hex = [ pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)) ]; // Return a 3 character hex if possible if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); } return hex.join(""); } // `rgbaToHex` // Converts an RGBA color plus alpha transparency to hex // Assumes r, g, b and a are contained in the set [0, 255] // Returns an 8 character hex function rgbaToHex(r, g, b, a) { var hex = [ pad2(convertDecimalToHex(a)), pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)) ]; return hex.join(""); } // `equals` // Can be called with any tinycolor input tinycolor.equals = function (color1, color2) { if (!color1 || !color2) { return false; } return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); }; tinycolor.random = function() { return tinycolor.fromRatio({ r: mathRandom(), g: mathRandom(), b: mathRandom() }); }; // Modification Functions // ---------------------- // Thanks to less.js for some of the basics here // tinycolor.desaturate = function (color, amount) { amount = (amount === 0) ? 0 : (amount || 10); var hsl = tinycolor(color).toHsl(); hsl.s -= amount / 100; hsl.s = clamp01(hsl.s); return tinycolor(hsl); }; tinycolor.saturate = function (color, amount) { amount = (amount === 0) ? 0 : (amount || 10); var hsl = tinycolor(color).toHsl(); hsl.s += amount / 100; hsl.s = clamp01(hsl.s); return tinycolor(hsl); }; tinycolor.greyscale = function(color) { return tinycolor.desaturate(color, 100); }; tinycolor.lighten = function(color, amount) { amount = (amount === 0) ? 0 : (amount || 10); var hsl = tinycolor(color).toHsl(); hsl.l += amount / 100; hsl.l = clamp01(hsl.l); return tinycolor(hsl); }; tinycolor.darken = function (color, amount) { amount = (amount === 0) ? 0 : (amount || 10); var hsl = tinycolor(color).toHsl(); hsl.l -= amount / 100; hsl.l = clamp01(hsl.l); return tinycolor(hsl); }; tinycolor.complement = function(color) { var hsl = tinycolor(color).toHsl(); hsl.h = (hsl.h + 180) % 360; return tinycolor(hsl); }; // Combination Functions // --------------------- // Thanks to jQuery xColor for some of the ideas behind these // tinycolor.triad = function(color) { var hsl = tinycolor(color).toHsl(); var h = hsl.h; return [ tinycolor(color), tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) ]; }; tinycolor.tetrad = function(color) { var hsl = tinycolor(color).toHsl(); var h = hsl.h; return [ tinycolor(color), tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) ]; }; tinycolor.splitcomplement = function(color) { var hsl = tinycolor(color).toHsl(); var h = hsl.h; return [ tinycolor(color), tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) ]; }; tinycolor.analogous = function(color, results, slices) { results = results || 6; slices = slices || 30; var hsl = tinycolor(color).toHsl(); var part = 360 / slices; var ret = [tinycolor(color)]; for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { hsl.h = (hsl.h + part) % 360; ret.push(tinycolor(hsl)); } return ret; }; tinycolor.monochromatic = function(color, results) { results = results || 6; var hsv = tinycolor(color).toHsv(); var h = hsv.h, s = hsv.s, v = hsv.v; var ret = []; var modification = 1 / results; while (results--) { ret.push(tinycolor({ h: h, s: s, v: v})); v = (v + modification) % 1; } return ret; }; // Readability Functions // --------------------- // // `readability` // Analyze the 2 colors and returns an object with the following properties: // `brightness`: difference in brightness between the two colors // `color`: difference in color/hue between the two colors tinycolor.readability = function(color1, color2) { var a = tinycolor(color1).toRgb(); var b = tinycolor(color2).toRgb(); var brightnessA = (a.r * 299 + a.g * 587 + a.b * 114) / 1000; var brightnessB = (b.r * 299 + b.g * 587 + b.b * 114) / 1000; var colorDiff = ( Math.max(a.r, b.r) - Math.min(a.r, b.r) + Math.max(a.g, b.g) - Math.min(a.g, b.g) + Math.max(a.b, b.b) - Math.min(a.b, b.b) ); return { brightness: Math.abs(brightnessA - brightnessB), color: colorDiff }; }; // `readable` // http://www.w3.org/TR/AERT#color-contrast // Ensure that foreground and background color combinations provide sufficient contrast. // *Example* // tinycolor.readable("#000", "#111") => false tinycolor.readable = function(color1, color2) { var readability = tinycolor.readability(color1, color2); return readability.brightness > 125 && readability.color > 500; }; // `mostReadable` // Given a base color and a list of possible foreground or background // colors for that base, returns the most readable color. // *Example* // tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" tinycolor.mostReadable = function(baseColor, colorList) { var bestColor = null; var bestScore = 0; var bestIsReadable = false; for (var i=0; i < colorList.length; i++) { // We normalize both around the "acceptable" breaking point, // but rank brightness constrast higher than hue. var readability = tinycolor.readability(baseColor, colorList[i]); var readable = readability.brightness > 125 && readability.color > 500; var score = 3 * (readability.brightness / 125) + (readability.color / 500); if ((readable && ! bestIsReadable) || (readable && bestIsReadable && score > bestScore) || ((! readable) && (! bestIsReadable) && score > bestScore)) { bestIsReadable = readable; bestScore = score; bestColor = tinycolor(colorList[i]); } } return bestColor; }; // Big List of Colors // ------------------ // var names = tinycolor.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32" }; // Make it easy to access colors via `hexNames[hex]` var hexNames = tinycolor.hexNames = flip(names); // Utilities // --------- // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` function flip(o) { var flipped = { }; for (var i in o) { if (o.hasOwnProperty(i)) { flipped[o[i]] = i; } } return flipped; } // Return a valid alpha value [0,1] with all invalid values being set to 1 function boundAlpha(a) { a = parseFloat(a); if (isNaN(a) || a < 0 || a > 1) { a = 1; } return a; } // Take input from [0, n] and return it as [0, 1] function bound01(n, max) { if (isOnePointZero(n)) { n = "100%"; } var processPercent = isPercentage(n); n = mathMin(max, mathMax(0, parseFloat(n))); // Automatically convert percentage into number if (processPercent) { n = parseInt(n * max, 10) / 100; } // Handle floating point rounding errors if ((math.abs(n - max) < 0.000001)) { return 1; } // Convert into [0, 1] range if it isn't already return (n % max) / parseFloat(max); } // Force a number between 0 and 1 function clamp01(val) { return mathMin(1, mathMax(0, val)); } // Parse a base-16 hex value into a base-10 integer function parseIntFromHex(val) { return parseInt(val, 16); } // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 // function isOnePointZero(n) { return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; } // Check to see if string passed in is a percentage function isPercentage(n) { return typeof n === "string" && n.indexOf('%') != -1; } // Force a hex value to have 2 characters function pad2(c) { return c.length == 1 ? '0' + c : '' + c; } // Replace a decimal with it's percentage value function convertToPercentage(n) { if (n <= 1) { n = (n * 100) + "%"; } return n; } // Converts a decimal to a hex value function convertDecimalToHex(d) { return Math.round(parseFloat(d) * 255).toString(16); } // Converts a hex value to a decimal function convertHexToDecimal(h) { return (parseIntFromHex(h) / 255); } var matchers = (function() { // var CSS_INTEGER = "[-\\+]?\\d+%?"; // var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; // Actual matching. // Parentheses and commas are optional, but not required. // Whitespace can take the place of commas or opening paren var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; return { rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ }; })(); // `stringInputToObject` // Permissive string parsing. Take in a number of formats, and output an object // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` function stringInputToObject(color) { color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); var named = false; if (names[color]) { color = names[color]; named = true; } else if (color == 'transparent') { return { r: 0, g: 0, b: 0, a: 0, format: "name" }; } // Try to match string input using regular expressions. // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] // Just return an object and let the conversion functions handle that. // This way the result will be the same whether the tinycolor is initialized with string or object. var match; if ((match = matchers.rgb.exec(color))) { return { r: match[1], g: match[2], b: match[3] }; } if ((match = matchers.rgba.exec(color))) { return { r: match[1], g: match[2], b: match[3], a: match[4] }; } if ((match = matchers.hsl.exec(color))) { return { h: match[1], s: match[2], l: match[3] }; } if ((match = matchers.hsla.exec(color))) { return { h: match[1], s: match[2], l: match[3], a: match[4] }; } if ((match = matchers.hsv.exec(color))) { return { h: match[1], s: match[2], v: match[3] }; } if ((match = matchers.hex8.exec(color))) { return { a: convertHexToDecimal(match[1]), r: parseIntFromHex(match[2]), g: parseIntFromHex(match[3]), b: parseIntFromHex(match[4]), format: named ? "name" : "hex8" }; } if ((match = matchers.hex6.exec(color))) { return { r: parseIntFromHex(match[1]), g: parseIntFromHex(match[2]), b: parseIntFromHex(match[3]), format: named ? "name" : "hex" }; } if ((match = matchers.hex3.exec(color))) { return { r: parseIntFromHex(match[1] + '' + match[1]), g: parseIntFromHex(match[2] + '' + match[2]), b: parseIntFromHex(match[3] + '' + match[3]), format: named ? "name" : "hex" }; } return false; } // Expose tinycolor to window, does not need to run in non-browser context. window.tinycolor = tinycolor; })(); $(function () { if ($.fn.spectrum.load) { $.fn.spectrum.processNativeColorInputs(); } }); })(window, jQuery); redux/ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js000066600000057414152143340070020775 0ustar00!function(a,b,c){function d(a,b,c,d){for(var e=[],f=0;f')}else{var l="sp-clear-display";e.push('')}}return"
    "+e.join("")+"
    "}function e(){for(var a=0;aMath.abs(b-e);sa=f?"x":"y"}}else sa=null;var g=!sa||"x"===sa,h=!sa||"y"===sa;g&&(ia=parseFloat(a/_)),h&&(ja=parseFloat((aa-b)/aa)),Va=!1,T.showAlpha||(ka=1),K()},A,B),Qa?(H(Qa),L(),Ta=Sa||tinycolor(Qa).format,w(Qa)):L(),U&&E();var d=q?"mousedown.spectrum":"click.spectrum touchstart.spectrum";Fa.delegate(".sp-thumb-el",d,a),Ga.delegate(".sp-thumb-el:nth-child(1)",d,{ignore:!0},a)}function v(){if(W&&a.localStorage){try{var c=a.localStorage[W].split(",#");c.length>1&&(delete a.localStorage[W],b.each(c,function(a,b){w(b)}))}catch(d){}try{oa=a.localStorage[W].split(";")}catch(d){}}}function w(c){if(V){var d=tinycolor(c).toRgbString();if(!na[d]&&-1===b.inArray(d,oa))for(oa.push(d);oa.length>pa;)oa.shift();if(W&&a.localStorage)try{a.localStorage[W]=oa.join(";")}catch(e){}}}function x(){var a=[];if(T.showPalette)for(i=0;i=aa||0>=_||0>=ca)&&O(),wa.addClass(qa),sa=null,ua.trigger("dragstart.spectrum",[I()])}function B(){wa.removeClass(qa),ua.trigger("dragstop.spectrum",[I()])}function C(){var a=Ea.val();if(null!==a&&""!==a||!Wa){var b=tinycolor(a);b.ok?(H(b),N(!0)):Ea.addClass("sp-validation-error")}else H(null),N(!0)}function D(){$?F():E()}function E(){var c=b.Event("beforeShow.spectrum");return $?void O():(ua.trigger(c,[I()]),void(Y.beforeShow(I())===!1||c.isDefaultPrevented()||(e(),$=!0,b(ta).bind("click.spectrum",F),b(a).bind("resize.spectrum",Z),Na.addClass("sp-active"),wa.removeClass("sp-hidden"),O(),L(),Ra=I(),z(),Y.show(Ra),ua.trigger("show.spectrum",[Ra]))))}function F(c){if((!c||"click"!=c.type||2!=c.button)&&$&&!U){$=!1,b(ta).unbind("click.spectrum",F),b(a).unbind("resize.spectrum",Z),Na.removeClass("sp-active"),wa.addClass("sp-hidden");var d=!tinycolor.equals(I(),Ra);d&&(Ua&&"cancel"!==c?N(!0):G()),Y.hide(I()),ua.trigger("hide.spectrum",[I()])}}function G(){H(Ra,!0)}function H(a,b){if(tinycolor.equals(a,I()))return void L();var c,d;!a&&Wa?Va=!0:(Va=!1,c=tinycolor(a),d=c.toHsv(),ha=d.h%360/360,ia=d.s,ja=d.v,ka=d.a),L(),c&&c.ok&&!b&&(Ta=Sa||c.format)}function I(a){return a=a||{},Wa&&Va?null:tinycolor.fromRatio({h:ha,s:ia,v:ja,a:Math.round(100*ka)/100},{format:a.format||Ta})}function J(){return!Ea.hasClass("sp-validation-error")}function K(){L(),Y.move(I()),ua.trigger("move.spectrum",[I()])}function L(){Ea.removeClass("sp-validation-error"),M();var a=tinycolor.fromRatio({h:ha,s:1,v:1});xa.css("background-color",a.toHexString());var b=Ta;1>ka&&(0!==ka||"name"!==b)&&("hex"===b||"hex3"===b||"hex6"===b||"name"===b)&&(b="rgb");var c=I({format:b}),d="";if(Pa.removeClass("sp-clear-display"),Pa.css("background-color","transparent"),!c&&Wa)Pa.addClass("sp-clear-display");else{var e=c.toHexString(),f=c.toRgbString();if(r||1===c.alpha?Pa.css("background-color",f):(Pa.css("background-color","transparent"),Pa.css("filter",c.toFilter())),T.showAlpha){var g=c.toRgb();g.a=0;var h=tinycolor(g).toRgbString(),i="linear-gradient(left, "+h+", "+e+")";q?Ba.css("filter",tinycolor(h).toFilter({gradientType:1},e)):(Ba.css("background","-webkit-"+i),Ba.css("background","-moz-"+i),Ba.css("background","-ms-"+i),Ba.css("background","linear-gradient(to right, "+h+", "+e+")"))}d=c.toString(b)}T.showInput&&Ea.val(d),T.showPalette&&y(),z()}function M(){var a=ia,b=ja;if(Wa&&Va)Da.hide(),Aa.hide(),ya.hide();else{Da.show(),Aa.show(),ya.show();var c=a*_,d=aa-b*aa;c=Math.max(-ba,Math.min(_-ba,c-ba)),d=Math.max(-ba,Math.min(aa-ba,d-ba)),ya.css({top:d+"px",left:c+"px"});var e=ka*ea;Da.css({left:e-fa/2+"px"});var f=ha*ca;Aa.css({top:f-ga+"px"})}}function N(a){var b=I(),c="",d=!tinycolor.equals(b,Ra);b&&(c=b.toString(Ta),w(b)),Ka&&ua.val(c),Ra=b,a&&d&&(Y.change(b),ua.trigger("change",[b]))}function O(){_=xa.width(),aa=xa.height(),ba=ya.height(),da=za.width(),ca=za.height(),ga=Aa.height(),ea=Ca.width(),fa=Da.width(),U||(wa.css("position","absolute"),wa.offset(h(wa,Oa))),M(),T.showPalette&&y(),ua.trigger("reflow.spectrum")}function P(){ua.show(),Oa.unbind("click.spectrum touchstart.spectrum"),wa.remove(),Na.remove(),p[Ya.id]=null}function Q(a,d){return a===c?b.extend({},T):d===c?T[a]:(T[a]=d,void l())}function R(){va=!1,ua.attr("disabled",!1),Oa.removeClass("sp-disabled")}function S(){F(),va=!0,ua.attr("disabled",!0),Oa.addClass("sp-disabled")}var T=f(j,g),U=T.flat,V=T.showSelectionPalette,W=T.localStorageKey,X=T.theme,Y=T.callbacks,Z=n(O,10),$=!1,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=1,la=[],ma=[],na={},oa=T.selectionPalette.slice(0),pa=T.maxSelectionSize,qa="sp-dragging",ra=T.inputText,sa=null,ta=g.ownerDocument,ua=(ta.body,b(g)),va=!1,wa=b(u,ta).addClass(X),xa=wa.find(".sp-color"),ya=wa.find(".sp-dragger"),za=wa.find(".sp-hue"),Aa=wa.find(".sp-slider"),Ba=wa.find(".sp-alpha-inner"),Ca=wa.find(".sp-alpha"),Da=wa.find(".sp-alpha-handle"),Ea=wa.find(".sp-input"),Fa=wa.find(".sp-palette"),Ga=wa.find(".sp-initial"),Ha=wa.find(".sp-cancel"),Ia=wa.find(".sp-clear"),Ja=wa.find(".sp-choose"),Ka=ua.is("input"),La=Ka&&s&&"color"===ua.attr("type"),Ma=Ka&&!U,Na=Ma?b(t).addClass(X).addClass(T.className).addClass(T.replacerClassName):b([]),Oa=Ma?Na:ua,Pa=Na.find(".sp-preview-inner"),Qa=T.color||Ka&&ua.val(),Ra=!1,Sa=T.preferredFormat,Ta=Sa,Ua=!T.showButtons||T.clickoutFiresChange,Va=!Qa,Wa=T.allowEmpty&&!La;if(""!==ra){var Xa=b(Oa).find("div.sp-dd");Xa.text(ra)}o();var Ya={show:E,hide:F,toggle:D,reflow:O,option:Q,enable:R,disable:S,set:function(a){H(a),N()},get:I,destroy:P,container:wa};return Ya.id=p.push(Ya)-1,Ya}function h(a,c){var d=0,e=a.outerWidth(),f=a.outerHeight(),g=c.outerHeight(),h=a[0].ownerDocument,i=h.documentElement,j=i.clientWidth+b(h).scrollLeft(),k=i.clientHeight+b(h).scrollTop(),l=c.offset();return l.top+=g,l.left-=Math.min(l.left,l.left+e>j&&j>e?Math.abs(l.left+e-j):0),l.top-=Math.min(l.top,l.top+f>k&&k>f?Math.abs(f+g-d):d),l}function j(){}function k(a){a.stopPropagation()}function l(a,b){var c=Array.prototype.slice,d=c.call(arguments,2);return function(){return a.apply(b,d.concat(c.call(arguments)))}}function m(c,d,e,f){function g(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.returnValue=!1}function h(a){if(l){if(q&&document.documentMode<9&&!a.button)return j();var b=a.originalEvent.touches,e=b?b[0].pageX:a.pageX,f=b?b[0].pageY:a.pageY,h=Math.max(0,Math.min(e-m.left,o)),i=Math.max(0,Math.min(f-m.top,n));p&&g(a),d.apply(c,[h,i,a])}}function i(a){var d=a.which?3==a.which:2==a.button;a.originalEvent.touches;d||l||e.apply(c,arguments)!==!1&&(l=!0,n=b(c).height(),o=b(c).width(),m=b(c).offset(),b(k).bind(r),b(k.body).addClass("sp-dragging"),p||h(a),g(a))}function j(){l&&(b(k).unbind(r),b(k.body).removeClass("sp-dragging"),f.apply(c,arguments)),l=!1}d=d||function(){},e=e||function(){},f=f||function(){};var k=c.ownerDocument||document,l=!1,m={},n=0,o=0,p="ontouchstart"in a,r={};r.selectstart=g,r.dragstart=g,r["touchmove mousemove"]=h,r["touchend mouseup"]=j,b(c).bind("touchstart mousedown",i)}function n(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,a.apply(e,f)};c&&clearTimeout(d),(c||!d)&&(d=setTimeout(g,b))}}var o={beforeShow:j,move:j,change:j,show:j,hide:j,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!1,showInitial:!1,showPalette:!1,showPaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",clearText:"Clear Color Selection",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,inputText:""},p=[],q=!!/msie/i.exec(a.navigator.userAgent),r=function(){function a(a,b){return!!~(""+a).indexOf(b)}var b=document.createElement("div"),c=b.style;return c.cssText="background-color:rgba(0,0,0,.5)",a(c.backgroundColor,"rgba")||a(c.backgroundColor,"hsla")}(),s=function(){var a=b("")[0];return"color"===a.type&&"#ffffff"!==a.value}(),t=["
    ","
    ","
    ","
    "].join(""),u=function(){var a="";if(q)for(var b=1;6>=b;b++)a+="
    ";return["
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ","
    ",a,"
    ","
    ","
    ","
    ","
    ","","
    ","
    ","
    ","","","
    ","
    ","
    "].join("")}(),v="spectrum.id";b.fn.spectrum=function(a,c){if("string"==typeof a){var d=this,e=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=p[b(this).data(v)];if(c){var f=c[a];if(!f)throw new Error("Spectrum: no such method: '"+a+"'");"get"==a?d=c.get():"container"==a?d=c.container:"option"==a?d=c.option.apply(c,e):"destroy"==a?(c.destroy(),b(this).removeData(v)):f.apply(c,e)}}),d}return this.spectrum("destroy").each(function(){var c=b.extend({},a,b(this).data()),d=g(this,c);b(this).data(v,d.id)})},b.fn.spectrum.load=!0,b.fn.spectrum.loadOpts={},b.fn.spectrum.draggable=m,b.fn.spectrum.defaults=o,b.spectrum={},b.spectrum.localization={},b.spectrum.palettes={},b.fn.spectrum.processNativeColorInputs=function(){s||b("input[type=color]").spectrum({preferredFormat:"hex6"})},function(){function b(a,d){if(a=a?a:"",d=d||{},"object"==typeof a&&a.hasOwnProperty("_tc_id"))return a;var f=c(a),h=f.r,k=f.g,n=f.b,o=f.a,p=A(100*o)/100,q=d.format||f.format;return 1>h&&(h=A(h)),1>k&&(k=A(k)),1>n&&(n=A(n)),{ok:f.ok,format:q,_tc_id:y++,alpha:o,getAlpha:function(){return o},setAlpha:function(a){o=l(a),p=A(100*o)/100},toHsv:function(){var a=g(h,k,n);return{h:360*a.h,s:a.s,v:a.v,a:o}},toHsvString:function(){var a=g(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.v);return 1==o?"hsv("+b+", "+c+"%, "+d+"%)":"hsva("+b+", "+c+"%, "+d+"%, "+p+")"},toHsl:function(){var a=e(h,k,n);return{h:360*a.h,s:a.s,l:a.l,a:o}},toHslString:function(){var a=e(h,k,n),b=A(360*a.h),c=A(100*a.s),d=A(100*a.l);return 1==o?"hsl("+b+", "+c+"%, "+d+"%)":"hsla("+b+", "+c+"%, "+d+"%, "+p+")"},toHex:function(a){return i(h,k,n,a)},toHexString:function(a){return"#"+this.toHex(a)},toHex8:function(){return j(h,k,n,o)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:A(h),g:A(k),b:A(n),a:o}},toRgbString:function(){return 1==o?"rgb("+A(h)+", "+A(k)+", "+A(n)+")":"rgba("+A(h)+", "+A(k)+", "+A(n)+", "+p+")"},toPercentageRgb:function(){return{r:A(100*m(h,255))+"%",g:A(100*m(k,255))+"%",b:A(100*m(n,255))+"%",a:o}},toPercentageRgbString:function(){return 1==o?"rgb("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%)":"rgba("+A(100*m(h,255))+"%, "+A(100*m(k,255))+"%, "+A(100*m(n,255))+"%, "+p+")"},toName:function(){return 0===o?"transparent":F[i(h,k,n,!0)]||!1},toFilter:function(a){var c="#"+j(h,k,n,o),e=c,f=d&&d.gradientType?"GradientType = 1, ":"";if(a){var g=b(a);e=g.toHex8String()}return"progid:DXImageTransform.Microsoft.gradient("+f+"startColorstr="+c+",endColorstr="+e+")"},toString:function(a){var b=!!a;a=a||this.format;var c=!1,d=!b&&1>o&&o>0,e=d&&("hex"===a||"hex6"===a||"hex3"===a||"name"===a);return"rgb"===a&&(c=this.toRgbString()),"prgb"===a&&(c=this.toPercentageRgbString()),("hex"===a||"hex6"===a)&&(c=this.toHexString()),"hex3"===a&&(c=this.toHexString(!0)),"hex8"===a&&(c=this.toHex8String()),"name"===a&&(c=this.toName()),"hsl"===a&&(c=this.toHslString()),"hsv"===a&&(c=this.toHsvString()),e?this.toRgbString():c||this.toHexString()}}}function c(a){var b={r:0,g:0,b:0},c=1,e=!1,g=!1;return"string"==typeof a&&(a=v(a)),"object"==typeof a&&(a.hasOwnProperty("r")&&a.hasOwnProperty("g")&&a.hasOwnProperty("b")?(b=d(a.r,a.g,a.b),e=!0,g="%"===String(a.r).substr(-1)?"prgb":"rgb"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("v")?(a.s=s(a.s),a.v=s(a.v),b=h(a.h,a.s,a.v),e=!0,g="hsv"):a.hasOwnProperty("h")&&a.hasOwnProperty("s")&&a.hasOwnProperty("l")&&(a.s=s(a.s),a.l=s(a.l),b=f(a.h,a.s,a.l),e=!0,g="hsl"),a.hasOwnProperty("a")&&(c=a.a)),c=l(c),{ok:e,format:a.format||g,r:B(255,C(b.r,0)),g:B(255,C(b.g,0)),b:B(255,C(b.b,0)),a:c}}function d(a,b,c){return{r:255*m(a,255),g:255*m(b,255),b:255*m(c,255)}}function e(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,l:h}}function f(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var e,f,g;if(a=m(a,360),b=m(b,100),c=m(c,100),0===b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return{r:255*e,g:255*f,b:255*g}}function g(a,b,c){a=m(a,255),b=m(b,255),c=m(c,255);var d,e,f=C(a,b,c),g=B(a,b,c),h=f,i=f-g;if(e=0===f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,v:h}}function h(a,b,c){a=6*m(a,360),b=m(b,100),c=m(c,100);var d=z.floor(a),e=a-d,f=c*(1-b),g=c*(1-e*b),h=c*(1-(1-e)*b),i=d%6,j=[c,g,f,f,h,c][i],k=[h,c,c,g,f,f][i],l=[f,f,h,c,c,g][i];return{r:255*j,g:255*k,b:255*l}}function i(a,b,c,d){var e=[r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return d&&e[0].charAt(0)==e[0].charAt(1)&&e[1].charAt(0)==e[1].charAt(1)&&e[2].charAt(0)==e[2].charAt(1)?e[0].charAt(0)+e[1].charAt(0)+e[2].charAt(0):e.join("")}function j(a,b,c,d){var e=[r(t(d)),r(A(a).toString(16)),r(A(b).toString(16)),r(A(c).toString(16))];return e.join("")}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[a[c]]=c);return b}function l(a){return a=parseFloat(a),(isNaN(a)||0>a||a>1)&&(a=1),a}function m(a,b){p(a)&&(a="100%");var c=q(a);return a=B(b,C(0,parseFloat(a))),c&&(a=parseInt(a*b,10)/100),z.abs(a-b)<1e-6?1:a%b/parseFloat(b)}function n(a){return B(1,C(0,a))}function o(a){return parseInt(a,16)}function p(a){return"string"==typeof a&&-1!=a.indexOf(".")&&1===parseFloat(a)}function q(a){return"string"==typeof a&&-1!=a.indexOf("%")}function r(a){return 1==a.length?"0"+a:""+a}function s(a){return 1>=a&&(a=100*a+"%"),a}function t(a){return Math.round(255*parseFloat(a)).toString(16)}function u(a){return o(a)/255}function v(a){a=a.replace(w,"").replace(x,"").toLowerCase();var b=!1;if(E[a])a=E[a],b=!0;else if("transparent"==a)return{r:0,g:0,b:0,a:0,format:"name"};var c;return(c=G.rgb.exec(a))?{r:c[1],g:c[2],b:c[3]}:(c=G.rgba.exec(a))?{r:c[1],g:c[2],b:c[3],a:c[4]}:(c=G.hsl.exec(a))?{h:c[1],s:c[2],l:c[3]}:(c=G.hsla.exec(a))?{h:c[1],s:c[2],l:c[3],a:c[4]}:(c=G.hsv.exec(a))?{h:c[1],s:c[2],v:c[3]}:(c=G.hex8.exec(a))?{a:u(c[1]),r:o(c[2]),g:o(c[3]),b:o(c[4]),format:b?"name":"hex8"}:(c=G.hex6.exec(a))?{r:o(c[1]),g:o(c[2]),b:o(c[3]),format:b?"name":"hex"}:(c=G.hex3.exec(a))?{r:o(c[1]+""+c[1]),g:o(c[2]+""+c[2]),b:o(c[3]+""+c[3]),format:b?"name":"hex"}:!1}var w=/^[\s,#]+/,x=/\s+$/,y=0,z=Math,A=z.round,B=z.min,C=z.max,D=z.random;b.fromRatio=function(a,c){if("object"==typeof a){var d={};for(var e in a)a.hasOwnProperty(e)&&("a"===e?d[e]=a[e]:d[e]=s(a[e]));a=d}return b(a,c)},b.equals=function(a,c){return a&&c?b(a).toRgbString()==b(c).toRgbString():!1},b.random=function(){return b.fromRatio({r:D(),g:D(),b:D()})},b.desaturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s-=c/100,d.s=n(d.s),b(d)},b.saturate=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s+=c/100,d.s=n(d.s),b(d)},b.greyscale=function(a){return b.desaturate(a,100)},b.lighten=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l+=c/100,d.l=n(d.l),b(d)},b.darken=function(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l-=c/100,d.l=n(d.l),b(d)},b.complement=function(a){var c=b(a).toHsl();return c.h=(c.h+180)%360,b(c)},b.triad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+120)%360,s:c.s,l:c.l}),b({h:(d+240)%360,s:c.s,l:c.l})]},b.tetrad=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+90)%360,s:c.s,l:c.l}),b({h:(d+180)%360,s:c.s,l:c.l}),b({h:(d+270)%360,s:c.s,l:c.l})]},b.splitcomplement=function(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+72)%360,s:c.s,l:c.l}),b({h:(d+216)%360,s:c.s,l:c.l})]},b.analogous=function(a,c,d){c=c||6,d=d||30;var e=b(a).toHsl(),f=360/d,g=[b(a)];for(e.h=(e.h-(f*c>>1)+720)%360;--c;)e.h=(e.h+f)%360,g.push(b(e));return g},b.monochromatic=function(a,c){c=c||6;for(var d=b(a).toHsv(),e=d.h,f=d.s,g=d.v,h=[],i=1/c;c--;)h.push(b({h:e,s:f,v:g})),g=(g+i)%1;return h},b.readability=function(a,c){var d=b(a).toRgb(),e=b(c).toRgb(),f=(299*d.r+587*d.g+114*d.b)/1e3,g=(299*e.r+587*e.g+114*e.b)/1e3,h=Math.max(d.r,e.r)-Math.min(d.r,e.r)+Math.max(d.g,e.g)-Math.min(d.g,e.g)+Math.max(d.b,e.b)-Math.min(d.b,e.b);return{brightness:Math.abs(f-g),color:h}},b.readable=function(a,c){var d=b.readability(a,c);return d.brightness>125&&d.color>500},b.mostReadable=function(a,c){for(var d=null,e=0,f=!1,g=0;g125&&h.color>500,j=3*(h.brightness/125)+h.color/500;(i&&!f||i&&f&&j>e||!i&&!f&&j>e)&&(f=i,e=j,d=b(c[g]))}return d};var E=b.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},F=b.hexNames=k(E),G=function(){var a="[-\\+]?\\d+%?",b="[-\\+]?\\d*\\.\\d+%?",c="(?:"+b+")|(?:"+a+")",d="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?",e="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?";return{rgb:new RegExp("rgb"+d),rgba:new RegExp("rgba"+e),hsl:new RegExp("hsl"+d),hsla:new RegExp("hsla"+e),hsv:new RegExp("hsv"+d),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();a.tinycolor=b}(),b(function(){b.fn.spectrum.load&&b.fn.spectrum.processNativeColorInputs()})}(window,jQuery);redux/ReduxCore/assets/js/vendor/jquery.alphanum.js000066600000055415152143340070016504 0ustar00/******************************************************************** * Limit the characters that may be entered in a text field * Common options: alphanumeric, alphabetic or numeric * Kevin Sheedy, 2012 * http://github.com/KevinSheedy/jquery.alphanum *********************************************************************/ (function( $ ){ // API /////////////////////////////////////////////////////////////////// $.fn.alphanum = function(settings) { var combinedSettings = getCombinedSettingsAlphaNum(settings); var $collection = this; setupEventHandlers($collection, trimAlphaNum, combinedSettings); return this; }; $.fn.alpha = function(settings) { var defaultAlphaSettings = getCombinedSettingsAlphaNum("alpha"); var combinedSettings = getCombinedSettingsAlphaNum(settings, defaultAlphaSettings); var $collection = this; setupEventHandlers($collection, trimAlphaNum, combinedSettings); return this; }; $.fn.numeric = function(settings) { var combinedSettings = getCombinedSettingsNum(settings); var $collection = this; setupEventHandlers($collection, trimNum, combinedSettings); $collection.blur(function(){ numericField_Blur(this, settings); }); return this; }; // End of API ///////////////////////////////////////////////////////////// // Start Settings //////////////////////////////////////////////////////// var DEFAULT_SETTINGS_ALPHANUM = { allow : '', // Allow extra characters disallow : '', // Disallow extra characters allowSpace : true, // Allow the space character allowNumeric : true, // Allow digits 0-9 allowUpper : true, // Allow upper case characters allowLower : true, // Allow lower case characters allowCaseless : true, // Allow characters that don't have both upper & lower variants - eg Arabic or Chinese allowLatin : true, // a-z A-Z allowOtherCharSets : true, // eg , , Arabic, Chinese etc maxLength : NaN // eg Max Length } var DEFAULT_SETTINGS_NUM = { allowPlus : false, // Allow the + sign allowMinus : true, // Allow the - sign allowThouSep : true, // Allow the thousands separator, default is the comma eg 12,000 allowDecSep : true, // Allow the decimal separator, default is the fullstop eg 3.141 allowLeadingSpaces : false, maxDigits : NaN, // The max number of digits maxDecimalPlaces : NaN, // The max number of decimal places maxPreDecimalPlaces : NaN, // The max number digits before the decimal point max : NaN, // The max numeric value allowed min : NaN // The min numeric value allowed } // Some pre-defined groups of settings for convenience var CONVENIENCE_SETTINGS_ALPHANUM = { "alpha" : { allowNumeric : false }, "upper" : { allowNumeric : false, allowUpper : true, allowLower : false, allowCaseless : true }, "lower" : { allowNumeric : false, allowUpper : false, allowLower : true, allowCaseless : true } }; // Some pre-defined groups of settings for convenience var CONVENIENCE_SETTINGS_NUMERIC = { "integer" : { allowPlus : false, allowMinus : true, allowThouSep : false, allowDecSep : false }, "positiveInteger" : { allowPlus : false, allowMinus : false, allowThouSep : false, allowDecSep : false } }; var BLACKLIST = getBlacklistAscii() + getBlacklistNonAscii(); var THOU_SEP = ","; var DEC_SEP = "."; var DIGITS = getDigitsMap(); var LATIN_CHARS = getLatinCharsSet(); // Return the blacklisted special chars that are encodable using 7-bit ascii function getBlacklistAscii(){ var blacklist = '!@#$%^&*()+=[]\\\';,/{}|":<>?~`.-_'; blacklist += " "; // 'Space' is on the blacklist but can be enabled using the 'allowSpace' config entry return blacklist; } // Return the blacklisted special chars that are NOT encodable using 7-bit ascii // We want this .js file to be encoded using 7-bit ascii so it can reach the widest possible audience // Higher order chars must be escaped eg "\xAC" // Not too worried about comments containing higher order characters for now (let's wait and see if it becomes a problem) function getBlacklistNonAscii(){ var blacklist = "\xAC" // + "\u20AC" // + "\xA3" // + "\xA6" // ; return blacklist; } // End Settings //////////////////////////////////////////////////////// // Implementation details go here //////////////////////////////////////////////////////// function setupEventHandlers($textboxes, trimFunction, settings) { $textboxes.each(function(){ var $textbox = $(this); $textbox.bind("keyup change paste", function(e){ var pastedText = ""; if(e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) pastedText = e.originalEvent.clipboardData.getData("text/plain") // setTimeout is necessary for handling the 'paste' event setTimeout(function(){ trimTextbox($textbox, trimFunction, settings, pastedText); }, 0); }); $textbox.bind("keypress", function(e){ // Determine which key is pressed. // If it's a control key, then allow the event's default action to occur eg backspace, tab var charCode = !e.charCode ? e.which : e.charCode; if(isControlKey(charCode) || e.ctrlKey || e.metaKey ) // cmd on MacOS return; var newChar = String.fromCharCode(charCode); // Determine if some text was selected / highlighted when the key was pressed var selectionObject = $textbox.selection(); var start = selectionObject.start; var end = selectionObject.end; var textBeforeKeypress = $textbox.val(); // The new char may be inserted: // 1) At the start // 2) In the middle // 3) At the end // 4) User highlights some text and then presses a key which would replace the highlighted text // // Here we build the string that would result after the keypress. // If the resulting string is invalid, we cancel the event. // Unfortunately, it isn't enough to just check if the new char is valid because some chars // are position sensitive eg the decimal point '.'' or the minus sign '-'' are only valid in certain positions. var potentialTextAfterKeypress = textBeforeKeypress.substring(0, start) + newChar + textBeforeKeypress.substring(end); var validatedText = trimFunction(potentialTextAfterKeypress, settings); // If the keypress would cause the textbox to contain invalid characters, then cancel the keypress event if(validatedText != potentialTextAfterKeypress) e.preventDefault(); }); }); } // Ensure the text is a valid number when focus leaves the textbox // This catches the case where a user enters '-' or '.' without entering any digits function numericField_Blur(inputBox, settings) { var fieldValueNumeric = parseFloat($(inputBox).val()); var $inputBox = $(inputBox); if(isNaN(fieldValueNumeric)) { $inputBox.val(""); return; } if(isNumeric(settings.min) && fieldValueNumeric < settings.min) $inputBox.val(""); if(isNumeric(settings.max) && fieldValueNumeric > settings.max) $inputBox.val(""); } function isNumeric(value) { return !isNaN(value); } function isControlKey(charCode) { if(charCode >= 32) return false; if(charCode == 10) return false; if(charCode == 13) return false; return true; } // One way to prevent a character being entered is to cancel the keypress event. // However, this gets messy when you have to deal with things like copy paste which isn't a keypress. // Which event gets fired first, keypress or keyup? What about IE6 etc etc? // Instead, it's easier to allow the 'bad' character to be entered and then to delete it immediately after. function trimTextbox($textBox, trimFunction, settings, pastedText){ var inputString = $textBox.val(); if(inputString == "" && pastedText.length > 0) inputString = pastedText; var outputString = trimFunction(inputString, settings); if(inputString == outputString) return; var caretPos = $textBox.alphanum_caret(); $textBox.val(outputString); //Reset the caret position if(inputString.length ==(outputString.length + 1)) $textBox.alphanum_caret(caretPos - 1); else $textBox.alphanum_caret(caretPos); } function getCombinedSettingsAlphaNum(settings, defaultSettings){ if(typeof defaultSettings == "undefined") defaultSettings = DEFAULT_SETTINGS_ALPHANUM; var userSettings, combinedSettings = {}; if(typeof settings === "string") userSettings = CONVENIENCE_SETTINGS_ALPHANUM[settings]; else if(typeof settings == "undefined") userSettings = {}; else userSettings = settings; $.extend(combinedSettings, defaultSettings, userSettings); if(typeof combinedSettings.blacklist == 'undefined') combinedSettings.blacklistSet = getBlacklistSet(combinedSettings.allow, combinedSettings.disallow); return combinedSettings; } function getCombinedSettingsNum(settings){ var userSettings, combinedSettings = {}; if(typeof settings === "string") userSettings = CONVENIENCE_SETTINGS_NUMERIC[settings]; else if(typeof settings == "undefined") userSettings = {}; else userSettings = settings; $.extend(combinedSettings, DEFAULT_SETTINGS_NUM, userSettings); return combinedSettings; } // This is the heart of the algorithm function alphanum_allowChar(validatedStringFragment, Char, settings){ if(settings.maxLength && validatedStringFragment.length >= settings.maxLength) return false; if(settings.allow.indexOf(Char) >=0 ) return true; if(settings.allowSpace && (Char == " ")) return true; if(settings.blacklistSet.contains(Char)) return false; if(!settings.allowNumeric && DIGITS[Char]) return false; if(!settings.allowUpper && isUpper(Char)) return false; if(!settings.allowLower && isLower(Char)) return false; if(!settings.allowCaseless && isCaseless(Char)) return false; if(!settings.allowLatin && LATIN_CHARS.contains(Char)) return false; if(!settings.allowOtherCharSets){ if(DIGITS[Char] || LATIN_CHARS.contains(Char)) return true; else return false; } return true; } function numeric_allowChar(validatedStringFragment, Char, settings){ if(DIGITS[Char]) { if(isMaxDigitsReached(validatedStringFragment, settings)) return false; if(isMaxPreDecimalsReached(validatedStringFragment, settings)) return false; if(isMaxDecimalsReached(validatedStringFragment, settings)) return false; if(isGreaterThanMax(validatedStringFragment + Char, settings)) return false; if(isLessThanMin(validatedStringFragment + Char, settings)) return false; return true; } if(settings.allowPlus && Char == '+' && validatedStringFragment == '') return true; if(settings.allowMinus && Char == '-' && validatedStringFragment == '') return true; if(Char == THOU_SEP && settings.allowThouSep && allowThouSep(validatedStringFragment, Char)) return true; if(Char == DEC_SEP) { // Only one decimal separator allowed if(validatedStringFragment.indexOf(DEC_SEP) >= 0) return false; if(settings.allowDecSep) return true; } return false; } function countDigits(string) { // Error handling, nulls etc string = string + ""; // Count the digits return string.replace(/[^0-9]/g,"").length; } function isMaxDigitsReached(string, settings) { var maxDigits = settings.maxDigits; if(maxDigits == "" || isNaN(maxDigits)) return false; // In this case, there is no maximum var numDigits = countDigits(string); if(numDigits >= maxDigits) return true; return false; } function isMaxDecimalsReached(string, settings) { var maxDecimalPlaces = settings.maxDecimalPlaces; if(maxDecimalPlaces == "" || isNaN(maxDecimalPlaces)) return false; // In this case, there is no maximum var indexOfDecimalPoint = string.indexOf(DEC_SEP); if(indexOfDecimalPoint == -1) return false; var decimalSubstring = string.substring(indexOfDecimalPoint); var numDecimals = countDigits(decimalSubstring); if(numDecimals >= maxDecimalPlaces) return true; return false; } function isMaxPreDecimalsReached(string, settings) { var maxPreDecimalPlaces = settings.maxPreDecimalPlaces; if(maxPreDecimalPlaces == "" || isNaN(maxPreDecimalPlaces)) return false; // In this case, there is no maximum var indexOfDecimalPoint = string.indexOf(DEC_SEP); if(indexOfDecimalPoint >= 0) return false; var numPreDecimalDigits = countDigits(string); if(numPreDecimalDigits >= maxPreDecimalPlaces) return true; return false; } function isGreaterThanMax(numericString, settings) { if(!settings.max || settings.max < 0) return false; var outputNumber = parseFloat(numericString); if(outputNumber > settings.max) return true; return false; } function isLessThanMin(numericString, settings) { if(!settings.min || settings.min > 0) return false; var outputNumber = parseFloat(numericString); if(outputNumber < settings.min) return true; return false; } /******************************** * Trims a string according to the settings provided ********************************/ function trimAlphaNum(inputString, settings){ if(typeof inputString != "string") return inputString; var inChars = inputString.split(""); var outChars = []; var i = 0; var Char; for(i=0; i= 0) return false; var posOfFirstThouSep = currentString.indexOf(THOU_SEP); // Check if this is the first occurrence of a THOU_SEP if(posOfFirstThouSep < 0) return true; var posOfLastThouSep = currentString.lastIndexOf(THOU_SEP); var charsSinceLastThouSep = currentString.length - posOfLastThouSep - 1; // Check if there has been 3 digits since the last THOU_SEP if(charsSinceLastThouSep < 3) return false; var digitsSinceFirstThouSep = countDigits(currentString.substring(posOfFirstThouSep)); // Check if there has been a multiple of 3 digits since the first THOU_SEP if((digitsSinceFirstThouSep % 3) > 0) return false; return true; } //////////////////////////////////////////////////////////////////////////////////// // Implementation of a Set //////////////////////////////////////////////////////////////////////////////////// function Set(elems){ if(typeof elems == "string") this.map = stringToMap(elems); else this.map = {}; } Set.prototype.add = function(set){ var newSet = this.clone(); for(var key in set.map) newSet.map[key] = true; return newSet; } Set.prototype.subtract = function(set){ var newSet = this.clone(); for(var key in set.map) delete newSet.map[key]; return newSet; } Set.prototype.contains = function(key){ if(this.map[key]) return true; else return false; } Set.prototype.clone = function(){ var newSet = new Set(); for(var key in this.map) newSet.map[key] = true; return newSet; } //////////////////////////////////////////////////////////////////////////////////// function stringToMap(string){ var map = {}; var array = string.split(""); var i=0; var Char; for(i=0; i=0){endPos=i.toString().length}else{endPos=startPos+r.toString().length}return{start:startPos,end:endPos}},s=function(t){var n=r(t);if(t.selectionStart!==undefined){if(document.activeElement&&document.activeElement!=t&&t.selectionStart==t.selectionEnd&&t.selectionStart==0){return{start:t.value.length,end:t.value.length}}return{start:t.selectionStart,end:t.selectionEnd}}else if(n.getSelection){return i(t,n)}else{try{if(t.nodeName.toLowerCase()=="input"){var s=r(t).document.selection.createRange(),o=t.createTextRange();o.setEndPoint("EndToStart",s);var u=o.text.length;return{start:u,end:u+s.text.length}}else{var a=i(t,n);if(!a){return a}var f=e.Range.current().clone(),l=f.clone().collapse().range,c=f.clone().collapse(false).range;l.moveStart("character",-1);c.moveStart("character",-1);if(a.startPos!=0&&l.text==""){a.startPos+=2}if(a.endPos!=0&&c.text==""){a.endPos+=2}return a}}catch(h){return{start:t.value.length,end:t.value.length}}}},o=function(e,t,n){var i=r(e);if(e.setSelectionRange){if(n===undefined){e.focus();e.setSelectionRange(t,t)}else{e.select();e.selectionStart=t;e.selectionEnd=n}}else if(e.createTextRange){var s=e.createTextRange();s.moveStart("character",t);n=n||t;s.moveEnd("character",n-e.value.length);s.select()}else if(i.getSelection){var o=i.document,u=i.getSelection(),f=o.createRange(),l=[t,n!==undefined?n:t];a([e],l);f.setStart(l[0].el,l[0].count);f.setEnd(l[1].el,l[1].count);u.removeAllRanges();u.addRange(f)}else if(i.document.body.createTextRange){var f=document.body.createTextRange();f.moveToElementText(e);f.collapse();f.moveStart("character",t);f.moveEnd("character",n!==undefined?n:t);f.select()}},u=function(e,t,n,r){if(typeof n[0]==="number"&&n[0]= options.captureLength AND text != saved text OR if override AND text >= options.captureLength if ((value.length >= options.captureLength && value.toUpperCase() != timer.text) || (override && value.length >= options.captureLength)) { timer.text = value.toUpperCase(); timer.cb.call(timer.el, value); } }; function watchElement(elem) { var elementType = elem.type.toUpperCase(); if (jQuery.inArray(elementType, options.inputTypes) >= 0) { // Allocate timer element var timer = { timer: null, text: jQuery(elem).val().toUpperCase(), cb: options.callback, el: elem, wait: options.wait }; // Set focus action (highlight) if (options.highlight) { jQuery(elem).focus( function() { this.select(); }); } // Key watcher / clear and reset the timer var startWatch = function(evt) { var timerWait = timer.wait; var overrideBool = false; var evtElementType = this.type.toUpperCase(); // If enter key is pressed and not a TEXTAREA and matched inputTypes if (typeof evt.keyCode != 'undefined' && evt.keyCode == 13 && evtElementType != 'TEXTAREA' && jQuery.inArray(evtElementType, options.inputTypes) >= 0) { timerWait = 1; overrideBool = true; } var timerCallbackFx = function() { checkElement(timer, overrideBool) } // Clear timer clearTimeout(timer.timer); timer.timer = setTimeout(timerCallbackFx, timerWait); }; jQuery(elem).on('keydown paste cut input', startWatch); } }; // Watch Each Element return this.each(function() { watchElement(this); }); }; })(jQuery);redux/ReduxCore/assets/js/vendor/lte-ie7.js000066600000023472152143340070014625 0ustar00/* Load this script using conditional IE comments if you need to support IE 7 and IE 6. */ window.onload = function() { function addIcon(el, entity) { var html = el.innerHTML; el.innerHTML = '' + entity + '' + html; } var icons = { 'icon-move' : '', 'icon-music' : '', 'icon-network' : '', 'icon-off' : '', 'icon-ok' : '', 'icon-ok-circle' : '', 'icon-ok-sign' : '', 'icon-paper-clip' : '', 'icon-paper-clip-alt' : '', 'icon-path' : '', 'icon-plus-sign' : '', 'icon-print' : '', 'icon-qrcode' : '', 'icon-question' : '', 'icon-question-sign' : '', 'icon-quotes' : '', 'icon-quotes-alt' : '', 'icon-random' : '', 'icon-record' : '', 'icon-reddit' : '', 'icon-refresh' : '', 'icon-screenshot' : '', 'icon-search' : '', 'icon-search-alt' : '', 'icon-share' : '', 'icon-share-alt' : '', 'icon-shopping-cart' : '', 'icon-shopping-cart-sign' : '', 'icon-signal' : '', 'icon-skype' : '', 'icon-slideshare' : '', 'icon-smiley' : '', 'icon-th-large' : '', 'icon-th-list' : '', 'icon-thumbs-down' : '', 'icon-thumbs-up' : '', 'icon-time' : '', 'icon-time-alt' : '', 'icon-tint' : '', 'icon-torso' : '', 'icon-trash' : '', 'icon-trash-alt' : '', 'icon-tumblr' : '', 'icon-w3c' : '', 'icon-warning-sign' : '', 'icon-website' : '', 'icon-website-alt' : '', 'icon-wheelchair' : '', 'icon-wordpress' : '', 'icon-wrench' : '', 'icon-wrench-alt' : '', 'icon-youtube' : '', 'icon-zoom-in' : '', 'icon-zoom-out' : '', 'icon-pause-alt' : '', 'icon-pencil' : '', 'icon-pencil-alt' : '', 'icon-person' : '', 'icon-phone' : '', 'icon-phone-alt' : '', 'icon-photo' : '', 'icon-photo-alt' : '', 'icon-picasa' : '', 'icon-picture' : '', 'icon-pinterest' : '', 'icon-plane' : '', 'icon-play-alt' : '', 'icon-play-circle' : '', 'icon-plus' : '', 'icon-remove' : '', 'icon-remove-circle' : '', 'icon-remove-sign' : '', 'icon-repeat' : '', 'icon-repeat-alt' : '', 'icon-resize-full' : '', 'icon-resize-horizontal' : '', 'icon-resize-small' : '', 'icon-resize-vertical' : '', 'icon-retweet' : '', 'icon-reverse-alt' : '', 'icon-road' : '', 'icon-rss' : '', 'icon-screen' : '', 'icon-screen-alt' : '', 'icon-smiley-alt' : '', 'icon-speaker' : '', 'icon-stackoverflow' : '', 'icon-star' : '', 'icon-star-alt' : '', 'icon-star-empty' : '', 'icon-stop-alt' : '', 'icon-stumbleupon' : '', 'icon-tag' : '', 'icon-tags' : '', 'icon-tasks' : '', 'icon-text-height' : '', 'icon-text-width' : '', 'icon-th' : '', 'icon-twitter' : '', 'icon-universal-access' : '', 'icon-unlock' : '', 'icon-unlock-alt' : '', 'icon-upload' : '', 'icon-user' : '', 'icon-video' : '', 'icon-video-alt' : '', 'icon-video-chat' : '', 'icon-view-mode' : '', 'icon-vimeo' : '', 'icon-vkontakte' : '', 'icon-volume-down' : '', 'icon-volume-off' : '', 'icon-volume-up' : '', 'icon-backward' : '', 'icon-fast-backward' : '', 'icon-fast-forward' : '', 'icon-forward' : '', 'icon-play' : '', 'icon-step-backward' : '', 'icon-step-forward' : '', 'icon-briefcase' : '', 'icon-bullhorn' : '', 'icon-calendar' : '', 'icon-calendar-sign' : '', 'icon-address-book' : '', 'icon-address-book-alt' : '', 'icon-adjust' : '', 'icon-adult' : '', 'icon-align-center' : '', 'icon-align-justify' : '', 'icon-align-left' : '', 'icon-align-right' : '', 'icon-arrow-down' : '', 'icon-arrow-left' : '', 'icon-arrow-right' : '', 'icon-arrow-up' : '', 'icon-asl' : '', 'icon-asterisk' : '', 'icon-ban-circle' : '', 'icon-barcode' : '', 'icon-behance' : '', 'icon-bell' : '', 'icon-blind' : '', 'icon-blogger' : '', 'icon-bold' : '', 'icon-book' : '', 'icon-bookmark' : '', 'icon-bookmark-empty' : '', 'icon-braille' : '', 'icon-camera' : '', 'icon-cc' : '', 'icon-certificate' : '', 'icon-check' : '', 'icon-check-empty' : '', 'icon-chevron-down' : '', 'icon-chevron-left' : '', 'icon-chevron-right' : '', 'icon-chevron-up' : '', 'icon-child' : '', 'icon-circle-arrow-down' : '', 'icon-circle-arrow-left' : '', 'icon-circle-arrow-right' : '', 'icon-circle-arrow-up' : '', 'icon-cloud' : '', 'icon-cloud-alt' : '', 'icon-cog' : '', 'icon-cog-alt' : '', 'icon-cogs' : '', 'icon-comment' : '', 'icon-comment-alt' : '', 'icon-compass' : '', 'icon-compass-alt' : '', 'icon-credit-card' : '', 'icon-css' : '', 'icon-dashboard' : '', 'icon-delicious' : '', 'icon-deviantart' : '', 'icon-digg' : '', 'icon-download' : '', 'icon-download-alt' : '', 'icon-dribble' : '', 'icon-edit' : '', 'icon-eject' : '', 'icon-envelope' : '', 'icon-envelope-alt' : '', 'icon-error' : '', 'icon-error-alt' : '', 'icon-exclamation-sign' : '', 'icon-eye-close' : '', 'icon-eye-open' : '', 'icon-facebook' : '', 'icon-facetime-video' : '', 'icon-female' : '', 'icon-file' : '', 'icon-file-alt' : '', 'icon-file-edit' : '', 'icon-file-edit-alt' : '', 'icon-file-new' : '', 'icon-file-new-alt' : '', 'icon-film' : '', 'icon-filter' : '', 'icon-fire' : '', 'icon-flag' : '', 'icon-flag-alt' : '', 'icon-flickr' : '', 'icon-folder' : '', 'icon-folder-close' : '', 'icon-folder-open' : '', 'icon-folder-sign' : '', 'icon-font' : '', 'icon-fontsize' : '', 'icon-forward-alt' : '', 'icon-foursquare' : '', 'icon-friendfeed' : '', 'icon-friendfeed-rect' : '', 'icon-fullscreen' : '', 'icon-gift' : '', 'icon-github' : '', 'icon-github-text' : '', 'icon-glass' : '', 'icon-glasses' : '', 'icon-globe' : '', 'icon-globe-alt' : '', 'icon-googleplus' : '', 'icon-graph' : '', 'icon-graph-alt' : '', 'icon-group' : '', 'icon-group-alt' : '', 'icon-guidedog' : '', 'icon-hand-down' : '', 'icon-hand-left' : '', 'icon-hand-right' : '', 'icon-hand-up' : '', 'icon-hdd' : '', 'icon-headphones' : '', 'icon-hearing-impaired' : '', 'icon-heart' : '', 'icon-heart-alt' : '', 'icon-heart-empty' : '', 'icon-home' : '', 'icon-home-alt' : '', 'icon-idea' : '', 'icon-idea-alt' : '', 'icon-inbox' : '', 'icon-inbox-alt' : '', 'icon-inbox-box' : '', 'icon-indent-left' : '', 'icon-indent-right' : '', 'icon-info-sign' : '', 'icon-instagram' : '', 'icon-iphone-home' : '', 'icon-italic' : '', 'icon-key' : '', 'icon-laptop' : '', 'icon-laptop-alt' : '', 'icon-leaf' : '', 'icon-linkedin' : '', 'icon-list' : '', 'icon-list-alt' : '', 'icon-lock' : '', 'icon-lock-alt' : '', 'icon-magnet' : '', 'icon-male' : '', 'icon-map-marker' : '', 'icon-map-marker-alt' : '', 'icon-mic' : '', 'icon-mic-alt' : '', 'icon-minus' : '', 'icon-minus-sign' : '', 'icon-pause' : '', 'icon-fork' : '', 'icon-broom' : '', 'icon-return-key' : '', 'icon-lastfm' : '', 'icon-livejournal' : '', 'icon-myspace' : '', 'icon-soundcloud' : '', 'icon-viadeo' : '', 'icon-spotify' : '', 'icon-caret-left' : '', 'icon-caret-up' : '', 'icon-caret-right' : '', 'icon-caret-down' : '', 'icon-stop' : '' }, els = document.getElementsByTagName('*'), i, attr, html, c, el; for (i = 0; ; i += 1) { el = els[i]; if(!el) { break; } attr = el.getAttribute('data-icon'); if (attr) { addIcon(el, attr); } c = el.className; c = c.match(/icon-[^\s'"]+/); if (c && icons[c[0]]) { addIcon(el, icons[c[0]]); } } };redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.js000066600000426242152143340070016631 0ustar00/* * qTip2 - Pretty powerful tooltips - v2.2.1 * http://qtip2.com * * Copyright (c) 2014 * Released under the MIT licenses * http://jquery.org/license * * Date: Sat Sep 6 2014 11:12 GMT+0100+0100 * Plugins: tips modal viewport svg imagemap ie6 * Styles: core basic css3 */ /*global window: false, jQuery: false, console: false, define: false */ /* Cache window, document, undefined */ (function( window, document, undefined ) { // Uses AMD or browser globals to create a jQuery plugin. (function( factory ) { "use strict"; if(typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if(jQuery && !jQuery.fn.qtip) { factory(jQuery); } } (function($) { "use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ ;// Munge the primitives - Paul Irish tip var TRUE = true, FALSE = false, NULL = null, // Common variables X = 'x', Y = 'y', WIDTH = 'width', HEIGHT = 'height', // Positioning sides TOP = 'top', LEFT = 'left', BOTTOM = 'bottom', RIGHT = 'right', CENTER = 'center', // Position adjustment types FLIP = 'flip', FLIPINVERT = 'flipinvert', SHIFT = 'shift', // Shortcut vars QTIP, PROTOTYPE, CORNER, CHECKS, PLUGINS = {}, NAMESPACE = 'qtip', ATTR_HAS = 'data-hasqtip', ATTR_ID = 'data-qtip-id', WIDGET = ['ui-widget', 'ui-tooltip'], SELECTOR = '.'+NAMESPACE, INACTIVE_EVENTS = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split(' '), CLASS_FIXED = NAMESPACE+'-fixed', CLASS_DEFAULT = NAMESPACE + '-default', CLASS_FOCUS = NAMESPACE + '-focus', CLASS_HOVER = NAMESPACE + '-hover', CLASS_DISABLED = NAMESPACE+'-disabled', replaceSuffix = '_replacedByqTip', oldtitle = 'oldtitle', trackingBound, // Browser detection BROWSER = { /* * IE version detection * * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment * Credit to James Padolsey for the original implemntation! */ ie: (function(){ for ( var v = 4, i = document.createElement("div"); (i.innerHTML = "") && i.getElementsByTagName("i")[0]; v+=1 ) {} return v > 4 ? v : NaN; }()), /* * iOS version detection */ iOS: parseFloat( ('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1]) .replace('undefined', '3_2').replace('_', '.').replace('_', '') ) || FALSE }; ;function QTip(target, options, id, attr) { // Elements and ID this.id = id; this.target = target; this.tooltip = NULL; this.elements = { target: target }; // Internal constructs this._id = NAMESPACE + '-' + id; this.timers = { img: {} }; this.options = options; this.plugins = {}; // Cache object this.cache = { event: {}, target: $(), disabled: FALSE, attr: attr, onTooltip: FALSE, lastClass: '' }; // Set the initial flags this.rendered = this.destroyed = this.disabled = this.waiting = this.hiddenDuringWait = this.positioning = this.triggering = FALSE; } PROTOTYPE = QTip.prototype; PROTOTYPE._when = function(deferreds) { return $.when.apply($, deferreds); }; PROTOTYPE.render = function(show) { if(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit var self = this, options = this.options, cache = this.cache, elements = this.elements, text = options.content.text, title = options.content.title, button = options.content.button, posOptions = options.position, namespace = '.'+this._id+' ', deferreds = [], tooltip; // Add ARIA attributes to target $.attr(this.target[0], 'aria-describedby', this._id); // Create public position object that tracks current position corners cache.posClass = this._createPosClass( (this.position = { my: posOptions.my, at: posOptions.at }).my ); // Create tooltip element this.tooltip = elements.tooltip = tooltip = $('
    ', { 'id': this._id, 'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '), 'width': options.style.width || '', 'height': options.style.height || '', 'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse, /* ARIA specific attributes */ 'role': 'alert', 'aria-live': 'polite', 'aria-atomic': FALSE, 'aria-describedby': this._id + '-content', 'aria-hidden': TRUE }) .toggleClass(CLASS_DISABLED, this.disabled) .attr(ATTR_ID, this.id) .data(NAMESPACE, this) .appendTo(posOptions.container) .append( // Create content element elements.content = $('
    ', { 'class': NAMESPACE + '-content', 'id': this._id + '-content', 'aria-atomic': TRUE }) ); // Set rendered flag and prevent redundant reposition calls for now this.rendered = -1; this.positioning = TRUE; // Create title... if(title) { this._createTitle(); // Update title only if its not a callback (called in toggle if so) if(!$.isFunction(title)) { deferreds.push( this._updateTitle(title, FALSE) ); } } // Create button if(button) { this._createButton(); } // Set proper rendered flag and update content if not a callback function (called in toggle) if(!$.isFunction(text)) { deferreds.push( this._updateContent(text, FALSE) ); } this.rendered = TRUE; // Setup widget classes this._setWidget(); // Initialize 'render' plugins $.each(PLUGINS, function(name) { var instance; if(this.initialize === 'render' && (instance = this(self))) { self.plugins[name] = instance; } }); // Unassign initial events and assign proper events this._unassignEvents(); this._assignEvents(); // When deferreds have completed this._when(deferreds).then(function() { // tooltiprender event self._trigger('render'); // Reset flags self.positioning = FALSE; // Show tooltip if not hidden during wait period if(!self.hiddenDuringWait && (options.show.ready || show)) { self.toggle(TRUE, cache.event, FALSE); } self.hiddenDuringWait = FALSE; }); // Expose API QTIP.api[this.id] = this; return this; }; PROTOTYPE.destroy = function(immediate) { // Set flag the signify destroy is taking place to plugins // and ensure it only gets destroyed once! if(this.destroyed) { return this.target; } function process() { if(this.destroyed) { return; } this.destroyed = TRUE; var target = this.target, title = target.attr(oldtitle), timer; // Destroy tooltip if rendered if(this.rendered) { this.tooltip.stop(1,0).find('*').remove().end().remove(); } // Destroy all plugins $.each(this.plugins, function(name) { this.destroy && this.destroy(); }); // Clear timers for(timer in this.timers) { clearTimeout(this.timers[timer]); } // Remove api object and ARIA attributes target.removeData(NAMESPACE) .removeAttr(ATTR_ID) .removeAttr(ATTR_HAS) .removeAttr('aria-describedby'); // Reset old title attribute if removed if(this.options.suppress && title) { target.attr('title', title).removeAttr(oldtitle); } // Remove qTip events associated with this API this._unassignEvents(); // Remove ID from used id objects, and delete object references // for better garbage collection and leak protection this.options = this.elements = this.cache = this.timers = this.plugins = this.mouse = NULL; // Delete epoxsed API object delete QTIP.api[this.id]; } // If an immediate destory is needed if((immediate !== TRUE || this.triggering === 'hide') && this.rendered) { this.tooltip.one('tooltiphidden', $.proxy(process, this)); !this.triggering && this.hide(); } // If we're not in the process of hiding... process else { process.call(this); } return this.target; }; ;function invalidOpt(a) { return a === NULL || $.type(a) !== 'object'; } function invalidContent(c) { return !( $.isFunction(c) || (c && c.attr) || c.length || ($.type(c) === 'object' && (c.jquery || c.then) )); } // Option object sanitizer function sanitizeOptions(opts) { var content, text, ajax, once; if(invalidOpt(opts)) { return FALSE; } if(invalidOpt(opts.metadata)) { opts.metadata = { type: opts.metadata }; } if('content' in opts) { content = opts.content; if(invalidOpt(content) || content.jquery || content.done) { content = opts.content = { text: (text = invalidContent(content) ? FALSE : content) }; } else { text = content.text; } // DEPRECATED - Old content.ajax plugin functionality // Converts it into the proper Deferred syntax if('ajax' in content) { ajax = content.ajax; once = ajax && ajax.once !== FALSE; delete content.ajax; content.text = function(event, api) { var loading = text || $(this).attr(api.options.content.attr) || 'Loading...', deferred = $.ajax( $.extend({}, ajax, { context: api }) ) .then(ajax.success, NULL, ajax.error) .then(function(content) { if(content && once) { api.set('content.text', content); } return content; }, function(xhr, status, error) { if(api.destroyed || xhr.status === 0) { return; } api.set('content.text', status + ': ' + error); }); return !once ? (api.set('content.text', loading), deferred) : loading; }; } if('title' in content) { if($.isPlainObject(content.title)) { content.button = content.title.button; content.title = content.title.text; } if(invalidContent(content.title || FALSE)) { content.title = FALSE; } } } if('position' in opts && invalidOpt(opts.position)) { opts.position = { my: opts.position, at: opts.position }; } if('show' in opts && invalidOpt(opts.show)) { opts.show = opts.show.jquery ? { target: opts.show } : opts.show === TRUE ? { ready: TRUE } : { event: opts.show }; } if('hide' in opts && invalidOpt(opts.hide)) { opts.hide = opts.hide.jquery ? { target: opts.hide } : { event: opts.hide }; } if('style' in opts && invalidOpt(opts.style)) { opts.style = { classes: opts.style }; } // Sanitize plugin options $.each(PLUGINS, function() { this.sanitize && this.sanitize(opts); }); return opts; } // Setup builtin .set() option checks CHECKS = PROTOTYPE.checks = { builtin: { // Core checks '^id$': function(obj, o, v, prev) { var id = v === TRUE ? QTIP.nextid : v, new_id = NAMESPACE + '-' + id; if(id !== FALSE && id.length > 0 && !$('#'+new_id).length) { this._id = new_id; if(this.rendered) { this.tooltip[0].id = this._id; this.elements.content[0].id = this._id + '-content'; this.elements.title[0].id = this._id + '-title'; } } else { obj[o] = prev; } }, '^prerender': function(obj, o, v) { v && !this.rendered && this.render(this.options.show.ready); }, // Content checks '^content.text$': function(obj, o, v) { this._updateContent(v); }, '^content.attr$': function(obj, o, v, prev) { if(this.options.content.text === this.target.attr(prev)) { this._updateContent( this.target.attr(v) ); } }, '^content.title$': function(obj, o, v) { // Remove title if content is null if(!v) { return this._removeTitle(); } // If title isn't already created, create it now and update v && !this.elements.title && this._createTitle(); this._updateTitle(v); }, '^content.button$': function(obj, o, v) { this._updateButton(v); }, '^content.title.(text|button)$': function(obj, o, v) { this.set('content.'+o, v); // Backwards title.text/button compat }, // Position checks '^position.(my|at)$': function(obj, o, v){ 'string' === typeof v && (this.position[o] = obj[o] = new CORNER(v, o === 'at')); }, '^position.container$': function(obj, o, v){ this.rendered && this.tooltip.appendTo(v); }, // Show checks '^show.ready$': function(obj, o, v) { v && (!this.rendered && this.render(TRUE) || this.toggle(TRUE)); }, // Style checks '^style.classes$': function(obj, o, v, p) { this.rendered && this.tooltip.removeClass(p).addClass(v); }, '^style.(width|height)': function(obj, o, v) { this.rendered && this.tooltip.css(o, v); }, '^style.widget|content.title': function() { this.rendered && this._setWidget(); }, '^style.def': function(obj, o, v) { this.rendered && this.tooltip.toggleClass(CLASS_DEFAULT, !!v); }, // Events check '^events.(render|show|move|hide|focus|blur)$': function(obj, o, v) { this.rendered && this.tooltip[($.isFunction(v) ? '' : 'un') + 'bind']('tooltip'+o, v); }, // Properties which require event reassignment '^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() { if(!this.rendered) { return; } // Set tracking flag var posOptions = this.options.position; this.tooltip.attr('tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse); // Reassign events this._unassignEvents(); this._assignEvents(); } } }; // Dot notation converter function convertNotation(options, notation) { var i = 0, obj, option = options, // Split notation into array levels = notation.split('.'); // Loop through while( option = option[ levels[i++] ] ) { if(i < levels.length) { obj = option; } } return [obj || options, levels.pop()]; } PROTOTYPE.get = function(notation) { if(this.destroyed) { return this; } var o = convertNotation(this.options, notation.toLowerCase()), result = o[0][ o[1] ]; return result.precedance ? result.string() : result; }; function setCallback(notation, args) { var category, rule, match; for(category in this.checks) { for(rule in this.checks[category]) { if(match = (new RegExp(rule, 'i')).exec(notation)) { args.push(match); if(category === 'builtin' || this.plugins[category]) { this.checks[category][rule].apply( this.plugins[category] || this, args ); } } } } } var rmove = /^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i, rrender = /^prerender|show\.ready/i; PROTOTYPE.set = function(option, value) { if(this.destroyed) { return this; } var rendered = this.rendered, reposition = FALSE, options = this.options, checks = this.checks, name; // Convert singular option/value pair into object form if('string' === typeof option) { name = option; option = {}; option[name] = value; } else { option = $.extend({}, option); } // Set all of the defined options to their new values $.each(option, function(notation, value) { if(rendered && rrender.test(notation)) { delete option[notation]; return; } // Set new obj value var obj = convertNotation(options, notation.toLowerCase()), previous; previous = obj[0][ obj[1] ]; obj[0][ obj[1] ] = value && value.nodeType ? $(value) : value; // Also check if we need to reposition reposition = rmove.test(notation) || reposition; // Set the new params for the callback option[notation] = [obj[0], obj[1], value, previous]; }); // Re-sanitize options sanitizeOptions(options); /* * Execute any valid callbacks for the set options * Also set positioning flag so we don't get loads of redundant repositioning calls. */ this.positioning = TRUE; $.each(option, $.proxy(setCallback, this)); this.positioning = FALSE; // Update position if needed if(this.rendered && this.tooltip[0].offsetWidth > 0 && reposition) { this.reposition( options.position.target === 'mouse' ? NULL : this.cache.event ); } return this; }; ;PROTOTYPE._update = function(content, element, reposition) { var self = this, cache = this.cache; // Make sure tooltip is rendered and content is defined. If not return if(!this.rendered || !content) { return FALSE; } // Use function to parse content if($.isFunction(content)) { content = content.call(this.elements.target, cache.event, this) || ''; } // Handle deferred content if($.isFunction(content.then)) { cache.waiting = TRUE; return content.then(function(c) { cache.waiting = FALSE; return self._update(c, element); }, NULL, function(e) { return self._update(e, element); }); } // If content is null... return false if(content === FALSE || (!content && content !== '')) { return FALSE; } // Append new content if its a DOM array and show it if hidden if(content.jquery && content.length > 0) { element.empty().append( content.css({ display: 'block', visibility: 'visible' }) ); } // Content is a regular string, insert the new content else { element.html(content); } // Wait for content to be loaded, and reposition return this._waitForContent(element).then(function(images) { if(self.rendered && self.tooltip[0].offsetWidth > 0) { self.reposition(cache.event, !images.length); } }); }; PROTOTYPE._waitForContent = function(element) { var cache = this.cache; // Set flag cache.waiting = TRUE; // If imagesLoaded is included, ensure images have loaded and return promise return ( $.fn.imagesLoaded ? element.imagesLoaded() : $.Deferred().resolve([]) ) .done(function() { cache.waiting = FALSE; }) .promise(); }; PROTOTYPE._updateContent = function(content, reposition) { this._update(content, this.elements.content, reposition); }; PROTOTYPE._updateTitle = function(content, reposition) { if(this._update(content, this.elements.title, reposition) === FALSE) { this._removeTitle(FALSE); } }; PROTOTYPE._createTitle = function() { var elements = this.elements, id = this._id+'-title'; // Destroy previous title element, if present if(elements.titlebar) { this._removeTitle(); } // Create title bar and title elements elements.titlebar = $('
    ', { 'class': NAMESPACE + '-titlebar ' + (this.options.style.widget ? createWidgetClass('header') : '') }) .append( elements.title = $('
    ', { 'id': id, 'class': NAMESPACE + '-title', 'aria-atomic': TRUE }) ) .insertBefore(elements.content) // Button-specific events .delegate('.qtip-close', 'mousedown keydown mouseup keyup mouseout', function(event) { $(this).toggleClass('ui-state-active ui-state-focus', event.type.substr(-4) === 'down'); }) .delegate('.qtip-close', 'mouseover mouseout', function(event){ $(this).toggleClass('ui-state-hover', event.type === 'mouseover'); }); // Create button if enabled if(this.options.content.button) { this._createButton(); } }; PROTOTYPE._removeTitle = function(reposition) { var elements = this.elements; if(elements.title) { elements.titlebar.remove(); elements.titlebar = elements.title = elements.button = NULL; // Reposition if enabled if(reposition !== FALSE) { this.reposition(); } } }; ;PROTOTYPE._createPosClass = function(my) { return NAMESPACE + '-pos-' + (my || this.options.position.my).abbrev(); }; PROTOTYPE.reposition = function(event, effect) { if(!this.rendered || this.positioning || this.destroyed) { return this; } // Set positioning flag this.positioning = TRUE; var cache = this.cache, tooltip = this.tooltip, posOptions = this.options.position, target = posOptions.target, my = posOptions.my, at = posOptions.at, viewport = posOptions.viewport, container = posOptions.container, adjust = posOptions.adjust, method = adjust.method.split(' '), tooltipWidth = tooltip.outerWidth(FALSE), tooltipHeight = tooltip.outerHeight(FALSE), targetWidth = 0, targetHeight = 0, type = tooltip.css('position'), position = { left: 0, top: 0 }, visible = tooltip[0].offsetWidth > 0, isScroll = event && event.type === 'scroll', win = $(window), doc = container[0].ownerDocument, mouse = this.mouse, pluginCalculations, offset, adjusted, newClass; // Check if absolute position was passed if($.isArray(target) && target.length === 2) { // Force left top and set position at = { x: LEFT, y: TOP }; position = { left: target[0], top: target[1] }; } // Check if mouse was the target else if(target === 'mouse') { // Force left top to allow flipping at = { x: LEFT, y: TOP }; // Use the mouse origin that caused the show event, if distance hiding is enabled if((!adjust.mouse || this.options.hide.distance) && cache.origin && cache.origin.pageX) { event = cache.origin; } // Use cached event for resize/scroll events else if(!event || (event && (event.type === 'resize' || event.type === 'scroll'))) { event = cache.event; } // Otherwise, use the cached mouse coordinates if available else if(mouse && mouse.pageX) { event = mouse; } // Calculate body and container offset and take them into account below if(type !== 'static') { position = container.offset(); } if(doc.body.offsetWidth !== (window.innerWidth || doc.documentElement.clientWidth)) { offset = $(document.body).offset(); } // Use event coordinates for position position = { left: event.pageX - position.left + (offset && offset.left || 0), top: event.pageY - position.top + (offset && offset.top || 0) }; // Scroll events are a pain, some browsers if(adjust.mouse && isScroll && mouse) { position.left -= (mouse.scrollX || 0) - win.scrollLeft(); position.top -= (mouse.scrollY || 0) - win.scrollTop(); } } // Target wasn't mouse or absolute... else { // Check if event targetting is being used if(target === 'event') { if(event && event.target && event.type !== 'scroll' && event.type !== 'resize') { cache.target = $(event.target); } else if(!event.target) { cache.target = this.elements.target; } } else if(target !== 'event'){ cache.target = $(target.jquery ? target : this.elements.target); } target = cache.target; // Parse the target into a jQuery object and make sure there's an element present target = $(target).eq(0); if(target.length === 0) { return this; } // Check if window or document is the target else if(target[0] === document || target[0] === window) { targetWidth = BROWSER.iOS ? window.innerWidth : target.width(); targetHeight = BROWSER.iOS ? window.innerHeight : target.height(); if(target[0] === window) { position = { top: (viewport || target).scrollTop(), left: (viewport || target).scrollLeft() }; } } // Check if the target is an element else if(PLUGINS.imagemap && target.is('area')) { pluginCalculations = PLUGINS.imagemap(this, target, at, PLUGINS.viewport ? method : FALSE); } // Check if the target is an SVG element else if(PLUGINS.svg && target && target[0].ownerSVGElement) { pluginCalculations = PLUGINS.svg(this, target, at, PLUGINS.viewport ? method : FALSE); } // Otherwise use regular jQuery methods else { targetWidth = target.outerWidth(FALSE); targetHeight = target.outerHeight(FALSE); position = target.offset(); } // Parse returned plugin values into proper variables if(pluginCalculations) { targetWidth = pluginCalculations.width; targetHeight = pluginCalculations.height; offset = pluginCalculations.offset; position = pluginCalculations.position; } // Adjust position to take into account offset parents position = this.reposition.offset(target, position, container); // Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2) if((BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1) || (BROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33) || (!BROWSER.iOS && type === 'fixed') ){ position.left -= win.scrollLeft(); position.top -= win.scrollTop(); } // Adjust position relative to target if(!pluginCalculations || (pluginCalculations && pluginCalculations.adjustable !== FALSE)) { position.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0; position.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0; } } // Adjust position relative to tooltip position.left += adjust.x + (my.x === RIGHT ? -tooltipWidth : my.x === CENTER ? -tooltipWidth / 2 : 0); position.top += adjust.y + (my.y === BOTTOM ? -tooltipHeight : my.y === CENTER ? -tooltipHeight / 2 : 0); // Use viewport adjustment plugin if enabled if(PLUGINS.viewport) { adjusted = position.adjusted = PLUGINS.viewport( this, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight ); // Apply offsets supplied by positioning plugin (if used) if(offset && adjusted.left) { position.left += offset.left; } if(offset && adjusted.top) { position.top += offset.top; } // Apply any new 'my' position if(adjusted.my) { this.position.my = adjusted.my; } } // Viewport adjustment is disabled, set values to zero else { position.adjusted = { left: 0, top: 0 }; } // Set tooltip position class if it's changed if(cache.posClass !== (newClass = this._createPosClass(this.position.my))) { tooltip.removeClass(cache.posClass).addClass( (cache.posClass = newClass) ); } // tooltipmove event if(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; } delete position.adjusted; // If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly if(effect === FALSE || !visible || isNaN(position.left) || isNaN(position.top) || target === 'mouse' || !$.isFunction(posOptions.effect)) { tooltip.css(position); } // Use custom function if provided else if($.isFunction(posOptions.effect)) { posOptions.effect.call(tooltip, this, $.extend({}, position)); tooltip.queue(function(next) { // Reset attributes to avoid cross-browser rendering bugs $(this).css({ opacity: '', height: '' }); if(BROWSER.ie) { this.style.removeAttribute('filter'); } next(); }); } // Set positioning flag this.positioning = FALSE; return this; }; // Custom (more correct for qTip!) offset calculator PROTOTYPE.reposition.offset = function(elem, pos, container) { if(!container[0]) { return pos; } var ownerDocument = $(elem[0].ownerDocument), quirks = !!BROWSER.ie && document.compatMode !== 'CSS1Compat', parent = container[0], scrolled, position, parentOffset, overflow; function scroll(e, i) { pos.left += i * e.scrollLeft(); pos.top += i * e.scrollTop(); } // Compensate for non-static containers offset do { if((position = $.css(parent, 'position')) !== 'static') { if(position === 'fixed') { parentOffset = parent.getBoundingClientRect(); scroll(ownerDocument, -1); } else { parentOffset = $(parent).position(); parentOffset.left += (parseFloat($.css(parent, 'borderLeftWidth')) || 0); parentOffset.top += (parseFloat($.css(parent, 'borderTopWidth')) || 0); } pos.left -= parentOffset.left + (parseFloat($.css(parent, 'marginLeft')) || 0); pos.top -= parentOffset.top + (parseFloat($.css(parent, 'marginTop')) || 0); // If this is the first parent element with an overflow of "scroll" or "auto", store it if(!scrolled && (overflow = $.css(parent, 'overflow')) !== 'hidden' && overflow !== 'visible') { scrolled = $(parent); } } } while((parent = parent.offsetParent)); // Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode) if(scrolled && (scrolled[0] !== ownerDocument[0] || quirks)) { scroll(scrolled, 1); } return pos; }; // Corner class var C = (CORNER = PROTOTYPE.reposition.Corner = function(corner, forceY) { corner = ('' + corner).replace(/([A-Z])/, ' $1').replace(/middle/gi, CENTER).toLowerCase(); this.x = (corner.match(/left|right/i) || corner.match(/center/) || ['inherit'])[0].toLowerCase(); this.y = (corner.match(/top|bottom|center/i) || ['inherit'])[0].toLowerCase(); this.forceY = !!forceY; var f = corner.charAt(0); this.precedance = (f === 't' || f === 'b' ? Y : X); }).prototype; C.invert = function(z, center) { this[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z]; }; C.string = function(join) { var x = this.x, y = this.y; var result = x !== y ? (x === 'center' || y !== 'center' && (this.precedance === Y || this.forceY) ? [y,x] : [x,y] ) : [x]; return join !== false ? result.join(' ') : result; }; C.abbrev = function() { var result = this.string(false); return result[0].charAt(0) + (result[1] && result[1].charAt(0) || ''); }; C.clone = function() { return new CORNER( this.string(), this.forceY ); }; ; PROTOTYPE.toggle = function(state, event) { var cache = this.cache, options = this.options, tooltip = this.tooltip; // Try to prevent flickering when tooltip overlaps show element if(event) { if((/over|enter/).test(event.type) && cache.event && (/out|leave/).test(cache.event.type) && options.show.target.add(event.target).length === options.show.target.length && tooltip.has(event.relatedTarget).length) { return this; } // Cache event cache.event = $.event.fix(event); } // If we're currently waiting and we've just hidden... stop it this.waiting && !state && (this.hiddenDuringWait = TRUE); // Render the tooltip if showing and it isn't already if(!this.rendered) { return state ? this.render(1) : this; } else if(this.destroyed || this.disabled) { return this; } var type = state ? 'show' : 'hide', opts = this.options[type], otherOpts = this.options[ !state ? 'show' : 'hide' ], posOptions = this.options.position, contentOptions = this.options.content, width = this.tooltip.css('width'), visible = this.tooltip.is(':visible'), animate = state || opts.target.length === 1, sameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target, identicalState, allow, showEvent, delay, after; // Detect state if valid one isn't provided if((typeof state).search('boolean|number')) { state = !visible; } // Check if the tooltip is in an identical state to the new would-be state identicalState = !tooltip.is(':animated') && visible === state && sameTarget; // Fire tooltip(show/hide) event and check if destroyed allow = !identicalState ? !!this._trigger(type, [90]) : NULL; // Check to make sure the tooltip wasn't destroyed in the callback if(this.destroyed) { return this; } // If the user didn't stop the method prematurely and we're showing the tooltip, focus it if(allow !== FALSE && state) { this.focus(event); } // If the state hasn't changed or the user stopped it, return early if(!allow || identicalState) { return this; } // Set ARIA hidden attribute $.attr(tooltip[0], 'aria-hidden', !!!state); // Execute state specific properties if(state) { // Store show origin coordinates this.mouse && (cache.origin = $.event.fix(this.mouse)); // Update tooltip content & title if it's a dynamic function if($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); } if($.isFunction(contentOptions.title)) { this._updateTitle(contentOptions.title, FALSE); } // Cache mousemove events for positioning purposes (if not already tracking) if(!trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse) { $(document).bind('mousemove.'+NAMESPACE, this._storeMouse); trackingBound = TRUE; } // Update the tooltip position (set width first to prevent viewport/max-width issues) if(!width) { tooltip.css('width', tooltip.outerWidth(FALSE)); } this.reposition(event, arguments[2]); if(!width) { tooltip.css('width', ''); } // Hide other tooltips if tooltip is solo if(!!opts.solo) { (typeof opts.solo === 'string' ? $(opts.solo) : $(SELECTOR, opts.solo)) .not(tooltip).not(opts.target).qtip('hide', $.Event('tooltipsolo')); } } else { // Clear show timer if we're hiding clearTimeout(this.timers.show); // Remove cached origin on hide delete cache.origin; // Remove mouse tracking event if not needed (all tracking qTips are hidden) if(trackingBound && !$(SELECTOR+'[tracking="true"]:visible', opts.solo).not(tooltip).length) { $(document).unbind('mousemove.'+NAMESPACE); trackingBound = FALSE; } // Blur the tooltip this.blur(event); } // Define post-animation, state specific properties after = $.proxy(function() { if(state) { // Prevent antialias from disappearing in IE by removing filter if(BROWSER.ie) { tooltip[0].style.removeAttribute('filter'); } // Remove overflow setting to prevent tip bugs tooltip.css('overflow', ''); // Autofocus elements if enabled if('string' === typeof opts.autofocus) { $(this.options.show.autofocus, tooltip).focus(); } // If set, hide tooltip when inactive for delay period this.options.show.target.trigger('qtip-'+this.id+'-inactive'); } else { // Reset CSS states tooltip.css({ display: '', visibility: '', opacity: '', left: '', top: '' }); } // tooltipvisible/tooltiphidden events this._trigger(state ? 'visible' : 'hidden'); }, this); // If no effect type is supplied, use a simple toggle if(opts.effect === FALSE || animate === FALSE) { tooltip[ type ](); after(); } // Use custom function if provided else if($.isFunction(opts.effect)) { tooltip.stop(1, 1); opts.effect.call(tooltip, this); tooltip.queue('fx', function(n) { after(); n(); }); } // Use basic fade function by default else { tooltip.fadeTo(90, state ? 1 : 0, after); } // If inactive hide method is set, active it if(state) { opts.target.trigger('qtip-'+this.id+'-inactive'); } return this; }; PROTOTYPE.show = function(event) { return this.toggle(TRUE, event); }; PROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); }; ;PROTOTYPE.focus = function(event) { if(!this.rendered || this.destroyed) { return this; } var qtips = $(SELECTOR), tooltip = this.tooltip, curIndex = parseInt(tooltip[0].style.zIndex, 10), newIndex = QTIP.zindex + qtips.length, focusedElem; // Only update the z-index if it has changed and tooltip is not already focused if(!tooltip.hasClass(CLASS_FOCUS)) { // tooltipfocus event if(this._trigger('focus', [newIndex], event)) { // Only update z-index's if they've changed if(curIndex !== newIndex) { // Reduce our z-index's and keep them properly ordered qtips.each(function() { if(this.style.zIndex > curIndex) { this.style.zIndex = this.style.zIndex - 1; } }); // Fire blur event for focused tooltip qtips.filter('.' + CLASS_FOCUS).qtip('blur', event); } // Set the new z-index tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex; } } return this; }; PROTOTYPE.blur = function(event) { if(!this.rendered || this.destroyed) { return this; } // Set focused status to FALSE this.tooltip.removeClass(CLASS_FOCUS); // tooltipblur event this._trigger('blur', [ this.tooltip.css('zIndex') ], event); return this; }; ;PROTOTYPE.disable = function(state) { if(this.destroyed) { return this; } // If 'toggle' is passed, toggle the current state if(state === 'toggle') { state = !(this.rendered ? this.tooltip.hasClass(CLASS_DISABLED) : this.disabled); } // Disable if no state passed else if('boolean' !== typeof state) { state = TRUE; } if(this.rendered) { this.tooltip.toggleClass(CLASS_DISABLED, state) .attr('aria-disabled', state); } this.disabled = !!state; return this; }; PROTOTYPE.enable = function() { return this.disable(FALSE); }; ;PROTOTYPE._createButton = function() { var self = this, elements = this.elements, tooltip = elements.tooltip, button = this.options.content.button, isString = typeof button === 'string', close = isString ? button : 'Close tooltip'; if(elements.button) { elements.button.remove(); } // Use custom button if one was supplied by user, else use default if(button.jquery) { elements.button = button; } else { elements.button = $('', { 'class': 'qtip-close ' + (this.options.style.widget ? '' : NAMESPACE+'-icon'), 'title': close, 'aria-label': close }) .prepend( $('', { 'class': 'ui-icon ui-icon-close', 'html': '×' }) ); } // Create button and setup attributes elements.button.appendTo(elements.titlebar || tooltip) .attr('role', 'button') .click(function(event) { if(!tooltip.hasClass(CLASS_DISABLED)) { self.hide(event); } return FALSE; }); }; PROTOTYPE._updateButton = function(button) { // Make sure tooltip is rendered and if not, return if(!this.rendered) { return FALSE; } var elem = this.elements.button; if(button) { this._createButton(); } else { elem.remove(); } }; ;// Widget class creator function createWidgetClass(cls) { return WIDGET.concat('').join(cls ? '-'+cls+' ' : ' '); } // Widget class setter method PROTOTYPE._setWidget = function() { var on = this.options.style.widget, elements = this.elements, tooltip = elements.tooltip, disabled = tooltip.hasClass(CLASS_DISABLED); tooltip.removeClass(CLASS_DISABLED); CLASS_DISABLED = on ? 'ui-state-disabled' : 'qtip-disabled'; tooltip.toggleClass(CLASS_DISABLED, disabled); tooltip.toggleClass('ui-helper-reset '+createWidgetClass(), on).toggleClass(CLASS_DEFAULT, this.options.style.def && !on); if(elements.content) { elements.content.toggleClass( createWidgetClass('content'), on); } if(elements.titlebar) { elements.titlebar.toggleClass( createWidgetClass('header'), on); } if(elements.button) { elements.button.toggleClass(NAMESPACE+'-icon', !on); } }; ;function delay(callback, duration) { // If tooltip has displayed, start hide timer if(duration > 0) { return setTimeout( $.proxy(callback, this), duration ); } else{ callback.call(this); } } function showMethod(event) { if(this.tooltip.hasClass(CLASS_DISABLED)) { return; } // Clear hide timers clearTimeout(this.timers.show); clearTimeout(this.timers.hide); // Start show timer this.timers.show = delay.call(this, function() { this.toggle(TRUE, event); }, this.options.show.delay ); } function hideMethod(event) { if(this.tooltip.hasClass(CLASS_DISABLED) || this.destroyed) { return; } // Check if new target was actually the tooltip element var relatedTarget = $(event.relatedTarget), ontoTooltip = relatedTarget.closest(SELECTOR)[0] === this.tooltip[0], ontoTarget = relatedTarget[0] === this.options.show.target[0]; // Clear timers and stop animation queue clearTimeout(this.timers.show); clearTimeout(this.timers.hide); // Prevent hiding if tooltip is fixed and event target is the tooltip. // Or if mouse positioning is enabled and cursor momentarily overlaps if(this !== relatedTarget[0] && (this.options.position.target === 'mouse' && ontoTooltip) || (this.options.hide.fixed && ( (/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget)) )) { try { event.preventDefault(); event.stopImmediatePropagation(); } catch(e) {} return; } // If tooltip has displayed, start hide timer this.timers.hide = delay.call(this, function() { this.toggle(FALSE, event); }, this.options.hide.delay, this ); } function inactiveMethod(event) { if(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return; } // Clear timer clearTimeout(this.timers.inactive); this.timers.inactive = delay.call(this, function(){ this.hide(event); }, this.options.hide.inactive ); } function repositionMethod(event) { if(this.rendered && this.tooltip[0].offsetWidth > 0) { this.reposition(event); } } // Store mouse coordinates PROTOTYPE._storeMouse = function(event) { (this.mouse = $.event.fix(event)).type = 'mousemove'; return this; }; // Bind events PROTOTYPE._bind = function(targets, events, method, suffix, context) { if(!targets || !method || !events.length) { return; } var ns = '.' + this._id + (suffix ? '-'+suffix : ''); $(targets).bind( (events.split ? events : events.join(ns + ' ')) + ns, $.proxy(method, context || this) ); return this; }; PROTOTYPE._unbind = function(targets, suffix) { targets && $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : '')); return this; }; // Global delegation helper function delegate(selector, events, method) { $(document.body).delegate(selector, (events.split ? events : events.join('.'+NAMESPACE + ' ')) + '.'+NAMESPACE, function() { var api = QTIP.api[ $.attr(this, ATTR_ID) ]; api && !api.disabled && method.apply(api, arguments); } ); } // Event trigger PROTOTYPE._trigger = function(type, args, event) { var callback = $.Event('tooltip'+type); callback.originalEvent = (event && $.extend({}, event)) || this.cache.event || NULL; this.triggering = type; this.tooltip.trigger(callback, [this].concat(args || [])); this.triggering = FALSE; return !callback.isDefaultPrevented(); }; PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTargets, showMethod, hideMethod) { // Get tasrgets that lye within both var similarTargets = showTargets.filter( hideTargets ).add( hideTargets.filter(showTargets) ), toggleEvents = []; // If hide and show targets are the same... if(similarTargets.length) { // Filter identical show/hide events $.each(hideEvents, function(i, type) { var showIndex = $.inArray(type, showEvents); // Both events are identical, remove from both hide and show events // and append to toggleEvents showIndex > -1 && toggleEvents.push( showEvents.splice( showIndex, 1 )[0] ); }); // Toggle events are special case of identical show/hide events, which happen in sequence if(toggleEvents.length) { // Bind toggle events to the similar targets this._bind(similarTargets, toggleEvents, function(event) { var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false; (state ? hideMethod : showMethod).call(this, event); }); // Remove the similar targets from the regular show/hide bindings showTargets = showTargets.not(similarTargets); hideTargets = hideTargets.not(similarTargets); } } // Apply show/hide/toggle events this._bind(showTargets, showEvents, showMethod); this._bind(hideTargets, hideEvents, hideMethod); }; PROTOTYPE._assignInitialEvents = function(event) { var options = this.options, showTarget = options.show.target, hideTarget = options.hide.target, showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [], hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : []; // Catch remove/removeqtip events on target element to destroy redundant tooltips this._bind(this.elements.target, ['remove', 'removeqtip'], function(event) { this.destroy(true); }, 'destroy'); /* * Make sure hoverIntent functions properly by using mouseleave as a hide event if * mouseenter/mouseout is used for show.event, even if it isn't in the users options. */ if(/mouse(over|enter)/i.test(options.show.event) && !/mouse(out|leave)/i.test(options.hide.event)) { hideEvents.push('mouseleave'); } /* * Also make sure initial mouse targetting works correctly by caching mousemove coords * on show targets before the tooltip has rendered. Also set onTarget when triggered to * keep mouse tracking working. */ this._bind(showTarget, 'mousemove', function(event) { this._storeMouse(event); this.cache.onTarget = TRUE; }); // Define hoverIntent function function hoverIntent(event) { // Only continue if tooltip isn't disabled if(this.disabled || this.destroyed) { return FALSE; } // Cache the event data this.cache.event = event && $.event.fix(event); this.cache.target = event && $(event.target); // Start the event sequence clearTimeout(this.timers.show); this.timers.show = delay.call(this, function() { this.render(typeof event === 'object' || options.show.ready); }, options.prerender ? 0 : options.show.delay ); } // Filter and bind events this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() { if(!this.timers) { return FALSE; } clearTimeout(this.timers.show); }); // Prerendering is enabled, create tooltip now if(options.show.ready || options.prerender) { hoverIntent.call(this, event); } }; // Event assignment method PROTOTYPE._assignEvents = function() { var self = this, options = this.options, posOptions = options.position, tooltip = this.tooltip, showTarget = options.show.target, hideTarget = options.hide.target, containerTarget = posOptions.container, viewportTarget = posOptions.viewport, documentTarget = $(document), bodyTarget = $(document.body), windowTarget = $(window), showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [], hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : []; // Assign passed event callbacks $.each(options.events, function(name, callback) { self._bind(tooltip, name === 'toggle' ? ['tooltipshow','tooltiphide'] : ['tooltip'+name], callback, null, tooltip); }); // Hide tooltips when leaving current window/frame (but not select/option elements) if(/mouse(out|leave)/i.test(options.hide.event) && options.hide.leave === 'window') { this._bind(documentTarget, ['mouseout', 'blur'], function(event) { if(!/select|option/.test(event.target.nodeName) && !event.relatedTarget) { this.hide(event); } }); } // Enable hide.fixed by adding appropriate class if(options.hide.fixed) { hideTarget = hideTarget.add( tooltip.addClass(CLASS_FIXED) ); } /* * Make sure hoverIntent functions properly by using mouseleave to clear show timer if * mouseenter/mouseout is used for show.event, even if it isn't in the users options. */ else if(/mouse(over|enter)/i.test(options.show.event)) { this._bind(hideTarget, 'mouseleave', function() { clearTimeout(this.timers.show); }); } // Hide tooltip on document mousedown if unfocus events are enabled if(('' + options.hide.event).indexOf('unfocus') > -1) { this._bind(containerTarget.closest('html'), ['mousedown', 'touchstart'], function(event) { var elem = $(event.target), enabled = this.rendered && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0, isAncestor = elem.parents(SELECTOR).filter(this.tooltip[0]).length > 0; if(elem[0] !== this.target[0] && elem[0] !== this.tooltip[0] && !isAncestor && !this.target.has(elem[0]).length && enabled ) { this.hide(event); } }); } // Check if the tooltip hides when inactive if('number' === typeof options.hide.inactive) { // Bind inactive method to show target(s) as a custom event this._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod, 'inactive'); // Define events which reset the 'inactive' event handler this._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod); } // Filter and bind events this._bindEvents(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod); // Mouse movement bindings this._bind(showTarget.add(tooltip), 'mousemove', function(event) { // Check if the tooltip hides when mouse is moved a certain distance if('number' === typeof options.hide.distance) { var origin = this.cache.origin || {}, limit = this.options.hide.distance, abs = Math.abs; // Check if the movement has gone beyond the limit, and hide it if so if(abs(event.pageX - origin.pageX) >= limit || abs(event.pageY - origin.pageY) >= limit) { this.hide(event); } } // Cache mousemove coords on show targets this._storeMouse(event); }); // Mouse positioning events if(posOptions.target === 'mouse') { // If mouse adjustment is on... if(posOptions.adjust.mouse) { // Apply a mouseleave event so we don't get problems with overlapping if(options.hide.event) { // Track if we're on the target or not this._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) { if(!this.cache) {return FALSE; } this.cache.onTarget = event.type === 'mouseenter'; }); } // Update tooltip position on mousemove this._bind(documentTarget, 'mousemove', function(event) { // Update the tooltip position only if the tooltip is visible and adjustment is enabled if(this.rendered && this.cache.onTarget && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0) { this.reposition(event); } }); } } // Adjust positions of the tooltip on window resize if enabled if(posOptions.adjust.resize || viewportTarget.length) { this._bind( $.event.special.resize ? viewportTarget : windowTarget, 'resize', repositionMethod ); } // Adjust tooltip position on scroll of the window or viewport element if present if(posOptions.adjust.scroll) { this._bind( windowTarget.add(posOptions.container), 'scroll', repositionMethod ); } }; // Un-assignment method PROTOTYPE._unassignEvents = function() { var options = this.options, showTargets = options.show.target, hideTargets = options.hide.target, targets = $.grep([ this.elements.target[0], this.rendered && this.tooltip[0], options.position.container[0], options.position.viewport[0], options.position.container.closest('html')[0], // unfocus window, document ], function(i) { return typeof i === 'object'; }); // Add show and hide targets if they're valid if(showTargets && showTargets.toArray) { targets = targets.concat(showTargets.toArray()); } if(hideTargets && hideTargets.toArray) { targets = targets.concat(hideTargets.toArray()); } // Unbind the events this._unbind(targets) ._unbind(targets, 'destroy') ._unbind(targets, 'inactive'); }; // Apply common event handlers using delegate (avoids excessive .bind calls!) $(function() { delegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) { var state = event.type === 'mouseenter', tooltip = $(event.currentTarget), target = $(event.relatedTarget || event.target), options = this.options; // On mouseenter... if(state) { // Focus the tooltip on mouseenter (z-index stacking) this.focus(event); // Clear hide timer on tooltip hover to prevent it from closing tooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide); } // On mouseleave... else { // When mouse tracking is enabled, hide when we leave the tooltip and not onto the show target (if a hide event is set) if(options.position.target === 'mouse' && options.position.adjust.mouse && options.hide.event && options.show.target && !target.closest(options.show.target[0]).length) { this.hide(event); } } // Add hover class tooltip.toggleClass(CLASS_HOVER, state); }); // Define events which reset the 'inactive' event handler delegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod); }); ;// Initialization method function init(elem, id, opts) { var obj, posOptions, attr, config, title, // Setup element references docBody = $(document.body), // Use document body instead of document element if needed newTarget = elem[0] === document ? docBody : elem, // Grab metadata from element if plugin is present metadata = (elem.metadata) ? elem.metadata(opts.metadata) : NULL, // If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise metadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL, // Grab data from metadata.name (or data-qtipopts as fallback) using .data() method, html5 = elem.data(opts.metadata.name || 'qtipopts'); // If we don't get an object returned attempt to parse it manualyl without parseJSON try { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; } catch(e) {} // Merge in and sanitize metadata config = $.extend(TRUE, {}, QTIP.defaults, opts, typeof html5 === 'object' ? sanitizeOptions(html5) : NULL, sanitizeOptions(metadata5 || metadata)); // Re-grab our positioning options now we've merged our metadata and set id to passed value posOptions = config.position; config.id = id; // Setup missing content if none is detected if('boolean' === typeof config.content.text) { attr = elem.attr(config.content.attr); // Grab from supplied attribute if available if(config.content.attr !== FALSE && attr) { config.content.text = attr; } // No valid content was found, abort render else { return FALSE; } } // Setup target options if(!posOptions.container.length) { posOptions.container = docBody; } if(posOptions.target === FALSE) { posOptions.target = newTarget; } if(config.show.target === FALSE) { config.show.target = newTarget; } if(config.show.solo === TRUE) { config.show.solo = posOptions.container.closest('body'); } if(config.hide.target === FALSE) { config.hide.target = newTarget; } if(config.position.viewport === TRUE) { config.position.viewport = posOptions.container; } // Ensure we only use a single container posOptions.container = posOptions.container.eq(0); // Convert position corner values into x and y strings posOptions.at = new CORNER(posOptions.at, TRUE); posOptions.my = new CORNER(posOptions.my); // Destroy previous tooltip if overwrite is enabled, or skip element if not if(elem.data(NAMESPACE)) { if(config.overwrite) { elem.qtip('destroy', true); } else if(config.overwrite === FALSE) { return FALSE; } } // Add has-qtip attribute elem.attr(ATTR_HAS, id); // Remove title attribute and store it if present if(config.suppress && (title = elem.attr('title'))) { // Final attr call fixes event delegatiom and IE default tooltip showing problem elem.removeAttr('title').attr(oldtitle, title).attr('title', ''); } // Initialize the tooltip and add API reference obj = new QTip(elem, config, id, !!attr); elem.data(NAMESPACE, obj); return obj; } // jQuery $.fn extension method QTIP = $.fn.qtip = function(options, notation, newValue) { var command = ('' + options).toLowerCase(), // Parse command returned = NULL, args = $.makeArray(arguments).slice(1), event = args[args.length - 1], opts = this[0] ? $.data(this[0], NAMESPACE) : NULL; // Check for API request if((!arguments.length && opts) || command === 'api') { return opts; } // Execute API command if present else if('string' === typeof options) { this.each(function() { var api = $.data(this, NAMESPACE); if(!api) { return TRUE; } // Cache the event if possible if(event && event.timeStamp) { api.cache.event = event; } // Check for specific API commands if(notation && (command === 'option' || command === 'options')) { if(newValue !== undefined || $.isPlainObject(notation)) { api.set(notation, newValue); } else { returned = api.get(notation); return FALSE; } } // Execute API command else if(api[command]) { api[command].apply(api, args); } }); return returned !== NULL ? returned : this; } // No API commands. validate provided options and setup qTips else if('object' === typeof options || !arguments.length) { // Sanitize options first opts = sanitizeOptions($.extend(TRUE, {}, options)); return this.each(function(i) { var api, id; // Find next available ID, or use custom ID if provided id = $.isArray(opts.id) ? opts.id[i] : opts.id; id = !id || id === FALSE || id.length < 1 || QTIP.api[id] ? QTIP.nextid++ : id; // Initialize the qTip and re-grab newly sanitized options api = init($(this), id, opts); if(api === FALSE) { return TRUE; } else { QTIP.api[id] = api; } // Initialize plugins $.each(PLUGINS, function() { if(this.initialize === 'initialize') { this(api); } }); // Assign initial pre-render events api._assignInitialEvents(event); }); } }; // Expose class $.qtip = QTip; // Populated in render method QTIP.api = {}; ;$.each({ /* Allow other plugins to successfully retrieve the title of an element with a qTip applied */ attr: function(attr, val) { if(this.length) { var self = this[0], title = 'title', api = $.data(self, 'qtip'); if(attr === title && api && 'object' === typeof api && api.options.suppress) { if(arguments.length < 2) { return $.attr(self, oldtitle); } // If qTip is rendered and title was originally used as content, update it if(api && api.options.content.attr === title && api.cache.attr) { api.set('content.text', val); } // Use the regular attr method to set, then cache the result return this.attr(oldtitle, val); } } return $.fn['attr'+replaceSuffix].apply(this, arguments); }, /* Allow clone to correctly retrieve cached title attributes */ clone: function(keepData) { var titles = $([]), title = 'title', // Clone our element using the real clone method elems = $.fn['clone'+replaceSuffix].apply(this, arguments); // Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false if(!keepData) { elems.filter('['+oldtitle+']').attr('title', function() { return $.attr(this, oldtitle); }) .removeAttr(oldtitle); } return elems; } }, function(name, func) { if(!func || $.fn[name+replaceSuffix]) { return TRUE; } var old = $.fn[name+replaceSuffix] = $.fn[name]; $.fn[name] = function() { return func.apply(this, arguments) || old.apply(this, arguments); }; }); /* Fire off 'removeqtip' handler in $.cleanData if jQuery UI not present (it already does similar). * This snippet is taken directly from jQuery UI source code found here: * http://code.jquery.com/ui/jquery-ui-git.js */ if(!$.ui) { $['cleanData'+replaceSuffix] = $.cleanData; $.cleanData = function( elems ) { for(var i = 0, elem; (elem = $( elems[i] )).length; i++) { if(elem.attr(ATTR_HAS)) { try { elem.triggerHandler('removeqtip'); } catch( e ) {} } } $['cleanData'+replaceSuffix].apply(this, arguments); }; } ;// qTip version QTIP.version = '2.2.1'; // Base ID for all qTips QTIP.nextid = 0; // Inactive events array QTIP.inactiveEvents = INACTIVE_EVENTS; // Base z-index for all qTips QTIP.zindex = 15000; // Define configuration defaults QTIP.defaults = { prerender: FALSE, id: FALSE, overwrite: TRUE, suppress: TRUE, content: { text: TRUE, attr: 'title', title: FALSE, button: FALSE }, position: { my: 'top left', at: 'bottom right', target: FALSE, container: FALSE, viewport: FALSE, adjust: { x: 0, y: 0, mouse: TRUE, scroll: TRUE, resize: TRUE, method: 'flipinvert flipinvert' }, effect: function(api, pos, viewport) { $(this).animate(pos, { duration: 200, queue: FALSE }); } }, show: { target: FALSE, event: 'mouseenter', effect: TRUE, delay: 90, solo: FALSE, ready: FALSE, autofocus: FALSE }, hide: { target: FALSE, event: 'mouseleave', effect: TRUE, delay: 0, fixed: FALSE, inactive: FALSE, leave: 'window', distance: FALSE }, style: { classes: '', widget: FALSE, width: FALSE, height: FALSE, def: TRUE }, events: { render: NULL, move: NULL, show: NULL, hide: NULL, toggle: NULL, visible: NULL, hidden: NULL, focus: NULL, blur: NULL } }; ;var TIP, // .bind()/.on() namespace TIPNS = '.qtip-tip', // Common CSS strings MARGIN = 'margin', BORDER = 'border', COLOR = 'color', BG_COLOR = 'background-color', TRANSPARENT = 'transparent', IMPORTANT = ' !important', // Check if the browser supports elements HASCANVAS = !!document.createElement('canvas').getContext, // Invalid colour values used in parseColours() INVALID = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i; // Camel-case method, taken from jQuery source // http://code.jquery.com/jquery-1.8.0.js function camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); } /* * Modified from Modernizr's testPropsAll() * http://modernizr.com/downloads/modernizr-latest.js */ var cssProps = {}, cssPrefixes = ["Webkit", "O", "Moz", "ms"]; function vendorCss(elem, prop) { var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), props = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '), cur, val, i = 0; // If the property has already been mapped... if(cssProps[prop]) { return elem.css(cssProps[prop]); } while((cur = props[i++])) { if((val = elem.css(cur)) !== undefined) { return cssProps[prop] = cur, val; } } } // Parse a given elements CSS property into an int function intCss(elem, prop) { return Math.ceil(parseFloat(vendorCss(elem, prop))); } // VML creation (for IE only) if(!HASCANVAS) { var createVML = function(tag, props, style) { return ''; }; } // Canvas only definitions else { var PIXEL_RATIO = window.devicePixelRatio || 1, BACKING_STORE_RATIO = (function() { var context = document.createElement('canvas').getContext('2d'); return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1; }()), SCALE = PIXEL_RATIO / BACKING_STORE_RATIO; } function Tip(qtip, options) { this._ns = 'tip'; this.options = options; this.offset = options.offset; this.size = [ options.width, options.height ]; // Initialize this.init( (this.qtip = qtip) ); } $.extend(Tip.prototype, { init: function(qtip) { var context, tip; // Create tip element and prepend to the tooltip tip = this.element = qtip.elements.tip = $('
    ', { 'class': NAMESPACE+'-tip' }).prependTo(qtip.tooltip); // Create tip drawing element(s) if(HASCANVAS) { // save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()! context = $('').appendTo(this.element)[0].getContext('2d'); // Setup constant parameters context.lineJoin = 'miter'; context.miterLimit = 100000; context.save(); } else { context = createVML('shape', 'coordorigin="0,0"', 'position:absolute;'); this.element.html(context + context); // Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML qtip._bind( $('*', tip).add(tip), ['click', 'mousedown'], function(event) { event.stopPropagation(); }, this._ns); } // Bind update events qtip._bind(qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this); // Create it this.create(); }, _swapDimensions: function() { this.size[0] = this.options.height; this.size[1] = this.options.width; }, _resetDimensions: function() { this.size[0] = this.options.width; this.size[1] = this.options.height; }, _useTitle: function(corner) { var titlebar = this.qtip.elements.titlebar; return titlebar && ( corner.y === TOP || (corner.y === CENTER && this.element.position().top + (this.size[1] / 2) + this.options.offset < titlebar.outerHeight(TRUE)) ); }, _parseCorner: function(corner) { var my = this.qtip.options.position.my; // Detect corner and mimic properties if(corner === FALSE || my === FALSE) { corner = FALSE; } else if(corner === TRUE) { corner = new CORNER( my.string() ); } else if(!corner.string) { corner = new CORNER(corner); corner.fixed = TRUE; } return corner; }, _parseWidth: function(corner, side, use) { var elements = this.qtip.elements, prop = BORDER + camel(side) + 'Width'; return (use ? intCss(use, prop) : ( intCss(elements.content, prop) || intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) || intCss(elements.tooltip, prop) )) || 0; }, _parseRadius: function(corner) { var elements = this.qtip.elements, prop = BORDER + camel(corner.y) + camel(corner.x) + 'Radius'; return BROWSER.ie < 9 ? 0 : intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) || intCss(elements.tooltip, prop) || 0; }, _invalidColour: function(elem, prop, compare) { var val = elem.css(prop); return !val || (compare && val === elem.css(compare)) || INVALID.test(val) ? FALSE : val; }, _parseColours: function(corner) { var elements = this.qtip.elements, tip = this.element.css('cssText', ''), borderSide = BORDER + camel(corner[ corner.precedance ]) + camel(COLOR), colorElem = this._useTitle(corner) && elements.titlebar || elements.content, css = this._invalidColour, color = []; // Attempt to detect the background colour from various elements, left-to-right precedance color[0] = css(tip, BG_COLOR) || css(colorElem, BG_COLOR) || css(elements.content, BG_COLOR) || css(elements.tooltip, BG_COLOR) || tip.css(BG_COLOR); // Attempt to detect the correct border side colour from various elements, left-to-right precedance color[1] = css(tip, borderSide, COLOR) || css(colorElem, borderSide, COLOR) || css(elements.content, borderSide, COLOR) || css(elements.tooltip, borderSide, COLOR) || elements.tooltip.css(borderSide); // Reset background and border colours $('*', tip).add(tip).css('cssText', BG_COLOR+':'+TRANSPARENT+IMPORTANT+';'+BORDER+':0'+IMPORTANT+';'); return color; }, _calculateSize: function(corner) { var y = corner.precedance === Y, width = this.options['width'], height = this.options['height'], isCenter = corner.abbrev() === 'c', base = (y ? width: height) * (isCenter ? 0.5 : 1), pow = Math.pow, round = Math.round, bigHyp, ratio, result, smallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ), hyp = [ (this.border / base) * smallHyp, (this.border / height) * smallHyp ]; hyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) ); hyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) ); bigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]); ratio = bigHyp / smallHyp; result = [ round(ratio * width), round(ratio * height) ]; return y ? result : result.reverse(); }, // Tip coordinates calculator _calculateTip: function(corner, size, scale) { scale = scale || 1; size = size || this.size; var width = size[0] * scale, height = size[1] * scale, width2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2), // Define tip coordinates in terms of height and width values tips = { br: [0,0, width,height, width,0], bl: [0,0, width,0, 0,height], tr: [0,height, width,0, width,height], tl: [0,0, 0,height, width,height], tc: [0,height, width2,0, width,height], bc: [0,0, width,0, width2,height], rc: [0,0, width,height2, 0,height], lc: [width,0, width,height, 0,height2] }; // Set common side shapes tips.lt = tips.br; tips.rt = tips.bl; tips.lb = tips.tr; tips.rb = tips.tl; return tips[ corner.abbrev() ]; }, // Tip coordinates drawer (canvas) _drawCoords: function(context, coords) { context.beginPath(); context.moveTo(coords[0], coords[1]); context.lineTo(coords[2], coords[3]); context.lineTo(coords[4], coords[5]); context.closePath(); }, create: function() { // Determine tip corner var c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner); // If we have a tip corner... if( (this.enabled = !!this.corner && this.corner.abbrev() !== 'c') ) { // Cache it this.qtip.cache.corner = c.clone(); // Create it this.update(); } // Toggle tip element this.element.toggle(this.enabled); return this.corner; }, update: function(corner, position) { if(!this.enabled) { return this; } var elements = this.qtip.elements, tip = this.element, inner = tip.children(), options = this.options, curSize = this.size, mimic = options.mimic, round = Math.round, color, precedance, context, coords, bigCoords, translate, newSize, border, BACKING_STORE_RATIO; // Re-determine tip if not already set if(!corner) { corner = this.qtip.cache.corner || this.corner; } // Use corner property if we detect an invalid mimic value if(mimic === FALSE) { mimic = corner; } // Otherwise inherit mimic properties from the corner object as necessary else { mimic = new CORNER(mimic); mimic.precedance = corner.precedance; if(mimic.x === 'inherit') { mimic.x = corner.x; } else if(mimic.y === 'inherit') { mimic.y = corner.y; } else if(mimic.x === mimic.y) { mimic[ corner.precedance ] = corner[ corner.precedance ]; } } precedance = mimic.precedance; // Ensure the tip width.height are relative to the tip position if(corner.precedance === X) { this._swapDimensions(); } else { this._resetDimensions(); } // Update our colours color = this.color = this._parseColours(corner); // Detect border width, taking into account colours if(color[1] !== TRANSPARENT) { // Grab border width border = this.border = this._parseWidth(corner, corner[corner.precedance]); // If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips) if(options.border && border < 1 && !INVALID.test(color[1])) { color[0] = color[1]; } // Set border width (use detected border width if options.border is true) this.border = border = options.border !== TRUE ? options.border : border; } // Border colour was invalid, set border to zero else { this.border = border = 0; } // Determine tip size newSize = this.size = this._calculateSize(corner); tip.css({ width: newSize[0], height: newSize[1], lineHeight: newSize[1]+'px' }); // Calculate tip translation if(corner.precedance === Y) { translate = [ round(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2), round(mimic.y === TOP ? newSize[1] - curSize[1] : 0) ]; } else { translate = [ round(mimic.x === LEFT ? newSize[0] - curSize[0] : 0), round(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2) ]; } // Canvas drawing implementation if(HASCANVAS) { // Grab canvas context and clear/save it context = inner[0].getContext('2d'); context.restore(); context.save(); context.clearRect(0,0,6000,6000); // Calculate coordinates coords = this._calculateTip(mimic, curSize, SCALE); bigCoords = this._calculateTip(mimic, this.size, SCALE); // Set the canvas size using calculated size inner.attr(WIDTH, newSize[0] * SCALE).attr(HEIGHT, newSize[1] * SCALE); inner.css(WIDTH, newSize[0]).css(HEIGHT, newSize[1]); // Draw the outer-stroke tip this._drawCoords(context, bigCoords); context.fillStyle = color[1]; context.fill(); // Draw the actual tip context.translate(translate[0] * SCALE, translate[1] * SCALE); this._drawCoords(context, coords); context.fillStyle = color[0]; context.fill(); } // VML (IE Proprietary implementation) else { // Calculate coordinates coords = this._calculateTip(mimic); // Setup coordinates string coords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] + ',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe'; // Setup VML-specific offset for pixel-perfection translate[2] = border && /^(r|b)/i.test(corner.string()) ? BROWSER.ie === 8 ? 2 : 1 : 0; // Set initial CSS inner.css({ coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border), antialias: ''+(mimic.string().indexOf(CENTER) > -1), left: translate[0] - (translate[2] * Number(precedance === X)), top: translate[1] - (translate[2] * Number(precedance === Y)), width: newSize[0] + border, height: newSize[1] + border }) .each(function(i) { var $this = $(this); // Set shape specific attributes $this[ $this.prop ? 'prop' : 'attr' ]({ coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border), path: coords, fillcolor: color[0], filled: !!i, stroked: !i }) .toggle(!!(border || i)); // Check if border is enabled and add stroke element !i && $this.html( createVML( 'stroke', 'weight="'+(border*2)+'px" color="'+color[1]+'" miterlimit="1000" joinstyle="miter"' ) ); }); } // Opera bug #357 - Incorrect tip position // https://github.com/Craga89/qTip2/issues/367 window.opera && setTimeout(function() { elements.tip.css({ display: 'inline-block', visibility: 'visible' }); }, 1); // Position if needed if(position !== FALSE) { this.calculate(corner, newSize); } }, calculate: function(corner, size) { if(!this.enabled) { return FALSE; } var self = this, elements = this.qtip.elements, tip = this.element, userOffset = this.options.offset, isWidget = elements.tooltip.hasClass('ui-widget'), position = { }, precedance, corners; // Inherit corner if not provided corner = corner || this.corner; precedance = corner.precedance; // Determine which tip dimension to use for adjustment size = size || this._calculateSize(corner); // Setup corners and offset array corners = [ corner.x, corner.y ]; if(precedance === X) { corners.reverse(); } // Calculate tip position $.each(corners, function(i, side) { var b, bc, br; if(side === CENTER) { b = precedance === Y ? LEFT : TOP; position[ b ] = '50%'; position[MARGIN+'-' + b] = -Math.round(size[ precedance === Y ? 0 : 1 ] / 2) + userOffset; } else { b = self._parseWidth(corner, side, elements.tooltip); bc = self._parseWidth(corner, side, elements.content); br = self._parseRadius(corner); position[ side ] = Math.max(-self.border, i ? bc : (userOffset + (br > b ? br : -b))); } }); // Adjust for tip size position[ corner[precedance] ] -= size[ precedance === X ? 0 : 1 ]; // Set and return new position tip.css({ margin: '', top: '', bottom: '', left: '', right: '' }).css(position); return position; }, reposition: function(event, api, pos, viewport) { if(!this.enabled) { return; } var cache = api.cache, newCorner = this.corner.clone(), adjust = pos.adjusted, method = api.options.position.adjust.method.split(' '), horizontal = method[0], vertical = method[1] || method[0], shift = { left: FALSE, top: FALSE, x: 0, y: 0 }, offset, css = {}, props; function shiftflip(direction, precedance, popposite, side, opposite) { // Horizontal - Shift or flip method if(direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER) { newCorner.precedance = newCorner.precedance === X ? Y : X; } else if(direction !== SHIFT && adjust[side]){ newCorner[precedance] = newCorner[precedance] === CENTER ? (adjust[side] > 0 ? side : opposite) : (newCorner[precedance] === side ? opposite : side); } } function shiftonly(xy, side, opposite) { if(newCorner[xy] === CENTER) { css[MARGIN+'-'+side] = shift[xy] = offset[MARGIN+'-'+side] - adjust[side]; } else { props = offset[opposite] !== undefined ? [ adjust[side], -offset[side] ] : [ -adjust[side], offset[side] ]; if( (shift[xy] = Math.max(props[0], props[1])) > props[0] ) { pos[side] -= adjust[side]; shift[side] = FALSE; } css[ offset[opposite] !== undefined ? opposite : side ] = shift[xy]; } } // If our tip position isn't fixed e.g. doesn't adjust with viewport... if(this.corner.fixed !== TRUE) { // Perform shift/flip adjustments shiftflip(horizontal, X, Y, LEFT, RIGHT); shiftflip(vertical, Y, X, TOP, BOTTOM); // Update and redraw the tip if needed (check cached details of last drawn tip) if(newCorner.string() !== cache.corner.string() || cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left) { this.update(newCorner, FALSE); } } // Setup tip offset properties offset = this.calculate(newCorner); // Readjust offset object to make it left/top if(offset.right !== undefined) { offset.left = -offset.right; } if(offset.bottom !== undefined) { offset.top = -offset.bottom; } offset.user = this.offset; // Perform shift adjustments if(shift.left = (horizontal === SHIFT && !!adjust.left)) { shiftonly(X, LEFT, RIGHT); } if(shift.top = (vertical === SHIFT && !!adjust.top)) { shiftonly(Y, TOP, BOTTOM); } /* * If the tip is adjusted in both dimensions, or in a * direction that would cause it to be anywhere but the * outer border, hide it! */ this.element.css(css).toggle( !((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x)) ); // Adjust position to accomodate tip dimensions pos.left -= offset.left.charAt ? offset.user : horizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0; pos.top -= offset.top.charAt ? offset.user : vertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0; // Cache details cache.cornerLeft = adjust.left; cache.cornerTop = adjust.top; cache.corner = newCorner.clone(); }, destroy: function() { // Unbind events this.qtip._unbind(this.qtip.tooltip, this._ns); // Remove the tip element(s) if(this.qtip.elements.tip) { this.qtip.elements.tip.find('*') .remove().end().remove(); } } }); TIP = PLUGINS.tip = function(api) { return new Tip(api, api.options.style.tip); }; // Initialize tip on render TIP.initialize = 'render'; // Setup plugin sanitization options TIP.sanitize = function(options) { if(options.style && 'tip' in options.style) { var opts = options.style.tip; if(typeof opts !== 'object') { opts = options.style.tip = { corner: opts }; } if(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; } } }; // Add new option checks for the plugin CHECKS.tip = { '^position.my|style.tip.(corner|mimic|border)$': function() { // Make sure a tip can be drawn this.create(); // Reposition the tooltip this.qtip.reposition(); }, '^style.tip.(height|width)$': function(obj) { // Re-set dimensions and redraw the tip this.size = [ obj.width, obj.height ]; this.update(); // Reposition the tooltip this.qtip.reposition(); }, '^content.title|style.(classes|widget)$': function() { this.update(); } }; // Extend original qTip defaults $.extend(TRUE, QTIP.defaults, { style: { tip: { corner: TRUE, mimic: FALSE, width: 6, height: 6, border: TRUE, offset: 0 } } }); ;var MODAL, OVERLAY, MODALCLASS = 'qtip-modal', MODALSELECTOR = '.'+MODALCLASS; OVERLAY = function() { var self = this, focusableElems = {}, current, onLast, prevState, elem; // Modified code from jQuery UI 1.10.0 source // http://code.jquery.com/ui/1.10.0/jquery-ui.js function focusable(element) { // Use the defined focusable checker when possible if($.expr[':'].focusable) { return $.expr[':'].focusable; } var isTabIndexNotNaN = !isNaN($.attr(element, 'tabindex')), nodeName = element.nodeName && element.nodeName.toLowerCase(), map, mapName, img; if('area' === nodeName) { map = element.parentNode; mapName = map.name; if(!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') { return false; } img = $('img[usemap=#' + mapName + ']')[0]; return !!img && img.is(':visible'); } return (/input|select|textarea|button|object/.test( nodeName ) ? !element.disabled : 'a' === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN ); } // Focus inputs using cached focusable elements (see update()) function focusInputs(blurElems) { // Blurring body element in IE causes window.open windows to unfocus! if(focusableElems.length < 1 && blurElems.length) { blurElems.not('body').blur(); } // Focus the inputs else { focusableElems.first().focus(); } } // Steal focus from elements outside tooltip function stealFocus(event) { if(!elem.is(':visible')) { return; } var target = $(event.target), tooltip = current.tooltip, container = target.closest(SELECTOR), targetOnTop; // Determine if input container target is above this targetOnTop = container.length < 1 ? FALSE : (parseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10)); // If we're showing a modal, but focus has landed on an input below // this modal, divert focus to the first visible input in this modal // or if we can't find one... the tooltip itself if(!targetOnTop && target.closest(SELECTOR)[0] !== tooltip[0]) { focusInputs(target); } // Detect when we leave the last focusable element... onLast = event.target === focusableElems[focusableElems.length - 1]; } $.extend(self, { init: function() { // Create document overlay elem = self.elem = $('
    ', { id: 'qtip-overlay', html: '
    ', mousedown: function() { return FALSE; } }) .hide(); // Make sure we can't focus anything outside the tooltip $(document.body).bind('focusin'+MODALSELECTOR, stealFocus); // Apply keyboard "Escape key" close handler $(document).bind('keydown'+MODALSELECTOR, function(event) { if(current && current.options.show.modal.escape && event.keyCode === 27) { current.hide(event); } }); // Apply click handler for blur option elem.bind('click'+MODALSELECTOR, function(event) { if(current && current.options.show.modal.blur) { current.hide(event); } }); return self; }, update: function(api) { // Update current API reference current = api; // Update focusable elements if enabled if(api.options.show.modal.stealfocus !== FALSE) { focusableElems = api.tooltip.find('*').filter(function() { return focusable(this); }); } else { focusableElems = []; } }, toggle: function(api, state, duration) { var docBody = $(document.body), tooltip = api.tooltip, options = api.options.show.modal, effect = options.effect, type = state ? 'show': 'hide', visible = elem.is(':visible'), visibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip), zindex; // Set active tooltip API reference self.update(api); // If the modal can steal the focus... // Blur the current item and focus anything in the modal we an if(state && options.stealfocus !== FALSE) { focusInputs( $(':focus') ); } // Toggle backdrop cursor style on show elem.toggleClass('blurs', options.blur); // Append to body on show if(state) { elem.appendTo(document.body); } // Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible if((elem.is(':animated') && visible === state && prevState !== FALSE) || (!state && visibleModals.length)) { return self; } // Stop all animations elem.stop(TRUE, FALSE); // Use custom function if provided if($.isFunction(effect)) { effect.call(elem, state); } // If no effect type is supplied, use a simple toggle else if(effect === FALSE) { elem[ type ](); } // Use basic fade function else { elem.fadeTo( parseInt(duration, 10) || 90, state ? 1 : 0, function() { if(!state) { elem.hide(); } }); } // Reset position and detach from body on hide if(!state) { elem.queue(function(next) { elem.css({ left: '', top: '' }); if(!$(MODALSELECTOR).length) { elem.detach(); } next(); }); } // Cache the state prevState = state; // If the tooltip is destroyed, set reference to null if(current.destroyed) { current = NULL; } return self; } }); self.init(); }; OVERLAY = new OVERLAY(); function Modal(api, options) { this.options = options; this._ns = '-modal'; this.init( (this.qtip = api) ); } $.extend(Modal.prototype, { init: function(qtip) { var tooltip = qtip.tooltip; // If modal is disabled... return if(!this.options.on) { return this; } // Set overlay reference qtip.elements.overlay = OVERLAY.elem; // Add unique attribute so we can grab modal tooltips easily via a SELECTOR, and set z-index tooltip.addClass(MODALCLASS).css('z-index', QTIP.modal_zindex + $(MODALSELECTOR).length); // Apply our show/hide/focus modal events qtip._bind(tooltip, ['tooltipshow', 'tooltiphide'], function(event, api, duration) { var oEvent = event.originalEvent; // Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop if(event.target === tooltip[0]) { if(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(OVERLAY.elem[0]).length) { try { event.preventDefault(); } catch(e) {} } else if(!oEvent || (oEvent && oEvent.type !== 'tooltipsolo')) { this.toggle(event, event.type === 'tooltipshow', duration); } } }, this._ns, this); // Adjust modal z-index on tooltip focus qtip._bind(tooltip, 'tooltipfocus', function(event, api) { // If focus was cancelled before it reached us, don't do anything if(event.isDefaultPrevented() || event.target !== tooltip[0]) { return; } var qtips = $(MODALSELECTOR), // Keep the modal's lower than other, regular qtips newIndex = QTIP.modal_zindex + qtips.length, curIndex = parseInt(tooltip[0].style.zIndex, 10); // Set overlay z-index OVERLAY.elem[0].style.zIndex = newIndex - 1; // Reduce modal z-index's and keep them properly ordered qtips.each(function() { if(this.style.zIndex > curIndex) { this.style.zIndex -= 1; } }); // Fire blur event for focused tooltip qtips.filter('.' + CLASS_FOCUS).qtip('blur', event.originalEvent); // Set the new z-index tooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex; // Set current OVERLAY.update(api); // Prevent default handling try { event.preventDefault(); } catch(e) {} }, this._ns, this); // Focus any other visible modals when this one hides qtip._bind(tooltip, 'tooltiphide', function(event) { if(event.target === tooltip[0]) { $(MODALSELECTOR).filter(':visible').not(tooltip).last().qtip('focus', event); } }, this._ns, this); }, toggle: function(event, state, duration) { // Make sure default event hasn't been prevented if(event && event.isDefaultPrevented()) { return this; } // Toggle it OVERLAY.toggle(this.qtip, !!state, duration); }, destroy: function() { // Remove modal class this.qtip.tooltip.removeClass(MODALCLASS); // Remove bound events this.qtip._unbind(this.qtip.tooltip, this._ns); // Delete element reference OVERLAY.toggle(this.qtip, FALSE); delete this.qtip.elements.overlay; } }); MODAL = PLUGINS.modal = function(api) { return new Modal(api, api.options.show.modal); }; // Setup sanitiztion rules MODAL.sanitize = function(opts) { if(opts.show) { if(typeof opts.show.modal !== 'object') { opts.show.modal = { on: !!opts.show.modal }; } else if(typeof opts.show.modal.on === 'undefined') { opts.show.modal.on = TRUE; } } }; // Base z-index for all modal tooltips (use qTip core z-index as a base) QTIP.modal_zindex = QTIP.zindex - 200; // Plugin needs to be initialized on render MODAL.initialize = 'render'; // Setup option set checks CHECKS.modal = { '^show.modal.(on|blur)$': function() { // Initialise this.destroy(); this.init(); // Show the modal if not visible already and tooltip is visible this.qtip.elems.overlay.toggle( this.qtip.tooltip[0].offsetWidth > 0 ); } }; // Extend original api defaults $.extend(TRUE, QTIP.defaults, { show: { modal: { on: FALSE, effect: TRUE, blur: TRUE, stealfocus: TRUE, escape: TRUE } } }); ;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight) { var target = posOptions.target, tooltip = api.elements.tooltip, my = posOptions.my, at = posOptions.at, adjust = posOptions.adjust, method = adjust.method.split(' '), methodX = method[0], methodY = method[1] || method[0], viewport = posOptions.viewport, container = posOptions.container, cache = api.cache, adjusted = { left: 0, top: 0 }, fixed, newMy, containerOffset, containerStatic, viewportWidth, viewportHeight, viewportScroll, viewportOffset; // If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return if(!viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none') { return adjusted; } // Cach container details containerOffset = container.offset() || adjusted; containerStatic = container.css('position') === 'static'; // Cache our viewport details fixed = tooltip.css('position') === 'fixed'; viewportWidth = viewport[0] === window ? viewport.width() : viewport.outerWidth(FALSE); viewportHeight = viewport[0] === window ? viewport.height() : viewport.outerHeight(FALSE); viewportScroll = { left: fixed ? 0 : viewport.scrollLeft(), top: fixed ? 0 : viewport.scrollTop() }; viewportOffset = viewport.offset() || adjusted; // Generic calculation method function calculate(side, otherSide, type, adjust, side1, side2, lengthName, targetLength, elemLength) { var initialPos = position[side1], mySide = my[side], atSide = at[side], isShift = type === SHIFT, myLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2, atLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2, sideOffset = viewportScroll[side1] + viewportOffset[side1] - (containerStatic ? 0 : containerOffset[side1]), overflow1 = sideOffset - initialPos, overflow2 = initialPos + elemLength - (lengthName === WIDTH ? viewportWidth : viewportHeight) - sideOffset, offset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0); // shift if(isShift) { offset = (mySide === side1 ? 1 : -1) * myLength; // Adjust position but keep it within viewport dimensions position[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0; position[side1] = Math.max( -containerOffset[side1] + viewportOffset[side1], initialPos - offset, Math.min( Math.max( -containerOffset[side1] + viewportOffset[side1] + (lengthName === WIDTH ? viewportWidth : viewportHeight), initialPos + offset ), position[side1], // Make sure we don't adjust complete off the element when using 'center' mySide === 'center' ? initialPos - myLength : 1E9 ) ); } // flip/flipinvert else { // Update adjustment amount depending on if using flipinvert or flip adjust *= (type === FLIPINVERT ? 2 : 0); // Check for overflow on the left/top if(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) { position[side1] -= offset + adjust; newMy.invert(side, side1); } // Check for overflow on the bottom/right else if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) { position[side1] -= (mySide === CENTER ? -offset : offset) + adjust; newMy.invert(side, side2); } // Make sure we haven't made things worse with the adjustment and reset if so if(position[side1] < viewportScroll && -position[side1] > overflow2) { position[side1] = initialPos; newMy = my.clone(); } } return position[side1] - initialPos; } // Set newMy if using flip or flipinvert methods if(methodX !== 'shift' || methodY !== 'shift') { newMy = my.clone(); } // Adjust position based onviewport and adjustment options adjusted = { left: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0, top: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0, my: newMy }; return adjusted; }; ;PLUGINS.polys = { // POLY area coordinate calculator // Special thanks to Ed Cradock for helping out with this. // Uses a binary search algorithm to find suitable coordinates. polygon: function(baseCoords, corner) { var result = { width: 0, height: 0, position: { top: 1e10, right: 0, bottom: 0, left: 1e10 }, adjustable: FALSE }, i = 0, next, coords = [], compareX = 1, compareY = 1, realX = 0, realY = 0, newWidth, newHeight; // First pass, sanitize coords and determine outer edges i = baseCoords.length; while(i--) { next = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ]; if(next[0] > result.position.right){ result.position.right = next[0]; } if(next[0] < result.position.left){ result.position.left = next[0]; } if(next[1] > result.position.bottom){ result.position.bottom = next[1]; } if(next[1] < result.position.top){ result.position.top = next[1]; } coords.push(next); } // Calculate height and width from outer edges newWidth = result.width = Math.abs(result.position.right - result.position.left); newHeight = result.height = Math.abs(result.position.bottom - result.position.top); // If it's the center corner... if(corner.abbrev() === 'c') { result.position = { left: result.position.left + (result.width / 2), top: result.position.top + (result.height / 2) }; } else { // Second pass, use a binary search algorithm to locate most suitable coordinate while(newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0) { newWidth = Math.floor(newWidth / 2); newHeight = Math.floor(newHeight / 2); if(corner.x === LEFT){ compareX = newWidth; } else if(corner.x === RIGHT){ compareX = result.width - newWidth; } else{ compareX += Math.floor(newWidth / 2); } if(corner.y === TOP){ compareY = newHeight; } else if(corner.y === BOTTOM){ compareY = result.height - newHeight; } else{ compareY += Math.floor(newHeight / 2); } i = coords.length; while(i--) { if(coords.length < 2){ break; } realX = coords[i][0] - result.position.left; realY = coords[i][1] - result.position.top; if((corner.x === LEFT && realX >= compareX) || (corner.x === RIGHT && realX <= compareX) || (corner.x === CENTER && (realX < compareX || realX > (result.width - compareX))) || (corner.y === TOP && realY >= compareY) || (corner.y === BOTTOM && realY <= compareY) || (corner.y === CENTER && (realY < compareY || realY > (result.height - compareY)))) { coords.splice(i, 1); } } } result.position = { left: coords[0][0], top: coords[0][1] }; } return result; }, rect: function(ax, ay, bx, by) { return { width: Math.abs(bx - ax), height: Math.abs(by - ay), position: { left: Math.min(ax, bx), top: Math.min(ay, by) } }; }, _angles: { tc: 3 / 2, tr: 7 / 4, tl: 5 / 4, bc: 1 / 2, br: 1 / 4, bl: 3 / 4, rc: 2, lc: 1, c: 0 }, ellipse: function(cx, cy, rx, ry, corner) { var c = PLUGINS.polys._angles[ corner.abbrev() ], rxc = c === 0 ? 0 : rx * Math.cos( c * Math.PI ), rys = ry * Math.sin( c * Math.PI ); return { width: (rx * 2) - Math.abs(rxc), height: (ry * 2) - Math.abs(rys), position: { left: cx + rxc, top: cy + rys }, adjustable: FALSE }; }, circle: function(cx, cy, r, corner) { return PLUGINS.polys.ellipse(cx, cy, r, r, corner); } }; ;PLUGINS.svg = function(api, svg, corner) { var doc = $(document), elem = svg[0], root = $(elem.ownerSVGElement), ownerDocument = elem.ownerDocument, strokeWidth2 = (parseInt(svg.css('stroke-width'), 10) || 0) / 2, frameOffset, mtx, transformed, viewBox, len, next, i, points, result, position, dimensions; // Ascend the parentNode chain until we find an element with getBBox() while(!elem.getBBox) { elem = elem.parentNode; } if(!elem.getBBox || !elem.parentNode) { return FALSE; } // Determine which shape calculation to use switch(elem.nodeName) { case 'ellipse': case 'circle': result = PLUGINS.polys.ellipse( elem.cx.baseVal.value, elem.cy.baseVal.value, (elem.rx || elem.r).baseVal.value + strokeWidth2, (elem.ry || elem.r).baseVal.value + strokeWidth2, corner ); break; case 'line': case 'polygon': case 'polyline': // Determine points object (line has none, so mimic using array) points = elem.points || [ { x: elem.x1.baseVal.value, y: elem.y1.baseVal.value }, { x: elem.x2.baseVal.value, y: elem.y2.baseVal.value } ]; for(result = [], i = -1, len = points.numberOfItems || points.length; ++i < len;) { next = points.getItem ? points.getItem(i) : points[i]; result.push.apply(result, [next.x, next.y]); } result = PLUGINS.polys.polygon(result, corner); break; // Unknown shape or rectangle? Use bounding box default: result = elem.getBBox(); result = { width: result.width, height: result.height, position: { left: result.x, top: result.y } }; break; } // Shortcut assignments position = result.position; root = root[0]; // Convert position into a pixel value if(root.createSVGPoint) { mtx = elem.getScreenCTM(); points = root.createSVGPoint(); points.x = position.left; points.y = position.top; transformed = points.matrixTransform( mtx ); position.left = transformed.x; position.top = transformed.y; } // Check the element is not in a child document, and if so, adjust for frame elements offset if(ownerDocument !== document && api.position.target !== 'mouse') { frameOffset = $((ownerDocument.defaultView || ownerDocument.parentWindow).frameElement).offset(); if(frameOffset) { position.left += frameOffset.left; position.top += frameOffset.top; } } // Adjust by scroll offset of owner document ownerDocument = $(ownerDocument); position.left += ownerDocument.scrollLeft(); position.top += ownerDocument.scrollTop(); return result; }; ;PLUGINS.imagemap = function(api, area, corner, adjustMethod) { if(!area.jquery) { area = $(area); } var shape = (area.attr('shape') || 'rect').toLowerCase().replace('poly', 'polygon'), image = $('img[usemap="#'+area.parent('map').attr('name')+'"]'), coordsString = $.trim(area.attr('coords')), coordsArray = coordsString.replace(/,$/, '').split(','), imageOffset, coords, i, next, result, len; // If we can't find the image using the map... if(!image.length) { return FALSE; } // Pass coordinates string if polygon if(shape === 'polygon') { result = PLUGINS.polys.polygon(coordsArray, corner); } // Otherwise parse the coordinates and pass them as arguments else if(PLUGINS.polys[shape]) { for(i = -1, len = coordsArray.length, coords = []; ++i < len;) { coords.push( parseInt(coordsArray[i], 10) ); } result = PLUGINS.polys[shape].apply( this, coords.concat(corner) ); } // If no shapre calculation method was found, return false else { return FALSE; } // Make sure we account for padding and borders on the image imageOffset = image.offset(); imageOffset.left += Math.ceil((image.outerWidth(FALSE) - image.width()) / 2); imageOffset.top += Math.ceil((image.outerHeight(FALSE) - image.height()) / 2); // Add image position to offset coordinates result.position.left += imageOffset.left; result.position.top += imageOffset.top; return result; }; ;var IE6, /* * BGIFrame adaption (http://plugins.jquery.com/project/bgiframe) * Special thanks to Brandon Aaron */ BGIFRAME = ''; function Ie6(api, qtip) { this._ns = 'ie6'; this.init( (this.qtip = api) ); } $.extend(Ie6.prototype, { _scroll : function() { var overlay = this.qtip.elements.overlay; overlay && (overlay[0].style.top = $(window).scrollTop() + 'px'); }, init: function(qtip) { var tooltip = qtip.tooltip, scroll; // Create the BGIFrame element if needed if($('select, object').length < 1) { this.bgiframe = qtip.elements.bgiframe = $(BGIFRAME).appendTo(tooltip); // Update BGIFrame on tooltip move qtip._bind(tooltip, 'tooltipmove', this.adjustBGIFrame, this._ns, this); } // redraw() container for width/height calculations this.redrawContainer = $('
    ', { id: NAMESPACE+'-rcontainer' }) .appendTo(document.body); // Fixup modal plugin if present too if( qtip.elements.overlay && qtip.elements.overlay.addClass('qtipmodal-ie6fix') ) { qtip._bind(window, ['scroll', 'resize'], this._scroll, this._ns, this); qtip._bind(tooltip, ['tooltipshow'], this._scroll, this._ns, this); } // Set dimensions this.redraw(); }, adjustBGIFrame: function() { var tooltip = this.qtip.tooltip, dimensions = { height: tooltip.outerHeight(FALSE), width: tooltip.outerWidth(FALSE) }, plugin = this.qtip.plugins.tip, tip = this.qtip.elements.tip, tipAdjust, offset; // Adjust border offset offset = parseInt(tooltip.css('borderLeftWidth'), 10) || 0; offset = { left: -offset, top: -offset }; // Adjust for tips plugin if(plugin && tip) { tipAdjust = (plugin.corner.precedance === 'x') ? [WIDTH, LEFT] : [HEIGHT, TOP]; offset[ tipAdjust[1] ] -= tip[ tipAdjust[0] ](); } // Update bgiframe this.bgiframe.css(offset).css(dimensions); }, // Max/min width simulator function redraw: function() { if(this.qtip.rendered < 1 || this.drawing) { return this; } var tooltip = this.qtip.tooltip, style = this.qtip.options.style, container = this.qtip.options.position.container, perc, width, max, min; // Set drawing flag this.qtip.drawing = 1; // If tooltip has a set height/width, just set it... like a boss! if(style.height) { tooltip.css(HEIGHT, style.height); } if(style.width) { tooltip.css(WIDTH, style.width); } // Simulate max/min width if not set width present... else { // Reset width and add fluid class tooltip.css(WIDTH, '').appendTo(this.redrawContainer); // Grab our tooltip width (add 1 if odd so we don't get wrapping problems.. huzzah!) width = tooltip.width(); if(width % 2 < 1) { width += 1; } // Grab our max/min properties max = tooltip.css('maxWidth') || ''; min = tooltip.css('minWidth') || ''; // Parse into proper pixel values perc = (max + min).indexOf('%') > -1 ? container.width() / 100 : 0; max = ((max.indexOf('%') > -1 ? perc : 1) * parseInt(max, 10)) || width; min = ((min.indexOf('%') > -1 ? perc : 1) * parseInt(min, 10)) || 0; // Determine new dimension size based on max/min/current values width = max + min ? Math.min(Math.max(width, min), max) : width; // Set the newly calculated width and remvoe fluid class tooltip.css(WIDTH, Math.round(width)).appendTo(container); } // Set drawing flag this.drawing = 0; return this; }, destroy: function() { // Remove iframe this.bgiframe && this.bgiframe.remove(); // Remove bound events this.qtip._unbind([window, this.qtip.tooltip], this._ns); } }); IE6 = PLUGINS.ie6 = function(api) { // Proceed only if the browser is IE6 return BROWSER.ie === 6 ? new Ie6(api) : FALSE; }; IE6.initialize = 'render'; CHECKS.ie6 = { '^content|style$': function() { this.redraw(); } }; ;})); }( window, document ));redux/ReduxCore/assets/js/vendor/qtip/jquery.qtip.min.js000066600000126414152143340070017411 0ustar00/* qTip2 v2.2.1 | Plugins: tips modal viewport svg imagemap ie6 | Styles: core basic css3 | qtip2.com | Licensed MIT | Sat Sep 06 2014 23:12:07 */ !function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=F,this.elements={target:a},this._id=S+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:E,attr:e,onTooltip:E,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=E}function f(a){return a===F||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?E:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?E:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==E,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,F,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(d.isPlainObject(b.title)&&(b.button=b.title.button,b.title=b.title.text),g(b.title||E)&&(b.title=E))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===D?{ready:D}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(R,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d0?setTimeout(d.proxy(a,this),b):void a.call(this)}function m(a){this.tooltip.hasClass(ab)||(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=l.call(this,function(){this.toggle(D,a)},this.options.show.delay))}function n(a){if(!this.tooltip.hasClass(ab)&&!this.destroyed){var b=d(a.relatedTarget),c=b.closest(W)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=l.call(this,function(){this.toggle(E,a)},this.options.hide.delay,this)}}function o(a){!this.tooltip.hasClass(ab)&&this.options.hide.inactive&&(clearTimeout(this.timers.inactive),this.timers.inactive=l.call(this,function(){this.hide(a)},this.options.hide.inactive))}function p(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function q(a,c,e){d(b.body).delegate(a,(c.split?c:c.join("."+S+" "))+"."+S,function(){var a=y.api[d.attr(this,U)];a&&!a.disabled&&e.apply(a,arguments)})}function r(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):F,p="html5"===f.metadata.type&&o?o[f.metadata.name]:F,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(D,{},y.defaults,f,"object"==typeof q?h(q):F,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===E||!j)return E;k.content.text=j}if(i.container.length||(i.container=m),i.target===E&&(i.target=n),k.show.target===E&&(k.show.target=n),k.show.solo===D&&(k.show.solo=i.container.closest("body")),k.hide.target===E&&(k.hide.target=n),k.position.viewport===D&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new A(i.at,D),i.my=new A(i.my),a.data(S))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===E)return E;return a.attr(T,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(cb,l).attr("title",""),g=new e(a,k,c,!!j),a.data(S,g),g}function s(a){return a.charAt(0).toUpperCase()+a.slice(1)}function t(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+rb.join(f+" ")+f).split(" "),h=0;if(qb[b])return a.css(qb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return qb[b]=d,e}function u(a,b){return Math.ceil(parseFloat(t(a,b)))}function v(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function w(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function x(a){this._ns="ie6",this.init(this.qtip=a)}var y,z,A,B,C,D=!0,E=!1,F=null,G="x",H="y",I="width",J="height",K="top",L="left",M="bottom",N="right",O="center",P="flipinvert",Q="shift",R={},S="qtip",T="data-hasqtip",U="data-qtip-id",V=["ui-widget","ui-tooltip"],W="."+S,X="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Y=S+"-fixed",Z=S+"-default",$=S+"-focus",_=S+"-hover",ab=S+"-disabled",bb="_replacedByqTip",cb="oldtitle",db={ie:function(){for(var a=4,c=b.createElement("div");(c.innerHTML="")&&c.getElementsByTagName("i")[0];a+=1);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||E};z=e.prototype,z._when=function(a){return d.when.apply(d,a)},z.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),f.posClass=this._createPosClass((this.position={my:k.my,at:k.at}).my),this.tooltip=g.tooltip=b=d("
    ",{id:this._id,"class":[S,Z,e.style.classes,f.posClass].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":E,"aria-describedby":this._id+"-content","aria-hidden":D}).toggleClass(ab,this.disabled).attr(U,this.id).data(S,this).appendTo(k.container).append(g.content=d("
    ",{"class":S+"-content",id:this._id+"-content","aria-atomic":D})),this.rendered=-1,this.positioning=D,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,E))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,E)),this.rendered=D,this._setWidget(),d.each(R,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=E,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(D,f.event,E),c.hiddenDuringWait=E}),y.api[this.id]=this,this},z.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=D;var a,b=this.target,c=b.attr(cb);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()});for(a in this.timers)clearTimeout(this.timers[a]);b.removeData(S).removeAttr(U).removeAttr(T).removeAttr("aria-describedby"),this.options.suppress&&c&&b.attr("title",c).removeAttr(cb),this._unassignEvents(),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=F,delete y.api[this.id]}}return this.destroyed?this.target:(a===D&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},B=z.checks={builtin:{"^id$":function(a,b,c,e){var f=c===D?y.nextid:c,g=S+"-"+f;f!==E&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(this.position[b]=a[b]=new A(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(D)||this.toggle(D))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Z,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},z.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var eb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,fb=/^prerender|show\.ready/i;z.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=E,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&fb.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=eb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=D,d.each(a,d.proxy(j,this)),this.positioning=E,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?F:this.cache.event),this},z._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=D,a.then(function(a){return e.waiting=E,c._update(a,b)},F,function(a){return c._update(a,b)})):a===E||!a&&""!==a?E:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):E},z._waitForContent=function(a){var b=this.cache;return b.waiting=D,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=E}).promise()},z._updateContent=function(a,b){this._update(a,this.elements.content,b)},z._updateTitle=function(a,b){this._update(a,this.elements.title,b)===E&&this._removeTitle(E)},z._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("
    ",{"class":S+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("
    ",{id:b,"class":S+"-title","aria-atomic":D})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},z._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=F,a!==E&&this.reposition())},z._createPosClass=function(a){return S+"-pos-"+(a||this.options.position.my).abbrev()},z.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=D;var f,g,h,i,j=this.cache,k=this.tooltip,l=this.options.position,m=l.target,n=l.my,o=l.at,p=l.viewport,q=l.container,r=l.adjust,s=r.method.split(" "),t=k.outerWidth(E),u=k.outerHeight(E),v=0,w=0,x=k.css("position"),y={left:0,top:0},z=k[0].offsetWidth>0,A=c&&"scroll"===c.type,B=d(a),C=q[0].ownerDocument,F=this.mouse;if(d.isArray(m)&&2===m.length)o={x:L,y:K},y={left:m[0],top:m[1]};else if("mouse"===m)o={x:L,y:K},(!r.mouse||this.options.hide.distance)&&j.origin&&j.origin.pageX?c=j.origin:!c||c&&("resize"===c.type||"scroll"===c.type)?c=j.event:F&&F.pageX&&(c=F),"static"!==x&&(y=q.offset()),C.body.offsetWidth!==(a.innerWidth||C.documentElement.clientWidth)&&(g=d(b.body).offset()),y={left:c.pageX-y.left+(g&&g.left||0),top:c.pageY-y.top+(g&&g.top||0)},r.mouse&&A&&F&&(y.left-=(F.scrollX||0)-B.scrollLeft(),y.top-=(F.scrollY||0)-B.scrollTop());else{if("event"===m?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?j.target=d(c.target):c.target||(j.target=this.elements.target):"event"!==m&&(j.target=d(m.jquery?m:this.elements.target)),m=j.target,m=d(m).eq(0),0===m.length)return this;m[0]===b||m[0]===a?(v=db.iOS?a.innerWidth:m.width(),w=db.iOS?a.innerHeight:m.height(),m[0]===a&&(y={top:(p||m).scrollTop(),left:(p||m).scrollLeft()})):R.imagemap&&m.is("area")?f=R.imagemap(this,m,o,R.viewport?s:E):R.svg&&m&&m[0].ownerSVGElement?f=R.svg(this,m,o,R.viewport?s:E):(v=m.outerWidth(E),w=m.outerHeight(E),y=m.offset()),f&&(v=f.width,w=f.height,g=f.offset,y=f.position),y=this.reposition.offset(m,y,q),(db.iOS>3.1&&db.iOS<4.1||db.iOS>=4.3&&db.iOS<4.33||!db.iOS&&"fixed"===x)&&(y.left-=B.scrollLeft(),y.top-=B.scrollTop()),(!f||f&&f.adjustable!==E)&&(y.left+=o.x===N?v:o.x===O?v/2:0,y.top+=o.y===M?w:o.y===O?w/2:0)}return y.left+=r.x+(n.x===N?-t:n.x===O?-t/2:0),y.top+=r.y+(n.y===M?-u:n.y===O?-u/2:0),R.viewport?(h=y.adjusted=R.viewport(this,y,l,v,w,t,u),g&&h.left&&(y.left+=g.left),g&&h.top&&(y.top+=g.top),h.my&&(this.position.my=h.my)):y.adjusted={left:0,top:0},j.posClass!==(i=this._createPosClass(this.position.my))&&k.removeClass(j.posClass).addClass(j.posClass=i),this._trigger("move",[y,p.elem||p],c)?(delete y.adjusted,e===E||!z||isNaN(y.left)||isNaN(y.top)||"mouse"===m||!d.isFunction(l.effect)?k.css(y):d.isFunction(l.effect)&&(l.effect.call(k,this,d.extend({},y)),k.queue(function(a){d(this).css({opacity:"",height:""}),db.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=E,this):this},z.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!db.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var gb=(A=z.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,O).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?H:G}).prototype;gb.invert=function(a,b){this[a]=this[a]===L?N:this[a]===N?L:b||this[a]},gb.string=function(a){var b=this.x,c=this.y,d=b!==c?"center"===b||"center"!==c&&(this.precedance===H||this.forceY)?[c,b]:[b,c]:[b];return a!==!1?d.join(" "):d},gb.abbrev=function(){var a=this.string(!1);return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},gb.clone=function(){return new A(this.string(),this.forceY)},z.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&e.event&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=d.event.fix(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=D),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",l=this.options[k],m=(this.options[a?"hide":"show"],this.options.position),n=this.options.content,o=this.tooltip.css("width"),p=this.tooltip.is(":visible"),q=a||1===l.target.length,r=!c||l.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!p),h=!g.is(":animated")&&p===a&&r,i=h?F:!!this._trigger(k,[90]),this.destroyed?this:(i!==E&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(this.mouse&&(e.origin=d.event.fix(this.mouse)),d.isFunction(n.text)&&this._updateContent(n.text,E),d.isFunction(n.title)&&this._updateTitle(n.title,E),!C&&"mouse"===m.target&&m.adjust.mouse&&(d(b).bind("mousemove."+S,this._storeMouse),C=D),o||g.css("width",g.outerWidth(E)),this.reposition(c,arguments[2]),o||g.css("width",""),l.solo&&("string"==typeof l.solo?d(l.solo):d(W,l.solo)).not(g).not(l.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,C&&!d(W+'[tracking="true"]:visible',l.solo).not(g).length&&(d(b).unbind("mousemove."+S),C=E),this.blur(c)),j=d.proxy(function(){a?(db.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof l.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),l.effect===E||q===E?(g[k](),j()):d.isFunction(l.effect)?(g.stop(1,1),l.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&l.target.trigger("qtip-"+this.id+"-inactive"),this))},z.show=function(a){return this.toggle(D,a)},z.hide=function(a){return this.toggle(E,a)},z.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(W),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=y.zindex+b.length;return c.hasClass($)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+$).qtip("blur",a)),c.addClass($)[0].style.zIndex=f),this},z.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass($),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},z.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(ab):this.disabled):"boolean"!=typeof a&&(a=D),this.rendered&&this.tooltip.toggleClass(ab,a).attr("aria-disabled",a),this.disabled=!!a,this)},z.enable=function(){return this.disable(E)},z._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("",{"class":"qtip-close "+(this.options.style.widget?"":S+"-icon"),title:g,"aria-label":g}).prepend(d("",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(ab)||a.hide(b),E})},z._updateButton=function(a){if(!this.rendered)return E;var b=this.elements.button;a?this._createButton():b.remove()},z._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(ab);c.removeClass(ab),ab=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(ab,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Z,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(S+"-icon",!a)},z._storeMouse=function(a){return(this.mouse=d.event.fix(a)).type="mousemove",this},z._bind=function(a,b,c,e,f){if(a&&c&&b.length){var g="."+this._id+(e?"-"+e:"");return d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this)),this}},z._unbind=function(a,b){return a&&d(a).unbind("."+this._id+(b?"-"+b:"")),this},z._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||F,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=E,!e.isDefaultPrevented()},z._bindEvents=function(a,b,c,e,f,g){var h=c.filter(e).add(e.filter(c)),i=[];h.length&&(d.each(b,function(b,c){var e=d.inArray(c,a);e>-1&&i.push(a.splice(e,1)[0])}),i.length&&(this._bind(h,i,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)}),c=c.not(h),e=e.not(h))),this._bind(c,a,f),this._bind(e,b,g)},z._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?E:(this.cache.event=a&&d.event.fix(a),this.cache.target=a&&d(a.target),clearTimeout(this.timers.show),void(this.timers.show=l.call(this,function(){this.render("object"==typeof a||c.show.ready)},c.prerender?0:c.show.delay)))}var c=this.options,e=c.show.target,f=c.hide.target,g=c.show.event?d.trim(""+c.show.event).split(" "):[],h=c.hide.event?d.trim(""+c.hide.event).split(" "):[];this._bind(this.elements.target,["remove","removeqtip"],function(){this.destroy(!0)},"destroy"),/mouse(over|enter)/i.test(c.show.event)&&!/mouse(out|leave)/i.test(c.hide.event)&&h.push("mouseleave"),this._bind(e,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=D}),this._bindEvents(g,h,e,f,b,function(){return this.timers?void clearTimeout(this.timers.show):E}),(c.show.ready||c.prerender)&&b.call(this,a)},z._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),q=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Y)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0,e=b.parents(W).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",o,"inactive"),this._bind(i.add(g),y.inactiveEvents,o)),this._bindEvents(r,s,h,i,m,n),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){return this.cache?void(this.cache.onTarget="mouseenter"===a.type):E}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(ab)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:q,"resize",p),f.adjust.scroll&&this._bind(q.add(f.container),"scroll",p)},z._unassignEvents=function(){var c=this.options,e=c.show.target,f=c.hide.target,g=d.grep([this.elements.target[0],this.rendered&&this.tooltip[0],c.position.container[0],c.position.viewport[0],c.position.container.closest("html")[0],a,b],function(a){return"object"==typeof a});e&&e.toArray&&(g=g.concat(e.toArray())),f&&f.toArray&&(g=g.concat(f.toArray())),this._unbind(g)._unbind(g,"destroy")._unbind(g,"inactive")},d(function(){q(W,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Y)&&!c.hasClass(ab)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.position.adjust.mouse&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(_,b)}),q("["+U+"]",X,o)}),y=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=F,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],S):F;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,S);if(!a)return D;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),E;a.set(b,e)}}),g!==F?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(D,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===E||c.length<1||y.api[c]?y.nextid++:c,b=r(d(this),c,k),b===E?D:(y.api[c]=b,d.each(R,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,y.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,cb):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(cb,b))}return d.fn["attr"+bb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+bb].apply(this,arguments));return a||b.filter("["+cb+"]").attr("title",function(){return d.attr(this,cb)}).removeAttr(cb),b}},function(a,b){if(!b||d.fn[a+bb])return D;var c=d.fn[a+bb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+bb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(T))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+bb].apply(this,arguments)}),y.version="2.2.1",y.nextid=0,y.inactiveEvents=X,y.zindex=15e3,y.defaults={prerender:E,id:E,overwrite:D,suppress:D,content:{text:D,attr:"title",title:E,button:E},position:{my:"top left",at:"bottom right",target:E,container:E,viewport:E,adjust:{x:0,y:0,mouse:D,scroll:D,resize:D,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:E})}},show:{target:E,event:"mouseenter",effect:D,delay:90,solo:E,ready:E,autofocus:E},hide:{target:E,event:"mouseleave",effect:D,delay:0,fixed:E,inactive:E,leave:"window",distance:E},style:{classes:"",widget:E,width:E,height:E,def:D},events:{render:F,move:F,show:F,hide:F,toggle:F,visible:F,hidden:F,focus:F,blur:F}};var hb,ib="margin",jb="border",kb="color",lb="background-color",mb="transparent",nb=" !important",ob=!!b.createElement("canvas").getContext,pb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,qb={},rb=["Webkit","O","Moz","ms"];if(ob)var sb=a.devicePixelRatio||1,tb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),ub=sb/tb;else var vb=function(a,b,c){return"'};d.extend(v.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("
    ",{"class":S+"-tip"}).prependTo(a.tooltip),ob?(b=d("").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=vb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===K||a.y===O&&this.element.position().top+this.size[1]/2+this.options.offsetl&&!pb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==D?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===H?[s(r.x===L?l:r.x===N?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===K?k[1]-q[1]:0)]:[s(r.x===L?k[0]-q[0]:0),s(r.y===K?l:r.y===M?k[1]-q[1]-l:(k[1]-q[1])/2)],ob?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,ub),i=this._calculateTip(r,this.size,ub),o.attr(I,k[0]*ub).attr(J,k[1]*ub),o.css(I,k[0]).css(J,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*ub,j[1]*ub),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===db.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(O)>-1),left:j[0]-j[2]*Number(f===G),top:j[1]-j[2]*Number(f===H),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(vb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==E&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return E;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===G&&e.reverse(),d.each(e,function(d,e){var h,k,l; e===O?(h=c===H?L:K,j[h]="50%",j[ib+"-"+h]=-Math.round(b[c===H?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===G?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===Q&&j.precedance===b&&k[d]&&j[c]!==O?j.precedance=j.precedance===G?H:G:a!==Q&&k[d]&&(j[b]=j[b]===O?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===O?p[ib+"-"+b]=o[a]=g[ib+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=E),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:E,top:E,x:0,y:0},p={};this.corner.fixed!==D&&(e(m,G,H,L,N),e(n,H,G,K,M),(j.string()!==i.corner.string()||i.cornerTop!==k.top||i.cornerLeft!==k.left)&&this.update(j,E)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===Q&&!!k.left)&&f(G,L,N),(o.top=n===Q&&!!k.top)&&f(H,K,M),this.element.css(p).toggle(!(o.x&&o.y||j.x===O&&o.y||j.y===O&&o.x)),d.left-=g.left.charAt?g.user:m!==Q||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==Q||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),hb=R.tip=function(a){return new v(a,a.options.style.tip)},hb.initialize="render",hb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=D)}},B.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(D,y.defaults,{style:{tip:{corner:D,mimic:E,width:6,height:6,border:D,offset:0}}});var wb,xb,yb="qtip-modal",zb="."+yb;xb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(W);b=j.length<1?E:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(W)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("
    ",{id:"qtip-overlay",html:"
    ",mousedown:function(){return E}}).hide(),d(b.body).bind("focusin"+zb,e),d(b).bind("keydown"+zb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+zb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==E?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(zb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==E&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==E||!e&&p.length?j:(i.stop(D,E),d.isFunction(m)?m.call(i,e):m===E?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(zb).length||i.detach(),a()}),h=e,f.destroyed&&(f=F),j)}}),j.init()},xb=new xb,d.extend(w.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=xb.elem,b.addClass(yb).css("z-index",y.modal_zindex+d(zb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(xb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(zb),f=y.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);xb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+$).qtip("blur",a.originalEvent),b.addClass($)[0].style.zIndex=f,xb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(zb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void xb.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(yb),this.qtip._unbind(this.qtip.tooltip,this._ns),xb.toggle(this.qtip,E),delete this.qtip.elements.overlay}}),wb=R.modal=function(a){return new w(a,a.options.show.modal)},wb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=D))},y.modal_zindex=y.zindex-200,wb.initialize="render",B.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(D,y.defaults,{show:{modal:{on:E,effect:D,blur:D,stealfocus:D,escape:D}}}),R.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],s=u[a],t=v[a],w=c===Q,x=s===f?j:s===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=q[f]+r[f]-(n?0:m[f]),A=z-k,B=k+j-(h===I?o:p)-z,C=x-(u.precedance===a||s===u[b]?y:0)-(t===O?i/2:0);return w?(C=(s===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-m[f]+r[f],k-C,Math.min(Math.max(-m[f]+r[f]+(h===I?o:p),k+C),d[f],"center"===s?k-x:1e9))):(e*=c===P?2:0,A>0&&(s!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(s!==g||A>0)&&(d[f]-=(s===O?-C:C)+e,l.invert(a,g)),d[f]B&&(d[f]=k,l=u.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s=e.target,t=c.elements.tooltip,u=e.my,v=e.at,w=e.adjust,x=w.method.split(" "),y=x[0],z=x[1]||x[0],A=e.viewport,B=e.container,C=(c.cache,{left:0,top:0});return A.jquery&&s[0]!==a&&s[0]!==b.body&&"none"!==w.method?(m=B.offset()||C,n="static"===B.css("position"),k="fixed"===t.css("position"),o=A[0]===a?A.width():A.outerWidth(E),p=A[0]===a?A.height():A.outerHeight(E),q={left:k?0:A.scrollLeft(),top:k?0:A.scrollTop()},r=A.offset()||C,("shift"!==y||"shift"!==z)&&(l=u.clone()),C={left:"none"!==y?j(G,H,y,w.x,L,N,I,f,h):0,top:"none"!==z?j(H,G,z,w.y,K,M,J,g,i):0,my:l}):C},R.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:E},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]f.position.bottom&&(f.position.bottom=c[1]),c[1]0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===L?i=d:b.x===N?i=f.width-d:i+=Math.floor(d/2),b.y===K?j=e:b.y===M?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===L&&k>=i||b.x===N&&i>=k||b.x===O&&(i>k||k>f.width-i)||b.y===K&&l>=j||b.y===M&&j>=l||b.y===O&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=R.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:E}},circle:function(a,b,c,d){return R.polys.ellipse(a,b,c,c,d)}},R.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o=(d(b),c[0]),p=d(o.ownerSVGElement),q=o.ownerDocument,r=(parseInt(c.css("stroke-width"),10)||0)/2;!o.getBBox;)o=o.parentNode;if(!o.getBBox||!o.parentNode)return E;switch(o.nodeName){case"ellipse":case"circle":m=R.polys.ellipse(o.cx.baseVal.value,o.cy.baseVal.value,(o.rx||o.r).baseVal.value+r,(o.ry||o.r).baseVal.value+r,e);break;case"line":case"polygon":case"polyline":for(l=o.points||[{x:o.x1.baseVal.value,y:o.y1.baseVal.value},{x:o.x2.baseVal.value,y:o.y2.baseVal.value}],m=[],k=-1,i=l.numberOfItems||l.length;++k';d.extend(x.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Bb).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("
    ",{id:S+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(E),width:c.outerWidth(E)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[I,L]:[J,K],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(J,f.height),f.width?e.css(I,f.width):(e.css(I,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(I,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Ab=R.ie6=function(a){return 6===db.ie?new x(a):E},Ab.initialize="render",B.ie6={"^content|style$":function(){this.redraw()}}})}(window,document); //# sourceMappingURL=jquery.qtip.min.js.mapredux/ReduxCore/assets/js/vendor/jsonview.js000066600000025115152143340070015217 0ustar00 /* global console, jsonView */ /* * ViewJSON * Version 1.0 * A Google Chrome extension to display JSON in a user-friendly format * * This is a chromeified version of the JSONView Firefox extension by Ben Hollis: * http://jsonview.com * http://code.google.com/p/jsonview * * Also based on the XMLTree Chrome extension by Moonty & alan.stroop * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb * * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew * MIT license / copyfree (f) F.A.T. Lab http://fffff.at * Speed Project Approved: 2h */ function collapse(evt) { var collapser = evt.target; var target = collapser.parentNode.getElementsByClassName('collapsible'); if (!target.length) { return; } target = target[0]; if (target.style.display === 'none') { var ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0]; target.parentNode.removeChild(ellipsis); target.style.display = ''; } else { target.style.display = 'none'; var ellipsis = document.createElement('span'); ellipsis.className = 'ellipsis'; ellipsis.innerHTML = ' … '; target.parentNode.insertBefore(ellipsis, target); } collapser.innerHTML = (collapser.innerHTML === '-') ? '+' : '-'; } function addCollapser(item) { // This mainly filters out the root object (which shouldn't be collapsible) if (item.nodeName !== 'LI') { return; } var collapser = document.createElement('div'); collapser.className = 'collapser'; collapser.innerHTML = '-'; collapser.addEventListener('click', collapse, false); item.insertBefore(collapser, item.firstChild); } function jsonView(id, target) { this.debug = false; if (id.indexOf("#") !== -1) { this.idType = "id"; this.id = id.replace('#', ''); } else if (id.indexOf(".") !== -1) { this.idType = "class"; this.id = id.replace('.', ''); } else { if (this.debug) { console.log("Can't find that element"); } return; } this.data = document.getElementById(this.id).innerHTML; if (typeof(target) !== undefined) { if (target.indexOf("#") !== -1) { this.targetType = "id"; this.target = target.replace('#', ''); } else if (id.indexOf(".") !== -1) { this.targetType = "class"; this.target = target.replace('.', ''); } else { if (this.debug) { console.log("Can't find the target element"); } return; } } // Note: now using "*.json*" URI matching rather than these page regexes -- save CPU cycles! // var is_json = /^\s*(\{.*\})\s*$/.test(this.data); // var is_jsonp = /^.*\(\s*(\{.*\})\s*\)$/.test(this.data); // if(is_json || is_jsonp){ // Our manifest specifies that we only do URLs matching '.json', so attempt to sanitize any HTML // added by Chrome's "text/plain" or "text/html" handlers if (/^\(.*)\<\/pre\>$/.test(this.data)) { if (this.debug) { console.log("JSONView: data is wrapped in
    ...
    , stripping HTML..."); } this.data = this.data.replace(/<(?:.|\s)*?>/g, ''); //Aggressively strip HTML. } // Test if what remains is JSON or JSONp var json_regex = /^\s*([\[\{].*[\}\]])\s*$/; // Ghetto, but it works var jsonp_regex = /^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/; var jsonp_regex2 = /([\[\{][\s\S]*[\]\}])\)/; // more liberal support... this allows us to pass the jsonp.json & jsonp2.json tests var is_json = json_regex.test(this.data); var is_jsonp = jsonp_regex.test(this.data); if (this.debug) { console.log("JSONView: is_json=" + is_json + " is_jsonp=" + is_jsonp); } if (is_json || is_jsonp) { if (this.debug) { console.log("JSONView: sexytime!"); } // JSONFormatter json->HTML prototype straight from Firefox JSONView // For reference: http://code.google.com/p/jsonview function JSONFormatter() { // No magic required. } JSONFormatter.prototype = { htmlEncode: function(t) { return t != null ? t.toString().replace(/&/g, "&").replace(/"/g, """).replace(//g, ">") : ''; }, decorateWithSpan: function(value, className) { return '' + this.htmlEncode(value) + ''; }, // Convert a basic JSON datatype (number, string, boolean, null, object, array) into an HTML fragment. valueToHTML: function(value) { var valueType = typeof value; var output = ""; if (value === null) { output += this.decorateWithSpan('null', 'null'); } else if (value && value.constructor === Array) { output += this.arrayToHTML(value); } else if (valueType === 'object') { output += this.objectToHTML(value); } else if (valueType === 'number') { output += this.decorateWithSpan(value, 'num'); } else if (valueType === 'string') { if (/^(http|https):\/\/[^\s]+$/.test(value)) { output += '
    ' + this.htmlEncode(value) + ''; } else { output += this.decorateWithSpan('"' + value + '"', 'string'); } } else if (valueType === 'boolean') { output += this.decorateWithSpan(value, 'bool'); } return output; }, // Convert an array into an HTML fragment arrayToHTML: function(json) { var output = '[
      '; var hasContents = false; for (var prop in json) { hasContents = true; output += '
    • '; output += this.valueToHTML(json[prop]); output += '
    • '; } output += '
    ]'; if (!hasContents) { output = "[ ]"; } return output; }, // Convert a JSON object to an HTML fragment objectToHTML: function(json) { var output = '{
      '; var hasContents = false; for (var prop in json) { hasContents = true; output += '
    • '; output += '' + this.htmlEncode(prop) + ': '; output += this.valueToHTML(json[prop]); output += '
    • '; } output += '
    }'; if (!hasContents) { output = "{ }"; } return output; }, // Convert a whole JSON object into a formatted HTML document. jsonToHTML: function(json, callback, uri) { var output = ''; if (callback) { output += '
    ' + callback + ' (
    '; output += '
    '; } else { output += '
    '; } output += this.valueToHTML(json); output += '
    '; if (callback) { output += '
    )
    '; } return this.toHTML(output, uri); }, // Produce an error document for when parsing fails. errorPage: function(error, data, uri) { // var output = '
    ' + this.stringbundle.GetStringFromName('errorParsing') + '
    '; // output += '

    ' + this.stringbundle.GetStringFromName('docContents') + ':

    '; var output = '
    Error parsing JSON: ' + error.message + '
    '; output += '

    ' + error.stack + ':

    '; output += '
    ' + this.htmlEncode(data) + '
    '; return this.toHTML(output, uri + ' - Error'); }, // Wrap the HTML fragment in a full document. Used by jsonToHTML and errorPage. toHTML: function(content) { return content; } }; // Sanitize & output -- all magic from JSONView Firefox this.jsonFormatter = new JSONFormatter(); // This regex attempts to match a JSONP structure: // * Any amount of whitespace (including unicode nonbreaking spaces) between the start of the file and the callback name // * Callback name (any valid JavaScript function name according to ECMA-262 Edition 3 spec) // * Any amount of whitespace (including unicode nonbreaking spaces) // * Open parentheses // * Any amount of whitespace (including unicode nonbreaking spaces) // * Either { or [, the only two valid characters to start a JSON string. // * Any character, any number of times // * Either } or ], the only two valid closing characters of a JSON string. // * Any amount of whitespace (including unicode nonbreaking spaces) // * A closing parenthesis, an optional semicolon, and any amount of whitespace (including unicode nonbreaking spaces) until the end of the file. // This will miss anything that has comments, or more than one callback, or requires modification before use. var outputDoc = ''; // text = text.match(jsonp_regex)[1]; var cleanData = '', callback = ''; var callback_results = jsonp_regex.exec(this.data); if (callback_results && callback_results.length === 3) { if (this.debug) { console.log("THIS IS JSONp"); } callback = callback_results[1]; cleanData = callback_results[2]; } else { if (this.debug) { console.log("Vanilla JSON"); } cleanData = this.data; } if (this.debug) { console.log(cleanData); } // Covert, and catch exceptions on failure try { // var jsonObj = this.nativeJSON.decode(cleanData); var jsonObj = JSON.parse(cleanData); if (jsonObj) { outputDoc = this.jsonFormatter.jsonToHTML(jsonObj, callback); } else { throw "There was no object!"; } } catch (e) { if (this.debug) { console.log(e); } outputDoc = this.jsonFormatter.errorPage(e, this.data); } var links = ''; if (this.targetType !== undefined) { this.idType = this.targetType; this.id = this.target; } var el; if (this.idType === "class") { el = document.getElementsByClassName(this.id); if (el) { el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput'; el.innerHTML = links + outputDoc; } } else if (this.idType === "id") { el = document.getElementById(this.id); if (el) { el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput'; el.innerHTML = links + outputDoc; } el.innerHTML = links + outputDoc; } var items = document.getElementsByClassName('collapsible'); for (var i = 0; i < items.length; i++) { addCollapser(items[i].parentNode); } } else { // console.log("JSONView: this is not json, not formatting."); } }redux/ReduxCore/assets/js/vendor/jsonview.min.js000066600000012730152143340070016000 0ustar00/* global console, jsonView *//* * ViewJSON * Version 1.0 * A Google Chrome extension to display JSON in a user-friendly format * * This is a chromeified version of the JSONView Firefox extension by Ben Hollis: * http://jsonview.com * http://code.google.com/p/jsonview * * Also based on the XMLTree Chrome extension by Moonty & alan.stroop * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb * * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew * MIT license / copyfree (f) F.A.T. Lab http://fffff.at * Speed Project Approved: 2h */function collapse(e){var t=e.target,n=t.parentNode.getElementsByClassName("collapsible");if(!n.length)return;n=n[0];if(n.style.display==="none"){var r=n.parentNode.getElementsByClassName("ellipsis")[0];n.parentNode.removeChild(r),n.style.display=""}else{n.style.display="none";var r=document.createElement("span");r.className="ellipsis",r.innerHTML=" … ",n.parentNode.insertBefore(r,n)}t.innerHTML=t.innerHTML==="-"?"+":"-"}function addCollapser(e){if(e.nodeName!=="LI")return;var t=document.createElement("div");t.className="collapser",t.innerHTML="-",t.addEventListener("click",collapse,!1),e.insertBefore(t,e.firstChild)}function jsonView(e,t){this.debug=!1;if(e.indexOf("#")!==-1)this.idType="id",this.id=e.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find that element");return}this.idType="class",this.id=e.replace(".","")}this.data=document.getElementById(this.id).innerHTML;if(typeof t!==undefined)if(t.indexOf("#")!==-1)this.targetType="id",this.target=t.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find the target element");return}this.targetType="class",this.target=t.replace(".","")}/^\(.*)\<\/pre\>$/.test(this.data)&&(this.debug&&console.log("JSONView: data is wrapped in
    ...
    , stripping HTML..."),this.data=this.data.replace(/<(?:.|\s)*?>/g,""));var n=/^\s*([\[\{].*[\}\]])\s*$/,r=/^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/,i=/([\[\{][\s\S]*[\]\}])\)/,s=n.test(this.data),o=r.test(this.data);this.debug&&console.log("JSONView: is_json="+s+" is_jsonp="+o);if(s||o){this.debug&&console.log("JSONView: sexytime!");function u(){}u.prototype={htmlEncode:function(e){return e!=null?e.toString().replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},decorateWithSpan:function(e,t){return''+this.htmlEncode(e)+""},valueToHTML:function(e){var t=typeof e,n="";return e===null?n+=this.decorateWithSpan("null","null"):e&&e.constructor===Array?n+=this.arrayToHTML(e):t==="object"?n+=this.objectToHTML(e):t==="number"?n+=this.decorateWithSpan(e,"num"):t==="string"?/^(http|https):\/\/[^\s]+$/.test(e)?n+=''+this.htmlEncode(e)+"":n+=this.decorateWithSpan('"'+e+'"',"string"):t==="boolean"&&(n+=this.decorateWithSpan(e,"bool")),n},arrayToHTML:function(e){var t='[
      ',n=!1;for(var r in e)n=!0,t+="
    • ",t+=this.valueToHTML(e[r]),t+="
    • ";return t+="
    ]",n||(t="[ ]"),t},objectToHTML:function(e){var t='{
      ',n=!1;for(var r in e)n=!0,t+="
    • ",t+=''+this.htmlEncode(r)+": ",t+=this.valueToHTML(e[r]),t+="
    • ";return t+="
    }",n||(t="{ }"),t},jsonToHTML:function(e,t,n){var r="";return t?(r+='
    '+t+" (
    ",r+='
    '):r+='
    ',r+=this.valueToHTML(e),r+="
    ",t&&(r+='
    )
    '),this.toHTML(r,n)},errorPage:function(e,t,n){var r='
    Error parsing JSON: '+e.message+"
    ";return r+="

    "+e.stack+":

    ",r+='
    '+this.htmlEncode(t)+"
    ",this.toHTML(r,n+" - Error")},toHTML:function(e){return e}},this.jsonFormatter=new u;var a="",f="",l="",c=r.exec(this.data);c&&c.length===3?(this.debug&&console.log("THIS IS JSONp"),l=c[1],f=c[2]):(this.debug&&console.log("Vanilla JSON"),f=this.data),this.debug&&console.log(f);try{var h=JSON.parse(f);if(!h)throw"There was no object!";a=this.jsonFormatter.jsonToHTML(h,l)}catch(p){this.debug&&console.log(p),a=this.jsonFormatter.errorPage(p,this.data)}var d="";this.targetType!==undefined&&(this.idType=this.targetType,this.id=this.target);var v;this.idType==="class"?(v=document.getElementsByClassName(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a)):this.idType==="id"&&(v=document.getElementById(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a),v.innerHTML=d+a);var m=document.getElementsByClassName("collapsible");for(var g=0;gc.right||b.bottomc.bottom))};a.redux.hideFields();a.redux.checkRequired();a.redux.initEvents();a.redux.initQtip();a.redux.tabCheck();a.redux.notices();a.redux.tabControl()});a.redux.ajax_save=function(e){var d=a(document.getElementById("redux_ajax_overlay"));d.fadeIn();jQuery(".redux-action_bar .spinner").addClass("is-active");jQuery(".redux-action_bar input").attr("disabled","disabled");var f=jQuery(document.getElementById("redux_notification_bar"));f.slideUp();jQuery(".redux-save-warn").slideUp();jQuery(".redux_ajax_save_error").slideUp("medium",function(){jQuery(this).remove()});var g=jQuery(document.getElementById("redux-form-wrapper"));if(redux.fields.hasOwnProperty("editor")){a.each(redux.fields.editor,function(j,h){if(typeof(tinyMCE)!=="undefined"){var i=tinyMCE.get(j);if(i){i.save()}}})}var c=g.serialize();g.find("input[type=checkbox]").each(function(){if(typeof a(this).attr("name")!=="undefined"){var h=a(this).is(":checked")?a(this).val():"0";c+="&"+a(this).attr("name")+"="+h}});if(e.attr("name")!="redux_save"){c+="&"+e.attr("name")+"="+e.val()}var b=g.attr("data-nonce");jQuery.ajax({type:"post",dataType:"json",url:ajaxurl,data:{action:redux.args.opt_name+"_ajax_save",nonce:b,opt_name:redux.args.opt_name,data:c},error:function(h){if(!window.console){console={}}console.log=console.log||function(i,j){};console.log(redux.ajax.console);console.log(h.responseText);jQuery(".redux-action_bar input").removeAttr("disabled");d.fadeOut("fast");jQuery(".redux-action_bar .spinner").removeClass("is-active");alert(redux.ajax.alert)},success:function(h){if(h.action&&h.action=="reload"){location.reload(true)}else{if(h.status=="success"){jQuery(".redux-action_bar input").removeAttr("disabled");d.fadeOut("fast");jQuery(".redux-action_bar .spinner").removeClass("is-active");redux.options=h.options;redux.errors=h.errors;redux.warnings=h.warnings;f.html(h.notification_bar).slideDown("fast");if(h.errors!==null||h.warnings!==null){a.redux.notices()}var i=a(document.getElementById("redux_notification_bar")).find(".saved_notice");i.slideDown();i.delay(4000).slideUp()}else{jQuery(".redux-action_bar input").removeAttr("disabled");jQuery(".redux-action_bar .spinner").removeClass("is-active");d.fadeOut("fast");jQuery(".wrap h2:first").parent().append('");jQuery(".redux_ajax_save_error").slideDown();jQuery("html, body").animate({scrollTop:0},"slow")}}}});return false};a.redux.initEvents=function(){a(".redux-presets-bar").on("click",function(){window.onbeforeunload=null});a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(d){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")&&a(this).attr("href").toLowerCase().indexOf(redux.args.slug+"&tab=")>=0){d.preventDefault();var c=a(this).attr("href").split("&tab=");a("#"+c[1]+"_section_group_li_a").click();a(this).parents("ul:first").find(".current").removeClass("current");a(this).addClass("current");a(this).parent().addClass("current");return false}});a(".redux-action_bar input").on("click",function(c){if(a(this).attr("name")==redux.args.opt_name+"[defaults]"){if(!confirm(redux.args.reset_confirm)){return false}}else{if(a(this).attr("name")==redux.args.opt_name+"[defaults-section]"){if(!confirm(redux.args.reset_section_confirm)){return false}}}window.onbeforeunload=null;if(redux.args.ajax_save===true){a.redux.ajax_save(a(this));c.preventDefault()}});a(".expand_options").click(function(f){f.preventDefault();var c=a(".redux-container");if(a(c).hasClass("fully-expanded")){a(c).removeClass("fully-expanded");var d=a.cookie("redux_current_tab");a(".redux-container:first").find("#"+d+"_section_group").fadeIn(200,function(){if(a(".redux-container:first").find("#redux-footer").length!==0){a.redux.stickyInfo()}a.redux.initFields()})}a.redux.expandOptions(a(this).parents(".redux-container:first"));return false});if(a(".saved_notice").is(":visible")){a(".saved_notice").slideDown()}a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){if(!a(this).hasClass("noUpdate")){redux_change(a(this))}});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b});a("#redux-footer-sticky").removeClass("hide");if(a("#redux-footer").length!==0){a(window).scroll(function(){a.redux.stickyInfo()});a(window).resize(function(){a.redux.stickyInfo()})}a(".saved_notice").delay(4000).slideUp()};a.redux.hideFields=function(){a("label[for='redux_hide_field']").each(function(b,d){var c=a(this).parent().parent();a(c).addClass("hidden")})};a.redux.checkRequired=function(){a.redux.required();a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(b){a.redux.check_dependencies(this)});a("body").on("check_dependencies",function(c,b){a.redux.check_dependencies(b)});a("td > fieldset:empty,td > div:empty").parent().parent().hide()};a.redux.initQtip=function(){if(a().qtip){var q="";var h=redux.args.hints.tip_style.shadow;if(h===true){q="qtip-shadow"}var i="";var m=redux.args.hints.tip_style.color;if(m!==""){i="qtip-"+m}var f="";var j=redux.args.hints.tip_style.rounded;if(j===true){f="qtip-rounded"}var c="";var k=redux.args.hints.tip_style.style;if(k!==""){c="qtip-"+k}var g=q+","+i+","+f+","+c+",redux-qtip";g=g.replace(/,/g," ");var o=redux.args.hints.tip_position.my;var b=redux.args.hints.tip_position.at;o=a.redux.verifyPos(o.toLowerCase(),true);b=a.redux.verifyPos(b.toLowerCase(),false);var p=redux.args.hints.tip_effect.show.event;var e=redux.args.hints.tip_effect.hide.event;var n=redux.args.hints.tip_effect.show.effect;var d=redux.args.hints.tip_effect.show.duration;var r=redux.args.hints.tip_effect.hide.effect;var l=redux.args.hints.tip_effect.hide.duration;a("div.redux-dev-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){a(this).slideDown(500)},event:"mouseover"},hide:{effect:function(){a(this).slideUp(500)},event:"mouseleave"},style:{classes:"qtip-shadow qtip-light"},position:{my:"top center",at:"bottom center"}})});a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(n){case"slide":a(this).slideDown(d);break;case"fade":a(this).fadeIn(d);break;default:a(this).show();break}},event:p},hide:{effect:function(){switch(r){case"slide":a(this).slideUp(l);break;case"fade":a(this).fadeOut(l);break;default:a(this).hide(l);break}},event:e},style:{classes:g},position:{my:o,at:b}})});a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:g,position:{my:o,at:b}})})}};a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var h=a(this);if(h.parent().hasClass("empty_section")&&h.parent().hasClass("hasSubSections")){var j=a(this).closest("ul").find(".redux-group-tab-link-a");var e=j.index(this);h=j.slice(e+1,e+2)}var f=h.parents(".redux-container:first");var d=h.data("rel");var i=f.find(".redux-group-tab-link-li.active:first .redux-group-tab-link-a").data("rel");if(i===d){return}a("#currentSection").val(d);if(!h.parents(".postbox-container:first").length){a.cookie("redux_current_tab",d,{expires:7,path:"/"})}if(f.find("#"+d+"_section_group_li").parents(".redux-group-tab-link-li").length){var k=f.find("#"+d+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");k=k[0]}f.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current");f.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current");f.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var l=a(this).attr("href").split("&tab=");if(l[1]==d||l[1]==k){a(this).addClass("current");a(this).parent().addClass("current")}});if(f.find("#"+i+"_section_group_li").find("#"+i+"_section_group_li").length){f.find("#"+i+"_section_group_li").addClass("activeChild");f.find("#"+d+"_section_group_li").addClass("active").removeClass("activeChild")}else{if(f.find("#"+d+"_section_group_li").parents("#"+i+"_section_group_li").length||f.find("#"+i+"_section_group_li").parents("ul.subsection").find("#"+d+"_section_group_li").length){if(f.find("#"+d+"_section_group_li").parents("#"+i+"_section_group_li").length){f.find("#"+i+"_section_group_li").addClass("activeChild").removeClass("active")}else{f.find("#"+d+"_section_group_li").addClass("active");f.find("#"+i+"_section_group_li").removeClass("active")}f.find("#"+d+"_section_group_li").removeClass("activeChild").addClass("active")}else{f.find("#"+d+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown();if(f.find("#"+i+"_section_group_li").find("ul.subsection").length){f.find("#"+i+"_section_group_li").find("ul.subsection").slideUp("fast",function(){f.find("#"+i+"_section_group_li").removeClass("active").removeClass("activeChild")});var g=f.find("#"+d+"_section_group_li").parents(".hasSubSections:first");if(g.length>0){f.find("#"+d+"_section_group_li").removeClass("active");d=g.find(".redux-group-tab-link-a:first").data("rel");if(g.hasClass("empty_section")){g.find(".subsection li:first").addClass("active");f.find("#"+d+"_section_group_li").removeClass("active").addClass("activeChild").find("ul.subsection").slideDown();g=g.find(".subsection li:first");d=g.find(".redux-group-tab-link-a:first").data("rel")}else{f.find("#"+d+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown()}}}else{if(f.find("#"+i+"_section_group_li").parents("ul.subsection").length){if(!f.find("#"+i+"_section_group_li").parents("#"+d+"_section_group_li").length){f.find("#"+i+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){f.find("#"+i+"_section_group_li").removeClass("active");f.find("#"+i+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild");f.find("#"+d+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown();f.find("#"+d+"_section_group_li").addClass("active")})}else{f.find("#"+i+"_section_group_li").removeClass("active")}}else{f.find("#"+i+"_section_group_li").removeClass("active");if(f.find("#"+d+"_section_group_li").parents(".redux-group-tab-link-li").length){f.find("#"+d+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown();f.find("#"+d+"_section_group_li").addClass("active")}}}}}f.find("#"+i+"_section_group").hide();f.find("#"+d+"_section_group").fadeIn(200,function(){if(f.find("#redux-footer").length!==0){a.redux.stickyInfo()}a.redux.initFields()});a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")});if(redux.last_tab!==undefined){a("#"+redux.last_tab+"_section_group_li_a").click();return}var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);if(b!==""){if(a.cookie("redux_current_tab_get")!==b){a.cookie("redux_current_tab",b,{expires:7,path:"/"});a.cookie("redux_current_tab_get",b,{expires:7,path:"/"});a("#"+b+"_section_group_li").click()}}else{if(a.cookie("redux_current_tab_get")!==""){a.removeCookie("redux_current_tab_get")}}var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");if(a.cookie("redux_current_tab")===null||typeof(a.cookie("redux_current_tab"))==="undefined"||c.length===0){a(".redux-container").find(".redux-group-tab-link-a:first").click()}else{c.click()}};a.redux.initFields=function(){a(".redux-group-tab:visible").find(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");if(typeof redux.field_objects!="undefined"&&redux.field_objects[b]&&redux.field_objects[b]){redux.field_objects[b].init()}if(!redux.customizer&&a(this).hasClass("redux_remove_th")){var d=a(this).parents("tr:first");var c=d.find("th:first");if(c.html()&&c.html().length>0){a(this).prepend(c.html());a(this).find(".redux_field_th").css("padding","0 0 10px 0")}a(this).parent().attr("colspan","2");c.remove()}})};a.redux.notices=function(){if(redux.errors&&redux.errors.errors){a.each(redux.errors.errors,function(c,b){a.each(b.errors,function(d,e){a("#"+redux.args.opt_name+"-"+e.id).addClass("redux-field-error");if(a("#"+redux.args.opt_name+"-"+e.id).parent().find(".redux-th-error").length===0){a("#"+redux.args.opt_name+"-"+e.id).append('
    '+e.msg+"
    ")}else{a("#"+redux.args.opt_name+"-"+e.id).parent().find(".redux-th-error").html(e.msg).css("display","block")}})});a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-error").remove();var c=b.find(".redux-field-error").length;if(c>0){b.find(".redux-field-errors span").text(c);b.find(".redux-field-errors").slideDown();b.find(".redux-group-tab").each(function(){var f=a(this).find(".redux-field-error").length;if(f>0){var e=a(this).attr("id").split("_");e=e[0];b.find('.redux-group-tab-link-a[data-key="'+e+'"]').prepend(''+f+"");b.find('.redux-group-tab-link-a[data-key="'+e+'"]').addClass("hasError");var d=b.find('.redux-group-tab-link-a[data-key="'+e+'"]').parents(".hasSubSections:first");if(d){d.find(".redux-group-tab-link-a:first").addClass("hasError")}}})}})}if(redux.warnings&&redux.warnings.warnings){a.each(redux.warnings.warnings,function(c,b){a.each(b.warnings,function(d,e){a("#"+redux.args.opt_name+"-"+e.id).addClass("redux-field-warning");if(a("#"+redux.args.opt_name+"-"+e.id).parent().find(".redux-th-warning").length===0){a("#"+redux.args.opt_name+"-"+e.id).append('
    '+e.msg+"
    ")}else{a("#"+redux.args.opt_name+"-"+e.id).parent().find(".redux-th-warning").html(e.msg).css("display","block")}})});a(".redux-container").each(function(){var b=a(this);b.find(".redux-menu-warning").remove();var c=b.find(".redux-field-warning").length;if(c>0){b.find(".redux-field-warnings span").text(c);b.find(".redux-field-warnings").slideDown();b.find(".redux-group-tab").each(function(){var f=a(this).find(".redux-field-warning").length;if(f>0){var e=a(this).attr("id").split("_");e=e[0];b.find('.redux-group-tab-link-a[data-key="'+e+'"]').prepend(''+f+"");b.find('.redux-group-tab-link-a[data-key="'+e+'"]').addClass("hasWarning");var d=b.find('.redux-group-tab-link-a[data-key="'+e+'"]').parents(".hasSubSections:first");if(d){d.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}})}})}};a.redux.tabControl=function(){a(".redux-section-tabs div").hide();a(".redux-section-tabs div:first").show();a(".redux-section-tabs ul li:first").addClass("active");a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active");a(this).parent().addClass("active");var b=a(this).attr("href");a(".redux-section-tabs div").hide();a(b).fadeIn("medium",function(){a.redux.initFields()});return false})};a.redux.required=function(){a.each(redux.folds,function(d,c){var b=a("#"+redux.args.opt_name+"-"+d);b.parents("tr:first").addClass("fold");if(c=="hide"){b.parents("tr:first").addClass("hide");if(b.hasClass("redux-container-section")){var f=a("#section-"+d);if(f.hasClass("redux-section-indent-start")){a("#section-table-"+d).hide().addClass("hide");f.hide().addClass("hide")}}if(b.hasClass("redux-container-info")){a("#info-"+d).hide().addClass("hide")}if(b.hasClass("redux-container-divide")){a("#divide-"+d).hide().addClass("hide")}if(b.hasClass("redux-container-raw")){var e=b.parents().find("table#"+redux.args.opt_name+"-"+d);e.hide().addClass("hide")}}})};a.redux.get_container_value=function(c){var b=a("#"+redux.args.opt_name+"-"+c).serializeForm();if(b!==null&&typeof b==="object"&&b.hasOwnProperty(redux.args.opt_name)){b=b[redux.args.opt_name][c]}if(a("#"+redux.args.opt_name+"-"+c).hasClass("redux-container-media")){b=b.url}return b};a.redux.check_dependencies=function(c){if(redux.required===null){return}var e=a(c),f=e.parents(".redux-field:first").data("id");if(!redux.required.hasOwnProperty(f)){return}var b=e.parents(".redux-field-container:first"),d=b.parents("tr:first").hasClass(".hide");if(!b.parents("tr:first").length){d=b.parents(".customize-control:first").hasClass(".hide")}a.each(redux.required[f],function(n,m){var k=a(this),g=false,h=a("#"+redux.args.opt_name+"-"+n),j=h.parents("tr:first");if(!d){g=a.redux.check_parents_dependencies(n)}if(g===true){if(h.hasClass("redux-container-section")){var l=a("#section-"+n);if(l.hasClass("redux-section-indent-start")&&l.hasClass("hide")){a("#section-table-"+n).fadeIn(300).removeClass("hide");l.fadeIn(300).removeClass("hide")}}if(h.hasClass("redux-container-info")){a("#info-"+n).fadeIn(300).removeClass("hide")}if(h.hasClass("redux-container-divide")){a("#divide-"+n).fadeIn(300).removeClass("hide")}if(h.hasClass("redux-container-raw")){var i=h.parents().find("table#"+redux.args.opt_name+"-"+n);i.fadeIn(300).removeClass("hide")}j.fadeIn(300,function(){a(this).removeClass("hide");if(redux.required.hasOwnProperty(n)){a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+n).children().first())}a.redux.initFields()});if(h.hasClass("redux-container-section")||h.hasClass("redux-container-info")){j.css({display:"none"})}}else{if(g===false){j.fadeOut(100,function(){a(this).addClass("hide");if(redux.required.hasOwnProperty(n)){a.redux.required_recursive_hide(n)}})}}k.find("select, radio, input[type=checkbox]").trigger("change")})};a.redux.required_recursive_hide=function(c){var b=a("#"+redux.args.opt_name+"-"+c).parents("tr:first");b.fadeOut(50,function(){a(this).addClass("hide");if(a("#"+redux.args.opt_name+"-"+c).hasClass("redux-container-section")){var e=a("#section-"+c);if(e.hasClass("redux-section-indent-start")){a("#section-table-"+c).fadeOut(50).addClass("hide");e.fadeOut(50).addClass("hide")}}if(a("#"+redux.args.opt_name+"-"+c).hasClass("redux-container-info")){a("#info-"+c).fadeOut(50).addClass("hide")}if(a("#"+redux.args.opt_name+"-"+c).hasClass("redux-container-divide")){a("#divide-"+c).fadeOut(50).addClass("hide")}if(a("#"+redux.args.opt_name+"-"+c).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+c).parents().find("table#"+redux.args.opt_name+"-"+c);d.fadeOut(50).addClass("hide")}if(redux.required.hasOwnProperty(c)){a.each(redux.required[c],function(f){a.redux.required_recursive_hide(f)})}})};a.redux.check_parents_dependencies=function(c){var b="";if(redux.required_child.hasOwnProperty(c)){a.each(redux.required_child[c],function(e,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide")){b=false}else{if(b!==false){var f=a.redux.get_container_value(d.parent);b=a.redux.check_dependencies_visibility(f,d)}}})}else{b=true}return b};a.redux.check_dependencies_visibility=function(g,f){var c=false,h,e=f.checkValue,d=f.operation,b;switch(d){case"=":case"equals":if(a.isArray(g)){a(g[0]).each(function(i,j){if(a.isArray(e)){a(e).each(function(l,k){if(j==k){c=true;return true}})}else{if(j==e){c=true;return true}}})}else{if(a.isArray(e)){a(e).each(function(k,j){if(g==j){c=true}})}else{if(g==e){c=true}}}break;case"!=":case"not":if(a.isArray(g)){a(g).each(function(i,j){if(a.isArray(e)){a(e).each(function(l,k){if(j!=k){c=true;return true}})}else{if(j!=e){c=true;return true}}})}else{if(a.isArray(e)){a(e).each(function(k,j){if(g!=j){c=true}})}else{if(g!=e){c=true}}}break;case">":case"greater":case"is_larger":if(parseFloat(g)>parseFloat(e)){c=true}break;case">=":case"greater_equal":case"is_larger_equal":if(parseFloat(g)>=parseFloat(e)){c=true}break;case"<":case"less":case"is_smaller":if(parseFloat(g)b){b=h;e.attr("data-height",b);e.css("width","auto");e.attr("data-width",e.width());c=e.width()}if(c>f){d=f/c;e.css("width",f);e.css("height",b*d);b=b*d;c=c*d}else{e.css("width","auto")}if(b>g){d=g/b;e.css("height",g);e.css("width",c*d);c=c*d;b=b*d}else{e.css("height","auto")}var i=(a(document.getElementById("redux-header")).height()-e.height())/2;if(i>0){e.css("margin-top",i)}else{e.css("margin-top",0)}if(a("#redux-header .redux_field_search")){a("#redux-header .redux_field_search").css("right",(a(e).width()+20))}};a.redux.resizeAds=function(){var b=a("#redux-header");var d;if(b.length){d=b.width()-b.find(".display_header").width()-30}else{b=a("#customize-info");d=b.width()}var c=b.height();var e=b.find(".rAds");a(e).find("video").each(function(){a.redux.scaleToRatio(a(this),c,d)});a(e).find("img").each(function(){a.redux.scaleToRatio(a(this),c,d)});a(e).find("div").each(function(){a.redux.scaleToRatio(a(this),c,d)});if(e.css("left")=="-99999px"){e.css("display","none").css("left","auto")}e.fadeIn("slow")};a(document).ready(function(){if(redux.rAds){setTimeout(function(){var b;if(a("#redux-header").length>0){a("#redux-header").append('
    ');b=a("#redux-header")}else{a("#customize-theme-controls ul").first().prepend('
  • ');b=a("#redux_rAds")}b.css("position","relative");b.find(".rAds").attr("style","position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;").css("left","-99999px");b.find(".rAds").html(redux.rAds.replace(//,""));var e=b.find(".rAds");var d=b.height();var c=b.width()-b.find(".display_header").width()-30;e.find("a").css("float","right").css("line-height",b.height()+"px").css("margin-left","5px");a(document).ajaxComplete(function(){e.find("a").hide();setTimeout(function(){a.redux.resizeAds();e.find("a").fadeIn()},1400);setTimeout(function(){a.redux.resizeAds()},1500);a(document).unbind("ajaxComplete")});a(window).resize(function(){a.redux.resizeAds()})},400)}})})(jQuery);jQuery.noConflict();var confirmOnPageExit=function(b){b=b||window.event;var a=redux.args.save_pending;if(b){b.returnValue=a}window.onbeforeunload=null;return a};function redux_change(f){f=jQuery(f);jQuery("body").trigger("check_dependencies",f);if(f.hasClass("compiler")){jQuery("#redux-compiler-hook").val(1)}var d=jQuery(f).parents(".redux-container:first");var j=jQuery(f).closest(".redux-group-tab").attr("id");var b=j.split("_");b=b[0];var c=d.find('.redux-group-tab-link-a[data-key="'+b+'"]').parents(".redux-group-tab-link-li:first");var i=jQuery("#"+j+"_li").parents(".hasSubSections:first");if(jQuery(f).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(f).parents("fieldset.redux-field:first").removeClass("redux-field-error");jQuery(f).parent().find(".redux-th-error").slideUp();var h=(parseInt(d.find(".redux-field-errors span").text())-1);if(h<=0){jQuery("#"+j+"_li .redux-menu-error").fadeOut("fast").remove();jQuery("#"+j+"_li .redux-group-tab-link-a").removeClass("hasError");jQuery("#"+j+"_li").parents(".inside:first").find(".redux-field-errors").slideUp();jQuery(f).parents(".redux-container:first").find(".redux-field-errors").slideUp();jQuery("#redux_metaboxes_errors").slideUp()}else{var a=(parseInt(c.find(".redux-menu-error:first").text())-1);if(a<=0){c.find(".redux-menu-error:first").fadeOut().remove()}else{c.find(".redux-menu-error:first").text(a)}d.find(".redux-field-errors span").text(h)}if(i.length!==0){if(i.find(".redux-menu-error").length===0){i.find(".hasError").removeClass("hasError")}}}if(jQuery(f).parents("fieldset.redux-field:first").hasClass("redux-field-warning")){jQuery(f).parents("fieldset.redux-field:first").removeClass("redux-field-warning");jQuery(f).parent().find(".redux-th-warning").slideUp();var e=(parseInt(d.find(".redux-field-warnings span").text())-1);if(e<=0){jQuery("#"+j+"_li .redux-menu-warning").fadeOut("fast").remove();jQuery("#"+j+"_li .redux-group-tab-link-a").removeClass("hasWarning");jQuery("#"+j+"_li").parents(".inside:first").find(".redux-field-warnings").slideUp();jQuery(f).parents(".redux-container:first").find(".redux-field-warnings").slideUp();jQuery("#redux_metaboxes_warnings").slideUp()}else{var g=(parseInt(c.find(".redux-menu-warning:first").text())-1);if(g<=0){c.find(".redux-menu-warning:first").fadeOut().remove()}else{c.find(".redux-menu-warning:first").text(g)}d.find(".redux-field-warning span").text(e)}if(i.length!==0){if(i.find(".redux-menu-warning").length===0){i.find(".hasWarning").removeClass("hasWarning")}}}if(d.find(".saved_notice:visible").length>0){return}if(!redux.args.disable_save_warn){d.find(".redux-save-warn").slideDown();window.onbeforeunload=confirmOnPageExit}}function colorValidate(c){var b=jQuery(c).val();var a=colorNameToHex(b);if(a!==b.replace("#","")){return a}return b}function colorNameToHex(b){var a=b.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#","");var c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};if(c[a.toLowerCase()]!=="undefined"){return c[a.toLowerCase()]}return b}function redux_hook(a,c,d,b){(function(e){a[c]=function(){if(b===true){d.apply(this,[f,e,arguments])}var f=e.apply(this,arguments);if(b!==true){d.apply(this,[f,e,arguments])}return f}}(a[c]))};redux/ReduxCore/templates/panel/header_stickybar.tpl.php000066600000003361152143340070017510 0ustar00
    parent->args['hide_expand'] ? ' style="display: none;"' : '' ?>>
    parent->args['hide_save'] ) { ?> parent->args['hide_reset'] ) { ?> parent->args['opt_name'] . '[defaults-section]', false, array( 'id' => 'redux-defaults-section' ) ); ?> parent->args['opt_name'] . '[defaults]', false, array( 'id' => 'redux-defaults' ) ); ?>
     
    notification_bar(); ?>
    redux/ReduxCore/templates/panel/header.tpl.php000066600000006477152143340070015450 0ustar00parent->dev_mode_forced ) { $is_debug = false; $is_localhost = false; $debug_bit = ''; if ( Redux_Helpers::isWpDebug() ) { $is_debug = true; $debug_bit = __( 'WP_DEBUG is enabled', 'redux-framework' ); } $localhost_bit = ''; if ( Redux_Helpers::isLocalHost() ) { $is_localhost = true; $localhost_bit = __( 'you are working in a localhost environment', 'redux-framework' ); } $conjunction_bit = ''; if ( $is_localhost && $is_debug ) { $conjunction_bit = ' ' . __( 'and', 'redux-framework' ) . ' '; } $tip_msg = __( 'This has been automatically enabled because', 'redux-framework' ) . ' ' . $debug_bit . $conjunction_bit . $localhost_bit . '.'; } else { $tip_msg = __( 'If you are not a developer, your theme/plugin author shipped with developer mode enabled. Contact them directly to fix it.', 'redux-framework' ); } ?>
    parent->args['display_name'] ) ) { ?>
    parent->args['dev_mode'] ) && $this->parent->args['dev_mode'] ) { ?>
    parent->args['forced_dev_mode_off']) && $this->parent->args['forced_dev_mode_off'] == true ) { ?>

    parent->args['display_name'] ); ?>

    parent->args['display_version'] ) ) { ?> parent->args['display_version'] ); ?>
    redux/ReduxCore/templates/panel/menu_container.tpl.php000066600000002760152143340070017215 0ustar00
      parent->sections as $k => $section ) { $title = isset ( $section[ 'title' ] ) ? $section[ 'title' ] : ''; $skip_sec = false; foreach ( $this->parent->hidden_perm_sections as $num => $section_title ) { if ( $section_title == $title ) { $skip_sec = true; } } if ( isset ( $section[ 'customizer_only' ] ) && $section[ 'customizer_only' ] == true ) { continue; } if ( false == $skip_sec ) { echo $this->parent->section_menu ( $k, $section ); $skip_sec = false; } } /** * action 'redux-page-after-sections-menu-{opt_name}' * * @param object $this ReduxFramework */ do_action ( "redux-page-after-sections-menu-{$this->parent->args[ 'opt_name' ]}", $this ); /** * action 'redux/page/{opt_name}/menu/after' * * @param object $this ReduxFramework */ do_action ( "redux/page/{$this->parent->args[ 'opt_name' ]}/menu/after", $this ); ?>
    redux/ReduxCore/templates/panel/content.tpl.php000066600000007176152143340070015667 0ustar00 get_template( 'header.tpl.php' ); ?> parent->args['intro_text'] ) ) { ?>
    parent->args['intro_text'] ); ?>
    get_template( 'menu_container.tpl.php' ); ?>
    get_template( 'header_stickybar.tpl.php' ); ?>
     
    parent->sections as $k => $section) { if ( isset( $section['customizer_only'] ) && $section['customizer_only'] == true ) { continue; } //$active = ( ( is_numeric($this->parent->current_tab) && $this->parent->current_tab == $k ) || ( !is_numeric($this->parent->current_tab) && $this->parent->current_tab === $k ) ) ? ' style="display: block;"' : ''; $section['class'] = isset( $section['class'] ) ? ' ' . $section['class'] : ''; echo '
    '; //echo '
    '; echo ''; foreach ($section['tab'] as $subkey => $subsection) { echo '
    '; echo '
    '; echo "hello ".$subkey; do_settings_sections( $this->parent->args['opt_name'] . $k . '_tab_' . $subkey . '_section_group' ); echo "
    "; echo "
    "; } echo "
    "; } else { */ // Don't display in the $display = true; if ( isset( $_GET['page'] ) && $_GET['page'] == $this->parent->args['page_slug'] ) { if ( isset( $section['panel'] ) && $section['panel'] == "false" ) { $display = false; } } if ( $display ) { do_action( "redux/page/{$this->parent->args['opt_name']}/section/before", $section ); $this->output_section( $k ); do_action( "redux/page/{$this->parent->args['opt_name']}/section/after", $section ); } //} ?>
    '; } /** * action 'redux/page-after-sections-{opt_name}' * * @deprecated * * @param object $this ReduxFramework */ do_action( "redux/page-after-sections-{$this->parent->args['opt_name']}", $this ); // REMOVE LATER /** * action 'redux/page/{opt_name}/sections/after' * * @param object $this ReduxFramework */ do_action( "redux/page/{$this->parent->args['opt_name']}/sections/after", $this ); ?>
    get_template( 'footer.tpl.php' ); ?>
    redux/ReduxCore/templates/panel/footer.tpl.php000066600000005545152143340070015511 0ustar00 redux/ReduxCore/templates/panel/container.tpl.php000066600000005611152143340070016167 0ustar00parent->args['open_expanded'] ) ? ' fully-expanded' : '' . ( ! empty( $this->parent->args['class'] ) ? ' ' . esc_attr( $this->parent->args['class'] ) : '' ); $nonce = wp_create_nonce( "redux_ajax_nonce" . $this->parent->args['opt_name'] ); ?>
    parent->args['database'] == "network" && $this->parent->args['network_admin'] && is_network_admin() ? './edit.php?action=redux_' . $this->parent->args['opt_name'] : './options.php' ) ?>
    parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> parent->no_panel ) ) { ?> init_settings_fields(); // Last tab? $this->parent->options['last_tab'] = ( isset( $_GET['tab'] ) && ! isset( $this->parent->transients['last_save_mode'] ) ) ? esc_attr( $_GET['tab'] ) : ''; ?> parent->args['opt_name'] is sanitized in the Framework class, no need to re-sanitize it. ?> get_template( 'content.tpl.php' ); ?>
    parent->args['footer_text'] ) ) { ?> redux/ReduxCore/inc/class.redux_helpers.php000066600000075567152143340070015061 0ustar00sections as $k => $section ) { if ( ! isset( $section['title'] ) ) { continue; } if ( isset( $section['fields'] ) && ! empty( $section['fields'] ) ) { if ( Redux_Helpers::recursive_array_search( $field, $section['fields'] ) ) { return $k; continue; } } } } public static function isFieldInUseByType( $fields, $field = array() ) { foreach ( $field as $name ) { if ( array_key_exists( $name, $fields ) ) { return true; } } return false; } public static function isFieldInUse( $parent, $field ) { foreach ( $parent->sections as $k => $section ) { if ( ! isset( $section['title'] ) ) { continue; } if ( isset( $section['fields'] ) && ! empty( $section['fields'] ) ) { if ( Redux_Helpers::recursive_array_search( $field, $section['fields'] ) ) { return true; continue; } } } } public static function major_version( $v ) { $version = explode( '.', $v ); if ( count( $version ) > 1 ) { return $version[0] . '.' . $version[1]; } else { return $v; } } public static function isLocalHost() { return ( $_SERVER['REMOTE_ADDR'] === '127.0.0.1' || $_SERVER['REMOTE_ADDR'] === 'localhost' ) ? 1 : 0; } public static function isWpDebug() { return ( defined( 'WP_DEBUG' ) && WP_DEBUG == true ); } public static function getTrackingObject() { global $wpdb; $hash = md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ); global $blog_id, $wpdb; $pts = array(); foreach ( get_post_types( array( 'public' => true ) ) as $pt ) { $count = wp_count_posts( $pt ); $pts[ $pt ] = $count->publish; } $comments_count = wp_count_comments(); $theme_data = wp_get_theme(); $theme = array( 'version' => $theme_data->Version, 'name' => $theme_data->Name, 'author' => $theme_data->Author, 'template' => $theme_data->Template, ); if ( ! function_exists( 'get_plugin_data' ) ) { if ( file_exists( ABSPATH . 'wp-admin/includes/plugin.php' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } if ( file_exists( ABSPATH . 'wp-admin/includes/admin.php' ) ) { require_once ABSPATH . 'wp-admin/includes/admin.php'; } } $plugins = array(); foreach ( get_option( 'active_plugins', array() ) as $plugin_path ) { $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); $plugins[ $slug ] = array( 'version' => $plugin_info['Version'], 'name' => $plugin_info['Name'], 'plugin_uri' => $plugin_info['PluginURI'], 'author' => $plugin_info['AuthorName'], 'author_uri' => $plugin_info['AuthorURI'], ); } if ( is_multisite() ) { foreach ( get_option( 'active_sitewide_plugins', array() ) as $plugin_path ) { $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); $plugins[ $slug ] = array( 'version' => $plugin_info['Version'], 'name' => $plugin_info['Name'], 'plugin_uri' => $plugin_info['PluginURI'], 'author' => $plugin_info['AuthorName'], 'author_uri' => $plugin_info['AuthorURI'], ); } } $version = explode( '.', PHP_VERSION ); $version = array( 'major' => $version[0], 'minor' => $version[0] . '.' . $version[1], 'release' => PHP_VERSION ); $user_query = new WP_User_Query( array( 'blog_id' => $blog_id, 'count_total' => true, ) ); $comments_query = new WP_Comment_Query(); $data = array( '_id' => $hash, 'localhost' => ( $_SERVER['REMOTE_ADDR'] === '127.0.0.1' ) ? 1 : 0, 'php' => $version, 'site' => array( 'hash' => $hash, 'version' => get_bloginfo( 'version' ), 'multisite' => is_multisite(), 'users' => $user_query->get_total(), 'lang' => get_locale(), 'wp_debug' => ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? true : false : false ), 'memory' => WP_MEMORY_LIMIT, ), 'pts' => $pts, 'comments' => array( 'total' => $comments_count->total_comments, 'approved' => $comments_count->approved, 'spam' => $comments_count->spam, 'pings' => $comments_query->query( array( 'count' => true, 'type' => 'pingback' ) ), ), 'options' => apply_filters( 'redux/tracking/options', array() ), 'theme' => $theme, 'redux' => array( 'mode' => ReduxFramework::$_is_plugin ? 'plugin' : 'theme', 'version' => ReduxFramework::$_version, 'demo_mode' => get_option( 'ReduxFrameworkPlugin' ), ), 'developer' => apply_filters( 'redux/tracking/developer', array() ), 'plugins' => $plugins, ); $parts = explode( ' ', $_SERVER['SERVER_SOFTWARE'] ); $software = array(); foreach ( $parts as $part ) { if ( $part[0] == "(" ) { continue; } if ( strpos( $part, '/' ) !== false ) { $chunk = explode( "/", $part ); $software[ strtolower( $chunk[0] ) ] = $chunk[1]; } } $software['full'] = $_SERVER['SERVER_SOFTWARE']; $data['environment'] = $software; $data['environment']['mysql'] = $wpdb->db_version(); // if ( function_exists( 'mysqli_get_server_info' ) ) { // $link = mysqli_connect() or die( "Error " . mysqli_error( $link ) ); // $data['environment']['mysql'] = mysqli_get_server_info( $link ); // } else if ( class_exists( 'PDO' ) && method_exists( 'PDO', 'getAttribute' ) ) { // $data['environment']['mysql'] = PDO::getAttribute( PDO::ATTR_SERVER_VERSION ); // } else { // $data['environment']['mysql'] = mysql_get_server_info(); // } if ( empty( $data['developer'] ) ) { unset( $data['developer'] ); } return $data; } public static function trackingObject() { $data = wp_remote_post( 'http://verify.redux.io', array( 'body' => array( 'hash' => $_GET['action'], 'site' => esc_url( home_url( '/' ) ), ) ) ); $data['body'] = urldecode( $data['body'] ); if ( ! isset( $_GET['code'] ) || $data['body'] != $_GET['code'] ) { die(); } return Redux_Helpers::getTrackingObject(); } public static function isParentTheme( $file ) { $file = self::cleanFilePath( $file ); $dir = self::cleanFilePath( get_template_directory() ); $file = str_replace( '//', '/', $file ); $dir = str_replace( '//', '/', $dir ); if ( strpos( $file, $dir ) !== false ) { return true; } return false; } public static function isChildTheme( $file ) { $file = self::cleanFilePath( $file ); $dir = self::cleanFilePath( get_stylesheet_directory() ); $file = str_replace( '//', '/', $file ); $dir = str_replace( '//', '/', $dir ); if ( strpos( $file, $dir ) !== false ) { return true; } return false; } private static function reduxAsPlugin() { return ReduxFramework::$_as_plugin; } public static function isTheme( $file ) { if ( true == self::isChildTheme( $file ) || true == self::isParentTheme( $file ) ) { return true; } return false; } public static function array_in_array( $needle, $haystack ) { //Make sure $needle is an array for foreach if ( ! is_array( $needle ) ) { $needle = array( $needle ); } //For each value in $needle, return TRUE if in $haystack foreach ( $needle as $pin ) //echo 'needle' . $pin; { if ( in_array( $pin, $haystack ) ) { return true; } } //Return FALSE if none of the values from $needle are found in $haystack return false; } public static function recursive_array_search( $needle, $haystack ) { foreach ( $haystack as $key => $value ) { if ( $needle === $value || ( is_array( $value ) && self::recursive_array_search( $needle, $value ) !== false ) ) { return true; } } return false; } /** * Take a path and return it clean * * @param string $path * * @since 3.1.7 */ public static function cleanFilePath( $path ) { $path = str_replace( '', '', str_replace( array( "\\", "\\\\" ), '/', $path ) ); if ( $path[ strlen( $path ) - 1 ] === '/' ) { $path = rtrim( $path, '/' ); } return $path; } /** * Take a path and delete it * * @param string $path * * @since 3.3.3 */ public static function rmdir( $dir ) { if ( is_dir( $dir ) ) { $objects = scandir( $dir ); foreach ( $objects as $object ) { if ( $object != "." && $object != ".." ) { if ( filetype( $dir . "/" . $object ) == "dir" ) { rrmdir( $dir . "/" . $object ); } else { unlink( $dir . "/" . $object ); } } } reset( $objects ); rmdir( $dir ); } } /** * Field Render Function. * Takes the color hex value and converts to a rgba. * * @since ReduxFramework 3.0.4 */ public static function hex2rgba( $hex, $alpha = '' ) { $hex = str_replace( "#", "", $hex ); if ( strlen( $hex ) == 3 ) { $r = hexdec( substr( $hex, 0, 1 ) . substr( $hex, 0, 1 ) ); $g = hexdec( substr( $hex, 1, 1 ) . substr( $hex, 1, 1 ) ); $b = hexdec( substr( $hex, 2, 1 ) . substr( $hex, 2, 1 ) ); } else { $r = hexdec( substr( $hex, 0, 2 ) ); $g = hexdec( substr( $hex, 2, 2 ) ); $b = hexdec( substr( $hex, 4, 2 ) ); } $rgb = $r . ',' . $g . ',' . $b; if ( '' == $alpha ) { return $rgb; } else { $alpha = floatval( $alpha ); return 'rgba(' . $rgb . ',' . $alpha . ')'; } } public static function makeBoolStr( $var ) { if ( $var == false || $var == 'false' || $var == 0 || $var == '0' || $var == '' || empty( $var ) ) { return 'false'; } else { return 'true'; } } public static function localize( $localize ) { $redux = ReduxFrameworkInstances::get_instance( $localize['args']['opt_name'] ); $nonce = wp_create_nonce( 'redux-ads-nonce' ); $base = admin_url( 'admin-ajax.php' ) . '?action=redux_p&nonce=' . $nonce . '&url='; $localize['rAds'] = Redux_Helpers::rURL_fix( $base, $redux->args['opt_name'] ); return $localize; } public static function compileSystemStatus( $json_output = false, $remote_checks = false ) { global $wpdb; $sysinfo = array(); $sysinfo['home_url'] = home_url(); $sysinfo['site_url'] = site_url(); $sysinfo['redux_ver'] = esc_html( ReduxFramework::$_version ); $sysinfo['redux_data_dir'] = ReduxFramework::$_upload_dir; $f = 'fo' . 'pen'; // Only is a file-write check $sysinfo['redux_data_writeable'] = self::makeBoolStr( @$f( ReduxFramework::$_upload_dir . 'test-log.log', 'a' ) ); $sysinfo['wp_content_url'] = WP_CONTENT_URL; $sysinfo['wp_ver'] = get_bloginfo( 'version' ); $sysinfo['wp_multisite'] = is_multisite(); $sysinfo['permalink_structure'] = get_option( 'permalink_structure' ) ? get_option( 'permalink_structure' ) : 'Default'; $sysinfo['front_page_display'] = get_option( 'show_on_front' ); if ( $sysinfo['front_page_display'] == 'page' ) { $front_page_id = get_option( 'page_on_front' ); $blog_page_id = get_option( 'page_for_posts' ); $sysinfo['front_page'] = $front_page_id != 0 ? get_the_title( $front_page_id ) . ' (#' . $front_page_id . ')' : 'Unset'; $sysinfo['posts_page'] = $blog_page_id != 0 ? get_the_title( $blog_page_id ) . ' (#' . $blog_page_id . ')' : 'Unset'; } $sysinfo['wp_mem_limit']['raw'] = self::let_to_num( WP_MEMORY_LIMIT ); $sysinfo['wp_mem_limit']['size'] = size_format( $sysinfo['wp_mem_limit']['raw'] ); $sysinfo['db_table_prefix'] = 'Length: ' . strlen( $wpdb->prefix ) . ' - Status: ' . ( strlen( $wpdb->prefix ) > 16 ? 'ERROR: Too long' : 'Acceptable' ); $sysinfo['wp_debug'] = 'false'; if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { $sysinfo['wp_debug'] = 'true'; } $sysinfo['wp_lang'] = get_locale(); if ( ! class_exists( 'Browser' ) ) { require_once ReduxFramework::$_dir . 'inc/browser.php'; } $browser = new Browser(); $sysinfo['browser'] = array( 'agent' => $browser->getUserAgent(), 'browser' => $browser->getBrowser(), 'version' => $browser->getVersion(), 'platform' => $browser->getPlatform(), //'mobile' => $browser->isMobile() ? 'true' : 'false', ); $sysinfo['server_info'] = esc_html( $_SERVER['SERVER_SOFTWARE'] ); $sysinfo['localhost'] = self::makeBoolStr( self::isLocalHost() ); $sysinfo['php_ver'] = function_exists( 'phpversion' ) ? esc_html( phpversion() ) : 'phpversion() function does not exist.'; $sysinfo['abspath'] = ABSPATH; if ( function_exists( 'ini_get' ) ) { $sysinfo['php_mem_limit'] = size_format( self::let_to_num( ini_get( 'memory_limit' ) ) ); $sysinfo['php_post_max_size'] = size_format( self::let_to_num( ini_get( 'post_max_size' ) ) ); $sysinfo['php_time_limit'] = ini_get( 'max_execution_time' ); $sysinfo['php_max_input_var'] = ini_get( 'max_input_vars' ); $sysinfo['php_display_errors'] = self::makeBoolStr( ini_get( 'display_errors' ) ); } $sysinfo['suhosin_installed'] = extension_loaded( 'suhosin' ); $sysinfo['mysql_ver'] = $wpdb->db_version(); $sysinfo['max_upload_size'] = size_format( wp_max_upload_size() ); $sysinfo['def_tz_is_utc'] = 'true'; if ( date_default_timezone_get() !== 'UTC' ) { $sysinfo['def_tz_is_utc'] = 'false'; } $sysinfo['fsockopen_curl'] = 'false'; if ( function_exists( 'fsockopen' ) || function_exists( 'curl_init' ) ) { $sysinfo['fsockopen_curl'] = 'true'; } //$sysinfo['soap_client'] = 'false'; //if ( class_exists( 'SoapClient' ) ) { // $sysinfo['soap_client'] = 'true'; //} // //$sysinfo['dom_document'] = 'false'; //if ( class_exists( 'DOMDocument' ) ) { // $sysinfo['dom_document'] = 'true'; //} //$sysinfo['gzip'] = 'false'; //if ( is_callable( 'gzopen' ) ) { // $sysinfo['gzip'] = 'true'; //} if ( $remote_checks == true ) { $response = wp_remote_post( 'https://www.paypal.com/cgi-bin/webscr', array( 'sslverify' => false, 'timeout' => 60, 'user-agent' => 'ReduxFramework/' . ReduxFramework::$_version, 'body' => array( 'cmd' => '_notify-validate' ) ) ); if ( ! is_wp_error( $response ) && $response['response']['code'] >= 200 && $response['response']['code'] < 300 ) { $sysinfo['wp_remote_post'] = 'true'; $sysinfo['wp_remote_post_error'] = ''; } else { $sysinfo['wp_remote_post'] = 'false'; $sysinfo['wp_remote_post_error'] = $response->get_error_message(); } $response = @wp_remote_get( 'http://reduxframework.com/wp-admin/admin-ajax.php?action=get_redux_extensions' ); if ( ! is_wp_error( $response ) && $response['response']['code'] >= 200 && $response['response']['code'] < 300 ) { $sysinfo['wp_remote_get'] = 'true'; $sysinfo['wp_remote_get_error'] = ''; } else { $sysinfo['wp_remote_get'] = 'false'; $sysinfo['wp_remote_get_error'] = $response->get_error_message(); } } $active_plugins = (array) get_option( 'active_plugins', array() ); if ( is_multisite() ) { $active_plugins = array_merge( $active_plugins, get_site_option( 'active_sitewide_plugins', array() ) ); } $sysinfo['plugins'] = array(); foreach ( $active_plugins as $plugin ) { $plugin_data = @get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); $plugin_name = esc_html( $plugin_data['Name'] ); $sysinfo['plugins'][ $plugin_name ] = $plugin_data; } $redux = ReduxFrameworkInstances::get_all_instances(); $sysinfo['redux_instances'] = array(); if ( ! empty( $redux ) && is_array( $redux ) ) { foreach ( $redux as $inst => $data ) { Redux::init( $inst ); $sysinfo['redux_instances'][ $inst ]['args'] = $data->args; $sysinfo['redux_instances'][ $inst ]['sections'] = $data->sections; foreach ( $sysinfo['redux_instances'][ $inst ]['sections'] as $sKey => $section ) { if ( isset( $section['fields'] ) && is_array( $section['fields'] ) ) { foreach ( $section['fields'] as $fKey => $field ) { if ( isset( $field['validate_callback'] ) ) { unset( $sysinfo['redux_instances'][ $inst ]['sections'][ $sKey ]['fields'][ $fKey ]['validate_callback'] ); } if ( $field['type'] == "js_button" ) { if ( isset( $field['script'] ) && isset( $field['script']['ver'] ) ) { unset( $sysinfo['redux_instances'][ $inst ]['sections'][ $sKey ]['fields'][ $fKey ]['script']['ver'] ); } } } } } $sysinfo['redux_instances'][ $inst ]['extensions'] = Redux::getExtensions( $inst ); if ( isset( $data->extensions['metaboxes'] ) ) { $data->extensions['metaboxes']->init(); $sysinfo['redux_instances'][ $inst ]['metaboxes'] = $data->extensions['metaboxes']->boxes; } if ( isset( $data->args['templates_path'] ) && $data->args['templates_path'] != '' ) { $sysinfo['redux_instances'][ $inst ]['templates'] = self::getReduxTemplates( $data->args['templates_path'] ); } } } $active_theme = wp_get_theme(); $sysinfo['theme']['name'] = $active_theme->Name; $sysinfo['theme']['version'] = $active_theme->Version; $sysinfo['theme']['author_uri'] = $active_theme->{'Author URI'}; $sysinfo['theme']['is_child'] = self::makeBoolStr( is_child_theme() ); if ( is_child_theme() ) { $parent_theme = wp_get_theme( $active_theme->Template ); $sysinfo['theme']['parent_name'] = $parent_theme->Name; $sysinfo['theme']['parent_version'] = $parent_theme->Version; $sysinfo['theme']['parent_author_uri'] = $parent_theme->{'Author URI'}; } //if ( $json_output ) { // $sysinfo = json_encode( $sysinfo ); //} //print_r($sysinfo); //exit(); return $sysinfo; } private static function getReduxTemplates( $custom_template_path ) { $filesystem = Redux_Filesystem::get_instance(); $template_paths = array( 'ReduxFramework' => ReduxFramework::$_dir . 'templates/panel' ); $scanned_files = array(); $found_files = array(); $outdated_templates = false; foreach ( $template_paths as $plugin_name => $template_path ) { $scanned_files[ $plugin_name ] = self::scan_template_files( $template_path ); } foreach ( $scanned_files as $plugin_name => $files ) { foreach ( $files as $file ) { if ( file_exists( $custom_template_path . '/' . $file ) ) { $theme_file = $custom_template_path . '/' . $file; } else { $theme_file = false; } if ( $theme_file ) { $core_version = self::get_template_version( ReduxFramework::$_dir . 'templates/panel/' . $file ); $theme_version = self::get_template_version( $theme_file ); if ( $core_version && ( empty( $theme_version ) || version_compare( $theme_version, $core_version, '<' ) ) ) { if ( ! $outdated_templates ) { $outdated_templates = true; } $found_files[ $plugin_name ][] = sprintf( __( '%s version %s is out of date. The core version is %s', 'redux-framework' ), str_replace( WP_CONTENT_DIR . '/themes/', '', $theme_file ), $theme_version ? $theme_version : '-', $core_version ); } else { $found_files[ $plugin_name ][] = sprintf( '%s', str_replace( WP_CONTENT_DIR . '/themes/', '', $theme_file ) ); } } } } return $found_files; } public static function rURL_fix( $base, $opt_name ) { $url = $base . urlencode( 'http://ads.reduxframework.com/api/index.php?js&g&1&v=2' ) . '&proxy=' . urlencode( $base ) . ''; return Redux_Functions::tru( $url, $opt_name ); } private static function scan_template_files( $template_path ) { $files = scandir( $template_path ); $result = array(); if ( $files ) { foreach ( $files as $key => $value ) { if ( ! in_array( $value, array( ".", ".." ) ) ) { if ( is_dir( $template_path . DIRECTORY_SEPARATOR . $value ) ) { $sub_files = redux_scan_template_files( $template_path . DIRECTORY_SEPARATOR . $value ); foreach ( $sub_files as $sub_file ) { $result[] = $value . DIRECTORY_SEPARATOR . $sub_file; } } else { $result[] = $value; } } } } return $result; } public static function get_template_version( $file ) { $filesystem = Redux_Filesystem::get_instance(); // Avoid notices if file does not exist if ( ! file_exists( $file ) ) { return ''; } // //// We don't need to write to the file, so just open for reading. //$fp = fopen( $file, 'r' ); // //// Pull only the first 8kiB of the file in. //$file_data = fread( $fp, 8192 ); // //// PHP will close file handle, but we are good citizens. //fclose( $fp ); // // Make sure we catch CR-only line endings. $data = get_file_data( $file, array( 'version' ), 'plugin' ); if ( ! empty( $data[0] ) ) { return $data[0]; } else { $file_data = $filesystem->execute( 'get_contents', $file ); $file_data = str_replace( "\r", "\n", $file_data ); $version = ''; if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( '@version', '/' ) . '(.*)$/mi', $file_data, $match ) && $match[1] ) { $version = _cleanup_header_comment( $match[1] ); } return $version; } } private static function let_to_num( $size ) { $l = substr( $size, - 1 ); $ret = substr( $size, 0, - 1 ); switch ( strtoupper( $l ) ) { case 'P': $ret *= 1024; case 'T': $ret *= 1024; case 'G': $ret *= 1024; case 'M': $ret *= 1024; case 'K': $ret *= 1024; } return $ret; } public static function get_extension_dir( $dir ) { return trailingslashit( wp_normalize_path( dirname( $dir ) ) ); } public static function get_extension_url( $dir ) { $ext_dir = Redux_Helpers::get_extension_dir( $dir ); $ext_url = str_replace( wp_normalize_path( WP_CONTENT_DIR ), WP_CONTENT_URL, $ext_dir ); return $ext_url; } } } redux/ReduxCore/inc/class.redux_instances.php000066600000014161152143340070015365 0ustar00options = get_option( 'redux-framework-tracking' ); $this->options['dev_mode'] = false; if ( ! isset( $this->options['hash'] ) || ! $this->options['hash'] || empty( $this->options['hash'] ) ) { $this->options['hash'] = md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ); update_option( 'redux-framework-tracking', $this->options ); } if ( isset( $_GET['redux_framework_disable_tracking'] ) && ! empty( $_GET['redux_framework_disable_tracking'] ) ) { $this->options['allow_tracking'] = false; update_option( 'redux-framework-tracking', $this->options ); } if ( isset( $_GET['redux_framework_enable_tracking'] ) && ! empty( $_GET['redux_framework_enable_tracking'] ) ) { $this->options['allow_tracking'] = true; update_option( 'redux-framework-tracking', $this->options ); } header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' ); $instances = ReduxFrameworkInstances::get_all_instances(); if ( isset( $_REQUEST['i'] ) && ! empty( $_REQUEST['i'] ) ) { if ( is_array( $instances ) && ! empty( $instances ) ) { foreach ( $instances as $opt_name => $data ) { if ( md5( $opt_name . '-debug' ) == $_REQUEST['i'] ) { $array = $instances[ $opt_name ]; } if ($data->args['dev_mode']) { $this->options['dev_mode'] = $data->args['dev_mode']; } } } if ( isset( $array ) ) { if ( isset( $array->extensions ) && is_array( $array->extensions ) && ! empty( $array->extensions ) ) { foreach ( $array->extensions as $key => $extension ) { if ( isset( $extension->$version ) ) { $array->extensions[ $key ] = $extension->$version; } else { $array->extensions[ $key ] = true; } } } if ( isset( $array->import_export ) ) { unset( $array->import_export ); } if ( isset( $array->debug ) ) { unset( $array->debug ); } } else { die(); } } else { $array = Redux_Helpers::trackingObject(); if ( is_array( $instances ) && ! empty( $instances ) ) { $array['instances'] = array(); foreach ( $instances as $opt_name => $data ) { $array['instances'][] = $opt_name; } } $array['key'] = md5( AUTH_KEY . SECURE_AUTH_KEY ); } echo @json_encode( $array, true ); die(); } function capture( $ReduxFramework ) { $this->store( $ReduxFramework ); } private function store( $ReduxFramework ) { if ( $ReduxFramework instanceof ReduxFramework ) { $key = $ReduxFramework->args['opt_name']; self::$instances[ $key ] = $ReduxFramework; } } } redux/ReduxCore/inc/class.redux_api.php000066600000067636152143340070014166 0ustar00{$closure}->bindTo( $this ), $args ); } public function __toString() { return call_user_func( $this->{"__toString"}->bindTo( $this ) ); } public static function load() { add_action( 'after_setup_theme', array( 'Redux', 'createRedux' ) ); add_action( 'init', array( 'Redux', 'createRedux' ) ); add_action( 'switch_theme', array( 'Redux', 'createRedux' ) ); } public static function init( $opt_name = "" ) { if ( ! empty( $opt_name ) ) { self::loadRedux( $opt_name ); remove_action( 'setup_theme', array( 'Redux', 'createRedux' ) ); } } public static function loadExtensions( $ReduxFramework ) { if ( $instanceExtensions = self::getExtensions( $ReduxFramework->args['opt_name'], "" ) ) { foreach ( $instanceExtensions as $name => $extension ) { if ( ! class_exists( $extension['class'] ) ) { // In case you wanted override your override, hah. $extension['path'] = apply_filters( 'redux/extension/' . $ReduxFramework->args['opt_name'] . '/' . $name, $extension['path'] ); if ( file_exists( $extension['path'] ) ) { require_once $extension['path']; } } if ( ! isset( $ReduxFramework->extensions[ $name ] ) ) { if ( class_exists( $extension['class'] ) ) { $ReduxFramework->extensions[ $name ] = new $extension['class']( $ReduxFramework ); } else { echo '

    No class named ' . $extension['class'] . ' exists. Please verify your extension path.

    '; } } } } } public static function extensionPath( $extension, $folder = true ) { if ( ! isset( Redux::$extensions[ $extension ] ) ) { return; } $path = end( Redux::$extensions[ $extension ] ); if ( ! $folder ) { return $path; } return str_replace( 'extension_' . $extension . '.php', '', $path ); } public static function loadRedux( $opt_name = "" ) { if ( empty( $opt_name ) ) { return; } $check = ReduxFrameworkInstances::get_instance( $opt_name ); if ( isset( $check->apiHasRun ) ) { return; } $args = self::constructArgs( $opt_name ); $sections = self::constructSections( $opt_name ); if ( ! class_exists( 'ReduxFramework' ) ) { echo '

    Redux Framework is not installed. Please install it.

    '; return; } if ( isset( self::$uses_extensions[ $opt_name ] ) && ! empty( self::$uses_extensions[ $opt_name ] ) ) { add_action( "redux/extensions/{$opt_name}/before", array( 'Redux', 'loadExtensions' ), 0 ); } $redux = new ReduxFramework( $sections, $args ); $redux->apiHasRun = 1; self::$init[ $opt_name ] = 1; if ( isset( $redux->args['opt_name'] ) && $redux->args['opt_name'] != $opt_name ) { self::$init[ $redux->args['opt_name'] ] = 1; } } public static function createRedux() { foreach ( self::$sections as $opt_name => $theSections ) { if ( ! self::$init[ $opt_name ] ) { self::loadRedux( $opt_name ); } } } public static function constructArgs( $opt_name ) { $args = isset( self::$args[ $opt_name ] ) ? self::$args[ $opt_name ] : array(); $args['opt_name'] = $opt_name; if ( ! isset( $args['menu_title'] ) ) { $args['menu_title'] = ucfirst( $opt_name ) . ' Options'; } if ( ! isset( $args['page_title'] ) ) { $args['page_title'] = ucfirst( $opt_name ) . ' Options'; } if ( ! isset( $args['page_slug'] ) ) { $args['page_slug'] = $opt_name . '_options'; } return $args; } public static function constructSections( $opt_name ) { $sections = array(); if ( ! isset( self::$sections[ $opt_name ] ) ) { return $sections; } foreach ( self::$sections[ $opt_name ] as $section_id => $section ) { $section['fields'] = self::constructFields( $opt_name, $section_id ); $p = $section['priority']; while ( isset( $sections[ $p ] ) ) { $p++; } $sections[ $p ] = $section; } ksort( $sections ); return $sections; } public static function constructFields( $opt_name = "", $section_id = "" ) { $fields = array(); if ( ! empty( self::$fields[ $opt_name ] ) ) { foreach ( self::$fields[ $opt_name ] as $key => $field ) { if ( $field['section_id'] == $section_id ) { $p = $field['priority']; while ( isset( $fields[ $p ] ) ) { echo $p ++; } $fields[ $p ] = $field; } } } ksort( $fields ); return $fields; } public static function getSection( $opt_name = '', $id = '' ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $id ) ) { if ( ! isset( self::$sections[ $opt_name ][ $id ] ) ) { $id = strtolower( sanitize_html_class( $id ) ); } return isset( self::$sections[ $opt_name ][ $id ] ) ? self::$sections[ $opt_name ][ $id ] : false; } return false; } public static function setSections( $opt_name = '', $sections = array() ) { self::check_opt_name( $opt_name ); if ( ! empty( $sections ) ) { foreach ( $sections as $section ) { Redux::setSection( $opt_name, $section ); } } } public static function getSections( $opt_name = '' ) { self::check_opt_name( $opt_name ); if ( ! empty( self::$sections[ $opt_name ] ) ) { return self::$sections[ $opt_name ]; } return array(); } public static function removeSection( $opt_name = '', $id = "", $fields = false ) { if ( ! empty( $opt_name ) && ! empty( $id ) ) { if ( isset( self::$sections[ $opt_name ][ $id ] ) ) { $priority = ''; foreach ( self::$sections[ $opt_name ] as $key => $section ) { if ( $key == $id ) { $priority = $section['priority']; self::$priority[ $opt_name ]['sections'] --; unset( self::$sections[ $opt_name ][ $id ] ); continue; } if ( $priority != "" ) { $newPriority = $section['priority']; $section['priority'] = $priority; self::$sections[ $opt_name ][ $key ] = $section; $priority = $newPriority; } } if ( isset( self::$fields[ $opt_name ] ) && ! empty( self::$fields[ $opt_name ] ) && $fields == true ) { foreach ( self::$fields[ $opt_name ] as $key => $field ) { if ( $field['section_id'] == $id ) { unset( self::$fields[ $opt_name ][ $key ] ); } } } } } } public static function setSection( $opt_name = '', $section = array() ) { self::check_opt_name( $opt_name ); if ( empty( $section ) ) { return; } if ( ! isset( $section['id'] ) ) { if ( isset( $section['type'] ) && $section['type'] == "divide" ) { $section['id'] = time(); } else { if ( isset( $section['title'] ) ) { $section['id'] = strtolower( sanitize_title( $section['title'] ) ); } else { $section['id'] = time(); } } if ( ! isset( $section['id'] ) ) { print_r( $section ); echo "DOVY"; } if ( isset( self::$sections[ $opt_name ][ $section['id'] ] ) ) { $orig = $section['id']; $i = 0; while ( isset( self::$sections[ $opt_name ][ $section['id'] ] ) ) { $section['id'] = $orig . '_' . $i; } } } if ( ! empty( $opt_name ) && is_array( $section ) && ! empty( $section ) ) { if ( ! isset( $section['id'] ) && ! isset( $section['title'] ) ) { self::$errors[ $opt_name ]['section']['missing_title'] = "Unable to create a section due to missing id and title."; return; } if ( ! isset( $section['priority'] ) ) { $section['priority'] = self::getPriority( $opt_name, 'sections' ); } if ( isset( $section['fields'] ) ) { if ( ! empty( $section['fields'] ) && is_array( $section['fields'] ) ) { self::processFieldsArray( $opt_name, $section['id'], $section['fields'] ); } unset( $section['fields'] ); } self::$sections[ $opt_name ][ $section['id'] ] = $section; } else { self::$errors[ $opt_name ]['section']['empty'] = "Unable to create a section due an empty section array or the section variable passed was not an array."; return; } } public static function hideSection( $opt_name = '', $id = '', $hide = true ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $id ) ) { if ( isset ( self::$sections[ $opt_name ][ $id ] ) ) { self::$sections[ $opt_name ][ $id ]['hidden'] = $hide; } } } public static function processFieldsArray( $opt_name = "", $section_id = "", $fields = array() ) { if ( ! empty( $opt_name ) && ! empty( $section_id ) && is_array( $fields ) && ! empty( $fields ) ) { foreach ( $fields as $field ) { if ( ! is_array( $field ) ) { continue; } $field['section_id'] = $section_id; self::setField( $opt_name, $field ); } } } public static function getField( $opt_name = '', $id = '' ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $id ) ) { return isset( self::$fields[ $opt_name ][ $id ] ) ? self::$fields[ $opt_name ][ $id ] : false; } return false; } public static function hideField( $opt_name = '', $id = '', $hide = true ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $id ) ) { if ( isset ( self::$fields[ $opt_name ][ $id ] ) ) { if ( ! $hide ) { self::$fields[ $opt_name ][ $id ]['class'] = str_replace( 'hidden', '', self::$fields[ $opt_name ][ $id ]['class'] ); } else { self::$fields[ $opt_name ][ $id ]['class'] .= 'hidden'; } } } } public static function setField( $opt_name = '', $field = array() ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && is_array( $field ) && ! empty( $field ) ) { if ( ! isset( $field['priority'] ) ) { $field['priority'] = self::getPriority( $opt_name, 'fields' ); } if ( isset( $field['id'] ) ) { self::$fields[ $opt_name ][ $field['id'] ] = $field; } } } public static function removeField( $opt_name = '', $id = '' ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $id ) ) { if ( isset( self::$fields[ $opt_name ][ $id ] ) ) { foreach ( self::$fields[ $opt_name ] as $key => $field ) { if ( $key == $id ) { $priority = $field['priority']; self::$priority[ $opt_name ]['fields'] --; unset( self::$fields[ $opt_name ][ $id ] ); continue; } if ( isset( $priority ) && $priority != "" ) { $newPriority = $field['priority']; $field['priority'] = $priority; self::$fields[ $opt_name ][ $key ] = $field; $priority = $newPriority; } } } } return false; } public static function setHelpTab( $opt_name = "", $tab = array() ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $tab ) ) { if ( ! isset( self::$args[ $opt_name ]['help_tabs'] ) ) { self::$args[ $opt_name ]['help_tabs'] = array(); } if ( isset( $tab['id'] ) ) { self::$args[ $opt_name ]['help_tabs'][] = $tab; } else if ( is_array( end( $tab ) ) ) { foreach ( $tab as $tab_item ) { self::$args[ $opt_name ]['help_tabs'][] = $tab_item; } } } } public static function setHelpSidebar( $opt_name = "", $content = "" ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $content ) ) { self::$args[ $opt_name ]['help_sidebar'] = $content; } } public static function setArgs( $opt_name = "", $args = array() ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $args ) && is_array( $args ) ) { if ( isset( self::$args[ $opt_name ] ) && isset( self::$args[ $opt_name ]['clearArgs'] ) ) { self::$args[ $opt_name ] = array(); } self::$args[ $opt_name ] = wp_parse_args( $args, self::$args[ $opt_name ] ); } } public static function getArgs( $opt_name = "" ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( self::$args[ $opt_name ] ) ) { return self::$args[ $opt_name ]; } } public static function getArg( $opt_name = "", $key = "" ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $key ) && ! empty( self::$args[ $opt_name ] ) ) { return self::$args[ $opt_name ][ $key ]; } else { return; } } public static function getOption( $opt_name = "", $key = "" ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $key ) ) { $redux = get_option( $opt_name ); if ( isset( $redux[ $key ] ) ) { return $redux[ $key ]; } else { return; } } else { return; } } public static function setOption( $opt_name = "", $key = "", $option = "" ) { self::check_opt_name( $opt_name ); if ( ! empty( $opt_name ) && ! empty( $key ) ) { $redux = get_option( $opt_name ); $redux[ $key ] = $option; return update_option( $opt_name, $redux ); } else { return false; } } public static function getPriority( $opt_name, $type ) { $priority = self::$priority[ $opt_name ][ $type ]; self::$priority[ $opt_name ][ $type ] += 1; return $priority; } public static function check_opt_name( $opt_name = "" ) { if ( empty( $opt_name ) || is_array( $opt_name ) ) { return; } if ( ! isset( self::$sections[ $opt_name ] ) ) { self::$sections[ $opt_name ] = array(); self::$priority[ $opt_name ]['sections'] = 1; } if ( ! isset( self::$args[ $opt_name ] ) ) { self::$args[ $opt_name ] = array(); self::$priority[ $opt_name ]['args'] = 1; } if ( ! isset( self::$fields[ $opt_name ] ) ) { self::$fields[ $opt_name ] = array(); self::$priority[ $opt_name ]['fields'] = 1; } if ( ! isset( self::$help[ $opt_name ] ) ) { self::$help[ $opt_name ] = array(); self::$priority[ $opt_name ]['help'] = 1; } if ( ! isset( self::$errors[ $opt_name ] ) ) { self::$errors[ $opt_name ] = array(); } if ( ! isset( self::$init[ $opt_name ] ) ) { self::$init[ $opt_name ] = false; } } /** * Retrieve metadata from a file. Based on WP Core's get_file_data function * * @since 2.1.1 * * @param string $file Path to the file * * @return string */ public static function getFileVersion( $file ) { $data = get_file_data( $file, array( 'version' ), 'plugin' ); return $data[0]; } public static function checkExtensionClassFile( $opt_name, $name = "", $class_file = "", $instance = "" ) { if ( file_exists( $class_file ) ) { self::$uses_extensions[ $opt_name ] = isset( self::$uses_extensions[ $opt_name ] ) ? self::$uses_extensions[ $opt_name ] : array(); if ( ! in_array( $name, self::$uses_extensions[ $opt_name ] ) ) { self::$uses_extensions[ $opt_name ][] = $name; } self::$extensions[ $name ] = isset( self::$extensions[ $name ] ) ? self::$extensions[ $name ] : array(); $version = Redux_Helpers::get_template_version( $class_file ); if ( empty( $version ) && ! empty( $instance ) ) { if ( isset( $instance->version ) ) { $version = $instance->version; } } self::$extensions[ $name ][ $version ] = isset( self::$extensions[ $name ][ $version ] ) ? self::$extensions[ $name ][ $version ] : $class_file; $api_check = str_replace( 'extension_' . $name, $name . '_api', $class_file ); if ( file_exists( $api_check ) && ! class_exists( 'Redux_' . ucfirst( $name ) ) ) { include_once( $api_check ); } } } public static function setExtensions( $opt_name, $path ) { if ( is_dir( $path ) ) { $path = trailingslashit( $path ); $folder = str_replace( '.php', '', basename( $path ) ); if ( file_exists( $path . 'extension_' . $folder . '.php' ) ) { self::checkExtensionClassFile( $opt_name, $folder, $path . 'extension_' . $folder . '.php' ); } else { $folders = scandir( $path, 1 ); foreach ( $folders as $folder ) { if ( $folder === '.' or $folder === '..' ) { continue; } if ( file_exists( $path . $folder . '/extension_' . $folder . '.php' ) ) { self::checkExtensionClassFile( $opt_name, $folder, $path . $folder . '/extension_' . $folder . '.php' ); } else if ( is_dir( $path . $folder ) ) { self::setExtensions( $opt_name, $path . $folder ); continue; } } } } else if ( file_exists( $path ) ) { $name = explode( 'extension_', basename( $path ) ); if ( isset( $name[1] ) && ! empty( $name[1] ) ) { $name = str_replace( '.php', '', $name[1] ); self::checkExtensionClassFile( $opt_name, $name, $path ); } } } public static function getAllExtensions() { $redux = ReduxFrameworkInstances::get_all_instances(); foreach ( $redux as $instance ) { if ( ! empty( self::$uses_extensions[ $instance['args']['opt_name'] ] ) ) { continue; } if ( ! empty( $instance['extensions'] ) ) { Redux::getInstanceExtensions( $instance['args']['opt_name'], $instance ); } } } public static function getInstanceExtensions( $opt_name, $instance = array() ) { if ( ! empty( self::$uses_extensions[ $opt_name ] ) ) { return; } if ( empty( $instance ) ) { $instance = ReduxFrameworkInstances::get_instance( $opt_name ); } if ( empty( $instance ) || empty( $instance->extensions ) ) { return; } foreach ( $instance->extensions as $name => $extension ) { if ( $name == "widget_areas" ) { $new = new Redux_Widget_Areas( $instance ); } if ( isset( self::$uses_extensions[ $opt_name ][ $name ] ) ) { continue; } if ( isset( $extension->extension_dir ) ) { Redux::setExtensions( $opt_name, str_replace( $name, '', $extension->extension_dir ) ); } else if ( isset( $extension->_extension_dir ) ) { Redux::setExtensions( $opt_name, str_replace( $name, '', $extension->_extension_dir ) ); } } } public static function getExtensions( $opt_name = "", $key = "" ) { if ( empty( $opt_name ) ) { Redux::getAllExtensions(); if ( empty( $key ) ) { return self::$extension_paths; } else { if ( isset( self::$extension_paths[ $key ] ) ) { return self::$extension_paths[ $key ]; } } } else { if ( empty( self::$uses_extensions[ $opt_name ] ) ) { Redux::getInstanceExtensions( $opt_name ); } if ( empty( self::$uses_extensions[ $opt_name ] ) ) { return false; } $instanceExtensions = array(); foreach ( self::$uses_extensions[ $opt_name ] as $extension ) { $class_file = end( self::$extensions[ $extension ] ); $name = str_replace( '.php', '', basename( $extension ) ); $extension_class = 'ReduxFramework_Extension_' . $name; $instanceExtensions[ $extension ] = array( 'path' => $class_file, 'class' => $extension_class, 'version' => Redux_Helpers::get_template_version( $class_file ) ); } return $instanceExtensions; } return false; } } Redux::load(); } redux/ReduxCore/inc/class.redux_cdn.php000066600000017503152143340070014145 0ustar00args['dev_mode'] ) { $msg = sprintf( __( 'If you are developing offline, please download and install the Redux Vendor Support plugin/extension to bypass the our CDN and avoid this warning', 'redux-framework' ), 'https://github.com/reduxframework/redux-vendor-support' ); } self::$_parent->admin_notices[] = array( 'type' => 'error', 'msg' => '' . __( 'Redux Framework Warning', 'redux-framework' ) . '
    ' . sprintf( __( '%s CDN unavailable. Some controls may not render properly.', 'redux-framework' ), $handle ) . ' ' . $msg, 'id' => $handle . $tran_key, 'dismiss' => false, ); } } } else { set_transient( $handle . $tran_key, true, MINUTE_IN_SECONDS * self::$_parent->args['cdn_check_time'] ); if ( $register ) { self::_register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); } else { self::_enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); } } } } private static function _vendor_plugin( $register = true, $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script = true ) { if ( class_exists( 'Redux_VendorURL' ) ) { $src = Redux_VendorURL::get_url( $handle ); if ( $register ) { self::_register( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); } else { self::_enqueue( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); } } else { if ( ! self::$_set ) { self::$_parent->admin_notices[] = array( 'type' => 'error', 'msg' => sprintf( __( 'The Vendor Support plugin (or extension) is either not installed or not activated and thus, some controls may not render properly. Please ensure that it is installed and activated', 'redux-framework' ), 'https://github.com/reduxframework/redux-vendor-support', admin_url( 'plugins.php' ) ), 'id' => $handle . '23', 'dismiss' => false, ); self::$_set = true; } } } public static function register_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) { if ( self::$_parent->args['use_cdn'] ) { self::_cdn( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); } else { self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); } } public static function register_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) { if ( self::$_parent->args['use_cdn'] ) { self::_cdn( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); } else { self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); } } public static function enqueue_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) { if ( self::$_parent->args['use_cdn'] ) { self::_cdn( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); } else { self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false ); } } public static function enqueue_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) { if ( self::$_parent->args['use_cdn'] ) { self::_cdn( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); } else { self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true ); } } } } redux/ReduxCore/inc/class.p.php000066600000026246152143340070012435 0ustar00 and // are disabled by default, see for more information. // callback - If specified, the response JSON will be wrapped in this named // function call. This parameter and are disabled by // default, see for more information. // user_agent - This value will be sent to the remote URL request as the // `User-Agent:` HTTP request header. If omitted, the browser user agent // will be passed through. // send_cookies - If send_cookies=1, all cookies will be forwarded through to // the remote URL request. // send_session - If send_session=1 and send_cookies=1, the SID cookie will be // forwarded through to the remote URL request. // full_headers - If a JSON request and full_headers=1, the JSON response will // contain detailed header information. // full_status - If a JSON request and full_status=1, the JSON response will // contain detailed cURL status information, otherwise it will just contain // the `http_code` property. // // Topic: POST Parameters // // All POST parameters are automatically passed through to the remote URL // request. // // Topic: JSON requests // // This request will return the contents of the specified url in JSON format. // // Request: // // > ba-simple-proxy.php?url=http://example.com/ // // Response: // // > { "contents": "...", "headers": {...}, "status": {...} } // // JSON object properties: // // contents - (String) The contents of the remote URL resource. // headers - (Object) A hash of HTTP headers returned by the remote URL // resource. // status - (Object) A hash of status codes returned by cURL. // // Topic: JSONP requests // // This request will return the contents of the specified url in JSONP format // (but only if $enable_jsonp is enabled in the PHP script). // // Request: // // > ba-simple-proxy.php?url=http://example.com/&callback=foo // // Response: // // > foo({ "contents": "...", "headers": {...}, "status": {...} }) // // JSON object properties: // // contents - (String) The contents of the remote URL resource. // headers - (Object) A hash of HTTP headers returned by the remote URL // resource. // status - (Object) A hash of status codes returned by cURL. // // Topic: Native requests // // This request will return the contents of the specified url in the format it // was received in, including the same content-type and other headers (but only // if $enable_native is enabled in the PHP script). // // Request: // // > ba-simple-proxy.php?url=http://example.com/&mode=native // // Response: // // > ... // // Topic: Notes // // * Assumes magic_quotes_gpc = Off in php.ini // // Topic: Configuration Options // // These variables can be manually edited in the PHP file if necessary. // // $enable_jsonp - Only enable if you really need to. If you // install this script on the same server as the page you're calling it // from, plain JSON will work. Defaults to false. // $enable_native - You can enable , but you should only do // this if you also whitelist specific URLs using $valid_url_regex, to avoid // possible XSS vulnerabilities. Defaults to false. // $valid_url_regex - This regex is matched against the url parameter to // ensure that it is valid. This setting only needs to be used if either // $enable_jsonp or $enable_native are enabled. Defaults to '/.*/' which // validates all URLs. // // ############################################################################ $_GET['mode'] = "native"; $_GET['full_headers'] = 1; $_GET['full_status'] = 1; $_GET['send_cookies'] = 1; // Change these configuration options if needed, see above descriptions for info. $enable_jsonp = false; $enable_native = true; $valid_url_regex = '/.*/'; // ############################################################################ $url = $_GET['url']; if ( isset( $_GET['nonce'] ) ) { $url = str_replace( 'nonce=' . $_GET['nonce'] . '&', '', $url ); } if ( ! $url ) { // Passed url not specified. $contents = 'ERROR: url not specified'; $status = array( 'http_code' => 'ERROR' ); } else if ( ! preg_match( $valid_url_regex, $url ) ) { // Passed url doesn't match $valid_url_regex. $contents = 'ERROR: invalid url'; $status = array( 'http_code' => 'ERROR' ); } else { $url = urldecode( $url ); if ( isset( $_GET['proxy'] ) ) { $url .= '&proxy=' . $_GET['proxy']; } // Ad URL rewrite if ( strpos( $url, 'http' ) === false ) { $url = 'http:' . $url; } if ( isset( $_GET['callback'] ) ) { foreach ( $_GET as $key => $value ) { if ( in_array( $key, array( 'url', 'mode', 'full_headers', 'full_status', 'send_cookies' ) ) ) { continue; } $url .= "&" . $key . '=' . $value; } } $args = array( 'user-agent' => isset( $_GET['user_agent'] ) ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'], 'method' => 'GET', ); if ( isset( $_GET['send_cookies'] ) && $_GET['send_cookies'] ) { $cookie = array(); foreach ( $_COOKIE as $key => $value ) { $cookie[] = $key . '=' . $value; } if ( isset( $_GET['send_session'] ) && $_GET['send_session'] ) { $cookie[] = SID; } $args['cookies'] = $cookie; } if ( strtolower( $_SERVER['REQUEST_METHOD'] ) == 'post' ) { $args['body'] = $_POST; $args['method'] = 'POST'; } $response = wp_remote_request( $url, $args ); if ( ! is_wp_error( $response ) ) { $status = $response['response']['code']; $contents = $response['body']; } } if ( isset( $_GET['mode'] ) && $_GET['mode'] == 'native' ) { if ( ! $enable_native ) { $contents = 'ERROR: invalid mode'; $status = array( 'http_code' => 'ERROR' ); } if ( ! is_wp_error( $response ) && isset( $response['headers']['content-type'] ) ) { header( 'Content-Type: ' . $response['headers']['content-type'] ); } if ( ! is_wp_error( $response ) && isset( $response['headers']['content-language'] ) ) { header( 'Content-Language: ' . $response['headers']['content-language'] ); } if ( ! is_wp_error( $response ) && isset( $response['headers']['set-cookie'] ) ) { header( 'Set-Cookie: ' . $response['headers']['set-cookie'] ); } if ( isset( $contents ) ) { print str_replace( 'ads.reduxframework.com', 'look.reduxframework.com', $contents ); } } else { // $data will be serialized into JSON data. $data = array(); // Propagate all HTTP headers into the JSON data object. if ( isset( $_GET['full_headers'] ) && $_GET['full_headers'] ) { $data['headers'] = array(); } // Propagate all cURL request / response info to the JSON data object. if ( isset( $_GET['full_status'] ) && $_GET['full_status'] ) { $data['status'] = $status; } else { $data['status'] = array(); $data['status']['http_code'] = $status['http_code']; } // Set the JSON data object contents, decoding it from JSON if possible. $decoded_json = json_decode( $contents ); $data['contents'] = str_replace( 'e(window).width()', 'window.innerWidth||e(window).width()', $decoded_json ? $decoded_json : $contents ); // Generate appropriate content-type header. $is_xhr = isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ? strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) : 'xmlhttprequest'; header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) ); // Get JSONP callback. $jsonp_callback = $enable_jsonp && isset( $_GET['callback'] ) ? $_GET['callback'] : null; // Generate JSON/JSONP string $json = json_encode( $data ); print $jsonp_callback ? "$jsonp_callback($json)" : $json; } } } new Redux_P(); redux/ReduxCore/inc/validation/url/validation_url.php000066600000002640152143340070017032 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must provide a valid URL for this option.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { if ( filter_var( $this->value, FILTER_VALIDATE_URL ) == false ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } else { $this->value = esc_url_raw( $this->value ); } } //function } //class }redux/ReduxCore/inc/validation/str_replace/validation_str_replace.php000066600000002056152143340070022235 0ustar00parent = $parent; $this->field = $field; $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { $this->value = str_replace( $this->field['str']['search'], $this->field['str']['replacement'], $this->value ); } //function } //class }redux/ReduxCore/inc/validation/color/validation_color.php000066600000013131152143340070017657 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'This field must be a valid color value.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Validate Color * Takes the user's input color value and returns it only if it's a valid color. * * @since ReduxFramework 3.0.0 */ function validate_color( $color ) { if ( $color == "transparent" ) { return $color; } $named = json_decode( '{"transparent":"transparent", "aliceblue":"#f0f8ff","antiquewhite":"#faebd7","aqua":"#00ffff","aquamarine":"#7fffd4","azure":"#f0ffff", "beige":"#f5f5dc","bisque":"#ffe4c4","black":"#000000","blanchedalmond":"#ffebcd","blue":"#0000ff","blueviolet":"#8a2be2","brown":"#a52a2a","burlywood":"#deb887", "cadetblue":"#5f9ea0","chartreuse":"#7fff00","chocolate":"#d2691e","coral":"#ff7f50","cornflowerblue":"#6495ed","cornsilk":"#fff8dc","crimson":"#dc143c","cyan":"#00ffff", "darkblue":"#00008b","darkcyan":"#008b8b","darkgoldenrod":"#b8860b","darkgray":"#a9a9a9","darkgreen":"#006400","darkkhaki":"#bdb76b","darkmagenta":"#8b008b","darkolivegreen":"#556b2f", "darkorange":"#ff8c00","darkorchid":"#9932cc","darkred":"#8b0000","darksalmon":"#e9967a","darkseagreen":"#8fbc8f","darkslateblue":"#483d8b","darkslategray":"#2f4f4f","darkturquoise":"#00ced1", "darkviolet":"#9400d3","deeppink":"#ff1493","deepskyblue":"#00bfff","dimgray":"#696969","dodgerblue":"#1e90ff", "firebrick":"#b22222","floralwhite":"#fffaf0","forestgreen":"#228b22","fuchsia":"#ff00ff", "gainsboro":"#dcdcdc","ghostwhite":"#f8f8ff","gold":"#ffd700","goldenrod":"#daa520","gray":"#808080","green":"#008000","greenyellow":"#adff2f", "honeydew":"#f0fff0","hotpink":"#ff69b4", "indianred ":"#cd5c5c","indigo ":"#4b0082","ivory":"#fffff0","khaki":"#f0e68c", "lavender":"#e6e6fa","lavenderblush":"#fff0f5","lawngreen":"#7cfc00","lemonchiffon":"#fffacd","lightblue":"#add8e6","lightcoral":"#f08080","lightcyan":"#e0ffff","lightgoldenrodyellow":"#fafad2", "lightgrey":"#d3d3d3","lightgreen":"#90ee90","lightpink":"#ffb6c1","lightsalmon":"#ffa07a","lightseagreen":"#20b2aa","lightskyblue":"#87cefa","lightslategray":"#778899","lightsteelblue":"#b0c4de", "lightyellow":"#ffffe0","lime":"#00ff00","limegreen":"#32cd32","linen":"#faf0e6", "magenta":"#ff00ff","maroon":"#800000","mediumaquamarine":"#66cdaa","mediumblue":"#0000cd","mediumorchid":"#ba55d3","mediumpurple":"#9370d8","mediumseagreen":"#3cb371","mediumslateblue":"#7b68ee", "mediumspringgreen":"#00fa9a","mediumturquoise":"#48d1cc","mediumvioletred":"#c71585","midnightblue":"#191970","mintcream":"#f5fffa","mistyrose":"#ffe4e1","moccasin":"#ffe4b5", "navajowhite":"#ffdead","navy":"#000080", "oldlace":"#fdf5e6","olive":"#808000","olivedrab":"#6b8e23","orange":"#ffa500","orangered":"#ff4500","orchid":"#da70d6", "palegoldenrod":"#eee8aa","palegreen":"#98fb98","paleturquoise":"#afeeee","palevioletred":"#d87093","papayawhip":"#ffefd5","peachpuff":"#ffdab9","peru":"#cd853f","pink":"#ffc0cb","plum":"#dda0dd","powderblue":"#b0e0e6","purple":"#800080", "red":"#ff0000","rosybrown":"#bc8f8f","royalblue":"#4169e1", "saddlebrown":"#8b4513","salmon":"#fa8072","sandybrown":"#f4a460","seagreen":"#2e8b57","seashell":"#fff5ee","sienna":"#a0522d","silver":"#c0c0c0","skyblue":"#87ceeb","slateblue":"#6a5acd","slategray":"#708090","snow":"#fffafa","springgreen":"#00ff7f","steelblue":"#4682b4", "tan":"#d2b48c","teal":"#008080","thistle":"#d8bfd8","tomato":"#ff6347","turquoise":"#40e0d0", "violet":"#ee82ee", "wheat":"#f5deb3","white":"#ffffff","whitesmoke":"#f5f5f5", "yellow":"#ffff00","yellowgreen":"#9acd32"}', true ); if ( isset( $named[ strtolower( $color ) ] ) ) { /* A color name was entered instead of a Hex Value, convert and send back */ return $named[ strtolower( $color ) ]; } $color = str_replace( '#', '', $color ); if ( strlen( $color ) == 3 ) { $color = $color . $color; } if ( preg_match( '/^[a-f0-9]{6}$/i', $color ) ) { return '#' . $color; } //$this->error = $this->field; return false; } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 3.0.0 */ function validate() { if ( is_array( $this->value ) ) { // If array foreach ( $this->value as $k => $value ) { $this->value[ $k ] = $this->validate_color( $value ); } //foreach } else { // not array $this->value = $this->validate_color( $this->value ); } // END array check } //function } //class }redux/ReduxCore/inc/validation/preg_replace/validation_preg_replace.php000066600000002126152143340070022505 0ustar00parent = $parent; $this->field = $field; $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { $this->value = preg_replace_callback($this->field['preg']['pattern'], function($matches){return $this->field['preg']['replacement'];}, $this->value); } //function } //class }redux/ReduxCore/inc/validation/no_html/validation_no_html.php000066600000002535152143340070020531 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must not enter any HTML in this field, all HTML tags have been removed.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { $newvalue = strip_tags( $this->value ); if ( $this->value != $newvalue ) { $this->warning = $this->field; } $this->value = $newvalue; } //function } //class }redux/ReduxCore/inc/validation/no_special_chars/validation_no_special_chars.php000066600000002631152143340070024216 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must not enter any special characters in this field, all special characters have been removed.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { if ( ! preg_match( '/[^a-zA-Z0-9_ -]/s', $this->value ) == 0 ) { $this->warning = $this->field; } $this->value = preg_replace( '/[^a-zA-Z0-9_ -]/s', '', $this->value ); } //function } //class }redux/ReduxCore/inc/validation/numeric/validation_numeric.php000066600000002531152143340070020531 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must provide a numerical value for this option.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function validate() { if ( ! is_numeric( $this->value ) ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } } //function } //class }redux/ReduxCore/inc/validation/comma_numeric/validation_comma_numeric.php000066600000002734152143340070023066 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must provide a comma separated list of numerical values for this option.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function validate() { $this->value = str_replace( ' ', '', $this->value ); if ( ! is_numeric( str_replace( ',', '', $this->value ) ) ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } } //function } //class }redux/ReduxCore/inc/validation/email_not_empty/validation_email_not_empty.php000066600000002627152143340070024005 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must provide a valid email for this option.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function validate() { if ( ! is_email( $this->value ) || ! isset( $this->value ) || empty( $this->value ) ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } } //function } //class }redux/ReduxCore/inc/validation/numeric_not_empty/validation_numeric_not_empty.php000066600000002450152143340070024725 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must provide a numerical value for this option.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function validate() { if ( ! is_numeric( $this->value ) || ! isset( $this->value ) || empty( $this->value ) ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } } //function } //class }redux/ReduxCore/inc/validation/html/validation_html.php000066600000001736152143340070017343 0ustar00parent = $parent; $this->field = $field; $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { $this->value = wp_kses_post( $this->value ); } //function } //class }redux/ReduxCore/inc/validation/email/validation_email.php000066600000002517152143340070017607 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'You must provide a valid email for this option.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function validate() { if ( ! is_email( $this->value ) ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } } //function } //class }redux/ReduxCore/inc/validation/css/validation_css.php000066600000002626152143340070017012 0ustar00parent = $parent; $this->field = $field; $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 3.0.0 */ function validate() { $data = $this->value; $data = wp_filter_nohtml_kses( $data ); $data = str_replace( '>', '>', $data ); $data = stripslashes($data); if ($data != $this->value) { $this->field['msg'] = __( 'Unsafe strings were found in your CSS and have been filtered out.', 'redux-framework' ); $this->warning = $this->field; } $this->value = $data; } //function } //class }redux/ReduxCore/inc/validation/not_empty/validation_not_empty.php000066600000002561152143340070021464 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'This field cannot be empty. Please provide a value.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function validate() { if ( ! isset( $this->value ) || empty( $this->value ) ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } } //function } //class }redux/ReduxCore/inc/validation/js/validation_js.php000066600000001712152143340070016455 0ustar00parent = $parent; $this->field = $field; $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { $this->value = $this->value; } //function } //class }redux/ReduxCore/inc/validation/html_custom/validation_html_custom.php000066600000002125152143340070022320 0ustar00parent = $parent; $this->field = $field; $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and validates them * * @since ReduxFramework 1.0.0 */ function validate() { if (isset($this->field['allowed_html'])) { $this->value = wp_kses( $this->value, $this->field['allowed_html'] ); } } //function } //class }redux/ReduxCore/inc/validation/colorrgba/validation_colorrgba.php000066600000005114152143340070021351 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'This field must be a valid color value.', 'redux-framework' ); $this->value = $value; $this->current = $current; //$this->validate(); } //function /** * Validate Color to RGBA * Takes the user's input color value and returns it only if it's a valid color. * * @since ReduxFramework 3.0.3 */ function validate_colorrgba( $color ) { return $color; //$color = $value['color']; //$alpha = $value['alpha']; $alpha = '1.0'; if ( $color == "transparent" ) { return $hidden; } /* $color = str_replace('#','', $color); if (strlen($color) == 3) { $color = $color.$color; } if (preg_match('/^[a-f0-9]{6}$/i', $color)) { $color = '#' . $color; } */ return array( 'hex' => $color, 'alpha' => $alpha ); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 3.0.0 */ function validate() { $this->value = $this->validate_colorrgba( $this->value ); /* if(is_array($this->value)) { // If array foreach($this->value as $k => $value){ $this->value[$k] = $this->validate_colorrgba($value); }//foreach } else { // not array $this->value = $this->validate_colorrgba($this->value); } // END array check */ } //function } //class }redux/ReduxCore/inc/validation/color_rgba/validation_color_rgba.php000066600000004472152143340070021655 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'This field must be a valid color value.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Validate Color to RGBA * Takes the user's input color value and returns it only if it's a valid color. * * @since ReduxFramework 3.0.3 */ function validate_color_rgba( $color ) { if ( $color == "transparent" ) { return $color; } $color = str_replace( '#', '', $color ); if ( strlen( $color ) == 3 ) { $color = $color . $color; } if ( preg_match( '/^[a-f0-9]{6}$/i', $color ) ) { $color = '#' . $color; } return array( 'hex' => $color, 'rgba' => Redux_Helpers::hex2rgba( $color ) ); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 3.0.0 */ function validate() { if ( is_array( $this->value ) ) { // If array foreach ( $this->value as $k => $value ) { $this->value[ $k ] = $this->validate_color_rgba( $value ); } //foreach } else { // not array $this->value = $this->validate_color_rgba( $this->value ); } // END array check } //function } //class }redux/ReduxCore/inc/validation/date/validation_date.php000066600000003512152143340070017257 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'This field must be a valid date.', 'redux-framework' ); $this->value = $value; $this->current = $current; $this->validate(); } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function validate() { $string = str_replace( '/', '', $this->value ); if ( ! is_numeric( $string ) ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; return; } if ( $this->value[2] != '/' ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; return; } if ( $this->value[5] != '/' ) { $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->error = $this->field; } } //function } //class }redux/ReduxCore/inc/validation/unique_slug/validation_unique_slug.php000066600000006223152143340070022327 0ustar00parent = $parent; $this->field = $field; $this->field['msg'] = ( isset( $this->field['msg'] ) ) ? $this->field['msg'] : __( 'That URL slug is in use, please choose another. %s is open for use.', 'redux-framework' ); $this->field['flush_permalinks'] = ( isset( $this->field['flush_permalinks'] ) ) ? $this->field['flush_permalinks'] : false; $this->value = $value; $this->current = $current; $this->validate(); } //function function validate() { global $wpdb, $wp_rewrite; $slug = $this->value; $feeds = $wp_rewrite->feeds; if ( ! is_array( $feeds ) ) { $feeds = array(); } // Post slugs must be unique across all posts. $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s LIMIT 1"; $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug ) ); /** * Filter whether the post slug would be bad as a flat slug. * * @since 3.1.0 * * @param bool $bad_slug Whether the post slug would be bad as a flat slug. * @param string $slug The post slug. * @param string $post_type Post type. */ if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_attachment_slug', false, $slug ) ) { $suffix = 2; do { $alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name ) ); $suffix ++; } while ( $post_name_check ); $slug = $alt_post_name; $this->value = ( isset( $this->current ) ) ? $this->current : ''; $this->field['msg'] = sprintf( $this->field['msg'], $slug ); $this->error = $this->field; } else if ( isset( $this->field['flush_permalinks'] ) && $this->field['flush_permalinks'] == true ) { add_action( 'init', array( $this, 'flush_permalinks' ), 99 ); } } //function function flush_permalinks() { flush_rewrite_rules(); } } //class } redux/ReduxCore/inc/class.redux_functions.php000066600000026130152143340070015405 0ustar00args['dev_mode'] ) { $min = '.min'; } return $min; } /** * Sets a cookie. * Do nothing if unit testing. * * @since 3.5.4 * @access public * @return void * * @param string $name The cookie name. * @param string $value The cookie value. * @param integer $expire Expiry time. * @param string $path The cookie path. * @param string $domain The cookie domain. * @param boolean $secure HTTPS only. * @param boolean $httponly Only set cookie on HTTP calls. */ public static function setCookie( $name, $value, $expire = 0, $path, $domain = null, $secure = false, $httponly = false ) { if ( ! defined( 'WP_TESTS_DOMAIN' ) ) { setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly ); } } /** * Parse CSS from output/compiler array * * @since 3.2.8 * @access private * @return $css CSS string */ public static function parseCSS( $cssArray = array(), $style = '', $value = '' ) { // Something wrong happened if ( count( $cssArray ) == 0 ) { return; } else { //if ( count( $cssArray ) >= 1 ) { $css = ''; foreach ( $cssArray as $element => $selector ) { // The old way if ( $element === 0 ) { $css = self::theOldWay( $cssArray, $style ); return $css; } // New way continued $cssStyle = $element . ':' . $value . ';'; $css .= $selector . '{' . $cssStyle . '}'; } } return $css; } private static function theOldWay( $cssArray, $style ) { $keys = implode( ",", $cssArray ); $css = $keys . "{" . $style . '}'; return $css; } /** * initWpFilesystem - Initialized the Wordpress filesystem, if it already isn't. * * @since 3.2.3 * @access public * @return void */ public static function initWpFilesystem() { global $wp_filesystem; // Initialize the Wordpress filesystem, no more using file_put_contents function if ( empty( $wp_filesystem ) ) { require_once ABSPATH . '/wp-includes/pluggable.php'; require_once ABSPATH . '/wp-admin/includes/file.php'; WP_Filesystem(); } } /** * verFromGit - Retrives latest Redux version from GIT * * @since 3.2.0 * @access private * @return string $ver */ private static function verFromGit() { // Get the raw framework.php from github $gitpage = wp_remote_get( 'https://raw.github.com/ReduxFramework/redux-framework/master/ReduxCore/framework.php', array( 'headers' => array( 'Accept-Encoding' => '' ), 'sslverify' => true, 'timeout' => 300 ) ); // Is the response code the corect one? if ( ! is_wp_error( $gitpage ) ) { if ( isset( $gitpage['body'] ) ) { // Get the page text. $body = $gitpage['body']; // Find version line in framework.php $needle = 'public static $_version ='; $pos = strpos( $body, $needle ); // If it's there, continue. We don't want errors if $pos = 0. if ( $pos > 0 ) { // Look for the semi-colon at the end of the version line $semi = strpos( $body, ";", $pos ); // Error avoidance. If the semi-colon is there, continue. if ( $semi > 0 ) { // Extract the version line $text = substr( $body, $pos, ( $semi - $pos ) ); // Find the first quote around the veersion number. $quote = strpos( $body, "'", $pos ); // Extract the version number $ver = substr( $body, $quote, ( $semi - $quote ) ); // Strip off quotes. $ver = str_replace( "'", '', $ver ); return $ver; } } } } } /** * updateCheck - Checks for updates to Redux Framework * * @since 3.2.0 * @access public * * @param string $curVer Current version of Redux Framework * * @return void - Admin notice is diaplyed if new version is found */ public static function updateCheck( $curVer ) { // If no cookie, check for new ver if ( ! isset( $_COOKIE['redux_update_check'] ) ) { // || 1 == strcmp($_COOKIE['redux_update_check'], self::$_version)) { // actual ver number from git repo $ver = self::verFromGit(); // hour long cookie. setcookie( "redux_update_check", $ver, time() + 3600, '/' ); } else { // saved value from cookie. If it's different from current ver // we can still show the update notice. $ver = $_COOKIE['redux_update_check']; } // Set up admin notice on new version //if ( 1 == strcmp( $ver, $curVer ) ) { if ( version_compare( $ver, $curVer, '>' ) ) { self::$_parent->admin_notices[] = array( 'type' => 'updated', 'msg' => 'A new build of Redux is now available!

    Your version: ' . $curVer . '
    New version: ' . $ver . '

    If you are not a developer, your theme/plugin author shipped with dev_mode on. Contact them to fix it, but in the meantime you can use our dev_mode disabler.

    Get it now  |', 'id' => 'dev_notice_' . $ver, 'dismiss' => true, ); } } public static function tru( $string, $opt_name ) { $redux = ReduxFrameworkInstances::get_instance( $opt_name ); $check = get_user_option( 'r_tru_u_x', array() ); if ( ! empty( $check ) && ( isset( $check['expires'] ) < time() ) ) { $check = array(); } //if ( isset( $redux->args['dev_mode'] ) && $redux->args['dev_mode'] == true && ! ( isset( $redux->args['forced_dev_mode_off'] ) && $redux->args['forced_dev_mode_off'] == true ) ) { if ( isset( $redux->args['dev_mode'] ) && $redux->args['dev_mode'] == true ) { update_user_option( get_current_user_id(), 'r_tru_u_x', array( 'id' => '', 'expires' => 60 * 60 * 24 ) ); return apply_filters( 'redux/' . $opt_name . '/aURL_filter', '' ); } else { if ( empty( $check ) ) { $check = @wp_remote_get( 'http://look.reduxframework.com/status.php?p=' . ReduxFramework::$_is_plugin ); $check = json_decode( wp_remote_retrieve_body( $check ), true ); if ( ! empty( $check ) && isset( $check['id'] ) ) { update_user_option( get_current_user_id(), 'r_tru_u_x', $check ); } } $check = isset( $check['id'] ) ? $check['id'] : $check; if ( ! empty( $check ) ) { return apply_filters( 'redux/' . $opt_name . '/aURL_filter', '' ); } else { return ""; } } } public static function dat($fname, $opt_name){ $name = apply_filters('redux/' . $opt_name . '/aDBW_filter', $fname); return $name; } public static function bub($fname, $opt_name){ $name = apply_filters('redux/' . $opt_name . '/aNF_filter', $fname); return $name; } public static function yo($fname, $opt_name){ $name = apply_filters('redux/' . $opt_name . '/aNFM_filter', $fname); return $name; } } } redux/ReduxCore/inc/welcome/views/about.php000066600000007632152143340070014772 0ustar00

    display_version ); ?>

    display_version ); ?>
    actions(); ?> tabs(); ?>

    Ajax Saving & More Speed!

    This version the fastest Redux ever released. We've integrated ajax_saving as well as many other speed improvements to make Redux even surpass the load time of SMOF even with large panels.

    The New Redux API

    We've gone back to the drawing boards and made Redux the simplest framework to use. Introducing the Redux API. Easily add fields, extensions, templates, and more without every having to define a class! Learn More

    Security Improvments

    Thanks to the help of James Golovich (Pritect), we have patched varying security flaws in Redux. This is the most secure version of Redux yet!

    Panel Templates

    Now developers can easily customize the Redux panel by declaring a templates location path. We've also made use of template versioning so if we change anything, you will know.
    Learn More

    Full Width for ANY Field

    Any field can now be set to full width! Just set the full_width argument and your field will expand to the full width of your panel or metabox.

    Elusive Icons Update

    Redux is now taking over development of Elusive Icons. As a result, we've refreshed our copy of Elusive to the newest version.

    redux/ReduxCore/inc/welcome/views/credits.php000066600000002020152143340070015277 0ustar00

    actions(); ?> tabs(); ?>

    Contribute to Redux.', 'redux-framework' ), 'https://github.com/reduxframework/redux-framework/blob/master/CONTRIBUTING.md' );?>

    contributors()); ?>
    redux/ReduxCore/inc/welcome/views/status_report.php000066600000131344152143340070016574 0ustar00

    actions(); ?> tabs(); ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?>
    : uploads directory. This directory must be writable.', 'redux-framework' ) . '">[?]'; ?> ' . '✔ ' . esc_html($sysinfo['redux_data_dir']) . ' '; } else { printf( '' . '✕ ' . __( 'To allow data saving, make %s writable.', 'redux-framework' ) . '', esc_html($sysinfo['redux_data_dir']) ); } ?>
    : [?]'; ?> ' . esc_url($sysinfo['wp_content_url']) . ' '; ?>
    : [?]'; ?>
    : [?]'; ?>
    : Permalinks.', 'redux-framework' ) . '">[?]'; ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?> ' . sprintf( __( '%s - We recommend setting memory to at least 40MB. See: Increasing memory allocated to PHP', 'redux-framework' ), esc_html($sysinfo['wp_mem_limit']['size']), 'http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP' ) . ''; } else { echo '' . esc_html($sysinfo['wp_mem_limit']['size']) . ''; } ?>
    : [?]'; ?>
    : [?]'; ?> ' . '✔' . ''; } else { echo '' . '–' . ''; } ?>
    : [?]'; ?>
    : [?]'; ?> $value ) { echo '' . esc_html(ucfirst( $key )) . ': ' . esc_html($value) . '
    '; } ?>
    [?]'; if ( $sysinfo['fsockopen_curl'] === 'true' ) { $posting['fsockopen_curl']['success'] = true; } else { $posting['fsockopen_curl']['success'] = false; $posting['fsockopen_curl']['note'] = esc_html__( 'Your server does not have fsockopen or cURL enabled - cURL is used to communicate with other servers. Please contact your hosting provider.', 'redux-framework' ) . ''; } /* // SOAP $posting['soap_client']['name'] = 'SoapClient'; $posting['soap_client']['help'] = '[?]'; if ( $sysinfo['soap_client'] == true ) { $posting['soap_client']['success'] = true; } else { $posting['soap_client']['success'] = false; $posting['soap_client']['note'] = sprintf( __( 'Your server does not have the SOAP Client class enabled - some gateway plugins which use SOAP may not work as expected.', 'redux-framework' ), 'http://php.net/manual/en/class.soapclient.php' ) . ''; } // DOMDocument $posting['dom_document']['name'] = 'DOMDocument'; $posting['dom_document']['help'] = '[?]'; if ( $sysinfo['dom_document'] == true ) { $posting['dom_document']['success'] = true; } else { $posting['dom_document']['success'] = false; $posting['dom_document']['note'] = sprintf( __( 'Your server does not have the DOMDocument class enabled - HTML/Multipart emails, and also some extensions, will not work without DOMDocument.', 'redux-framework' ), 'http://php.net/manual/en/class.domdocument.php' ) . ''; } */ //// GZIP //$posting['gzip']['name'] = 'GZip'; //$posting['gzip']['help'] = '[?]'; // //if ( $sysinfo['gzip'] == true ) { // $posting['gzip']['success'] = true; //} else { // $posting['gzip']['success'] = false; // $posting['gzip']['note'] = sprintf( __( 'Your server does not support the gzopen function - this is required to use the GeoIP database from MaxMind. The API fallback will be used instead for geolocation.', 'redux-framework' ), 'http://php.net/manual/en/zlib.installation.php' ) . ''; //} // WP Remote Post Check $posting['wp_remote_post']['name'] = esc_html__( 'Remote Post', 'redux-framework' ); $posting['wp_remote_post']['help'] = '[?]'; if ( $sysinfo['wp_remote_post'] === 'true' ) { $posting['wp_remote_post']['success'] = true; } else { $posting['wp_remote_post']['note'] = esc_html__( 'wp_remote_post() failed. Many advanced features may not function. Contact your hosting provider.', 'redux-framework' ); if ( $sysinfo['wp_remote_post_error'] ) { $posting['wp_remote_post']['note'] .= ' ' . sprintf( __( 'Error: %s', 'redux-framework' ), redux_clean( $sysinfo['wp_remote_post_error'] ) ); } $posting['wp_remote_post']['success'] = false; } // WP Remote Get Check $posting['wp_remote_get']['name'] = esc_html__( 'Remote Get', 'redux-framework' ); $posting['wp_remote_get']['help'] = '[?]'; if ( $sysinfo['wp_remote_get'] === 'true' ) { $posting['wp_remote_get']['success'] = true; } else { $posting['wp_remote_get']['note'] = esc_html__( 'wp_remote_get() failed. This is needed to get information from remote servers. Contact your hosting provider.', 'redux-framework' ); if ( $sysinfo['wp_remote_get_error'] ) { $posting['wp_remote_get']['note'] .= ' ' . sprintf( __( 'Error: %s', 'redux-framework' ), redux_clean( $sysinfo['wp_remote_get_error'] ) ); } $posting['wp_remote_get']['success'] = false; } $posting = apply_filters( 'redux_debug_posting', $posting ); foreach ( $posting as $post ) { $mark = ! empty( $post['success'] ) ? 'yes' : 'error'; ?>
    : [?]'; ?>
    : [?]'; ?> ' . '✔' . ''; } else { echo '' . '–' . ''; } ?>
    : [?]'; ?>
    : [?]'; ?> ' . esc_html($sysinfo['abspath']) . ''; ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?> ' . '✔' . ''; } else { echo '' . '–' . ''; } ?>
    : [?]'; ?> ' . '✔' . ''; } else { echo '' . '–' . ''; } ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?> ' . '✕ ' . sprintf( __( 'Default timezone is %s - it should be UTC', 'redux-framework' ), esc_html(date_default_timezone_get()) ) . ''; } else { echo '' . '✔' . ''; } ?>
    :
    $plugin_data ) { $version_string = ''; $network_string = ''; if ( ! empty( $plugin_data['Name'] ) ) { // link the plugin name to the plugin url if available $plugin_name = esc_html( $plugin_data['Name'] ); if ( ! empty( $plugin_data['PluginURI'] ) ) { $plugin_name = '' . esc_html($plugin_name) . ''; } ?>
    ()
     
    $data ) { $inst_name = ucwords( str_replace( array( '_', '-' ), ' ', $inst ) ); $args = $data['args']; ?> $found_plugin_files ) { ?>
    opt_name: [?]'; ?>
    global_variable: [?]'; ?>
    dev_mode: [?]'; ?> ' . '✔' . '' : '' . '–' . ''; ?>
    ajax_save: [?]'; ?> ' . '✔' . '' : '' . '–' . ''; ?>
    page_slug: [?]'; ?>
    page_permissions: [?]'; ?>
    menu_type: [?]'; ?>
    page_parent: [?]'; ?>
    compiler: [?]'; ?> ' . '✔' . '' : '' . '–' . ''; ?>
    output: [?]'; ?> ' . '✔' . '' : '' . '–' . ''; ?>
    output_tag: [?]'; ?> ' . '✔' . '' : '' . '–' . ''; ?>
    template_path: [?]'; ?> ' . esc_html($args['templates_path']) . ''; ?>
    Templates: [?]'; ?> ', $found_plugin_files ); ?>
    Extensions [?]'; ?> $arr ) { $ver = $arr['version']; echo '' . ucwords( str_replace( array( '_', '-' ), ' ', $name ) ) . ' - ' . esc_html($ver); ?>
    : [?]'; ?>
    : [?]'; ?> Version, '!=' ) ) { echo ' – ' . esc_html($theme_version_data['version']) . ' ' . esc_html__( 'is available', 'redux-framework' ) . ''; } ?>
    : [?]'; ?>
    : [?]'; ?> ' . '✔' . '' : '✕
    ' . sprintf( __( 'If you\'re modifying Redux Framework or a parent theme you didn\'t build personally, we recommend using a child theme. See: How to create a child theme', 'redux-framework' ), 'http://codex.wordpress.org/Child_Themes' ) . ''; ?>
    : [?]'; ?>
    : [?]'; ?>
    : [?]'; ?>
    redux/ReduxCore/inc/welcome/views/support.php000066600000016345152143340070015375 0ustar00

    actions(); ?> tabs(); ?>

    Status tab.', 'redux-framework' ), array( 'a' => array( 'href' => array() ) ) ), esc_url( admin_url( 'tools.php?page=redux-status' ) ) ); ?>





    '; foreach ( $redux as $panel ) { echo ' ' . esc_html($panel->args['display_name']) . ''; if ( ! empty( $panel->args['display_version'] ) ) { echo ' v' . esc_html($panel->args['display_version']); } echo ' 
    '; } echo '
    '; } ?>

    following article before asking for support from us directly.', 'redux-framework' ), array( 'a' => array( 'href' => array() ) ) ), esc_url( 'http://docs.reduxframework.com/core/support-defined/' ) );?>

    redux/ReduxCore/inc/welcome/views/changelog.php000066600000001463152143340070015603 0ustar00

    actions(); ?> tabs(); ?>
    parse_readme()); ?>
    redux/ReduxCore/inc/welcome/views/extensions.php000066600000012325152143340070016052 0ustar00 social profiles => js button => multi media => css layout => color schemes => adjust-alt custom fonts => fontsize code mirror => view-mode live search => search support faq's => question date time picker => premium support => metaboxes => widget areas => shortcodes => icon select => gallery tracking => * */ $iconMap = array( 'repeater' => 'tags', 'social-profiles' => 'group', 'js-button' => 'hand-down', 'multi-media' => 'picture', 'css-layout' => 'fullscreen', 'color-schemes' => 'adjust-alt', 'custom-fonts' => 'fontsize', //'codemirror' => 'view-mode', 'live-search' => 'search', 'support-faqs' => 'question', 'date-time' => 'calendar', 'premium-support' => 'fire', 'metaboxes' => 'magic', 'widget-areas' => 'inbox-box', 'shortcodes' => 'shortcode', 'icon-select' => 'gallery', 'accordion' => 'lines' ); $colors = array( '8CC63F', '8CC63F', '0A803B', '25AAE1', '0F75BC', 'F7941E', 'F1592A', 'ED217C', 'BF1E2D', '8569CF', '0D9FD8', '8AD749', 'EECE00', 'F8981F', 'F80E27', 'F640AE' ); shuffle( $colors ); echo ''; $color = 1; ?>

    display_version) ); ?>
    actions(); ?> tabs(); ?>

    $extension ) { ?>
    redux/ReduxCore/inc/welcome/css/redux-welcome.scss000066600000042307152143340070016255 0ustar00$green: #7ad03a; $red: #a00; $orange: #ffba00; $blue: #2ea2cc; .about-wrap { &.redux-status { .updated, .error { margin-top: 10px; } .updated { &.redux-message { display: block !important; } } .redux-message { position: relative; border-left-color: #00A2E3 !important; overflow: hidden; a.skip, a.docs { opacity: 0.5; text-decoration: none !important; } } #debug-report { display: none; margin: 10px 0; padding: 0; position: relative; textarea { font-family: monospace; width: 100%; margin: 0; height: 300px; padding: 20px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; resize: none; font-size: 12px; line-height: 20px; outline: 0; } } table.redux_status_table { margin-bottom: 1em; tr { &:nth-child(2n) { th, td { background: #fcfcfc; } } } th { font-weight: 700; padding: 9px; } td:first-child { width: 33%; } td.help { width: 1em; } td { padding: 9px; //font-size: 1.1em; mark { background: transparent none; } mark.yes { color: $green; } mark.no { color: #999; } mark.error { color: $red; } ul { margin: 0; } } .redux-hint-qtip { cursor: help; } } } } .about-wrap { #footer-upgrade { display: none;; } .redux-badge { position: absolute; top: 0; background: #00A2E3; padding: 20px; color: #efefef; margin: 5px 0 0 0; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .2); box-shadow: 0 1px 3px rgba(0, 0, 0, .2); &:before { color: #fff; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-size: 80px; font-weight: normal; width: 165px; height: 165px; line-height: 165px; text-align: center; position: absolute; top: 0; margin: 0; vertical-align: middle; } .el { background: #00A2E3; display: block !important; font-size: 8em; color: #fff; margin-bottom: 30px; } span { font-weight: 600; font-size: 14px; text-align: center; position: absolute; bottom: 0; background: rgba(50, 50, 49, 0.47); left: 0; right: 0; padding: 8px; } } .redux-feature { overflow: visible !important; *zoom: 1; &:before, &:after { content: " "; display: table; } &:after { clear: both; } } h3 + .redux-feature { margin-top: 0; } .feature-rest div { width: 50% !important; -moz-box-sizing: border-box; box-sizing: border-box; margin: 0 !important; &.icon:before { font-weight: normal; width: 100%; font-size: 170px; line-height: 125px; color: #9c5d90; display: inline-block; position: relative; text-align: center; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } } div.icon { width: 0 !important; padding: 0; margin: 20px 0 !important; } .about-integrations { background: #fff; margin: 20px 0; padding: 1px 20px 10px; } .changelog { h2 { line-height: 1.4; padding-bottom: 0;; } .feature-section { padding-top: 1.4em; } .prettyprint { overflow-wrap: break-word; } .gist-it-gist { .gist-file { border: 0 !important; background: 0 !important; .gist-data { border: 0 !important; background: 0 !important; pre { padding-top: 10px !important; word-break: break-word; } } } } } .theme-screenshot { color: #eee; transition: all 0.5s; &:hover { color: #fff; } i { text-align: center; display: block; margin: 10px; font-size: 90px; line-height: 200px; transition: all 0.5s ease; } } .theme-browser { .theme { transition: all 0.5s; &:hover .theme-screenshot i { transition: all 0.5s; font-size: 120px; } .theme-screenshot:after { content: inherit; display: inherit; padding-top: inherit; } } } .theme-screenshot { figure { position: relative; overflow: hidden; cursor: pointer; margin: 0; i { position: relative; display: block; font-size: 11em; opacity: 0.8; } figcaption { padding: 15px; color: #fff; text-transform: uppercase; font-size: 1.25em; -webkit-backface-visibility: hidden; backface-visibility: hidden; &:before, &:after { pointer-events: none; } } figcaption, figcaption > a { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } figcaption > a { z-index: 1000; text-indent: 200%; white-space: nowrap; font-size: 0; opacity: 0; } p { margin: 0; letter-spacing: 1px; font-size: 68.5%; } i { opacity: 0.7; -webkit-transition: opacity 0.35s; transition: opacity 0.35s; } } } .theme:hover { figcaption { &::before, &::after { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } i { opacity: 0.3; } p { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); text-shadow: 2px 2px 1px rgba(0, 0, 0, .3); } } figure { figcaption { &::before, &::after { position: absolute; top: 15px; right: 15px; bottom: 15px; left: 15px; content: ''; opacity: 0; -webkit-transition: opacity 0.35s, -webkit-transform 0.35s; transition: opacity 0.35s, transform 0.35s; } &::before { border-top: 1px solid #fff; border-bottom: 1px solid #fff; -webkit-transform: scale(0, 1); transform: scale(0, 1); } &::after { border-right: 1px solid #fff; border-left: 1px solid #fff; -webkit-transform: scale(1, 0); transform: scale(1, 0); } } p { padding: 10px; text-transform: none; opacity: 0; margin-top: 0 !important; -webkit-transition: opacity 0.35s, -webkit-transform 0.35s; transition: opacity 0.35s, transform 0.35s; -webkit-transform: translate3d(0, 20px, 0); transform: translate3d(0, 20px, 0); } } } .redux-message, p.redux-actions { .twitter-share-button { margin-top: -3px; margin-left: 3px; vertical-align: middle; } a { &.donate, &.review-us { opacity: .5; text-decoration: none !important; } } } #redux-message { margin-top: 15px !important; display: block !important; margin: 5px 0 15px; border-color: #00A2E3; h4 { margin-top: .5em; } } @media only screen and (min-width: 2000px) { #wpwrap .theme-browser .theme:nth-child(4n), #wpwrap .theme-browser .theme:nth-child(5n) { margin-right: 3%; } } @media screen and (max-width: 500px) { .about-wrap h2 .nav-tab { width: 100%; margin: 0; padding: 0; height: 40px; line-height: 40px; text-align: center; margin-bottom: 10px; margin-top: 10px; } .about-wrap h2.nav-tab-wrapper { padding: 0; width: 100%; } } @media only screen and (max-width: 1120px) { .theme-browser .theme:nth-child(odd) { margin-right: 5% !important; } .theme-browser .theme { width: 47.5% !important; margin-right: auto !important; } } @media screen and (max-width: 620px) { .theme-browser .theme { width: 100% !important; margin-right: 0; } } #support_div { input.hash { text-align: center; } .hide { display: none; } .previous { opacity: .8; } /*form styles*/ #supportform { /*width: 500px;*/ margin-top: 10px; text-align: center; position: relative; fieldset { background: white; border: 0 none; border-radius: 3px; box-shadow: 0 0 15px 1px rgba(0, 0, 0, 0.4); padding: 20px 30px; box-sizing: border-box; width: 86%; margin: 0 7%; /*stacking fieldsets above each other*/ position: absolute; /*Hide all except first fieldset*/ &:not(:first-of-type) { display: none; } } /*inputs*/ input, textarea { padding: 15px; border: 1px solid #ccc; border-radius: 3px; margin-bottom: 10px; width: 100%; box-sizing: border-box; font-family: montserrat; color: #2C3E50; font-size: 13px; } input.checkbox { width: initial; margin-top: 10px; } /*buttons*/ .action-button { width: 100px; background: #27AE60; font-weight: bold; color: white; border: 0 none; border-radius: 1px; cursor: pointer; padding: 10px 5px; margin: 10px 5px; &:disabled { opacity: .5; } &:hover, &:focus { box-shadow: 0 0 0 2px white, 0 0 0 3px #27AE60; } } /*headings*/ .fs-title { font-size: 15px; text-transform: uppercase; color: #2C3E50; margin-bottom: 10px; } .fs-subtitle { font-weight: normal; font-size: 13px; text-align: left; color: #666; margin-bottom: 20px; } #toDebug li { text-align: left; width: 45%; float: left; } #user_type { width: 100%; td { cursor: pointer; width: 50%; i { font-size: 130px; margin-bottom: 10px; } &:hover i { color: #176C8E; } small { line-height: 2.5em; font-style: italic; } } } #support_hash { text-align: center; word-break: break-all; } } .breadcrumb { /*centering*/ display: inline-block; box-shadow: 0 0 10px 1px rgba(0, 0, 0, 0.35); overflow: hidden; border-radius: 5px; margin: 15px 0; /*Lets add the numbers for each link using CSS counters. flag is the name of the counter. to be defined using counter-reset in the parent element of the links*/ counter-reset: flag; li { text-decoration: none; outline: none; display: block; float: left; font-size: 12px; transition: all 0.5s; width: auto; margin: 0; line-height: 36px; color: white; /*need more margin on the left of links to accomodate the numbers*/ padding: 0 10px 0 60px; background: #666; //background: linear-gradient(#666, #333); position: relative; /*since the first link does not have a triangle before it we can reduce the left padding to make it look consistent with other links*/ &:first-child { padding-left: 46px; border-radius: 5px 0 0 5px; /*to match with the parent's radius*/ &:before { left: 14px; } } &:last-child { border-radius: 0 5px 5px 0; /*this was to prevent glitches on hover*/ padding-right: 20px; /*we dont need an arrow after the last link*/ &:after { content: none; } } &.active { background: #333; //background: linear-gradient(#333, #000); &:after { background: #333; //background: linear-gradient(135deg, #333, #000); } &:before { background: #555; } } /*adding the arrows for the breadcrumbs using rotated pseudo elements*/ &:after { content: ''; position: absolute; top: 0; right: -18px; /*half of square's length*/ /*same dimension as the line-height of .breadcrumb a */ width: 36px; height: 36px; /*as you see the rotated square takes a larger height. which makes it tough to position it properly. So we are going to scale it down so that the diagonals become equal to the line-height of the link. We scale it to 70.7% because if square's: length = 1; diagonal = (1^2 + 1^2)^0.5 = 1.414 (pythagoras theorem) if diagonal required = 1; length = 1/1.414 = 0.707*/ transform: scale(0.707) rotate(45deg); /*we need to prevent the arrows from getting buried under the next link*/ z-index: 1; /*background same as links but the gradient will be rotated to compensate with the transform applied*/ background: #666; //background: linear-gradient(135deg, #666, #333); /*stylish arrow design using box shadow*/ box-shadow: 2px -2px 0 2px rgba(0, 0, 0, 0.4), 3px -3px 0 2px rgba(255, 255, 255, 0.1); /* 5px - for rounded arrows and 50px - to prevent hover glitches on the border created using shadows*/ border-radius: 0 5px 0 50px; transition: all 0.5s; } /*we will use the :before element to show numbers*/ &:before { transition: all 0.5s; content: counter(flag); counter-increment: flag; /*some styles now*/ border-radius: 100%; width: 20px; height: 20px; line-height: 20px; margin: 8px 0; position: absolute; top: 0; left: 30px; background: #444; //background: linear-gradient(#444, #222); font-weight: bold; } } } }redux/ReduxCore/inc/welcome/css/redux-welcome.css000066600000024575152143340070016101 0ustar00.about-wrap.redux-status .updated,.about-wrap.redux-status .error{margin-top:10px}.about-wrap.redux-status .updated.redux-message{display:block !important}.about-wrap.redux-status .redux-message{position:relative;border-left-color:#00A2E3 !important;overflow:hidden}.about-wrap.redux-status .redux-message a.skip,.about-wrap.redux-status .redux-message a.docs{opacity:0.5;text-decoration:none !important}.about-wrap.redux-status #debug-report{display:none;margin:10px 0;padding:0;position:relative}.about-wrap.redux-status #debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}.about-wrap.redux-status table.redux_status_table{margin-bottom:1em}.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) th,.about-wrap.redux-status table.redux_status_table tr:nth-child(2n) td{background:#fcfcfc}.about-wrap.redux-status table.redux_status_table th{font-weight:700;padding:9px}.about-wrap.redux-status table.redux_status_table td:first-child{width:33%}.about-wrap.redux-status table.redux_status_table td.help{width:1em}.about-wrap.redux-status table.redux_status_table td{padding:9px}.about-wrap.redux-status table.redux_status_table td mark{background:transparent none}.about-wrap.redux-status table.redux_status_table td mark.yes{color:#7ad03a}.about-wrap.redux-status table.redux_status_table td mark.no{color:#999}.about-wrap.redux-status table.redux_status_table td mark.error{color:#a00}.about-wrap.redux-status table.redux_status_table td ul{margin:0}.about-wrap.redux-status table.redux_status_table .redux-hint-qtip{cursor:help}.about-wrap #footer-upgrade{display:none}.about-wrap .redux-badge{position:absolute;top:0;background:#00A2E3;padding:20px;color:#efefef;margin:5px 0 0 0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.2);box-shadow:0 1px 3px rgba(0,0,0,0.2)}.about-wrap .redux-badge:before{color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:80px;font-weight:normal;width:165px;height:165px;line-height:165px;text-align:center;position:absolute;top:0;margin:0;vertical-align:middle}.about-wrap .redux-badge .el{background:#00A2E3;display:block !important;font-size:8em;color:#fff;margin-bottom:30px}.about-wrap .redux-badge span{font-weight:600;font-size:14px;text-align:center;position:absolute;bottom:0;background:rgba(50,50,49,0.47);left:0;right:0;padding:8px}.about-wrap .redux-feature{overflow:visible !important;*zoom:1}.about-wrap .redux-feature:before,.about-wrap .redux-feature:after{content:" ";display:table}.about-wrap .redux-feature:after{clear:both}.about-wrap h3+.redux-feature{margin-top:0}.about-wrap .feature-rest div{width:50% !important;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 !important}.about-wrap .feature-rest div.icon:before{font-weight:normal;width:100%;font-size:170px;line-height:125px;color:#9c5d90;display:inline-block;position:relative;text-align:center;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.about-wrap div.icon{width:0 !important;padding:0;margin:20px 0 !important}.about-wrap .about-integrations{background:#fff;margin:20px 0;padding:1px 20px 10px}.about-wrap .changelog h2{line-height:1.4;padding-bottom:0}.about-wrap .changelog .feature-section{padding-top:1.4em}.about-wrap .changelog .prettyprint{overflow-wrap:break-word}.about-wrap .changelog .gist-it-gist .gist-file{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data{border:0 !important;background:0 !important}.about-wrap .changelog .gist-it-gist .gist-file .gist-data pre{padding-top:10px !important;word-break:break-word}.about-wrap .theme-screenshot{color:#eee;transition:all 0.5s}.about-wrap .theme-screenshot:hover{color:#fff}.about-wrap .theme-screenshot i{text-align:center;display:block;margin:10px;font-size:90px;line-height:200px;transition:all 0.5s ease}.about-wrap .theme-browser .theme{transition:all 0.5s}.about-wrap .theme-browser .theme:hover .theme-screenshot i{transition:all 0.5s;font-size:120px}.about-wrap .theme-browser .theme .theme-screenshot:after{content:inherit;display:inherit;padding-top:inherit}.about-wrap .theme-screenshot figure{position:relative;overflow:hidden;cursor:pointer;margin:0}.about-wrap .theme-screenshot figure i{position:relative;display:block;font-size:11em;opacity:0.8}.about-wrap .theme-screenshot figure figcaption{padding:15px;color:#fff;text-transform:uppercase;font-size:1.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.about-wrap .theme-screenshot figure figcaption:before,.about-wrap .theme-screenshot figure figcaption:after{pointer-events:none}.about-wrap .theme-screenshot figure figcaption,.about-wrap .theme-screenshot figure figcaption>a{position:absolute;top:0;left:0;right:0;bottom:0}.about-wrap .theme-screenshot figure figcaption>a{z-index:1000;text-indent:200%;white-space:nowrap;font-size:0;opacity:0}.about-wrap .theme-screenshot figure p{margin:0;letter-spacing:1px;font-size:68.5%}.about-wrap .theme-screenshot figure i{opacity:0.7;-webkit-transition:opacity 0.35s;transition:opacity 0.35s}.about-wrap .theme:hover figcaption::before,.about-wrap .theme:hover figcaption::after{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.about-wrap .theme:hover i{opacity:0.3}.about-wrap .theme:hover p{opacity:1;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);text-shadow:2px 2px 1px rgba(0,0,0,0.3)}.about-wrap figure figcaption::before,.about-wrap figure figcaption::after{position:absolute;top:15px;right:15px;bottom:15px;left:15px;content:'';opacity:0;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s}.about-wrap figure figcaption::before{border-top:1px solid #fff;border-bottom:1px solid #fff;-webkit-transform:scale(0, 1);transform:scale(0, 1)}.about-wrap figure figcaption::after{border-right:1px solid #fff;border-left:1px solid #fff;-webkit-transform:scale(1, 0);transform:scale(1, 0)}.about-wrap figure p{padding:10px;text-transform:none;opacity:0;margin-top:0 !important;-webkit-transition:opacity 0.35s, -webkit-transform 0.35s;transition:opacity 0.35s, transform 0.35s;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}.redux-message .twitter-share-button,p.redux-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.redux-message a.donate,.redux-message a.review-us,p.redux-actions a.donate,p.redux-actions a.review-us{opacity:.5;text-decoration:none !important}#redux-message{margin-top:15px !important;display:block !important;margin:5px 0 15px;border-color:#00A2E3}#redux-message h4{margin-top:.5em}@media only screen and (min-width: 2000px){#wpwrap .theme-browser .theme:nth-child(4n),#wpwrap .theme-browser .theme:nth-child(5n){margin-right:3%}}@media screen and (max-width: 500px){.about-wrap h2 .nav-tab{width:100%;margin:0;padding:0;height:40px;line-height:40px;text-align:center;margin-bottom:10px;margin-top:10px}.about-wrap h2.nav-tab-wrapper{padding:0;width:100%}}@media only screen and (max-width: 1120px){.theme-browser .theme:nth-child(odd){margin-right:5% !important}.theme-browser .theme{width:47.5% !important;margin-right:auto !important}}@media screen and (max-width: 620px){.theme-browser .theme{width:100% !important;margin-right:0}}#support_div input.hash{text-align:center}#support_div .hide{display:none}#support_div .previous{opacity:.8}#support_div #supportform{margin-top:10px;text-align:center;position:relative}#support_div #supportform fieldset{background:white;border:0 none;border-radius:3px;box-shadow:0 0 15px 1px rgba(0,0,0,0.4);padding:20px 30px;box-sizing:border-box;width:86%;margin:0 7%;position:absolute}#support_div #supportform fieldset:not(:first-of-type){display:none}#support_div #supportform input,#support_div #supportform textarea{padding:15px;border:1px solid #ccc;border-radius:3px;margin-bottom:10px;width:100%;box-sizing:border-box;font-family:montserrat;color:#2C3E50;font-size:13px}#support_div #supportform input.checkbox{width:initial;margin-top:10px}#support_div #supportform .action-button{width:100px;background:#27AE60;font-weight:bold;color:white;border:0 none;border-radius:1px;cursor:pointer;padding:10px 5px;margin:10px 5px}#support_div #supportform .action-button:disabled{opacity:.5}#support_div #supportform .action-button:hover,#support_div #supportform .action-button:focus{box-shadow:0 0 0 2px white, 0 0 0 3px #27AE60}#support_div #supportform .fs-title{font-size:15px;text-transform:uppercase;color:#2C3E50;margin-bottom:10px}#support_div #supportform .fs-subtitle{font-weight:normal;font-size:13px;text-align:left;color:#666;margin-bottom:20px}#support_div #supportform #toDebug li{text-align:left;width:45%;float:left}#support_div #supportform #user_type{width:100%}#support_div #supportform #user_type td{cursor:pointer;width:50%}#support_div #supportform #user_type td i{font-size:130px;margin-bottom:10px}#support_div #supportform #user_type td:hover i{color:#176C8E}#support_div #supportform #user_type td small{line-height:2.5em;font-style:italic}#support_div #supportform #support_hash{text-align:center;word-break:break-all}#support_div .breadcrumb{display:inline-block;box-shadow:0 0 10px 1px rgba(0,0,0,0.35);overflow:hidden;border-radius:5px;margin:15px 0;counter-reset:flag}#support_div .breadcrumb li{text-decoration:none;outline:none;display:block;float:left;font-size:12px;transition:all 0.5s;width:auto;margin:0;line-height:36px;color:white;padding:0 10px 0 60px;background:#666;position:relative}#support_div .breadcrumb li:first-child{padding-left:46px;border-radius:5px 0 0 5px}#support_div .breadcrumb li:first-child:before{left:14px}#support_div .breadcrumb li:last-child{border-radius:0 5px 5px 0;padding-right:20px}#support_div .breadcrumb li:last-child:after{content:none}#support_div .breadcrumb li.active{background:#333}#support_div .breadcrumb li.active:after{background:#333}#support_div .breadcrumb li.active:before{background:#555}#support_div .breadcrumb li:after{content:'';position:absolute;top:0;right:-18px;width:36px;height:36px;transform:scale(0.707) rotate(45deg);z-index:1;background:#666;box-shadow:2px -2px 0 2px rgba(0,0,0,0.4),3px -3px 0 2px rgba(255,255,255,0.1);border-radius:0 5px 0 50px;transition:all 0.5s}#support_div .breadcrumb li:before{transition:all 0.5s;content:counter(flag);counter-increment:flag;border-radius:100%;width:20px;height:20px;line-height:20px;margin:8px 0;position:absolute;top:0;left:30px;background:#444;font-weight:bold} redux/ReduxCore/inc/welcome/welcome.php000066600000054207152143340070014156 0ustar00redux_loaded ) { return; } $this->redux_loaded = true; add_action( 'admin_menu', array( $this, 'admin_menus' ) ); if ( isset( $_GET['page'] ) ) { if ( substr( $_GET['page'], 0, 6 ) == "redux-" ) { $version = explode( '.', ReduxFramework::$_version ); $this->display_version = $version[0] . '.' . $version[1]; add_filter( 'admin_footer_text', array( $this, 'change_wp_footer' ) ); add_action( 'admin_head', array( $this, 'admin_head' ) ); } else { $this->check_version(); } } else { $this->check_version(); } update_option( 'redux_version_upgraded_from', ReduxFramework::$_version ); set_transient( '_redux_activation_redirect', true, 30 ); } public function check_version() { global $pagenow; if ( $pagenow == "admin-ajax.php" || ( $GLOBALS['pagenow'] == "customize" && isset( $_GET['theme'] ) && ! empty( $_GET['theme'] ) ) ) { return; } $saveVer = Redux_Helpers::major_version( get_option( 'redux_version_upgraded_from' ) ); $curVer = Redux_Helpers::major_version( ReduxFramework::$_version ); $compare = false; if ( Redux_Helpers::isLocalHost() ) { $compare = true; } else if ( class_exists( 'ReduxFrameworkPlugin' ) ) { $compare = true; } else { $redux = ReduxFrameworkInstances::get_all_instances(); if ( is_array( $redux ) ) { foreach ( $redux as $panel ) { if ( $panel->args['dev_mode'] == 1 ) { $compare = true; break; } } } } if ( $compare ) { $redirect = false; if ( empty( $saveVer ) ) { $redirect = true; // First time } // Removing redirect except for the first time with the plugin installed. :) Less annoying until we actually use this page. //else if ( version_compare( $curVer, $saveVer, '>' ) ) { // $redirect = true; // Previous version //} if ( $redirect && ! defined( 'WP_TESTS_DOMAIN' ) && ReduxFramework::$_as_plugin ) { add_action( 'init', array( $this, 'do_redirect' ) ); } } } public function do_redirect() { if ( ! defined( 'WP_CLI' ) ) { wp_redirect( admin_url( 'tools.php?page=redux-about' ) ); exit(); } } public function change_wp_footer() { echo __( 'If you like Redux please leave us a ★★★★★ rating. A huge thank you from Redux in advance!', 'redux-framework' ); } public function support_hash() { if ( ! wp_verify_nonce( $_POST['nonce'], 'redux-support-hash' ) ) { die(); } $data = get_option( 'redux_support_hash' ); $data = wp_parse_args( $data, array( 'check' => '', 'identifier' => '' ) ); $generate_hash = true; $system_info = Redux_Helpers::compileSystemStatus(); $newHash = md5( json_encode( $system_info ) ); $return = array(); if ( $newHash == $data['check'] ) { unset( $generate_hash ); } $post_data = array( 'hash' => md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ), 'site' => esc_url( home_url( '/' ) ), 'tracking' => Redux_Helpers::getTrackingObject(), 'system_status' => $system_info, ); //$post_data = json_encode( $post_data ); $post_data = serialize( $post_data ); if ( isset( $generate_hash ) && $generate_hash ) { $data['check'] = $newHash; $data['identifier'] = ""; $response = wp_remote_post( 'http://support.redux.io/v1/', array( 'method' => 'POST', 'timeout' => 65, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'compress' => true, 'headers' => array(), 'body' => array( 'data' => $post_data, 'serialize' => 1 ) ) ); if ( is_wp_error( $response ) ) { echo json_encode( array( 'status' => 'error', 'message' => $response->get_error_message() ) ); die( 1 ); } else { $response_code = wp_remote_retrieve_response_code( $response ); if ( $response_code == 200 ) { $response = wp_remote_retrieve_body( $response ); $return = json_decode( $response, true ); if ( isset( $return['identifier'] ) ) { $data['identifier'] = $return['identifier']; update_option( 'redux_support_hash', $data ); } } else { $response = wp_remote_retrieve_body( $response ); echo json_encode( array( 'status' => 'error', 'message' => $response ) ); } } } if ( ! empty( $data['identifier'] ) ) { $return['status'] = "success"; $return['identifier'] = $data['identifier']; } else { $return['status'] = "error"; $return['message'] = esc_html__( "Support hash could not be generated. Please try again later.", 'redux-framework' ); } echo json_encode( $return ); die( 1 ); } /** * Register the Dashboard Pages which are later hidden but these pages * are used to render the Welcome and Credits pages. * * @access public * @since 1.4 * @return void */ public function admin_menus() { $page = 'add_management_page'; // About Page $page( esc_html__( 'Welcome to Redux Framework', 'redux-framework' ), esc_html__( 'Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-about', array( $this, 'about_screen' ) ); // Changelog Page $page( esc_html__( 'Redux Framework Changelog', 'redux-framework' ), esc_html__( 'Redux Framework Changelog', 'redux-framework' ), $this->minimum_capability, 'redux-changelog', array( $this, 'changelog_screen' ) ); // Support Page $page( esc_html__( 'Get Support', 'redux-framework' ), esc_html__( 'Get Support', 'redux-framework' ), $this->minimum_capability, 'redux-support', array( $this, 'get_support' ) ); // Support Page $page( esc_html__( 'Redux Extensions', 'redux-framework' ), esc_html__( 'Redux Extensions', 'redux-framework' ), $this->minimum_capability, 'redux-extensions', array( $this, 'redux_extensions' ) ); // Credits Page $page( esc_html__( 'The people that develop Redux Framework', 'redux-framework' ), esc_html__( 'The people that develop Redux Framework', 'redux-framework' ), $this->minimum_capability, 'redux-credits', array( $this, 'credits_screen' ) ); // Status Page $page( esc_html__( 'Redux Framework Status', 'redux-framework' ), esc_html__( 'Redux Framework Status', 'redux-framework' ), $this->minimum_capability, 'redux-status', array( $this, 'status_screen' ) ); //remove_submenu_page( 'tools.php', 'redux-about' ); remove_submenu_page( 'tools.php', 'redux-status' ); remove_submenu_page( 'tools.php', 'redux-changelog' ); remove_submenu_page( 'tools.php', 'redux-getting-started' ); remove_submenu_page( 'tools.php', 'redux-credits' ); remove_submenu_page( 'tools.php', 'redux-support' ); remove_submenu_page( 'tools.php', 'redux-extensions' ); } /** * Hide Individual Dashboard Pages * * @access public * @since 1.4 * @return void */ public function admin_head() { // Badge for welcome page //$badge_url = ReduxFramework::$_url . 'assets/images/redux-badge.png'; ?>

    '; require_once 'views/about.php'; } /** * Render Changelog Screen * * @access public * @since 2.0.3 * @return void */ public function changelog_screen() { // Stupid hack for Wordpress alerts and warnings echo '

    '; require_once 'views/changelog.php'; } /** * Render Changelog Screen * * @access public * @since 2.0.3 * @return void */ public function redux_extensions() { // Stupid hack for Wordpress alerts and warnings echo '

    '; require_once 'views/extensions.php'; } /** * Render Get Support Screen * * @access public * @since 1.9 * @return void */ public function get_support() { // Stupid hack for Wordpress alerts and warnings echo '

    '; require_once 'views/support.php'; } /** * Render Credits Screen * * @access public * @since 1.4 * @return void */ public function credits_screen() { // Stupid hack for Wordpress alerts and warnings echo '

    '; require_once 'views/credits.php'; } /** * Render Status Report Screen * * @access public * @since 1.4 * @return void */ public function status_screen() { // Stupid hack for Wordpress alerts and warnings echo '

    '; require_once 'views/status_report.php'; } /** * Parse the Redux readme.txt file * * @since 2.0.3 * @return string $readme HTML formatted readme file */ public function parse_readme() { if ( file_exists( ReduxFramework::$_dir . 'inc/fields/raw/parsedown.php' ) ) { require_once ReduxFramework::$_dir . 'inc/fields/raw/parsedown.php'; $Parsedown = new Parsedown(); $data = @wp_remote_get( ReduxFramework::$_url . '../CHANGELOG.md' ); if ( isset( $data ) && ! empty( $data ) ) { $data = @wp_remote_retrieve_body( $data ); return $Parsedown->text( trim( str_replace( '# Redux Framework Changelog', '', $data ) ) ); } } return ''; } public function actions() { ?>

    Docs Review Us Donate

    get_contributors(); if ( empty ( $contributors ) ) { return ''; } $contributor_list = ''; return $contributor_list; } /** * Retreive list of contributors from GitHub. * * @access public * @since 1.4 * @return array $contributors List of contributors */ public function get_contributors() { $contributors = get_transient( 'redux_contributors' ); if ( false !== $contributors ) { return $contributors; } $response = wp_remote_get( 'https://api.github.com/repos/ReduxFramework/redux-framework/contributors', array( 'sslverify' => false ) ); if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) { return array(); } $contributors = json_decode( wp_remote_retrieve_body( $response ) ); if ( ! is_array( $contributors ) ) { return array(); } set_transient( 'redux_contributors', $contributors, 3600 ); return $contributors; } } new Redux_Welcome(); redux/ReduxCore/inc/welcome/js/redux-welcome-admin.js000066600000026725152143340070016636 0ustar00(function( $ ) { 'use strict'; $.redux_welcome = $.redux_welcome || {}; $( document ).ready( function() { $.redux_welcome.initQtip(); if ( jQuery( document.getElementById( "support_div" ) ).is( ":visible" ) ) { $.redux_welcome.initSupportPage(); } $.redux_welcome.supportHash(); } ); $.redux_welcome.supportHash = function() { jQuery( "#support_hash" ).focus( function() { var $this = jQuery( this ); $this.select(); // Work around Chrome's little problem $this.mouseup( function() { // Prevent further mouseup intervention $this.unbind( "mouseup" ); return false; } ); } ); jQuery( '.redux_support_hash' ).click( function( e ) { var $button = jQuery( this ); if ( $button.hasClass( 'disabled' ) ) { return; } var $nonce = jQuery( '#redux_support_nonce' ).val(); $button.addClass( 'disabled' ); $button.parent().append( '' ); $button.closest( '.spinner' ).fadeIn(); if ( !window.console ) console = {}; console.log = console.log || function( name, data ) {}; jQuery.ajax( { type: "post", dataType: "json", url: ajaxurl, data: { action: "redux_support_hash", nonce: $nonce }, error: function( response ) { console.log( response ); $button.removeClass( 'disabled' ); $button.parent().find( '.spinner' ).remove(); alert( 'There was an error. Please try again later.' ); }, success: function( response ) { if ( response.status == "success" ) { jQuery( '#support_hash' ).val( 'http://support.redux.io/?id=' + response.identifier ); $button.parents( 'fieldset:first' ).find( '.next' ).removeAttr( 'disabled' ).click(); } else { console.log( response ); alert( 'There was an error. Please try again later.' ); } } } ); e.preventDefault(); } ); }; $.redux_welcome.initSupportPage = function() { //jQuery time var current_fs, next_fs, previous_fs; //fieldsets var left, opacity, scale; //fieldset properties which we will animate var animating; //flag to prevent quick multi-click glitches $.fn.actualHeight = function() { // find the closest visible parent and get it's hidden children var visibleParent = this.closest( ':visible' ).children(), thisHeight; // set a temporary class on the hidden parent of the element visibleParent.addClass( 'temp-show' ); // get the height thisHeight = this.height(); // remove the temporary class visibleParent.removeClass( 'temp-show' ); return thisHeight; }; function setHeight() { var $height = 0; jQuery( document ).find( '#support_div fieldset' ).each( function() { var $actual = $( this ).actualHeight(); if ( $height < $actual ) { $height = $actual; } } ); jQuery( '#support_div' ).height( $height + 20 ); } setHeight(); $( window ).on( 'resize', function() { setHeight(); } ); jQuery( '#is_user' ).click( function() { jQuery( '#final_support .is_user' ).show(); jQuery( '#final_support .is_developer' ).hide(); jQuery( this ).parents( 'fieldset:first' ).find( '.next' ).click(); } ); jQuery( '#is_developer' ).click( function() { jQuery( '#final_support .is_user' ).hide(); jQuery( '#final_support .is_developer' ).show(); jQuery( this ).parents( 'fieldset:first' ).find( '.next' ).click(); } ); jQuery( "#support_div .next" ).click( function() { if ( animating ) return false; animating = true; current_fs = jQuery( this ).parent(); next_fs = jQuery( this ).parent().next(); //activate next step on progressbar using the index of next_fs jQuery( "#progressbar li" ).eq( jQuery( "fieldset" ).index( next_fs ) ).addClass( "active" ); //show the next fieldset next_fs.show(); //hide the current fieldset with style current_fs.animate( {opacity: 0}, { step: function( now, mx ) { //as the opacity of current_fs reduces to 0 - stored in "now" //1. scale current_fs down to 80% scale = 1 - (1 - now) * 0.2; //2. bring next_fs from the right(50%) left = (now * 50) + "%"; //3. increase opacity of next_fs to 1 as it moves in opacity = 1 - now; current_fs.css( {'transform': 'scale(' + scale + ')'} ); next_fs.css( {'left': left, 'opacity': opacity} ); }, duration: 800, complete: function() { current_fs.hide(); animating = false; }, //this comes from the custom easing plugin easing: 'easeInOutBack' } ); } ); jQuery( "#support_div .previous" ).click( function() { if ( animating ) return false; animating = true; current_fs = jQuery( this ).parent(); previous_fs = jQuery( this ).parent().prev(); //de-activate current step on progressbar jQuery( "#progressbar li" ).eq( jQuery( "fieldset" ).index( current_fs ) ).removeClass( "active" ); //show the previous fieldset previous_fs.show(); //hide the current fieldset with style current_fs.animate( {opacity: 0}, { step: function( now, mx ) { //as the opacity of current_fs reduces to 0 - stored in "now" //1. scale previous_fs from 80% to 100% scale = 0.8 + (1 - now) * 0.2; //2. take current_fs to the right(50%) - from 0% left = ((1 - now) * 50) + "%"; //3. increase opacity of previous_fs to 1 as it moves in opacity = 1 - now; current_fs.css( {'left': left} ); previous_fs.css( {'transform': 'scale(' + scale + ')', 'opacity': opacity} ); }, duration: 800, complete: function() { current_fs.hide(); animating = false; }, //this comes from the custom easing plugin easing: 'easeInOutBack' } ); } ); } $.redux_welcome.initQtip = function() { if ( $().qtip ) { var shadow = 'qtip-shadow'; var color = 'qtip-dark'; var rounded = ''; var style = ''; //qtip-bootstrap'; var classes = shadow + ',' + color + ',' + rounded + ',' + style; classes = classes.replace( /,/g, ' ' ); // Get position data var myPos = 'top center'; var atPos = 'bottom center'; // Tooltip trigger action var showEvent = 'click'; var hideEvent = 'click mouseleave'; // Tip show effect var tipShowEffect = 'slide'; var tipShowDuration = '500'; // Tip hide effect var tipHideEffect = 'slide'; var tipHideDuration = '500'; $( '.redux-hint-qtip' ).each( function() { $( this ).qtip( { content: { text: $( this ).attr( 'qtip-content' ), title: $( this ).attr( 'qtip-title' ) }, show: { effect: function() { switch ( tipShowEffect ) { case 'slide': $( this ).slideDown( tipShowDuration ); break; case 'fade': $( this ).fadeIn( tipShowDuration ); break; default: $( this ).show(); break; } }, event: showEvent, }, hide: { effect: function() { switch ( tipHideEffect ) { case 'slide': $( this ).slideUp( tipHideDuration ); break; case 'fade': $( this ).fadeOut( tipHideDuration ); break; default: $( this ).show( tipHideDuration ); break; } }, event: hideEvent, }, style: { classes: classes, }, position: { my: myPos, at: atPos, }, } ); } ); } }; })( jQuery );redux/ReduxCore/inc/welcome/js/jquery.easing.min.js000066600000012653152143340070016331 0ustar00/* * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ * * Uses the built in easing capabilities added In jQuery 1.1 * to offer multiple easing options * * TERMS OF USE - EASING EQUATIONS * * Open source under the BSD License. * * Copyright © 2001 Robert Penner * All rights reserved. * * TERMS OF USE - jQuery Easing * * Open source under the BSD License. * * Copyright © 2008 George McGinley Smith * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * Neither the name of the author nor the names of contributors may be used to endorse * or promote products derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * */ jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(ggetBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { * echo 'You have FireFox version 2 or greater'; * } * * User Agents Sampled from: http://www.useragentstring.com/ * * This implementation is based on the original work from Gary White * http://apptools.com/phptools/browser/ * */ class Browser { private $_agent = ''; private $_browser_name = ''; private $_version = ''; private $_platform = ''; private $_os = ''; private $_is_aol = false; private $_is_mobile = false; private $_is_tablet = false; private $_is_robot = false; private $_is_facebook = false; private $_aol_version = ''; const BROWSER_UNKNOWN = 'unknown'; const VERSION_UNKNOWN = 'unknown'; const BROWSER_OPERA = 'Opera'; // http://www.opera.com/ const BROWSER_OPERA_MINI = 'Opera Mini'; // http://www.opera.com/mini/ const BROWSER_WEBTV = 'WebTV'; // http://www.webtv.net/pc/ const BROWSER_IE = 'Internet Explorer'; // http://www.microsoft.com/ie/ const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile const BROWSER_KONQUEROR = 'Konqueror'; // http://www.konqueror.org/ const BROWSER_ICAB = 'iCab'; // http://www.icab.de/ const BROWSER_OMNIWEB = 'OmniWeb'; // http://www.omnigroup.com/applications/omniweb/ const BROWSER_FIREBIRD = 'Firebird'; // http://www.ibphoenix.com/ const BROWSER_FIREFOX = 'Firefox'; // http://www.mozilla.com/en-US/firefox/firefox.html const BROWSER_ICEWEASEL = 'Iceweasel'; // http://www.geticeweasel.org/ const BROWSER_SHIRETOKO = 'Shiretoko'; // http://wiki.mozilla.org/Projects/shiretoko const BROWSER_MOZILLA = 'Mozilla'; // http://www.mozilla.com/en-US/ const BROWSER_AMAYA = 'Amaya'; // http://www.w3.org/Amaya/ const BROWSER_LYNX = 'Lynx'; // http://en.wikipedia.org/wiki/Lynx const BROWSER_SAFARI = 'Safari'; // http://apple.com const BROWSER_IPHONE = 'iPhone'; // http://apple.com const BROWSER_IPOD = 'iPod'; // http://apple.com const BROWSER_IPAD = 'iPad'; // http://apple.com const BROWSER_CHROME = 'Chrome'; // http://www.google.com/chrome const BROWSER_ANDROID = 'Android'; // http://www.android.com/ const BROWSER_GOOGLEBOT = 'GoogleBot'; // http://en.wikipedia.org/wiki/Googlebot const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/ const BROWSER_BLACKBERRY = 'BlackBerry'; // http://www.blackberry.com/ const BROWSER_ICECAT = 'IceCat'; // http://en.wikipedia.org/wiki/GNU_IceCat const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // http://en.wikipedia.org/wiki/Web_Browser_for_S60 const BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform const BROWSER_MSN = 'MSN Browser'; // http://explorer.msn.com/ const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm const BROWSER_BINGBOT = 'Bing Bot'; // http://en.wikipedia.org/wiki/Bingbot const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // http://browser.netscape.com/ (DEPRECATED) const BROWSER_GALEON = 'Galeon'; // http://galeon.sourceforge.net/ (DEPRECATED) const BROWSER_NETPOSITIVE = 'NetPositive'; // http://en.wikipedia.org/wiki/NetPositive (DEPRECATED) const BROWSER_PHOENIX = 'Phoenix'; // http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED) const PLATFORM_UNKNOWN = 'unknown'; const PLATFORM_WINDOWS = 'Windows'; const PLATFORM_WINDOWS_CE = 'Windows CE'; const PLATFORM_APPLE = 'Apple'; const PLATFORM_LINUX = 'Linux'; const PLATFORM_OS2 = 'OS/2'; const PLATFORM_BEOS = 'BeOS'; const PLATFORM_IPHONE = 'iPhone'; const PLATFORM_IPOD = 'iPod'; const PLATFORM_IPAD = 'iPad'; const PLATFORM_BLACKBERRY = 'BlackBerry'; const PLATFORM_NOKIA = 'Nokia'; const PLATFORM_FREEBSD = 'FreeBSD'; const PLATFORM_OPENBSD = 'OpenBSD'; const PLATFORM_NETBSD = 'NetBSD'; const PLATFORM_SUNOS = 'SunOS'; const PLATFORM_OPENSOLARIS = 'OpenSolaris'; const PLATFORM_ANDROID = 'Android'; const OPERATING_SYSTEM_UNKNOWN = 'unknown'; public function __construct($userAgent = "") { $this->reset(); if ($userAgent != "") { $this->setUserAgent($userAgent); } else { $this->determine(); } } /** * Reset all properties */ public function reset() { $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; $this->_browser_name = self::BROWSER_UNKNOWN; $this->_version = self::VERSION_UNKNOWN; $this->_platform = self::PLATFORM_UNKNOWN; $this->_os = self::OPERATING_SYSTEM_UNKNOWN; $this->_is_aol = false; $this->_is_mobile = false; $this->_is_tablet = false; $this->_is_robot = false; $this->_is_facebook = false; $this->_aol_version = self::VERSION_UNKNOWN; } /** * Check to see if the specific browser is valid * @param string $browserName * @return bool True if the browser is the specified browser */ function isBrowser($browserName) { return (0 == strcasecmp($this->_browser_name, trim($browserName))); } /** * The name of the browser. All return types are from the class contants * @return string Name of the browser */ public function getBrowser() { return $this->_browser_name; } /** * Set the name of the browser * @param $browser string The name of the Browser */ public function setBrowser($browser) { $this->_browser_name = $browser; } /** * The name of the platform. All return types are from the class contants * @return string Name of the browser */ public function getPlatform() { return $this->_platform; } /** * Set the name of the platform * @param string $platform The name of the Platform */ public function setPlatform($platform) { $this->_platform = $platform; } /** * The version of the browser. * @return string Version of the browser (will only contain alpha-numeric characters and a period) */ public function getVersion() { return $this->_version; } /** * Set the version of the browser * @param string $version The version of the Browser */ public function setVersion($version) { $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/', '', $version); } /** * The version of AOL. * @return string Version of AOL (will only contain alpha-numeric characters and a period) */ public function getAolVersion() { return $this->_aol_version; } /** * Set the version of AOL * @param string $version The version of AOL */ public function setAolVersion($version) { $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/', '', $version); } /** * Is the browser from AOL? * @return boolean True if the browser is from AOL otherwise false */ public function isAol() { return $this->_is_aol; } /** * Is the browser from a mobile device? * @return boolean True if the browser is from a mobile device otherwise false */ public function isMobile() { return $this->_is_mobile; } /** * Is the browser from a tablet device? * @return boolean True if the browser is from a tablet device otherwise false */ public function isTablet() { return $this->_is_tablet; } /** * Is the browser from a robot (ex Slurp,GoogleBot)? * @return boolean True if the browser is from a robot otherwise false */ public function isRobot() { return $this->_is_robot; } /** * Is the browser from facebook? * @return boolean True if the browser is from facebook otherwise false */ public function isFacebook() { return $this->_is_facebook; } /** * Set the browser to be from AOL * @param $isAol */ public function setAol($isAol) { $this->_is_aol = $isAol; } /** * Set the Browser to be mobile * @param boolean $value is the browser a mobile browser or not */ protected function setMobile($value = true) { $this->_is_mobile = $value; } /** * Set the Browser to be tablet * @param boolean $value is the browser a tablet browser or not */ protected function setTablet($value = true) { $this->_is_tablet = $value; } /** * Set the Browser to be a robot * @param boolean $value is the browser a robot or not */ protected function setRobot($value = true) { $this->_is_robot = $value; } /** * Set the Browser to be a Facebook request * @param boolean $value is the browser a robot or not */ protected function setFacebook($value = true) { $this->_is_facebook = $value; } /** * Get the user agent value in use to determine the browser * @return string The user agent from the HTTP header */ public function getUserAgent() { return $this->_agent; } /** * Set the user agent value (the construction will use the HTTP header value - this will overwrite it) * @param string $agent_string The value for the User Agent */ public function setUserAgent($agent_string) { $this->reset(); $this->_agent = $agent_string; $this->determine(); } /** * Used to determine if the browser is actually "chromeframe" * @since 1.7 * @return boolean True if the browser is using chromeframe */ public function isChromeFrame() { return (strpos($this->_agent, "chromeframe") !== false); } /** * Returns a formatted string with a summary of the details of the browser. * @return string formatted string with a summary of the browser */ public function __toString() { return "Browser Name: {$this->getBrowser()}
    \n" . "Browser Version: {$this->getVersion()}
    \n" . "Browser User Agent String: {$this->getUserAgent()}
    \n" . "Platform: {$this->getPlatform()}
    "; } /** * Protected routine to calculate and determine what the browser is in use (including platform) */ protected function determine() { $this->checkPlatform(); $this->checkBrowsers(); $this->checkForAol(); } /** * Protected routine to determine the browser type * @return boolean True if the browser was detected otherwise false */ protected function checkBrowsers() { return ( // well-known, well-used // Special Notes: // (1) Opera must be checked before FireFox due to the odd // user agents used in some older versions of Opera // (2) WebTV is strapped onto Internet Explorer so we must // check for WebTV before IE // (3) (deprecated) Galeon is based on Firefox and needs to be // tested before Firefox is tested // (4) OmniWeb is based on Safari so OmniWeb check must occur // before Safari // (5) Netscape 9+ is based on Firefox so Netscape checks // before FireFox are necessary $this->checkBrowserWebTv() || $this->checkBrowserInternetExplorer() || $this->checkBrowserOpera() || $this->checkBrowserGaleon() || $this->checkBrowserNetscapeNavigator9Plus() || $this->checkBrowserFirefox() || $this->checkBrowserChrome() || $this->checkBrowserOmniWeb() || // common mobile $this->checkBrowserAndroid() || $this->checkBrowseriPad() || $this->checkBrowseriPod() || $this->checkBrowseriPhone() || $this->checkBrowserBlackBerry() || $this->checkBrowserNokia() || // common bots $this->checkBrowserGoogleBot() || $this->checkBrowserMSNBot() || $this->checkBrowserBingBot() || $this->checkBrowserSlurp() || // check for facebook external hit when loading URL $this->checkFacebookExternalHit() || // WebKit base check (post mobile and others) $this->checkBrowserSafari() || // everyone else $this->checkBrowserNetPositive() || $this->checkBrowserFirebird() || $this->checkBrowserKonqueror() || $this->checkBrowserIcab() || $this->checkBrowserPhoenix() || $this->checkBrowserAmaya() || $this->checkBrowserLynx() || $this->checkBrowserShiretoko() || $this->checkBrowserIceCat() || $this->checkBrowserIceweasel() || $this->checkBrowserW3CValidator() || $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */ ); } /** * Determine if the user is using a BlackBerry (last updated 1.7) * @return boolean True if the browser is the BlackBerry browser otherwise false */ protected function checkBrowserBlackBerry() { if (stripos($this->_agent, 'blackberry') !== false) { $aresult = explode("/", stristr($this->_agent, "BlackBerry")); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_BLACKBERRY; $this->setMobile(true); return true; } } return false; } /** * Determine if the user is using an AOL User Agent (last updated 1.7) * @return boolean True if the browser is from AOL otherwise false */ protected function checkForAol() { $this->setAol(false); $this->setAolVersion(self::VERSION_UNKNOWN); if (stripos($this->_agent, 'aol') !== false) { $aversion = explode(' ', stristr($this->_agent, 'AOL')); if (isset($aversion[1])) { $this->setAol(true); $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1])); return true; } } return false; } /** * Determine if the browser is the GoogleBot or not (last updated 1.7) * @return boolean True if the browser is the GoogletBot otherwise false */ protected function checkBrowserGoogleBot() { if (stripos($this->_agent, 'googlebot') !== false) { $aresult = explode('/', stristr($this->_agent, 'googlebot')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion(str_replace(';', '', $aversion[0])); $this->_browser_name = self::BROWSER_GOOGLEBOT; $this->setRobot(true); return true; } } return false; } /** * Determine if the browser is the MSNBot or not (last updated 1.9) * @return boolean True if the browser is the MSNBot otherwise false */ protected function checkBrowserMSNBot() { if (stripos($this->_agent, "msnbot") !== false) { $aresult = explode("/", stristr($this->_agent, "msnbot")); if (isset($aresult[1])) { $aversion = explode(" ", $aresult[1]); $this->setVersion(str_replace(";", "", $aversion[0])); $this->_browser_name = self::BROWSER_MSNBOT; $this->setRobot(true); return true; } } return false; } /** * Determine if the browser is the BingBot or not (last updated 1.9) * @return boolean True if the browser is the BingBot otherwise false */ protected function checkBrowserBingBot() { if (stripos($this->_agent, "bingbot") !== false) { $aresult = explode("/", stristr($this->_agent, "bingbot")); if (isset($aresult[1])) { $aversion = explode(" ", $aresult[1]); $this->setVersion(str_replace(";", "", $aversion[0])); $this->_browser_name = self::BROWSER_BINGBOT; $this->setRobot(true); return true; } } return false; } /** * Determine if the browser is the W3C Validator or not (last updated 1.7) * @return boolean True if the browser is the W3C Validator otherwise false */ protected function checkBrowserW3CValidator() { if (stripos($this->_agent, 'W3C-checklink') !== false) { $aresult = explode('/', stristr($this->_agent, 'W3C-checklink')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_W3CVALIDATOR; return true; } } else if (stripos($this->_agent, 'W3C_Validator') !== false) { // Some of the Validator versions do not delineate w/ a slash - add it back in $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent); $aresult = explode('/', stristr($ua, 'W3C_Validator')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_W3CVALIDATOR; return true; } } else if (stripos($this->_agent, 'W3C-mobileOK') !== false) { $this->_browser_name = self::BROWSER_W3CVALIDATOR; $this->setMobile(true); return true; } return false; } /** * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7) * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false */ protected function checkBrowserSlurp() { if (stripos($this->_agent, 'slurp') !== false) { $aresult = explode('/', stristr($this->_agent, 'Slurp')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->_browser_name = self::BROWSER_SLURP; $this->setRobot(true); $this->setMobile(false); return true; } } return false; } /** * Determine if the browser is Internet Explorer or not (last updated 1.7) * @return boolean True if the browser is Internet Explorer otherwise false */ protected function checkBrowserInternetExplorer() { // Test for IE11 if( stripos($this->_agent,'Trident/7.0; rv:11.0') !== false ) { $this->setBrowser(self::BROWSER_IE); $this->setVersion('11.0'); return true; } // Test for v1 - v1.5 IE else if (stripos($this->_agent, 'microsoft internet explorer') !== false) { $this->setBrowser(self::BROWSER_IE); $this->setVersion('1.0'); $aresult = stristr($this->_agent, '/'); if (preg_match('/308|425|426|474|0b1/i', $aresult)) { $this->setVersion('1.5'); } return true; } // Test for versions > 1.5 else if (stripos($this->_agent, 'msie') !== false && stripos($this->_agent, 'opera') === false) { // See if the browser is the odd MSN Explorer if (stripos($this->_agent, 'msnb') !== false) { $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'MSN')); if (isset($aresult[1])) { $this->setBrowser(self::BROWSER_MSN); $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); return true; } } $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'msie')); if (isset($aresult[1])) { $this->setBrowser(self::BROWSER_IE); $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); if(stripos($this->_agent, 'IEMobile') !== false) { $this->setBrowser(self::BROWSER_POCKET_IE); $this->setMobile(true); } return true; } } // Test for versions > IE 10 else if(stripos($this->_agent, 'trident') !== false) { $this->setBrowser(self::BROWSER_IE); $result = explode('rv:', $this->_agent); if (isset($result[1])) { $this->setVersion(preg_replace('/[^0-9.]+/', '', $result[1])); $this->_agent = str_replace(array("Mozilla", "Gecko"), "MSIE", $this->_agent); } } // Test for Pocket IE else if (stripos($this->_agent, 'mspie') !== false || stripos($this->_agent, 'pocket') !== false) { $aresult = explode(' ', stristr($this->_agent, 'mspie')); if (isset($aresult[1])) { $this->setPlatform(self::PLATFORM_WINDOWS_CE); $this->setBrowser(self::BROWSER_POCKET_IE); $this->setMobile(true); if (stripos($this->_agent, 'mspie') !== false) { $this->setVersion($aresult[1]); } else { $aversion = explode('/', $this->_agent); if (isset($aversion[1])) { $this->setVersion($aversion[1]); } } return true; } } return false; } /** * Determine if the browser is Opera or not (last updated 1.7) * @return boolean True if the browser is Opera otherwise false */ protected function checkBrowserOpera() { if (stripos($this->_agent, 'opera mini') !== false) { $resultant = stristr($this->_agent, 'opera mini'); if (preg_match('/\//', $resultant)) { $aresult = explode('/', $resultant); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); } } else { $aversion = explode(' ', stristr($resultant, 'opera mini')); if (isset($aversion[1])) { $this->setVersion($aversion[1]); } } $this->_browser_name = self::BROWSER_OPERA_MINI; $this->setMobile(true); return true; } else if (stripos($this->_agent, 'opera') !== false) { $resultant = stristr($this->_agent, 'opera'); if (preg_match('/Version\/(1*.*)$/', $resultant, $matches)) { $this->setVersion($matches[1]); } else if (preg_match('/\//', $resultant)) { $aresult = explode('/', str_replace("(", " ", $resultant)); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); } } else { $aversion = explode(' ', stristr($resultant, 'opera')); $this->setVersion(isset($aversion[1]) ? $aversion[1] : ""); } if (stripos($this->_agent, 'Opera Mobi') !== false) { $this->setMobile(true); } $this->_browser_name = self::BROWSER_OPERA; return true; } else if (stripos($this->_agent, 'OPR') !== false) { $resultant = stristr($this->_agent, 'OPR'); if (preg_match('/\//', $resultant)) { $aresult = explode('/', str_replace("(", " ", $resultant)); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); } } if (stripos($this->_agent, 'Mobile') !== false) { $this->setMobile(true); } $this->_browser_name = self::BROWSER_OPERA; return true; } return false; } /** * Determine if the browser is Chrome or not (last updated 1.7) * @return boolean True if the browser is Chrome otherwise false */ protected function checkBrowserChrome() { if (stripos($this->_agent, 'Chrome') !== false) { $aresult = explode('/', stristr($this->_agent, 'Chrome')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_CHROME); //Chrome on Android if (stripos($this->_agent, 'Android') !== false) { if (stripos($this->_agent, 'Mobile') !== false) { $this->setMobile(true); } else { $this->setTablet(true); } } return true; } } return false; } /** * Determine if the browser is WebTv or not (last updated 1.7) * @return boolean True if the browser is WebTv otherwise false */ protected function checkBrowserWebTv() { if (stripos($this->_agent, 'webtv') !== false) { $aresult = explode('/', stristr($this->_agent, 'webtv')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_WEBTV); return true; } } return false; } /** * Determine if the browser is NetPositive or not (last updated 1.7) * @return boolean True if the browser is NetPositive otherwise false */ protected function checkBrowserNetPositive() { if (stripos($this->_agent, 'NetPositive') !== false) { $aresult = explode('/', stristr($this->_agent, 'NetPositive')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion(str_replace(array('(', ')', ';'), '', $aversion[0])); $this->setBrowser(self::BROWSER_NETPOSITIVE); return true; } } return false; } /** * Determine if the browser is Galeon or not (last updated 1.7) * @return boolean True if the browser is Galeon otherwise false */ protected function checkBrowserGaleon() { if (stripos($this->_agent, 'galeon') !== false) { $aresult = explode(' ', stristr($this->_agent, 'galeon')); $aversion = explode('/', $aresult[0]); if (isset($aversion[1])) { $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_GALEON); return true; } } return false; } /** * Determine if the browser is Konqueror or not (last updated 1.7) * @return boolean True if the browser is Konqueror otherwise false */ protected function checkBrowserKonqueror() { if (stripos($this->_agent, 'Konqueror') !== false) { $aresult = explode(' ', stristr($this->_agent, 'Konqueror')); $aversion = explode('/', $aresult[0]); if (isset($aversion[1])) { $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_KONQUEROR); return true; } } return false; } /** * Determine if the browser is iCab or not (last updated 1.7) * @return boolean True if the browser is iCab otherwise false */ protected function checkBrowserIcab() { if (stripos($this->_agent, 'icab') !== false) { $aversion = explode(' ', stristr(str_replace('/', ' ', $this->_agent), 'icab')); if (isset($aversion[1])) { $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_ICAB); return true; } } return false; } /** * Determine if the browser is OmniWeb or not (last updated 1.7) * @return boolean True if the browser is OmniWeb otherwise false */ protected function checkBrowserOmniWeb() { if (stripos($this->_agent, 'omniweb') !== false) { $aresult = explode('/', stristr($this->_agent, 'omniweb')); $aversion = explode(' ', isset($aresult[1]) ? $aresult[1] : ""); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_OMNIWEB); return true; } return false; } /** * Determine if the browser is Phoenix or not (last updated 1.7) * @return boolean True if the browser is Phoenix otherwise false */ protected function checkBrowserPhoenix() { if (stripos($this->_agent, 'Phoenix') !== false) { $aversion = explode('/', stristr($this->_agent, 'Phoenix')); if (isset($aversion[1])) { $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_PHOENIX); return true; } } return false; } /** * Determine if the browser is Firebird or not (last updated 1.7) * @return boolean True if the browser is Firebird otherwise false */ protected function checkBrowserFirebird() { if (stripos($this->_agent, 'Firebird') !== false) { $aversion = explode('/', stristr($this->_agent, 'Firebird')); if (isset($aversion[1])) { $this->setVersion($aversion[1]); $this->setBrowser(self::BROWSER_FIREBIRD); return true; } } return false; } /** * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7) * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008) * @return boolean True if the browser is Netscape Navigator 9+ otherwise false */ protected function checkBrowserNetscapeNavigator9Plus() { if (stripos($this->_agent, 'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i', $this->_agent, $matches)) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); return true; } else if (stripos($this->_agent, 'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i', $this->_agent, $matches)) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); return true; } return false; } /** * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7) * @return boolean True if the browser is Shiretoko otherwise false */ protected function checkBrowserShiretoko() { if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i', $this->_agent, $matches)) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_SHIRETOKO); return true; } return false; } /** * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7) * @return boolean True if the browser is Ice Cat otherwise false */ protected function checkBrowserIceCat() { if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i', $this->_agent, $matches)) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_ICECAT); return true; } return false; } /** * Determine if the browser is Nokia or not (last updated 1.7) * @return boolean True if the browser is Nokia otherwise false */ protected function checkBrowserNokia() { if (preg_match("/Nokia([^\/]+)\/([^ SP]+)/i", $this->_agent, $matches)) { $this->setVersion($matches[2]); if (stripos($this->_agent, 'Series60') !== false || strpos($this->_agent, 'S60') !== false) { $this->setBrowser(self::BROWSER_NOKIA_S60); } else { $this->setBrowser(self::BROWSER_NOKIA); } $this->setMobile(true); return true; } return false; } /** * Determine if the browser is Firefox or not (last updated 1.7) * @return boolean True if the browser is Firefox otherwise false */ protected function checkBrowserFirefox() { if (stripos($this->_agent, 'safari') === false) { if (preg_match("/Firefox[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_FIREFOX); //Firefox on Android if (stripos($this->_agent, 'Android') !== false) { if (stripos($this->_agent, 'Mobile') !== false) { $this->setMobile(true); } else { $this->setTablet(true); } } return true; } else if (preg_match("/Firefox$/i", $this->_agent, $matches)) { $this->setVersion(""); $this->setBrowser(self::BROWSER_FIREFOX); return true; } } return false; } /** * Determine if the browser is Firefox or not (last updated 1.7) * @return boolean True if the browser is Firefox otherwise false */ protected function checkBrowserIceweasel() { if (stripos($this->_agent, 'Iceweasel') !== false) { $aresult = explode('/', stristr($this->_agent, 'Iceweasel')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_ICEWEASEL); return true; } } return false; } /** * Determine if the browser is Mozilla or not (last updated 1.7) * @return boolean True if the browser is Mozilla otherwise false */ protected function checkBrowserMozilla() { if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { $aversion = explode(' ', stristr($this->_agent, 'rv:')); preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent, $aversion); $this->setVersion(str_replace('rv:', '', $aversion[0])); $this->setBrowser(self::BROWSER_MOZILLA); return true; } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { $aversion = explode('', stristr($this->_agent, 'rv:')); $this->setVersion(str_replace('rv:', '', $aversion[0])); $this->setBrowser(self::BROWSER_MOZILLA); return true; } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/mozilla\/([^ ]*)/i', $this->_agent, $matches) && stripos($this->_agent, 'netscape') === false) { $this->setVersion($matches[1]); $this->setBrowser(self::BROWSER_MOZILLA); return true; } return false; } /** * Determine if the browser is Lynx or not (last updated 1.7) * @return boolean True if the browser is Lynx otherwise false */ protected function checkBrowserLynx() { if (stripos($this->_agent, 'lynx') !== false) { $aresult = explode('/', stristr($this->_agent, 'Lynx')); $aversion = explode(' ', (isset($aresult[1]) ? $aresult[1] : "")); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_LYNX); return true; } return false; } /** * Determine if the browser is Amaya or not (last updated 1.7) * @return boolean True if the browser is Amaya otherwise false */ protected function checkBrowserAmaya() { if (stripos($this->_agent, 'amaya') !== false) { $aresult = explode('/', stristr($this->_agent, 'Amaya')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_AMAYA); return true; } } return false; } /** * Determine if the browser is Safari or not (last updated 1.7) * @return boolean True if the browser is Safari otherwise false */ protected function checkBrowserSafari() { if (stripos($this->_agent, 'Safari') !== false && stripos($this->_agent, 'iPhone') === false && stripos($this->_agent, 'iPod') === false) { $aresult = explode('/', stristr($this->_agent, 'Version')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } $this->setBrowser(self::BROWSER_SAFARI); return true; } return false; } /** * Detect if URL is loaded from FacebookExternalHit * @return boolean True if it detects FacebookExternalHit otherwise false */ protected function checkFacebookExternalHit() { if(stristr($this->_agent,'FacebookExternalHit')) { $this->setRobot(true); $this->setFacebook(true); return true; } return false; } /** * Detect if URL is being loaded from internal Facebook browser * @return boolean True if it detects internal Facebook browser otherwise false */ protected function checkForFacebookIos() { if(stristr($this->_agent,'FBIOS')) { $this->setFacebook(true); return true; } return false; } /** * Detect Version for the Safari browser on iOS devices * @return boolean True if it detects the version correctly otherwise false */ protected function getSafariVersionOnIos() { $aresult = explode('/',stristr($this->_agent,'Version')); if( isset($aresult[1]) ) { $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); return true; } return false; } /** * Detect Version for the Chrome browser on iOS devices * @return boolean True if it detects the version correctly otherwise false */ protected function getChromeVersionOnIos() { $aresult = explode('/',stristr($this->_agent,'CriOS')); if( isset($aresult[1]) ) { $aversion = explode(' ',$aresult[1]); $this->setVersion($aversion[0]); $this->setBrowser(self::BROWSER_CHROME); return true; } return false; } /** * Determine if the browser is iPhone or not (last updated 1.7) * @return boolean True if the browser is iPhone otherwise false */ protected function checkBrowseriPhone() { if( stripos($this->_agent,'iPhone') !== false ) { $this->setVersion(self::VERSION_UNKNOWN); $this->setBrowser(self::BROWSER_IPHONE); $this->getSafariVersionOnIos(); $this->getChromeVersionOnIos(); $this->checkForFacebookIos(); $this->setMobile(true); return true; } return false; } /** * Determine if the browser is iPad or not (last updated 1.7) * @return boolean True if the browser is iPad otherwise false */ protected function checkBrowseriPad() { if( stripos($this->_agent,'iPad') !== false ) { $this->setVersion(self::VERSION_UNKNOWN); $this->setBrowser(self::BROWSER_IPAD); $this->getSafariVersionOnIos(); $this->getChromeVersionOnIos(); $this->checkForFacebookIos(); $this->setTablet(true); return true; } return false; } /** * Determine if the browser is iPod or not (last updated 1.7) * @return boolean True if the browser is iPod otherwise false */ protected function checkBrowseriPod() { if( stripos($this->_agent,'iPod') !== false ) { $this->setVersion(self::VERSION_UNKNOWN); $this->setBrowser(self::BROWSER_IPOD); $this->getSafariVersionOnIos(); $this->getChromeVersionOnIos(); $this->checkForFacebookIos(); $this->setMobile(true); return true; } return false; } /** * Determine if the browser is Android or not (last updated 1.7) * @return boolean True if the browser is Android otherwise false */ protected function checkBrowserAndroid() { if (stripos($this->_agent, 'Android') !== false) { $aresult = explode(' ', stristr($this->_agent, 'Android')); if (isset($aresult[1])) { $aversion = explode(' ', $aresult[1]); $this->setVersion($aversion[0]); } else { $this->setVersion(self::VERSION_UNKNOWN); } if (stripos($this->_agent, 'Mobile') !== false) { $this->setMobile(true); } else { $this->setTablet(true); } $this->setBrowser(self::BROWSER_ANDROID); return true; } return false; } /** * Determine the user's platform (last updated 1.7) */ protected function checkPlatform() { if (stripos($this->_agent, 'windows') !== false) { $this->_platform = self::PLATFORM_WINDOWS; } else if (stripos($this->_agent, 'iPad') !== false) { $this->_platform = self::PLATFORM_IPAD; } else if (stripos($this->_agent, 'iPod') !== false) { $this->_platform = self::PLATFORM_IPOD; } else if (stripos($this->_agent, 'iPhone') !== false) { $this->_platform = self::PLATFORM_IPHONE; } elseif (stripos($this->_agent, 'mac') !== false) { $this->_platform = self::PLATFORM_APPLE; } elseif (stripos($this->_agent, 'android') !== false) { $this->_platform = self::PLATFORM_ANDROID; } elseif (stripos($this->_agent, 'linux') !== false) { $this->_platform = self::PLATFORM_LINUX; } else if (stripos($this->_agent, 'Nokia') !== false) { $this->_platform = self::PLATFORM_NOKIA; } else if (stripos($this->_agent, 'BlackBerry') !== false) { $this->_platform = self::PLATFORM_BLACKBERRY; } elseif (stripos($this->_agent, 'FreeBSD') !== false) { $this->_platform = self::PLATFORM_FREEBSD; } elseif (stripos($this->_agent, 'OpenBSD') !== false) { $this->_platform = self::PLATFORM_OPENBSD; } elseif (stripos($this->_agent, 'NetBSD') !== false) { $this->_platform = self::PLATFORM_NETBSD; } elseif (stripos($this->_agent, 'OpenSolaris') !== false) { $this->_platform = self::PLATFORM_OPENSOLARIS; } elseif (stripos($this->_agent, 'SunOS') !== false) { $this->_platform = self::PLATFORM_SUNOS; } elseif (stripos($this->_agent, 'OS\/2') !== false) { $this->_platform = self::PLATFORM_OS2; } elseif (stripos($this->_agent, 'BeOS') !== false) { $this->_platform = self::PLATFORM_BEOS; } elseif (stripos($this->_agent, 'win') !== false) { $this->_platform = self::PLATFORM_WINDOWS; } } } redux/ReduxCore/inc/extensions/options_object/extension_options_object.php000066600000007315152143340070023423 0ustar00. * * @package ReduxFramework * @author Kevin Provance (kprovance) * @version 4.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_Extension_options_object' ) ) { /** * Main ReduxFramework options_object extension class * * @since 3.1.6 */ class ReduxFramework_Extension_options_object { // Protected vars protected $parent; public $extension_url; public $extension_dir; public static $theInstance; public static $version = "4.0"; public $is_field = false; /** * Class Constructor. Defines the args for the extions class * * @since 1.0.0 * @access public * * @param array $sections Panel sections. * @param array $args Class constructor arguments. * @param array $extra_tabs Extra panel tabs. * * @return void */ public function __construct( $parent ) { $this->parent = $parent; if ( empty( $this->extension_dir ) ) { //$this->extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); } $this->field_name = 'options_object'; self::$theInstance = $this; $this->is_field = Redux_Helpers::isFieldInUse($parent, 'options_object'); if ( !$this->is_field && $this->parent->args['dev_mode'] && $this->parent->args['show_options_object'] ) { $this->add_section(); } add_filter( 'redux/' . $this->parent->args['opt_name'] . '/field/class/' . $this->field_name, array( &$this, 'overload_field_path' ) ); // Adds the local field } public function add_section() { $this->parent->sections[] = array( 'id' => 'options-object', 'title' => __( 'Options Object', 'redux-framework' ), 'heading' => '', 'icon' => 'el el-info-circle', 'customizer' => false, 'fields' => array( array( 'id' => 'redux_options_object', 'type'=> 'options_object', 'title' => '', ) ), ); } // Forces the use of the embeded field path vs what the core typically would use public function overload_field_path( $field ) { return dirname( __FILE__ ) . '/' . $this->field_name . '/field_' . $this->field_name . '.php'; } } // class } // if redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.min.js000066600000001172152143340070026115 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.options_object=redux.field_objects.options_object||{},redux.field_objects.options_object.init=function(b){b||(b=a(document).find(".redux-container-options_object"));var c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),a("#consolePrintObject").on("click",function(b){b.preventDefault(),console.log(a.parseJSON(a("#redux-object-json").html()))}),"function"==typeof jsonView&&jsonView("#redux-object-json","#redux-object-browser"))}}(jQuery);redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.php000066600000014501152143340070025506 0ustar00. * * @package ReduxFramework * @author Kevin Provance (kprovance) * @version 3.5.4 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_options_object' ) ) { /** * Main ReduxFramework_options_object class * * @since 1.0.0 */ class ReduxFramework_options_object { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; $this->is_field = $this->parent->extensions['options_object']->is_field; $this->extension_dir = ReduxFramework::$_dir . 'inc/extensions/options_object/'; $this->extension_url = ReduxFramework::$_url . 'inc/extensions/options_object/'; // Set default args for this field to avoid bad indexes. Change this to anything you use. $defaults = array( 'options' => array(), 'stylesheet' => '', 'output' => true, 'enqueue' => true, 'enqueue_frontend' => true ); $this->field = wp_parse_args( $this->field, $defaults ); } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { if ( version_compare( phpversion(), "5.3.0", ">=" ) ) { $json = json_encode( $this->parent->options, true ); } else { $json = json_encode( $this->parent->options ); } $defaults = array( 'full_width' => true, 'overflow' => 'inherit', ); $this->field = wp_parse_args( $this->field, $defaults ); if ( $this->is_field ) { $fullWidth = $this->field['full_width']; } $bDoClose = false; $id = $this->parent->args['opt_name'] . '-' . $this->field['id']; if ( ! $this->is_field || ( $this->is_field && false == $fullWidth ) ) { ?>

    '; } else { echo ''; } echo ''; echo ''; echo ''; } // All sections, settings, and controls will be added here public function _register_customizer_controls( $wp_customize ) { if ( ! class_exists( 'Redux_Customizer_Section' ) ) { require_once dirname( __FILE__ ) . '/inc/customizer_section.php'; if ( method_exists( $wp_customize, 'register_section_type' ) ) { $wp_customize->register_section_type( 'Redux_Customizer_Section' ); } } if ( ! class_exists( 'Redux_Customizer_Panel' ) ) { require_once dirname( __FILE__ ) . '/inc/customizer_panel.php'; if ( method_exists( $wp_customize, 'register_panel_type' ) ) { $wp_customize->register_panel_type( 'Redux_Customizer_Panel' ); } } if ( ! class_exists( 'Redux_Customizer_Control' ) ) { require_once dirname( __FILE__ ) . '/inc/customizer_control.php'; } require_once dirname( __FILE__ ) . '/inc/customizer_fields.php'; require_once dirname( __FILE__ ) . '/inc/customizer_devs.php'; do_action( "redux/extension/customizer/control/includes" ); //if ($this->parent->args['dev_mode']) { // $section = new Redux_Customizer_rAds( $wp_customize, 'redux_rAds', array( // 'priority' => 0, // ) ); // $wp_customize->add_section( $section, array( // 'priority' => 0, // ) ); // // //$wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array( // // 'section' => 'redux_rAds', // // 'settings' => 'redux_rAds_field', // // 'type' => 'redux-rAds', // //) ) ); // // // // //} if ( $this->parent->args['dev_mode'] ) { //$args = array( // 'priority' => 0, //); ////$section = new Redux_Customizer_Section( $wp_customize, 'redux_rAds', $args ); ////$wp_customize->add_section( $section, $args ); //$this->add_section( 'redux_rAds', array( // 'title' => '', // 'priority' => 1, // 'description' => '', // 'capability' => 'edit_theme_options', //), $wp_customize ); // //$wp_customize->add_control( new WP_Customize_Color_Control( // $wp_customize, // 'redux_rAds_display', // array( // 'section' => 'redux_rAds', // 'settings' => 'redux_rAds_display', // ) //)); ////$wp_customize->add_control( new Redux_Customizer_Control_rAds( $wp_customize, 'reduxAdsDisplay', array( //// 'section' => 'redux_rAds', //// 'settings' => 'redux_rAds_field', //// 'type' => 'redux-rAds', ////) ) ); //start copyright settings //$section = new Redux_Customizer_section_rAds( $wp_customize, 'redux_rAds', array( // 'priority' => -999, //) ); //$wp_customize->add_section( $section, array( // 'priority' => -999, //) ); //$wp_customize->add_setting( // 'redux_rAds_empty' //); //$wp_customize->add_control( // new Redux_Customizer_Control_rAds( // $wp_customize, // 'redux_rAds_empty', // array( // 'section' => 'redux_rAds', // 'settings' => 'redux_rAds_empty' // ) // ) //); } $order = array( 'heading' => - 500, 'option' => - 500, ); $defaults = array( 'default-color' => '', 'default-image' => '', 'wp-head-callback' => '', 'admin-head-callback' => '', 'admin-preview-callback' => '' ); $panel = ""; $this->parent->args['options_api'] = false; $this->parent->_register_settings(); foreach ( $this->parent->sections as $key => $section ) { // Not a type that should go on the customizer if ( isset( $section['type'] ) && ( $section['type'] == "divide" ) ) { continue; } if ( isset( $section['id'] ) && $section['id'] == "import/export" ) { continue; } // If section customizer is set to false if ( isset( $section['customizer'] ) && $section['customizer'] === false ) { continue; } $section['permissions'] = isset( $section['permissions'] ) ? $section['permissions'] : 'edit_theme_options'; // No errors please if ( ! isset( $section['desc'] ) ) { $section['desc'] = ""; } // Fill the description if there is a subtitle if ( empty( $section['desc'] ) && ! empty( $section['subtitle'] ) ) { $section['desc'] = $section['subtitle']; } // Let's make a section ID from the title if ( empty( $section['id'] ) ) { $section['id'] = strtolower( str_replace( " ", "", $section['title'] ) ); } // No title is present, let's show what section is missing a title if ( ! isset( $section['title'] ) ) { $section['title'] = ""; } // Let's set a default priority if ( empty( $section['priority'] ) ) { $section['priority'] = $order['heading']; $order['heading'] ++; } //print_r($section); //print_r($this->parent->sections[$key+1]); //echo $key; //exit(); if ( method_exists( $wp_customize, 'add_panel' ) && ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) && isset( $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) && $this->parent->sections[ ( $key + 1 ) ]['subsection'] ) { $this->add_panel( $section['id'], array( 'priority' => $section['priority'], 'capability' => $section['permissions'], //'theme_supports' => '', 'title' => $section['title'], 'section' => $section, 'opt_name' => $this->parent->args['opt_name'], 'description' => '', ), $wp_customize ); $panel = $section['id']; $this->add_section( $section['id'], array( 'title' => $section['title'], 'priority' => $section['priority'], 'description' => $section['desc'], 'section' => $section, 'opt_name' => $this->parent->args['opt_name'], 'capability' => $section['permissions'], 'panel' => $panel ), $wp_customize ); } else { if ( ! isset( $section['subsection'] ) || ( isset( $section['subsection'] ) && $section['subsection'] != true ) ) { $panel = ""; } $this->add_section( $section['id'], array( 'title' => $section['title'], 'priority' => $section['priority'], 'description' => $section['desc'], 'opt_name' => $this->parent->args['opt_name'], 'section' => $section, 'capability' => $section['permissions'], 'panel' => $panel ), $wp_customize ); } if ( ! isset( $section['fields'] ) || ( isset( $section['fields'] ) && empty( $section['fields'] ) ) ) { continue; } foreach ( $section['fields'] as $skey => $option ) { if ( isset( $option['customizer'] ) && $option['customizer'] === false ) { continue; } if ( $this->parent->args['customizer'] === false && ( ! isset( $option['customizer'] ) || $option['customizer'] !== true ) ) { continue; } $this->options[ $option['id'] ] = $option; add_action( 'redux/advanced_customizer/control/render/' . $this->parent->args['opt_name'] . '-' . $option['id'], array( $this, 'render' ) ); $option['permissions'] = isset( $option['permissions'] ) ? $option['permissions'] : 'edit_theme_options'; // //if ( isset( $option['validate_callback'] ) && ! empty( $option['validate_callback'] ) ) { // continue; //} //Change the item priority if not set if ( $option['type'] != 'heading' && ! isset( $option['priority'] ) ) { $option['priority'] = $order['option']; $order['option'] ++; } if ( ! empty( $this->options_defaults[ $option['id'] ] ) ) { $option['default'] = $this->options_defaults['option']['id']; } //$option['id'] = $this->parent->args['opt_name'].'['.$option['id'].']'; //echo $option['id']; if ( ! isset( $option['default'] ) ) { $option['default'] = ""; } if ( ! isset( $option['title'] ) ) { $option['title'] = ""; } $option['id'] = $this->parent->args['opt_name'] . '[' . $option['id'] . ']'; if ( $option['type'] != "heading" && $option['type'] != "import_export" && ! empty( $option['type'] ) ) { $wp_customize->add_setting( $option['id'], array( 'default' => $option['default'], //'type' => 'option', //'capabilities' => $option['permissions'], //'capabilities' => 'edit_theme_options', //'capabilities' => $this->parent->args['page_permissions'], 'transport' => 'refresh', 'opt_name' => $this->parent->args['opt_name'], //'theme_supports' => '', //'sanitize_callback' => '__return_false', 'sanitize_callback' => array( $this, '_field_validation' ), //'sanitize_js_callback' =>array( &$parent, '_field_input' ), ) ); } if ( ! empty( $option['data'] ) && empty( $option['options'] ) ) { if ( empty( $option['args'] ) ) { $option['args'] = array(); } if ( $option['data'] == "elusive-icons" || $option['data'] == "elusive-icon" || $option['data'] == "elusive" ) { $icons_file = ReduxFramework::$_dir . 'inc/fields/select/elusive-icons.php'; $icons_file = apply_filters( 'redux-font-icons-file', $icons_file ); if ( file_exists( $icons_file ) ) { require_once $icons_file; } } $option['options'] = $this->parent->get_wordpress_data( $option['data'], $option['args'] ); } $class_name = 'Redux_Customizer_Control_' . $option['type']; do_action( 'redux/extension/customizer/control_init', $option ); if ( ! class_exists( $class_name ) ) { continue; } $wp_customize->add_control( new $class_name( $wp_customize, $option['id'], array( 'label' => $option['title'], 'section' => $section['id'], 'settings' => $option['id'], 'type' => 'redux-' . $option['type'], 'field' => $option, 'ReduxFramework' => $this->parent, 'active_callback' => ( isset( $option['required'] ) && class_exists( 'Redux_Customizer_Active_Callback' ) ) ? array( 'Redux_Customizer_Active_Callback', 'evaluate' ) : '__return_true', 'priority' => $option['priority'], ) ) ); $section['fields'][ $skey ]['name'] = $option['id']; if ( ! isset ( $section['fields'][ $skey ]['class'] ) ) { // No errors please $section['fields'][ $skey ]['class'] = ""; } $this->controls[ $section['fields'][ $skey ]['id'] ] = $section['fields'][ $skey ]; add_action( 'redux/advanced_customizer/render/' . $option['id'], array( $this, 'field_render' ), $option['priority'] ); } } } public function add_section( $id, $args = array(), $wp_customize ) { if ( is_a( $id, 'WP_Customize_Section' ) ) { $section = $id; } else { $section_class = apply_filters( 'redux/customizer/section/class_name', "Redux_Customizer_Section" ); $section = new $section_class( $wp_customize, $id, $args ); } $wp_customize->add_section( $section, $args ); } /** * Add a customize panel. * * @since 4.0.0 * @access public * * @param WP_Customize_Panel|string $id Customize Panel object, or Panel ID. * @param array $args Optional. Panel arguments. Default empty array. */ public function add_panel( $id, $args = array(), $wp_customize ) { if ( is_a( $id, 'WP_Customize_Panel' ) ) { $panel = $id; } else { $panel_class = apply_filters( 'redux/customizer/panel/class_name', "Redux_Customizer_Panel" ); $panel = new $panel_class( $wp_customize, $id, $args ); } $wp_customize->add_panel( $panel, $args ); } public function field_render( $option ) { echo '1'; preg_match_all( "/\[([^\]]*)\]/", $option->id, $matches ); $id = $matches[1][0]; echo $option->link(); //$link = $option->link(); //echo $link; $this->parent->_field_input( $this->controls[ $id ] ); echo '2'; } public function customizer_save_before( $plugin_options ) { $this->before_save = $this->parent->options; //$parent->_field_input( $plugin_options ); } public function customizer_save_after( $wp_customize ) { if ( empty( $this->parent->options ) ) { $this->parent->get_options(); } if ( empty( $this->orig_options ) && ! empty( $this->parent->options ) ) { $this->orig_options = $this->parent->options; } $options = json_decode( stripslashes_deep( $_POST['customized'] ), true ); $compiler = false; $changed = false; foreach ( $options as $key => $value ) { if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) { $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) ); if ( ! isset( $this->orig_options[ $key ] ) || $this->orig_options[ $key ] != $value || ( isset( $this->orig_options[ $key ] ) && ! empty( $this->orig_options[ $key ] ) && empty( $value ) ) ) { $this->parent->options[ $key ] = $value; $changed = true; if ( isset( $this->parent->compiler_fields[ $key ] ) ) { $compiler = true; } } } } if ( $changed ) { $this->parent->set_options( $this->parent->options ); if ( $compiler ) { // Have to set this to stop the output of the CSS and typography stuff. $this->parent->no_output = true; $this->parent->_enqueue_output(); do_action( "redux/options/{$this->parent->args['opt_name']}/compiler", $this->parent->options, $this->parent->compilerCSS ); do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this->parent ); } } } /** * Enqueue CSS/JS for preview pane * * @since 1.0.0 * @access public * @global $wp_styles * @return void */ public function _enqueue_previewer() { wp_enqueue_script( 'redux-extension-previewer-js', $this->_extension_url . 'assets/js/preview.js' ); $localize = array( 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ), 'reset_confirm' => __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ), 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ), 'opt_name' => $this->args['opt_name'], //'folds' => $this->folds, 'options' => $this->parent->options, 'defaults' => $this->parent->options_defaults, ); wp_localize_script( 'redux-extension-previewer-js', 'reduxPost', $localize ); } /** * Enqueue CSS/JS for the customizer controls * * @since 1.0.0 * @access public * @global $wp_styles * @return void */ public function _enqueue() { global $wp_styles; //wp_enqueue_style( 'wp-pointer' ); //wp_enqueue_script( 'wp-pointer' ); // Remove when code is in place! //wp_enqueue_script('redux-extension-customizer-js', $this->_extension_url . 'assets/js/customizer.js'); // Get styles //wp_enqueue_style('redux-extension-customizer-css', $this->_extension_url . 'assets/css/customizer.css'); $localize = array( 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ), 'reset_confirm' => __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ), 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ), 'opt_name' => $this->args['opt_name'], //'folds' => $this->folds, 'field' => $this->parent->options, 'defaults' => $this->parent->options_defaults, ); // Values used by the javascript wp_localize_script( 'redux-js', 'redux_opts', $localize ); do_action( 'redux-enqueue-' . $this->args['opt_name'] ); foreach ( $this->sections as $section ) { if ( isset( $section['fields'] ) ) { foreach ( $section['fields'] as $field ) { if ( isset( $field['type'] ) ) { $field_class = 'ReduxFramework_' . $field['type']; if ( ! class_exists( $field_class ) ) { $class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class ); if ( $class_file ) { /** @noinspection PhpIncludeInspection */ require_once( $class_file ); } } if ( class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) { $enqueue = new $field_class( '', '', $this ); $enqueue->enqueue(); } } } } } } /** * Register Option for use * * @since 1.0.0 * @access public * @return void */ public function _register_setting() { } /** * Validate the options before insertion * * @since 3.0.0 * @access public * * @param array $plugin_options The options array * * @return */ public function _field_validation( $value ) { //print_r( $value ); //print_r( $_POST ); return $value; //return $this->parent->_validate_options( $plugin_options ); } /** * HTML OUTPUT. * * @since 1.0.0 * @access public * @return void */ public function _customizer_html_output() { } } // class function redux_customizer_custom_validation( $field ) { return $field; } } // if redux/ReduxCore/inc/extensions/customizer/extension_customizer.js000066600000043360152143340070021616 0ustar00/* global jQuery, document, redux, redux_change, setting */ /*! SerializeJSON jQuery plugin. https://github.com/marioizquierdo/jquery.serializeJSON version 2.6.0 (Apr, 2015) Copyright (c) 2012, 2015 Mario Izquierdo Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. */ (function( $ ) { "use strict"; // jQuery('form').serializeJSON() $.fn.serializeJSON = function( options ) { var serializedObject, formAsArray, keys, type, value, _ref, f, opts; f = $.serializeJSON; opts = f.setupOpts( options ); // calculate values for options {parseNumbers, parseBoolens, parseNulls} formAsArray = this.serializeArray(); // array of objects {name, value} f.readCheckboxUncheckedValues( formAsArray, this, opts ); // add {name, value} of unchecked checkboxes if needed serializedObject = {}; $.each( formAsArray, function( i, input ) { keys = f.splitInputNameIntoKeysArray( input.name, opts ); type = keys.pop(); // the last element is always the type ("string" by default) if ( type !== 'skip' ) { // easy way to skip a value value = f.parseValue( input.value, type, opts ); // string, number, boolean or null if ( opts.parseWithFunction && type === '_' ) value = opts.parseWithFunction( value, input.name ); // allow for custom parsing f.deepSet( serializedObject, keys, value, opts ); } } ); return serializedObject; }; // Use $.serializeJSON as namespace for the auxiliar functions // and to define defaults $.serializeJSON = { defaultOptions: { checkboxUncheckedValue: undefined, // to include that value for unchecked checkboxes (instead of ignoring them) parseNumbers: false, // convert values like "1", "-2.33" to 1, -2.33 parseBooleans: false, // convert "true", "false" to true, false parseNulls: false, // convert "null" to null parseAll: false, // all of the above parseWithFunction: null, // to use custom parser, a function like: function(val){ return parsed_val; } customTypes: {}, // override defaultTypes defaultTypes: { string: function( str ) { return String( str ); }, number: function( str ) { return Number( str ); }, boolean: function( str ) { return (["false", "null", "undefined", "", "0"].indexOf( str ) === -1); }, null: function( str ) { return (["false", "null", "undefined", "", "0"].indexOf( str ) !== -1) ? null : str; }, array: function( str ) { return JSON.parse( str ); }, object: function( str ) { return JSON.parse( str ); }, auto: function( str ) { return $.serializeJSON.parseValue( str, null, {parseNumbers: true, parseBooleans: true, parseNulls: true} ); } // try again with something like "parseAll" }, useIntKeysAsArrayIndex: false, // name="foo[2]" value="v" => {foo: [null, null, "v"]}, instead of {foo: ["2": "v"]} }, // Merge option defaults into the options setupOpts: function( options ) { var opt, validOpts, defaultOptions, optWithDefault, parseAll, f; f = $.serializeJSON; if ( options === null || options === undefined ) options = {}; // options ||= {} defaultOptions = f.defaultOptions || {}; // defaultOptions // Make sure that the user didn't misspell an option validOpts = ['checkboxUncheckedValue', 'parseNumbers', 'parseBooleans', 'parseNulls', 'parseAll', 'parseWithFunction', 'customTypes', 'defaultTypes', 'useIntKeysAsArrayIndex']; // re-define because the user may override the defaultOptions for ( opt in options ) { if ( validOpts.indexOf( opt ) === -1 ) { throw new Error( "serializeJSON ERROR: invalid option '" + opt + "'. Please use one of " + validOpts.join( ', ' ) ); } } // Helper to get the default value for this option if none is specified by the user optWithDefault = function( key ) { return (options[key] !== false) && (options[key] !== '') && (options[key] || defaultOptions[key]); }; // Return computed options (opts to be used in the rest of the script) parseAll = optWithDefault( 'parseAll' ); return { checkboxUncheckedValue: optWithDefault( 'checkboxUncheckedValue' ), parseNumbers: parseAll || optWithDefault( 'parseNumbers' ), parseBooleans: parseAll || optWithDefault( 'parseBooleans' ), parseNulls: parseAll || optWithDefault( 'parseNulls' ), parseWithFunction: optWithDefault( 'parseWithFunction' ), typeFunctions: $.extend( {}, optWithDefault( 'defaultTypes' ), optWithDefault( 'customTypes' ) ), useIntKeysAsArrayIndex: optWithDefault( 'useIntKeysAsArrayIndex' ), }; }, // Given a string, apply the type or the relevant "parse" options, to return the parsed value parseValue: function( str, type, opts ) { var typeFunction, f; f = $.serializeJSON; // Parse with a type if available typeFunction = opts.typeFunctions && opts.typeFunctions[type]; if ( typeFunction ) return typeFunction( str ); // use specific type // Otherwise, check if there is any auto-parse option enabled and use it. if ( opts.parseNumbers && f.isNumeric( str ) ) return Number( str ); // auto: number if ( opts.parseBooleans && (str === "true" || str === "false") ) return str === "true"; // auto: boolean if ( opts.parseNulls && str == "null" ) return null; // auto: null // If none applies, just return the str return str; }, isObject: function( obj ) { return obj === Object( obj ); }, // is this variable an object? isUndefined: function( obj ) { return obj === void 0; }, // safe check for undefined values isValidArrayIndex: function( val ) { return /^[0-9]+$/.test( String( val ) ); }, // 1,2,3,4 ... are valid array indexes isNumeric: function( obj ) { return obj - parseFloat( obj ) >= 0; }, // taken from jQuery.isNumeric implementation. Not using jQuery.isNumeric to support old jQuery and Zepto versions optionKeys: function( obj ) { if ( Object.keys ) { return Object.keys( obj ); } else { var keys = []; for ( var key in obj ) { keys.push( key ); } return keys; } }, // polyfill Object.keys to get option keys in IE<9 // Split the input name in programatically readable keys. // The last element is always the type (default "_"). // Examples: // "foo" => ['foo', '_'] // "foo:string" => ['foo', 'string'] // "foo:boolean" => ['foo', 'boolean'] // "[foo]" => ['foo', '_'] // "foo[inn][bar]" => ['foo', 'inn', 'bar', '_'] // "foo[inn[bar]]" => ['foo', 'inn', 'bar', '_'] // "foo[inn][arr][0]" => ['foo', 'inn', 'arr', '0', '_'] // "arr[][val]" => ['arr', '', 'val', '_'] // "arr[][val]:null" => ['arr', '', 'val', 'null'] splitInputNameIntoKeysArray: function( name, opts ) { var keys, nameWithoutType, type, _ref, f; f = $.serializeJSON; _ref = f.extractTypeFromInputName( name, opts ), nameWithoutType = _ref[0], type = _ref[1]; keys = nameWithoutType.split( '[' ); // split string into array keys = $.map( keys, function( key ) { return key.replace( /]/g, '' ); } ); // remove closing brackets if ( keys[0] === '' ) { keys.shift(); } // ensure no opening bracket ("[foo][inn]" should be same as "foo[inn]") keys.push( type ); // add type at the end return keys; }, // Returns [name-without-type, type] from name. // "foo" => ["foo", '_'] // "foo:boolean" => ["foo", 'boolean'] // "foo[bar]:null" => ["foo[bar]", 'null'] extractTypeFromInputName: function( name, opts ) { var match, validTypes, f; if ( match = name.match( /(.*):([^:]+)$/ ) ) { f = $.serializeJSON; validTypes = f.optionKeys( opts ? opts.typeFunctions : f.defaultOptions.defaultTypes ); validTypes.push( 'skip' ); // skip is a special type that makes it easy to remove if ( validTypes.indexOf( match[2] ) !== -1 ) { return [match[1], match[2]]; } else { throw new Error( "serializeJSON ERROR: Invalid type " + match[2] + " found in input name '" + name + "', please use one of " + validTypes.join( ', ' ) ) } } else { return [name, '_']; // no defined type, then use parse options } }, // Set a value in an object or array, using multiple keys to set in a nested object or array: // // deepSet(obj, ['foo'], v) // obj['foo'] = v // deepSet(obj, ['foo', 'inn'], v) // obj['foo']['inn'] = v // Create the inner obj['foo'] object, if needed // deepSet(obj, ['foo', 'inn', '123'], v) // obj['foo']['arr']['123'] = v // // // deepSet(obj, ['0'], v) // obj['0'] = v // deepSet(arr, ['0'], v, {useIntKeysAsArrayIndex: true}) // arr[0] = v // deepSet(arr, [''], v) // arr.push(v) // deepSet(obj, ['arr', ''], v) // obj['arr'].push(v) // // arr = []; // deepSet(arr, ['', v] // arr => [v] // deepSet(arr, ['', 'foo'], v) // arr => [v, {foo: v}] // deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}] // deepSet(arr, ['', 'bar'], v) // arr => [v, {foo: v, bar: v}, {bar: v}] // deepSet: function( o, keys, value, opts ) { var key, nextKey, tail, lastIdx, lastVal, f; if ( opts == null ) opts = {}; f = $.serializeJSON; if ( f.isUndefined( o ) ) { throw new Error( "ArgumentError: param 'o' expected to be an object or array, found undefined" ); } if ( !keys || keys.length === 0 ) { throw new Error( "ArgumentError: param 'keys' expected to be an array with least one element" ); } key = keys[0]; // Only one key, then it's not a deepSet, just assign the value. if ( keys.length === 1 ) { if ( key === '' ) { o.push( value ); // '' is used to push values into the array (assume o is an array) } else { o[key] = value; // other keys can be used as object keys or array indexes } // With more keys is a deepSet. Apply recursively. } else { nextKey = keys[1]; // '' is used to push values into the array, // with nextKey, set the value into the same object, in object[nextKey]. // Covers the case of ['', 'foo'] and ['', 'var'] to push the object {foo, var}, and the case of nested arrays. if ( key === '' ) { lastIdx = o.length - 1; // asume o is array lastVal = o[lastIdx]; if ( f.isObject( lastVal ) && (f.isUndefined( lastVal[nextKey] ) || keys.length > 2) ) { // if nextKey is not present in the last object element, or there are more keys to deep set key = lastIdx; // then set the new value in the same object element } else { key = lastIdx + 1; // otherwise, point to set the next index in the array } } // '' is used to push values into the array "array[]" if ( nextKey === '' ) { if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) { o[key] = []; // define (or override) as array to push values } } else { if ( opts.useIntKeysAsArrayIndex && f.isValidArrayIndex( nextKey ) ) { // if 1, 2, 3 ... then use an array, where nextKey is the index if ( f.isUndefined( o[key] ) || !$.isArray( o[key] ) ) { o[key] = []; // define (or override) as array, to insert values using int keys as array indexes } } else { // for anything else, use an object, where nextKey is going to be the attribute name if ( f.isUndefined( o[key] ) || !f.isObject( o[key] ) ) { o[key] = {}; // define (or override) as object, to set nested properties } } } // Recursively set the inner object tail = keys.slice( 1 ); f.deepSet( o[key], tail, value, opts ); } }, // Fill the formAsArray object with values for the unchecked checkbox inputs, // using the same format as the jquery.serializeArray function. // The value of the unchecked values is determined from the opts.checkboxUncheckedValue // and/or the data-unchecked-value attribute of the inputs. readCheckboxUncheckedValues: function( formAsArray, $form, opts ) { var selector, $uncheckedCheckboxes, $el, dataUncheckedValue, f; if ( opts == null ) opts = {}; f = $.serializeJSON; selector = 'input[type=checkbox][name]:not(:checked):not([disabled])'; $uncheckedCheckboxes = $form.find( selector ).add( $form.filter( selector ) ); $uncheckedCheckboxes.each( function( i, el ) { $el = $( el ); dataUncheckedValue = $el.attr( 'data-unchecked-value' ); if ( dataUncheckedValue ) { // data-unchecked-value has precedence over option opts.checkboxUncheckedValue formAsArray.push( {name: el.name, value: dataUncheckedValue} ); } else { if ( !f.isUndefined( opts.checkboxUncheckedValue ) ) { formAsArray.push( {name: el.name, value: opts.checkboxUncheckedValue} ); } } } ); } }; }( window.jQuery || window.$ )); (function( $ ) { //This functions first parameter is named $ 'use strict'; redux.customizer = redux.customizer || {}; $( document ).ready( function() { redux.customizer.init(); } ); redux.customizer.init = function() { $( 'body' ).addClass( redux_customizer.body_class ); $( '.accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title' ).click( function() { $.redux.initFields(); } ); redux.args.disable_save_warn = true; var reduxChange = redux_change; redux_change = function( variable ) { variable = $( variable ); reduxChange.apply( this, arguments ); redux.customizer.save( variable ) }; var redux_initFields = $.redux.initFields; $.redux.initFiles = function() { redux_initFields(); } }; redux.customizer.save = function( $obj ) { var $parent = $obj.hasClass( 'redux-field' ) ? $obj : $obj.parents( '.redux-field-container:first' ); redux.customizer.inputSave( $parent ); }; redux.customizer.inputSave = function( $parent ) { if ( !$parent.hasClass( 'redux-field-container' ) ) { $parent = $parent.parents( '[class^="redux-field-container"]' ); } var $id = $parent.parent().find( '.redux-customizer-input' ).data( 'id' ); if ( !$id ) { $parent = $parent.parents( '.redux-container-repeater:first' ); var $id = $parent.parent().find( '.redux-customizer-input' ).data( 'id' ); } //var $nData = $parent.serializeJSON(); var $nData = $parent.find( ':input' ).serializeJSON(); $.each( $nData, function( $k, $v ) { $nData = $v; } ); var $key = $parent.parent().find( '.redux-customizer-input' ).data( 'key' ); if ( $nData[$key] ) { $nData = $nData[$key]; } var $control = wp.customize.control( $id ); // Customizer hack since they didn't code it to save order... if ( JSON.stringify( $control.setting._value ) !== JSON.stringify( $nData ) ) { $control.setting._value = null; } $control.setting.set( $nData ); } })( jQuery );redux/ReduxCore/inc/extensions/customizer/extension_customizer.css000066600000003477152143340070021777 0ustar00.redux-section p.customize-section-description{margin-top:22px;word-break:break-word}.redux-section p.customize-section-description.legacy{margin-top:7px}.control-section-themes .accordion-section-title{margin:0}#customize-controls .customize-info{margin-bottom:0}#customize-controls .redux-section .accordion-section-content{background:#fcfcfc}.redux-section .accordion-section-title i,.redux-field .accordion-field-title i,.redux-panel .accordion-section-title i{margin-right:5px}.accordion-section.redux-main{background:inherit;margin-left:inherit;border-left:inherit;-moz-box-shadow:inherit;-webkit-box-shadow:inherit;padding:inherit;box-shadow:inherit}.redux_field_th{padding:13px 0 0 0}.redux-main .redux-field-container{padding:10px 0}.redux-main .select_wrapper{float:none;width:100%;display:inline-block}.redux-main .select2-container{margin-right:0 !important;margin-bottom:5px !important;width:100% !important}.redux-main .select_wrapper:nth-child(odd){margin-right:0}.redux-main .redux-option-image{max-width:42% !important;margin-right:3%}.redux-main .customize-control{border-bottom:1px solid #ddd;padding-bottom:4px}.redux-main .customize-control:last-child{border-bottom:0;padding-bottom:0}.redux-main .upload{width:100% !important}.redux-main h3{margin-top:inherit}.redux-main .redux-container-raw{margin-top:22px;word-break:break-word;padding:0 !important}.redux-main .redux-container-password input{width:100%}.select2-drop{z-index:999999}.rAdsContainer{line-height:0;border:0}.customize-control-redux-raw{list-style:none}.rAds{position:inherit !important;right:0 !important;top:0 !important;bottom:0 !important;left:0 !important;text-align:center;margin-bottom:0;line-height:0;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.rAds img{-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}redux/ReduxCore/inc/extensions/import_export/extension_import_export.php000066600000020425152143340070023204 0ustar00. * * @package ReduxFramework * @author Dovy Paukstys (dovy) * @version 4.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_extension_import_export' ) ) { /** * Main ReduxFramework import_export extension class * * @since 3.1.6 */ class ReduxFramework_extension_import_export { // Protected vars protected $parent; public $extension_url; public $extension_dir; public static $theInstance; public static $version = "4.0"; public $is_field = false; /** * Class Constructor. Defines the args for the extions class * * @since 1.0.0 * @access public * * @param array $sections Panel sections. * @param array $args Class constructor arguments. * @param array $extra_tabs Extra panel tabs. * * @return void */ public function __construct( $parent ) { $this->parent = $parent; if ( empty( $this->extension_dir ) ) { //$this->extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); } $this->field_name = 'import_export'; self::$theInstance = $this; add_action( "wp_ajax_redux_link_options-" . $this->parent->args['opt_name'], array( $this, "link_options" ) ); add_action( "wp_ajax_nopriv_redux_link_options-" . $this->parent->args['opt_name'], array( $this, "link_options" ) ); add_action( "wp_ajax_redux_download_options-" . $this->parent->args['opt_name'], array( $this, "download_options" ) ); add_action( "wp_ajax_nopriv_redux_download_options-" . $this->parent->args['opt_name'], array( $this, "download_options" ) ); do_action( "redux/options/{$this->parent->args['opt_name']}/import", array( $this, 'remove_cookie' ) ); $this->is_field = Redux_Helpers::isFieldInUse( $parent, 'import_export' ); if ( ! $this->is_field && $this->parent->args['show_import_export'] ) { $this->add_section(); } add_filter( 'redux/' . $this->parent->args['opt_name'] . '/field/class/' . $this->field_name, array( &$this, 'overload_field_path' ) ); // Adds the local field add_filter( 'upload_mimes', array( $this, 'custom_upload_mimes' ) ); } /** * Adds the appropriate mime types to WordPress * * @param array $existing_mimes * * @return array */ function custom_upload_mimes( $existing_mimes = array() ) { $existing_mimes['redux'] = 'application/redux'; return $existing_mimes; } public function add_section() { $this->parent->sections[] = array( 'id' => 'import/export', 'title' => __( 'Import / Export', 'redux-framework' ), 'heading' => '', 'icon' => 'el el-refresh', 'customizer' => false, 'fields' => array( array( 'id' => 'redux_import_export', 'type' => 'import_export', //'class' => 'redux-field-init redux_remove_th', //'title' => '', 'full_width' => true, ) ), ); } function link_options() { if ( ! isset( $_GET['secret'] ) || $_GET['secret'] != md5( md5( AUTH_KEY . SECURE_AUTH_KEY ) . '-' . $this->parent->args['opt_name'] ) ) { wp_die( 'Invalid Secret for options use' ); exit; } $var = $this->parent->options; $var['redux-backup'] = '1'; if ( isset( $var['REDUX_imported'] ) ) { unset( $var['REDUX_imported'] ); } echo json_encode( $var ); die(); } public function download_options() { if ( ! isset( $_GET['secret'] ) || $_GET['secret'] != md5( md5( AUTH_KEY . SECURE_AUTH_KEY ) . '-' . $this->parent->args['opt_name'] ) ) { wp_die( 'Invalid Secret for options use' ); exit; } $this->parent->get_options(); $backup_options = $this->parent->options; $backup_options['redux-backup'] = '1'; if ( isset( $backup_options['REDUX_imported'] ) ) { unset( $backup_options['REDUX_imported'] ); } // No need to escape this, as it's been properly escaped previously and through json_encode $content = json_encode( $backup_options ); if ( isset( $_GET['action'] ) && $_GET['action'] == 'redux_download_options-' . $this->parent->args['opt_name'] ) { header( 'Content-Description: File Transfer' ); header( 'Content-type: application/txt' ); header( 'Content-Disposition: attachment; filename="redux_options_' . $this->parent->args['opt_name'] . '_backup_' . date( 'd-m-Y' ) . '.json"' ); header( 'Content-Transfer-Encoding: binary' ); header( 'Expires: 0' ); header( 'Cache-Control: must-revalidate' ); header( 'Pragma: public' ); echo $content; exit; } else { header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' ); // Can't include the type. Thanks old Firefox and IE. BAH. //header("Content-type: application/json"); echo $content; exit; } } // Forces the use of the embeded field path vs what the core typically would use public function overload_field_path( $field ) { return dirname( __FILE__ ) . '/' . $this->field_name . '/field_' . $this->field_name . '.php'; } public function remove_cookie() { // Remove the import/export tab cookie. if ( $_COOKIE['redux_current_tab'] == 'import_export_default' ) { setcookie( 'redux_current_tab', '', 1, '/' ); $_COOKIE['redux_current_tab'] = 1; } } } } redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.css000066600000000245152143340070025165 0ustar00#redux-import-link-wrapper,#redux-import-code-wrapper{display:none}#redux-export-code,#redux-export-link-value{display:none}#redux-import-action span{color:#B94A48} redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.php000066600000021634152143340070025171 0ustar00. * * @package ReduxFramework * @author Dovy Paukstys * @version 3.1.5 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_import_export' ) ) { /** * Main ReduxFramework_import_export class * * @since 1.0.0 */ class ReduxFramework_import_export extends ReduxFramework { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; $this->is_field = $this->parent->extensions['import_export']->is_field; $this->extension_dir = ReduxFramework::$_dir . 'inc/extensions/import_export/'; $this->extension_url = ReduxFramework::$_url . 'inc/extensions/import_export/'; // Set default args for this field to avoid bad indexes. Change this to anything you use. $defaults = array( 'options' => array(), 'stylesheet' => '', 'output' => true, 'enqueue' => true, 'enqueue_frontend' => true ); $this->field = wp_parse_args( $this->field, $defaults ); } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { $secret = md5( md5( AUTH_KEY . SECURE_AUTH_KEY ) . '-' . $this->parent->args['opt_name'] ); // No errors please $defaults = array( 'full_width' => true, 'overflow' => 'inherit', ); $this->field = wp_parse_args( $this->field, $defaults ); $bDoClose = false; // $this->parent->args['opt_name'] & $this->field['id'] are sanitized in the ReduxFramework class, no need to re-sanitize it. $id = $this->parent->args['opt_name'] . '-' . $this->field['id']; // $this->field['type'] && $this->field['id'] is sanitized in the ReduxFramework class, no need to re-sanitize it. ?>

    parent->args['opt_name'] is sanitized in the ReduxFramework class, no need to re-sanitize it. ?>

      

     

    parent->args['opt_name'] is sanitized in the ReduxFramework class, no need to re-sanitize it. $link = esc_url( admin_url( 'admin-ajax.php?action=redux_download_options-' . $this->parent->args['opt_name'] . '&secret=' . $secret ) ); ?>

    extension_url . 'import_export/field_import_export' . Redux_Functions::isMin() . '.js', array( 'jquery' ), ReduxFramework_extension_import_export::$version, true ); wp_enqueue_style( 'redux-import-export', $this->extension_url . 'import_export/field_import_export.css', time(), true ); } /** * Output Function. * Used to enqueue to the front-end * * @since 1.0.0 * @access public * @return void */ public function output() { if ( $this->field['enqueue_frontend'] ) { } } } } redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.js000066600000023070152143340070025012 0ustar00/*global jQuery, document, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.import_export = redux.field_objects.import_export || {}; redux.field_objects.import_export.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-import_export:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.each( function() { $( '#redux-import' ).click( function( e ) { if ( $( '#import-code-value' ).val() === "" && $( '#import-link-value' ).val() === "" ) { e.preventDefault(); return false; } window.onbeforeunload = null; redux.args.ajax_save = false; } ); $( this ).find( '#redux-import-code-button' ).click( function() { var $el = $( '#redux-import-code-wrapper' ); if ( $( '#redux-import-link-wrapper' ).is( ':visible' ) ) { $( '#import-link-value' ).text( '' ); $( '#redux-import-link-wrapper' ).slideUp( 'fast', function() { $el.slideDown( 'fast', function() { $( '#import-code-value' ).focus(); } ); } ); } else { if ( $el.is( ':visible' ) ) { $el.slideUp(); } else { $el.slideDown( 'medium', function() { $( '#import-code-value' ).focus(); } ); } } } ); $( this ).find( '#redux-import-link-button' ).click( function() { var $el = $( '#redux-import-link-wrapper' ); if ( $( '#redux-import-code-wrapper' ).is( ':visible' ) ) { $( '#import-code-value' ).text( '' ); $( '#redux-import-code-wrapper' ).slideUp( 'fast', function() { $el.slideDown( 'fast', function() { $( '#import-link-value' ).focus(); } ); } ); } else { if ( $el.is( ':visible' ) ) { $el.slideUp(); } else { $el.slideDown( 'medium', function() { $( '#import-link-value' ).focus(); } ); } } } ); $( this ).find( '#redux-export-code-copy' ).click( function() { var $el = $( '#redux-export-code' ); if ( $( '#redux-export-link-value' ).is( ':visible' ) ) { $( '#redux-export-link-value' ).slideUp( 'fast', function() { $el.slideDown( 'medium', function() { var options = redux.options; options['redux-backup'] = 1; $( this ).text( JSON.stringify( options ) ).focus().select(); } ); } ); } else { if ( $el.is( ':visible' ) ) { $el.slideUp().text( '' ); } else { $el.slideDown( 'medium', function() { var options = redux.options; options['redux-backup'] = 1; $( this ).text( JSON.stringify( options ) ).focus().select(); } ); } } } ); $( this ).find( 'textarea' ).focusout( function() { var $id = $( this ).attr( 'id' ); var $el = $( this ); var $container = $el; if ( $id == "import-link-value" || $id == "import-code-value" ) { $container = $( this ).parent(); } $container.slideUp( 'medium', function() { if ( $id != "redux-export-link-value" ) { $el.text( '' ); } } ); } ); $( this ).find( '#redux-export-link' ).click( function() { var $el = $( '#redux-export-link-value' ); if ( $( '#redux-export-code' ).is( ':visible' ) ) { $( '#redux-export-code' ).slideUp( 'fast', function() { $el.slideDown().focus().select(); } ); } else { if ( $el.is( ':visible' ) ) { $el.slideUp(); } else { $el.slideDown( 'medium', function() { $( this ).focus().select(); } ); } } } ); var textBox1 = document.getElementById( "redux-export-code" ); textBox1.onfocus = function() { textBox1.select(); // Work around Chrome's little problem textBox1.onmouseup = function() { // Prevent further mouseup intervention textBox1.onmouseup = null; return false; }; }; var textBox2 = document.getElementById( "import-code-value" ); textBox2.onfocus = function() { textBox2.select(); // Work around Chrome's little problem textBox2.onmouseup = function() { // Prevent further mouseup intervention textBox2.onmouseup = null; return false; }; }; } ); } ); }; })( jQuery ); redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.scss000066600000000305152143340070025345 0ustar00#redux-import-link-wrapper, #redux-import-code-wrapper { display: none; } #redux-export-code, #redux-export-link-value { display: none; } #redux-import-action span { color: #B94A48; }redux/ReduxCore/inc/extensions/import_export/import_export/field_import_export.min.js000066600000005366152143340070025604 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.import_export=redux.field_objects.import_export||{},redux.field_objects.import_export.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-import_export:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.each(function(){a("#redux-import").click(function(b){return""===a("#import-code-value").val()&&""===a("#import-link-value").val()?(b.preventDefault(),!1):(window.onbeforeunload=null,void(redux.args.ajax_save=!1))}),a(this).find("#redux-import-code-button").click(function(){var b=a("#redux-import-code-wrapper");a("#redux-import-link-wrapper").is(":visible")?(a("#import-link-value").text(""),a("#redux-import-link-wrapper").slideUp("fast",function(){b.slideDown("fast",function(){a("#import-code-value").focus()})})):b.is(":visible")?b.slideUp():b.slideDown("medium",function(){a("#import-code-value").focus()})}),a(this).find("#redux-import-link-button").click(function(){var b=a("#redux-import-link-wrapper");a("#redux-import-code-wrapper").is(":visible")?(a("#import-code-value").text(""),a("#redux-import-code-wrapper").slideUp("fast",function(){b.slideDown("fast",function(){a("#import-link-value").focus()})})):b.is(":visible")?b.slideUp():b.slideDown("medium",function(){a("#import-link-value").focus()})}),a(this).find("#redux-export-code-copy").click(function(){var b=a("#redux-export-code");a("#redux-export-link-value").is(":visible")?a("#redux-export-link-value").slideUp("fast",function(){b.slideDown("medium",function(){var b=redux.options;b["redux-backup"]=1,a(this).text(JSON.stringify(b)).focus().select()})}):b.is(":visible")?b.slideUp().text(""):b.slideDown("medium",function(){var b=redux.options;b["redux-backup"]=1,a(this).text(JSON.stringify(b)).focus().select()})}),a(this).find("textarea").focusout(function(){var b=a(this).attr("id"),c=a(this),d=c;("import-link-value"==b||"import-code-value"==b)&&(d=a(this).parent()),d.slideUp("medium",function(){"redux-export-link-value"!=b&&c.text("")})}),a(this).find("#redux-export-link").click(function(){var b=a("#redux-export-link-value");a("#redux-export-code").is(":visible")?a("#redux-export-code").slideUp("fast",function(){b.slideDown().focus().select()}):b.is(":visible")?b.slideUp():b.slideDown("medium",function(){a(this).focus().select()})});var b=document.getElementById("redux-export-code");b.onfocus=function(){b.select(),b.onmouseup=function(){return b.onmouseup=null,!1}};var c=document.getElementById("import-code-value");c.onfocus=function(){c.select(),c.onmouseup=function(){return c.onmouseup=null,!1}}}))})}}(jQuery);redux/ReduxCore/inc/fields/select_image/field_select_image.scss000066600000000620152143340070020715 0ustar00.redux-container-select_image { margin-top: 2px; margin-left: 5px; width: 100%; margin-bottom: 0; } .redux-preview-image { max-height: 250px; max-width: 250px; padding: 5px; margin-top: 10px; border: 1px solid #e3e3e3; background: #f7f7f7; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } redux/ReduxCore/inc/fields/select_image/field_select_image.min.js000066600000002021152143340070021135 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.select_image=redux.field_objects.select_image||{},a(document).ready(function(){}),redux.field_objects.select_image.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-select_image:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init");var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".redux-container-select_image").find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find("select.redux-select-images").select2(d),b.find(".redux-select-images").on("change",function(){var b=a(this).parents(".redux-field:first").find(".redux-preview-image");""===a(this).val()?b.fadeOut("medium",function(){b.attr("src","")}):(b.attr("src",a(this).val()),b.fadeIn().css("visibility","visible"))})}})}}(jQuery);redux/ReduxCore/inc/fields/select_image/field_select_image.php000066600000015067152143340070020544 0ustar00 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'ReduxFramework_select_image' ) ) { class ReduxFramework_select_image { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 1.0.0 */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { // If options is NOT empty, the process if ( ! empty( $this->field['options'] ) ) { // Strip off the file ext if ( isset( $this->value ) ) { $name = explode( ".", $this->value ); $name = str_replace( '.' . end( $name ), '', $this->value ); $name = basename( $name ); //$this->value = trim( $name ); $filename = trim($name); } // beancounter $x = 1; // Process width if ( ! empty( $this->field['width'] ) ) { $width = ' style="width:' . $this->field['width'] . ';"'; } else { $width = ' style="width: 40%;"'; } // Process placeholder $placeholder = ( isset( $this->field['placeholder'] ) ) ? esc_attr( $this->field['placeholder'] ) : __( 'Select an item', 'redux-framework' ); if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } // Begin the '; echo ''; // Enum through the options array foreach ( $this->field['options'] as $k => $v ) { // No array? No problem! if ( ! is_array( $v ) ) { $v = array( 'img' => $v ); } // No title set? Make it blank. if ( ! isset( $v['title'] ) ) { $v['title'] = ''; } // No alt? Set it to title. We do this so the alt tag shows // something. It also makes HTML/SEO purists happy. if ( ! isset( $v['alt'] ) ) { $v['alt'] = $v['title']; } // Set the selected entry $selected = selected( $this->value, $v['img'], false ); // If selected returns something other than a blank space, we // found our default/saved name. Save the array number in a // variable to use later on when we want to extract its associted // url. if ( '' != $selected ) { $arrNum = $x; } // Add the option tag, with values. echo ''; // Add a bean $x ++; } // Close the '; // Some space echo '

    '; // Show the preview image. echo '
    '; // just in case. You never know. if ( ! isset( $arrNum ) ) { $this->value = ''; } // Set the default image. To get the url from the default name, // we save the array count from the for/each loop, when the default image // is mark as selected. Since the for/each loop starts at one, we must // substract one from the saved array number. We then pull the url // out of the options array, and there we go. if ( '' == $this->value ) { echo ''; } else { echo ''; } // Close the
    tag. echo '
    '; } else { // No options specified. Really? echo '' . __( 'No items of this type were found.', 'redux-framework' ) . ''; } } //function /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ function enqueue() { wp_enqueue_style( 'select2-css' ); wp_enqueue_script( 'field-select-image-js', ReduxFramework::$_url . 'inc/fields/select_image/field_select_image' . Redux_Functions::isMin() . '.js', array('jquery', 'select2-js', 'redux-js'), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-select-image-css', ReduxFramework::$_url . 'inc/fields/select_image/field_select_image.css', array(), time(), 'all' ); } } //function } //class }redux/ReduxCore/inc/fields/select_image/field_select_image.css000066600000000462152143340070020536 0ustar00.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}redux/ReduxCore/inc/fields/select_image/field_select_image.js000066600000005020152143340070020355 0ustar00/*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.select_image = redux.field_objects.select_image || {}; $( document ).ready( function() { //redux.field_objects.select_image.init(); } ); redux.field_objects.select_image.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-select_image:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; var select2_handle = el.find( '.redux-container-select_image' ).find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } el.find( 'select.redux-select-images' ).select2( default_params ); el.find( '.redux-select-images' ).on( 'change', function() { var preview = $( this ).parents( '.redux-field:first' ).find( '.redux-preview-image' ); if ( $( this ).val() === "" ) { preview.fadeOut( 'medium', function() { preview.attr( 'src', '' ); } ); } else { preview.attr( 'src', $( this ).val() ); preview.fadeIn().css( 'visibility', 'visible' ); } } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/select_image/field_select_image.css.map000066600000000673152143340070021316 0ustar00{ "version": 3, "mappings": "AAAA,6BAA8B;EAC1B,UAAU,EAAE,GAAG;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,CAAC;;AAGpB,oBAAqB;EACjB,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,GAAG;EACZ,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,GAAG;EACvB,oBAAoB,EAAE,GAAG;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG", "sources": ["field_select_image.scss"], "names": [], "file": "field_select_image.css" }redux/ReduxCore/inc/fields/radio/field_radio.php000066600000004566152143340070015700 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { if ( ! empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { if ( empty( $this->field['args'] ) ) { $this->field['args'] = array(); } $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); } $this->field['data_class'] = ( isset( $this->field['multi_layout'] ) ) ? 'data-' . $this->field['multi_layout'] : 'data-full'; if ( ! empty( $this->field['options'] ) ) { echo '
      '; foreach ( $this->field['options'] as $k => $v ) { echo '
    • '; echo ''; echo '
    • '; } //foreach echo '
    '; } } //function } //class }redux/ReduxCore/inc/fields/divide/field_divide.scss000066600000002406152143340070016367 0ustar00.redux-main { .divide { height: 20px; line-height: 20px; float: none; border-color: #E7E7E7; display: block; width: 100%; height: 35px !important; line-height: 35px !important; position: relative; margin: 15px 0 10px 0; .inner { width: 42% !important; left: 40% !important; margin-left: -6%; background-color: #FCFCFC; border-color: #E7E7E7; position: absolute; height: 1px; top: 50%; width: 100%; margin-top: -1px; border-top-width: 1px; border-top-style: solid; span { background-color: #FCFCFC; border-color: #E7E7E7; height: 5px; width: 5px; border-width: 2px; border-style: solid; display: block; position: absolute; left: 50%; margin-left: -5px; margin-top: -5px; } } } } .wp-customizer .redux-container-divide { .divide .inner { width: 82% !important; left: 18% !important; margin-left: -8%; } } redux/ReduxCore/inc/fields/divide/field_divide.php000066600000005414152143340070016205 0ustar00. * * @package ReduxFramework * @subpackage Field_Divide * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @version 3.0.0 */ // Exit if accessed directly if ( !defined ( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( !class_exists ( 'ReduxFramework_divide' ) ) { /** * Main ReduxFramework_divide class * * @since 1.0.0 */ class ReduxFramework_divide { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct ( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render () { echo '
    extension_url . 'options_object/field_options_object' . Redux_Functions::isMin() . '.js', array( 'jquery' ), ReduxFramework_extension_options_object::$version, true ); wp_enqueue_style( 'redux-options-object', $this->extension_url . 'options_object/field_options_object.css', array(), time(), 'all' ); } /** * Output Function. * Used to enqueue to the front-end * * @since 1.0.0 * @access public * @return void */ public function output() { if ( $this->field['enqueue_frontend'] ) { } } } } redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.scss000066600000000166152143340070025674 0ustar00#redux-object-browser { overflow: auto; word-wrap: break-word; max-height: 600px; max-width: 100%; } redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.css000066600000000132152143340070025502 0ustar00#redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%} redux/ReduxCore/inc/extensions/options_object/options_object/field_options_object.js000066600000002341152143340070025332 0ustar00/*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.options_object = redux.field_objects.options_object || {}; // $( document ).ready( // function() { // redux.field_objects.import_export.init(); // } // ); redux.field_objects.options_object.init = function( selector ) { if ( !selector ) { selector = $( document ).find( '.redux-container-options_object' ); } var parent = selector; if ( !selector.hasClass( 'redux-field-container' ) ) { parent = selector.parents( '.redux-field-container:first' ); } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } $( '#consolePrintObject' ).on( 'click', function( e ) { e.preventDefault(); console.log( $.parseJSON( $( "#redux-object-json" ).html() ) ); } ); if ( typeof jsonView === 'function' ) { jsonView( '#redux-object-json', '#redux-object-browser' ); } }; })( jQuery );redux/ReduxCore/inc/extensions/README.txt000066600000000100152143340070014233 0ustar00This directory is a placeholder for Redux Framework extensions. redux/ReduxCore/inc/extensions/customizer/extension_customizer.css.map000066600000002770152143340070022546 0ustar00{ "version": 3, "mappings": "AACI,8CAAgC;EAC5B,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,UAAU;EACtB,qDAAS;IACL,UAAU,EAAE,GAAG;;AAK3B,gDAAiD;EAC7C,MAAM,EAAE,CAAC;;AAIT,mCAAgB;EACZ,aAAa,EAAE,CAAC;AAEpB,6DAA0C;EACtC,UAAU,EAAE,OAAO;;AAI3B;;uCAEwC;EACpC,YAAY,EAAE,GAAG;;AAGrB,6BAA8B;EAC1B,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,OAAO;EACpB,WAAW,EAAE,OAAO;EACpB,eAAe,EAAE,OAAO;EACxB,kBAAkB,EAAE,OAAO;EAC3B,OAAO,EAAE,OAAO;EAChB,UAAU,EAAE,OAAO;;AAGvB,eAAgB;EACZ,OAAO,EAAE,gBAAgB;;AAIzB,kCAAuB;EACnB,OAAO,EAAE,MAAM;AAEnB,2BAAgB;EACZ,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,YAAY;AAEzB,8BAAmB;EACf,YAAY,EAAE,YAAY;EAC1B,aAAa,EAAE,cAAc;EAC7B,KAAK,EAAE,eAAe;AAE1B,0CAA+B;EAC3B,YAAY,EAAE,CAAC;AAEnB,+BAAoB;EAChB,SAAS,EAAE,cAAc;EACzB,YAAY,EAAE,EAAE;AAEpB,8BAAmB;EACf,aAAa,EAAE,cAAc;EAC7B,cAAc,EAAE,GAAG;AAEvB,yCAA8B;EAC1B,aAAa,EAAE,CAAC;EAChB,cAAc,EAAE,CAAC;AAErB,mBAAQ;EACJ,KAAK,EAAE,eAAe;AAE1B,cAAG;EACC,UAAU,EAAE,OAAO;AAEvB,gCAAqB;EACjB,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,YAAY;AAEzB,2CAAgC;EAC5B,KAAK,EAAE,IAAI;;AAInB,aAAc;EACV,OAAO,EAAE,MAAM;;AAGnB,cAAe;EACX,WAAW,EAAE,CAAC;EACd,MAAM,EAAE,CAAC;EACT,sBAAsB;EACtB,yBAAyB;;AAG7B,4BAA6B;EACzB,UAAU,EAAE,IAAI;;AAGpB,KAAM;EACF,QAAQ,EAAE,kBAAkB;EAC5B,KAAK,EAAE,YAAY;EACnB,GAAG,EAAE,YAAY;EACjB,MAAM,EAAE,YAAY;EACpB,IAAI,EAAE,YAAY;EAClB,UAAU,EAAE,MAAM;EAClB,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,CAAC;EACd,kBAAkB,EAAE,qBAAqB;EACzC,UAAU,EAAE,qBAAqB;EACjC,SAAI;IACA,kBAAkB,EAAE,qBAAqB;IACzC,UAAU,EAAE,qBAAqB", "sources": ["extension_customizer.scss"], "names": [], "file": "extension_customizer.css" }redux/ReduxCore/inc/extensions/customizer/extension_customizer.min.js000066600000015454152143340070022403 0ustar00(function($){"use strict";$.fn.serializeJSON=function(options){var serializedObject,formAsArray,keys,type,value,_ref,f,opts;f=$.serializeJSON;opts=f.setupOpts(options);formAsArray=this.serializeArray();f.readCheckboxUncheckedValues(formAsArray,this,opts);serializedObject={};$.each(formAsArray,function(i,input){keys=f.splitInputNameIntoKeysArray(input.name,opts);type=keys.pop();if(type!=="skip"){value=f.parseValue(input.value,type,opts);if(opts.parseWithFunction&&type==="_")value=opts.parseWithFunction(value,input.name);f.deepSet(serializedObject,keys,value,opts)}});return serializedObject};$.serializeJSON={defaultOptions:{checkboxUncheckedValue:undefined,parseNumbers:false,parseBooleans:false,parseNulls:false,parseAll:false,parseWithFunction:null,customTypes:{},defaultTypes:{string:function(str){return String(str)},number:function(str){return Number(str)},"boolean":function(str){return["false","null","undefined","","0"].indexOf(str)===-1},"null":function(str){return["false","null","undefined","","0"].indexOf(str)!==-1?null:str},array:function(str){return JSON.parse(str)},object:function(str){return JSON.parse(str)},auto:function(str){return $.serializeJSON.parseValue(str,null,{parseNumbers:true,parseBooleans:true,parseNulls:true})}},useIntKeysAsArrayIndex:false},setupOpts:function(options){var opt,validOpts,defaultOptions,optWithDefault,parseAll,f;f=$.serializeJSON;if(options===null||options===undefined)options={};defaultOptions=f.defaultOptions||{};validOpts=["checkboxUncheckedValue","parseNumbers","parseBooleans","parseNulls","parseAll","parseWithFunction","customTypes","defaultTypes","useIntKeysAsArrayIndex"];for(opt in options){if(validOpts.indexOf(opt)===-1){throw new Error("serializeJSON ERROR: invalid option '"+opt+"'. Please use one of "+validOpts.join(", "))}}optWithDefault=function(key){return options[key]!==false&&options[key]!==""&&(options[key]||defaultOptions[key])};parseAll=optWithDefault("parseAll");return{checkboxUncheckedValue:optWithDefault("checkboxUncheckedValue"),parseNumbers:parseAll||optWithDefault("parseNumbers"),parseBooleans:parseAll||optWithDefault("parseBooleans"),parseNulls:parseAll||optWithDefault("parseNulls"),parseWithFunction:optWithDefault("parseWithFunction"),typeFunctions:$.extend({},optWithDefault("defaultTypes"),optWithDefault("customTypes")),useIntKeysAsArrayIndex:optWithDefault("useIntKeysAsArrayIndex")}},parseValue:function(str,type,opts){var typeFunction,f;f=$.serializeJSON;typeFunction=opts.typeFunctions&&opts.typeFunctions[type];if(typeFunction)return typeFunction(str);if(opts.parseNumbers&&f.isNumeric(str))return Number(str);if(opts.parseBooleans&&(str==="true"||str==="false"))return str==="true";if(opts.parseNulls&&str=="null")return null;return str},isObject:function(obj){return obj===Object(obj)},isUndefined:function(obj){return obj===void 0},isValidArrayIndex:function(val){return/^[0-9]+$/.test(String(val))},isNumeric:function(obj){return obj-parseFloat(obj)>=0},optionKeys:function(obj){if(Object.keys){return Object.keys(obj)}else{var keys=[];for(var key in obj){keys.push(key)}return keys}},splitInputNameIntoKeysArray:function(name,opts){var keys,nameWithoutType,type,_ref,f;f=$.serializeJSON;_ref=f.extractTypeFromInputName(name,opts),nameWithoutType=_ref[0],type=_ref[1];keys=nameWithoutType.split("[");keys=$.map(keys,function(key){return key.replace(/]/g,"")});if(keys[0]===""){keys.shift()}keys.push(type);return keys},extractTypeFromInputName:function(name,opts){var match,validTypes,f;if(match=name.match(/(.*):([^:]+)$/)){f=$.serializeJSON;validTypes=f.optionKeys(opts?opts.typeFunctions:f.defaultOptions.defaultTypes);validTypes.push("skip");if(validTypes.indexOf(match[2])!==-1){return[match[1],match[2]]}else{throw new Error("serializeJSON ERROR: Invalid type "+match[2]+" found in input name '"+name+"', please use one of "+validTypes.join(", "))}}else{return[name,"_"]}},deepSet:function(o,keys,value,opts){var key,nextKey,tail,lastIdx,lastVal,f;if(opts==null)opts={};f=$.serializeJSON;if(f.isUndefined(o)){throw new Error("ArgumentError: param 'o' expected to be an object or array, found undefined")}if(!keys||keys.length===0){throw new Error("ArgumentError: param 'keys' expected to be an array with least one element")}key=keys[0];if(keys.length===1){if(key===""){o.push(value)}else{o[key]=value}}else{nextKey=keys[1];if(key===""){lastIdx=o.length-1;lastVal=o[lastIdx];if(f.isObject(lastVal)&&(f.isUndefined(lastVal[nextKey])||keys.length>2)){key=lastIdx}else{key=lastIdx+1}}if(nextKey===""){if(f.isUndefined(o[key])||!$.isArray(o[key])){o[key]=[]}}else{if(opts.useIntKeysAsArrayIndex&&f.isValidArrayIndex(nextKey)){if(f.isUndefined(o[key])||!$.isArray(o[key])){o[key]=[]}}else{if(f.isUndefined(o[key])||!f.isObject(o[key])){o[key]={}}}}tail=keys.slice(1);f.deepSet(o[key],tail,value,opts)}},readCheckboxUncheckedValues:function(formAsArray,$form,opts){var selector,$uncheckedCheckboxes,$el,dataUncheckedValue,f;if(opts==null)opts={};f=$.serializeJSON;selector="input[type=checkbox][name]:not(:checked):not([disabled])";$uncheckedCheckboxes=$form.find(selector).add($form.filter(selector));$uncheckedCheckboxes.each(function(i,el){$el=$(el);dataUncheckedValue=$el.attr("data-unchecked-value");if(dataUncheckedValue){formAsArray.push({name:el.name,value:dataUncheckedValue})}else{if(!f.isUndefined(opts.checkboxUncheckedValue)){formAsArray.push({name:el.name,value:opts.checkboxUncheckedValue})}}})}}})(window.jQuery||window.$);(function($){"use strict";redux.customizer=redux.customizer||{};$(document).ready(function(){redux.customizer.init()});redux.customizer.init=function(){$("body").addClass(redux_customizer.body_class);$(".accordion-section.redux-section, .accordion-section.redux-panel, .accordion-section-title").click(function(){$.redux.initFields()});redux.args.disable_save_warn=true;var reduxChange=redux_change;redux_change=function(variable){variable=$(variable);reduxChange.apply(this,arguments);redux.customizer.save(variable)};var redux_initFields=$.redux.initFields;$.redux.initFiles=function(){redux_initFields()}};redux.customizer.save=function($obj){var $parent=$obj.hasClass("redux-field")?$obj:$obj.parents(".redux-field-container:first");redux.customizer.inputSave($parent)};redux.customizer.inputSave=function($parent){if(!$parent.hasClass("redux-field-container")){$parent=$parent.parents('[class^="redux-field-container"]')}var $id=$parent.parent().find(".redux-customizer-input").data("id");if(!$id){$parent=$parent.parents(".redux-container-repeater:first");var $id=$parent.parent().find(".redux-customizer-input").data("id")}var $nData=$parent.find(":input").serializeJSON();$.each($nData,function($k,$v){$nData=$v});var $key=$parent.parent().find(".redux-customizer-input").data("key");if($nData[$key]){$nData=$nData[$key]}var $control=wp.customize.control($id);if(JSON.stringify($control.setting._value)!==JSON.stringify($nData)){$control.setting._value=null}$control.setting.set($nData)}})(jQuery);redux/ReduxCore/inc/extensions/customizer/extension_customizer.scss000066600000004540152143340070022152 0ustar00.redux-section { p.customize-section-description { margin-top: 22px; word-break: break-word; &.legacy { margin-top: 7px; } } } .control-section-themes .accordion-section-title { margin: 0; } #customize-controls { .customize-info { margin-bottom: 0; } .redux-section .accordion-section-content { background: #FCFCFC; } } .redux-section .accordion-section-title i, .redux-field .accordion-field-title i, .redux-panel .accordion-section-title i { margin-right: 5px; } .accordion-section.redux-main { background: inherit; margin-left: inherit; border-left: inherit; -moz-box-shadow: inherit; -webkit-box-shadow: inherit; padding: inherit; box-shadow: inherit; } .redux_field_th { padding: 13px 0px 0px 0px; } .redux-main { .redux-field-container { padding: 10px 0; } .select_wrapper { float: none; width: 100%; display: inline-block; } .select2-container { margin-right: 0 !important; margin-bottom: 5px !important; width: 100% !important; } .select_wrapper:nth-child(odd) { margin-right: 0; } .redux-option-image { max-width: 42% !important; margin-right: 3%; } .customize-control { border-bottom: 1px solid #ddd; padding-bottom: 4px; } .customize-control:last-child { border-bottom: 0; padding-bottom: 0; } .upload { width: 100% !important; } h3 { margin-top: inherit; } .redux-container-raw { margin-top: 22px; word-break: break-word; padding: 0 !important; } .redux-container-password input { width: 100%; } } .select2-drop { z-index: 999999; } .rAdsContainer { line-height: 0; border: 0; /*margin-top: -15px;*/ /*margin-bottom: -15px;*/ } .customize-control-redux-raw { list-style: none; } .rAds { position: inherit !important; right: 0 !important; top: 0 !important; bottom: 0 !important; left: 0 !important; text-align: center; margin-bottom: 0; line-height: 0; -webkit-transition: left ease-in-out .18s; transition: left ease-in-out .18s; img { -webkit-transition: left ease-in-out .18s; transition: left ease-in-out .18s; } }redux/ReduxCore/inc/extensions/customizer/inc/customizer_section.php000066600000013703152143340070022170 0ustar00$key = $args[ $key ]; } } $this->manager = $manager; $this->id = $id; if ( empty( $this->active_callback ) ) { $this->active_callback = array( $this, 'active_callback' ); } self::$instance_count += 1; $this->instance_number = self::$instance_count; $this->controls = array(); // Users cannot customize the $controls array. // TODO Redux addition if ( isset( $args['section'] ) ) { $this->section = $args['section']; $this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : ''; $this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : ''; } } /** * An Underscore (JS) template for rendering this section. * Class variables for this section class are available in the `data` JS object; * export custom variables by overriding {@see WP_Customize_Section::json()}. * * @see WP_Customize_Section::print_template() * @since 4.3.0 */ protected function render_template() { ?>
  • {{ data.title }}

    • {{{ data.customizeAction }}} {{ data.title }}

      <# if ( data.description ) { #>

      {{{ data.description }}}

      <# } #> opt_name ) && isset( $this->section ) ) { do_action( "redux/page/{$this->opt_name}/section/before", $this->section ); } ?>
  • type; ?>
  • title, array( 'em' => array(), 'i' => array(), 'strong' => array(), 'span' => array( 'class' => array(), 'style' => array(), ), ) ); ?>

      opt_name ) && isset( $this->section ) ) { do_action( "redux/page/{$this->opt_name}/section/before", $this->section ); } ?> description ) ) : ?>
    • description; ?>

  • render_fallback(); } } } redux/ReduxCore/inc/extensions/customizer/inc/customizer_control.php000066600000004410152143340070022177 0ustar00redux_id = str_replace( 'customize-control-', '', 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) ) ); $class = 'customize-control redux-group-tab redux-field customize-control-' . $this->type; $opt_name = explode( '[', $this->id ); $opt_name = $opt_name[0]; ?>
  • type != "repeater" ): ?> link() ) ?> value=""/> render_content(); ?>
  • redux_id, $this ); } public function label() { // The label has already been sanitized in the Fields class, no need to re-sanitize it. echo $this->label; } public function description() { if ( ! empty( $this->description ) ) { // The description has already been sanitized in the Fields class, no need to re-sanitize it. echo '' . $this->description . ''; } } public function title() { echo ''; $this->label(); $this->description(); echo ''; } } } redux/ReduxCore/inc/extensions/customizer/inc/customizer_panel.php000066600000014534152143340070021626 0ustar00$key = $args[ $key ]; } } $this->manager = $manager; $this->id = $id; if ( empty( $this->active_callback ) ) { $this->active_callback = array( $this, 'active_callback' ); } self::$instance_count += 1; $this->instance_number = self::$instance_count; $this->sections = array(); // Users cannot customize the $sections array. // TODO Redux addition if ( isset( $args['section'] ) ) { $this->section = $args['section']; $this->description = isset( $this->section['desc'] ) ? $this->section['desc'] : ''; $this->opt_name = isset( $args['opt_name'] ) ? $args['opt_name'] : ''; } // TODO END Redux Addition } /** * WP < 4.3 Render * * @since * @access protected */ protected function render() { global $wp_version; $version = explode( '-', $wp_version ); if ( version_compare( $version[0], '4.3', '<' ) ) { $this->render_fallback(); } } protected function render_fallback() { $classes = 'accordion-section redux-main redux-panel control-section control-panel control-panel-' . esc_attr($this->type); ?>
  • title, array( 'em' => array(), 'i' => array(), 'strong' => array(), 'span' => array( 'class' => array(), 'style' => array(), ), ) ); ?>

      render_content(); ?>
  • ' . esc_html( $this->title ) . '' ); ?>
    description ) ) : ?>
    description; ?>
  • {{ data.title }}' ); ?> <# if ( data.description ) { #> <# } #>
    <# if ( data.description ) { #>
    {{{ data.description }}}
    <# } #>
  • //return; /** * Redux Framework is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * any later version. * Redux Framework is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with Redux Framework. If not, see . * * @package ReduxFramework * @author Dovy Paukstys (dovy) * @version 0.1.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_extension_customizer' ) ) { /** * Main ReduxFramework customizer extension class * * @since 1.0.0 */ class ReduxFramework_extension_customizer { // Protected vars protected $redux; private $_extension_url; private $_extension_dir; private $parent; private $orig_options = array(); private static $post_values = array(); public static $version = "2.0.0"; private $options = array(); /** * Class Constructor. Defines the args for the extions class * * @since 1.0.0 * @access public * * @param array $sections Panel sections. * @param array $args Class constructor arguments. * @param array $extra_tabs Extra panel tabs. * * @return void */ public function __construct( $parent ) { $this->parent = $parent; $this->upload_dir = ReduxFramework::$_upload_dir . 'advanced-customizer/'; //add_action('wp_head', array( $this, '_enqueue_new' )); if ( $parent->args['customizer'] == false ) { return; } // Override the ReduxCore class add_filter( "redux/extension/{$this->parent->args['opt_name']}/customizer", array( $this, 'remove_core_customizer_class' ) ); global $pagenow, $wp_customize; if ( ! isset( $wp_customize ) && $pagenow !== "customize.php" && $pagenow !== "admin-ajax.php" ) { return; } if ( ( $pagenow !== "customize.php" && $pagenow !== "admin-ajax.php" && ! isset( $GLOBALS['wp_customize'] ) ) ) { //return; } if ( empty( $this->_extension_dir ) ) { $this->_extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); $this->_extension_url = site_url( str_replace( trailingslashit( str_replace( '\\', '/', ABSPATH ) ), '', $this->_extension_dir ) ); } self::get_post_values(); // Create defaults array $defaults = array(); /* customize_controls_init customize_controls_enqueue_scripts customize_controls_print_styles customize_controls_print_scripts customize_controls_print_footer_scripts */ //add_action('customize_save', ); if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == "on" ) { $this->parent->args['customizer_only'] = true; } if ( isset( $_POST['wp_customize'] ) && $_POST['wp_customize'] == "on" && isset( $_POST['customized'] ) && ! empty( $_POST['customized'] ) && ! isset( $_POST['action'] ) ) { add_action( "redux/options/{$this->parent->args['opt_name']}/options", array( $this, '_override_values' ), 100 ); } add_action( 'customize_register', array( $this, '_register_customizer_controls' ) ); // Create controls add_action( 'wp_head', array( $this, 'customize_preview_init' ) ); //add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save // Add global controls CSS file add_action( 'customize_controls_print_scripts', array( $this, 'enqueue_controls_css' ) ); add_action( 'customize_controls_init', array( $this, 'enqueue_panel_css' ) ); //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript //add_action( "wp_footer", array( $this, '_enqueue_new' ), 100 ); //$this->_enqueue_new(); } function enqueue_controls_css() { require_once ReduxFramework::$_dir . 'core/enqueue.php'; $enqueue = new reduxCoreEnqueue ( $this->parent ); $enqueue->get_warnings_and_errors_array(); $enqueue->init(); wp_enqueue_style( 'redux-extension-advanced-customizer', $this->_extension_url . 'extension_customizer.css', '', time() ); wp_enqueue_script( 'redux-extension-customizer', $this->_extension_url . 'extension_customizer' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), ReduxFramework_extension_customizer::$version, true ); wp_localize_script( 'redux-extension-customizer', 'redux_customizer', array( 'body_class' => sanitize_html_class( 'admin-color-' . get_user_option( 'admin_color' ), 'fresh' ) ) ); } function enqueue_panel_css() { } function remove_core_customizer_class( $path ) { return ""; } function customize_preview_init() { do_action( 'redux/customizer/live_preview' ); } protected static function get_post_values() { if ( empty( self::$post_values ) && isset( $_POST['customized'] ) && ! empty( $_POST['customized'] ) ) { self::$post_values = json_decode( stripslashes_deep( $_POST['customized'] ), true ); } } public function _override_values( $data ) { self::get_post_values(); if ( isset( $_POST['customized'] ) && ! empty( self::$post_values ) ) { if ( is_array( self::$post_values ) ) { foreach ( self::$post_values as $key => $value ) { if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) { //if (is_array($value)) { // $value = @stripslashes( $value ); // if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) { // $value = @array_map( 'stripslashes_deep', $value ); // $value = @array_map( 'urldecode', $value ); // } //} else { // $value = @urldecode($value); //} $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) ); $data[ $key ] = $value; $GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value; $this->parent->options[ $key ] = $value; } } } } return $data; } public function _enqueue_new() { //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; //echo ""; /* wp_enqueue_script('redux-extension-customizer-codemirror-js', $this->_extension_url . 'new/codemirror.min.js'); wp_enqueue_script('redux-extension-customizer-color-js', $this->_extension_url . 'new/colors-control.js'); wp_enqueue_script('redux-extension-customizer-controls-js', $this->_extension_url . 'new/customizer-control.js'); wp_enqueue_script('redux-extension-customizer-fonts-js', $this->_extension_url . 'new/fonts-customizer-admin.js'); wp_enqueue_script('redux-extension-customizer-header-js', $this->_extension_url . 'new/header-control.js'); wp_enqueue_script('redux-extension-customizer-models-js', $this->_extension_url . 'new/header-models.js'); wp_enqueue_script('redux-extension-customizer-slimscroll-js', $this->_extension_url . 'new/jquery.slimscroll.js'); wp_enqueue_script('redux-extension-customizer-droppable-js', $this->_extension_url . 'new/jquery.ui.droppable.min.js'); wp_enqueue_script('redux-extension-customizer-editor-js', $this->_extension_url . 'new/media-editor.min.js'); wp_enqueue_script('redux-extension-customizer-new-js', $this->_extension_url . 'new/new-customizer.js'); wp_enqueue_script('redux-extension-customizer-previewing-js', $this->_extension_url . 'new/previewing.js'); wp_enqueue_script('redux-extension-customizer-theme-js', $this->_extension_url . 'new/theme-customizer.js'); */ } public function render( $control ) { $fieldID = str_replace( $this->parent->args['opt_name'] . '-', '', $control->redux_id ); $field = $this->options[ $fieldID ]; if ( isset( $field['compiler'] ) && ! empty( $field['compiler'] ) ) { echo '
    ' . $this->parent->field_head[ $field['id'] ] . ''; //$field['data-customize-setting-link'] = array( // 'name' => $field['name'], // 'suffix' => isset($field['name_suffix']) ? $field['name_suffix'] : '' //); // $field['name'] = $field['id']; $this->parent->_field_input( $field ); echo '
    '; echo '
     
    '; echo '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-divide', ReduxFramework::$_url . 'inc/fields/divide/field_divide.css', array(), time(), 'all' ); } } } }redux/ReduxCore/inc/fields/divide/field_divide.css.map000066600000001607152143340070016762 0ustar00{ "version": 3, "mappings": "AACI,mBAAQ;EACJ,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,OAAO;EACrB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,eAAe;EACvB,WAAW,EAAE,eAAe;EAC5B,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,aAAa;EAErB,0BAAO;IACH,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,GAAG;IAChB,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,GAAG;IACrB,gBAAgB,EAAE,KAAK;IACvB,+BAAK;MACD,gBAAgB,EAAE,OAAO;MACzB,YAAY,EAAE,OAAO;MACrB,MAAM,EAAE,GAAG;MACX,KAAK,EAAE,GAAG;MACV,YAAY,EAAE,GAAG;MACjB,YAAY,EAAE,KAAK;MACnB,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE,GAAG;MACT,WAAW,EAAE,IAAI;MACjB,UAAU,EAAE,IAAI;;AAO5B,qDAAe;EACX,KAAK,EAAE,cAAc;EACrB,IAAI,EAAE,cAAc;EACpB,WAAW,EAAE,GAAG", "sources": ["field_divide.scss"], "names": [], "file": "field_divide.css" }redux/ReduxCore/inc/fields/divide/field_divide.css000066600000001362152143340070016204 0ustar00.redux-main .divide{height:20px;line-height:20px;float:none;border-color:#e7e7e7;display:block;width:100%;height:35px !important;line-height:35px !important;position:relative;margin:15px 0 10px 0}.redux-main .divide .inner{width:42% !important;left:40% !important;margin-left:-6%;background-color:#fcfcfc;border-color:#e7e7e7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#fcfcfc;border-color:#e7e7e7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82% !important;left:18% !important;margin-left:-8%}redux/ReduxCore/inc/fields/section/field_section.css.map000066600000000444152143340070017360 0ustar00{ "version": 3, "mappings": "AACI,wCAA6B;EACzB,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,aAAa;AAG9B,iEAAsD;EAClD,OAAO,EAAE,cAAc;AAG3B,cAAG;EACC,UAAU,EAAE,IAAI;AAIhB,iEAAc;EACV,OAAO,EAAE,IAAI;AAGjB,uEAAoB;EAChB,aAAa,EAAE,CAAC", "sources": ["field_section.scss"], "names": [], "file": "field_section.css" }redux/ReduxCore/inc/fields/section/field_section.php000066600000012652152143340070016607 0ustar00. * * @package ReduxFramework * @subpackage Field_Section * @author Tobias Karnetze (athoss.de) * @version 1.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_section' ) ) { /** * Main ReduxFramework_heading class * * @since 1.0.0 */ class ReduxFramework_section { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ public function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { // No errors please $defaults = array( 'indent' => '', 'style' => '', 'class' => '', 'title' => '', 'subtitle' => '', ); $this->field = wp_parse_args( $this->field, $defaults ); $guid = uniqid(); $add_class = ''; if ( isset( $this->field['indent'] ) && true === $this->field['indent'] ) { $add_class = ' form-table-section-indented'; } elseif( !isset( $this->field['indent'] ) || ( isset( $this->field['indent'] ) && false !== $this->field['indent'] ) ) { $add_class = " hide"; } echo '
    '; echo '
    '; if ( ! empty( $this->field['title'] ) ) { echo '

    ' . esc_html($this->field['title']) . '

    '; } if ( ! empty( $this->field['subtitle'] ) ) { echo '
    ' . esc_html($this->field['subtitle']) . '
    '; } echo '
    '; // delete the tr afterwards ?> parent->args['dev_mode'] ) { wp_enqueue_style( 'redux-field-section-css', ReduxFramework::$_url . 'inc/fields/section/field_section.css', array(), time(), 'all' ); } } } }redux/ReduxCore/inc/fields/section/field_section.css000066600000000542152143340070016603 0ustar00.redux-main .form-table-section-indented{width:95%;margin-left:5% !important}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0 !important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}redux/ReduxCore/inc/fields/section/field_section.scss000066600000000672152143340070016772 0ustar00.redux-main { .form-table-section-indented { width: 95%; margin-left: 5% !important; } .form-table-section tr:first-of-type th:first-of-type { padding: 0px !important; } h3 { margin-top: 10px; } .form-table-section-indented > tbody > tr{ &:first-child { display: none; } &:nth-last-child(2) { border-bottom: 0; } } } redux/ReduxCore/inc/fields/slider/field_slider.min.js000066600000006243152143340070016651 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.slider=redux.field_objects.slider||{},a(document).ready(function(){}),redux.field_objects.slider.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-slider:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),b.find("div.redux-slider-container").each(function(){var c,d,e,f,g,h,i=0,j=1,k=2,l=3,m=a(this).data("id"),n=a(this).data("min"),o=a(this).data("max"),p=a(this).data("step"),q=a(this).data("handles"),r=a(this).data("default-one"),s=a(this).data("default-two"),t=a(this).data("resolution"),u=parseInt(a(this).data("display")),v=Boolean(a(this).data("rtl")),w=a(this).data("float-mark");Boolean(a(this).data("forced"));h=v===!0?"rtl":"ltr";var x,y,z=[n,o],A=[r,s],B=[r];u==k?(e=b.find(".redux-slider-input-one-"+m),f=b.find(".redux-slider-input-two-"+m),x=e,y=f):u==l?(e=b.find(".redux-slider-select-one-"+m),f=b.find(".redux-slider-select-two-"+m),redux.field_objects.slider.loadSelect(e,n,o,t,p),2===q&&redux.field_objects.slider.loadSelect(f,n,o,t,p)):u==j?(e=b.find("#redux-slider-label-one-"+m),f=b.find("#redux-slider-label-two-"+m)):u==i&&(e=b.find(".redux-slider-value-one-"+m),f=b.find(".redux-slider-value-two-"+m));var C,D;if(u==j){var E=[e,"html"],F=[f,"html"];C=[E],D=[E,F]}else C=[e],D=[e,f];2===q?(c=A,d=D,g=!0):(c=B,d=C,g="lower");var G=a(this).noUiSlider({range:z,start:c,handles:q,step:p,connect:g,behaviour:"tap-drag",direction:h,serialization:{resolution:t,to:d,mark:w},slide:function(){if(u==j)if(2===q){var c=G.val();b.find("input.redux-slider-value-one-"+m).attr("value",c[0]),b.find("input.redux-slider-value-two-"+m).attr("value",c[1])}else b.find("input.redux-slider-value-one-"+m).attr("value",G.val());u==l&&(2===q?(b.find(".redux-slider-select-one").select2("val",G.val()[0]),b.find(".redux-slider-select-two").select2("val",G.val()[1])):b.find(".redux-slider-select-one").select2("val",G.val())),redux_change(a(this).parents(".redux-field-container:first").find("input"))}});u===k&&(x.keydown(function(a){var b=G.val(),c=parseInt(b[0]);switch(a.which){case 38:G.val([c+1,null]);break;case 40:G.val([c-1,null]);break;case 13:a.preventDefault()}}),2===q&&y.keydown(function(a){var b=G.val(),c=parseInt(b[1]);switch(a.which){case 38:G.val([null,c+1]);break;case 40:G.val([null,c-1]);break;case 13:a.preventDefault()}}))});var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find("select.redux-slider-select-one, select.redux-slider-select-two").select2(d)}})},redux.field_objects.slider.isFloat=function(a){return+a===a&&!isFinite(a)||Boolean(a%1)},redux.field_objects.slider.decimalCount=function(a){var b=a.toString().split(".");return b[1].length},redux.field_objects.slider.loadSelect=function(b,c,d,e,f){for(var g=c;d>=g;g+=e){var h=g;if(redux.field_objects.slider.isFloat(e)){var i=redux.field_objects.slider.decimalCount(e);h=g.toFixed(i)}a(b).append('")}}}(jQuery);redux/ReduxCore/inc/fields/slider/field_slider.css000066600000002713152143340070016241 0ustar00.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px !important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width:782px){.redux-container-slider input{display:inline-block !important}}@media screen and (max-width:570px){.redux-container-slider{text-align:center}.redux-container-slider input,.redux-container-slider select,.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container{display:block !important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25% !important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}redux/ReduxCore/inc/fields/slider/field_slider.php000066600000035174152143340070016247 0ustar00. * * @package ReduxFramework * @subpackage Field_Slider * @author Kevin Provance (kprovance) * @version 2.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'ReduxFramework_slider' ) ) { class ReduxFramework_slider { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 3.1.8 */ private $display_none = 0; private $display_label = 1; private $display_text = 2; private $display_select = 3; function __construct( $field = array(), $value = '', $parent ) { //parent::__construct( $parent->sections, $parent->args ); $this->parent = $parent; $this->field = $field; $this->value = $value; // Set defaults $defaults = array( 'handles' => 1, 'resolution' => 1, 'display_value' => 'text', 'float_mark' => '.', 'forced' => true ); $this->field = wp_parse_args( $this->field, $defaults ); // Sanitize float mark switch ( $this->field['float_mark'] ) { case ',': case '.': break; default: $this->field['float_mark'] = '.'; break; } // Sanitize resolution value $this->field['resolution'] = $this->cleanVal( $this->field['resolution'] ); // Sanitize handle value switch ( $this->field['handles'] ) { case 0: case 1: $this->field['handles'] = 1; break; default: $this->field['handles'] = 2; break; } // Sanitize display value switch ( $this->field['display_value'] ) { case 'label': $this->field['display_value'] = $this->display_label; break; case 'text': default: $this->field['display_value'] = $this->display_text; break; case 'select': $this->field['display_value'] = $this->display_select; break; case 'none': $this->field['display_value'] = $this->display_none; break; } } private function cleanVal( $var ) { if ( is_float( $var ) ) { $cleanVar = floatval( $var ); } else { $cleanVar = intval( $var ); } return $cleanVar; } private function cleanDefault( $val ) { if ( empty( $val ) && ! empty( $this->field['default'] ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { $val = $this->cleanVal( $this->field['default'] ); } if ( empty( $val ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { $val = $this->cleanVal( $this->field['min'] ); } if ( empty( $val ) ) { $val = 0; } // Extra Validation if ( $val < $this->field['min'] ) { $val = $this->cleanVal( $this->field['min'] ); } else if ( $val > $this->field['max'] ) { $val = $this->cleanVal( $this->field['max'] ); } return $val; } private function cleanDefaultArray( $val ) { $one = $this->value[1]; $two = $this->value[2]; if ( empty( $one ) && ! empty( $this->field['default'][1] ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { $one = $this->cleanVal( $this->field['default'][1] ); } if ( empty( $one ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { $one = $this->cleanVal( $this->field['min'] ); } if ( empty( $one ) ) { $one = 0; } if ( empty( $two ) && ! empty( $this->field['default'][2] ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { $two = $this->cleanVal( $this->field['default'][1] + 1 ); } if ( empty( $two ) && $this->cleanVal( $this->field['min'] ) >= 1 ) { $two = $this->cleanVal( $this->field['default'][1] + 1 ); } if ( empty( $two ) ) { $two = $this->field['default'][1] + 1; } $val[0] = $one; $val[1] = $two; return $val; } /** * Clean the field data to the fields defaults given the parameters. * * @since Redux_Framework 3.1.8 */ function clean() { // Set min to 0 if no value is set. $this->field['min'] = empty( $this->field['min'] ) ? 0 : $this->cleanVal( $this->field['min'] ); // Set max to min + 1 if empty. $this->field['max'] = empty( $this->field['max'] ) ? $this->field['min'] + 1 : $this->cleanVal( $this->field['max'] ); // Set step to 1 if step is empty ot step > max. $this->field['step'] = empty( $this->field['step'] ) || $this->field['step'] > $this->field['max'] ? 1 : $this->cleanVal( $this->field['step'] ); if ( 2 == $this->field['handles'] ) { if ( ! is_array( $this->value ) ) { $this->value[1] = 0; $this->value[2] = 1; } $this->value = $this->cleanDefaultArray( $this->value ); } else { if ( is_array( $this->value ) ) { $this->value = 0; } $this->value = $this->cleanDefault( $this->value ); } // More dummy checks //if ( ! is_array( $this->field['default'] ) && 2 == $this->field['handles'] ) { if ( ! is_array( $this->value ) && 2 == $this->field['handles'] ) { $this->value[0] = $this->field['min']; $this->value[1] = $this->field['min'] + 1; } //if ( is_array( $this->field['default'] ) && 1 == $this->field['handles'] ) { if ( is_array( $this->value ) && 1 == $this->field['handles'] ) { $this->value = $this->field['min']; } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 3.1.8 */ function enqueue() { $min = Redux_Functions::isMin(); wp_enqueue_style( 'select2-css' ); wp_enqueue_style( 'redux-nouislider-css', ReduxFramework::$_url . 'inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.css', array(), '5.0.0', 'all' ); wp_register_script( 'redux-nouislider-js', ReduxFramework::$_url . 'inc/fields/slider/vendor/nouislider/redux.jquery.nouislider' . $min . '.js', array( 'jquery' ), '5.0.0', true ); wp_enqueue_script( 'redux-field-slider-js', ReduxFramework::$_url . 'inc/fields/slider/field_slider' . $min . '.js', array( 'jquery', 'redux-nouislider-js', 'redux-js', 'select2-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-slider-css', ReduxFramework::$_url . 'inc/fields/slider/field_slider.css', array(), time(), 'all' ); } } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 0.0.4 */ function render() { $this->clean(); $fieldID = $this->field['id']; $fieldName = $this->field['name'] . $this->field['name_suffix']; //$fieldName = $this->parent->args['opt_name'] . '[' . $this->field['id'] . ']'; // Set handle number variable. $twoHandles = false; if ( 2 == $this->field['handles'] ) { $twoHandles = true; } // Set default values(s) if ( true == $twoHandles ) { $valOne = $this->value[0]; $valTwo = $this->value[1]; $html = 'data-default-one="' . $valOne . '" '; $html .= 'data-default-two="' . $valTwo . '" '; $nameOne = $fieldName . '[1]'; $nameTwo = $fieldName . '[2]'; $idOne = $fieldID . '[1]'; $idTwo = $fieldID . '[2]'; } else { $valOne = $this->value; $valTwo = ''; $html = 'data-default-one="' . $valOne . '"'; $nameOne = $fieldName; $nameTwo = ''; $idOne = $fieldID; $idTwo = ''; } $showInput = false; $showLabel = false; $showSelect = false; // TEXT output if ( $this->display_text == $this->field['display_value'] ) { $showInput = true; echo ''; // LABEL output } elseif ( $this->display_label == $this->field['display_value'] ) { $showLabel = true; $labelNum = $twoHandles ? '-one' : ''; echo '
    '; // SELECT output } elseif ( $this->display_select == $this->field['display_value'] ) { $showSelect = true; if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } echo ''; } // DIV output echo '
    '; // Double slider output if ( true == $twoHandles ) { // TEXT if ( true == $showInput ) { echo ''; } // LABEL if ( true == $showLabel ) { echo '
    '; } // SELECT if ( true == $showSelect ) { echo ''; } } // NO output (input hidden) if ( $this->display_none == $this->field['display_value'] || $this->display_label == $this->field['display_value'] ) { echo ''; // double slider hidden output if ( true == $twoHandles ) { echo ''; } } } } }redux/ReduxCore/inc/fields/slider/field_slider.js000066600000027136152143340070016073 0ustar00/*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.slider = redux.field_objects.slider || {}; $( document ).ready( function() { } ); redux.field_objects.slider.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-slider:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( 'div.redux-slider-container' ).each( function() { var start, toClass, defClassOne, defClassTwo, connectVal; var DISPLAY_NONE = 0; var DISPLAY_LABEL = 1; var DISPLAY_TEXT = 2; var DISPLAY_SELECT = 3; var mainID = $( this ).data( 'id' ); var minVal = $( this ).data( 'min' ); var maxVal = $( this ).data( 'max' ); var stepVal = $( this ).data( 'step' ); var handles = $( this ).data( 'handles' ); var defValOne = $( this ).data( 'default-one' ); var defValTwo = $( this ).data( 'default-two' ); var resVal = $( this ).data( 'resolution' ); var displayValue = parseInt( ($( this ).data( 'display' )) ); var rtlVal = Boolean( $( this ).data( 'rtl' ) ); var floatMark = ($( this ).data( 'float-mark' )); var forced = Boolean($( this ).data( 'forced' )); var rtl; if ( rtlVal === true ) { rtl = 'rtl'; } else { rtl = 'ltr'; } // range array var range = [minVal, maxVal]; // Set default values for dual slides. var startTwo = [defValOne, defValTwo]; // Set default value for single slide var startOne = [defValOne]; var inputOne, inputTwo; if ( displayValue == DISPLAY_TEXT ) { defClassOne = el.find( '.redux-slider-input-one-' + mainID ); defClassTwo = el.find( '.redux-slider-input-two-' + mainID ); inputOne = defClassOne; inputTwo = defClassTwo; } else if ( displayValue == DISPLAY_SELECT ) { defClassOne = el.find( '.redux-slider-select-one-' + mainID ); defClassTwo = el.find( '.redux-slider-select-two-' + mainID ); redux.field_objects.slider.loadSelect( defClassOne, minVal, maxVal, resVal, stepVal ); if ( handles === 2 ) { redux.field_objects.slider.loadSelect( defClassTwo, minVal, maxVal, resVal, stepVal ); } } else if ( displayValue == DISPLAY_LABEL ) { defClassOne = el.find( '#redux-slider-label-one-' + mainID ); defClassTwo = el.find( '#redux-slider-label-two-' + mainID ); } else if ( displayValue == DISPLAY_NONE ) { defClassOne = el.find( '.redux-slider-value-one-' + mainID ); defClassTwo = el.find( '.redux-slider-value-two-' + mainID ); } var classOne, classTwo; if ( displayValue == DISPLAY_LABEL ) { var x = [defClassOne, 'html']; var y = [defClassTwo, 'html']; classOne = [x]; classTwo = [x, y]; } else { classOne = [defClassOne]; classTwo = [defClassOne, defClassTwo]; } if ( handles === 2 ) { start = startTwo; toClass = classTwo; connectVal = true; } else { start = startOne; toClass = classOne; connectVal = 'lower'; } var slider = $( this ).noUiSlider( { range: range, start: start, handles: handles, step: stepVal, connect: connectVal, behaviour: "tap-drag", direction: rtl, serialization: { resolution: resVal, to: toClass, mark: floatMark, }, slide: function() { if ( displayValue == DISPLAY_LABEL ) { if ( handles === 2 ) { var inpSliderVal = slider.val(); el.find( 'input.redux-slider-value-one-' + mainID ).attr( 'value', inpSliderVal[0] ); el.find( 'input.redux-slider-value-two-' + mainID ).attr( 'value', inpSliderVal[1] ); } else { el.find( 'input.redux-slider-value-one-' + mainID ).attr( 'value', slider.val() ); } } if ( displayValue == DISPLAY_SELECT ) { if ( handles === 2 ) { el.find( '.redux-slider-select-one' ).select2( 'val', slider.val()[0] ); el.find( '.redux-slider-select-two' ).select2( 'val', slider.val()[1] ); } else { el.find( '.redux-slider-select-one' ).select2( 'val', slider.val() ); } } redux_change( $( this ).parents( '.redux-field-container:first' ).find( 'input' ) ); } } ); if ( displayValue === DISPLAY_TEXT ) { inputOne.keydown( function( e ) { var sliderOne = slider.val(); var value = parseInt( sliderOne[0] ); switch ( e.which ) { case 38: slider.val( [value + 1, null] ); break; case 40: slider.val( [value - 1, null] ); break; case 13: e.preventDefault(); break; } } ); if ( handles === 2 ) { inputTwo.keydown( function( e ) { var sliderTwo = slider.val(); var value = parseInt( sliderTwo[1] ); switch ( e.which ) { case 38: slider.val( [null, value + 1] ); break; case 40: slider.val( [null, value - 1] ); break; case 13: e.preventDefault(); break; } } ); } } } ); var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; var select2_handle = el.find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } el.find( 'select.redux-slider-select-one, select.redux-slider-select-two' ).select2( default_params ); } ); }; // Return true for float value, false otherwise redux.field_objects.slider.isFloat = function( mixed_var ) { return +mixed_var === mixed_var && (!(isFinite( mixed_var ))) || Boolean( (mixed_var % 1) ); }; // Return number of integers after the decimal point. redux.field_objects.slider.decimalCount = function( res ) { var q = res.toString().split( '.' ); return q[1].length; }; redux.field_objects.slider.loadSelect = function( myClass, min, max, res, step ) { //var j = step + ((decCount ) - (step )); // 18; for ( var i = min; i <= max; i = i + res ) { //var step = 2; //if (j === (step + ((decCount ) - (step )))) { var n = i; if ( redux.field_objects.slider.isFloat( res ) ) { var decCount = redux.field_objects.slider.decimalCount( res ); n = i.toFixed( decCount ); } $( myClass ).append( '' ); //j = 0; //} //j++; } }; })( jQuery ); redux/ReduxCore/inc/fields/slider/field_slider.scss000066600000003270152143340070016423 0ustar00.redux-container-slider { .redux-slider-container { margin-left: 25px; margin-right: 25px; width: 200px; display: inline-block; vertical-align: middle; } .redux-slider-input, .redux-slider-select-one, .redux-slider-select-two { width: 100px !important; text-align: center; } .redux-slider-label { position: absolute; margin-left: -5px; } .redux-slider-label-one { position: absolute; margin-left: -22px; } .redux-slider-label-two { position: absolute; margin-top: -21px; margin-left: 245px; } } @media screen and (max-width: 782px) { .redux-container-slider { input { display: inline-block !important; } } } // Select Slider @media screen and (max-width: 570px) { .redux-container-slider { text-align: center; input, select, .redux-slider-label, .select2-container { display: block !important; position: inherit; margin: 10px auto; } .redux-slider-container { margin-top: 3px; width: 80%; } } } .wp-customizer { .redux-container-slider { .redux-slider-label { float: left; position: inherit; width: 25%; text-align: center; margin-left:0; } .redux-slider-input, .redux-slider-select-one, .redux-slider-select-two { width: 25% !important; } .redux-slider-container { width: 70%; margin-right: 0; margin-left: 5%; } } } redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.min.js000066600000024145152143340070024520 0ustar00(function(f){if(f.zepto&&!f.fn.removeData)throw new ReferenceError("Zepto is loaded without the data module.");f.fn.noUiSlider=function(C,D){function s(a,b){return 100*b/(a[1]-a[0])}function E(a,b){return b*(a[1]-a[0])/100+a[0]}function t(a){return a instanceof f||f.zepto&&f.zepto.isZ(a)}function n(a){return!isNaN(parseFloat(a))&&isFinite(a)}function r(a,b){f.isArray(a)||(a=[a]);f.each(a,function(){"function"===typeof this&&this.call(b)})}function F(a,b){return function(){var c=[null,null];c[b]=f(this).val(); a.val(c,!0)}}function G(a,b){a=a.toFixed(b.decimals);0===parseFloat(a)&&(a=a.replace("-0","0"));return a.replace(".",b.serialization.mark)}function u(a){return parseFloat(a.toFixed(7))}function p(a,b,c,d){var e=d.target;a=a.replace(/\s/g,h+" ")+h;b.on(a,function(a){var b=e.attr("disabled");if(e.hasClass("noUi-state-tap")||void 0!==b&&null!==b)return!1;var g;a.preventDefault();var b=0===a.type.indexOf("touch"),h=0===a.type.indexOf("mouse"),l=0===a.type.indexOf("pointer"),v,H=a;0===a.type.indexOf("MSPointer")&& (l=!0);a.originalEvent&&(a=a.originalEvent);b&&(g=a.changedTouches[0].pageX,v=a.changedTouches[0].pageY);if(h||l)l||void 0!==window.pageXOffset||(window.pageXOffset=document.documentElement.scrollLeft,window.pageYOffset=document.documentElement.scrollTop),g=a.clientX+window.pageXOffset,v=a.clientY+window.pageYOffset;g=f.extend(H,{pointX:g,pointY:v,cursor:h});c(g,d,e.data("base").data("options"))})}function I(a){var b=this.target;if(void 0===a)return this.element.data("value");!0===a?a=this.element.data("value"): this.element.data("value",a);void 0!==a&&f.each(this.elements,function(){if("function"===typeof this)this.call(b,a);else this[0][this[1]](a)})}function J(a,b,c){if(t(b)){var d=[],e=a.data("target");a.data("options").direction&&(c=c?0:1);b.each(function(){f(this).on("change"+h,F(e,c));d.push([f(this),"val"])});return d}"string"===typeof b&&(b=[f('').appendTo(a).addClass(g[3]).change(function(a){a.stopPropagation()}),"val"]);return[b]}function K(a,b,c){var d=[];f.each(c.to[b], function(e){d=d.concat(J(a,c.to[b][e],b))});return{element:a,elements:d,target:a.data("target"),val:I}}function L(a,b){var c=a.data("target");c.hasClass(g[14])||(b||(c.addClass(g[15]),setTimeout(function(){c.removeClass(g[15])},450)),c.addClass(g[14]),r(a.data("options").h,c))}function w(a,b){var c=a.data("options");b=u(b);a.data("target").removeClass(g[14]);a.css(c.style,b+"%").data("pct",b);a.is(":first-child")&&a.toggleClass(g[13],50k?100:k);if(b===a.data("pct"))return[e?e:!1,100===k?!1:k];w(a,b);return!0}function A(a,b,c,d){a.addClass(g[5]);setTimeout(function(){a.removeClass(g[5])},300);x(b,c);r(d,a.data("target"));a.data("target").change()}function M(a,b,c){var d= b.a,e=a[b.d]-b.start[b.d],e=100*e/b.size;if(1===d.length){if(a=x(d[0],b.c[0]+e),!0!==a){0<=f.inArray(d[0].data("pct"),a)&&L(b.b,!c.margin);return}}else{var k,m;c.step&&(a=c.step,e=Math.round(e/a)*a);a=k=b.c[0]+e;e=m=b.c[1]+e;0>a?(e+=-1*a,a=0):100k&&!a&&!d[0].data("pct")||100===e&&100").appendTo(b);if(b.data("base"))throw Error("Slider was already initialized.");b.data("base",k).addClass([g[6],g[16+a.direction],g[10+a.orientation]].join(" "));for(c=0;c
    ").appendTo(k),e.addClass(g[1]),e.children().addClass([g[2], g[2]+g[7+a.direction+(a.direction?-1*c:c)]].join(" ")),e.data({base:k,target:b,options:a,grab:e.children(),pct:-1}).attr("data-style",a.style),e.data({store:K(e,c,a.serialization)}),d.push(e);switch(a.connect){case 1:b.addClass(g[9]);d[0].addClass(g[12]);break;case 3:d[1].addClass(g[12]);case 2:d[0].addClass(g[9]);case 0:b.addClass(g[12])}k.addClass(g[0]).data({target:b,options:a,handles:d});b.val(a.start);if(!a.behaviour.fixed)for(c=0;ch[0]?d+Math.abs(h[0]):d-h[0]);g.direction&&(d=100-d);!0!==x(e[c],d)&&e[c].data("store").val(!0);!0===b&&r(g.set,f(this))}})}function U(a){var b=[[a,""]];f.each(a.data("base").data("handles"), function(){b=b.concat(f(this).data("store").elements)});f.each(b,function(){1') .appendTo(handle) .addClass(clsList[3]) .change(function ( e ) { e.stopPropagation(); }), 'val']; } return [item]; } // Access point and abstraction for serialization. function store ( handle, i, serialization ) { var elements = []; // Loops all items in the provided serialization setting, // add the proper events to them or create new input fields, // and add them as data to the handle so they can be kept // in sync with the slider value. $.each( serialization['to'][i], function( index ){ elements = elements.concat( storeElement( handle, serialization['to'][i][index], i ) ); }); return { element: handle ,elements: elements ,target: handle.data('target') ,'val': serialize }; } // Handle placement // Fire callback on unsuccessful handle movement. function block ( base, stateless ) { var target = base.data('target'); if ( !target.hasClass(clsList[14]) ){ // The visual effects should not always be applied. if ( !stateless ) { target.addClass(clsList[15]); setTimeout(function(){ target.removeClass(clsList[15]); }, 450); } target.addClass(clsList[14]); call( base.data('options').block, target ); } } // Change inline style and apply proper classes. function placeHandle ( handle, to ) { var settings = handle.data('options'); to = digits(to, 7); // If the slider can move, remove the class // indicating the block state. handle.data('target').removeClass(clsList[14]); // Set handle to new location handle.css( settings['style'], to + '%' ).data('pct', to); // Force proper handle stacking if ( handle.is(':first-child') ) { handle.toggleClass(clsList[13], to > 50 ); } if ( settings['direction'] ) { to = 100 - to; } // Write the value to the serialization object. handle.data('store').val( format ( isPercentage( settings['range'], to ), settings ) ); } // Test suggested values and apply margin, step. function setHandle ( handle, to ) { var base = handle.data('base'), settings = base.data('options'), handles = base.data('handles'), lower = 0, upper = 100; // Catch invalid user input if ( !isNumeric( to ) ){ return false; } // Handle the step option. if ( settings['step'] ){ to = closest( to, settings['step'] ); } if ( handles.length > 1 ){ if ( handle[0] !== handles[0][0] ) { lower = digits(handles[0].data('pct')+settings['margin'],7); } else { upper = digits(handles[1].data('pct')-settings['margin'],7); } } // Limit position to boundaries. When the handles aren't set yet, // they return -1 as a percentage value. to = Math.min( Math.max( to, lower ), upper < 0 ? 100 : upper ); // Stop handling this call if the handle can't move past another. // Return an array containing the hit limit, so the caller can // provide feedback. ( block callback ). if ( to === handle.data('pct') ) { return [!lower ? false : lower, upper === 100 ? false : upper]; } placeHandle ( handle, to ); return true; } // Handles movement by tapping function jump ( base, handle, to, callbacks ) { // Flag the slider as it is now in a transitional state. // Transition takes 300 ms, so re-enable the slider afterwards. base.addClass(clsList[5]); setTimeout(function(){ base.removeClass(clsList[5]); }, 300); // Move the handle to the new position. setHandle( handle, to ); // Trigger the 'slide' and 'set' callbacks, // pass the target so that it is 'this'. call( callbacks, base.data('target') ); base.data('target').change(); } // Event handlers // Handle movement on document for handle and range drag. function move ( event, Dt, Op ) { // Map event movement to a slider percentage. var handles = Dt.handles, limits, proposal = event[ Dt.point ] - Dt.start[ Dt.point ]; proposal = ( proposal * 100 ) / Dt.size; if ( handles.length === 1 ) { // Run handle placement, receive true for success or an // array with potential limits. limits = setHandle( handles[0], Dt.positions[0] + proposal ); if ( limits !== true ) { if ( $.inArray ( handles[0].data('pct'), limits ) >= 0 ){ block ( Dt.base, !Op['margin'] ); } return; } } else { // Dragging the range could be implemented by forcing the // 'move' event on both handles, but this solution proved // lagging on slower devices, resulting in range errors. The // slightly ugly solution below is considerably faster, and // it can't move the handle out of sync. Bypass the standard // setting method, as other checks are needed. var l1, u1, l2, u2; // Round the proposal to the step setting. if ( Op['step'] ) { proposal = closest( proposal, Op['step'] ); } // Determine the new position, store it twice. Once for // limiting, once for checking whether placement should occur. l1 = l2 = Dt.positions[0] + proposal; u1 = u2 = Dt.positions[1] + proposal; // Round the values within a sensible range. if ( l1 < 0 ) { u1 += -1 * l1; l1 = 0; } else if ( u1 > 100 ) { l1 -= ( u1 - 100 ); u1 = 100; } // Don't perform placement if no handles are to be changed. // Check if the lowest value is set to zero. if ( l2 < 0 && !l1 && !handles[0].data('pct') ) { return; } // The highest value is limited to 100%. if ( u1 === 100 && u2 > 100 && handles[1].data('pct') === 100 ){ return; } placeHandle ( handles[0], l1 ); placeHandle ( handles[1], u1 ); } // Trigger the 'slide' event, if the handle was moved. call( Op['slide'], Dt.target ); } // Unbind move events on document, call callbacks. function end ( event, Dt, Op ) { // The handle is no longer active, so remove the class. if ( Dt.handles.length === 1 ) { Dt.handles[0].data('grab').removeClass(clsList[4]); } // Remove cursor styles and text-selection events bound to the body. if ( event.cursor ) { body.css('cursor', '').off( namespace ); } // Unbind the move and end events, which are added on 'start'. doc.off( namespace ); // Trigger the change event. Dt.target.removeClass( clsList[14] +' '+ clsList[20]).change(); // Trigger the 'end' callback. call( Op['set'], Dt.target ); } // Bind move events on document. function start ( event, Dt, Op ) { // Mark the handle as 'active' so it can be styled. if( Dt.handles.length === 1 ) { Dt.handles[0].data('grab').addClass(clsList[4]); } // A drag should never propagate up to the 'tap' event. event.stopPropagation(); // Attach the move event. attach ( actions.move, doc, move, { start: event ,base: Dt.base ,target: Dt.target ,handles: Dt.handles ,positions: [ Dt.handles[0].data('pct') ,Dt.handles[ Dt.handles.length - 1 ].data('pct') ] ,point: Op['orientation'] ? 'pointY' : 'pointX' ,size: Op['orientation'] ? Dt.base.height() : Dt.base.width() }); // Unbind all movement when the drag ends. attach ( actions.end, doc, end, { target: Dt.target ,handles: Dt.handles }); // Text selection isn't an issue on touch devices, // so adding additional callbacks isn't required. if ( event.cursor ) { // Prevent the 'I' cursor and extend the range-drag cursor. body.css('cursor', $(event.target).css('cursor')); // Mark the target with a dragging state. if ( Dt.handles.length > 1 ) { Dt.target.addClass(clsList[20]); } // Prevent text selection when dragging the handles. body.on('selectstart' + namespace, function( ){ return false; }); } } // Move closest handle to tapped location. function tap ( event, Dt, Op ) { var base = Dt.base, handle, to, point, size; // The tap event shouldn't propagate up to trigger 'edge'. event.stopPropagation(); // Determine the direction of the slider. if ( Op['orientation'] ) { point = event['pointY']; size = base.height(); } else { point = event['pointX']; size = base.width(); } // Find the closest handle and calculate the tapped point. handle = closestHandle( base.data('handles'), point, Op['style'] ); to = (( point - base.offset()[ Op['style'] ] ) * 100 ) / size; // The set handle to the new position. jump( base, handle, to, [ Op['slide'], Op['set'] ]); } // Move handle to edges when target gets tapped. function edge ( event, Dt, Op ) { var handles = Dt.base.data('handles'), to, i; i = Op['orientation'] ? event['pointY'] : event['pointX']; i = i < Dt.base.offset()[Op['style']]; to = i ? 0 : 100; i = i ? 0 : handles.length - 1; jump ( Dt.base, handles[i], to, [ Op['slide'], Op['set'] ]); } // API // Validate and standardize input. function test ( input, sliders ){ /* Every input option is tested and parsed. This'll prevent endless validation in internal methods. These tests are structured with an item for every option available. An option can be marked as required by setting the 'r' flag. The testing function is provided with three arguments: - The provided value for the option; - A reference to the options object; - The name for the option; The testing function returns false when an error is detected, or true when everything is OK. It can also modify the option object, to make sure all values can be correctly looped elsewhere. */ function values ( a ) { if ( a.length !== 2 ){ return false; } // Convert the array to floats a = [ parseFloat(a[0]), parseFloat(a[1]) ]; // Test if all values are numerical if( !isNumeric(a[0]) || !isNumeric(a[1]) ){ return false; } // The lowest value must really be the lowest value. if( a[1] < a[0] ){ return false; } return a; } var serialization = { resolution: function(q,o){ // Parse the syntactic sugar that is the serialization // resolution option to a usable integer. // Checking for a string '1', since the resolution needs // to be cast to a string to split in on the period. switch( q ){ case 1: case 0.1: case 0.01: case 0.001: case 0.0001: case 0.00001: q = q.toString().split('.'); o['decimals'] = q[0] === '1' ? 0 : q[1].length; break; case undefined: o['decimals'] = 2; break; default: return false; } return true; } ,mark: function(q,o,w){ if ( !q ) { o[w]['mark'] = '.'; return true; } switch( q ){ case '.': case ',': return true; default: return false; } } ,to: function(q,o,w){ // Checks whether a variable is a candidate to be a // valid serialization target. function ser(r){ return isInstance ( r ) || typeof r === 'string' || typeof r === 'function' || r === false || ( isInstance ( r[0] ) && typeof r[0][r[1]] === 'function' ); } // Flatten the serialization array into a reliable // set of elements, which can be tested and looped. function filter ( value ) { var items = [[],[]]; // If a single value is provided it can be pushed // immediately. if ( ser(value) ) { items[0].push(value); } else { // Otherwise, determine whether this is an // array of single elements or sets. $.each(value, function(i, val) { // Don't handle an overflow of elements. if( i > 1 ){ return; } // Decide if this is a group or not if( ser(val) ){ items[i].push(val); } else { items[i] = items[i].concat(val); } }); } return items; } if ( !q ) { o[w]['to'] = [[],[]]; } else { var i, j; // Flatten the serialization array q = filter ( q ); // Reverse the API for RTL sliders. if ( o['direction'] && q[1].length ) { q.reverse(); } // Test all elements in the flattened array. for ( i = 0; i < o['handles']; i++ ) { for ( j = 0; j < q[i].length; j++ ) { // Return false on invalid input if( !ser(q[i][j]) ){ return false; } // Remove 'false' elements, since those // won't be handled anyway. if( !q[i][j] ){ q[i].splice(j, 1); } } } // Write the new values back o[w]['to'] = q; } return true; } }, tests = { /* Handles. * Has default, can be 1 or 2. */ 'handles': { 'r': true ,'t': function(q){ q = parseInt(q, 10); return ( q === 1 || q === 2 ); } } /* Range. * Must be an array of two numerical floats, * which can't be identical. */ ,'range': { 'r': true ,'t': function(q,o,w){ o[w] = values(q); // The values can't be identical. return o[w] && o[w][0] !== o[w][1]; } } /* Start. * Must be an array of two numerical floats when handles = 2; * Uses 'range' test. * When handles = 1, a single float is also allowed. */ ,'start': { 'r': true ,'t': function(q,o,w){ if( o['handles'] === 1 ){ if( $.isArray(q) ){ q = q[0]; } q = parseFloat(q); o.start = [q]; return isNumeric(q); } o[w] = values(q); return !!o[w]; } } /* Connect. * Must be true or false when handles = 2; * Can use 'lower' and 'upper' when handles = 1. */ ,'connect': { 'r': true ,'t': function(q,o,w){ if ( q === 'lower' ) { o[w] = 1; } else if ( q === 'upper' ) { o[w] = 2; } else if ( q === true ) { o[w] = 3; } else if ( q === false ) { o[w] = 0; } else { return false; } return true; } } /* Connect. * Will default to horizontal, not required. */ ,'orientation': { 't': function(q,o,w){ switch (q){ case 'horizontal': o[w] = 0; break; case 'vertical': o[w] = 1; break; default: return false; } return true; } } /* Margin. * Must be a float, has a default value. */ ,'margin': { 'r': true ,'t': function(q,o,w){ q = parseFloat(q); o[w] = fromPercentage(o['range'], q); return isNumeric(q); } } /* Direction. * Required, can be 'ltr' or 'rtl'. */ ,'direction': { 'r': true ,'t': function(q,o,w){ switch ( q ) { case 'ltr': o[w] = 0; break; case 'rtl': o[w] = 1; // Invert connection for RTL sliders; o['connect'] = [0,2,1,3][o['connect']]; break; default: return false; } return true; } } /* Behaviour. * Required, defines responses to tapping and * dragging elements. */ ,'behaviour': { 'r': true ,'t': function(q,o,w){ o[w] = { 'tap': q !== (q = q.replace('tap', '')) ,'extend': q !== (q = q.replace('extend', '')) ,'drag': q !== (q = q.replace('drag', '')) ,'fixed': q !== (q = q.replace('fixed', '')) }; return !q.replace('none','').replace(/\-/g,''); } } /* Serialization. * Required, but has default. Must be an array * when using two handles, can be a single value when using * one handle. 'mark' can be period (.) or comma (,). */ ,'serialization': { 'r': true ,'t': function(q,o,w){ return serialization.to( q['to'], o, w ) && serialization.resolution( q['resolution'], o ) && serialization.mark( q['mark'], o, w ); } } /* Slide. * Not required. Must be a function. */ ,'slide': { 't': function(q){ return $.isFunction(q); } } /* Set. * Not required. Must be a function. * Tested using the 'slide' test. */ ,'set': { 't': function(q){ return $.isFunction(q); } } /* Block. * Not required. Must be a function. * Tested using the 'slide' test. */ ,'block': { 't': function(q){ return $.isFunction(q); } } /* Step. * Not required. */ ,'step': { 't': function(q,o,w){ q = parseFloat(q); o[w] = fromPercentage ( o['range'], q ); return isNumeric(q); } } }; $.each( tests, function( name, test ){ /*jslint devel: true */ var value = input[name], isSet = value !== undefined; // If the value is required but not set, fail. if( ( test['r'] && !isSet ) || // If the test returns false, fail. ( isSet && !test['t']( value, input, name ) ) ){ // For debugging purposes it might be very useful to know // what option caused the trouble. Since throwing an error // will prevent further script execution, log the error // first. Test for console, as it might not be available. if( console && console.log && console.group ){ console.group( 'Invalid noUiSlider initialisation:' ); console.log( 'Option:\t', name ); console.log( 'Value:\t', value ); console.log( 'Slider(s):\t', sliders ); console.groupEnd(); } throw new RangeError('noUiSlider'); } }); } // Parse options, add classes, attach events, create HTML. function create ( options ) { /*jshint validthis: true */ // Store the original set of options on all targets, // so they can be re-used and re-tested later. // Make sure to break the relation with the options, // which will be changed by the 'test' function. this.data('options', $.extend(true, {}, options)); // Set defaults where applicable; options = $.extend({ 'handles': 2 ,'margin': 0 ,'connect': false ,'direction': 'ltr' ,'behaviour': 'tap' ,'orientation': 'horizontal' }, options); // Make sure the test for serialization runs. options['serialization'] = options['serialization'] || {}; // Run all options through a testing mechanism to ensure correct // input. The test function will throw errors, so there is // no need to capture the result of this call. It should be noted // that options might get modified to be handled properly. E.g. // wrapping integers in arrays. test( options, this ); // Pre-define the styles. options['style'] = options['orientation'] ? 'top' : 'left'; return this.each(function(){ var target = $(this), i, dragable, handles = [], handle, base = $('
    ').appendTo(target); // Throw an error if the slider was already initialized. if ( target.data('base') ) { throw new Error('Slider was already initialized.'); } // Apply classes and data to the target. target.data('base', base).addClass([ clsList[6] ,clsList[16 + options['direction']] ,clsList[10 + options['orientation']] ].join(' ')); for (i = 0; i < options['handles']; i++ ) { handle = $('
    ').appendTo(base); // Add all default and option-specific classes to the // origins and handles. handle.addClass( clsList[1] ); handle.children().addClass([ clsList[2] ,clsList[2] + clsList[ 7 + options['direction'] + ( options['direction'] ? -1 * i : i ) ]].join(' ') ); // Make sure every handle has access to all variables. handle.data({ 'base': base ,'target': target ,'options': options ,'grab': handle.children() ,'pct': -1 }).attr('data-style', options['style']); // Every handle has a storage point, which takes care // of triggering the proper serialization callbacks. handle.data({ 'store': store(handle, i, options['serialization']) }); // Store handles on the base handles.push(handle); } // Apply the required connection classes to the elements // that need them. Some classes are made up for several // segments listed in the class list, to allow easy // renaming and provide a minor compression benefit. switch ( options['connect'] ) { case 1: target.addClass( clsList[9] ); handles[0].addClass( clsList[12] ); break; case 3: handles[1].addClass( clsList[12] ); /* falls through */ case 2: handles[0].addClass( clsList[9] ); /* falls through */ case 0: target.addClass(clsList[12]); break; } // Merge base classes with default, // and store relevant data on the base element. base.addClass( clsList[0] ).data({ 'target': target ,'options': options ,'handles': handles }); // Use the public value method to set the start values. target.val( options['start'] ); // Attach the standard drag event to the handles. if ( !options['behaviour']['fixed'] ) { for ( i = 0; i < handles.length; i++ ) { // These events are only bound to the visual handle // element, not the 'real' origin element. attach ( actions.start, handles[i].children(), start, { base: base ,target: target ,handles: [ handles[i] ] }); } } // Attach the tap event to the slider base. if ( options['behaviour']['tap'] ) { attach ( actions.start, base, tap, { base: base ,target: target }); } // Extend tapping behaviour to target if ( options['behaviour']['extend'] ) { target.addClass( clsList[19] ); if ( options['behaviour']['tap'] ) { attach ( actions.start, target, edge, { base: base ,target: target }); } } // Make the range dragable. if ( options['behaviour']['drag'] ){ dragable = base.find('.'+clsList[9]).addClass(clsList[18]); // When the range is fixed, the entire range can // be dragged by the handles. The handle in the first // origin will propagate the start event upward, // but it needs to be bound manually on the other. if ( options['behaviour']['fixed'] ) { dragable = dragable .add( base.children().not(dragable).data('grab') ); } attach ( actions.start, dragable, start, { base: base ,target: target ,handles: handles }); } }); } // Return value for the slider, relative to 'range'. function getValue ( ) { /*jshint validthis: true */ var base = $(this).data('base'), answer = []; // Loop the handles, and get the value from the input // for every handle on its' own. $.each( base.data('handles'), function(){ answer.push( $(this).data('store').val() ); }); // If the slider has just one handle, return a single value. // Otherwise, return an array, which is in reverse order // if the slider is used RTL. if ( answer.length === 1 ) { return answer[0]; } if ( base.data('options').direction ) { return answer.reverse(); } return answer; } // Set value for the slider, relative to 'range'. function setValue ( args, set ) { /*jshint validthis: true */ // If the value is to be set to a number, which is valid // when using a one-handle slider, wrap it in an array. if( !$.isArray(args) ){ args = [args]; } // Setting is handled properly for each slider in the data set. return this.each(function(){ var b = $(this).data('base'), to, i, handles = Array.prototype.slice.call(b.data('handles'),0), settings = b.data('options'); // If there are multiple handles to be set run the setting // mechanism twice for the first handle, to make sure it // can be bounced of the second one properly. if ( handles.length > 1) { handles[2] = handles[0]; } // The RTL settings is implemented by reversing the front-end, // internal mechanisms are the same. if ( settings['direction'] ) { args.reverse(); } for ( i = 0; i < handles.length; i++ ){ // Calculate a new position for the handle. to = args[ i%2 ]; // The set request might want to ignore this handle. // Test for 'undefined' too, as a two-handle slider // can still be set with an integer. if( to === null || to === undefined ) { continue; } // Add support for the comma (,) as a decimal symbol. // Replace it by a period so it is handled properly by // parseFloat. Omitting this would result in a removal // of decimals. This way, the developer can also // input a comma separated string. if( $.type(to) === 'string' ) { to = to.replace(',', '.'); } // Calculate the new handle position to = toPercentage( settings['range'], parseFloat( to ) ); // Invert the value if this is an right-to-left slider. if ( settings['direction'] ) { to = 100 - to; } // If the value of the input doesn't match the slider, // reset it. Sometimes the input is changed to a value the // slider has rejected. This can occur when using 'select' // or 'input[type="number"]' elements. In this case, set // the value back to the input. if ( setHandle( handles[i], to ) !== true ){ handles[i].data('store').val( true ); } // Optionally trigger the 'set' event. if( set === true ) { call( settings['set'], $(this) ); } } }); } // Unbind all attached events, remove classed and HTML. function destroy ( target ) { // Start the list of elements to be unbound with the target. var elements = [[target,'']]; // Get the fields bound to both handles. $.each(target.data('base').data('handles'), function(){ elements = elements.concat( $(this).data('store').elements ); }); // Remove all events added by noUiSlider. $.each(elements, function(){ if( this.length > 1 ){ this[0].off( namespace ); } }); // Remove all classes from the target. target.removeClass(clsList.join(' ')); // Empty the target and remove all data. target.empty().removeData('base options'); } // Merge options with current initialization, destroy slider // and reinitialize. function build ( options ) { /*jshint validthis: true */ return this.each(function(){ // When uninitialised, jQuery will return '', // Zepto returns undefined. Both are falsy. var values = $(this).val() || false, current = $(this).data('options'), // Extend the current setup with the new options. setup = $.extend( {}, current, options ); // If there was a slider initialised, remove it first. if ( values !== false ) { destroy( $(this) ); } // Make the destroy method publicly accessible. if( !options ) { return; } // Create a new slider $(this)['noUiSlider']( setup ); // Set the slider values back. If the start options changed, // it gets precedence. if ( values !== false && setup.start === current.start ) { $(this).val( values ); } }); } // Overwrite the native jQuery value function // with a simple handler. noUiSlider will use the internal // value method, anything else will use the standard method. $.fn.val = function(){ // If the function is called without arguments, // act as a 'getter'. Call the getValue function // in the same scope as this call. if ( this.hasClass( clsList[6] ) ){ return arguments.length ? setValue.apply( this, arguments ) : getValue.apply( this ); } // If this isn't noUiSlider, continue with jQuery's // original method. return $VAL.apply( this, arguments ); }; return ( rebuild ? build : create ).call( this, options ); }; }( window['jQuery'] || window['Zepto'] )); redux/ReduxCore/inc/fields/slider/vendor/nouislider/redux.jquery.nouislider.css000066600000006035152143340070024110 0ustar00 /* Functional styling; * These styles are required for noUiSlider to function. * You don't need to change these rules to apply your design. */ .noUi-target, .noUi-target * { -webkit-touch-callout: none; -webkit-user-select: none; -ms-touch-action: none; -ms-user-select: none; -moz-user-select: none; -moz-box-sizing: border-box; box-sizing: border-box; } .noUi-base { width: 100%; height: 100%; position: relative; } .noUi-origin { position: absolute; right: 0; top: 0; left: 0; bottom: 0; } .noUi-handle { position: relative; z-index: 1; } .noUi-stacking .noUi-handle { /* This class is applied to the lower origin when its values is > 50%. */ z-index: 10; } .noUi-stacking + .noUi-origin { /* Fix stacking order in IE7, which incorrectly creates a new context for the origins. */ *z-index: -1; } .noUi-state-tap .noUi-origin { -webkit-transition: left 0.3s, top 0.3s; transition: left 0.3s, top 0.3s; } .noUi-state-drag * { cursor: inherit !important; } /* Slider size and handle placement; */ .noUi-horizontal { height: 18px; } .noUi-horizontal .noUi-handle { width: 34px; height: 28px; left: -17px; top: -6px; } .noUi-horizontal.noUi-extended { padding: 0 15px; } .noUi-horizontal.noUi-extended .noUi-origin { right: -15px; } .noUi-vertical { width: 18px; } .noUi-vertical .noUi-handle { width: 28px; height: 34px; left: -6px; top: -17px; } .noUi-vertical.noUi-extended { padding: 15px 0; } .noUi-vertical.noUi-extended .noUi-origin { bottom: -15px; } /* Styling; */ .noUi-background { background: #FAFAFA; box-shadow: inset 0 1px 1px #f0f0f0; } .noUi-connect { background: #3FB8AF; box-shadow: inset 0 0 3px rgba(51,51,51,0.45); -webkit-transition: background 450ms; transition: background 450ms; } .noUi-origin { border-radius: 2px; } .noUi-target { border-radius: 4px; border: 1px solid #D3D3D3; box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; } .noUi-target.noUi-connect { box-shadow: inset 0 0 3px rgba(51,51,51,0.45), 0 3px 6px -5px #BBB; } /* Handles and cursors; */ .noUi-dragable { cursor: w-resize; } .noUi-vertical .noUi-dragable { cursor: n-resize; } .noUi-handle { border: 1px solid #D9D9D9; border-radius: 3px; background: #FFF; cursor: default; box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; } .noUi-active { box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB; } /* Handle stripes; */ .noUi-handle:before, .noUi-handle:after { content: ""; display: block; position: absolute; height: 14px; width: 1px; background: #E8E7E6; left: 14px; top: 6px; } .noUi-handle:after { left: 17px; } .noUi-vertical .noUi-handle:before, .noUi-vertical .noUi-handle:after { width: 14px; height: 1px; left: 6px; top: 14px; } .noUi-vertical .noUi-handle:after { top: 17px; } /* Disabled state; */ [disabled].noUi-connect, [disabled] .noUi-connect { background: #B8B8B8; } [disabled] .noUi-handle { cursor: not-allowed; } /* Blocked state; */ .noUi-state-blocked.noUi-connect, .noUi-state-blocked .noUi-connect { background: #4FDACF; } redux/ReduxCore/inc/fields/slider/field_slider.css.map000066600000001625152143340070017016 0ustar00{ "version": 3, "mappings": "AACI,+CAAwB;EACpB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM;AAG1B;;gDAEyB;EACrB,KAAK,EAAE,gBAAgB;EACvB,UAAU,EAAE,MAAM;AAGtB,2CAAoB;EAChB,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,IAAI;AAGrB,+CAAwB;EACpB,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,KAAK;AAGtB,+CAAwB;EACpB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,KAAK;EACjB,WAAW,EAAE,KAAK;;AAI1B,oCAAqC;EAE7B,6BAAM;IACF,OAAO,EAAE,uBAAuB;AAM5C,oCAAqC;EACjC,uBAAwB;IACpB,UAAU,EAAE,MAAM;IAElB;;;8CAGmB;MACf,OAAO,EAAE,gBAAgB;MACzB,QAAQ,EAAE,OAAO;MACjB,MAAM,EAAE,SAAS;IAGrB,+CAAwB;MACpB,UAAU,EAAE,GAAG;MACf,KAAK,EAAE,GAAG;AAOd,0DAAoB;EAChB,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,OAAO;EACjB,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,MAAM;EAClB,WAAW,EAAC,CAAC;AAEjB,4LAAwE;EACpE,KAAK,EAAE,cAAc;AAEzB,8DAAwB;EACpB,KAAK,EAAE,GAAG;EACV,YAAY,EAAE,CAAC;EACf,WAAW,EAAE,EAAE", "sources": ["field_slider.scss"], "names": [], "file": "field_slider.css" }redux/ReduxCore/inc/fields/typography/field_typography.css.map000066600000006771152143340070020675 0ustar00{ "version": 3, "mappings": "AACI,uCAA4B;EACxB,OAAO,EAAE,KAAK;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EAEhB,iDAAU;IACN,KAAK,EAAE,IAAI;IAEX,uDAAQ;MACJ,UAAU,EAAE,MAAM;MAClB,OAAO,EAAE,KAAK;MACd,SAAS,EAAE,CAAC;MACZ,OAAO,EAAE,GAAG;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,CAAC;EAIjB;iEACwB;IACpB,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,mBAAmB;IAC5B,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,cAAc;IAC3B,SAAS,EAAE,eAAe;EAG9B,uDAAgB;IACZ,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IAEtB,sEAAiB;MACb,YAAY,EAAE,eAAe;IAGjC,uEAAkB;MACd,YAAY,EAAE,eAAe;IAI7B,4FAAmB;MACf,KAAK,EAAE,IAAI;IAInB,yEAAkB;MACd,SAAS,EAAE,eAAe;MAC1B,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,eAAe;MACvB,WAAW,EAAE,eAAe;MAC5B,OAAO,EAAE,cAAc;MACvB,KAAK,EAAE,eAAe;MACtB,kBAAkB,EAAE,UAAU;MAC9B,eAAe,EAAE,UAAU;MAC3B,aAAa,EAAE,UAAU;MACzB,UAAU,EAAE,UAAU;EAI9B,4DAAqB;IACjB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,GAAG;IACZ,qBAAqB,EAAE,GAAG;IAC1B,kBAAkB,EAAE,GAAG;IACvB,aAAa,EAAE,GAAG;EAGtB,sDAAe;IACX,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,cAAc,EAAE,QAAQ;IAExB,gEAAY;MACR,WAAW,EAAE,GAAG;IAGpB,iEAAW;MACP,kBAAkB,EAAE,UAAU;MAC9B,eAAe,EAAE,UAAU;MAC3B,aAAa,EAAE,UAAU;MACzB,UAAU,EAAE,UAAU;MACtB,KAAK,EAAE,GAAG;MACV,UAAU,EAAE,MAAM;MAClB,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,IAAI;MACZ,GAAG,EAAE,GAAG;MACR,OAAO,EAAE,WAAW;MACpB,eAAe,EAAE,IAAI;MACrB,qBAAqB,EAAE,GAAG;MAC1B,kBAAkB,EAAE,GAAG;MACvB,aAAa,EAAE,GAAG;EAI1B,uDAAgB;IACZ,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,cAAc,EAAE,QAAQ;EAG5B,6CAAM;IACF,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,OAAO;EAGnB,2DAAoB;IAChB,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,oBAAoB;IAC5B,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,UAAU;IAClB,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,MAAM;EAGpB,yDAAkB;IACd,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,CAAC;EAGb,mEAA4B;IACxB,WAAW,EAAE,IAAI;AAIzB,oCAAqC;EAE7B,mDAA4B;IACxB,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,MAAM;IAEd,mEAAgB;MACZ,SAAS,EAAE,KAAK;MAChB,SAAS,EAAE,KAAK;MAChB,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,YAAY;MACzB,YAAY,EAAE,YAAY;IAG9B,kEAAe;MACX,SAAS,EAAE,KAAK;MAChB,SAAS,EAAE,KAAK;MAChB,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,YAAY;MACzB,YAAY,EAAE,cAAc;MAC5B,6EAAW;QACP,KAAK,EAAE,GAAG;IAIlB,yEAAsB;MAClB,KAAK,EAAE,GAAG;MACV,OAAO,EAAE,cAAc;EAK/B,8EAAuD;IACnD,UAAU,EAAE,GAAG;;AAM/B,oCAAqC;EAE7B,iEAAsD;IAClD,YAAY,EAAE,EAAE;AAOpB,yDAAe;EACX,KAAK,EAAE,GAAG;EACV,SAAS,EAAE,GAAG;EACd,SAAS,EAAE,GAAG;EACd,oEAAW;IACP,KAAK,EAAE,GAAG;AAGlB,0DAAgB;EACZ,KAAK,EAAE,eAAe", "sources": ["field_typography.scss"], "names": [], "file": "field_typography.css" }redux/ReduxCore/inc/fields/typography/field_typography.scss000066600000014731152143340070020277 0ustar00.redux-main { .redux-typography-container { display: block; position: relative; margin: 0; padding: 0; width: 100%; max-width: 660px; .clearfix { clear: both; &:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } } input.wp-picker-default, .redux-typography-color { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; box-sizing: border-box; height: 24px; padding: 0px 14px !important; margin-top: 0; margin-bottom: 0; margin-left: 4px !important; font-size: 12px !important; } .select_wrapper { display: block; position: relative; float: left; clear: none; margin: 0 10px 0 0; width: 48% !important; min-width: 210px !important; max-width: 324px !important; height: 57px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; box-sizing: border-box; &:nth-child(odd) { margin-right: 10px !important; } &:nth-child(even) { margin-right: 10px !important; } &.typography-family { .select2-container { width: 100% } } .redux-typography { font-size: 14px !important; display: block; float: left; height: 28px !important; line-height: 50px !important; padding: 0px !important; width: 100% !important; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; box-sizing: border-box; } } .wp-picker-container { float: left; clear: left; margin-bottom: 12px; padding: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .input_wrapper { display: block; position: relative; margin: 0 4px 0 5px; padding: 0; width: 23%; max-width: 23%; min-width: 70px; float: left; clear: none; height: 57px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; box-sizing: border-box; vertical-align: baseline; &.font-size { margin-left: 0px; } input.mini { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; box-sizing: border-box; width: 78%; text-align: center; margin: 0; height: 28px; top: 3px; padding: 0 2px 0 5px; text-decoration: none; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } } .picker-wrapper { display: block; display: block; position: relative; margin: 0 4px 0 5px; margin: 0; padding: 0; width: 23%; width: 100%; max-width: 23%; min-width: 70px; min-width: 100%; clear: none; height: 57px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; box-sizing: border-box; vertical-align: baseline; } label { display: block; position: relative; font-size: 12px !important; text-align: left; color: #999999; margin: 4px 0 2px 0 !important; cursor: default; } .typography-preview { display: none; width: 100%; border: 1px dotted lightgray; max-width: 850px; padding: 10px; font-size: 10pt; height: auto; margin: 5px 0 10px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; overflow: hidden; } .typography-color { border: 0 none; margin: 0; } ::-webkit-input-placeholder { line-height: 19px; } } @media screen and (max-width: 540px) { .redux-main { .redux-typography-container { max-width: 230px; margin: 0 auto; .select_wrapper { max-width: 210px; min-width: 210px; width: 210px; margin-left: 0 !important; margin-right: 0 !important; } .input_wrapper { max-width: 101px; min-width: 101px; width: 101px; margin-left: 0 !important; margin-right: 5px !important; input.mini { width: 73%; } } .input-append .add-on { width: 30%; padding: 5px !important; } } .redux-main .wp-picker-container .wp-picker-input-wrap { margin-top: 7px; } } } } @media screen and (max-width: 360px) { .redux-main { .redux-typography-container .iris-picker .iris-square { margin-right: 3%; } } } .wp-customizer { .redux-typography-container { .input_wrapper { width: 40%; max-width: 40%; min-width: 20%; input.mini { width: 70%; } } .select_wrapper { width: 100% !important; } } } redux/ReduxCore/inc/fields/typography/field_typography_json.js000066600000070264152143340070020774 0ustar00/*global redux_change, redux*/ /** * Typography * Dependencies: google.com, jquery, select2 * Feature added by: Dovy Paukstys - http://simplerain.com/ * Date: 06.14.2013 * * Rewrite: Kevin Provance (kprovance) * Date: May 25, 2014 */ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.typography = redux.field_objects.typography || {}; var selVals = []; var isSelecting = false; var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; $( document ).ready( function() { //redux.field_objects.typography.init(); } ); redux.field_objects.typography.init = function( selector, skipCheck ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-typography:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } var fontClear; el.each( function() { // init each typography field $( this ).find( '.redux-typography-container' ).each( function() { var family = $( this ).find( '.redux-typography-family' ); if ( family.data( 'value' ) === undefined ) { family = $( this ); } else if ( family.data( 'value' ) !== "" ) { $( family ).val( family.data( 'value' ) ); } var select2_handle = $( this ).find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } fontClear = Boolean( $( this ).find( '.redux-font-clear' ).val() ); redux.field_objects.typography.select( family, true ); window.onbeforeunload = null; } ); //init when value is changed $( this ).find( '.redux-typography' ).on( 'change', function() { redux.field_objects.typography.select( $( this ) ); //.parents('.redux-container-typography:first')); } ); //init when value is changed $( this ).find( '.redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration' ).keyup( function() { redux.field_objects.typography.select( $( this ).parents( '.redux-container-typography:first' ) ); } ); // Have to redeclare the wpColorPicker to get a callback function $( this ).find( '.redux-typography-color' ).wpColorPicker( { change: function( e, ui ) { $( this ).val( ui.color.toString() ); redux.field_objects.typography.select( $( this ).parents( '.redux-container-typography:first' ) ); } } ); // Don't allow negative numbers for size field $( this ).find( ".redux-typography-size" ).numeric( { allowMinus: false } ); // Allow negative numbers for indicated fields $( this ).find( ".redux-typography-height, .redux-typography-word, .redux-typography-letter" ).numeric( { allowMinus: true } ); // select2 magic, to load font-family dynamically var data = [{id: 'none', text: 'none'}]; $( this ).find( ".redux-typography-family" ).select2( { matcher: function( term, text ) { return text.toUpperCase().indexOf( term.toUpperCase() ) === 0; }, query: function( query ) { return window.Select2.query.local( data )( query ); }, initSelection: function( element, callback ) { var data = {id: element.val(), text: element.val()}; callback( data ); }, allowClear: fontClear, // when one clicks on the font-family select box } ).on( "select2-opening", function( e ) { // Get field ID var thisID = $( this ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); // User included fonts? var isUserFonts = $( '#' + thisID + ' .redux-typography-font-family' ).data( 'user-fonts' ); isUserFonts = isUserFonts ? 1 : 0; // Google font isn use? var usingGoogleFonts = $( '#' + thisID + ' .redux-typography-google' ).val(); usingGoogleFonts = usingGoogleFonts ? 1 : 0; // Set up data array var buildData = []; // If custom fonts, push onto array if ( redux.customfonts !== undefined ) { buildData.push( redux.customfonts ); } // If standard fonts, push onto array if ( redux.stdfonts !== undefined && isUserFonts === 0 ) { buildData.push( redux.stdfonts ); } // If user fonts, pull from localize and push into array if ( isUserFonts == 1 ) { var fontKids = []; // var fontData = { text: 'Standard Fonts', children: fontKids }; buildData.push( fontData ); } // If googfonts on and had data, push into array if ( usingGoogleFonts == 1 || usingGoogleFonts === true && redux.googlefonts !== undefined ) { buildData.push( redux.googlefonts ); } // output data to drop down data = buildData; // get placeholder var selFamily = $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'placeholder' ); if ( !selFamily ) { selFamily = null; } // select current font $( '#' + thisID + " .redux-typography-family" ).select2( 'val', selFamily ); // When selection is made. } ).on( 'select2-selecting', function( val, object ) { var fontName = val.object.text; var thisID = $( this ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); $( '#' + thisID + ' #' + thisID + '-family' ).data( 'value', fontName ); $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'placeholder', fontName ); // option values selVals = val; isSelecting = true; redux.field_objects.typography.select( $( this ).parents( '.redux-container-typography:first' ) ); } ).on( 'select2-clearing', function( val, choice ) { var thisID = $( this ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'data-value', '' ); $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'placeholder', 'Font Family' ); $( '#' + thisID + ' #' + thisID + '-google-font' ).val( 'false' ); redux.field_objects.typography.select( $( this ).parents( '.redux-container-typography:first' ) ); } ); var xx = el.find( ".redux-typography-family" ); if ( !xx.hasClass( 'redux-typography-family' ) ) { el.find( ".redux-typography-style" ).select2( default_params ); } // Init select2 for indicated fields el.find( ".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration" ).select2( default_params ); } ); } ); }; // Return font size redux.field_objects.typography.size = function( obj ) { var size = 0, key; for ( key in obj ) { if ( obj.hasOwnProperty( key ) ) { size++; } } return size; }; // Return proper bool value redux.field_objects.typography.makeBool = function( val ) { if ( val == 'false' || val == '0' || val === false || val === 0 ) { return false; } else if ( val == 'true' || val == '1' || val === true || val == 1 ) { return true; } }; redux.field_objects.typography.change = function( container ) { var $data = {}; jQuery( container ).find( '.redux-typography-input' ).each( function() { if ( jQuery( this ).data( 'name' ) === undefined ) { return; } $data[jQuery( this ).data( 'name' )] = jQuery( this ).val(); } ); var $input = jQuery( container ).find( '.typography-data-input:first-child' ); $input.val( JSON.stringify( $data ) ); }; redux.field_objects.typography.contrastColour = function( hexcolour ) { // default value is black. var retVal = '#444444'; // In case - for some reason - a blank value is passed. // This should *not* happen. If a function passing a value // is canceled, it should pass the current value instead of // a blank. This is how the Windows Common Controls do it. :P if ( hexcolour !== '' ) { // Replace the hash with a blank. hexcolour = hexcolour.replace( '#', '' ); var r = parseInt( hexcolour.substr( 0, 2 ), 16 ); var g = parseInt( hexcolour.substr( 2, 2 ), 16 ); var b = parseInt( hexcolour.substr( 4, 2 ), 16 ); var res = ((r * 299) + (g * 587) + (b * 114)) / 1000; // Instead of pure black, I opted to use WP 3.8 black, so it looks uniform. :) - kp retVal = (res >= 128) ? '#444444' : '#ffffff'; } return retVal; }; // Sync up font options redux.field_objects.typography.select = function( selector, skipCheck ) { var mainID; // Main id for selected field mainID = $( selector ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); if ( mainID === undefined ) { mainID = $( selector ).attr( 'data-id' ); } var parent = $( selector ).parents( '.redux-container-typography:first' ); var data = []; //$.each(parent.find('.redux-typography-field'), function() { // console.log(); //}); //console.log( selector ); // Set all the variables to be checked against var family = $( '#' + mainID + ' #' + mainID + '-family' ).val(); if ( !family ) { family = null; //"inherit"; } var familyBackup = $( '#' + mainID + ' select.redux-typography-family-backup' ).val(); var size = $( '#' + mainID + ' .redux-typography-size' ).val(); var height = $( '#' + mainID + ' .redux-typography-height' ).val(); var word = $( '#' + mainID + ' .redux-typography-word' ).val(); var letter = $( '#' + mainID + ' .redux-typography-letter' ).val(); var align = $( '#' + mainID + ' select.redux-typography-align' ).val(); var transform = $( '#' + mainID + ' select.redux-typography-transform' ).val(); var fontVariant = $( '#' + mainID + ' select.redux-typography-font-variant' ).val(); var decoration = $( '#' + mainID + ' select.redux-typography-decoration' ).val(); var style = $( '#' + mainID + ' select.redux-typography-style' ).val(); var script = $( '#' + mainID + ' select.redux-typography-subsets' ).val(); var color = $( '#' + mainID + ' .redux-typography-color' ).val(); var units = $( '#' + mainID ).data( 'units' ); //console.log('here3'); //console.log(color); //var output = family; // Is selected font a google font? var google; if ( isSelecting === true ) { google = redux.field_objects.typography.makeBool( selVals.object['data-google'] ); $( '#' + mainID + ' .redux-typography-google-font' ).val( google ); } else { google = redux.field_objects.typography.makeBool( $( '#' + mainID + ' .redux-typography-google-font' ).val() ); // Check if font is a google font } // Page load. Speeds things up memory wise to offload to client if ( !$( '#' + mainID ).hasClass( 'typography-initialized' ) ) { style = $( '#' + mainID + ' select.redux-typography-style' ).data( 'value' ); script = $( '#' + mainID + ' select.redux-typography-subsets' ).data( 'value' ); if ( style !== "" ) { style = String( style ); } if ( typeof (script) !== undefined ) { script = String( script ); } } // Something went wrong trying to read google fonts, so turn google off if ( redux.fonts.google === undefined ) { google = false; } // Get font details var details = ''; if ( google === true && ( family in redux.fonts.google) ) { details = redux.fonts.google[family]; } else { details = { '400': 'Normal 400', '700': 'Bold 700', '400italic': 'Normal 400 Italic', '700italic': 'Bold 700 Italic' }; } if ( $( selector ).hasClass( 'redux-typography-subsets' ) ) { $( '#' + mainID + ' input.typography-subsets' ).val( script ); } // If we changed the font if ( $( selector ).hasClass( 'redux-typography-family' ) ) { var html = ''; // Google specific stuff if ( google === true ) { // STYLES var selected = ""; $.each( details.variants, function( index, variant ) { if ( variant.id === style || redux.field_objects.typography.size( details.variants ) === 1 ) { selected = ' selected="selected"'; style = variant.id; } else { selected = ""; } html += ''; } ); // destroy select2 $( '#' + mainID + ' .redux-typography-style' ).select2( "destroy" ); // Instert new HTML $( '#' + mainID + ' .redux-typography-style' ).html( html ); // Init select2 $( '#' + mainID + ' .redux-typography-style' ).select2( default_params ); // SUBSETS selected = ""; html = ''; $.each( details.subsets, function( index, subset ) { if ( subset.id === script || redux.field_objects.typography.size( details.subsets ) === 1 ) { selected = ' selected="selected"'; script = subset.id; $( '#' + mainID + ' input.typography-subsets' ).val( script ); } else { selected = ""; } html += ''; } ); //if (typeof (familyBackup) !== "undefined" && familyBackup !== "") { // output += ', ' + familyBackup; //} // Destroy select2 $( '#' + mainID + ' .redux-typography-subsets' ).select2( "destroy" ); // Inset new HTML $( '#' + mainID + ' .redux-typography-subsets' ).html( html ); // Init select2 $( '#' + mainID + ' .redux-typography-subsets' ).select2( default_params ); $( '#' + mainID + ' .redux-typography-subsets' ).parent().fadeIn( 'fast' ); $( '#' + mainID + ' .typography-family-backup' ).fadeIn( 'fast' ); } else { if ( details ) { $.each( details, function( index, value ) { if ( index === style || index === "normal" ) { selected = ' selected="selected"'; $( '#' + mainID + ' .typography-style .select2-chosen' ).text( value ); } else { selected = ""; } html += ''; } ); // Destory select2 $( '#' + mainID + ' .redux-typography-style' ).select2( "destroy" ); // Insert new HTML $( '#' + mainID + ' .redux-typography-style' ).html( html ); // Init select2 $( '#' + mainID + ' .redux-typography-style' ).select2( default_params ); // Prettify things $( '#' + mainID + ' .redux-typography-subsets' ).parent().fadeOut( 'fast' ); $( '#' + mainID + ' .typography-family-backup' ).fadeOut( 'fast' ); } } $( '#' + mainID + ' .redux-typography-font-family' ).val( family ); } else if ( $( selector ).hasClass( 'redux-typography-family-backup' ) && familyBackup !== "" ) { $( '#' + mainID + ' .redux-typography-font-family-backup' ).val( familyBackup ); } // Check if the selected value exists. If not, empty it. Else, apply it. if ( $( '#' + mainID + " select.redux-typography-style option[value='" + style + "']" ).length === 0 ) { style = ""; $( '#' + mainID + ' select.redux-typography-style' ).select2( 'val', '' ); } else if ( style === "400" ) { $( '#' + mainID + ' select.redux-typography-style' ).select2( 'val', style ); } // Handle empty subset select if ( $( '#' + mainID + " select.redux-typography-subsets option[value='" + script + "']" ).length === 0 ) { script = ""; $( '#' + mainID + ' select.redux-typography-subsets' ).select2( 'val', '' ); $( '#' + mainID + ' input.typography-subsets' ).val( script ); } var _linkclass = 'style_link_' + mainID; //remove other elements crested in $( '.' + _linkclass ).remove(); if ( family !== null && family !== "inherit" && $( '#' + mainID ).hasClass( 'typography-initialized' ) ) { //replace spaces with "+" sign var the_font = family.replace( /\s+/g, '+' ); if ( google === true ) { //add reference to google font family var link = the_font; if ( style && style !== "" ) { link += ':' + style.replace( /\-/g, " " ); } if ( script && script !== "" ) { link += '&subset=' + script; } if ( isSelecting === false ) { if ( typeof (WebFont) !== "undefined" && WebFont ) { WebFont.load( {google: {families: [link]}} ); } } $( '#' + mainID + ' .redux-typography-google' ).val( true ); } else { $( '#' + mainID + ' .redux-typography-google' ).val( false ); } } // Weight and italic if ( style.indexOf( "italic" ) !== -1 ) { $( '#' + mainID + ' .typography-preview' ).css( 'font-style', 'italic' ); $( '#' + mainID + ' .typography-font-style' ).val( 'italic' ); style = style.replace( 'italic', '' ); } else { $( '#' + mainID + ' .typography-preview' ).css( 'font-style', "normal" ); $( '#' + mainID + ' .typography-font-style' ).val( '' ); } $( '#' + mainID + ' .typography-font-weight' ).val( style ); if ( !height ) { height = size; } if ( size === '' || size === undefined ) { $( '#' + mainID + ' .typography-font-size' ).val( '' ); } else { $( '#' + mainID + ' .typography-font-size' ).val( size + units ); } if ( height === '' || height === undefined ) { $( '#' + mainID + ' .typography-line-height' ).val( '' ); } else { $( '#' + mainID + ' .typography-line-height' ).val( height + units ); } if ( word === '' || word === undefined ) { $( '#' + mainID + ' .typography-word-spacing' ).val( '' ); } else { $( '#' + mainID + ' .typography-word-spacing' ).val( word + units ); } if ( letter === '' || letter === undefined ) { $( '#' + mainID + ' .typography-letter-spacing' ).val( '' ); } else { $( '#' + mainID + ' .typography-letter-spacing' ).val( letter + units ); } // Show more preview stuff if ( $( '#' + mainID ).hasClass( 'typography-initialized' ) ) { //console.log('here2'); var isPreviewSize = $( '#' + mainID + ' .typography-preview' ).data( 'preview-size' ); if ( isPreviewSize == '0' ) { $( '#' + mainID + ' .typography-preview' ).css( 'font-size', size + units ); } $( '#' + mainID + ' .typography-preview' ).css( 'font-weight', style ); //show in the preview box the font $( '#' + mainID + ' .typography-preview' ).css( 'font-family', family + ', sans-serif' ); if ( family === 'none' && family === '' ) { //if selected is not a font remove style "font-family" at preview box $( '#' + mainID + ' .typography-preview' ).css( 'font-family', 'inherit' ); } $( '#' + mainID + ' .typography-preview' ).css( 'line-height', height + units ); $( '#' + mainID + ' .typography-preview' ).css( 'word-spacing', word + units ); $( '#' + mainID + ' .typography-preview' ).css( 'letter-spacing', letter + units ); if ( color ) { $( '#' + mainID + ' .typography-preview' ).css( 'color', color ); $( '#' + mainID + ' .typography-preview' ).css( 'background-color', redux.field_objects.typography.contrastColour( color ) ); } $( '#' + mainID + ' .typography-style .select2-chosen' ).text( $( '#' + mainID + ' .redux-typography-style option:selected' ).text() ); $( '#' + mainID + ' .typography-script .select2-chosen' ).text( $( '#' + mainID + ' .redux-typography-subsets option:selected' ).text() ); if ( align ) { $( '#' + mainID + ' .typography-preview' ).css( 'text-align', align ); } if ( transform ) { $( '#' + mainID + ' .typography-preview' ).css( 'text-transform', transform ); } if ( fontVariant ) { $( '#' + mainID + ' .typography-preview' ).css( 'font-variant', fontVariant ); } if ( decoration ) { $( '#' + mainID + ' .typography-preview' ).css( 'text-decoration', decoration ); } $( '#' + mainID + ' .typography-preview' ).slideDown(); } // end preview stuff // if not preview showing, then set preview to show if ( !$( '#' + mainID ).hasClass( 'typography-initialized' ) ) { $( '#' + mainID ).addClass( 'typography-initialized' ); } isSelecting = false; if ( !skipCheck ) { redux_change( selector ); } }; })( jQuery );redux/ReduxCore/inc/fields/typography/field_typography_json.min.js000066600000025120152143340070021545 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.typography=redux.field_objects.typography||{};var b=[],c=!1,d={width:"resolve",triggerChange:!0,allowClear:!0};a(document).ready(function(){}),redux.field_objects.typography.init=function(e,f){e||(e=a(document).find(".redux-group-tab:visible").find(".redux-container-typography:visible")),a(e).each(function(){var e=a(this),f=e;if(e.hasClass("redux-field-container")||(f=e.parents(".redux-field-container:first")),!f.is(":hidden")&&f.hasClass("redux-field-init")){f.removeClass("redux-field-init");var g;e.each(function(){a(this).find(".redux-typography-container").each(function(){var b=a(this).find(".redux-typography-family");void 0===b.data("value")?b=a(this):""!==b.data("value")&&a(b).val(b.data("value"));var c=a(this).find(".select2_params");if(c.size()>0){var e=c.val();e=JSON.parse(e),d=a.extend({},d,e)}g=Boolean(a(this).find(".redux-font-clear").val()),redux.field_objects.typography.select(b,!0),window.onbeforeunload=null}),a(this).find(".redux-typography").on("change",function(){redux.field_objects.typography.select(a(this))}),a(this).find(".redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").keyup(function(){redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}),a(this).find(".redux-typography-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}}),a(this).find(".redux-typography-size").numeric({allowMinus:!1}),a(this).find(".redux-typography-height, .redux-typography-word, .redux-typography-letter").numeric({allowMinus:!0});var f=[{id:"none",text:"none"}];a(this).find(".redux-typography-family").select2({matcher:function(a,b){return 0===b.toUpperCase().indexOf(a.toUpperCase())},query:function(a){return window.Select2.query.local(f)(a)},initSelection:function(a,b){var c={id:a.val(),text:a.val()};b(c)},allowClear:g}).on("select2-opening",function(b){var c=a(this).parents(".redux-container-typography:first").attr("data-id"),d=a("#"+c+" .redux-typography-font-family").data("user-fonts");d=d?1:0;var e=a("#"+c+" .redux-typography-google").val();e=e?1:0;var g=[];if(void 0!==redux.customfonts&&g.push(redux.customfonts),void 0!==redux.stdfonts&&0===d&&g.push(redux.stdfonts),1==d){var h=[];for(var i in redux.typography[c]){var j=redux.typography[c].std_font;for(var k in j)j.hasOwnProperty(k)&&h.push({id:k,text:k,"data-google":"false"})}var l={text:"Standard Fonts",children:h};g.push(l)}(1==e||e===!0&&void 0!==redux.googlefonts)&&g.push(redux.googlefonts),f=g;var m=a("#"+c+" #"+c+"-family").attr("placeholder");m||(m=null),a("#"+c+" .redux-typography-family").select2("val",m)}).on("select2-selecting",function(d,e){var f=d.object.text,g=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+g+" #"+g+"-family").data("value",f),a("#"+g+" #"+g+"-family").attr("placeholder",f),b=d,c=!0,redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))}).on("select2-clearing",function(b,c){var d=a(this).parents(".redux-container-typography:first").attr("data-id");a("#"+d+" #"+d+"-family").attr("data-value",""),a("#"+d+" #"+d+"-family").attr("placeholder","Font Family"),a("#"+d+" #"+d+"-google-font").val("false"),redux.field_objects.typography.select(a(this).parents(".redux-container-typography:first"))});var h=e.find(".redux-typography-family");h.hasClass("redux-typography-family")||e.find(".redux-typography-style").select2(d),e.find(".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").select2(d)})}})},redux.field_objects.typography.size=function(a){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c},redux.field_objects.typography.makeBool=function(a){return"false"==a||"0"==a||a===!1||0===a?!1:"true"==a||"1"==a||a===!0||1==a?!0:void 0},redux.field_objects.typography.change=function(a){var b={};jQuery(a).find(".redux-typography-input").each(function(){void 0!==jQuery(this).data("name")&&(b[jQuery(this).data("name")]=jQuery(this).val())});var c=jQuery(a).find(".typography-data-input:first-child");c.val(JSON.stringify(b))},redux.field_objects.typography.contrastColour=function(a){var b="#444444";if(""!==a){a=a.replace("#","");var c=parseInt(a.substr(0,2),16),d=parseInt(a.substr(2,2),16),e=parseInt(a.substr(4,2),16),f=(299*c+587*d+114*e)/1e3;b=f>=128?"#444444":"#ffffff"}return b},redux.field_objects.typography.select=function(e,f){var g;g=a(e).parents(".redux-container-typography:first").attr("data-id"),void 0===g&&(g=a(e).attr("data-id"));var h=(a(e).parents(".redux-container-typography:first"),a("#"+g+" #"+g+"-family").val());h||(h=null);var i,j=a("#"+g+" select.redux-typography-family-backup").val(),k=a("#"+g+" .redux-typography-size").val(),l=a("#"+g+" .redux-typography-height").val(),m=a("#"+g+" .redux-typography-word").val(),n=a("#"+g+" .redux-typography-letter").val(),o=a("#"+g+" select.redux-typography-align").val(),p=a("#"+g+" select.redux-typography-transform").val(),q=a("#"+g+" select.redux-typography-font-variant").val(),r=a("#"+g+" select.redux-typography-decoration").val(),s=a("#"+g+" select.redux-typography-style").val(),t=a("#"+g+" select.redux-typography-subsets").val(),u=a("#"+g+" .redux-typography-color").val(),v=a("#"+g).data("units");c===!0?(i=redux.field_objects.typography.makeBool(b.object["data-google"]),a("#"+g+" .redux-typography-google-font").val(i)):i=redux.field_objects.typography.makeBool(a("#"+g+" .redux-typography-google-font").val()),a("#"+g).hasClass("typography-initialized")||(s=a("#"+g+" select.redux-typography-style").data("value"),t=a("#"+g+" select.redux-typography-subsets").data("value"),""!==s&&(s=String(s)),void 0!==typeof t&&(t=String(t))),void 0===redux.fonts.google&&(i=!1);var w="";if(w=i===!0&&h in redux.fonts.google?redux.fonts.google[h]:{400:"Normal 400",700:"Bold 700","400italic":"Normal 400 Italic","700italic":"Bold 700 Italic"},a(e).hasClass("redux-typography-subsets")&&a("#"+g+" input.typography-subsets").val(t),a(e).hasClass("redux-typography-family")){var x='';if(i===!0){var y="";a.each(w.variants,function(a,b){b.id===s||1===redux.field_objects.typography.size(w.variants)?(y=' selected="selected"',s=b.id):y="",x+='"}),a("#"+g+" .redux-typography-style").select2("destroy"),a("#"+g+" .redux-typography-style").html(x),a("#"+g+" .redux-typography-style").select2(d),y="",x='',a.each(w.subsets,function(b,c){c.id===t||1===redux.field_objects.typography.size(w.subsets)?(y=' selected="selected"',t=c.id,a("#"+g+" input.typography-subsets").val(t)):y="",x+='"}),a("#"+g+" .redux-typography-subsets").select2("destroy"),a("#"+g+" .redux-typography-subsets").html(x),a("#"+g+" .redux-typography-subsets").select2(d),a("#"+g+" .redux-typography-subsets").parent().fadeIn("fast"),a("#"+g+" .typography-family-backup").fadeIn("fast")}else w&&(a.each(w,function(b,c){b===s||"normal"===b?(y=' selected="selected"',a("#"+g+" .typography-style .select2-chosen").text(c)):y="",x+='"}),a("#"+g+" .redux-typography-style").select2("destroy"),a("#"+g+" .redux-typography-style").html(x),a("#"+g+" .redux-typography-style").select2(d),a("#"+g+" .redux-typography-subsets").parent().fadeOut("fast"),a("#"+g+" .typography-family-backup").fadeOut("fast"));a("#"+g+" .redux-typography-font-family").val(h)}else a(e).hasClass("redux-typography-family-backup")&&""!==j&&a("#"+g+" .redux-typography-font-family-backup").val(j);0===a("#"+g+" select.redux-typography-style option[value='"+s+"']").length?(s="",a("#"+g+" select.redux-typography-style").select2("val","")):"400"===s&&a("#"+g+" select.redux-typography-style").select2("val",s),0===a("#"+g+" select.redux-typography-subsets option[value='"+t+"']").length&&(t="",a("#"+g+" select.redux-typography-subsets").select2("val",""),a("#"+g+" input.typography-subsets").val(t));var z="style_link_"+g;if(a("."+z).remove(),null!==h&&"inherit"!==h&&a("#"+g).hasClass("typography-initialized")){var A=h.replace(/\s+/g,"+");if(i===!0){var B=A;s&&""!==s&&(B+=":"+s.replace(/\-/g," ")),t&&""!==t&&(B+="&subset="+t),c===!1&&"undefined"!=typeof WebFont&&WebFont&&WebFont.load({google:{families:[B]}}),a("#"+g+" .redux-typography-google").val(!0)}else a("#"+g+" .redux-typography-google").val(!1)}if(-1!==s.indexOf("italic")?(a("#"+g+" .typography-preview").css("font-style","italic"),a("#"+g+" .typography-font-style").val("italic"),s=s.replace("italic","")):(a("#"+g+" .typography-preview").css("font-style","normal"),a("#"+g+" .typography-font-style").val("")),a("#"+g+" .typography-font-weight").val(s),l||(l=k),""===k||void 0===k?a("#"+g+" .typography-font-size").val(""):a("#"+g+" .typography-font-size").val(k+v),""===l||void 0===l?a("#"+g+" .typography-line-height").val(""):a("#"+g+" .typography-line-height").val(l+v),""===m||void 0===m?a("#"+g+" .typography-word-spacing").val(""):a("#"+g+" .typography-word-spacing").val(m+v),""===n||void 0===n?a("#"+g+" .typography-letter-spacing").val(""):a("#"+g+" .typography-letter-spacing").val(n+v),a("#"+g).hasClass("typography-initialized")){var C=a("#"+g+" .typography-preview").data("preview-size");"0"==C&&a("#"+g+" .typography-preview").css("font-size",k+v),a("#"+g+" .typography-preview").css("font-weight",s),a("#"+g+" .typography-preview").css("font-family",h+", sans-serif"),"none"===h&&""===h&&a("#"+g+" .typography-preview").css("font-family","inherit"),a("#"+g+" .typography-preview").css("line-height",l+v),a("#"+g+" .typography-preview").css("word-spacing",m+v),a("#"+g+" .typography-preview").css("letter-spacing",n+v),u&&(a("#"+g+" .typography-preview").css("color",u),a("#"+g+" .typography-preview").css("background-color",redux.field_objects.typography.contrastColour(u))),a("#"+g+" .typography-style .select2-chosen").text(a("#"+g+" .redux-typography-style option:selected").text()),a("#"+g+" .typography-script .select2-chosen").text(a("#"+g+" .redux-typography-subsets option:selected").text()),o&&a("#"+g+" .typography-preview").css("text-align",o),p&&a("#"+g+" .typography-preview").css("text-transform",p),q&&a("#"+g+" .typography-preview").css("font-variant",q),r&&a("#"+g+" .typography-preview").css("text-decoration",r),a("#"+g+" .typography-preview").slideDown()}a("#"+g).hasClass("typography-initialized")||a("#"+g).addClass("typography-initialized"),c=!1,f||redux_change(e)}}(jQuery);redux/ReduxCore/inc/fields/typography/field_typography.json000066600000163045152143340070020300 0ustar00 "Arial, Helvetica, sans-serif", "'Arial Black', Gadget, sans-serif" => "'Arial Black', Gadget, sans-serif", "'Bookman Old Style', serif" => "'Bookman Old Style', serif", "'Comic Sans MS', cursive" => "'Comic Sans MS', cursive", "Courier, monospace" => "Courier, monospace", "Garamond, serif" => "Garamond, serif", "Georgia, serif" => "Georgia, serif", "Impact, Charcoal, sans-serif" => "Impact, Charcoal, sans-serif", "'Lucida Console', Monaco, monospace" => "'Lucida Console', Monaco, monospace", "'Lucida Sans Unicode', 'Lucida Grande', sans-serif" => "'Lucida Sans Unicode', 'Lucida Grande', sans-serif", "'MS Sans Serif', Geneva, sans-serif" => "'MS Sans Serif', Geneva, sans-serif", "'MS Serif', 'New York', sans-serif" => "'MS Serif', 'New York', sans-serif", "'Palatino Linotype', 'Book Antiqua', Palatino, serif" => "'Palatino Linotype', 'Book Antiqua', Palatino, serif", "Tahoma,Geneva, sans-serif" => "Tahoma, Geneva, sans-serif", "'Times New Roman', Times,serif" => "'Times New Roman', Times, serif", "'Trebuchet MS', Helvetica, sans-serif" => "'Trebuchet MS', Helvetica, sans-serif", "Verdana, Geneva, sans-serif" => "Verdana, Geneva, sans-serif", ); private $user_fonts = true; /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 1.0.0 */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; // Shim out old arg to new if ( isset( $this->field['all_styles'] ) && ! empty( $this->field['all_styles'] ) ) { $this->field['all-styles'] = $this->field['all_styles']; unset ( $this->field['all_styles'] ); } // Set field array defaults. No errors please $defaults = array( 'font-family' => true, 'font-size' => true, 'font-weight' => true, 'font-style' => true, 'font-backup' => false, 'subsets' => true, 'custom_fonts' => true, 'text-align' => true, 'text-transform' => false, 'font-variant' => false, 'text-decoration' => false, 'color' => true, 'preview' => true, 'line-height' => true, 'multi' => array( 'subset' => false, 'weight' => false, ), 'word-spacing' => false, 'letter-spacing' => false, 'google' => true, 'update_weekly' => false, // Enable to force updates of Google Fonts to be weekly 'font_family_clear' => true ); $this->field = wp_parse_args( $this->field, $defaults ); // Set value defaults. $defaults = array( 'font-family' => '', 'font-options' => '', 'font-backup' => '', 'text-align' => '', 'text-transform' => '', 'font-variant' => '', 'text-decoration' => '', 'line-height' => '', 'word-spacing' => '', 'letter-spacing' => '', 'subsets' => '', 'google' => false, 'font-script' => '', 'font-weight' => '', 'font-style' => '', 'color' => '', 'font-size' => '', ); $this->value = wp_parse_args( $this->value, $defaults ); // Get the google array $this->getGoogleArray(); if ( empty( $this->field['fonts'] ) ) { $this->user_fonts = false; $this->field['fonts'] = $this->std_fonts; } // Localize std fonts $this->localizeStdFonts(); } function localize( $field, $value = "" ) { $params = array(); if ( true == $this->user_fonts && ! empty( $this->field['fonts'] ) ) { $params['std_font'] = $this->field['fonts']; } return $params; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { // Since fonts declared is CSS (@font-face) are not rendered in the preview, // they can be declared in a CSS file and passed here so they DO display in // font preview. Do NOT pass style.css in your theme, as that will mess up // admin page styling. It's recommended to pass a CSS file with ONLY font // declarations. // If field is set and not blank, then enqueue field if ( isset( $this->field['ext-font-css'] ) && $this->field['ext-font-css'] != '' ) { wp_register_style( 'redux-external-fonts', $this->field['ext-font-css'] ); wp_enqueue_style( 'redux-external-fonts' ); } if ( empty( $this->field['units'] ) && ! empty( $this->field['default']['units'] ) ) { $this->field['units'] = $this->field['default']['units']; } if ( empty( $this->field['units'] ) || ! in_array( $this->field['units'], array( 'px', 'em', 'rem', '%' ) ) ) { $this->field['units'] = 'px'; } $unit = $this->field['units']; echo '
    '; $val = json_encode( $this->value ); echo "field['name_suffix']}' class='{$this->field['class']} typography-data-input' value='{$val}'>"; if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } /* Font Family */ if ( $this->field['font-family'] === true ) { // font family clear echo ''; //if (filter_var($this->value['google'], FILTER_VALIDATE_BOOLEAN)) { if ( filter_var( $this->value['google'], FILTER_VALIDATE_BOOLEAN ) ) { // Divide and conquer $fontFamily = explode( ', ', $this->value['font-family'], 2 ); // If array 0 is empty and array 1 is not if ( empty( $fontFamily[0] ) && ! empty( $fontFamily[1] ) ) { // Make array 0 = array 1 $fontFamily[0] = $fontFamily[1]; // Clear array 1 $fontFamily[1] = ""; } } // If no fontFamily array exists, create one and set array 0 // with font value if ( ! isset( $fontFamily ) ) { $fontFamily = array(); $fontFamily[0] = $this->value['font-family']; $fontFamily[1] = ""; } // Is selected font a Google font $isGoogleFont = '0'; if ( isset( $this->parent->fonts['google'][ $fontFamily[0] ] ) ) { $isGoogleFont = '1'; } // If not a Google font, show all font families if ( $isGoogleFont != '1' ) { $fontFamily[0] = $this->value['font-family']; } $userFonts = '0'; if ( true == $this->user_fonts ) { $userFonts = '1'; } echo ''; echo ''; echo ''; echo '
    '; echo ''; $placeholder = $fontFamily[0] ? $fontFamily[0] : __( 'Font family', 'redux-framework' ); echo '
    '; echo '
    '; echo '
    '; $googleSet = false; if ( $this->field['google'] === true ) { // Set a flag so we know to set a header style or not echo ''; $googleSet = true; } } /* Backup Font */ if ( $this->field['font-family'] === true && $this->field['google'] === true ) { if ( false == $googleSet ) { // Set a flag so we know to set a header style or not echo ''; } if ( $this->field['font-backup'] === true ) { echo '
    '; echo ''; echo '
    '; } } /* Font Style/Weight */ if ( $this->field['font-style'] === true || $this->field['font-weight'] === true ) { echo '
    '; echo ''; $style = $this->value['font-weight'] . $this->value['font-style']; echo ' '; echo ' '; $multi = ( isset( $this->field['multi']['weight'] ) && $this->field['multi']['weight'] ) ? ' multiple="multiple"' : ""; echo ''; if ( empty( $this->value['subset'] ) || empty( $this->value['font-weight'] ) ) { echo ''; } $nonGStyles = array( '200' => 'Lighter', '400' => 'Normal', '700' => 'Bold', '900' => 'Bolder' ); if ( isset( $gfonts[ $this->value['font-family'] ] ) ) { foreach ( $gfonts[ $this->value['font-family'] ]['variants'] as $v ) { echo ''; } } else { if ( ! isset( $this->value['font-weight'] ) && isset( $this->value['subset'] ) ) { $this->value['font-weight'] = $this->value['subset']; } foreach ( $nonGStyles as $i => $style ) { if ( ! isset( $this->value['font-weight'] ) ) { $this->value['font-weight'] = false; } if ( ! isset( $this->value['subset'] ) ) { $this->value['subset'] = false; } echo ''; } } echo '
    '; } /* Font Script */ if ( $this->field['font-family'] == true && $this->field['subsets'] == true && $this->field['google'] == true ) { echo '
    '; echo ' '; echo ''; $multi = ( isset( $this->field['multi']['subset'] ) && $this->field['multi']['subset'] ) ? ' multiple="multiple"' : ""; echo ''; if ( empty( $this->value['subsets'] ) ) { echo ''; } if ( isset( $gfonts[ $this->value['font-family'] ] ) ) { foreach ( $gfonts[ $this->value['font-family'] ]['subsets'] as $v ) { echo ''; } } echo '
    '; } /* Font Align */ if ( $this->field['text-align'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Text Transform */ if ( $this->field['text-transform'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Font Variant */ if ( $this->field['font-variant'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Text Decoration */ if ( $this->field['text-decoration'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Font Size */ if ( $this->field['font-size'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } /* Line Height */ if ( $this->field['line-height'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } /* Word Spacing */ if ( $this->field['word-spacing'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } /* Letter Spacing */ if ( $this->field['letter-spacing'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } echo '
    '; /* Font Color */ if ( $this->field['color'] === true ) { $default = ""; if ( empty( $this->field['default']['color'] ) && ! empty( $this->field['color'] ) ) { $default = $this->value['color']; } else if ( ! empty( $this->field['default']['color'] ) ) { $default = $this->field['default']['color']; } echo '
    '; echo ''; echo '
    '; echo ''; echo '
    '; } echo '
    '; /* Font Preview */ if ( ! isset( $this->field['preview'] ) || $this->field['preview'] !== false ) { if ( isset( $this->field['preview']['text'] ) ) { $g_text = $this->field['preview']['text']; } else { $g_text = '1 2 3 4 5 6 7 8 9 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z'; } $style = ''; if ( isset( $this->field['preview']['always_display'] ) ) { if ( true === filter_var( $this->field['preview']['always_display'], FILTER_VALIDATE_BOOLEAN ) ) { if ( $isGoogleFont == true ) { $this->parent->typography_preview[ $fontFamily[0] ] = array( 'font-style' => array( $this->value['font-weight'] . $this->value['font-style'] ), 'subset' => array( $this->value['subset'] ) ); $protocol = ( ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:"; wp_deregister_style( 'redux-typography-preview' ); wp_dequeue_style( 'redux-typography-preview' ); wp_register_style( 'redux-typography-preview', $protocol . $this->makeGoogleWebfontLink( $this->parent->typography_preview ), '', time() ); wp_enqueue_style( 'redux-typography-preview' ); } $style = 'display: block; font-family: ' . $this->value['font-family'] . '; font-weight: ' . $this->value['font-weight'] . ';'; } } if ( isset( $this->field['preview']['font-size'] ) ) { $style .= 'font-size: ' . $this->field['preview']['font-size'] . ';'; $inUse = '1'; } else { //$g_size = ''; $inUse = '0'; } echo '

    ' . $g_text . '

    '; echo '
    '; // end typography container } } //function /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ function enqueue() { if ( ! wp_style_is( 'select2-css' ) ) { wp_enqueue_style( 'select2-css' ); } if ( ! wp_style_is( 'wp-color-picker' ) ) { wp_enqueue_style( 'wp-color-picker' ); } if ( ! wp_script_is( 'redux-field-typography-js' ) ) { wp_enqueue_script( 'redux-field-typography-js', ReduxFramework::$_url . 'inc/fields/typography/field_typography' . Redux_Functions::isMin() . '.js', array( 'jquery', 'wp-color-picker', 'select2-js', 'redux-js' ), time(), true ); } wp_localize_script( 'redux-field-typography-js', 'redux_ajax_script', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); if ( $this->parent->args['dev_mode'] ) { if ( ! wp_style_is( 'redux-color-picker-css' ) ) { wp_enqueue_style( 'redux-color-picker-css' ); } if ( ! wp_style_is( 'redux-field-typography-css' ) ) { wp_enqueue_style( 'redux-field-typography-css', ReduxFramework::$_url . 'inc/fields/typography/field_typography.css', array(), time(), 'all' ); } } } //function /** * makeGoogleWebfontLink Function. * Creates the google fonts link. * * @since ReduxFramework 3.0.0 */ function makeGoogleWebfontLink( $fonts ) { $link = ""; $subsets = array(); foreach ( $fonts as $family => $font ) { if ( ! empty( $link ) ) { $link .= "%7C"; // Append a new font to the string } $link .= $family; if ( ! empty( $font['font-style'] ) || ! empty( $font['all-styles'] ) ) { $link .= ':'; if ( ! empty( $font['all-styles'] ) ) { $link .= implode( ',', $font['all-styles'] ); } else if ( ! empty( $font['font-style'] ) ) { $link .= implode( ',', $font['font-style'] ); } } if ( ! empty( $font['subset'] ) ) { foreach ( $font['subset'] as $subset ) { if ( ! in_array( $subset, $subsets ) ) { array_push( $subsets, $subset ); } } } } if ( ! empty( $subsets ) ) { $link .= "&subset=" . implode( ',', $subsets ); } return '//fonts.googleapis.com/css?family=' . str_replace( '|', '%7C', $link ); } /** * makeGoogleWebfontString Function. * Creates the google fonts link. * * @since ReduxFramework 3.1.8 */ function makeGoogleWebfontString( $fonts ) { $link = ""; $subsets = array(); foreach ( $fonts as $family => $font ) { if ( ! empty( $link ) ) { $link .= "', '"; // Append a new font to the string } $link .= $family; if ( ! empty( $font['font-style'] ) || ! empty( $font['all-styles'] ) ) { $link .= ':'; if ( ! empty( $font['all-styles'] ) ) { $link .= implode( ',', $font['all-styles'] ); } else if ( ! empty( $font['font-style'] ) ) { $link .= implode( ',', $font['font-style'] ); } } if ( ! empty( $font['subset'] ) ) { foreach ( $font['subset'] as $subset ) { if ( ! in_array( $subset, $subsets ) ) { array_push( $subsets, $subset ); } } } } if ( ! empty( $subsets ) ) { $link .= "&subset=" . implode( ',', $subsets ); } return "'" . $link . "'"; } function output() { $font = $this->value; // Shim out old arg to new if ( isset( $this->field['all_styles'] ) && ! empty( $this->field['all_styles'] ) ) { $this->field['all-styles'] = $this->field['all_styles']; unset ( $this->field['all_styles'] ); } // Check for font-backup. If it's set, stick it on a variabhle for // later use. if ( ! empty( $font['font-family'] ) && ! empty( $font['font-backup'] ) ) { $font['font-family'] = str_replace( ', ' . $font['font-backup'], '', $font['font-family'] ); $fontBackup = ',' . $font['font-backup']; } // if (strpos($font['font-family'], ' ')) { // $font['font-family'] = '"' . $font['font-family'] . '"'; // } $style = ''; $fontValueSet = false; if ( ! empty( $font ) ) { foreach ( $font as $key => $value ) { if ( ! empty( $value ) && in_array( $key, array( 'font-family', 'font-weight' ) ) ) { $fontValueSet = true; } } } if ( ! empty( $font ) ) { foreach ( $font as $key => $value ) { if ( $key == 'font-options' ) { continue; } // Check for font-family key if ( 'font-family' == $key ) { // Enclose font family in quotes if spaces are in the // name. This is necessary because if there are numerics // in the font name, they will not render properly. // Google should know better. if ( strpos( $value, ' ' ) && ! strpos( $value, ',' ) ) { $value = '"' . $value . '"'; } // Ensure fontBackup isn't empty (we already option // checked this earlier. No need to do it again. if ( ! empty( $fontBackup ) ) { // Apply the backup font to the font-family element // via the saved variable. We do this here so it // doesn't get appended to the Google stuff below. $value .= $fontBackup; } } if ( empty( $value ) && in_array( $key, array( 'font-weight', 'font-style' ) ) && $fontValueSet == true ) { $value = "normal"; } if ( $key == 'font-weight' && $this->field['font-weight'] == false ) { continue; } if ( $key == 'font-style' && $this->field['font-style'] == false ) { continue; } if ( $key == "google" || $key == "subsets" || $key == "font-backup" || empty( $value ) ) { continue; } $style .= $key . ':' . $value . ';'; } if ( isset( $this->parent->args['async_typography'] ) && $this->parent->args['async_typography'] ) { $style .= 'opacity: 1;visibility: visible;-webkit-transition: opacity 0.24s ease-in-out;-moz-transition: opacity 0.24s ease-in-out;transition: opacity 0.24s ease-in-out;'; } } if ( ! empty( $style ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $keys = implode( ",", $this->field['output'] ); $this->parent->outputCSS .= $keys . "{" . $style . '}'; if ( isset( $this->parent->args['async_typography'] ) && $this->parent->args['async_typography'] ) { $key_string = ""; $key_string_ie = ""; foreach ( $this->field['output'] as $value ) { $key_string .= ".wf-loading " . $value . ','; $key_string_ie .= ".ie.wf-loading " . $value . ','; } $this->parent->outputCSS .= $key_string . "{opacity: 0;}"; $this->parent->outputCSS .= $key_string_ie . "{visibility: hidden;}"; } } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $keys = implode( ",", $this->field['compiler'] ); $this->parent->compilerCSS .= $keys . "{" . $style . '}'; if ( isset( $this->parent->args['async_typography'] ) && $this->parent->args['async_typography'] ) { $key_string = ""; $key_string_ie = ""; foreach ( $this->field['compiler'] as $value ) { $key_string .= ".wf-loading " . $value . ','; $key_string_ie .= ".ie.wf-loading " . $value . ','; } $this->parent->compilerCSS .= $key_string . "{opacity: 0;}"; $this->parent->compilerCSS .= $key_string_ie . "{visibility: hidden;}"; } } } // Google only stuff! if ( ! empty( $font['font-family'] ) && ! empty( $this->field['google'] ) && filter_var( $this->field['google'], FILTER_VALIDATE_BOOLEAN ) ) { // Added standard font matching check to avoid output to Google fonts call - kp // If no custom font array was supplied, the load it with default // standard fonts. if ( empty( $this->field['fonts'] ) ) { $this->field['fonts'] = $this->std_fonts; } // Ensure the fonts array is NOT empty if ( ! empty( $this->field['fonts'] ) ) { //Make the font keys in the array lowercase, for case-insensitive matching $lcFonts = array_change_key_case( $this->field['fonts'] ); // Rebuild font array with all keys stripped of spaces $arr = array(); foreach ( $lcFonts as $key => $value ) { $key = str_replace( ', ', ',', $key ); $arr[ $key ] = $value; } $lcFonts = array_change_key_case( $this->field['custom_fonts'] ); foreach ( $lcFonts as $group => $fontArr ) { foreach ( $fontArr as $key => $value ) { $arr[ strtolower( $key ) ] = $key; } } $lcFonts = $arr; unset( $arr ); // lowercase chosen font for matching purposes $lcFont = strtolower( $font['font-family'] ); // Remove spaces after commas in chosen font for mathcing purposes. $lcFont = str_replace( ', ', ',', $lcFont ); // If the lower cased passed font-family is NOT found in the standard font array // Then it's a Google font, so process it for output. if ( ! array_key_exists( $lcFont, $lcFonts ) ) { $family = $font['font-family']; // Strip out spaces in font names and replace with with plus signs // TODO?: This method doesn't respect spaces after commas, hence the reason // for the std_font array keys having no spaces after commas. This could be // fixed with RegEx in the future. $font['font-family'] = str_replace( ' ', '+', $font['font-family'] ); // Push data to parent typography variable. if ( empty( $this->parent->typography[ $font['font-family'] ] ) ) { $this->parent->typography[ $font['font-family'] ] = array(); } if ( isset( $this->field['all-styles'] ) ) { if ( ! isset( $font['font-options'] ) || empty( $font['font-options'] ) ) { $this->getGoogleArray(); if ( isset( $this->parent->googleArray ) && ! empty( $this->parent->googleArray ) && isset( $this->parent->googleArray[ $family ] ) ) { $font['font-options'] = $this->parent->googleArray[ $family ]; } } else { $font['font-options'] = json_decode( $font['font-options'], true ); } //print_r($font['font-options']); //exit(); } if ( isset( $font['font-options'] ) && ! empty( $font['font-options'] ) && isset( $this->field['all-styles'] ) && filter_var( $this->field['all-styles'], FILTER_VALIDATE_BOOLEAN ) ) { if ( isset( $font['font-options'] ) && ! empty( $font['font-options']['variants'] ) ) { if ( ! isset( $this->parent->typography[ $font['font-family'] ]['all-styles'] ) || empty( $this->parent->typography[ $font['font-family'] ]['all-styles'] ) ) { $this->parent->typography[ $font['font-family'] ]['all-styles'] = array(); foreach ( $font['font-options']['variants'] as $variant ) { $this->parent->typography[ $font['font-family'] ]['all-styles'][] = $variant['id']; } } } } if ( ! empty( $font['font-weight'] ) ) { if ( empty( $this->parent->typography[ $font['font-family'] ]['font-weight'] ) || ! in_array( $font['font-weight'], $this->parent->typography[ $font['font-family'] ]['font-weight'] ) ) { $style = $font['font-weight']; } if ( ! empty( $font['font-style'] ) ) { $style .= $font['font-style']; } if ( empty( $this->parent->typography[ $font['font-family'] ]['font-style'] ) || ! in_array( $style, $this->parent->typography[ $font['font-family'] ]['font-style'] ) ) { $this->parent->typography[ $font['font-family'] ]['font-style'][] = $style; } } if ( ! empty( $font['subsets'] ) ) { if ( empty( $this->parent->typography[ $font['font-family'] ]['subset'] ) || ! in_array( $font['subsets'], $this->parent->typography[ $font['font-family'] ]['subset'] ) ) { $this->parent->typography[ $font['font-family'] ]['subset'][] = $font['subsets']; } } } // !array_key_exists } //!empty fonts array } // Typography not set } private function localizeStdFonts() { if ( false == $this->user_fonts ) { if ( isset( $this->parent->fonts['std'] ) && ! empty( $this->parent->fonts['std'] ) ) { return; } $this->parent->font_groups['std'] = array( 'text' => __( 'Standard Fonts', 'redux-framework' ), 'children' => array(), ); foreach ( $this->field['fonts'] as $font => $extra ) { $this->parent->font_groups['std']['children'][] = array( 'id' => $font, 'text' => $font, 'data-google' => 'false', ); } } if ( $this->field['custom_fonts'] !== false ) { $this->field['custom_fonts'] = apply_filters( "redux/{$this->parent->args['opt_name']}/field/typography/custom_fonts", array() ); if ( ! empty( $this->field['custom_fonts'] ) ) { foreach ( $this->field['custom_fonts'] as $group => $fonts ) { $this->parent->font_groups['customfonts'] = array( 'text' => $group, 'children' => array(), ); foreach ( $fonts as $family => $v ) { $this->parent->font_groups['customfonts']['children'][] = array( 'id' => $family, 'text' => $family, 'data-google' => 'false', ); } } } } } /** * Construct the google array from the stored JSON/HTML */ function getGoogleArray() { if ( ( isset( $this->parent->fonts['google'] ) && ! empty( $this->parent->fonts['google'] ) ) || isset( $this->parent->fonts['google'] ) && $this->parent->fonts['google'] == false ) { return; } $gFile = dirname( __FILE__ ) . '/googlefonts.php'; // Weekly update if ( isset( $this->parent->args['google_update_weekly'] ) && $this->parent->args['google_update_weekly'] && ! empty( $this->parent->args['google_api_key'] ) ) { if ( file_exists( $gFile ) ) { // Keep the fonts updated weekly $weekback = strtotime( date( 'jS F Y', time() + ( 60 * 60 * 24 * - 7 ) ) ); $last_updated = filemtime( $gFile ); if ( $last_updated < $weekback ) { unlink( $gFile ); } } } if ( ! file_exists( $gFile ) ) { $result = @wp_remote_get( apply_filters( 'redux-google-fonts-api-url', 'https://www.googleapis.com/webfonts/v1/webfonts?key=' ) . $this->parent->args['google_api_key'], array( 'sslverify' => false ) ); if ( ! is_wp_error( $result ) && $result['response']['code'] == 200 ) { $result = json_decode( $result['body'] ); foreach ( $result->items as $font ) { $this->parent->googleArray[ $font->family ] = array( 'variants' => $this->getVariants( $font->variants ), 'subsets' => $this->getSubsets( $font->subsets ) ); } if ( ! empty( $this->parent->googleArray ) ) { $this->parent->filesystem->execute( 'put_contents', $gFile, array( 'content' => "parent->googleArray ) . "', true );" ) ); } } } if ( ! file_exists( $gFile ) ) { $this->parent->fonts['google'] = false; return; } if ( ! isset( $this->parent->fonts['google'] ) || empty( $this->parent->fonts['google'] ) ) { $fonts = include $gFile; if ( $fonts === true ) { $this->parent->fonts['google'] = false; return; } if ( isset( $fonts ) && ! empty( $fonts ) && is_array( $fonts ) && $fonts != false ) { $this->parent->fonts['google'] = $fonts; $this->parent->googleArray = $fonts; // optgroup $this->parent->font_groups['google'] = array( 'text' => __( 'Google Webfonts', 'redux-framework' ), 'children' => array(), ); // options foreach ( $this->parent->fonts['google'] as $font => $extra ) { $this->parent->font_groups['google']['children'][] = array( 'id' => $font, 'text' => $font, 'data-google' => 'true' ); } } } } /** * getSubsets Function. * Clean up the Google Webfonts subsets to be human readable * * @since ReduxFramework 0.2.0 */ private function getSubsets( $var ) { $result = array(); foreach ( $var as $v ) { if ( strpos( $v, "-ext" ) ) { $name = ucfirst( str_replace( "-ext", " Extended", $v ) ); } else { $name = ucfirst( $v ); } array_push( $result, array( 'id' => $v, 'name' => $name ) ); } return array_filter( $result ); } //function /** * getVariants Function. * Clean up the Google Webfonts variants to be human readable * * @since ReduxFramework 0.2.0 */ private function getVariants( $var ) { $result = array(); $italic = array(); foreach ( $var as $v ) { $name = ""; if ( $v[0] == 1 ) { $name = 'Ultra-Light 100'; } else if ( $v[0] == 2 ) { $name = 'Light 200'; } else if ( $v[0] == 3 ) { $name = 'Book 300'; } else if ( $v[0] == 4 || $v[0] == "r" || $v[0] == "i" ) { $name = 'Normal 400'; } else if ( $v[0] == 5 ) { $name = 'Medium 500'; } else if ( $v[0] == 6 ) { $name = 'Semi-Bold 600'; } else if ( $v[0] == 7 ) { $name = 'Bold 700'; } else if ( $v[0] == 8 ) { $name = 'Extra-Bold 800'; } else if ( $v[0] == 9 ) { $name = 'Ultra-Bold 900'; } if ( $v == "regular" ) { $v = "400"; } if ( strpos( $v, "italic" ) || $v == "italic" ) { $name .= " Italic"; $name = trim( $name ); if ( $v == "italic" ) { $v = "400italic"; } $italic[] = array( 'id' => $v, 'name' => $name ); } else { $result[] = array( 'id' => $v, 'name' => $name ); } } foreach ( $italic as $item ) { $result[] = $item; } return array_filter( $result ); } //function } //class } //class exists redux/ReduxCore/inc/fields/typography/field_typography.php000066600000154524152143340070020120 0ustar00 "Arial, Helvetica, sans-serif", "'Arial Black', Gadget, sans-serif" => "'Arial Black', Gadget, sans-serif", "'Bookman Old Style', serif" => "'Bookman Old Style', serif", "'Comic Sans MS', cursive" => "'Comic Sans MS', cursive", "Courier, monospace" => "Courier, monospace", "Garamond, serif" => "Garamond, serif", "Georgia, serif" => "Georgia, serif", "Impact, Charcoal, sans-serif" => "Impact, Charcoal, sans-serif", "'Lucida Console', Monaco, monospace" => "'Lucida Console', Monaco, monospace", "'Lucida Sans Unicode', 'Lucida Grande', sans-serif" => "'Lucida Sans Unicode', 'Lucida Grande', sans-serif", "'MS Sans Serif', Geneva, sans-serif" => "'MS Sans Serif', Geneva, sans-serif", "'MS Serif', 'New York', sans-serif" => "'MS Serif', 'New York', sans-serif", "'Palatino Linotype', 'Book Antiqua', Palatino, serif" => "'Palatino Linotype', 'Book Antiqua', Palatino, serif", "Tahoma,Geneva, sans-serif" => "Tahoma, Geneva, sans-serif", "'Times New Roman', Times,serif" => "'Times New Roman', Times, serif", "'Trebuchet MS', Helvetica, sans-serif" => "'Trebuchet MS', Helvetica, sans-serif", "Verdana, Geneva, sans-serif" => "Verdana, Geneva, sans-serif", ); private $user_fonts = true; /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 1.0.0 */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; // Shim out old arg to new if ( isset( $this->field['all_styles'] ) && ! empty( $this->field['all_styles'] ) ) { $this->field['all-styles'] = $this->field['all_styles']; unset ( $this->field['all_styles'] ); } // Set field array defaults. No errors please $defaults = array( 'font-family' => true, 'font-size' => true, 'font-weight' => true, 'font-style' => true, 'font-backup' => false, 'subsets' => true, 'custom_fonts' => true, 'text-align' => true, 'text-transform' => false, 'font-variant' => false, 'text-decoration' => false, 'color' => true, 'preview' => true, 'line-height' => true, 'multi' => array( 'subset' => false, 'weight' => false, ), 'word-spacing' => false, 'letter-spacing' => false, 'google' => true, 'update_weekly' => false, // Enable to force updates of Google Fonts to be weekly 'font_family_clear' => true ); $this->field = wp_parse_args( $this->field, $defaults ); // Set value defaults. $defaults = array( 'font-family' => '', 'font-options' => '', 'font-backup' => '', 'text-align' => '', 'text-transform' => '', 'font-variant' => '', 'text-decoration' => '', 'line-height' => '', 'word-spacing' => '', 'letter-spacing' => '', 'subsets' => '', 'google' => false, 'font-script' => '', 'font-weight' => '', 'font-style' => '', 'color' => '', 'font-size' => '', ); $this->value = wp_parse_args( $this->value, $defaults ); // Get the google array $this->getGoogleArray(); if ( empty( $this->field['fonts'] ) ) { $this->user_fonts = false; $this->field['fonts'] = $this->std_fonts; } // Localize std fonts $this->localizeStdFonts(); } function localize( $field, $value = "" ) { $params = array(); if ( true == $this->user_fonts && ! empty( $this->field['fonts'] ) ) { $params['std_font'] = $this->field['fonts']; } return $params; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { // Since fonts declared is CSS (@font-face) are not rendered in the preview, // they can be declared in a CSS file and passed here so they DO display in // font preview. Do NOT pass style.css in your theme, as that will mess up // admin page styling. It's recommended to pass a CSS file with ONLY font // declarations. // If field is set and not blank, then enqueue field if ( isset( $this->field['ext-font-css'] ) && $this->field['ext-font-css'] != '' ) { wp_register_style( 'redux-external-fonts', $this->field['ext-font-css'] ); wp_enqueue_style( 'redux-external-fonts' ); } if ( empty( $this->field['units'] ) && ! empty( $this->field['default']['units'] ) ) { $this->field['units'] = $this->field['default']['units']; } if ( empty( $this->field['units'] ) || ! in_array( $this->field['units'], array( 'px', 'em', 'rem', '%' ) ) ) { $this->field['units'] = 'px'; } $unit = $this->field['units']; echo '
    '; if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } /* Font Family */ if ( $this->field['font-family'] === true ) { // font family clear echo ''; //if (filter_var($this->value['google'], FILTER_VALIDATE_BOOLEAN)) { if ( filter_var( $this->value['google'], FILTER_VALIDATE_BOOLEAN ) ) { // Divide and conquer $fontFamily = explode( ', ', $this->value['font-family'], 2 ); // If array 0 is empty and array 1 is not if ( empty( $fontFamily[0] ) && ! empty( $fontFamily[1] ) ) { // Make array 0 = array 1 $fontFamily[0] = $fontFamily[1]; // Clear array 1 $fontFamily[1] = ""; } } // If no fontFamily array exists, create one and set array 0 // with font value if ( ! isset( $fontFamily ) ) { $fontFamily = array(); $fontFamily[0] = $this->value['font-family']; $fontFamily[1] = ""; } // Is selected font a Google font $isGoogleFont = '0'; if ( isset( $this->parent->fonts['google'][ $fontFamily[0] ] ) ) { $isGoogleFont = '1'; } // If not a Google font, show all font families if ( $isGoogleFont != '1' ) { $fontFamily[0] = $this->value['font-family']; } $userFonts = '0'; if ( true == $this->user_fonts ) { $userFonts = '1'; } echo ''; echo ''; echo ''; echo '
    '; echo ''; $placeholder = $fontFamily[0] ? $fontFamily[0] : __( 'Font family', 'redux-framework' ); echo '
    '; echo '
    '; echo '
    '; $googleSet = false; if ( $this->field['google'] === true ) { // Set a flag so we know to set a header style or not echo ''; $googleSet = true; } } /* Backup Font */ if ( $this->field['font-family'] === true && $this->field['google'] === true ) { if ( false == $googleSet ) { // Set a flag so we know to set a header style or not echo ''; } if ( $this->field['font-backup'] === true ) { echo '
    '; echo ''; echo '
    '; } } /* Font Style/Weight */ if ( $this->field['font-style'] === true || $this->field['font-weight'] === true ) { echo '
    '; echo ''; $style = $this->value['font-weight'] . $this->value['font-style']; echo ' '; echo ' '; $multi = ( isset( $this->field['multi']['weight'] ) && $this->field['multi']['weight'] ) ? ' multiple="multiple"' : ""; echo ''; if ( empty( $this->value['subsets'] ) || empty( $this->value['font-weight'] ) ) { echo ''; } $nonGStyles = array( '200' => 'Lighter', '400' => 'Normal', '700' => 'Bold', '900' => 'Bolder' ); if ( isset( $gfonts[ $this->value['font-family'] ] ) ) { foreach ( $gfonts[ $this->value['font-family'] ]['variants'] as $v ) { echo ''; } } else { if ( ! isset( $this->value['font-weight'] ) && isset( $this->value['subsets'] ) ) { $this->value['font-weight'] = $this->value['subsets']; } foreach ( $nonGStyles as $i => $style ) { if ( ! isset( $this->value['font-weight'] ) ) { $this->value['font-weight'] = false; } if ( ! isset( $this->value['subsets'] ) ) { $this->value['subsets'] = false; } echo ''; } } echo '
    '; } /* Font Script */ if ( $this->field['font-family'] == true && $this->field['subsets'] == true && $this->field['google'] == true ) { echo '
    '; echo ' '; echo ''; $multi = ( isset( $this->field['multi']['subset'] ) && $this->field['multi']['subset'] ) ? ' multiple="multiple"' : ""; echo ''; if ( empty( $this->value['subsets'] ) ) { echo ''; } if ( isset( $gfonts[ $this->value['font-family'] ] ) ) { foreach ( $gfonts[ $this->value['font-family'] ]['subsets'] as $v ) { echo ''; } } echo '
    '; } /* Font Align */ if ( $this->field['text-align'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Text Transform */ if ( $this->field['text-transform'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Font Variant */ if ( $this->field['font-variant'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Text Decoration */ if ( $this->field['text-decoration'] === true ) { echo '
    '; echo ''; echo '
    '; } /* Font Size */ if ( $this->field['font-size'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } /* Line Height */ if ( $this->field['line-height'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } /* Word Spacing */ if ( $this->field['word-spacing'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } /* Letter Spacing */ if ( $this->field['letter-spacing'] === true ) { echo '
    '; echo ''; echo '
    ' . $unit . '
    '; echo ''; echo '
    '; } echo '
    '; /* Font Color */ if ( $this->field['color'] === true ) { $default = ""; if ( empty( $this->field['default']['color'] ) && ! empty( $this->field['color'] ) ) { $default = $this->value['color']; } else if ( ! empty( $this->field['default']['color'] ) ) { $default = $this->field['default']['color']; } echo '
    '; echo ''; echo '
    '; echo ''; echo '
    '; } echo '
    '; /* Font Preview */ if ( ! isset( $this->field['preview'] ) || $this->field['preview'] !== false ) { if ( isset( $this->field['preview']['text'] ) ) { $g_text = $this->field['preview']['text']; } else { $g_text = '1 2 3 4 5 6 7 8 9 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z'; } $style = ''; if ( isset( $this->field['preview']['always_display'] ) ) { if ( true === filter_var( $this->field['preview']['always_display'], FILTER_VALIDATE_BOOLEAN ) ) { if ( $isGoogleFont == true ) { $this->parent->typography_preview[ $fontFamily[0] ] = array( 'font-style' => array( $this->value['font-weight'] . $this->value['font-style'] ), 'subset' => array( $this->value['subsets'] ) ); $protocol = ( ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:"; wp_deregister_style( 'redux-typography-preview' ); wp_dequeue_style( 'redux-typography-preview' ); wp_register_style( 'redux-typography-preview', $protocol . $this->makeGoogleWebfontLink( $this->parent->typography_preview ), '', time() ); wp_enqueue_style( 'redux-typography-preview' ); } $style = 'display: block; font-family: ' . $this->value['font-family'] . '; font-weight: ' . $this->value['font-weight'] . ';'; } } if ( isset( $this->field['preview']['font-size'] ) ) { $style .= 'font-size: ' . $this->field['preview']['font-size'] . ';'; $inUse = '1'; } else { //$g_size = ''; $inUse = '0'; } echo '

    ' . $g_text . '

    '; echo '
    '; // end typography container } } //function /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ function enqueue() { if (!wp_style_is('select2-css')) { wp_enqueue_style( 'select2-css' ); } if (!wp_style_is('wp-color-picker')) { wp_enqueue_style( 'wp-color-picker' ); } if (!wp_script_is ( 'redux-field-typography-js' )) { wp_enqueue_script( 'redux-field-typography-js', ReduxFramework::$_url . 'inc/fields/typography/field_typography' . Redux_Functions::isMin() . '.js', array( 'jquery', 'wp-color-picker', 'select2-js', 'redux-js' ), time(), true ); } wp_localize_script( 'redux-field-typography-js', 'redux_ajax_script', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); if ($this->parent->args['dev_mode']) { if (!wp_style_is('redux-color-picker-css')) { wp_enqueue_style( 'redux-color-picker-css' ); } if (!wp_style_is('redux-field-typography-css')) { wp_enqueue_style( 'redux-field-typography-css', ReduxFramework::$_url . 'inc/fields/typography/field_typography.css', array(), time(), 'all' ); } } } //function /** * makeGoogleWebfontLink Function. * Creates the google fonts link. * * @since ReduxFramework 3.0.0 */ function makeGoogleWebfontLink( $fonts ) { $link = ""; $subsets = array(); foreach ( $fonts as $family => $font ) { if ( ! empty( $link ) ) { $link .= "%7C"; // Append a new font to the string } $link .= $family; if ( ! empty( $font['font-style'] ) || ! empty( $font['all-styles'] ) ) { $link .= ':'; if ( ! empty( $font['all-styles'] ) ) { $link .= implode( ',', $font['all-styles'] ); } else if ( ! empty( $font['font-style'] ) ) { $link .= implode( ',', $font['font-style'] ); } } if ( ! empty( $font['subset'] ) ) { foreach ( $font['subset'] as $subset ) { if ( ! in_array( $subset, $subsets ) ) { array_push( $subsets, $subset ); } } } } if ( ! empty( $subsets ) ) { $link .= "&subset=" . implode( ',', $subsets ); } return '//fonts.googleapis.com/css?family=' . str_replace( '|', '%7C', $link ); } /** * makeGoogleWebfontString Function. * Creates the google fonts link. * * @since ReduxFramework 3.1.8 */ function makeGoogleWebfontString( $fonts ) { $link = ""; $subsets = array(); foreach ( $fonts as $family => $font ) { if ( ! empty( $link ) ) { $link .= "', '"; // Append a new font to the string } $link .= $family; if ( ! empty( $font['font-style'] ) || ! empty( $font['all-styles'] ) ) { $link .= ':'; if ( ! empty( $font['all-styles'] ) ) { $link .= implode( ',', $font['all-styles'] ); } else if ( ! empty( $font['font-style'] ) ) { $link .= implode( ',', $font['font-style'] ); } } if ( ! empty( $font['subset'] ) ) { foreach ( $font['subset'] as $subset ) { if ( ! in_array( $subset, $subsets ) ) { array_push( $subsets, $subset ); } } } } if ( ! empty( $subsets ) ) { $link .= "&subset=" . implode( ',', $subsets ); } return "'" . $link . "'"; } function output() { $font = $this->value; // Shim out old arg to new if ( isset( $this->field['all_styles'] ) && ! empty( $this->field['all_styles'] ) ) { $this->field['all-styles'] = $this->field['all_styles']; unset ( $this->field['all_styles'] ); } // Check for font-backup. If it's set, stick it on a variabhle for // later use. if ( ! empty( $font['font-family'] ) && ! empty( $font['font-backup'] ) ) { $font['font-family'] = str_replace( ', ' . $font['font-backup'], '', $font['font-family'] ); $fontBackup = ',' . $font['font-backup']; } // if (strpos($font['font-family'], ' ')) { // $font['font-family'] = '"' . $font['font-family'] . '"'; // } $style = ''; $fontValueSet = false; if ( ! empty( $font ) ) { foreach ( $font as $key => $value ) { if ( ! empty( $value ) && in_array( $key, array( 'font-family', 'font-weight' ) ) ) { $fontValueSet = true; } } } if ( ! empty( $font ) ) { foreach ( $font as $key => $value ) { if ( $key == 'font-options' ) { continue; } // Check for font-family key if ( 'font-family' == $key ) { // Enclose font family in quotes if spaces are in the // name. This is necessary because if there are numerics // in the font name, they will not render properly. // Google should know better. if (strpos($value, ' ') && !strpos($value, ',')){ $value = '"' . $value . '"'; } // Ensure fontBackup isn't empty (we already option // checked this earlier. No need to do it again. if ( ! empty( $fontBackup ) ) { // Apply the backup font to the font-family element // via the saved variable. We do this here so it // doesn't get appended to the Google stuff below. $value .= $fontBackup; } } if ( empty( $value ) && in_array( $key, array( 'font-weight', 'font-style' ) ) && $fontValueSet == true ) { $value = "normal"; } if ($key == 'font-weight' && $this->field['font-weight'] == false) { continue; } if ($key == 'font-style' && $this->field['font-style'] == false) { continue; } if ( $key == "google" || $key == "subsets" || $key == "font-backup" || empty( $value ) ) { continue; } $style .= $key . ':' . $value . ';'; } if ( isset( $this->parent->args['async_typography'] ) && $this->parent->args['async_typography'] ) { $style .= 'opacity: 1;visibility: visible;-webkit-transition: opacity 0.24s ease-in-out;-moz-transition: opacity 0.24s ease-in-out;transition: opacity 0.24s ease-in-out;'; } } if ( ! empty( $style ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $keys = implode( ",", $this->field['output'] ); $this->parent->outputCSS .= $keys . "{" . $style . '}'; if ( isset( $this->parent->args['async_typography'] ) && $this->parent->args['async_typography'] ) { $key_string = ""; $key_string_ie = ""; foreach ( $this->field['output'] as $value ) { $key_string .= ".wf-loading " . $value . ','; $key_string_ie .= ".ie.wf-loading " . $value . ','; } $this->parent->outputCSS .= $key_string . "{opacity: 0;}"; $this->parent->outputCSS .= $key_string_ie . "{visibility: hidden;}"; } } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $keys = implode( ",", $this->field['compiler'] ); $this->parent->compilerCSS .= $keys . "{" . $style . '}'; if ( isset( $this->parent->args['async_typography'] ) && $this->parent->args['async_typography'] ) { $key_string = ""; $key_string_ie = ""; foreach ( $this->field['compiler'] as $value ) { $key_string .= ".wf-loading " . $value . ','; $key_string_ie .= ".ie.wf-loading " . $value . ','; } $this->parent->compilerCSS .= $key_string . "{opacity: 0;}"; $this->parent->compilerCSS .= $key_string_ie . "{visibility: hidden;}"; } } } // Google only stuff! if ( ! empty( $font['font-family'] ) && ! empty( $this->field['google'] ) && filter_var( $this->field['google'], FILTER_VALIDATE_BOOLEAN ) ) { // Added standard font matching check to avoid output to Google fonts call - kp // If no custom font array was supplied, the load it with default // standard fonts. if ( empty( $this->field['fonts'] ) ) { $this->field['fonts'] = $this->std_fonts; } // Ensure the fonts array is NOT empty if ( ! empty( $this->field['fonts'] ) ) { //Make the font keys in the array lowercase, for case-insensitive matching $lcFonts = array_change_key_case( $this->field['fonts'] ); // Rebuild font array with all keys stripped of spaces $arr = array(); foreach ( $lcFonts as $key => $value ) { $key = str_replace( ', ', ',', $key ); $arr[ $key ] = $value; } $lcFonts = array_change_key_case( $this->field['custom_fonts'] ); foreach ( $lcFonts as $group => $fontArr ) { foreach ( $fontArr as $key => $value ) { $arr[ strtolower( $key ) ] = $key; } } $lcFonts = $arr; unset( $arr ); // lowercase chosen font for matching purposes $lcFont = strtolower( $font['font-family'] ); // Remove spaces after commas in chosen font for mathcing purposes. $lcFont = str_replace( ', ', ',', $lcFont ); // If the lower cased passed font-family is NOT found in the standard font array // Then it's a Google font, so process it for output. if ( ! array_key_exists( $lcFont, $lcFonts ) ) { $family = $font['font-family']; // Strip out spaces in font names and replace with with plus signs // TODO?: This method doesn't respect spaces after commas, hence the reason // for the std_font array keys having no spaces after commas. This could be // fixed with RegEx in the future. $font['font-family'] = str_replace( ' ', '+', $font['font-family'] ); // Push data to parent typography variable. if ( empty( $this->parent->typography[ $font['font-family'] ] ) ) { $this->parent->typography[ $font['font-family'] ] = array(); } if ( isset( $this->field['all-styles'] ) ) { if ( ! isset( $font['font-options'] ) || empty( $font['font-options'] ) ) { $this->getGoogleArray(); if ( isset( $this->parent->googleArray ) && ! empty( $this->parent->googleArray ) && isset( $this->parent->googleArray[ $family ] ) ) { $font['font-options'] = $this->parent->googleArray[ $family ]; } } else { $font['font-options'] = json_decode( $font['font-options'], true ); } //print_r($font['font-options']); //exit(); } if ( isset( $font['font-options'] ) && ! empty( $font['font-options'] ) && isset( $this->field['all-styles'] ) && filter_var( $this->field['all-styles'], FILTER_VALIDATE_BOOLEAN ) ) { if ( isset( $font['font-options'] ) && ! empty( $font['font-options']['variants'] ) ) { if ( ! isset( $this->parent->typography[ $font['font-family'] ]['all-styles'] ) || empty( $this->parent->typography[ $font['font-family'] ]['all-styles'] ) ) { $this->parent->typography[ $font['font-family'] ]['all-styles'] = array(); foreach ( $font['font-options']['variants'] as $variant ) { $this->parent->typography[ $font['font-family'] ]['all-styles'][] = $variant['id']; } } } } if ( ! empty( $font['font-weight'] ) ) { if ( empty( $this->parent->typography[ $font['font-family'] ]['font-weight'] ) || ! in_array( $font['font-weight'], $this->parent->typography[ $font['font-family'] ]['font-weight'] ) ) { $style = $font['font-weight']; } if ( ! empty( $font['font-style'] ) ) { $style .= $font['font-style']; } if ( empty( $this->parent->typography[ $font['font-family'] ]['font-style'] ) || ! in_array( $style, $this->parent->typography[ $font['font-family'] ]['font-style'] ) ) { $this->parent->typography[ $font['font-family'] ]['font-style'][] = $style; } } if ( ! empty( $font['subsets'] ) ) { if ( empty( $this->parent->typography[ $font['font-family'] ]['subset'] ) || ! in_array( $font['subsets'], $this->parent->typography[ $font['font-family'] ]['subset'] ) ) { $this->parent->typography[ $font['font-family'] ]['subset'][] = $font['subsets']; } } } // !array_key_exists } //!empty fonts array } // Typography not set } private function localizeStdFonts() { if ( false == $this->user_fonts ) { if ( isset( $this->parent->fonts['std'] ) && ! empty( $this->parent->fonts['std'] ) ) { return; } $this->parent->font_groups['std'] = array( 'text' => __( 'Standard Fonts', 'redux-framework' ), 'children' => array(), ); foreach ( $this->field['fonts'] as $font => $extra ) { $this->parent->font_groups['std']['children'][] = array( 'id' => $font, 'text' => $font, 'data-google' => 'false', ); } } if ( $this->field['custom_fonts'] !== false ) { $this->field['custom_fonts'] = apply_filters( "redux/{$this->parent->args['opt_name']}/field/typography/custom_fonts", array() ); if ( ! empty( $this->field['custom_fonts'] ) ) { foreach ( $this->field['custom_fonts'] as $group => $fonts ) { $this->parent->font_groups['customfonts'] = array( 'text' => $group, 'children' => array(), ); foreach ( $fonts as $family => $v ) { $this->parent->font_groups['customfonts']['children'][] = array( 'id' => $family, 'text' => $family, 'data-google' => 'false', ); } } } } } /** * Construct the google array from the stored JSON/HTML */ function getGoogleArray() { if ( ( isset( $this->parent->fonts['google'] ) && ! empty( $this->parent->fonts['google'] ) ) || isset( $this->parent->fonts['google'] ) && $this->parent->fonts['google'] == false ) { return; } $gFile = dirname( __FILE__ ) . '/googlefonts.php'; // Weekly update if ( isset( $this->parent->args['google_update_weekly'] ) && $this->parent->args['google_update_weekly'] && ! empty( $this->parent->args['google_api_key'] ) ) { if ( file_exists( $gFile ) ) { // Keep the fonts updated weekly $weekback = strtotime( date( 'jS F Y', time() + ( 60 * 60 * 24 * - 7 ) ) ); $last_updated = filemtime( $gFile ); if ( $last_updated < $weekback ) { unlink( $gFile ); } } } if ( ! file_exists( $gFile ) ) { $result = @wp_remote_get( apply_filters( 'redux-google-fonts-api-url', 'https://www.googleapis.com/webfonts/v1/webfonts?key=' ) . $this->parent->args['google_api_key'], array( 'sslverify' => false ) ); if ( ! is_wp_error( $result ) && $result['response']['code'] == 200 ) { $result = json_decode( $result['body'] ); foreach ( $result->items as $font ) { $this->parent->googleArray[ $font->family ] = array( 'variants' => $this->getVariants( $font->variants ), 'subsets' => $this->getSubsets( $font->subsets ) ); } if ( ! empty( $this->parent->googleArray ) ) { $this->parent->filesystem->execute( 'put_contents', $gFile, array( 'content' => "parent->googleArray ) . "', true );" ) ); } } } if ( ! file_exists( $gFile ) ) { $this->parent->fonts['google'] = false; return; } if ( ! isset( $this->parent->fonts['google'] ) || empty( $this->parent->fonts['google'] ) ) { $fonts = include $gFile; if ( $fonts === true ) { $this->parent->fonts['google'] = false; return; } if ( isset( $fonts ) && ! empty( $fonts ) && is_array( $fonts ) && $fonts != false ) { $this->parent->fonts['google'] = $fonts; $this->parent->googleArray = $fonts; // optgroup $this->parent->font_groups['google'] = array( 'text' => __( 'Google Webfonts', 'redux-framework' ), 'children' => array(), ); // options foreach ( $this->parent->fonts['google'] as $font => $extra ) { $this->parent->font_groups['google']['children'][] = array( 'id' => $font, 'text' => $font, 'data-google' => 'true' ); } } } } /** * getSubsets Function. * Clean up the Google Webfonts subsets to be human readable * * @since ReduxFramework 0.2.0 */ private function getSubsets( $var ) { $result = array(); foreach ( $var as $v ) { if ( strpos( $v, "-ext" ) ) { $name = ucfirst( str_replace( "-ext", " Extended", $v ) ); } else { $name = ucfirst( $v ); } array_push( $result, array( 'id' => $v, 'name' => $name ) ); } return array_filter( $result ); } //function /** * getVariants Function. * Clean up the Google Webfonts variants to be human readable * * @since ReduxFramework 0.2.0 */ private function getVariants( $var ) { $result = array(); $italic = array(); foreach ( $var as $v ) { $name = ""; if ( $v[0] == 1 ) { $name = 'Ultra-Light 100'; } else if ( $v[0] == 2 ) { $name = 'Light 200'; } else if ( $v[0] == 3 ) { $name = 'Book 300'; } else if ( $v[0] == 4 || $v[0] == "r" || $v[0] == "i" ) { $name = 'Normal 400'; } else if ( $v[0] == 5 ) { $name = 'Medium 500'; } else if ( $v[0] == 6 ) { $name = 'Semi-Bold 600'; } else if ( $v[0] == 7 ) { $name = 'Bold 700'; } else if ( $v[0] == 8 ) { $name = 'Extra-Bold 800'; } else if ( $v[0] == 9 ) { $name = 'Ultra-Bold 900'; } if ( $v == "regular" ) { $v = "400"; } if ( strpos( $v, "italic" ) || $v == "italic" ) { $name .= " Italic"; $name = trim( $name ); if ( $v == "italic" ) { $v = "400italic"; } $italic[] = array( 'id' => $v, 'name' => $name ); } else { $result[] = array( 'id' => $v, 'name' => $name ); } } foreach ( $italic as $item ) { $result[] = $item; } return array_filter( $result ); } //function } //class } //class exists redux/ReduxCore/inc/fields/typography/field_typography.css000066600000011003152143340070020101 0ustar00.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container input.wp-picker-default,.redux-main .redux-typography-container .redux-typography-color{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px !important;margin-top:0;margin-bottom:0;margin-left:4px !important;font-size:12px !important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48% !important;min-width:210px !important;max-width:324px !important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper:nth-child(even){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px !important;display:block;float:left;height:28px !important;line-height:50px !important;padding:0 !important;width:100% !important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;display:block;position:relative;margin:0 4px 0 5px;margin:0;padding:0;width:23%;width:100%;max-width:23%;min-width:70px;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999;margin:4px 0 2px 0 !important;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted lightgray;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0 none;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width:540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0 !important;margin-right:0 !important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0 !important;margin-right:5px !important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px !important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width:360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100% !important}redux/ReduxCore/inc/fields/typography/field_typography.js000066600000067756152143340070017757 0ustar00/*global redux_change, redux*/ /** * Typography * Dependencies: google.com, jquery, select2 * Feature added by: Dovy Paukstys - http://simplerain.com/ * Date: 06.14.2013 * * Rewrite: Kevin Provance (kprovance) * Date: May 25, 2014 */ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.typography = redux.field_objects.typography || {}; var selVals = []; var isSelecting = false; var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; redux.field_objects.typography.init = function( selector, skipCheck ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-typography:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } var fontClear; el.each( function() { // init each typography field $( this ).find( '.redux-typography-container' ).each( function() { var family = $( this ).find( '.redux-typography-family' ); if ( family.data( 'value' ) === undefined ) { family = $( this ); } else if ( family.data( 'value' ) !== "" ) { $( family ).val( family.data( 'value' ) ); } var select2_handle = $( this ).find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } fontClear = Boolean( $( this ).find( '.redux-font-clear' ).val() ); redux.field_objects.typography.select( family, true ); window.onbeforeunload = null; } ); //init when value is changed $( this ).find( '.redux-typography' ).on( 'change', function() { redux.field_objects.typography.select( $( this ) ); //.parents('.redux-container-typography:first')); } ); //init when value is changed $( this ).find( '.redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration' ).keyup( function() { redux.field_objects.typography.select( $( this ).parents( '.redux-container-typography:first' ) ); } ); // Have to redeclare the wpColorPicker to get a callback function $( this ).find( '.redux-typography-color' ).wpColorPicker( { change: function( e, ui ) { $( this ).val( ui.color.toString() ); redux.field_objects.typography.select( $( this ) ); } } ); // Don't allow negative numbers for size field $( this ).find( ".redux-typography-size" ).numeric( { allowMinus: false } ); // Allow negative numbers for indicated fields $( this ).find( ".redux-typography-height, .redux-typography-word, .redux-typography-letter" ).numeric( { allowMinus: true } ); // select2 magic, to load font-family dynamically var data = [{id: 'none', text: 'none'}]; $( this ).find( ".redux-typography-family" ).select2( { matcher: function( term, text ) { return text.toUpperCase().indexOf( term.toUpperCase() ) === 0; }, query: function( query ) { return window.Select2.query.local( data )( query ); }, initSelection: function( element, callback ) { var data = {id: element.val(), text: element.val()}; callback( data ); }, allowClear: fontClear, // when one clicks on the font-family select box } ).on( "select2-opening", function( e ) { // Get field ID var thisID = $( this ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); // User included fonts? var isUserFonts = $( '#' + thisID + ' .redux-typography-font-family' ).data( 'user-fonts' ); isUserFonts = isUserFonts ? 1 : 0; // Google font isn use? var usingGoogleFonts = $( '#' + thisID + ' .redux-typography-google' ).val(); usingGoogleFonts = usingGoogleFonts ? 1 : 0; // Set up data array var buildData = []; // If custom fonts, push onto array if ( redux.customfonts !== undefined ) { buildData.push( redux.customfonts ); } // If standard fonts, push onto array if ( redux.stdfonts !== undefined && isUserFonts === 0 ) { buildData.push( redux.stdfonts ); } // If user fonts, pull from localize and push into array if ( isUserFonts == 1 ) { var fontKids = []; // var fontData = { text: 'Standard Fonts', children: fontKids }; buildData.push( fontData ); } // If googfonts on and had data, push into array if ( usingGoogleFonts == 1 || usingGoogleFonts === true && redux.googlefonts !== undefined ) { buildData.push( redux.googlefonts ); } // output data to drop down data = buildData; // get placeholder var selFamily = $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'placeholder' ); if ( !selFamily ) { selFamily = null; } // select current font $( '#' + thisID + " .redux-typography-family" ).select2( 'val', selFamily ); // When selection is made. } ).on( 'select2-selecting', function( val, object ) { var fontName = val.object.text; var thisID = $( this ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); $( '#' + thisID + ' #' + thisID + '-family' ).data( 'value', fontName ); $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'placeholder', fontName ); // option values selVals = val; isSelecting = true; redux.field_objects.typography.select( $( this ).parents( '.redux-container-typography:first' ) ); } ).on( 'select2-clearing', function( val, choice ) { var thisID = $( this ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'data-value', '' ); $( '#' + thisID + ' #' + thisID + '-family' ).attr( 'placeholder', 'Font Family' ); $( '#' + thisID + ' #' + thisID + '-google-font' ).val( 'false' ); redux.field_objects.typography.select( $( this ).parents( '.redux-container-typography:first' ) ); } ); var xx = el.find( ".redux-typography-family" ); if ( !xx.hasClass( 'redux-typography-family' ) ) { el.find( ".redux-typography-style" ).select2( default_params ); } // Init select2 for indicated fields el.find( ".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration" ).select2( default_params ); } ); } ); }; // Return font size redux.field_objects.typography.size = function( obj ) { var size = 0, key; for ( key in obj ) { if ( obj.hasOwnProperty( key ) ) { size++; } } return size; }; // Return proper bool value redux.field_objects.typography.makeBool = function( val ) { if ( val == 'false' || val == '0' || val === false || val === 0 ) { return false; } else if ( val == 'true' || val == '1' || val === true || val == 1 ) { return true; } }; redux.field_objects.typography.contrastColour = function( hexcolour ) { // default value is black. var retVal = '#444444'; // In case - for some reason - a blank value is passed. // This should *not* happen. If a function passing a value // is canceled, it should pass the current value instead of // a blank. This is how the Windows Common Controls do it. :P if ( hexcolour !== '' ) { // Replace the hash with a blank. hexcolour = hexcolour.replace( '#', '' ); var r = parseInt( hexcolour.substr( 0, 2 ), 16 ); var g = parseInt( hexcolour.substr( 2, 2 ), 16 ); var b = parseInt( hexcolour.substr( 4, 2 ), 16 ); var res = ((r * 299) + (g * 587) + (b * 114)) / 1000; // Instead of pure black, I opted to use WP 3.8 black, so it looks uniform. :) - kp retVal = (res >= 128) ? '#444444' : '#ffffff'; } return retVal; }; // Sync up font options redux.field_objects.typography.select = function( selector, skipCheck ) { var mainID; // Main id for selected field mainID = $( selector ).parents( '.redux-container-typography:first' ).attr( 'data-id' ); if ( mainID === undefined ) { mainID = $( selector ).attr( 'data-id' ); } var parent = $( selector ).parents( '.redux-container-typography:first' ); var data = []; //$.each(parent.find('.redux-typography-field'), function() { // console.log(); //}); //console.log( selector ); // Set all the variables to be checked against var family = $( '#' + mainID + ' #' + mainID + '-family' ).val(); if ( !family ) { family = null; //"inherit"; } var familyBackup = $( '#' + mainID + ' select.redux-typography-family-backup' ).val(); var size = $( '#' + mainID + ' .redux-typography-size' ).val(); var height = $( '#' + mainID + ' .redux-typography-height' ).val(); var word = $( '#' + mainID + ' .redux-typography-word' ).val(); var letter = $( '#' + mainID + ' .redux-typography-letter' ).val(); var align = $( '#' + mainID + ' select.redux-typography-align' ).val(); var transform = $( '#' + mainID + ' select.redux-typography-transform' ).val(); var fontVariant = $( '#' + mainID + ' select.redux-typography-font-variant' ).val(); var decoration = $( '#' + mainID + ' select.redux-typography-decoration' ).val(); var style = $( '#' + mainID + ' select.redux-typography-style' ).val(); var script = $( '#' + mainID + ' select.redux-typography-subsets' ).val(); var color = $( '#' + mainID + ' .redux-typography-color' ).val(); var units = $( '#' + mainID ).data( 'units' ); //console.log('here3'); //console.log(color); //var output = family; // Is selected font a google font? var google; if ( isSelecting === true ) { google = redux.field_objects.typography.makeBool( selVals.object['data-google'] ); $( '#' + mainID + ' .redux-typography-google-font' ).val( google ); } else { google = redux.field_objects.typography.makeBool( $( '#' + mainID + ' .redux-typography-google-font' ).val() ); // Check if font is a google font } // Page load. Speeds things up memory wise to offload to client if ( !$( '#' + mainID ).hasClass( 'typography-initialized' ) ) { style = $( '#' + mainID + ' select.redux-typography-style' ).data( 'value' ); script = $( '#' + mainID + ' select.redux-typography-subsets' ).data( 'value' ); if ( style !== "" ) { style = String( style ); } if ( typeof (script) !== undefined ) { script = String( script ); } } // Something went wrong trying to read google fonts, so turn google off if ( redux.fonts.google === undefined ) { google = false; } // Get font details var details = ''; if ( google === true && ( family in redux.fonts.google) ) { details = redux.fonts.google[family]; } else { details = { '400': 'Normal 400', '700': 'Bold 700', '400italic': 'Normal 400 Italic', '700italic': 'Bold 700 Italic' }; } if ( $( selector ).hasClass( 'redux-typography-subsets' ) ) { $( '#' + mainID + ' input.typography-subsets' ).val( script ); } // If we changed the font if ( $( selector ).hasClass( 'redux-typography-family' ) ) { var html = ''; // Google specific stuff if ( google === true ) { // STYLES var selected = ""; $.each( details.variants, function( index, variant ) { if ( variant.id === style || redux.field_objects.typography.size( details.variants ) === 1 ) { selected = ' selected="selected"'; style = variant.id; } else { selected = ""; } html += ''; } ); // destroy select2 $( '#' + mainID + ' .redux-typography-style' ).select2( "destroy" ); // Instert new HTML $( '#' + mainID + ' .redux-typography-style' ).html( html ); // Init select2 $( '#' + mainID + ' .redux-typography-style' ).select2( default_params ); // SUBSETS selected = ""; html = ''; $.each( details.subsets, function( index, subset ) { if ( subset.id === script || redux.field_objects.typography.size( details.subsets ) === 1 ) { selected = ' selected="selected"'; script = subset.id; $( '#' + mainID + ' input.typography-subsets' ).val( script ); } else { selected = ""; } html += ''; } ); //if (typeof (familyBackup) !== "undefined" && familyBackup !== "") { // output += ', ' + familyBackup; //} // Destroy select2 $( '#' + mainID + ' .redux-typography-subsets' ).select2( "destroy" ); // Inset new HTML $( '#' + mainID + ' .redux-typography-subsets' ).html( html ); // Init select2 $( '#' + mainID + ' .redux-typography-subsets' ).select2( default_params ); $( '#' + mainID + ' .redux-typography-subsets' ).parent().fadeIn( 'fast' ); $( '#' + mainID + ' .typography-family-backup' ).fadeIn( 'fast' ); } else { if ( details ) { $.each( details, function( index, value ) { if ( index === style || index === "normal" ) { selected = ' selected="selected"'; $( '#' + mainID + ' .typography-style .select2-chosen' ).text( value ); } else { selected = ""; } html += ''; } ); // Destory select2 $( '#' + mainID + ' .redux-typography-style' ).select2( "destroy" ); // Insert new HTML $( '#' + mainID + ' .redux-typography-style' ).html( html ); // Init select2 $( '#' + mainID + ' .redux-typography-style' ).select2( default_params ); // Prettify things $( '#' + mainID + ' .redux-typography-subsets' ).parent().fadeOut( 'fast' ); $( '#' + mainID + ' .typography-family-backup' ).fadeOut( 'fast' ); } } $( '#' + mainID + ' .redux-typography-font-family' ).val( family ); } else if ( $( selector ).hasClass( 'redux-typography-family-backup' ) && familyBackup !== "" ) { $( '#' + mainID + ' .redux-typography-font-family-backup' ).val( familyBackup ); } // Check if the selected value exists. If not, empty it. Else, apply it. if ( $( '#' + mainID + " select.redux-typography-style option[value='" + style + "']" ).length === 0 ) { style = ""; $( '#' + mainID + ' select.redux-typography-style' ).select2( 'val', '' ); } else if ( style === "400" ) { $( '#' + mainID + ' select.redux-typography-style' ).select2( 'val', style ); } // Handle empty subset select if ( $( '#' + mainID + " select.redux-typography-subsets option[value='" + script + "']" ).length === 0 ) { script = ""; $( '#' + mainID + ' select.redux-typography-subsets' ).select2( 'val', '' ); $( '#' + mainID + ' input.typography-subsets' ).val( script ); } var _linkclass = 'style_link_' + mainID; //remove other elements crested in $( '.' + _linkclass ).remove(); if ( family !== null && family !== "inherit" && $( '#' + mainID ).hasClass( 'typography-initialized' ) ) { //replace spaces with "+" sign var the_font = family.replace( /\s+/g, '+' ); if ( google === true ) { //add reference to google font family var link = the_font; if ( style && style !== "" ) { link += ':' + style.replace( /\-/g, " " ); } if ( script && script !== "" ) { link += '&subset=' + script; } if ( isSelecting === false ) { if ( typeof (WebFont) !== "undefined" && WebFont ) { WebFont.load( {google: {families: [link]}} ); } } $( '#' + mainID + ' .redux-typography-google' ).val( true ); } else { $( '#' + mainID + ' .redux-typography-google' ).val( false ); } } // Weight and italic if ( style.indexOf( "italic" ) !== -1 ) { $( '#' + mainID + ' .typography-preview' ).css( 'font-style', 'italic' ); $( '#' + mainID + ' .typography-font-style' ).val( 'italic' ); style = style.replace( 'italic', '' ); } else { $( '#' + mainID + ' .typography-preview' ).css( 'font-style', "normal" ); $( '#' + mainID + ' .typography-font-style' ).val( '' ); } $( '#' + mainID + ' .typography-font-weight' ).val( style ); if ( !height ) { height = size; } if ( size === '' || size === undefined ) { $( '#' + mainID + ' .typography-font-size' ).val( '' ); } else { $( '#' + mainID + ' .typography-font-size' ).val( size + units ); } if ( height === '' || height === undefined ) { $( '#' + mainID + ' .typography-line-height' ).val( '' ); } else { $( '#' + mainID + ' .typography-line-height' ).val( height + units ); } if ( word === '' || word === undefined ) { $( '#' + mainID + ' .typography-word-spacing' ).val( '' ); } else { $( '#' + mainID + ' .typography-word-spacing' ).val( word + units ); } if ( letter === '' || letter === undefined ) { $( '#' + mainID + ' .typography-letter-spacing' ).val( '' ); } else { $( '#' + mainID + ' .typography-letter-spacing' ).val( letter + units ); } // Show more preview stuff if ( $( '#' + mainID ).hasClass( 'typography-initialized' ) ) { //console.log('here2'); var isPreviewSize = $( '#' + mainID + ' .typography-preview' ).data( 'preview-size' ); if ( isPreviewSize == '0' ) { $( '#' + mainID + ' .typography-preview' ).css( 'font-size', size + units ); } $( '#' + mainID + ' .typography-preview' ).css( 'font-weight', style ); //show in the preview box the font $( '#' + mainID + ' .typography-preview' ).css( 'font-family', family + ', sans-serif' ); if ( family === 'none' && family === '' ) { //if selected is not a font remove style "font-family" at preview box $( '#' + mainID + ' .typography-preview' ).css( 'font-family', 'inherit' ); } $( '#' + mainID + ' .typography-preview' ).css( 'line-height', height + units ); $( '#' + mainID + ' .typography-preview' ).css( 'word-spacing', word + units ); $( '#' + mainID + ' .typography-preview' ).css( 'letter-spacing', letter + units ); if ( color ) { $( '#' + mainID + ' .typography-preview' ).css( 'color', color ); $( '#' + mainID + ' .typography-preview' ).css( 'background-color', redux.field_objects.typography.contrastColour( color ) ); } $( '#' + mainID + ' .typography-style .select2-chosen' ).text( $( '#' + mainID + ' .redux-typography-style option:selected' ).text() ); $( '#' + mainID + ' .typography-script .select2-chosen' ).text( $( '#' + mainID + ' .redux-typography-subsets option:selected' ).text() ); if ( align ) { $( '#' + mainID + ' .typography-preview' ).css( 'text-align', align ); } if ( transform ) { $( '#' + mainID + ' .typography-preview' ).css( 'text-transform', transform ); } if ( fontVariant ) { $( '#' + mainID + ' .typography-preview' ).css( 'font-variant', fontVariant ); } if ( decoration ) { $( '#' + mainID + ' .typography-preview' ).css( 'text-decoration', decoration ); } $( '#' + mainID + ' .typography-preview' ).slideDown(); } // end preview stuff // if not preview showing, then set preview to show if ( !$( '#' + mainID ).hasClass( 'typography-initialized' ) ) { $( '#' + mainID ).addClass( 'typography-initialized' ); } isSelecting = false; if ( !skipCheck ) { redux_change( selector ); } }; })( jQuery );redux/ReduxCore/inc/fields/typography/field_typography.min.js000066600000025176152143340070020527 0ustar00(function(c){redux.field_objects=redux.field_objects||{};redux.field_objects.typography=redux.field_objects.typography||{};var d=[];var a=false;var b={width:"resolve",triggerChange:true,allowClear:true};redux.field_objects.typography.init=function(e,f){if(!e){e=c(document).find(".redux-group-tab:visible").find(".redux-container-typography:visible")}c(e).each(function(){var i=c(this);var h=i;if(!i.hasClass("redux-field-container")){h=i.parents(".redux-field-container:first")}if(h.is(":hidden")){return}if(h.hasClass("redux-field-init")){h.removeClass("redux-field-init")}else{return}var g;i.each(function(){c(this).find(".redux-typography-container").each(function(){var n=c(this).find(".redux-typography-family");if(n.data("value")===undefined){n=c(this)}else{if(n.data("value")!==""){c(n).val(n.data("value"))}}var l=c(this).find(".select2_params");if(l.size()>0){var m=l.val();m=JSON.parse(m);b=c.extend({},b,m)}g=Boolean(c(this).find(".redux-font-clear").val());redux.field_objects.typography.select(n,true);window.onbeforeunload=null});c(this).find(".redux-typography").on("change",function(){redux.field_objects.typography.select(c(this))});c(this).find(".redux-typography-size, .redux-typography-height, .redux-typography-word, .redux-typography-letter, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").keyup(function(){redux.field_objects.typography.select(c(this).parents(".redux-container-typography:first"))});c(this).find(".redux-typography-color").wpColorPicker({change:function(m,l){c(this).val(l.color.toString());redux.field_objects.typography.select(c(this))}});c(this).find(".redux-typography-size").numeric({allowMinus:false});c(this).find(".redux-typography-height, .redux-typography-word, .redux-typography-letter").numeric({allowMinus:true});var j=[{id:"none",text:"none"}];c(this).find(".redux-typography-family").select2({matcher:function(l,m){return m.toUpperCase().indexOf(l.toUpperCase())===0},query:function(l){return window.Select2.query.local(j)(l)},initSelection:function(l,n){var m={id:l.val(),text:l.val()};n(m)},allowClear:g}).on("select2-opening",function(r){var u=c(this).parents(".redux-container-typography:first").attr("data-id");var n=c("#"+u+" .redux-typography-font-family").data("user-fonts");n=n?1:0;var o=c("#"+u+" .redux-typography-google").val();o=o?1:0;var s=[];if(redux.customfonts!==undefined){s.push(redux.customfonts)}if(redux.stdfonts!==undefined&&n===0){s.push(redux.stdfonts)}if(n==1){var m=[];for(var v in redux.typography[u]){var q=redux.typography[u].std_font;for(var l in q){if(q.hasOwnProperty(l)){m.push({id:l,text:l,"data-google":"false"})}}}var p={text:"Standard Fonts",children:m};s.push(p)}if(o==1||o===true&&redux.googlefonts!==undefined){s.push(redux.googlefonts)}j=s;var t=c("#"+u+" #"+u+"-family").attr("placeholder");if(!t){t=null}c("#"+u+" .redux-typography-family").select2("val",t)}).on("select2-selecting",function(n,l){var m=n.object.text;var o=c(this).parents(".redux-container-typography:first").attr("data-id");c("#"+o+" #"+o+"-family").data("value",m);c("#"+o+" #"+o+"-family").attr("placeholder",m);d=n;a=true;redux.field_objects.typography.select(c(this).parents(".redux-container-typography:first"))}).on("select2-clearing",function(m,l){var n=c(this).parents(".redux-container-typography:first").attr("data-id");c("#"+n+" #"+n+"-family").attr("data-value","");c("#"+n+" #"+n+"-family").attr("placeholder","Font Family");c("#"+n+" #"+n+"-google-font").val("false");redux.field_objects.typography.select(c(this).parents(".redux-container-typography:first"))});var k=i.find(".redux-typography-family");if(!k.hasClass("redux-typography-family")){i.find(".redux-typography-style").select2(b)}i.find(".redux-typography-family-backup, .redux-typography-align, .redux-typography-transform, .redux-typography-font-variant, .redux-typography-decoration").select2(b)})})};redux.field_objects.typography.size=function(g){var f=0,e;for(e in g){if(g.hasOwnProperty(e)){f++}}return f};redux.field_objects.typography.makeBool=function(e){if(e=="false"||e=="0"||e===false||e===0){return false}else{if(e=="true"||e=="1"||e===true||e==1){return true}}};redux.field_objects.typography.contrastColour=function(j){var k="#444444";if(j!==""){j=j.replace("#","");var i=parseInt(j.substr(0,2),16);var h=parseInt(j.substr(2,2),16);var e=parseInt(j.substr(4,2),16);var f=((i*299)+(h*587)+(e*114))/1000;k=(f>=128)?"#444444":"#ffffff"}return k};redux.field_objects.typography.select=function(w,k){var e;e=c(w).parents(".redux-container-typography:first").attr("data-id");if(e===undefined){e=c(w).attr("data-id")}var m=c(w).parents(".redux-container-typography:first");var E=[];var B=c("#"+e+" #"+e+"-family").val();if(!B){B=null}var f=c("#"+e+" select.redux-typography-family-backup").val();var q=c("#"+e+" .redux-typography-size").val();var r=c("#"+e+" .redux-typography-height").val();var z=c("#"+e+" .redux-typography-word").val();var D=c("#"+e+" .redux-typography-letter").val();var v=c("#"+e+" select.redux-typography-align").val();var p=c("#"+e+" select.redux-typography-transform").val();var i=c("#"+e+" select.redux-typography-font-variant").val();var l=c("#"+e+" select.redux-typography-decoration").val();var y=c("#"+e+" select.redux-typography-style").val();var C=c("#"+e+" select.redux-typography-subsets").val();var u=c("#"+e+" .redux-typography-color").val();var t=c("#"+e).data("units");var g;if(a===true){g=redux.field_objects.typography.makeBool(d.object["data-google"]);c("#"+e+" .redux-typography-google-font").val(g)}else{g=redux.field_objects.typography.makeBool(c("#"+e+" .redux-typography-google-font").val())}if(!c("#"+e).hasClass("typography-initialized")){y=c("#"+e+" select.redux-typography-style").data("value");C=c("#"+e+" select.redux-typography-subsets").data("value");if(y!==""){y=String(y)}if(typeof(C)!==undefined){C=String(C)}}if(redux.fonts.google===undefined){g=false}var A="";if(g===true&&(B in redux.fonts.google)){A=redux.fonts.google[B]}else{A={"400":"Normal 400","700":"Bold 700","400italic":"Normal 400 Italic","700italic":"Bold 700 Italic"}}if(c(w).hasClass("redux-typography-subsets")){c("#"+e+" input.typography-subsets").val(C)}if(c(w).hasClass("redux-typography-family")){var o='';if(g===true){var s="";c.each(A.variants,function(F,G){if(G.id===y||redux.field_objects.typography.size(A.variants)===1){s=' selected="selected"';y=G.id}else{s=""}o+='"});c("#"+e+" .redux-typography-style").select2("destroy");c("#"+e+" .redux-typography-style").html(o);c("#"+e+" .redux-typography-style").select2(b);s="";o='';c.each(A.subsets,function(F,G){if(G.id===C||redux.field_objects.typography.size(A.subsets)===1){s=' selected="selected"';C=G.id;c("#"+e+" input.typography-subsets").val(C)}else{s=""}o+='"});c("#"+e+" .redux-typography-subsets").select2("destroy");c("#"+e+" .redux-typography-subsets").html(o);c("#"+e+" .redux-typography-subsets").select2(b);c("#"+e+" .redux-typography-subsets").parent().fadeIn("fast");c("#"+e+" .typography-family-backup").fadeIn("fast")}else{if(A){c.each(A,function(F,G){if(F===y||F==="normal"){s=' selected="selected"';c("#"+e+" .typography-style .select2-chosen").text(G)}else{s=""}o+='"});c("#"+e+" .redux-typography-style").select2("destroy");c("#"+e+" .redux-typography-style").html(o);c("#"+e+" .redux-typography-style").select2(b);c("#"+e+" .redux-typography-subsets").parent().fadeOut("fast");c("#"+e+" .typography-family-backup").fadeOut("fast")}}c("#"+e+" .redux-typography-font-family").val(B)}else{if(c(w).hasClass("redux-typography-family-backup")&&f!==""){c("#"+e+" .redux-typography-font-family-backup").val(f)}}if(c("#"+e+" select.redux-typography-style option[value='"+y+"']").length===0){y="";c("#"+e+" select.redux-typography-style").select2("val","")}else{if(y==="400"){c("#"+e+" select.redux-typography-style").select2("val",y)}}if(c("#"+e+" select.redux-typography-subsets option[value='"+C+"']").length===0){C="";c("#"+e+" select.redux-typography-subsets").select2("val","");c("#"+e+" input.typography-subsets").val(C)}var x="style_link_"+e;c("."+x).remove();if(B!==null&&B!=="inherit"&&c("#"+e).hasClass("typography-initialized")){var h=B.replace(/\s+/g,"+");if(g===true){var j=h;if(y&&y!==""){j+=":"+y.replace(/\-/g," ")}if(C&&C!==""){j+="&subset="+C}if(a===false){if(typeof(WebFont)!=="undefined"&&WebFont){WebFont.load({google:{families:[j]}})}}c("#"+e+" .redux-typography-google").val(true)}else{c("#"+e+" .redux-typography-google").val(false)}}if(y.indexOf("italic")!==-1){c("#"+e+" .typography-preview").css("font-style","italic");c("#"+e+" .typography-font-style").val("italic");y=y.replace("italic","")}else{c("#"+e+" .typography-preview").css("font-style","normal");c("#"+e+" .typography-font-style").val("")}c("#"+e+" .typography-font-weight").val(y);if(!r){r=q}if(q===""||q===undefined){c("#"+e+" .typography-font-size").val("")}else{c("#"+e+" .typography-font-size").val(q+t)}if(r===""||r===undefined){c("#"+e+" .typography-line-height").val("")}else{c("#"+e+" .typography-line-height").val(r+t)}if(z===""||z===undefined){c("#"+e+" .typography-word-spacing").val("")}else{c("#"+e+" .typography-word-spacing").val(z+t)}if(D===""||D===undefined){c("#"+e+" .typography-letter-spacing").val("")}else{c("#"+e+" .typography-letter-spacing").val(D+t)}if(c("#"+e).hasClass("typography-initialized")){var n=c("#"+e+" .typography-preview").data("preview-size");if(n=="0"){c("#"+e+" .typography-preview").css("font-size",q+t)}c("#"+e+" .typography-preview").css("font-weight",y);c("#"+e+" .typography-preview").css("font-family",B+", sans-serif");if(B==="none"&&B===""){c("#"+e+" .typography-preview").css("font-family","inherit")}c("#"+e+" .typography-preview").css("line-height",r+t);c("#"+e+" .typography-preview").css("word-spacing",z+t);c("#"+e+" .typography-preview").css("letter-spacing",D+t);if(u){c("#"+e+" .typography-preview").css("color",u);c("#"+e+" .typography-preview").css("background-color",redux.field_objects.typography.contrastColour(u))}c("#"+e+" .typography-style .select2-chosen").text(c("#"+e+" .redux-typography-style option:selected").text());c("#"+e+" .typography-script .select2-chosen").text(c("#"+e+" .redux-typography-subsets option:selected").text());if(v){c("#"+e+" .typography-preview").css("text-align",v)}if(p){c("#"+e+" .typography-preview").css("text-transform",p)}if(i){c("#"+e+" .typography-preview").css("font-variant",i)}if(l){c("#"+e+" .typography-preview").css("text-decoration",l)}c("#"+e+" .typography-preview").slideDown()}if(!c("#"+e).hasClass("typography-initialized")){c("#"+e).addClass("typography-initialized")}a=false;if(!k){redux_change(w)}}})(jQuery);redux/ReduxCore/inc/fields/color/field_color.php000066600000011176152143340070015733 0ustar00. * * @package ReduxFramework * @subpackage Field_Color * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_color' ) ) { /** * Main ReduxFramework_color class * * @since 1.0.0 */ class ReduxFramework_color { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { echo ''; echo ''; if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { $tChecked = ""; if ( $this->value == "transparent" ) { $tChecked = ' checked="checked"'; } echo ''; } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-color-picker-css' ); } wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'redux-field-color-js', ReduxFramework::$_url . 'inc/fields/color/field_color' . Redux_Functions::isMin() . '.js', array( 'jquery', 'wp-color-picker', 'redux-js' ), time(), true ); } public function output() { $style = ''; if ( ! empty( $this->value ) ) { $mode = ( isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'color' ); $style .= $mode . ':' . $this->value . ';'; if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $css = Redux_Functions::parseCSS( $this->field['output'], $style, $this->value ); $this->parent->outputCSS .= $css; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $css = Redux_Functions::parseCSS( $this->field['compiler'], $style, $this->value ); $this->parent->compilerCSS .= $css; } } } } } redux/ReduxCore/inc/fields/color/field_color.min.js000066600000004467152143340070016347 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color=redux.field_objects.color||{},a(document).ready(function(){}),redux.field_objects.color.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(""),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux_change(a(this))}))})}}(jQuery);redux/ReduxCore/inc/fields/color/field_color.js000066600000017146152143340070015563 0ustar00/* Field Color (color) */ /*global jQuery, document, redux_change, redux*/ (function( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.color = redux.field_objects.color || {}; $( document ).ready( function() { } ); redux.field_objects.color.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-color:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // var $control = el.find( '.redux-color-init' ), // // value = $control.val().replace( /\s+/g, '' ), // alpha_val = 100, // $alpha, $alpha_output; // //console.log($control); // if ( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ ) ) { // alpha_val = parseFloat( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ )[ 1 ] ) * 100; // } el.find( '.redux-color-init' ).wpColorPicker( { change: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ) ); el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); }, clear: function( e, ui ) { $( this ).val( '' ); redux_change( $( this ).parent().find( '.redux-color-init' ) ); } } ); // $( '
    ' // + '' // + '' // + '
    ' ).appendTo( $control.parents( '.wp-picker-container:first' ).addClass( 'vc_color-picker' ).find( '.iris-picker' ) ); // $alpha = $control.parents( '.wp-picker-container:first' ).find( '.vc_alpha-field' ); // //console.log($alpha); // $alpha_output = $control.parents( '.wp-picker-container:first' ).find( '.redux-alpha-container output' ); // $alpha.bind( 'change keyup', function () { // var alpha_val = parseFloat( $alpha.val() ), // iris = $control.data( 'a8cIris' ), // color_picker = $control.data( 'wp-wpColorPicker' ); // //console.log(alpha_val); // $alpha_output.val( $alpha.val() + '%' ); // console.log(alpha_val / 100.0); // iris._color._alpha = parseFloat(alpha_val / 100.0); // console.log(iris._color); // //$control.val( iris._color.toString() ); // el.find( '.redux-color-init' ).wpColorPicker( 'color', iris._color.toString() ); // //console.log($control.val()); // //color_picker.toggler.css( { backgroundColor: $control.val() } ); // } ).val( alpha_val ).trigger( 'change' ); el.find( '.redux-color' ).on( 'focus', function() { $( this ).data( 'oldcolor', $( this ).val() ); } ); el.find( '.redux-color' ).on( 'keyup', function() { var value = $( this ).val(); var color = colorValidate( this ); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { el.find( id + '-transparency' ).removeAttr( 'checked' ); if ( color && color !== $( this ).val() ) { $( this ).val( color ); } } } ); // Replace and validate field on blur el.find( '.redux-color' ).on( 'blur', function() { var value = $( this ).val(); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { if ( colorValidate( this ) === value ) { if ( value.indexOf( "#" ) !== 0 ) { $( this ).val( $( this ).data( 'oldcolor' ) ); } } el.find( id + '-transparency' ).removeAttr( 'checked' ); } } ); // Store the old valid color on keydown el.find( '.redux-color' ).on( 'keydown', function() { $( this ).data( 'oldkeypress', $( this ).val() ); } ); // When transparency checkbox is clicked el.find( '.color-transparency' ).on( 'click', function() { if ( $( this ).is( ":checked" ) ) { el.find( '.redux-saved-color' ).val( $( '#' + $( this ).data( 'id' ) ).val() ); el.find( '#' + $( this ).data( 'id' ) ).val( 'transparent' ); el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); } else { if ( el.find( '#' + $( this ).data( 'id' ) ).val() === 'transparent' ) { var prevColor = $( '.redux-saved-color' ).val(); if ( prevColor === '' ) { prevColor = $( '#' + $( this ).data( 'id' ) ).data( 'default-color' ); } el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( 'background-color', prevColor ); el.find( '#' + $( this ).data( 'id' ) ).val( prevColor ); } } redux_change( $( this ) ); } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/info/field_info.css.map000066600000003240152143340070016133 0ustar00{ "version": 3, "mappings": "AAAA,iBAAkB;EACd,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,MAAM;EACd,MAAM,EAAE,SAAS;EACjB,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,SAAS;EACjB,QAAQ,EAAE,QAAQ;EAElB;;;;;sBAKG;IACC,aAAa,EAAE,YAAY;EAG/B,oBAAG;IACC,KAAK,EAAE,IAAI;EAGf,kCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,IAAI;IAElB,oCAAE;MACE,SAAS,EAAE,GAAG;EAItB,kCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,GAAG;EAGvB,8BAAe;IACX,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,gCAAE;MACE,KAAK,EAAE,OAAO;EAItB,+BAAgB;IACZ,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,iCAAE;MACE,KAAK,EAAE,OAAO;EAItB,+BAAgB;IACZ,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,iCAAE;MACE,KAAK,EAAE,OAAO;EAItB,gCAAiB;IACb,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,kCAAE;MACE,KAAK,EAAE,OAAO;EAItB,4BAAa;IACT,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,OAAO;IAEd,8BAAE;MACE,KAAK,EAAE,OAAO;;AAK1B,mBAAoB;EAChB,MAAM,EAAE,QAAQ;EAChB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,iBAAiB;EAC9B,kBAAkB,EAAE,8BAA6B;EACjD,UAAU,EAAE,8BAA6B;EACzC,OAAO,EAAE,QAAQ;EAEjB;;;;;wBAKG;IACC,aAAa,EAAE,YAAY;EAG/B,qBAAE;IACE,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,GAAG;EAGhB,oCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,IAAI;IAElB,sCAAE;MACE,SAAS,EAAE,GAAG;EAItB,oCAAiB;IACb,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,GAAG;EAGvB,8BAAa;IACT,WAAW,EAAE,iBAAiB;EAGlC,iCAAgB;IACZ,WAAW,EAAE,iBAAiB;EAGlC,iCAAgB;IACZ,WAAW,EAAE,iBAAiB;EAGlC,kCAAiB;IACb,WAAW,EAAE,iBAAiB;;AAItC,uDAAwD;EACpD,OAAO,EAAE,CAAC;;AAKN,sHAAiB;EACb,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;AAErB,sHAAiB;EACb,KAAK,EAAE,IAAI;AAGnB,0EAA4D;EACxD,aAAa,EAAE,CAAC", "sources": ["field_info.scss"], "names": [], "file": "field_info.css" }redux/ReduxCore/inc/fields/info/field_info.php000066600000015341152143340070015363 0ustar00. * * @package ReduxFramework * @subpackage Field_Info * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_info' ) ) { /** * Main ReduxFramework_info class * * @since 1.0.0 */ class ReduxFramework_info { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { $defaults = array( 'title' => '', 'desc' => '', 'notice' => true, 'style' => '', 'color' => '', ); $this->field = wp_parse_args( $this->field, $defaults ); $styles = array( 'normal', 'info', 'warning', 'success', 'critical', 'custom' ); if (!in_array($this->field['style'], $styles)) { $this->field['style'] = 'normal'; } if ($this->field['style'] == "custom") { if (!empty($this->field['color']) ) { $this->field['color'] = "border-color:".$this->field['color'].';'; } else { $this->field['style'] = 'normal'; $this->field['color'] = ""; } } else { $this->field['color'] = ""; } if ( empty( $this->field['desc'] ) && ! empty( $this->field['default'] ) ) { $this->field['desc'] = $this->field['default']; unset( $this->field['default'] ); } if ( empty( $this->field['desc'] ) && ! empty( $this->field['subtitle'] ) ) { $this->field['desc'] = $this->field['subtitle']; unset( $this->field['subtitle'] ); } if ( empty( $this->field['desc'] ) ) { $this->field['desc'] = ""; } if ( empty( $this->field['raw_html'] ) ) { if ( $this->field['notice'] == true ) { $this->field['class'] .= ' redux-notice-field'; } else { $this->field['class'] .= ' redux-info-field'; } $this->field['style'] = 'redux-' . $this->field['style'] . ' '; } $indent = ( isset( $this->field['sectionIndent'] ) && $this->field['sectionIndent'] ) ? ' form-table-section-indented' : ''; echo '
    field['style']) . ' ' . esc_attr($this->field['class']) . ' redux-field-' . esc_attr($this->field['type']) . esc_attr($indent) . '"'.( !empty($this->field['color']) ? ' style="' . esc_attr($this->field['color']) . '"' : '' ) . '>'; if ( ! empty( $this->field['raw_html'] ) && $this->field['raw_html'] ) { echo wp_kses_post($this->field['desc']); } else { if ( isset( $this->field['title'] ) && ! empty( $this->field['title'] ) ) { $this->field['title'] = '' . wp_kses_post($this->field['title']) . '
    '; } if ( isset( $this->field['icon'] ) && ! empty( $this->field['icon'] ) && $this->field['icon'] !== true ) { echo '

    '; } if ( isset( $this->field['raw'] ) && ! empty( $this->field['raw'] ) ) { echo wp_kses_post($this->field['raw']); } if ( ! empty( $this->field['title'] ) || ! empty( $this->field['desc'] ) ) { echo '

    ' . wp_kses_post($this->field['title']) . wp_kses_post($this->field['desc']) . '

    '; } } echo '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-info-css', ReduxFramework::$_url . 'inc/fields/info/field_info.css', array(), time(), 'all' ); } } } }redux/ReduxCore/inc/fields/info/field_info.css000066600000004721152143340070015364 0ustar00.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border:1px solid;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0 !important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0 !important}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-notice-field .redux-info-desc,.wp-customizer .hasIcon.redux-info-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-notice-field .redux-info-icon,.wp-customizer .hasIcon.redux-info-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}redux/ReduxCore/inc/fields/info/field_info.scss000066600000005236152143340070015551 0ustar00.redux-info-field { min-height: 20px; padding: 8px 19px; margin: 10px 0; border: 1px solid; border-radius: 4px; border: 1px solid; position: relative; h1, h2, h3, h4, h5, h6 { border-bottom: 0 !important; } h3 { color: #777; } .redux-info-icon { display: inline-block; margin-right: 15px; i { font-size: 2em; } } .redux-info-desc { display: inline-block; vertical-align: top; } &.redux-normal { background-color: #eeeeee; border-color: #cccccc; color: #666666; i { color: #c5c5c5; } } &.redux-warning { background-color: #fbeba4; border-color: #d7c281; color: #958234; i { color: #dcca81; } } &.redux-success { background-color: #c4ee91; border-color: #71af5d; color: #4d7615; i { color: #a0ca6c; } } &.redux-critical { background-color: #fba1a3; border-color: #b84f5b; color: #981225; i { color: #dd767d; } } &.redux-info { background-color: #d3e4f4; border-color: #a9b6c2; color: #5c80a1; i { color: #afc6da; } } } .redux-notice-field { margin: 15px 0 0; background-color: #fff; border: 0; border-left: 4px solid #f3f3f3; -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1); box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1); padding: 1px 12px; h1, h2, h3, h4, h5, h6 { border-bottom: 0 !important; } p { margin: .5em 0; padding: 2px; } .redux-info-icon { display: inline-block; margin-right: 15px; i { font-size: 2em; } } .redux-info-desc { display: inline-block; vertical-align: top; } &.redux-info { border-left: 4px solid #0099d5; } &.redux-success { border-left: 4px solid #7ad03a; } &.redux-warning { border-left: 4px solid #fbeba4; } &.redux-critical { border-left: 4px solid #dd3d36; } } .redux-main .redux-field-container.redux-container-info { padding: 0; } .wp-customizer { .hasIcon.redux-notice-field, .hasIcon.redux-info-field { .redux-info-desc { display: block; margin-left: 43px; } .redux-info-icon { float: left; } } .redux-main .customize-control.customize-control-redux-info { border-bottom: 0; } } redux/ReduxCore/inc/fields/palette/field_palette.php000066600000007436152143340070016577 0ustar00. * * @package ReduxFramework * @subpackage Field_Palette * @author Kevin Provance (kprovance) * @version 3.5.4 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'ReduxFramework_palette' ) ) { class ReduxFramework_palette { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settingss * * @since 1.0.0 * @access public * @return void */ public function render() { if (empty($this->field['palettes'])) { echo 'No palettes have been set.'; return; } echo '
    '; foreach ( $this->field['palettes'] as $value => $colorSet ) { $checked = checked( $this->value , $value, false ); echo ''; echo ''; echo ''; } echo '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { $min = Redux_Functions::isMin(); wp_enqueue_script( 'redux-field-palette-js', ReduxFramework::$_url . 'inc/fields/palette/field_palette' . $min . '.js', array( 'jquery', 'redux-js', 'jquery-ui-button', 'jquery-ui-core' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-palette-css', ReduxFramework::$_url . 'inc/fields/palette/field_palette.css', array(), time(), 'all' ); } } public function output() { } } }redux/ReduxCore/inc/fields/palette/field_palette.css000066600000001766152143340070016600 0ustar00.redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:0;padding:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text{display:flex}.redux-container-palette label.ui-button.ui-widget .ui-button-text span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:transparent;-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget .ui-button-text span:hover{flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff,0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}redux/ReduxCore/inc/fields/palette/field_palette.css.map000066600000001467152143340070017352 0ustar00{ "version": 3, "mappings": "AACI,8BAAM;EACF,MAAM,EAAE,qBAAqB;EAC7B,YAAY,EAAE,sBAAsB;EACpC,aAAa,EAAE,CAAC;EAEhB,KAAK,EAAE,eAAe;EACtB,OAAO,EAAE,KAAK;EACd,kDAAsB;IAClB,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC;IAEV,kEAAgB;MAC5B;;2CAEqC;MACrB,OAAO,EAAE,IAAI;MAEb,uEAAK;QACD,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,WAAa;QACpB,kBAAkB,EAAE,qBAAqB;QACzC,eAAe,EAAE,qBAAqB;QACtC,cAAc,EAAE,qBAAqB;QACrC,aAAa,EAAE,qBAAqB;QACpC,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,CAAC;QACd,6EAAQ;UACJ,SAAS,EAAE,CAAC;UACZ,WAAW,EAAE,IAAI;UACjB,SAAS,EAAE,IAAI;UACf,SAAS,EAAE,IAAI;UACf,WAAW,EAAE,IAAI;UACjB,KAAK,EAAE,IAAI;UACX,WAAW,EAAE,0BAA0B;EAMvD,8CAAkB;IACd,MAAM,EAAE,yBAAyB;;AAMzC,yDAA2C;EACvC,aAAa,EAAE,GAAG", "sources": ["field_palette.scss"], "names": [], "file": "field_palette.css" }redux/ReduxCore/inc/fields/palette/field_palette.min.js000066600000001042152143340070017171 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.palette=redux.field_objects.palette||{},redux.field_objects.palette.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-palette:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".buttonset").each(function(){a(this).buttonset()}))})}}(jQuery);redux/ReduxCore/inc/fields/palette/field_palette.js000066600000003006152143340070016411 0ustar00/* Field Palette (color) */ /*global jQuery, document, redux_change, redux*/ (function( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.palette = redux.field_objects.palette || {}; redux.field_objects.palette.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-palette:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.buttonset' ).each( function() { $( this ).buttonset(); } ); // el.find('.redux-palette-set').click( // function(){ // console.log($(this).val()); // } // ) } ); }; })( jQuery );redux/ReduxCore/inc/fields/palette/field_palette.scss000066600000003253152143340070016754 0ustar00.redux-container-palette { label { border: 3px solid transparent; border-color: transparent !important; border-radius: 0; //border: 0; width: 100% !important; display: block; &.ui-button.ui-widget { width: 95%; background: none; padding: 0; .ui-button-text { /* border-top: 3px solid transparent; border-bottom: 3px solid transparent; margin-bottom: 5px;*/ display: flex; span { padding: 10px; flex-grow: 1; font-size: 0; line-height: 10px; color: rgba(0,0,0,0); -webkit-transition: all 200ms ease-in-out; -moz-transition: all 200ms ease-in-out; -ms-transition: all 200ms ease-in-out; -o-transition: all 200ms ease-in-out; transition: all 200ms ease-in-out; text-shadow: 0; &:hover { flex-grow: 3; font-weight: bold; min-width: 60px; font-size: 12px; line-height: 10px; color: #333; text-shadow: 0 0 8px #fff, 0 0 8px #fff; } } } } &.ui-state-active { border: 3px solid #333 !important; } } } .wp-customizer { .redux-main .redux-container-palette label { margin-bottom: 3px; } } redux/ReduxCore/inc/fields/password/field_password.php000066600000010656152143340070017205 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.1 */ function render() { if ( ! empty( $this->field['username'] ) && $this->field['username'] === true ) { $this->_render_combined_field(); } else { $this->_render_single_field(); } } /** * This will render a combined User/Password field * * @since ReduxFramework 3.0.9 * @example * * array( * 'id' => 'smtp_account', * 'type' => 'password', * 'username' => true, * 'title' => 'SMTP Account', * 'placeholder' => array('username' => 'Username') * ) * */ private function _render_combined_field() { $defaults = array( 'username' => '', 'password' => '', 'placeholder' => array( 'password' => __( 'Password', 'redux-framework' ), 'username' => __( 'Username', 'redux-framework' ) ) ); $this->value = wp_parse_args( $this->value, $defaults ); if ( ! empty( $this->field['placeholder'] ) ) { if ( is_array( $this->field['placeholder'] ) ) { if ( ! empty( $this->field['placeholder']['password'] ) ) { $this->value['placeholder']['password'] = $this->field['placeholder']['password']; } if ( ! empty( $this->field['placeholder']['username'] ) ) { $this->value['placeholder']['username'] = $this->field['placeholder']['username']; } } else { $this->value['placeholder']['password'] = $this->field['placeholder']; } } // Username field echo ' '; // Password field echo ''; } /** * This will render a single Password field * * @since ReduxFramework 3.0.9 * @example * * array( * 'id' => 'smtp_password', * 'type' => 'password', * 'title' => 'SMTP Password' * ) * */ private function _render_single_field() { echo ''; } } }redux/ReduxCore/inc/fields/text/field_text.scss000066600000001612152143340070015625 0ustar00.redux-container-text { label { display: block; position: relative; font-size: 12px !important; text-align: left; color: #999999; margin: 4px 0 2px 0 !important; cursor: default; top: 5px; width: 100px; } input { clear: left; } .input_wrapper { display: block; position: relative; padding: 0; width: 23%; max-width: 23%; min-width: 70px; float: left; clear: left; height: 57px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; box-sizing: border-box; vertical-align: baseline; } } .wp-customizer { .redux-container-text { .input_wrapper { width: 100%; max-width: 100%; height: auto; } } }redux/ReduxCore/inc/fields/text/field_text.css.map000066600000001276152143340070016224 0ustar00{ "version": 3, "mappings": "AACI,2BAAM;EACF,OAAO,EAAE,KAAK;EACd,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,eAAe;EAC1B,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,sBAAsB;EAC9B,MAAM,EAAE,OAAO;EACf,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK;AAGhB,2BAAM;EACF,KAAK,EAAE,IAAI;AAGf,oCAAe;EACX,OAAO,EAAE,KAAK;EACd,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,GAAG;EACV,SAAS,EAAE,GAAG;EACd,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,aAAa,EAAE,UAAU;EACzB,UAAU,EAAE,UAAU;EACtB,cAAc,EAAE,QAAQ;;AAMxB,mDAAe;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI", "sources": ["field_text.scss"], "names": [], "file": "field_text.css" }redux/ReduxCore/inc/fields/text/field_text.css000066600000001113152143340070015436 0ustar00.redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}redux/ReduxCore/inc/fields/text/field_text.php000066600000010555152143340070015447 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { if ( ! empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { if ( empty( $this->field['args'] ) ) { $this->field['args'] = array(); } $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); $this->field['class'] .= " hasOptions "; } if ( empty( $this->value ) && ! empty( $this->field['data'] ) && ! empty( $this->field['options'] ) ) { $this->value = $this->field['options']; } //if (isset($this->field['text_hint']) && is_array($this->field['text_hint'])) { $qtip_title = isset( $this->field['text_hint']['title'] ) ? 'qtip-title="' . $this->field['text_hint']['title'] . '" ' : ''; $qtip_text = isset( $this->field['text_hint']['content'] ) ? 'qtip-content="' . $this->field['text_hint']['content'] . '" ' : ''; //} $readonly = ( isset( $this->field['readonly'] ) && $this->field['readonly']) ? ' readonly="readonly"' : ''; $autocomplete = ( isset($this->field['autocomplete']) && $this->field['autocomplete'] == false) ? ' autocomplete="off"' : ''; if ( isset( $this->field['options'] ) && ! empty( $this->field['options'] ) ) { $placeholder = ''; if ( isset( $this->field['placeholder'] ) ) { $placeholder = $this->field['placeholder']; } foreach ( $this->field['options'] as $k => $v ) { if ( ! empty( $placeholder ) ) { $placeholder = ( is_array( $this->field['placeholder'] ) && isset( $this->field['placeholder'][ $k ] ) ) ? ' placeholder="' . esc_attr( $this->field['placeholder'][ $k ] ) . '" ' : ''; } echo '
    '; echo ' '; echo '
    '; echo '
    '; } //foreach } else { $placeholder = ( isset( $this->field['placeholder'] ) && ! is_array( $this->field['placeholder'] ) ) ? ' placeholder="' . esc_attr( $this->field['placeholder'] ) . '" ' : ''; echo ''; } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 3.0.0 */ function enqueue() { if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-text-css', ReduxFramework::$_url . 'inc/fields/text/field_text.css', array(), time(), 'all' ); } } } }redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.scss000066600000000516152143340070021645 0ustar00.redux-container-color_gradient { .colorGradient { display: inline-block; } .toLabel { padding-left: 18px; } } @media screen and (max-width: 660px) { .redux-container-color_gradient { .colorGradient { display: block; text-align: center !important; } } }redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js000066600000004425152143340070022073 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_gradient=redux.field_objects.color_gradient||{},a(document).ready(function(){}),redux.field_objects.color_gradient.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color_gradient:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux_change(a(this))}))})}}(jQuery);redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.js000066600000013224152143340070021306 0ustar00/* Field Color Gradient */ /*global jQuery, document, redux_change, redux*/ (function( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.color_gradient = redux.field_objects.color_gradient || {}; $( document ).ready( function() { // setTimeout(function () { // redux.field_objects.color.init(); // }, 1000); } ); redux.field_objects.color_gradient.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-color_gradient:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.redux-color-init' ).wpColorPicker( { change: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ) ); el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); }, clear: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ).parent().find( '.redux-color-init' ) ); } } ); el.find( '.redux-color' ).on( 'keyup', function() { var value = $( this ).val(); var color = colorValidate( this ); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { el.find( id + '-transparency' ).removeAttr( 'checked' ); if ( color && color !== $( this ).val() ) { $( this ).val( color ); } } } ); // Replace and validate field on blur el.find( '.redux-color' ).on( 'blur', function() { var value = $( this ).val(); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { if ( colorValidate( this ) === value ) { if ( value.indexOf( "#" ) !== 0 ) { $( this ).val( $( this ).data( 'oldcolor' ) ); } } el.find( id + '-transparency' ).removeAttr( 'checked' ); } } ); // Store the old valid color on keydown el.find( '.redux-color' ).on( 'keydown', function() { $( this ).data( 'oldkeypress', $( this ).val() ); } ); // When transparency checkbox is clicked el.find( '.color-transparency' ).on( 'click', function() { if ( $( this ).is( ":checked" ) ) { el.find( '.redux-saved-color' ).val( $( '#' + $( this ).data( 'id' ) ).val() ); el.find( '#' + $( this ).data( 'id' ) ).val( 'transparent' ); el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); } else { if ( el.find( '#' + $( this ).data( 'id' ) ).val() === 'transparent' ) { var prevColor = $( '.redux-saved-color' ).val(); if ( prevColor === '' ) { prevColor = $( '#' + $( this ).data( 'id' ) ).data( 'default-color' ); } el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( 'background-color', prevColor ); el.find( '#' + $( this ).data( 'id' ) ).val( prevColor ); } } redux_change( $( this ) ); } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css.map000066600000000375152143340070022241 0ustar00{ "version": 3, "mappings": "AACI,8CAAe;EACX,OAAO,EAAE,YAAY;AAEzB,wCAAS;EACL,YAAY,EAAE,IAAI;;AAI1B,oCAAqC;EAE7B,8CAAe;IACX,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iBAAiB", "sources": ["field_color_gradient.scss"], "names": [], "file": "field_color_gradient.css" }redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.php000066600000012770152143340070021466 0ustar00. * * @package ReduxFramework * @subpackage Field_Color_Gradient * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_color_gradient' ) ) { /** * Main ReduxFramework_color_gradient class * * @since 1.0.0 */ class ReduxFramework_color_gradient { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { // No errors please $defaults = array( 'from' => '', 'to' => '' ); $this->value = wp_parse_args( $this->value, $defaults ); echo '
    ' . __( 'From ', 'redux-framework' ) . ' '; echo ''; echo ''; if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { $tChecked = ""; if ( $this->value['from'] == "transparent" ) { $tChecked = ' checked="checked"'; } echo ''; } echo "
    "; echo '
    ' . __( 'To ', 'redux-framework' ) . ' '; if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { $tChecked = ""; if ( $this->value['to'] == "transparent" ) { $tChecked = ' checked="checked"'; } echo ''; } echo "
    "; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'redux-field-color-gradient-js', ReduxFramework::$_url . 'inc/fields/color_gradient/field_color_gradient' . Redux_Functions::isMin() . '.js', array( 'jquery', 'wp-color-picker', 'redux-js' ), time(), 'all' ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-color-picker-css' ); wp_enqueue_style( 'redux-field-color_gradient-css', ReduxFramework::$_url . 'inc/fields/color_gradient/field_color_gradient.css', array(), time(), 'all' ); } } } }redux/ReduxCore/inc/fields/color_gradient/field_color_gradient.css000066600000000376152143340070021466 0ustar00.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width:660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center !important}}redux/ReduxCore/inc/fields/border/field_border.css000066600000001220152143340070016217 0ustar00.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width:782px){.redux-container-border .field-border-input input{display:inline-block !important;width:100px !important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}redux/ReduxCore/inc/fields/border/field_border.php000066600000040203152143340070016222 0ustar00. * * @package Redux_Field * @subpackage Border * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_border' ) ) { class ReduxFramework_border { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 1.0.0 */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } //function private function stripAlphas($s) { // Regex is our friend. THERE ARE FOUR LIGHTS!! return preg_replace('/[^\d.-]/', '', $s); } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { // No errors please $defaults = array( 'top' => true, 'bottom' => true, 'all' => true, 'style' => true, 'color' => true, 'left' => true, 'right' => true, ); $this->field = wp_parse_args( $this->field, $defaults ); $defaults = array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', 'color' => '', 'style' => '', ); $this->value = wp_parse_args( $this->value, $defaults ); $value = array( 'top' => isset( $this->value['border-top'] ) ? filter_var( $this->value['border-top'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['top'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), 'right' => isset( $this->value['border-right'] ) ? filter_var( $this->value['border-right'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['right'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), 'bottom' => isset( $this->value['border-bottom'] ) ? filter_var( $this->value['border-bottom'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['bottom'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), 'left' => isset( $this->value['border-left'] ) ? filter_var( $this->value['border-left'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['left'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), 'color' => isset( $this->value['border-color'] ) ? $this->value['border-color'] : $this->value['color'], 'style' => isset( $this->value['border-style'] ) ? $this->value['border-style'] : $this->value['style'] ); if ( ( isset( $this->value['width'] ) || isset( $this->value['border-width'] ) ) ) { if ( isset( $this->value['border-width'] ) && ! empty( $this->value['border-width'] ) ) { $this->value['width'] = $this->value['border-width']; } $this->value['width'] = $this->stripAlphas($this->value['width']); $value['top'] = $this->value['width']; $value['right'] = $this->value['width']; $value['bottom'] = $this->value['width']; $value['left'] = $this->value['width']; } $this->value = $value; $defaults = array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ); $this->value = wp_parse_args( $this->value, $defaults ); if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } echo ''; if ( isset( $this->field['all'] ) && $this->field['all'] == true ) { echo '
    '; } echo ''; echo ''; echo ''; echo ''; if ( ! isset( $this->field['all'] ) || $this->field['all'] !== true ) { /** * Top * */ if ( $this->field['top'] === true ) { echo '
    '; } /** * Right * */ if ( $this->field['right'] === true ) { echo '
    '; } /** * Bottom * */ if ( $this->field['bottom'] === true ) { echo '
    '; } /** * Left * */ if ( $this->field['left'] === true ) { echo '
    '; } } /** * Border-style * */ if ( $this->field['style'] != false ) { $options = array( 'solid' => 'Solid', 'dashed' => 'Dashed', 'dotted' => 'Dotted', 'double' => "Double", 'none' => 'None' ); echo ''; } else { echo ''; } /** * Color * */ if ( $this->field['color'] != false ) { $default = isset( $this->field['default']['border-color'] ) ? $this->field['default']['border-color'] : ''; if ( empty( $default ) ) { $default = ( isset( $this->field['default']['color'] ) ) ? $this->field['default']['color'] : '#ffffff'; } echo ''; } else { echo ''; } } //function /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ function enqueue() { $min = Redux_Functions::isMin(); if (!wp_style_is ( 'select2-css' )) { wp_enqueue_style( 'select2-css' ); } if (!wp_style_is ( 'wp-color-picker' )) { wp_enqueue_style( 'wp-color-picker' ); } if (!wp_script_is ( 'redux-field-border-js' )) { wp_enqueue_script( 'redux-field-border-js', ReduxFramework::$_url . 'inc/fields/border/field_border' . $min . '.js', array( 'jquery', 'select2-js', 'wp-color-picker', 'redux-js' ), time(), true ); } if ($this->parent->args['dev_mode']) { if (!wp_style_is ( 'redux-color-picker-css' )) { wp_enqueue_style( 'redux-color-picker-css' ); } if (!wp_style_is ( 'redux-field-border-css' )) { wp_enqueue_style( 'redux-field-border-css', ReduxFramework::$_url . 'inc/fields/border/field_border.css', array(), time(), 'all' ); } } } //function public function output() { if ( isset( $this->field['all'] ) && true == $this->field['all'] ) { $borderWidth = isset( $this->value['border-width'] ) ? $this->value['border-width'] : '0px'; $val = isset( $this->value['border-top'] ) ? $this->value['border-top'] : $borderWidth; $this->value['border-top'] = $val; $this->value['border-bottom'] = $val; $this->value['border-left'] = $val; $this->value['border-right'] = $val; } $cleanValue = array( 'color' => ! empty( $this->value['border-color'] ) ? $this->value['border-color'] : '', 'style' => ! empty( $this->value['border-style'] ) ? $this->value['border-style'] : '' ); $borderWidth = ''; if ( isset( $this->value['border-width'] ) ) { $borderWidth = $this->value['border-width']; } $this->field['top'] = isset( $this->field['top'] ) ? $this->field['top'] : true; $this->field['bottom'] = isset( $this->field['bottom'] ) ? $this->field['bottom'] : true; $this->field['left'] = isset( $this->field['left'] ) ? $this->field['left'] : true; $this->field['right'] = isset( $this->field['right'] ) ? $this->field['right'] : true; if ( $this->field['top'] === true ) { $cleanValue['top'] = ! empty( $this->value['border-top'] ) ? $this->value['border-top'] : $borderWidth; } if ( $this->field['bottom'] == true ) { $cleanValue['bottom'] = ! empty( $this->value['border-bottom'] ) ? $this->value['border-bottom'] : $borderWidth; } if ( $this->field['left'] === true ) { $cleanValue['left'] = ! empty( $this->value['border-left'] ) ? $this->value['border-left'] : $borderWidth; } if ( $this->field['right'] === true ) { $cleanValue['right'] = ! empty( $this->value['border-right'] ) ? $this->value['border-right'] : $borderWidth; } $style = ""; //absolute, padding, margin if ( ! isset( $this->field['all'] ) || $this->field['all'] != true ) { foreach ( $cleanValue as $key => $value ) { if ( $key == "color" || $key == "style" ) { continue; } if (!empty($value)) { $style .= 'border-' . $key . ':' . $value . ' ' . $cleanValue['style'] . ' ' . $cleanValue['color'] . ';'; } } } else { if (!empty($cleanValue['top'])) { $style .= 'border:' . $cleanValue['top'] . ' ' . $cleanValue['style'] . ' ' . $cleanValue['color'] . ';'; } } if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $keys = implode( ",", $this->field['output'] ); if (!empty($style)) { $this->parent->outputCSS .= $keys . "{" . $style . '}'; } } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $keys = implode( ",", $this->field['compiler'] ); if (!empty($style)) { $this->parent->compilerCSS .= $keys . "{" . $style . '}'; } } } } //class }redux/ReduxCore/inc/fields/border/field_border.min.js000066600000004132152143340070016632 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.border=redux.field_objects.border||{},redux.field_objects.border.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-border:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),b.find(".redux-border-top, .redux-border-right, .redux-border-bottom, .redux-border-left, .redux-border-all").numeric({allowMinus:!1});var d={triggerChange:!0,allowClear:!0},e=b.find(".redux-container-border").find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(".redux-border-style").select2(d),b.find(".redux-border-input").on("change",function(){var b=a(this).parents(".redux-field:first").find(".field-units").val();0!==a(this).parents(".redux-field:first").find(".redux-border-units").length&&(b=a(this).parents(".redux-field:first").find(".redux-border-units option:selected").val());var c=a(this).val();"undefined"!=typeof b&&c&&(c+=b),a(this).hasClass("redux-border-all")?a(this).parents(".redux-field:first").find(".redux-border-value").each(function(){a(this).val(c)}):a("#"+a(this).attr("rel")).val(c)}),b.find(".redux-border-units").on("change",function(){a(this).parents(".redux-field:first").find(".redux-border-input").change()}),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("keyup",function(){var b=colorValidate(this);b&&b!==a(this).val()&&a(this).val(b)}),b.find(".redux-color").on("blur",function(){var b=a(this).val();colorValidate(this)===b&&0!==b.indexOf("#")&&a(this).val(a(this).data("oldcolor"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())})}})}}(jQuery);redux/ReduxCore/inc/fields/border/field_border.css.map000066600000001044152143340070016777 0ustar00{ "version": 3, "mappings": "AACI,0CAAmB;EACf,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,YAAY,EAAE,IAAI;AAGtB,uCAAgB;EACZ,KAAK,EAAE,IAAI;EAMX,KAAK,EAAE,OAAO;EALd,8CAAO;IACH,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;AAMnB,2CAAoB;EAChB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;AAGtB,4CAAqB;EACjB,UAAU,EAAE,GAAG;;AAIvB,oCAAqC;EAGzB,iDAAM;IACF,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,gBAAgB;EAG3B,mDAAQ;IACJ,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;EAIxB,uCAAgB;IACZ,UAAU,EAAE,GAAG", "sources": ["field_border.scss"], "names": [], "file": "field_border.css" }redux/ReduxCore/inc/fields/border/field_border.js000066600000012036152143340070016052 0ustar00/* Field Border (border) */ /*global redux_change, wp, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.border = redux.field_objects.border || {}; redux.field_objects.border.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-border:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( ".redux-border-top, .redux-border-right, .redux-border-bottom, .redux-border-left, .redux-border-all" ).numeric( { allowMinus: false } ); var default_params = { triggerChange: true, allowClear: true }; var select2_handle = el.find( '.redux-container-border' ).find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } el.find( ".redux-border-style" ).select2( default_params ); el.find( '.redux-border-input' ).on( 'change', function() { var units = $( this ).parents( '.redux-field:first' ).find( '.field-units' ).val(); if ( $( this ).parents( '.redux-field:first' ).find( '.redux-border-units' ).length !== 0 ) { units = $( this ).parents( '.redux-field:first' ).find( '.redux-border-units option:selected' ).val(); } var value = $( this ).val(); if ( typeof units !== 'undefined' && value ) { value += units; } if ( $( this ).hasClass( 'redux-border-all' ) ) { $( this ).parents( '.redux-field:first' ).find( '.redux-border-value' ).each( function() { $( this ).val( value ); } ); } else { $( '#' + $( this ).attr( 'rel' ) ).val( value ); } } ); el.find( '.redux-border-units' ).on( 'change', function() { $( this ).parents( '.redux-field:first' ).find( '.redux-border-input' ).change(); } ); el.find( '.redux-color-init' ).wpColorPicker( { change: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ) ); el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); }, clear: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ).parent().find( '.redux-color-init' ) ); } } ); el.find( '.redux-color' ).on( 'keyup', function() { var color = colorValidate( this ); if ( color && color !== $( this ).val() ) { $( this ).val( color ); } } ); // Replace and validate field on blur el.find( '.redux-color' ).on( 'blur', function() { var value = $( this ).val(); if ( colorValidate( this ) === value ) { if ( value.indexOf( "#" ) !== 0 ) { $( this ).val( $( this ).data( 'oldcolor' ) ); } } } ); // Store the old valid color on keydown el.find( '.redux-color' ).on( 'keydown', function() { $( this ).data( 'oldkeypress', $( this ).val() ); } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/border/field_border.scss000066600000001557152143340070016417 0ustar00.redux-container-border { .select2-container { float: left; display: block; margin-right: 10px; } .select_wrapper { float: left; select { width: 80px; float: left; } width: inherit; } .field-border-input { margin-right: 10px; margin-bottom: 7px; } .wp-picker-container { margin-top: 2px; } } @media screen and (max-width: 782px) { .redux-container-border { .field-border-input { input { display: inline-block !important; width: 100px !important; } .add-on { padding: 7px 4px; font-size: 16px; line-height: 1.5; } } .select_wrapper { margin-top: 6px; } } } redux/ReduxCore/inc/fields/slides/field_slides.min.js000066600000005646152143340070016661 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.slides=redux.field_objects.slides||{},a(document).ready(function(){}),redux.field_objects.slides.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-slides:visible")),a(b).each(function(){var b=a(this);redux.field_objects.media.init(b);var c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||(c.hasClass("redux-container-slides")&&c.addClass("redux-field-init"),c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-slides-remove").live("click",function(){redux_change(a(this)),a(this).parent().siblings().find('input[type="text"]').val(""),a(this).parent().siblings().find("textarea").val(""),a(this).parent().siblings().find('input[type="hidden"]').val("");var b=a(this).parents(".redux-container-slides:first").find(".redux-slides-accordion-group").length;if(b>1)a(this).parents(".redux-slides-accordion-group:first").slideUp("medium",function(){a(this).remove()});else{var c=a(this).parent(".redux-slides-accordion").data("new-content-title");a(this).parents(".redux-slides-accordion-group:first").find(".remove-image").click(),a(this).parents(".redux-container-slides:first").find(".redux-slides-accordion-group:last").find(".redux-slides-header").text(c)}}),b.find(".redux-slides-add").off("click").click(function(){var b=a(this).prev().find(".redux-slides-accordion-group:last").clone(!0),c=a(b).find(".slide-title").attr("name").match(/[0-9]+(?!.*[0-9])/),d=1*c+1;a(b).find('input[type="text"], input[type="hidden"], textarea').each(function(){a(this).attr("name",jQuery(this).attr("name").replace(/[0-9]+(?!.*[0-9])/,d)).attr("id",a(this).attr("id").replace(/[0-9]+(?!.*[0-9])/,d)),a(this).val(""),a(this).hasClass("slide-sort")&&a(this).val(d)});var e=a(this).prev().data("new-content-title");a(b).find(".screenshot").removeAttr("style"),a(b).find(".screenshot").addClass("hide"),a(b).find(".screenshot a").attr("href",""),a(b).find(".remove-image").addClass("hide"),a(b).find(".redux-slides-image").attr("src","").removeAttr("id"),a(b).find("h3").text("").append(''+e+''),a(this).prev().append(b)}),b.find(".slide-title").keyup(function(b){var c=b.target.value;a(this).parents().eq(3).find(".redux-slides-header").text(c)}),b.find(".redux-slides-accordion").accordion({header:"> div > fieldset > h3",collapsible:!0,active:!1,heightStyle:"content",icons:{header:"ui-icon-plus",activeHeader:"ui-icon-minus"}}).sortable({axis:"y",handle:"h3",connectWith:".redux-slides-accordion",start:function(a,b){b.placeholder.height(b.item.height()),b.placeholder.width(b.item.width())},placeholder:"ui-state-highlight",stop:function(b,c){c.item.children("h3").triggerHandler("focusout");var d=a("input.slide-sort");d.each(function(b){a(this).val(b)})}})))})}}(jQuery);redux/ReduxCore/inc/fields/slides/field_slides.js000066600000015126152143340070016071 0ustar00/*global redux_change, wp, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.slides = redux.field_objects.slides || {}; $( document ).ready( function() { //redux.field_objects.slides.init(); } ); redux.field_objects.slides.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-slides:visible' ); } $( selector ).each( function() { var el = $( this ); redux.field_objects.media.init(el); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-container-slides' ) ) { parent.addClass( 'redux-field-init' ); } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.redux-slides-remove' ).live( 'click', function() { redux_change( $( this ) ); $( this ).parent().siblings().find( 'input[type="text"]' ).val( '' ); $( this ).parent().siblings().find( 'textarea' ).val( '' ); $( this ).parent().siblings().find( 'input[type="hidden"]' ).val( '' ); var slideCount = $( this ).parents( '.redux-container-slides:first' ).find( '.redux-slides-accordion-group' ).length; if ( slideCount > 1 ) { $( this ).parents( '.redux-slides-accordion-group:first' ).slideUp( 'medium', function() { $( this ).remove(); } ); } else { var content_new_title = $( this ).parent( '.redux-slides-accordion' ).data( 'new-content-title' ); $( this ).parents( '.redux-slides-accordion-group:first' ).find( '.remove-image' ).click(); $( this ).parents( '.redux-container-slides:first' ).find( '.redux-slides-accordion-group:last' ).find( '.redux-slides-header' ).text( content_new_title ); } } ); //el.find( '.redux-slides-add' ).click( el.find( '.redux-slides-add' ).off('click').click( function() { var newSlide = $( this ).prev().find( '.redux-slides-accordion-group:last' ).clone( true ); var slideCount = $( newSlide ).find( '.slide-title' ).attr( "name" ).match( /[0-9]+(?!.*[0-9])/ ); var slideCount1 = slideCount * 1 + 1; $( newSlide ).find( 'input[type="text"], input[type="hidden"], textarea' ).each( function() { $( this ).attr( "name", jQuery( this ).attr( "name" ).replace( /[0-9]+(?!.*[0-9])/, slideCount1 ) ).attr( "id", $( this ).attr( "id" ).replace( /[0-9]+(?!.*[0-9])/, slideCount1 ) ); $( this ).val( '' ); if ( $( this ).hasClass( 'slide-sort' ) ) { $( this ).val( slideCount1 ); } } ); var content_new_title = $( this ).prev().data( 'new-content-title' ); $( newSlide ).find( '.screenshot' ).removeAttr( 'style' ); $( newSlide ).find( '.screenshot' ).addClass( 'hide' ); $( newSlide ).find( '.screenshot a' ).attr( 'href', '' ); $( newSlide ).find( '.remove-image' ).addClass( 'hide' ); $( newSlide ).find( '.redux-slides-image' ).attr( 'src', '' ).removeAttr( 'id' ); $( newSlide ).find( 'h3' ).text( '' ).append( '' + content_new_title + '' ); $( this ).prev().append( newSlide ); } ); el.find( '.slide-title' ).keyup( function( event ) { var newTitle = event.target.value; $( this ).parents().eq( 3 ).find( '.redux-slides-header' ).text( newTitle ); } ); el.find( ".redux-slides-accordion" ) .accordion( { header: "> div > fieldset > h3", collapsible: true, active: false, heightStyle: "content", icons: { "header": "ui-icon-plus", "activeHeader": "ui-icon-minus" } } ) .sortable( { axis: "y", handle: "h3", connectWith: ".redux-slides-accordion", start: function( e, ui ) { ui.placeholder.height( ui.item.height() ); ui.placeholder.width( ui.item.width() ); }, placeholder: "ui-state-highlight", stop: function( event, ui ) { // IE doesn't register the blur when sorting // so trigger focusout handlers to remove .ui-state-focus ui.item.children( "h3" ).triggerHandler( "focusout" ); var inputs = $( 'input.slide-sort' ); inputs.each( function( idx ) { $( this ).val( idx ); } ); } } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/slides/field_slides.css.map000066600000002560152143340070017017 0ustar00{ "version": 3, "mappings": "AACI,6DAAsC;EAClC,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,IAAI;AAGf,4CAAqB;EACjB,aAAa,EAAE,CAAC;AAGpB;mCACY;EACR,KAAK,EAAE,IAAI;AAGf,qDAA8B;EAC1B,MAAM,EAAE,4BAA4B;EACpC,aAAa,EAAE,cAAc;EAC7B,UAAU,EAAE,cAAc;EAC1B,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,OAAO;EACnB,OAAO,EAAE,GAAG;EAEZ,wDAAG;IACC,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,eAAe;IACvB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,eAAe;IAC5B,gBAAgB,EAAE,OAAO;IACzB,gBAAgB,EAAE,0CAA0C;IAC5D,gBAAgB,EAAE,2CAA2C;IAC7D,gBAAgB,EAAE,yCAAyC;IAC3D,gBAAgB,EAAE,2EAA2E;IAC7F,gBAAgB,EAAE,8CAA8C;IAChE,gBAAgB,EAAE,sCAAsC;IACxD,QAAQ,EAAE,MAAM;IAChB,qBAAqB,EAAE,GAAG;IAC1B,kBAAkB,EAAE,GAAG;IACvB,aAAa,EAAE,GAAG;IAClB,eAAe,EAAE,kBAAkB;IACnC,kBAAkB,EAAE,kBAAkB;IACtC,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE,MAAM;AAI1B,mEAA4C;EACxC,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,GAAG;EACZ,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI;EACnB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,GAAG;EACvB,oBAAoB,EAAE,GAAG;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG;AAGtB,yCAAkB;EACd,KAAK,EAAE,KAAK;EACZ,YAAY,EAAE,GAAG;EACjB,OAAO,EAAE,KAAK;EACd,aAAa,EAAE,IAAI;AAGvB,4CAAqB;EACjB,KAAK,EAAE,kBAAkB;EACzB,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,GAAG;AAGnB,4CAAqB;EACjB,WAAW,EAAE,IAAI;AAGrB,gDAAyB;EACrB,aAAa,EAAE,IAAI;AAEvB,6BAAM;EACF,KAAK,EAAE,eAAe;;AAM1B,0EAA4D;EACxD,OAAO,EAAE,IAAI", "sources": ["field_slides.scss"], "names": [], "file": "field_slides.css" }redux/ReduxCore/inc/fields/slides/field_slides.scss000066600000004635152143340070016433 0ustar00.redux-container-slides { .redux-slides-list .select2-container { margin-bottom: 10px; width: 100%; } .ui-accordion-header { margin-bottom: 0; } .full-text, .large-text { width: 100%; } .redux-slides-accordion-group { border: 1px solid #dfdfdf !important; border-radius: 3px !important; margin-top: 0px !important; margin-bottom: 10px; background: #f9f9f9; padding: 5px; h3 { border: 1px solid #dfdfdf; cursor: move !important; font-weight: bold; padding: 0 10px !important; height: 40px; line-height: 40px !important; background-color: #f1f1f1; background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); background-image: -o-linear-gradient(top, #f9f9f9, #ececec); background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); background-image: linear-gradient(top, #f9f9f9, #ececec); overflow: hidden; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -moz-box-shadow: inset 0 1px 0 #fff; -webkit-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; text-align: center; } } #redux-slides-accordion .redux-slides-image { height: 250px; padding: 5px; margin-top: 10px; margin-bottom: 10px; border: 1px solid #e3e3e3; background: #f7f7f7; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .redux-slides-add { float: right; margin-right: 10%; display: block; margin-bottom: 10px; } .redux-slides-remove { color: #ef521d !important; float: right; margin-top: 5px; } .redux-slides-header { font-weight: bold; } .redux_slides_add_remove { margin-bottom: 10px; } input { width: 100% !important; } } .wp-customizer { .redux-container-slides .ui-accordion .ui-accordion-content { padding: 10px; } } redux/ReduxCore/inc/fields/slides/field_slides.css000066600000003647152143340070016252 0ustar00.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf !important;border-radius:3px !important;margin-top:0 !important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move !important;font-weight:bold;padding:0 10px !important;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d !important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:bold}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100% !important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}redux/ReduxCore/inc/fields/slides/field_slides.php000066600000036765152143340070016260 0ustar00. * * @package ReduxFramework * @subpackage Field_slides * @author Luciano "WebCaos" Ubertini * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @version 3.0.0 */ // Exit if accessed directly if ( !defined ( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( !class_exists ( 'ReduxFramework_slides' ) ) { /** * Main ReduxFramework_slides class * * @since 1.0.0 */ class ReduxFramework_slides { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct ( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render () { $defaults = array( 'show' => array( 'title' => true, 'description' => true, 'url' => true, ), 'content_title' => __ ( 'Slide', 'redux-framework' ) ); $this->field = wp_parse_args ( $this->field, $defaults ); echo '
    '; $x = 0; $multi = ( isset ( $this->field[ 'multi' ] ) && $this->field[ 'multi' ] ) ? ' multiple="multiple"' : ""; if ( isset ( $this->value ) && is_array ( $this->value ) && !empty ( $this->value ) ) { $slides = $this->value; foreach ( $slides as $slide ) { if ( empty ( $slide ) ) { continue; } $defaults = array( 'title' => '', 'description' => '', 'sort' => '', 'url' => '', 'image' => '', 'thumb' => '', 'attachment_id' => '', 'height' => '', 'width' => '', 'select' => array(), ); $slide = wp_parse_args ( $slide, $defaults ); if ( empty ( $slide[ 'thumb' ] ) && !empty ( $slide[ 'attachment_id' ] ) ) { $img = wp_get_attachment_image_src ( $slide[ 'attachment_id' ], 'full' ); $slide[ 'image' ] = $img[ 0 ]; $slide[ 'width' ] = $img[ 1 ]; $slide[ 'height' ] = $img[ 2 ]; } echo '

    ' . $slide[ 'title' ] . '

    '; $hide = ''; if ( empty ( $slide[ 'image' ] ) ) { $hide = ' hide'; } echo '
    '; echo ''; echo ''; echo ''; echo '
    '; echo '
    '; echo '' . __ ( 'Upload', 'redux-framework' ) . ''; $hide = ''; if ( empty ( $slide[ 'image' ] ) || $slide[ 'image' ] == '' ) { $hide = ' hide'; } echo '' . __ ( 'Remove', 'redux-framework' ) . ''; echo '
    ' . "\n"; echo '
      '; if ( $this->field[ 'show' ][ 'title' ] ) { $title_type = "text"; } else { $title_type = "hidden"; } $placeholder = ( isset ( $this->field[ 'placeholder' ][ 'title' ] ) ) ? esc_attr ( $this->field[ 'placeholder' ][ 'title' ] ) : __ ( 'Title', 'redux-framework' ); echo '
    • '; if ( $this->field[ 'show' ][ 'description' ] ) { $placeholder = ( isset ( $this->field[ 'placeholder' ][ 'description' ] ) ) ? esc_attr ( $this->field[ 'placeholder' ][ 'description' ] ) : __ ( 'Description', 'redux-framework' ); echo '
    • '; } $placeholder = ( isset ( $this->field[ 'placeholder' ][ 'url' ] ) ) ? esc_attr ( $this->field[ 'placeholder' ][ 'url' ] ) : __ ( 'URL', 'redux-framework' ); if ( $this->field[ 'show' ][ 'url' ] ) { $url_type = "text"; } else { $url_type = "hidden"; } echo '
    • '; echo '
    • '; echo '
    • '; echo ''; echo ''; echo ''; echo '
    • '; echo '
    • ' . __ ( 'Delete', 'redux-framework' ) . '
    • '; echo '
    '; $x ++; } } if ( $x == 0 ) { echo '

    ' . esc_attr ( sprintf ( __ ( 'New %s', 'redux-framework' ), $this->field[ 'content_title' ] ) ) . '

    '; $hide = ' hide'; echo '
    '; echo ''; echo ''; echo ''; echo '
    '; //Upload controls DIV echo '
    '; //If the user has WP3.5+ show upload/remove button echo '' . __ ( 'Upload', 'redux-framework' ) . ''; echo '' . __ ( 'Remove', 'redux-framework' ) . ''; echo '
    ' . "\n"; echo '
      '; if ( $this->field[ 'show' ][ 'title' ] ) { $title_type = "text"; } else { $title_type = "hidden"; } $placeholder = ( isset ( $this->field[ 'placeholder' ][ 'title' ] ) ) ? esc_attr ( $this->field[ 'placeholder' ][ 'title' ] ) : __ ( 'Title', 'redux-framework' ); echo '
    • '; if ( $this->field[ 'show' ][ 'description' ] ) { $placeholder = ( isset ( $this->field[ 'placeholder' ][ 'description' ] ) ) ? esc_attr ( $this->field[ 'placeholder' ][ 'description' ] ) : __ ( 'Description', 'redux-framework' ); echo '
    • '; } $placeholder = ( isset ( $this->field[ 'placeholder' ][ 'url' ] ) ) ? esc_attr ( $this->field[ 'placeholder' ][ 'url' ] ) : __ ( 'URL', 'redux-framework' ); if ( $this->field[ 'show' ][ 'url' ] ) { $url_type = "text"; } else { $url_type = "hidden"; } echo '
    • '; echo '
    • '; echo '
    • '; echo ''; echo ''; echo '
    • '; echo ''; echo '
    • ' . __ ( 'Delete', 'redux-framework' ) . '
    • '; echo '
    '; } echo '
    ' . sprintf ( __ ( 'Add %s', 'redux-framework' ), $this->field[ 'content_title' ] ) . '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue () { if ( function_exists( 'wp_enqueue_media' ) ) { wp_enqueue_media(); } else { wp_enqueue_script( 'media-upload' ); } if ($this->parent->args['dev_mode']){ wp_enqueue_style ('redux-field-media-css'); wp_enqueue_style ( 'redux-field-slides-css', ReduxFramework::$_url . 'inc/fields/slides/field_slides.css', array(), time (), 'all' ); } wp_enqueue_script( 'redux-field-media-js', ReduxFramework::$_url . 'assets/js/media/media' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), time(), true ); wp_enqueue_script ( 'redux-field-slides-js', ReduxFramework::$_url . 'inc/fields/slides/field_slides' . Redux_Functions::isMin () . '.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-accordion', 'jquery-ui-sortable', 'redux-field-media-js' ), time (), true ); } } }redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js000066600000001754152143340070020303 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.ace_editor=redux.field_objects.ace_editor||{},redux.field_objects.ace_editor.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-ace_editor:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".ace-editor").each(function(c,d){var e=d,f=JSON.parse(a(this).parent().find(".localize_data").val()),g=a(d).attr("data-editor"),h=ace.edit(g);h.setTheme("ace/theme/"+jQuery(d).attr("data-theme")),h.getSession().setMode("ace/mode/"+a(d).attr("data-mode"));var i="";i=b.hasClass("redux-field-container")?b.attr("data-id"):b.parents(".redux-field-container:first").attr("data-id"),h.setOptions(f),h.on("change",function(b){a("#"+e.id).val(h.getSession().getValue()),redux_change(a(d)),h.resize()})}))})}}(jQuery);redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.php000066600000012404152143340070017666 0ustar00. * * @package Redux_Field * @subpackage ACE_Editor * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_ace_editor' ) ) { class ReduxFramework_ace_editor { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since ReduxFramework 1.0.0 */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; if ( is_array( $this->value ) ) { $this->value = ''; } else { $this->value = trim( $this->value ); } if ( ! empty( $this->field['options'] ) ) { $this->field['args'] = $this->field['options']; unset( $this->field['options'] ); } } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { if ( ! isset( $this->field['mode'] ) ) { $this->field['mode'] = 'javascript'; } if ( ! isset( $this->field['theme'] ) ) { $this->field['theme'] = 'monokai'; } $params = array( 'minLines' => 10, 'maxLines' => 30, ); if ( isset( $this->field['args'] ) && ! empty( $this->field['args'] ) && is_array( $this->field['args'] ) ) { $params = wp_parse_args( $this->field['args'], $params ); } ?>
    value ); ?>
    parent->args['dev_mode'] ) { if ( ! wp_style_is( 'redux-field-ace-editor-css' ) ) { wp_enqueue_style( 'redux-field-ace-editor-css', ReduxFramework::$_url . 'inc/fields/ace_editor/field_ace_editor.css', array(), time(), 'all' ); } } if ( ! wp_script_is( 'ace-editor-js' ) ) { Redux_CDN::enqueue_script( 'ace-editor-js', '//cdn.jsdelivr.net/ace/1.1.9/min/ace.js', array( 'jquery' ), '1.1.9', true ); } if ( ! wp_script_is( 'redux-field-ace-editor-js' ) ) { wp_enqueue_script( 'redux-field-ace-editor-js', ReduxFramework::$_url . 'inc/fields/ace_editor/field_ace_editor' . Redux_Functions::isMin() . '.js', array( 'jquery', 'ace-editor-js', 'redux-js' ), time(), true ); } } } }redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css.map000066600000000423152143340070020441 0ustar00{ "version": 3, "mappings": "AACI,wCAAa;EACT,QAAQ,EAAE,MAAM;AAGpB,uCAAY;EACR,MAAM,EAAE,KAAK;EACb,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;AAGtB,uCAAY;EACR,OAAO,EAAE,YAAY", "sources": ["field_ace_editor.scss"], "names": [], "file": "field_ace_editor.css" }redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.css000066600000000356152143340070017672 0ustar00.redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1 !important}redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.js000066600000004575152143340070017525 0ustar00/*global jQuery, document, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.ace_editor = redux.field_objects.ace_editor || {}; redux.field_objects.ace_editor.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-ace_editor:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.ace-editor' ).each( function( index, element ) { var area = element; var params = JSON.parse( $( this ).parent().find( '.localize_data' ).val() ); var editor = $( element ).attr( 'data-editor' ); var aceeditor = ace.edit( editor ); aceeditor.setTheme( "ace/theme/" + jQuery( element ).attr( 'data-theme' ) ); aceeditor.getSession().setMode( "ace/mode/" + $( element ).attr( 'data-mode' ) ); var parent = ''; if ( el.hasClass( 'redux-field-container' ) ) { parent = el.attr( 'data-id' ); } else { parent = el.parents( '.redux-field-container:first' ).attr( 'data-id' ); } aceeditor.setOptions( params ); aceeditor.on( 'change', function( e ) { $( '#' + area.id ).val( aceeditor.getSession().getValue() ); redux_change( $( element ) ); aceeditor.resize(); } ); } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/ace_editor/field_ace_editor.scss000066600000000445152143340070020054 0ustar00.redux-container-ace_editor { .ace-wrapper { position: static; } .ace_editor { height: 200px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .ace_gutter { z-index: 1 !important; } } redux/ReduxCore/inc/fields/background/field_background.css.map000066600000001115152143340070020502 0ustar00{ "version": 3, "mappings": "AAEQ;;;;;;;;;;;uEAWgC;EAC5B,KAAK,EAAC,gBAAgB;EACtB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;AAItB,2DAAoB;EAChB,OAAO,EAAC,KAAK;EACb,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,UAAU;EAClB,MAAM,EAAC,oBAAoB;AAG/B,0DAAmB;EACf,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;AAGvB,4DAAqB;EACjB,aAAa,EAAE,IAAI;AAGvB,+CAAQ;EACJ,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;AAKtB,yDAAsB;EAClB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAC,GAAG;EACd,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,CAAC;;AAOpB,w2BAAqW;EACjW,KAAK,EAAE,eAAe", "sources": ["field_background.scss"], "names": [], "file": "field_background.css" }redux/ReduxCore/inc/fields/background/field_background.scss000066600000003320152143340070020111 0ustar00.redux-main { .redux-container-background { .redux-background-position, .redux-background-position select, .redux-background-attachment, .redux-background-attachment select, .redux-background-clip, .redux-background-clip select, .redux-background-origin, .redux-background-origin select, .redux-background-size, .redux-background-size select, .redux-background-repeat, .redux-background-repeat select { width:200px !important; margin-right: 10px; margin-bottom: 7px; } .background-preview { display:block; width: 100%; margin: 5px 0 10px; border:1px dotted lightgray; } .select2-container { margin-right: 10px; margin-bottom: 10px; } .wp-picker-container { margin-bottom: 10px; } .upload { width: 100%; margin-bottom: 8px; } } .redux-container-select { li.ui-state-highlight { height: 20px; margin-top:2px; margin-left: 5px; width: 64px; margin-bottom: 0; } } } .wp-customizer { .redux-container-background { .redux-background-position, .redux-background-position select, .redux-background-attachment, .redux-background-attachment select, .redux-background-clip, .redux-background-clip select, .redux-background-origin, .redux-background-origin select, .redux-background-size, .redux-background-size select, .redux-background-repeat, .redux-background-repeat select { width: 100% !important; } } } redux/ReduxCore/inc/fields/background/field_background.min.js000066600000012615152143340070020343 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.background=redux.field_objects.background||{},redux.field_objects.background.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-background:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),b.find(".redux-remove-background").unbind("click").on("click",function(b){return b.preventDefault(),redux.field_objects.background.removeImage(a(this).parents(".redux-container-background:first")),!1}),b.find(".redux-background-upload").unbind().on("click",function(b){redux.field_objects.background.addImage(b,a(this).parents(".redux-container-background:first"))}),b.find(".redux-background-input").on("change",function(){redux.field_objects.background.preview(a(this))}),b.find(".redux-color").wpColorPicker({change:function(b,c){a(this).val(c.color.toString()),redux_change(a(this)),a("#"+b.target.id+"-transparency").removeAttr("checked"),redux.field_objects.background.preview(a(this))},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init")),redux.field_objects.background.preview(a(this))}}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("focus",function(){a(this).data("oldcolor",a(this).val())}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".color-transparency").on("click",function(){if(a(this).is(":checked"))b.find(".redux-saved-color").val(a("#"+a(this).data("id")).val()),b.find("#"+a(this).data("id")).val("transparent"),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent");else if("transparent"===b.find("#"+a(this).data("id")).val()){var c=a(".redux-saved-color").val();""===c&&(c=a("#"+a(this).data("id")).data("default-color")),b.find("#"+a(this).data("id")).parent().parent().find(".wp-color-result").css("background-color",c),b.find("#"+a(this).data("id")).val(c)}redux.field_objects.background.preview(a(this)),redux_change(a(this))});var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(" .redux-background-repeat, .redux-background-clip, .redux-background-origin, .redux-background-size, .redux-background-attachment, .redux-background-position").select2(d)}})},redux.field_objects.background.preview=function(b){var c=a(b).parents(".redux-container-background:first"),d=a(c).find(".background-preview");if(d){var e=!0,f="height:"+d.height()+"px;";a(c).find(".redux-background-input").each(function(){var b=a(this).serializeArray();b=b[0],b&&-1!=b.name.indexOf("[background-")&&""!==b.value&&(e=!1,b.name=b.name.split("[background-"),b.name="background-"+b.name[1].replace("]",""),f+="background-image"==b.name?b.name+':url("'+b.value+'");':b.name+":"+b.value+";")}),e?d.slideUp():d.attr("style",f).fadeIn()}},redux.field_objects.background.addImage=function(b,c){b.preventDefault();var d,e=a(this);return d?void d.open():(d=wp.media({multiple:!1,library:{},title:e.data("choose"),button:{text:e.data("update")}}),d.on("select",function(){var b=d.state().get("selection").first();if(d.close(),"image"===b.attributes.type){c.find(".upload").val(b.attributes.url),c.find(".upload-id").val(b.attributes.id),c.find(".upload-height").val(b.attributes.height),c.find(".upload-width").val(b.attributes.width),redux_change(a(c).find(".upload-id"));var e=b.attributes.url;if("undefined"!=typeof b.attributes.sizes&&"undefined"!=typeof b.attributes.sizes.thumbnail)e=b.attributes.sizes.thumbnail.url;else if("undefined"!=typeof b.attributes.sizes){var f=b.attributes.height;for(var g in b.attributes.sizes){var h=b.attributes.sizes[g];h.height').slideDown("fast"),c.find(".redux-remove-background").removeClass("hide"),c.find(".redux-background-input-properties").slideDown(),redux.field_objects.background.preview(c.find(".upload"))}}),void d.open())},redux.field_objects.background.removeImage=function(b){if(b.find(".redux-remove-background").addClass("hide")){b.find(".redux-remove-background").addClass("hide"),b.find(".upload").val(""),b.find(".upload-id").val(""),b.find(".upload-height").val(""),b.find(".upload-width").val(""),redux_change(a(b).find(".upload-id")),b.find(".redux-background-input-properties").hide();var c=b.find(".screenshot");c.slideUp(),b.find(".remove-file").unbind(),a(".section-upload .upload-notice").length>0&&a(".redux-background-upload").remove()}}}(jQuery);redux/ReduxCore/inc/fields/background/field_background.js000066600000032323152143340070017557 0ustar00/** * Redux Background * Dependencies : jquery, wp media uploader * Feature added by : Dovy Paukstys * Date : 07 Jan 2014 */ /*global redux_change, wp, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.background = redux.field_objects.background || {}; redux.field_objects.background.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-background:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Remove the image button el.find( '.redux-remove-background' ).unbind( 'click' ).on( 'click', function( e ) { e.preventDefault(); redux.field_objects.background.removeImage( $( this ).parents( '.redux-container-background:first' ) ); return false; } ); // Upload media button el.find( '.redux-background-upload' ).unbind().on( 'click', function( event ) { redux.field_objects.background.addImage( event, $( this ).parents( '.redux-container-background:first' ) ); } ); el.find( '.redux-background-input' ).on( 'change', function() { redux.field_objects.background.preview( $( this ) ); } ); el.find( '.redux-color' ).wpColorPicker( { change: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ) ); $( '#' + e.target.id + '-transparency' ).removeAttr( 'checked' ); redux.field_objects.background.preview( $( this ) ); }, clear: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ).parent().find( '.redux-color-init' ) ); redux.field_objects.background.preview( $( this ) ); } } ); // Replace and validate field on blur el.find( '.redux-color' ).on( 'blur', function() { var value = $( this ).val(); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { if ( colorValidate( this ) === value ) { if ( value.indexOf( "#" ) !== 0 ) { $( this ).val( $( this ).data( 'oldcolor' ) ); } } el.find( id + '-transparency' ).removeAttr( 'checked' ); } } ); el.find( '.redux-color' ).on( 'focus', function() { $( this ).data( 'oldcolor', $( this ).val() ); } ); el.find( '.redux-color' ).on( 'keyup', function() { var value = $( this ).val(); var color = colorValidate( this ); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { el.find( id + '-transparency' ).removeAttr( 'checked' ); if ( color && color !== $( this ).val() ) { $( this ).val( color ); } } } ); // When transparency checkbox is clicked el.find( '.color-transparency' ).on( 'click', function() { if ( $( this ).is( ":checked" ) ) { el.find( '.redux-saved-color' ).val( $( '#' + $( this ).data( 'id' ) ).val() ); el.find( '#' + $( this ).data( 'id' ) ).val( 'transparent' ); el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); } else { if ( el.find( '#' + $( this ).data( 'id' ) ).val() === 'transparent' ) { var prevColor = $( '.redux-saved-color' ).val(); if ( prevColor === '' ) { prevColor = $( '#' + $( this ).data( 'id' ) ).data( 'default-color' ); } el.find( '#' + $( this ).data( 'id' ) ).parent().parent().find( '.wp-color-result' ).css( 'background-color', prevColor ); el.find( '#' + $( this ).data( 'id' ) ).val( prevColor ); } } redux.field_objects.background.preview( $( this ) ); redux_change( $( this ) ); } ); var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; var select2_handle = el.find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } el.find( " .redux-background-repeat, .redux-background-clip, .redux-background-origin, .redux-background-size, .redux-background-attachment, .redux-background-position" ).select2( default_params ); } ); }; // Update the background preview redux.field_objects.background.preview = function( selector ) { var parent = $( selector ).parents( '.redux-container-background:first' ); var preview = $( parent ).find( '.background-preview' ); if ( !preview ) { // No preview present return; } var hide = true; var css = 'height:' + preview.height() + 'px;'; $( parent ).find( '.redux-background-input' ).each( function() { var data = $( this ).serializeArray(); data = data[0]; if ( data && data.name.indexOf( '[background-' ) != -1 ) { if ( data.value !== "" ) { hide = false; data.name = data.name.split( '[background-' ); data.name = 'background-' + data.name[1].replace( ']', '' ); if ( data.name == "background-image" ) { css += data.name + ':url("' + data.value + '");'; } else { css += data.name + ':' + data.value + ';'; } } } } ); if ( !hide ) { preview.attr( 'style', css ).fadeIn(); } else { preview.slideUp(); } }; // Add a file via the wp.media function redux.field_objects.background.addImage = function( event, selector ) { event.preventDefault(); var frame; var jQueryel = $( this ); // If the media frame already exists, reopen it. if ( frame ) { frame.open(); return; } // Create the media frame. frame = wp.media( { multiple: false, library: { //type: 'image' //Only allow images }, // Set the title of the modal. title: jQueryel.data( 'choose' ), // Customize the submit button. button: { // Set the text of the button. text: jQueryel.data( 'update' ) // Tell the button not to close the modal, since we're // going to refresh the page when the image is selected. } } ); // When an image is selected, run a callback. frame.on( 'select', function() { // Grab the selected attachment. var attachment = frame.state().get( 'selection' ).first(); frame.close(); //console.log(attachment.attributes.type); if ( attachment.attributes.type !== "image" ) { return; } selector.find( '.upload' ).val( attachment.attributes.url ); selector.find( '.upload-id' ).val( attachment.attributes.id ); selector.find( '.upload-height' ).val( attachment.attributes.height ); selector.find( '.upload-width' ).val( attachment.attributes.width ); redux_change( $( selector ).find( '.upload-id' ) ); var thumbSrc = attachment.attributes.url; if ( typeof attachment.attributes.sizes !== 'undefined' && typeof attachment.attributes.sizes.thumbnail !== 'undefined' ) { thumbSrc = attachment.attributes.sizes.thumbnail.url; } else if ( typeof attachment.attributes.sizes !== 'undefined' ) { var height = attachment.attributes.height; for ( var key in attachment.attributes.sizes ) { var object = attachment.attributes.sizes[key]; if ( object.height < height ) { height = object.height; thumbSrc = object.url; } } } else { thumbSrc = attachment.attributes.icon; } selector.find( '.upload-thumbnail' ).val( thumbSrc ); if ( !selector.find( '.upload' ).hasClass( 'noPreview' ) ) { selector.find( '.screenshot' ).empty().hide().append( '' ).slideDown( 'fast' ); } selector.find( '.redux-remove-background' ).removeClass( 'hide' );//show "Remove" button selector.find( '.redux-background-input-properties' ).slideDown(); redux.field_objects.background.preview( selector.find( '.upload' ) ); } ); // Finally, open the modal. frame.open(); }; // Update the background preview redux.field_objects.background.removeImage = function( selector ) { // This shouldn't have been run... if ( !selector.find( '.redux-remove-background' ).addClass( 'hide' ) ) { return; } selector.find( '.redux-remove-background' ).addClass( 'hide' ); //hide "Remove" button selector.find( '.upload' ).val( '' ); selector.find( '.upload-id' ).val( '' ); selector.find( '.upload-height' ).val( '' ); selector.find( '.upload-width' ).val( '' ); redux_change( $( selector ).find( '.upload-id' ) ); selector.find( '.redux-background-input-properties' ).hide(); var screenshot = selector.find( '.screenshot' ); // Hide the screenshot screenshot.slideUp(); selector.find( '.remove-file' ).unbind(); // We don't display the upload button if .upload-notice is present // This means the user doesn't have the WordPress 3.5 Media Library Support if ( $( '.section-upload .upload-notice' ).length > 0 ) { $( '.redux-background-upload' ).remove(); } }; })( jQuery ); redux/ReduxCore/inc/fields/background/field_background.php000066600000055257152143340070017745 0ustar00. * * @package ReduxFramework * @subpackage Field_Background * @author Dovy Paukstys * @version 3.1.5 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_background' ) ) { /** * Main ReduxFramework_background class * * @since 3.1.5 */ class ReduxFramework_background { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 3.1.5 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { $defaults = array( 'background-color' => true, 'background-repeat' => true, 'background-attachment' => true, 'background-position' => true, 'background-image' => true, 'background-gradient' => false, 'background-clip' => false, 'background-origin' => false, 'background-size' => true, 'preview_media' => false, 'preview' => true, 'preview_height' => '200px', 'transparent' => true, ); $this->field = wp_parse_args( $this->field, $defaults ); // No errors please $defaults = array( 'background-color' => '', 'background-repeat' => '', 'background-attachment' => '', 'background-position' => '', 'background-image' => '', 'background-clip' => '', 'background-origin' => '', 'background-size' => '', 'media' => array(), ); $this->value = wp_parse_args( $this->value, $defaults ); $defaults = array( 'id' => '', 'width' => '', 'height' => '', 'thumbnail' => '', ); $this->value['media'] = wp_parse_args( $this->value['media'], $defaults ); // select2 args if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } if ( $this->field['background-color'] === true ) { if ( isset( $this->value['color'] ) && empty( $this->value['background-color'] ) ) { $this->value['background-color'] = $this->value['color']; } echo ''; echo ''; if ( ! isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) { $tChecked = ""; if ( $this->value['background-color'] == "transparent" ) { $tChecked = ' checked="checked"'; } echo ''; } if ( $this->field['background-repeat'] === true || $this->field['background-position'] === true || $this->field['background-attachment'] === true ) { echo '
    '; } } if ( $this->field['background-repeat'] === true ) { $array = array( 'no-repeat' => 'No Repeat', 'repeat' => 'Repeat All', 'repeat-x' => 'Repeat Horizontally', 'repeat-y' => 'Repeat Vertically', 'inherit' => 'Inherit', ); echo ''; } if ( $this->field['background-clip'] === true ) { $array = array( 'inherit' => 'Inherit', 'border-box' => 'Border Box', 'content-box' => 'Content Box', 'padding-box' => 'Padding Box', ); echo ''; } if ( $this->field['background-origin'] === true ) { $array = array( 'inherit' => 'Inherit', 'border-box' => 'Border Box', 'content-box' => 'Content Box', 'padding-box' => 'Padding Box', ); echo ''; } if ( $this->field['background-size'] === true ) { $array = array( 'inherit' => 'Inherit', 'cover' => 'Cover', 'contain' => 'Contain', ); echo ''; } if ( $this->field['background-attachment'] === true ) { $array = array( 'fixed' => 'Fixed', 'scroll' => 'Scroll', 'inherit' => 'Inherit', ); echo ''; } if ( $this->field['background-position'] === true ) { $array = array( 'left top' => 'Left Top', 'left center' => 'Left center', 'left bottom' => 'Left Bottom', 'center top' => 'Center Top', 'center center' => 'Center Center', 'center bottom' => 'Center Bottom', 'right top' => 'Right Top', 'right center' => 'Right center', 'right bottom' => 'Right Bottom', ); echo ''; } if ( $this->field['background-image'] === true ) { echo '
    '; if ( empty( $this->value ) && ! empty( $this->field['default'] ) ) { // If there are standard values and value is empty if ( is_array( $this->field['default'] ) ) { if ( ! empty( $this->field['default']['media']['id'] ) ) { $this->value['media']['id'] = $this->field['default']['media']['id']; } else if ( ! empty( $this->field['default']['id'] ) ) { $this->value['media']['id'] = $this->field['default']['id']; } if ( ! empty( $this->field['default']['url'] ) ) { $this->value['background-image'] = $this->field['default']['url']; } else if ( ! empty( $this->field['default']['media']['url'] ) ) { $this->value['background-image'] = $this->field['default']['media']['url']; } else if ( ! empty( $this->field['default']['background-image'] ) ) { $this->value['background-image'] = $this->field['default']['background-image']; } } else { if ( is_numeric( $this->field['default'] ) ) { // Check if it's an attachment ID $this->value['media']['id'] = $this->field['default']; } else { // Must be a URL $this->value['background-image'] = $this->field['default']; } } } if ( empty( $this->value['background-image'] ) && ! empty( $this->value['media']['id'] ) ) { $img = wp_get_attachment_image_src( $this->value['media']['id'], 'full' ); $this->value['background-image'] = $img[0]; $this->value['media']['width'] = $img[1]; $this->value['media']['height'] = $img[2]; } $hide = 'hide '; if ( ( isset( $this->field['preview_media'] ) && $this->field['preview_media'] === false ) ) { $this->field['class'] .= " noPreview"; } if ( ( ! empty( $this->field['background-image'] ) && $this->field['background-image'] === true ) || isset( $this->field['preview'] ) && $this->field['preview'] === false ) { $hide = ''; } $placeholder = isset( $this->field['placeholder'] ) ? $this->field['placeholder'] : __( 'No media selected', 'redux-framework' ); echo ''; echo ''; echo ''; echo ''; echo ''; //Preview $hide = ''; if ( ( isset( $this->field['preview_media'] ) && $this->field['preview_media'] === false ) || empty( $this->value['background-image'] ) ) { $hide = 'hide '; } if ( empty( $this->value['media']['thumbnail'] ) && ! empty( $this->value['background-image'] ) ) { // Just in case if ( ! empty( $this->value['media']['id'] ) ) { $image = wp_get_attachment_image_src( $this->value['media']['id'], array( 150, 150 ) ); $this->value['media']['thumbnail'] = $image[0]; } else { $this->value['media']['thumbnail'] = $this->value['background-image']; } } echo '
    '; echo ''; echo ''; echo ''; echo '
    '; //Upload controls DIV echo '
    '; //If the user has WP3.5+ show upload/remove button echo '' . __( 'Upload', 'redux-framework' ) . ''; $hide = ''; if ( empty( $this->value['background-image'] ) || $this->value['background-image'] == '' ) { $hide = ' hide'; } echo '' . __( 'Remove', 'redux-framework' ) . ''; echo '
    '; } /** * Preview * */ if ( ! isset( $this->field['preview'] ) || $this->field['preview'] !== false ): $css = $this->getCSS(); if ( empty( $css ) ) { $css = "display:none;"; } $css .= "height: " . $this->field['preview_height'] . ";"; echo '

     

    '; endif; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ( function_exists( 'wp_enqueue_media' ) ) { wp_enqueue_media(); } else { if (!wp_script_is ( 'media-upload' )) { wp_enqueue_script( 'media-upload' ); } } if (!wp_style_is ( 'select2-css' )) { wp_enqueue_style( 'select2-css' ); } if (!wp_style_is ( 'wp-color-picker' )) { wp_enqueue_style( 'wp-color-picker' ); } if (!wp_script_is ( 'redux-field-background-js' )) { wp_enqueue_script( 'redux-field-background-js', ReduxFramework::$_url . 'inc/fields/background/field_background' . Redux_Functions::isMin() . '.js', array( 'jquery', 'wp-color-picker', 'select2-js', 'redux-js' ), time(), true ); } if ($this->parent->args['dev_mode']) { if (!wp_style_is ( 'redux-field-background-css' )) { wp_enqueue_style( 'redux-field-background-css', ReduxFramework::$_url . 'inc/fields/background/field_background.css', array(), time(), 'all' ); } if (!wp_style_is ( 'redux-color-picker-css' )) { wp_enqueue_style( 'redux-color-picker-css' ); } } } public static function getCSS( $value = array() ) { $css = ''; if ( ! empty( $value ) && is_array( $value ) ) { foreach ( $value as $key => $value ) { if ( ! empty( $value ) && $key != "media" ) { if ( $key == "background-image" ) { $css .= $key . ":url('" . $value . "');"; } else { $css .= $key . ":" . $value . ";"; } } } } return $css; } public function output() { $style = $this->getCSS( $this->value ); if ( ! empty( $style ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $keys = implode( ",", $this->field['output'] ); $this->parent->outputCSS .= $keys . "{" . $style . '}'; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $keys = implode( ",", $this->field['compiler'] ); $this->parent->compilerCSS .= $keys . "{" . $style . '}'; } } } } } redux/ReduxCore/inc/fields/background/field_background.css000066600000004351152143340070017733 0ustar00.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select{width:200px !important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted lightgray}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select{width:100% !important}redux/ReduxCore/inc/fields/sorter/field_sorter.scss000066600000003552152143340070016516 0ustar00.redux-container-sorter { margin-right: -20px; ul { background: #F9F9F9; border: 1px solid #E3E3E3; min-height: 40px; padding: 10px 10px 0; width: 145px; float: left; margin: 0 15px 0 0; &.filled { opacity: .7; filter: alpha(opacity=70); /* For IE8 and earlier */ background: #efecec; } li { border: 1px solid #DFDFDF; cursor: move; font-weight: bold; margin-bottom: 10px !important; padding: 0 10px; height: 40px; line-height: 40px !important; background-color: #F1F1F1; background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); background-image: -o-linear-gradient(top, #f9f9f9, #ececec); background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); background-image: linear-gradient(top, #f9f9f9, #ececec); overflow: hidden; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -moz-box-shadow: inset 0 1px 0 #fff; -webkit-box-shadow: inset 0 1px 0 #fff; box-shadow: inset 0 1px 0 #fff; text-align: center; h3 { margin: 0 0 10px; text-align: center; color: #777; text-transform: capitalize; word-wrap: break-word; } &.placeholder { height: 40px; } } } } .wp-customizer { .redux-container-sorter ul { width: 85%; margin: 0 0 5px 0; } }redux/ReduxCore/inc/fields/sorter/field_sorter.css.map000066600000002110152143340070017074 0ustar00{ "version": 3, "mappings": "AAAA,uBAAwB;EACpB,YAAY,EAAE,KAAK;EAEnB,0BAAG;IACC,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,UAAU;IAElB,iCAAS;MACL,OAAO,EAAE,EAAE;MACX,MAAM,EAAE,iBAAiB;MAAE,yBAAyB;MACpD,UAAU,EAAE,OAAO;IAGvB,6BAAG;MACC,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,IAAI;MACZ,WAAW,EAAE,IAAI;MACjB,aAAa,EAAE,eAAe;MAC9B,OAAO,EAAE,MAAM;MACf,MAAM,EAAE,IAAI;MACZ,WAAW,EAAE,eAAe;MAC5B,gBAAgB,EAAE,OAAO;MACzB,gBAAgB,EAAE,0CAA0C;MAC5D,gBAAgB,EAAE,2CAA2C;MAC7D,gBAAgB,EAAE,yCAAyC;MAC3D,gBAAgB,EAAE,2EAA2E;MAC7F,gBAAgB,EAAE,8CAA8C;MAChE,gBAAgB,EAAE,sCAAsC;MACxD,QAAQ,EAAE,MAAM;MAChB,qBAAqB,EAAE,GAAG;MAC1B,kBAAkB,EAAE,GAAG;MACvB,aAAa,EAAE,GAAG;MAClB,eAAe,EAAE,kBAAkB;MACnC,kBAAkB,EAAE,kBAAkB;MACtC,UAAU,EAAE,kBAAkB;MAC9B,UAAU,EAAE,MAAM;MAElB,gCAAG;QACC,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,IAAI;QACX,cAAc,EAAE,UAAU;QAC1B,SAAS,EAAE,UAAU;MAGzB,yCAAc;QACV,MAAM,EAAE,IAAI;;AAOxB,yCAA2B;EACvB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,SAAS", "sources": ["field_sorter.scss"], "names": [], "file": "field_sorter.css" }redux/ReduxCore/inc/fields/sorter/field_sorter.min.js000066600000004073152143340070016740 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.sorter=redux.field_objects.sorter||{};var b="";a(document).ready(function(){}),redux.field_objects.sorter.init=function(c){c||(c=a(document).find(".redux-group-tab:visible").find(".redux-container-sorter:visible")),a(c).each(function(){var c=a(this),d=c;c.hasClass("redux-field-container")||(d=c.parents(".redux-field-container:first")),d.is(":hidden")||d.hasClass("redux-field-init")&&(d.removeClass("redux-field-init"),c.find(".redux-sorter").each(function(){var d=a(this).attr("id");c.find("#"+d).find("ul").sortable({items:"li",placeholder:"placeholder",connectWith:".sortlist_"+d,opacity:.8,scroll:!1,out:function(c,d){d.helper&&(b=d.offset.top>0?"down":"up",redux.field_objects.sorter.scrolling(a(this).parents(".redux-field-container:first")))},over:function(a,c){b=""},deactivate:function(a,c){b=""},stop:function(b,c){var d=redux.sorter[a(this).attr("data-id")],e=a(this).find("h3").text();d.limits&&e&&d.limits[e]&&(a(this).children("li").length>=d.limits[e]?(a(this).addClass("filled"),a(this).children("li").length>d.limits[e]&&a(c.sender).sortable("cancel")):a(this).removeClass("filled"))},update:function(b,c){var d=redux.sorter[a(this).attr("data-id")],e=a(this).find("h3").text();d.limits&&e&&d.limits[e]&&(a(this).children("li").length>=d.limits[e]?(a(this).addClass("filled"),a(this).children("li").length>d.limits[e]&&a(c.sender).sortable("cancel")):a(this).removeClass("filled")),a(this).find(".position").each(function(){var b=a(this).parent().attr("data-id"),c=a(this).parent().parent().attr("data-group-id");redux_change(a(this));var d=a(this).parent().parent().parent().attr("id");a(this).prop("name",redux.args.opt_name+"["+d+"]["+c+"]["+b+"]")})}}),c.find(".redux-sorter").disableSelection()}))})},redux.field_objects.sorter.scrolling=function(a){if(void 0!==a){var c=a.find(".redux-sorter");"up"==b?(c.scrollTop(c.scrollTop()-20),setTimeout(redux.field_objects.sorter.scrolling,50)):"down"==b&&(c.scrollTop(c.scrollTop()+20),setTimeout(redux.field_objects.sorter.scrolling,50))}}}(jQuery);redux/ReduxCore/inc/fields/sorter/field_sorter.css000066600000002431152143340070016326 0ustar00.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#f9f9f9;border:1px solid #e3e3e3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #dfdfdf;cursor:move;font-weight:bold;margin-bottom:10px !important;padding:0 10px;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px 0}redux/ReduxCore/inc/fields/sorter/field_sorter.php000066600000021376152143340070016336 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } private function replace_id_with_slug( $arr ) { $new_arr = array(); if ( ! empty( $arr ) ) { foreach ( $arr as $id => $name ) { if ( is_numeric( $id ) ) { $slug = strtolower( $name ); $slug = str_replace( ' ', '-', $slug ); $new_arr[ $slug ] = $name; } else { $new_arr[ $id ] = $name; } } } return $new_arr; } private function is_value_empty( $val ) { if ( ! empty( $val ) ) { foreach ( $val as $section => $arr ) { if ( ! empty( $arr ) ) { return false; } } } return true; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 */ function render() { if ( ! is_array( $this->value ) && isset( $this->field['options'] ) ) { $this->value = $this->field['options']; } if ( ! isset( $this->field['args'] ) ) { $this->field['args'] = array(); } if ( isset( $this->field['data'] ) ) { $this->field['options'] = $this->parent->options_defaults[ $this->field['id'] ]; } // Make sure to get list of all the default blocks first $all_blocks = ! empty( $this->field['options'] ) ? $this->field['options'] : array(); $temp = array(); // holds default blocks $temp2 = array(); // holds saved blocks foreach ( $all_blocks as $blocks ) { $temp = array_merge( $temp, $blocks ); } $temp = $this->replace_id_with_slug( $temp ); if ( $this->is_value_empty( $this->value ) ) { if ( ! empty( $this->field['options'] ) ) { $this->value = $this->field['options']; } } $sortlists = $this->value; if ( ! empty( $sortlists ) ) { foreach ( $sortlists as $section => $arr ) { $sortlists[ $section ] = $this->replace_id_with_slug( $arr ); } } if ( is_array( $sortlists ) ) { foreach ( $sortlists as $sortlist ) { $temp2 = array_merge( $temp2, $sortlist ); } // now let's compare if we have anything missing foreach ( $temp as $k => $v ) { // k = id/slug // v = name if ( ! empty( $temp2 ) ) { if ( ! array_key_exists( $k, $temp2 ) ) { if (isset($sortlists['Disabled'])) { $sortlists['Disabled'][ $k ] = $v; } else { $sortlists['disabled'][ $k ] = $v; } } } } // now check if saved blocks has blocks not registered under default blocks foreach ( $sortlists as $key => $sortlist ) { // key = enabled, disabled, backup // sortlist = id => name foreach ( $sortlist as $k => $v ) { // k = id // v = name if ( ! array_key_exists( $k, $temp ) ) { unset( $sortlist[ $k ] ); } } $sortlists[ $key ] = $sortlist; } // assuming all sync'ed, now get the correct naming for each block foreach ( $sortlists as $key => $sortlist ) { foreach ( $sortlist as $k => $v ) { $sortlist[ $k ] = $temp[ $k ]; } $sortlists[ $key ] = $sortlist; } if ( $sortlists ) { echo '
    '; foreach ( $sortlists as $group => $sortlist ) { $filled = ""; if ( isset( $this->field['limits'][ $group ] ) && count( $sortlist ) >= $this->field['limits'][ $group ] ) { $filled = " filled"; } echo '
      '; echo '

      ' . esc_html($group) . '

      '; if ( ! isset( $sortlist['placebo'] ) ) { array_unshift( $sortlist, array( "placebo" => "placebo" ) ); } foreach ( $sortlist as $key => $list ) { echo ''; if ( $key != "placebo" ) { //echo '
    • '; echo '
    • '; echo ''; echo esc_html($list); echo '
    • '; } } echo '
    '; } echo '
    '; } } } function enqueue() { if ( $this->parent->args['dev_mode'] ) { wp_enqueue_style( 'redux-field-sorder-css', ReduxFramework::$_url . 'inc/fields/sorter/field_sorter.css', array(), time(), 'all' ); } wp_enqueue_script( 'redux-field-sorter-js', ReduxFramework::$_url . 'inc/fields/sorter/field_sorter' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js', 'jquery-ui-sortable' ), time(), true ); } /** * Functions to pass data from the PHP to the JS at render time. * * @return array Params to be saved as a javascript object accessable to the UI. * @since Redux_Framework 3.1.5 */ function localize( $field, $value = "" ) { $params = array(); if ( isset( $field['limits'] ) && ! empty( $field['limits'] ) ) { $params['limits'] = $field['limits']; } if ( empty( $value ) ) { $value = $this->value; } $params['val'] = $value; return $params; } } }redux/ReduxCore/inc/fields/sorter/field_sorter.js000066600000014525152143340070016161 0ustar00/*global redux, redux_opts*/ /* * Field Sorter jquery function * Based on * [SMOF - Slightly Modded Options Framework](http://aquagraphite.com/2011/09/slightly-modded-options-framework/) * Version 1.4.2 */ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.sorter = redux.field_objects.sorter || {}; var scroll = ''; $( document ).ready( function() { //redux.field_objects.sorter.init(); } ); redux.field_objects.sorter.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-sorter:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } /** Sorter (Layout Manager) */ el.find( '.redux-sorter' ).each( function() { var id = $( this ).attr( 'id' ); el.find( '#' + id ).find( 'ul' ).sortable( { items: 'li', placeholder: "placeholder", connectWith: '.sortlist_' + id, opacity: 0.8, scroll: false, out: function( event, ui ) { if ( !ui.helper ) return; if ( ui.offset.top > 0 ) { scroll = 'down'; } else { scroll = 'up'; } redux.field_objects.sorter.scrolling( $( this ).parents( '.redux-field-container:first' ) ); }, over: function( event, ui ) { scroll = ''; }, deactivate: function( event, ui ) { scroll = ''; }, stop: function( event, ui ) { var sorter = redux.sorter[$( this ).attr( 'data-id' )]; var id = $( this ).find( 'h3' ).text(); if ( sorter.limits && id && sorter.limits[id] ) { if ( $( this ).children( 'li' ).length >= sorter.limits[id] ) { $( this ).addClass( 'filled' ); if ( $( this ).children( 'li' ).length > sorter.limits[id] ) { $( ui.sender ).sortable( 'cancel' ); } } else { $( this ).removeClass( 'filled' ); } } }, update: function( event, ui ) { var sorter = redux.sorter[$( this ).attr( 'data-id' )]; var id = $( this ).find( 'h3' ).text(); if ( sorter.limits && id && sorter.limits[id] ) { if ( $( this ).children( 'li' ).length >= sorter.limits[id] ) { $( this ).addClass( 'filled' ); if ( $( this ).children( 'li' ).length > sorter.limits[id] ) { $( ui.sender ).sortable( 'cancel' ); } } else { $( this ).removeClass( 'filled' ); } } $( this ).find( '.position' ).each( function() { //var listID = $( this ).parent().attr( 'id' ); var listID = $( this ).parent().attr( 'data-id' ); var parentID = $( this ).parent().parent().attr( 'data-group-id' ); redux_change( $( this ) ); var optionID = $( this ).parent().parent().parent().attr( 'id' ); $( this ).prop( "name", redux.args.opt_name + '[' + optionID + '][' + parentID + '][' + listID + ']' ); } ); } } ); el.find( ".redux-sorter" ).disableSelection(); } ); } ); }; redux.field_objects.sorter.scrolling = function( selector ) { if (selector === undefined) { return; } var scrollable = selector.find( ".redux-sorter" ); if ( scroll == 'up' ) { scrollable.scrollTop( scrollable.scrollTop() - 20 ); setTimeout( redux.field_objects.sorter.scrolling, 50 ); } else if ( scroll == 'down' ) { scrollable.scrollTop( scrollable.scrollTop() + 20 ); setTimeout( redux.field_objects.sorter.scrolling, 50 ); } }; })( jQuery );redux/ReduxCore/inc/fields/select/field_select.css.map000066600000000334152143340070017004 0ustar00{ "version": 3, "mappings": "AACI,6CAAsB;EAClB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,GAAG;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,CAAC", "sources": ["field_select.scss"], "names": [], "file": "field_select.css" }redux/ReduxCore/inc/fields/select/field_select.php000066600000016433152143340070016236 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ public function render() { $sortable = ( isset( $this->field['sortable'] ) && $this->field['sortable'] ) ? ' select2-sortable"' : ""; if ( ! empty( $sortable ) ) { // Dummy proofing :P $this->field['multi'] = true; } if ( ! empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { if ( empty( $this->field['args'] ) ) { $this->field['args'] = array(); } if ( $this->field['data'] == "elusive-icons" || $this->field['data'] == "elusive-icon" || $this->field['data'] == "elusive" ) { $icons_file = ReduxFramework::$_dir . 'inc/fields/select/elusive-icons.php'; /** * filter 'redux-font-icons-file}' * * @param array $icon_file File for the icons */ $icons_file = apply_filters( 'redux-font-icons-file', $icons_file ); /** * filter 'redux/{opt_name}/field/font/icons/file' * * @param array $icon_file File for the icons */ $icons_file = apply_filters( "redux/{$this->parent->args['opt_name']}/field/font/icons/file", $icons_file ); if ( file_exists( $icons_file ) ) { require_once $icons_file; } } $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); } if ( ! empty( $this->field['data'] ) && ( $this->field['data'] == "elusive-icons" || $this->field['data'] == "elusive-icon" || $this->field['data'] == "elusive" ) ) { $this->field['class'] .= " font-icons"; } //if if ( ! empty( $this->field['options'] ) ) { $multi = ( isset( $this->field['multi'] ) && $this->field['multi'] ) ? ' multiple="multiple"' : ""; if ( ! empty( $this->field['width'] ) ) { $width = ' style="' . $this->field['width'] . '"'; } else { $width = ' style="width: 40%;"'; } $nameBrackets = ""; if ( ! empty( $multi ) ) { $nameBrackets = "[]"; } $placeholder = ( isset( $this->field['placeholder'] ) ) ? esc_attr( $this->field['placeholder'] ) : __( 'Select an item', 'redux-framework' ); if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } if ( isset( $this->field['multi'] ) && $this->field['multi'] && isset( $this->field['sortable'] ) && $this->field['sortable'] && ! empty( $this->value ) && is_array( $this->value ) ) { $origOption = $this->field['options']; $this->field['options'] = array(); foreach ( $this->value as $value ) { $this->field['options'][ $value ] = $origOption[ $value ]; } if ( count( $this->field['options'] ) < count( $origOption ) ) { foreach ( $origOption as $key => $value ) { if ( ! in_array( $key, $this->field['options'] ) ) { $this->field['options'][ $key ] = $value; } } } } $sortable = ( isset( $this->field['sortable'] ) && $this->field['sortable'] ) ? ' select2-sortable"' : ""; echo ''; } else { echo '' . __( 'No items of this type were found.', 'redux-framework' ) . ''; } } //function private function make_option($id, $value, $group_name = '') { if ( is_array( $this->value ) ) { $selected = ( is_array( $this->value ) && in_array( $id, $this->value ) ) ? ' selected="selected"' : ''; } else { $selected = selected( $this->value, $id, false ); } echo ''; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ public function enqueue() { wp_enqueue_style( 'select2-css' ); if (isset($this->field['sortable']) && $this->field['sortable']) { wp_enqueue_script('jquery-ui-sortable'); } wp_enqueue_script( 'redux-field-select-js', ReduxFramework::$_url . 'inc/fields/select/field_select' . Redux_Functions::isMin() . '.js', array( 'jquery', 'select2-js', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-select-css', ReduxFramework::$_url . 'inc/fields/select/field_select.css', array(), time(), 'all' ); } } //function } //class }redux/ReduxCore/inc/fields/select/field_select.css000066600000000164152143340070016231 0ustar00.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}redux/ReduxCore/inc/fields/select/field_select.js000066600000006651152143340070016064 0ustar00/*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.select = redux.field_objects.select || {}; redux.field_objects.select.init = function( selector ) { if ( !selector ) { selector = $( document ).find( '.redux-container-select:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( 'select.redux-select-item' ).each( function() { var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; if ( $(this).attr('multiple') == "multiple" ) { default_params.width = "100%"; } if ( $( this ).siblings( '.select2_params' ).size() > 0 ) { var select2_params = $( this ).siblings( '.select2_params' ).val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } if ( $( this ).hasClass( 'font-icons' ) ) { default_params = $.extend( {}, { formatResult: redux.field_objects.select.addIcon, formatSelection: redux.field_objects.select.addIcon, escapeMarkup: function( m ) { return m; } }, default_params ); } $( this ).select2( default_params ); if ( $( this ).hasClass( 'select2-sortable' ) ) { default_params = {}; default_params.bindOrder = 'sortableStop'; default_params.sortableOptions = {placeholder: 'ui-state-highlight'}; $( this ).select2Sortable( default_params ); } $( this ).on( "change", function() { redux_change( $( $( this ) ) ); $( this ).select2SortableOrder(); } ); } ); } ); }; redux.field_objects.select.addIcon = function( icon ) { if ( icon.hasOwnProperty( 'id' ) ) { return "" + "  " + icon.text + ""; } }; })( jQuery );redux/ReduxCore/inc/fields/select/elusive-icons.php000066600000022040152143340070016370 0ustar000){var f=a(this).siblings(".select2_params").val();f=JSON.parse(f);e=a.extend({},e,f)}if(a(this).hasClass("font-icons")){e=a.extend({},{formatResult:redux.field_objects.select.addIcon,formatSelection:redux.field_objects.select.addIcon,escapeMarkup:function(g){return g}},e)}a(this).select2(e);if(a(this).hasClass("select2-sortable")){e={};e.bindOrder="sortableStop";e.sortableOptions={placeholder:"ui-state-highlight"};a(this).select2Sortable(e)}a(this).on("change",function(){redux_change(a(a(this)));a(this).select2SortableOrder()})})})};redux.field_objects.select.addIcon=function(b){if(b.hasOwnProperty("id")){return"  "+b.text+""}}})(jQuery);redux/ReduxCore/inc/fields/select/field_select.scss000066600000000267152143340070016420 0ustar00.redux-container-select { li.ui-state-highlight { height: 20px; margin-top: 2px; margin-left: 5px; width: 64px; margin-bottom: 0; } } redux/ReduxCore/inc/fields/editor/field_editor.css.map000066600000001503152143340070017021 0ustar00{ "version": 3, "mappings": "AACI,qCAAc;EACV,YAAY,EAAE,GAAG;EACjB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,GAAG;AAGhB;gCACS;EACL,MAAM,EAAE,OAAO;AAGnB,gCAAS;EACL,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,CAAC;EACT,YAAY,EAAE,CAAC;AAGnB,4CAAqB;EACjB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;EAElB,qDAAS;IACL,qBAAqB,EAAE,CAAC;IACxB,kBAAkB,EAAE,CAAC;IACrB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,OAAO;AAI7B,gDAAyB;EACrB,MAAM,EAAE,WAAW;EACnB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,OAAO;EAChB,IAAI,EAAE,6CAA6C;EACnD,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,iBAAiB;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,IAAI;EAChB,gBAAgB,EAAE,wEAAwE;EAC1F,gBAAgB,EAAE,8CAA8C;EAChE,gBAAgB,EAAE,2CAA2C;EAC7D,gBAAgB,EAAE,yCAAyC;EAC3D,gBAAgB,EAAE,sCAAsC", "sources": ["field_editor.scss"], "names": [], "file": "field_editor.css" }redux/ReduxCore/inc/fields/editor/field_editor.scss000066600000002474152143340070016440 0ustar00.redux-container-editor { .mceLayout td { border-width: 1px; margin: 0; padding: 1px; } input, textarea { margin: inherit; } textarea { border-style: none; border: 0; border-width: 0; } .wp-editor-container { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; textarea { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; border-style: inherit; } } .quicktags-toolbar input { margin: 2px 1px 4px; line-height: 18px; display: inline-block; min-width: 26px; padding: 2px 4px; font: 12px/18px Arial, Helvetica, sans-serif normal; color: #464646; border: 1px solid #c3c3c3; -webkit-border-radius: 3px; border-radius: 3px; background: #eee; background-image: -webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff)); background-image: -webkit-linear-gradient(bottom, #e3e3e3, #fff); background-image: -moz-linear-gradient(bottom, #e3e3e3, #fff); background-image: -o-linear-gradient(bottom, #e3e3e3, #fff); background-image: linear-gradient(to top, #e3e3e3, #fff); } } redux/ReduxCore/inc/fields/editor/field_editor.min.js000066600000001105152143340070016651 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.editor=redux.field_objects.editor||{},a(document).ready(function(){}),redux.field_objects.editor.init=function(a){setTimeout(function(){if("undefined"!=typeof tinymce)for(var a=0;a. * * @package ReduxFramework * @subpackage Field_Editor * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @author Kevin Provance (kprovance) * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_editor' ) ) { /** * Main ReduxFramework_editor class * * @since 1.0.0 */ class ReduxFramework_editor { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { if ( ! isset( $this->field['args'] ) ) { $this->field['args'] = array(); } $this->field['args']['onchange_callback'] = "alert('here')"; // Setup up default args $defaults = array( 'textarea_name' => $this->field['name'] . $this->field['name_suffix'], 'editor_class' => $this->field['class'], 'textarea_rows' => 10, //Wordpress default 'teeny' => true, ); if ( isset( $this->field['editor_options'] ) && empty( $this->field['args'] ) ) { $this->field['args'] = $this->field['editor_options']; unset( $this->field['editor_options'] ); } $this->field['args'] = wp_parse_args( $this->field['args'], $defaults ); wp_editor( $this->value, $this->field['id'], $this->field['args'] ); } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-editor-css', ReduxFramework::$_url . 'inc/fields/editor/field_editor.css', array(), time(), 'all' ); } wp_enqueue_script( 'redux-field-editor-js', ReduxFramework::$_url . 'inc/fields/editor/field_editor' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), time(), true ); } } }redux/ReduxCore/inc/fields/button_set/field_button_set.php000066600000015256152143340070020056 0ustar00. * * @package Redux_Field * @subpackage Button_Set * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @author Kevin Provance (kprovance) * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_button_set' ) ) { /** * Main ReduxFramework_button_set class * * @since 1.0.0 */ class ReduxFramework_button_set { /** * Holds configuration settings for each field in a model. * Defining the field options * @param array $arr (See above) * * @return Object A new editor object. * */ static $_properties = array( 'id' => 'Identifier', ); /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { if ( !empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { if ( empty( $this->field['args'] ) ) { $this->field['args'] = array(); } $this->field['options'] = $this->parent->get_wordpress_data( $this->field['data'], $this->field['args'] ); if ( empty( $this->field['options'] ) ) { return; } } $is_multi = (isset( $this->field['multi'] ) && $this->field['multi'] == true) ? true: false; $name = $this->field['name'] . $this->field['name_suffix']; // multi => true renders the field multi-selectable (checkbox vs radio) echo '
    '; if ($is_multi) { $s = ''; if (empty($this->value)) { $s = $name; } echo ''; $name = $name . '[]'; } foreach ( $this->field['options'] as $k => $v ) { $selected = ''; if ( $is_multi ) { $post_value = ''; $type = "checkbox"; if ( ! empty( $this->value ) && ! is_array( $this->value ) ) { $this->value = array( $this->value ); } if ( is_array( $this->value ) && in_array( $k, $this->value ) ) { $selected = 'checked="checked"'; $post_value = $k; } } else { $type = "radio"; if ( is_scalar( $this->value ) ) { $selected = checked( $this->value, $k, false ); } } $the_val = $k; $the_name = $name; $data_val = ''; $multi_class = ''; if ($is_multi) { $the_val = ''; $the_name = ''; $data_val = ' data-val="' . $k . '"'; $hidden_name = $name; $multi_class = 'multi '; if ($post_value == '') { $hidden_name = ''; } echo ''; } echo ''; echo ''; } echo '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if (!wp_script_is ( 'redux-field-button-set-js' )) { wp_enqueue_script( 'redux-field-button-set-js', ReduxFramework::$_url . 'inc/fields/button_set/field_button_set' . Redux_Functions::isMin() . '.js', array( 'jquery', 'jquery-ui-core', 'redux-js' ), time(), true ); } } } }redux/ReduxCore/inc/fields/button_set/field_button_set.js000066600000006360152143340070017677 0ustar00/* Field Button Set (button_set) */ /*global jQuery, document, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.button_set = redux.field_objects.button_set || {}; $( document ).ready( function() { if ( $.fn.button.noConflict !== undefined ) { var btn = $.fn.button.noConflict(); $.fn.btn = btn; } } ); redux.field_objects.button_set.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-button_set:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.buttonset' ).each( function() { if ( $( this ).is( ':checkbox' ) ) { $( this ).find( '.buttonset-item' ).button(); } $( this ).buttonset(); } ); el.find( '.buttonset-item.multi' ).on( 'click', function( e ) { var val = ''; var name = ''; var id = $(this).attr('id'); var empty = $( this ).parent().find( '.buttonset-empty' ); var idName = empty.attr( 'data-name' ); var isChecked = false; $( this ).parent().find('.buttonset-item').each(function(){ if ($( this ).is( ':checked' )) { isChecked = true; } }); if (isChecked) { empty.attr('name', ''); } else { empty.attr('name', idName); } if ( $( this ).is( ':checked' ) ) { val = $( this ).attr( 'data-val' ); name = idName + '[]'; } $( this ).parent().find( '#' + id + '-hidden.buttonset-check' ).val( val ); $( this ).parent().find( '#' + id + '-hidden.buttonset-check' ).attr( 'name', name ); redux_change( $( this ) ); } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/button_set/field_button_set.min.js000066600000002426152143340070020460 0ustar00(function(a){redux.field_objects=redux.field_objects||{};redux.field_objects.button_set=redux.field_objects.button_set||{};a(document).ready(function(){if(a.fn.button.noConflict!==undefined){var b=a.fn.button.noConflict();a.fn.btn=b}});redux.field_objects.button_set.init=function(b){if(!b){b=a(document).find(".redux-group-tab:visible").find(".redux-container-button_set:visible")}a(b).each(function(){var d=a(this);var c=d;if(!d.hasClass("redux-field-container")){c=d.parents(".redux-field-container:first")}if(c.is(":hidden")){return}if(c.hasClass("redux-field-init")){c.removeClass("redux-field-init")}else{return}d.find(".buttonset").each(function(){if(a(this).is(":checkbox")){a(this).find(".buttonset-item").button()}a(this).buttonset()});d.find(".buttonset-item.multi").on("click",function(i){var j="";var g="";var l=a(this).attr("id");var h=a(this).parent().find(".buttonset-empty");var f=h.attr("data-name");var k=false;a(this).parent().find(".buttonset-item").each(function(){if(a(this).is(":checked")){k=true}});if(k){h.attr("name","")}else{h.attr("name",f)}if(a(this).is(":checked")){j=a(this).attr("data-val");g=f+"[]"}a(this).parent().find("#"+l+"-hidden.buttonset-check").val(j);a(this).parent().find("#"+l+"-hidden.buttonset-check").attr("name",g);redux_change(a(this))})})}})(jQuery);redux/ReduxCore/inc/fields/spinner/field_spinner.php000066600000014276152143340070016637 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 3.0.0 */ function render() { $params = array( 'min' => '', 'max' => '', 'step' => '', 'default' => '', ); $this->field = wp_parse_args( $this->field, $params ); $data_string = ""; foreach($this->field as $key => $val) { if (in_array($key, array('min', 'max', 'step', 'default'))) { $data_string.= " data-".$key.'="'.$val.'"'; } } $data_string .= ' data-val="'.$val.'"'; // Don't allow input edit if there's a step $readonly = ""; if ( isset( $this->field['edit'] ) && $this->field['edit'] == false ) { $readonly = ' readonly="readonly"'; } echo '
    '; echo ''; echo '
    '; } //function /** * Clean the field data to the fields defaults given the parameters. * * @since Redux_Framework 3.1.1 */ function clean() { if ( empty( $this->field['min'] ) ) { $this->field['min'] = 0; } else { $this->field['min'] = intval( $this->field['min'] ); } if ( empty( $this->field['max'] ) ) { $this->field['max'] = intval( $this->field['min'] ) + 1; } else { $this->field['max'] = intval( $this->field['max'] ); } if ( empty( $this->field['step'] ) || $this->field['step'] > $this->field['max'] ) { $this->field['step'] = 1; } else { $this->field['step'] = intval( $this->field['step'] ); } if ( empty( $this->value ) && ! empty( $this->field['default'] ) && intval( $this->field['min'] ) >= 1 ) { $this->value = intval( $this->field['default'] ); } if ( empty( $this->value ) && intval( $this->field['min'] ) >= 1 ) { $this->value = intval( $this->field['min'] ); } if ( empty( $this->value ) ) { $this->value = 0; } // Extra Validation if ( $this->value < $this->field['min'] ) { $this->value = intval( $this->field['min'] ); } else if ( $this->value > $this->field['max'] ) { $this->value = intval( $this->field['max'] ); } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 3.0.0 */ function enqueue() { wp_enqueue_script( 'redux-field-spinner-custom-js', ReduxFramework::$_url . 'inc/fields/spinner/vendor/spinner_custom.js', array( 'jquery','redux-js' ), time(), true ); wp_enqueue_script( 'redux-field-spinner-js', ReduxFramework::$_url . 'inc/fields/spinner/field_spinner' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-field-spinner-custom-js', 'jquery-ui-core', 'jquery-ui-dialog', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-spinner-css', ReduxFramework::$_url . 'inc/fields/spinner/field_spinner.css', array(), time(), 'all' ); } } public function output() { $style = ''; if ( ! empty( $this->value ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $css = $this->parseCSS($this->value, $this->field['output']); $this->parent->outputCSS .= $css; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $css = $this->parseCSS($this->value, $this->field['compiler']); $this->parent->compilerCSS .= $css; } } } private function parseCSS($value, $output){ // No notices $css = ''; $unit = isset($this->field['output_unit']) ? $this->field['output_unit'] : 'px'; // Must be an array if (is_numeric($value)) { if (is_array($output)) { foreach($output as $mode => $selector) { if (!empty($mode) && !empty($selector)) { $css .= $selector . '{' . $mode . ': ' . $value . $unit . ';}'; } } } } return $css; } } }redux/ReduxCore/inc/fields/spinner/arrow_right.png000066600000000232152143340070016325 0ustar00PNG  IHDR /3tEXtSoftwareAdobe ImageReadyqe< @RgvQg?};Uچ(X,;WVIENDB`redux/ReduxCore/inc/fields/spinner/vendor/spinner_custom.js000066600000041570152143340070020205 0ustar00(function( a, b ) { var c = "ui-state-active", d = "ui-state-hover", e = "ui-state-disabled", f = a.ui.keyCode, g = f.UP, h = f.DOWN, i = f.RIGHT, j = f.LEFT, k = f.PAGE_UP, l = f.PAGE_DOWN, m = f.HOME, n = f.END, o = a.browser.msie, p = a.browser.mozilla ? "DOMMouseScroll" : "mousewheel", q = ".uispinner", r = [g, h, i, j, k, l, m, n, f.BACKSPACE, f.DELETE, f.TAB], s; a.widget( "ui.spinner", { options: { min: null, max: null, allowNull: false, group: "", point: ".", prefix: "", suffix: "", places: null, defaultStep: 1, largeStep: 10, mouseWheel: true, increment: "slow", className: null, showOn: "always", width: 95, upIconClass: "ui-icon-triangle-1-n", downIconClass: "ui-icon-triangle-1-s", format: function( a, b ) { var c = this, d = /(\d+)(\d{3})/, e = (isNaN( a ) ? 0 : Math.abs( a )).toFixed( b ) + ""; for ( e = e.replace( ".", c.point ); d.test( e ) && c.group; e = e.replace( d, "$1" + c.group + "$2" ) ) { } return (a < 0 ? "-" : "") + c.prefix + e + c.suffix }, parse: function( a ) { var b = this; if ( b.group == "." ) a = a.replace( ".", "" ); if ( b.point != "." ) a = a.replace( b.point, "." ); return parseFloat( a.replace( /[^0-9\-\.]/g, "" ) ) } }, _create: function() { var a = this, b = a.element, c = b.attr( "type" ); if ( !b.is( "input" ) || c != "text" && c != "number" ) { console.error( "Invalid target for ui.spinner" ); return } a._procOptions( true ); a._createButtons( b ); if ( !b.is( ":enabled" ) ) a.disable() }, _createButtons: function( b ) { function R() { if ( L ) { a( this ).removeClass( c ); p._stopSpin(); L = false } return false } function Q() { if ( !t.disabled ) { var b = p.element[0], d = this === C ? 1 : -1; b.focus(); b.select(); a( this ).addClass( c ); L = true; p._startSpin( d ) } return false } function P( a ) { function b() { G = 0; a() } if ( G ) { if ( a === H )return; clearTimeout( G ) } H = a; G = setTimeout( b, 100 ) } function O( a, b ) { if ( K )return false; var c = String.fromCharCode( b || a ), d = p.options; if ( c >= "0" && c <= "9" || c == "-" )return false; if ( p.places > 0 && c == d.point || c == d.group )return false; return true } function N( a ) { for ( var b = 0; b < r.length; b++ )if ( r[b] == a )return true; return false } function e( a ) { return a == "auto" ? 0 : parseInt( a ) } var p = this, t = p.options, u = t.className, v = t.width, w = t.showOn, x = a.support.boxModel, y = b.outerHeight(), z = p.oMargin = e( b.css( "margin-right" ) ), A = p.wrapper = b.wrap( '' ).css( { width: (p.oWidth = x ? b.width() : b.outerWidth()) - v, marginRight: "30px", marginLeft: "30px", textAlign: "center", "float": "none", marginTop: 0 } ).after( '' ).next(), B = p.btnContainer = a( '
    ' + '
    ' + '
    ' + "
    " ), C, D, E, F, G, H, I, J, K, L, M = b[0].dir == "rtl"; if ( u ) A.addClass( u ); A.append( B.css( {height: y, left: 0, top: 0} ) ); E = p.buttons = B.find( ".ui-spinner-button" ); E.css( {width: "30px", height: y - (x ? E.outerHeight() - E.height() : 0)} ); E.eq( 0 ).css( {right: "0"} ); E.eq( 1 ).css( {left: "0"} ); C = E[0]; D = E[1]; F = E.find( ".ui-icon" ); B.width( "105px" ); if ( w != "always" ) B.css( "opacity", 0 ); if ( w == "hover" || w == "both" ) E.add( b ).bind( "mouseenter" + q, function() { P( function() { I = true; if ( !p.focused || w == "hover" ) p.showButtons() } ) } ).bind( "mouseleave" + q, function S() { P( function() { I = false; if ( !p.focused || w == "hover" ) p.hideButtons() } ) } ); E.hover( function() { p.buttons.removeClass( d ); if ( !t.disabled ) a( this ).addClass( d ) }, function() { a( this ).removeClass( d ) } ).mousedown( Q ).mouseup( R ).mouseout( R ); if ( o ) E.dblclick( function() { if ( !t.disabled ) { p._change(); p._doSpin( (this === C ? 1 : -1) * t.step ) } return false } ).bind( "selectstart", function() { return false } ); b.bind( "keydown" + q, function( b ) { var d, e, f, o = b.keyCode; if ( b.ctrl || b.alt )return true; if ( N( o ) ) K = true; if ( J )return false; switch ( o ) { case g: case k: d = 1; e = o == k; break; case h: case l: d = -1; e = o == l; break; case i: case j: d = o == i ^ M ? 1 : -1; break; case m: f = p.options.min; if ( f != null ) p._setValue( f ); return false; case n: f = p.options.max; f = p.options.max; if ( f != null ) p._setValue( f ); return false } if ( d ) { if ( !J && !t.disabled ) { keyDir = d; a( d > 0 ? C : D ).addClass( c ); J = true; p._startSpin( d, e ) } return false } } ).bind( "keyup" + q, function( a ) { if ( a.ctrl || a.alt )return true; if ( N( f ) ) K = false; switch ( a.keyCode ) { case g: case i: case k: case h: case j: case l: E.removeClass( c ); p._stopSpin(); J = false; return false } } ).bind( "keypress" + q, function( a ) { if ( O( a.keyCode, a.charCode ) )return false } ).bind( "change" + q, function() { p._change() } ).bind( "focus" + q, function() { function a() { p.element.select() } o ? a() : setTimeout( a, 0 ); p.focused = true; s = p; if ( !I && (w == "focus" || w == "both") ) p.showButtons() } ).bind( "blur" + q, function() { p.focused = false; if ( !I && (w == "focus" || w == "both") ) p.hideButtons() } ) }, _procOptions: function( a ) { var b = this, c = b.element, d = b.options, e = d.min, f = d.max, g = d.step, h = d.places, i = -1, j; if ( d.increment == "slow" ) d.increment = [{count: 1, mult: 1, delay: 250}, { count: 3, mult: 1, delay: 100 }, {count: 0, mult: 1, delay: 50}]; else if ( d.increment == "fast" ) d.increment = [{ count: 1, mult: 1, delay: 250 }, {count: 19, mult: 1, delay: 100}, {count: 80, mult: 1, delay: 20}, { count: 100, mult: 10, delay: 20 }, {count: 0, mult: 100, delay: 20}]; if ( e == null && (j = c.attr( "min" )) != null ) e = parseFloat( j ); if ( f == null && (j = c.attr( "max" )) != null ) f = parseFloat( j ); if ( !g && (j = c.attr( "step" )) != null )if ( j != "any" ) { g = parseFloat( j ); d.largeStep *= g } d.step = g = g || d.defaultStep; if ( h == null && (j = g + "").indexOf( "." ) != -1 ) h = j.length - j.indexOf( "." ) - 1; b.places = h; if ( f != null && e != null ) { if ( e > f ) e = f; i = Math.max( Math.max( i, d.format( f, h, c ).length ), d.format( e, h, c ).length ) } if ( a ) b.inputMaxLength = c[0].maxLength; j = b.inputMaxLength; if ( j > 0 ) { i = i > 0 ? Math.min( j, i ) : j; j = Math.pow( 10, i ) - 1; if ( f == null || f > j ) f = j; j = -(j + 1) / 10 + 1; if ( e == null || e < j ) e = j } if ( i > 0 ) c.attr( "maxlength", i ); d.min = e; d.max = f; b._change(); c.unbind( p + q ); if ( d.mouseWheel ) c.bind( p + q, b._mouseWheel ) }, _mouseWheel: function( b ) { var c = a.data( this, "spinner" ); if ( !c.options.disabled && c.focused && s === c ) { c._change(); c._doSpin( ((b.wheelDelta || -b.detail) > 0 ? 1 : -1) * c.options.step ); return false } }, _setTimer: function( a, b, c ) { function e() { d._spin( b, c ) } var d = this; d._stopSpin(); d.timer = setInterval( e, a ) }, _stopSpin: function() { if ( this.timer ) { clearInterval( this.timer ); this.timer = 0 } }, _startSpin: function( a, b ) { var c = this, d = c.options, e = d.increment; c._change(); c._doSpin( a * (b ? c.options.largeStep : c.options.step) ); if ( e && e.length > 0 ) { c.counter = 0; c.incCounter = 0; c._setTimer( e[0].delay, a, b ) } }, _spin: function( a, b ) { var c = this, d = c.options.increment, e = d[c.incCounter]; c._doSpin( a * e.mult * (b ? c.options.largeStep : c.options.step) ); c.counter++; if ( c.counter > e.count && c.incCounter < d.length - 1 ) { c.counter = 0; e = d[++c.incCounter]; c._setTimer( e.delay, a, b ) } }, _doSpin: function( a ) { var b = this, c = b.curvalue; if ( c == null ) c = (a > 0 ? b.options.min : b.options.max) || 0; b._setValue( c + a ) }, _parseValue: function() { var a = this.element.val(); return a ? this.options.parse( a, this.element ) : null }, _validate: function( a ) { var b = this.options, c = b.min, d = b.max; if ( a == null && !b.allowNull ) a = this.curvalue != null ? this.curvalue : c || d || 0; if ( d != null && a > d )return d; else if ( c != null && a < c )return c; else return a }, _change: function() { var a = this, b = a._parseValue(), c = a.options.min, d = a.options.max; if ( !a.selfChange ) { if ( isNaN( b ) ) b = a.curvalue; a._setValue( b, true ) } }, _setOption: function( b, c ) { a.Widget.prototype._setOption.call( this, b, c ); this._procOptions() }, increment: function() { this._doSpin( this.options.step ) }, decrement: function() { this._doSpin( -this.options.step ) }, showButtons: function( a ) { var b = this.btnContainer.stop(); if ( a ) b.css( "opacity", 1 ); else b.fadeTo( "fast", 1 ) }, hideButtons: function( a ) { var b = this.btnContainer.stop(); if ( a ) b.css( "opacity", 0 ); else b.fadeTo( "fast", 0 ); this.buttons.removeClass( d ) }, _setValue: function( a, b ) { var c = this; c.curvalue = a = c._validate( a ); c.element.val( a != null ? c.options.format( a, c.places, c.element ) : "" ); if ( !b ) { c.selfChange = true; c.element.change(); c.selfChange = false } }, value: function( a ) { if ( arguments.length ) { this._setValue( a ); return this.element } return this.curvalue }, enable: function() { this.buttons.removeClass( e ); this.element[0].disabled = false; a.Widget.prototype.enable.call( this ) }, disable: function() { this.buttons.addClass( e ).removeClass( d ); this.element[0].disabled = true; a.Widget.prototype.disable.call( this ) }, destroy: function( b ) { this.wrapper.remove(); this.element.unbind( q ).css( {width: this.oWidth, marginRight: this.oMargin} ); a.Widget.prototype.destroy.call( this ) } } ) })( jQuery ) redux/ReduxCore/inc/fields/spinner/vendor/spinner_custom.min.js000066600000017452152143340070020771 0ustar00(function(a,b){var c="ui-state-active",d="ui-state-hover",e="ui-state-disabled",f=a.ui.keyCode,g=f.UP,h=f.DOWN,i=f.RIGHT,j=f.LEFT,k=f.PAGE_UP,l=f.PAGE_DOWN,m=f.HOME,n=f.END,o=a.browser.msie,p=a.browser.mozilla?"DOMMouseScroll":"mousewheel",q=".uispinner",r=[g,h,i,j,k,l,m,n,f.BACKSPACE,f.DELETE,f.TAB],s;a.widget("ui.spinner",{options:{min:null,max:null,allowNull:false,group:"",point:".",prefix:"",suffix:"",places:null,defaultStep:1,largeStep:10,mouseWheel:true,increment:"slow",className:null,showOn:"always",width:95,upIconClass:"ui-icon-triangle-1-n",downIconClass:"ui-icon-triangle-1-s",format:function(a,b){var c=this,d=/(\d+)(\d{3})/,e=(isNaN(a)?0:Math.abs(a)).toFixed(b)+"";for(e=e.replace(".",c.point);d.test(e)&&c.group;e=e.replace(d,"$1"+c.group+"$2")){}return(a<0?"-":"")+c.prefix+e+c.suffix},parse:function(a){var b=this;if(b.group==".")a=a.replace(".","");if(b.point!=".")a=a.replace(b.point,".");return parseFloat(a.replace(/[^0-9\-\.]/g,""))}},_create:function(){var a=this,b=a.element,c=b.attr("type");if(!b.is("input")||c!="text"&&c!="number"){console.error("Invalid target for ui.spinner");return}a._procOptions(true);a._createButtons(b);if(!b.is(":enabled"))a.disable()},_createButtons:function(b){function R(){if(L){a(this).removeClass(c);p._stopSpin();L=false}return false}function Q(){if(!t.disabled){var b=p.element[0],d=this===C?1:-1;b.focus();b.select();a(this).addClass(c);L=true;p._startSpin(d)}return false}function P(a){function b(){G=0;a()}if(G){if(a===H)return;clearTimeout(G)}H=a;G=setTimeout(b,100)}function O(a,b){if(K)return false;var c=String.fromCharCode(b||a),d=p.options;if(c>="0"&&c<="9"||c=="-")return false;if(p.places>0&&c==d.point||c==d.group)return false;return true}function N(a){for(var b=0;b').css({width:(p.oWidth=x?b.width():b.outerWidth())-v,marginRight:"30px",marginLeft:"30px",textAlign:"center","float":"none",marginTop:0}).after('').next(),B=p.btnContainer=a('
    '+'
    '+'
    '+"
    "),C,D,E,F,G,H,I,J,K,L,M=b[0].dir=="rtl";if(u)A.addClass(u);A.append(B.css({height:y,left:0,top:0}));E=p.buttons=B.find(".ui-spinner-button");E.css({width:"30px",height:y-(x?E.outerHeight()-E.height():0)});E.eq(0).css({right:"0"});E.eq(1).css({left:"0"});C=E[0];D=E[1];F=E.find(".ui-icon");B.width("105px");if(w!="always")B.css("opacity",0);if(w=="hover"||w=="both")E.add(b).bind("mouseenter"+q,function(){P(function(){I=true;if(!p.focused||w=="hover")p.showButtons()})}).bind("mouseleave"+q,function S(){P(function(){I=false;if(!p.focused||w=="hover")p.hideButtons()})});E.hover(function(){p.buttons.removeClass(d);if(!t.disabled)a(this).addClass(d)},function(){a(this).removeClass(d)}).mousedown(Q).mouseup(R).mouseout(R);if(o)E.dblclick(function(){if(!t.disabled){p._change();p._doSpin((this===C?1:-1)*t.step)}return false}).bind("selectstart",function(){return false});b.bind("keydown"+q,function(b){var d,e,f,o=b.keyCode;if(b.ctrl||b.alt)return true;if(N(o))K=true;if(J)return false;switch(o){case g:case k:d=1;e=o==k;break;case h:case l:d=-1;e=o==l;break;case i:case j:d=o==i^M?1:-1;break;case m:f=p.options.min;if(f!=null)p._setValue(f);return false;case n:f=p.options.max;f=p.options.max;if(f!=null)p._setValue(f);return false}if(d){if(!J&&!t.disabled){keyDir=d;a(d>0?C:D).addClass(c);J=true;p._startSpin(d,e)}return false}}).bind("keyup"+q,function(a){if(a.ctrl||a.alt)return true;if(N(f))K=false;switch(a.keyCode){case g:case i:case k:case h:case j:case l:E.removeClass(c);p._stopSpin();J=false;return false}}).bind("keypress"+q,function(a){if(O(a.keyCode,a.charCode))return false}).bind("change"+q,function(){p._change()}).bind("focus"+q,function(){function a(){p.element.select()}o?a():setTimeout(a,0);p.focused=true;s=p;if(!I&&(w=="focus"||w=="both"))p.showButtons()}).bind("blur"+q,function(){p.focused=false;if(!I&&(w=="focus"||w=="both"))p.hideButtons()})},_procOptions:function(a){var b=this,c=b.element,d=b.options,e=d.min,f=d.max,g=d.step,h=d.places,i=-1,j;if(d.increment=="slow")d.increment=[{count:1,mult:1,delay:250},{count:3,mult:1,delay:100},{count:0,mult:1,delay:50}];else if(d.increment=="fast")d.increment=[{count:1,mult:1,delay:250},{count:19,mult:1,delay:100},{count:80,mult:1,delay:20},{count:100,mult:10,delay:20},{count:0,mult:100,delay:20}];if(e==null&&(j=c.attr("min"))!=null)e=parseFloat(j);if(f==null&&(j=c.attr("max"))!=null)f=parseFloat(j);if(!g&&(j=c.attr("step"))!=null)if(j!="any"){g=parseFloat(j);d.largeStep*=g}d.step=g=g||d.defaultStep;if(h==null&&(j=g+"").indexOf(".")!=-1)h=j.length-j.indexOf(".")-1;b.places=h;if(f!=null&&e!=null){if(e>f)e=f;i=Math.max(Math.max(i,d.format(f,h,c).length),d.format(e,h,c).length)}if(a)b.inputMaxLength=c[0].maxLength;j=b.inputMaxLength;if(j>0){i=i>0?Math.min(j,i):j;j=Math.pow(10,i)-1;if(f==null||f>j)f=j;j=-(j+1)/10+1;if(e==null||e0)c.attr("maxlength",i);d.min=e;d.max=f;b._change();c.unbind(p+q);if(d.mouseWheel)c.bind(p+q,b._mouseWheel)},_mouseWheel:function(b){var c=a.data(this,"spinner");if(!c.options.disabled&&c.focused&&s===c){c._change();c._doSpin(((b.wheelDelta||-b.detail)>0?1:-1)*c.options.step);return false}},_setTimer:function(a,b,c){function e(){d._spin(b,c)}var d=this;d._stopSpin();d.timer=setInterval(e,a)},_stopSpin:function(){if(this.timer){clearInterval(this.timer);this.timer=0}},_startSpin:function(a,b){var c=this,d=c.options,e=d.increment;c._change();c._doSpin(a*(b?c.options.largeStep:c.options.step));if(e&&e.length>0){c.counter=0;c.incCounter=0;c._setTimer(e[0].delay,a,b)}},_spin:function(a,b){var c=this,d=c.options.increment,e=d[c.incCounter];c._doSpin(a*e.mult*(b?c.options.largeStep:c.options.step));c.counter++;if(c.counter>e.count&&c.incCounter0?b.options.min:b.options.max)||0;b._setValue(c+a)},_parseValue:function(){var a=this.element.val();return a?this.options.parse(a,this.element):null},_validate:function(a){var b=this.options,c=b.min,d=b.max;if(a==null&&!b.allowNull)a=this.curvalue!=null?this.curvalue:c||d||0;if(d!=null&&a>d)return d;else if(c!=null&&a=parseInt(c.max)?c.max:a<=parseInt(c.min)?c.min:Math.round(a/c.step)*c.step,b.val(a).trigger("change")}}}(jQuery);redux/ReduxCore/inc/fields/spinner/field_spinner.css.map000066600000002527152143340070017410 0ustar00{ "version": 3, "mappings": "AACI,sCAAc;EACV,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;EAEhB,qDAAe;IACX,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,eAAe;IACvB,UAAU,EAAE,kBAAkB;IAC9B,MAAM,EAAE,4BAA4B;IACpC,YAAY,EAAE,YAAY;IAC1B,WAAW,EAAE,YAAY;IACzB,qBAAqB,EAAE,YAAY;IACnC,kBAAkB,EAAE,YAAY;IAChC,aAAa,EAAE,YAAY;AAInC,oCAAY;EACR,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,MAAM;AAInB,4CAAoB;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;AAGd,sDAA8B;EAC1B,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,QAAQ;EACjB,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,sCAAsC;EAClD,UAAU,EAAE,oCAAoC;EAChD,UAAU,EAAE,2EAA2E;EACvF,UAAU,EAAE,iCAAiC;EAC7C,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,IAAI;EACZ,kBAAkB,EAAE,IAAI;EACxB,eAAe,EAAE,IAAI;EACrB,UAAU,EAAE,IAAI;AAGpB;wCACgB;EACZ,UAAU,EAAE,sCAAsC;EAClD,UAAU,EAAE,oCAAoC;EAChD,UAAU,EAAE,2EAA2E;EACvF,UAAU,EAAE,iCAAiC;EAC7C,gBAAgB,EAAE,OAAO;AAG7B;iEACyC;EACrC,qBAAqB,EAAE,WAAW;EAClC,kBAAkB,EAAE,WAAW;EAC/B,aAAa,EAAE,WAAW;AAG9B;iEACyC;EACrC,qBAAqB,EAAE,WAAW;EAClC,kBAAkB,EAAE,WAAW;EAC/B,aAAa,EAAE,WAAW;AAI1B,oDAAS;EACL,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,iBAAiB;AAG7B,iEAAsB;EAClB,UAAU,EAAE,0QAAyQ;AAGzR,iEAAsB;EAClB,UAAU,EAAE,kQAAiQ", "sources": ["field_spinner.scss"], "names": [], "file": "field_spinner.css" }redux/ReduxCore/inc/fields/spinner/field_spinner.js000066600000010617152143340070016457 0ustar00/*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.spinner = redux.field_objects.spinner || {}; $( document ).ready( function() { //redux.field_objects.spinner.init(); } ); redux.field_objects.spinner.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-spinner:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.redux_spinner' ).each( function() { //slider init var spinner = $( this ).find( '.spinner-input' ).data(); spinner.id = $( this ).find( '.spinner-input' ).attr( 'id' ); el.find( "#" + spinner.id ).spinner( { value: parseFloat( spinner.val, null ), min: parseFloat( spinner.min, null ), max: parseFloat( spinner.max, null ), step: parseFloat( spinner.step, null ), range: "min", slide: function( event, ui ) { var input = $( "#" + spinner.id ); input.val( ui.value ); redux_change( input ); } } ); // Limit input for negative var neg = false; if ( parseInt( spinner.min, null ) < 0 ) { neg = true; } //el.find( "#" + spinner.id ).numeric( // { // allowMinus: neg, // min: spinner.min, // max: spinner.max // } //); } ); // Update the slider from the input and vice versa el.find( ".spinner-input" ).keyup( function() { $( this ).addClass( 'spinnerInputChange' ); } ); el.find( ".spinner-input" ).focus( function() { redux.field_objects.spinner.clean( $( this ).val(), $( this ) ); } ); el.find( '.spinner-input' ).typeWatch( { callback: function( value ) { redux.field_objects.spinner.clean( value, $( this ) ); }, wait: 500, highlight: false, captureLength: 1 } ); } ); }; redux.field_objects.spinner.clean = function( value, selector ) { if ( !selector.hasClass( 'spinnerInputChange' ) ) { return; } selector.removeClass( 'spinnerInputChange' ); var spinner = selector.data(); value = parseFloat( value ); if ( value === "" || value === null ) { value = spinner.min; } else if ( value >= parseInt( spinner.max ) ) { value = spinner.max; } else if ( value <= parseInt( spinner.min ) ) { value = spinner.min; } else { value = Math.round( value / spinner.step ) * spinner.step; } selector.val( value ).trigger( 'change' ); }; })( jQuery );redux/ReduxCore/inc/fields/spinner/field_spinner.scss000066600000006212152143340070017012 0ustar00.redux-container-spinner { .spinner-wrpr { position: relative; display: block; height: 30px; overflow: hidden; .spinner-input { position: relative !important; z-index: 1; width: 45px !important; height: 30px !important; background: #e7e7e7 !important; border: 1px solid #bfbfbf !important; border-right: 0 !important; border-left: 0 !important; -webkit-border-radius: 0 !important; -moz-border-radius: 0 !important; border-radius: 0 !important; } } .ui-spinner { position: static; display: inline; } .ui-spinner-buttons { position: absolute; padding: 0; } .ui-widget .ui-spinner-button { position: absolute; top: 0; padding: 0 0 30px; overflow: hidden; cursor: pointer; background: -moz-linear-gradient(#ffffff, #f3f3f3); background: -o-linear-gradient(#ffffff, #f3f3f3); background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f3f3f3)); background: linear-gradient(#ffffff, #f3f3f3); background-color: #ffffff; border: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .ui-spinner-button:hover, .ui-state-hover { background: -moz-linear-gradient(#f3f3f3, #ffffff); background: -o-linear-gradient(#f3f3f3, #ffffff); background: -webkit-gradient(linear, left top, left bottom, from(#f3f3f3), to(#ffffff)); background: linear-gradient(#f3f3f3, #ffffff); background-color: #f3f3f3; } .ui-corner-tr, .ui-spinner-button .ui-icon-triangle-1-n { -webkit-border-radius: 0 5px 5px 0; -moz-border-radius: 0 5px 5px 0; border-radius: 0 5px 5px 0; } .ui-corner-br, .ui-spinner-button .ui-icon-triangle-1-s { -webkit-border-radius: 5px 0 0 5px; -moz-border-radius: 5px 0 0 5px; border-radius: 5px 0 0 5px; } .ui-spinner-button { .ui-icon { top: 0; display: block; width: 28px; height: 28px; margin: 0; border: 1px solid #b7b7b7; } .ui-icon-triangle-1-n { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpsjwsKADAIQu3u3tsRY6M5gz7w0AqSQFLdZ3ZRgmf44JQ/EOZ9oYOsiDviVemP2oYoWCwBBgDpO6VXVo3RyQAAAABJRU5ErkJggg==) 10px 10px no-repeat!important; } .ui-icon-triangle-1-s { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNpi+P//PwM6bmlpwS4IorEKokggC8Il0AVhEv9x6sAmiaz9P05XIUsygmVRAUiAESDAAFHcpVdWtdj/AAAAAElFTkSuQmCC) 10px 10px no-repeat!important; } } } @media screen and (max-width: 570px) { .redux-container-spinner { .spinner-wrpr { //text-align: center; // Need to center align this SOMEHOW } } }redux/ReduxCore/inc/fields/spinner/arrow_left.png000066600000000226152143340070016145 0ustar00PNG  IHDR /3tEXtSoftwareAdobe ImageReadyqe<8IDATxb?:nii. H %aq&?NW!K2eQH QܥWVIENDB`redux/ReduxCore/inc/fields/dimensions/field_dimensions.css.map000066600000000616152143340070020571 0ustar00{ "version": 3, "mappings": "AACI;2CACgB;EACZ,KAAK,EAAE,eAAe;EACtB,KAAK,EAAE,IAAI;AAGf,mDAAwB;EACpB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;;AAI1B,oCAAqC;EAGzB,yDAAM;IACF,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,gBAAgB;EAG3B,2DAAQ;IACJ,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;EAIxB,2CAAgB;IACZ,UAAU,EAAE,GAAG", "sources": ["field_dimensions.scss"], "names": [], "file": "field_dimensions.css" }redux/ReduxCore/inc/fields/dimensions/field_dimensions.min.js000066600000002361152143340070020422 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.dimensions=redux.field_objects.dimensions||{},a(document).ready(function(){}),redux.field_objects.dimensions.init=function(b){b||(b=a(document).find(".redux-container-dimensions:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init");var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(".redux-dimensions-units").select2(d),b.find(".redux-dimensions-input").on("change",function(){var c=a(this).parents(".redux-field:first").find(".field-units").val();0!==a(this).parents(".redux-field:first").find(".redux-dimensions-units").length&&(c=a(this).parents(".redux-field:first").find(".redux-dimensions-units option:selected").val()),"undefined"!=typeof c?b.find("#"+a(this).attr("rel")).val(a(this).val()+c):b.find("#"+a(this).attr("rel")).val(a(this).val())}),b.find(".redux-dimensions-units").on("change",function(){a(this).parents(".redux-field:first").find(".redux-dimensions-input").change()})}})}}(jQuery);redux/ReduxCore/inc/fields/dimensions/field_dimensions.less000066600000001232152143340070020166 0ustar00.redux-dimensions-container { select, .select_wrapper { width: 80px !important; float: left; } .field-dimensions-input { margin-right: 10px; margin-bottom: 7px; } } @media screen and (max-width: 782px) { .redux-dimensions-container { .field-dimensions-input { input { display: inline-block !important; width: 100px !important; } .add-on { padding: 7px 4px; font-size: 16px; line-height: 1.5; } } .select_wrapper { margin-top: 6px; } } }redux/ReduxCore/inc/fields/dimensions/field_dimensions.css000066600000001004152143340070020005 0ustar00.redux-dimensions-container select,.redux-dimensions-container .select_wrapper{width:65px !important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block !important;width:100px !important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}redux/ReduxCore/inc/fields/dimensions/field_dimensions.js000066600000005445152143340070017646 0ustar00 /*global jQuery, document, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.dimensions = redux.field_objects.dimensions || {}; $( document ).ready( function() { //redux.field_objects.dimensions.init(); } ); redux.field_objects.dimensions.init = function( selector ) { if ( !selector ) { selector = $( document ).find( '.redux-container-dimensions:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; var select2_handle = el.find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } el.find( ".redux-dimensions-units" ).select2( default_params ); el.find( '.redux-dimensions-input' ).on( 'change', function() { var units = $( this ).parents( '.redux-field:first' ).find( '.field-units' ).val(); if ( $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units' ).length !== 0 ) { units = $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-units option:selected' ).val(); } if ( typeof units !== 'undefined' ) { el.find( '#' + $( this ).attr( 'rel' ) ).val( $( this ).val() + units ); } else { el.find( '#' + $( this ).attr( 'rel' ) ).val( $( this ).val() ); } } ); el.find( '.redux-dimensions-units' ).on( 'change', function() { $( this ).parents( '.redux-field:first' ).find( '.redux-dimensions-input' ).change(); } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/dimensions/field_dimensions.php000066600000037133152143340070020020 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } //function /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { /* * So, in_array() wasn't doing it's job for checking a passed array for a proper value. * It's wonky. It only wants to check the keys against our array of acceptable values, and not the key's * value. So we'll use this instead. Fortunately, a single no array value can be passed and it won't * take a dump. */ // No errors please $defaults = array( 'width' => true, 'height' => true, 'units_extended' => false, 'units' => 'px', 'mode' => array( 'width' => false, 'height' => false, ), ); $this->field = wp_parse_args( $this->field, $defaults ); $defaults = array( 'width' => '', 'height' => '', 'units' => 'px' ); $this->value = wp_parse_args( $this->value, $defaults ); if ( isset( $this->value['unit'] ) ) { $this->value['units'] = $this->value['unit']; } /* * Acceptable values checks. If the passed variable doesn't pass muster, we unset them * and reset them with default values to avoid errors. */ // If units field has a value but is not an acceptable value, unset the variable if ( isset( $this->field['units'] ) && ! Redux_Helpers::array_in_array( $this->field['units'], array( '', false, '%', 'in', 'cm', 'mm', 'em', 'ex', 'pt', 'pc', 'px', 'rem' ) ) ) { unset( $this->field['units'] ); } //if there is a default unit value but is not an accepted value, unset the variable if ( isset( $this->value['units'] ) && ! Redux_Helpers::array_in_array( $this->value['units'], array( '', '%', 'in', 'cm', 'mm', 'em', 'ex', 'pt', 'pc', 'px' ) ) ) { unset( $this->value['units'] ); } /* * Since units field could be an array, string value or bool (to hide the unit field) * we need to separate our functions to avoid those nasty PHP index notices! */ // if field units has a value and IS an array, then evaluate as needed. if ( isset( $this->field['units'] ) && ! is_array( $this->field['units'] ) ) { //if units fields has a value but units value does not then make units value the field value if ( isset( $this->field['units'] ) && ! isset( $this->value['units'] ) || $this->field['units'] == false ) { $this->value['units'] = $this->field['units']; // If units field does NOT have a value and units value does NOT have a value, set both to blank (default?) } else if ( ! isset( $this->field['units'] ) && ! isset( $this->value['units'] ) ) { $this->field['units'] = 'px'; $this->value['units'] = 'px'; // If units field has NO value but units value does, then set unit field to value field } else if ( ! isset( $this->field['units'] ) && isset( $this->value['units'] ) ) { $this->field['units'] = $this->value['units']; // if unit value is set and unit value doesn't equal unit field (coz who knows why) // then set unit value to unit field } elseif ( isset( $this->value['units'] ) && $this->value['units'] !== $this->field['units'] ) { $this->value['units'] = $this->field['units']; } // do stuff based on unit field NOT set as an array } elseif ( isset( $this->field['units'] ) && is_array( $this->field['units'] ) ) { // nothing to do here, but I'm leaving the construct just in case I have to debug this again. } echo '
    '; if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } // This used to be unit field, but was giving the PHP index error when it was an array, // so I changed it. echo ''; /** * Width * */ if ( $this->field['width'] === true ) { if ( ! empty( $this->value['width'] ) && strpos( $this->value['width'], $this->value['units'] ) === false ) { $this->value['width'] = filter_var( $this->value['width'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); if ( $this->field['units'] !== false ) { $this->value['width'] .= $this->value['units']; } } echo '
    '; echo ''; echo ''; echo '
    '; } /** * Height * */ if ( $this->field['height'] === true ) { if ( ! empty( $this->value['height'] ) && strpos( $this->value['height'], $this->value['units'] ) === false ) { $this->value['height'] = filter_var( $this->value['height'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ); if ( $this->field['units'] !== false ) { $this->value['height'] .= $this->value['units']; } } echo '
    '; echo ''; echo ''; echo '
    '; } /** * Units * */ // If units field is set and units field NOT false then // fill out the options object and show it, otherwise it's hidden // and the default units value will apply. if ( isset( $this->field['units'] ) && $this->field['units'] !== false ) { echo '
    '; echo '
    '; }; echo "
    "; } //function /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ function enqueue() { wp_enqueue_style( 'select2-css' ); wp_enqueue_script( 'redux-field-dimensions-js', ReduxFramework::$_url . 'inc/fields/dimensions/field_dimensions' . Redux_Functions::isMin() . '.js', array( 'jquery', 'select2-js', 'redux-js' ), time(), true ); if ( $this->parent->args['dev_mode'] ) { wp_enqueue_style( 'redux-field-dimensions-css', ReduxFramework::$_url . 'inc/fields/dimensions/field_dimensions.css', array(), time(), 'all' ); } } public function output() { // if field units has a value and IS an array, then evaluate as needed. if ( isset( $this->field['units'] ) && ! is_array( $this->field['units'] ) ) { //if units fields has a value but units value does not then make units value the field value if ( isset( $this->field['units'] ) && ! isset( $this->value['units'] ) || $this->field['units'] == false ) { $this->value['units'] = $this->field['units']; // If units field does NOT have a value and units value does NOT have a value, set both to blank (default?) } else if ( ! isset( $this->field['units'] ) && ! isset( $this->value['units'] ) ) { $this->field['units'] = 'px'; $this->value['units'] = 'px'; // If units field has NO value but units value does, then set unit field to value field } else if ( ! isset( $this->field['units'] ) && isset( $this->value['units'] ) ) { $this->field['units'] = $this->value['units']; // if unit value is set and unit value doesn't equal unit field (coz who knows why) // then set unit value to unit field } elseif ( isset( $this->value['units'] ) && $this->value['units'] !== $this->field['units'] ) { $this->value['units'] = $this->field['units']; } // do stuff based on unit field NOT set as an array } elseif ( isset( $this->field['units'] ) && is_array( $this->field['units'] ) ) { // nothing to do here, but I'm leaving the construct just in case I have to debug this again. } $units = isset( $this->value['units'] ) ? $this->value['units'] : ""; $height = isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'height'; $width = isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'width'; $cleanValue = array( $height => isset( $this->value['height'] ) ? filter_var( $this->value['height'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : '', $width => isset( $this->value['width'] ) ? filter_var( $this->value['width'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : '', ); $style = ""; foreach ( $cleanValue as $key => $value ) { // Output if it's a numeric entry if ( isset( $value ) && is_numeric( $value ) ) { $style .= $key . ':' . $value . $units . ';'; } } if ( ! empty( $style ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $keys = implode( ",", $this->field['output'] ); $this->parent->outputCSS .= $keys . "{" . $style . '}'; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $keys = implode( ",", $this->field['compiler'] ); $this->parent->compilerCSS .= $keys . "{" . $style . '}'; } } } //function } //class } redux/ReduxCore/inc/fields/dimensions/field_dimensions.scss000066600000001242152143340070020174 0ustar00.redux-dimensions-container { select, .select_wrapper { width: 65px !important; float: left; } .field-dimensions-input { margin-right: 10px; margin-bottom: 7px; } } @media screen and (max-width: 782px) { .redux-dimensions-container { .field-dimensions-input { input { display: inline-block !important; width: 100px !important; } .add-on { padding: 7px 4px; font-size: 16px; line-height: 1.5; } } .select_wrapper { margin-top: 6px; } } } redux/ReduxCore/inc/fields/spacing/field_spacing.scss000066600000001223152143340070016723 0ustar00.redux-container-spacing { select, .select_wrapper { width: 80px !important; float: left; } .field-spacing-input { margin-right: 10px; margin-bottom: 7px; } } @media screen and (max-width: 782px) { .redux-container-spacing { .field-spacing-input { input { display: inline-block !important; width: 70px !important; } .add-on { padding: 7px 4px; font-size: 16px; line-height: 1.5; } } .select_wrapper { margin-top: 6px; } } }redux/ReduxCore/inc/fields/spacing/field_spacing.php000066600000046136152143340070016553 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { /* * So, in_array() wasn't doing it's job for checking a passed array for a proper value. * It's wonky. It only wants to check the keys against our array of acceptable values, and not the key's * value. So we'll use this instead. Fortunately, a single no array value can be passed and it won't * take a dump. */ // No errors please // Set field values $defaults = array( 'units' => '', 'mode' => 'padding', 'top' => true, 'bottom' => true, 'all' => false, 'left' => true, 'right' => true, 'units_extended' => false, 'display_units' => true ); $this->field = wp_parse_args( $this->field, $defaults ); // Set default values $defaults = array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', 'units' => 'px' ); $this->value = wp_parse_args( $this->value, $defaults ); /* * Acceptable values checks. If the passed variable doesn't pass muster, we unset them * and reset them with default values to avoid errors. */ // If units field has a value but is not an acceptable value, unset the variable if ( isset( $this->field['units'] ) && ! Redux_Helpers::array_in_array( $this->field['units'], array( '', false, '%', 'in', 'cm', 'mm', 'em', 'rem', 'ex', 'pt', 'pc', 'px' ) ) ) { unset( $this->field['units'] ); } //if there is a default unit value but is not an accepted value, unset the variable if ( isset( $this->value['units'] ) && ! Redux_Helpers::array_in_array( $this->value['units'], array( '', '%', 'in', 'cm', 'mm', 'em', 'rem', 'ex', 'pt', 'pc', 'px' ) ) ) { unset( $this->value['units'] ); } // if ($this->field['mode'] == "absolute") { // $this->field['units'] = ""; // $this->value['units'] = ""; // } if ( $this->field['units'] == false ) { $this->value == ""; } if ( isset( $this->field['mode'] ) && ! in_array( $this->field['mode'], array( 'margin', 'padding' ) ) ) { if ( $this->field['mode'] == "absolute" ) { $absolute = true; } $this->field['mode'] = ""; } $value = array( 'top' => isset( $this->value[ $this->field['mode'] . '-top' ] ) ? filter_var( $this->value[ $this->field['mode'] . '-top' ], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['top'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), 'right' => isset( $this->value[ $this->field['mode'] . '-right' ] ) ? filter_var( $this->value[ $this->field['mode'] . '-right' ], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['right'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), 'bottom' => isset( $this->value[ $this->field['mode'] . '-bottom' ] ) ? filter_var( $this->value[ $this->field['mode'] . '-bottom' ], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['bottom'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ), 'left' => isset( $this->value[ $this->field['mode'] . '-left' ] ) ? filter_var( $this->value[ $this->field['mode'] . '-left' ], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) : filter_var( $this->value['left'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) ); // if field units has a value and is NOT an array, then evaluate as needed. if ( isset( $this->field['units'] ) && ! is_array( $this->field['units'] ) ) { //if units fields has a value and is not empty but units value does not then make units value the field value if ( isset( $this->field['units'] ) && $this->field['units'] != "" && ! isset( $this->value['units'] ) || $this->field['units'] == false ) { $this->value['units'] = $this->field['units']; // If units field does NOT have a value and units value does NOT have a value, set both to blank (default?) } else if ( ! isset( $this->field['units'] ) && ! isset( $this->value['units'] ) ) { $this->field['units'] = 'px'; $this->value['units'] = 'px'; // If units field has NO value but units value does, then set unit field to value field } else if ( ! isset( $this->field['units'] ) && isset( $this->value['units'] ) ) { // If Value is defined $this->field['units'] = $this->value['units']; // if unit value is set and unit value doesn't equal unit field (coz who knows why) // then set unit value to unit field } elseif ( isset( $this->value['units'] ) && $this->value['units'] !== $this->field['units'] ) { $this->value['units'] = $this->field['units']; } // do stuff based on unit field NOT set as an array } elseif ( isset( $this->field['units'] ) && is_array( $this->field['units'] ) ) { // nothing to do here, but I'm leaving the construct just in case I have to debug this again. } if ( isset( $this->field['units'] ) ) { $value['units'] = $this->value['units']; } $this->value = $value; if ( ! empty( $this->field['mode'] ) ) { $this->field['mode'] = $this->field['mode'] . "-"; } $defaults = array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', 'units' => '' ); $this->value = wp_parse_args( $this->value, $defaults ); if ( isset( $this->field['select2'] ) ) { // if there are any let's pass them to js $select2_params = json_encode( $this->field['select2'] ); $select2_params = htmlspecialchars( $select2_params, ENT_QUOTES ); echo ''; } echo ''; if ( isset( $this->field['all'] ) && $this->field['all'] == true ) { echo '
    '; } if ( $this->field['top'] === true ) { echo ''; } if ( $this->field['right'] === true ) { echo ''; } if ( $this->field['bottom'] === true ) { echo ''; } if ( $this->field['left'] === true ) { echo ''; } if ( ! isset( $this->field['all'] ) || $this->field['all'] !== true ) { /** * Top * */ if ( $this->field['top'] === true ) { echo '
    '; } /** * Right * */ if ( $this->field['right'] === true ) { echo '
    '; } /** * Bottom * */ if ( $this->field['bottom'] === true ) { echo '
    '; } /** * Left * */ if ( $this->field['left'] === true ) { echo '
    '; } } /** * Units * */ if ( $this->field['units'] !== false && is_array( $this->field['units'] ) /* && !isset($absolute) */ && $this->field['display_units'] == true ) { echo '
    '; echo '
    '; } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 1.0.0 */ function enqueue() { wp_enqueue_style( 'select2-css' ); wp_enqueue_script( 'redux-field-spacing-js', ReduxFramework::$_url . 'inc/fields/spacing/field_spacing' . Redux_Functions::isMin() . '.js', array( 'jquery', 'select2-js', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-spacing-css', ReduxFramework::$_url . 'inc/fields/spacing/field_spacing.css', array(), time(), 'all' ); } } //function public function output() { if ( ! isset( $this->field['mode'] ) ) { $this->field['mode'] = "padding"; } if ( isset( $this->field['mode'] ) && ! in_array( $this->field['mode'], array( 'padding', 'absolute', 'margin' ) ) ) { $this->field['mode'] = ""; } $mode = ( $this->field['mode'] != "absolute" ) ? $this->field['mode'] : ""; $units = isset( $this->value['units'] ) ? $this->value['units'] : ""; $style = ''; if ( ! empty( $mode ) ) { foreach ( $this->value as $key => $value ) { if ( $key == "units" ) { continue; } // Strip off any alpha for is_numeric test - kp $num_no_alpha = preg_replace('/[^\d.-]/', '', $value); // Output if it's a numeric entry if ( isset( $value ) && is_numeric( $num_no_alpha ) ) { $style .= $key . ':' . $value . ';'; } } } else { $this->value['top'] = isset( $this->value['top'] ) ? $this->value['top'] : 0; $this->value['bottom'] = isset( $this->value['bottom'] ) ? $this->value['bottom'] : 0; $this->value['left'] = isset( $this->value['left'] ) ? $this->value['left'] : 0; $this->value['right'] = isset( $this->value['right'] ) ? $this->value['right'] : 0; $cleanValue = array( 'top' => isset( $this->value[ $mode . '-top' ] ) ? filter_var( $this->value[ $mode . '-top' ], FILTER_SANITIZE_NUMBER_INT ) : filter_var( $this->value['top'], FILTER_SANITIZE_NUMBER_INT ), 'right' => isset( $this->value[ $mode . '-right' ] ) ? filter_var( $this->value[ $mode . '-right' ], FILTER_SANITIZE_NUMBER_INT ) : filter_var( $this->value['right'], FILTER_SANITIZE_NUMBER_INT ), 'bottom' => isset( $this->value[ $mode . '-bottom' ] ) ? filter_var( $this->value[ $mode . '-bottom' ], FILTER_SANITIZE_NUMBER_INT ) : filter_var( $this->value['bottom'], FILTER_SANITIZE_NUMBER_INT ), 'left' => isset( $this->value[ $mode . '-left' ] ) ? filter_var( $this->value[ $mode . '-left' ], FILTER_SANITIZE_NUMBER_INT ) : filter_var( $this->value['left'], FILTER_SANITIZE_NUMBER_INT ) ); if ( isset( $this->field['all'] ) && true == $this->field['all'] ) { $style .= $mode . 'top:' . $cleanValue['top'] . $units . ';'; $style .= $mode . 'bottom:' . $cleanValue['top'] . $units . ';'; $style .= $mode . 'right:' . $cleanValue['top'] . $units . ';'; $style .= $mode . 'left:' . $cleanValue['top'] . $units . ';'; } else { if ( true == $this->field['top'] ) { $style .= $mode . 'top:' . $cleanValue['top'] . $units . ';'; } if ( true == $this->field['bottom'] ) { $style .= $mode . 'bottom:' . $cleanValue['bottom'] . $units . ';'; } if ( true == $this->field['left'] ) { $style .= $mode . 'left:' . $cleanValue['left'] . $units . ';'; } if ( true == $this->field['right'] ) { $style .= $mode . 'right:' . $cleanValue['right'] . $units . ';'; } } } if ( ! empty( $style ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $keys = implode( ",", $this->field['output'] ); $this->parent->outputCSS .= $keys . "{" . $style . '}'; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $keys = implode( ",", $this->field['compiler'] ); $this->parent->compilerCSS .= $keys . "{" . $style . '}'; } } } } }redux/ReduxCore/inc/fields/spacing/field_spacing.css.map000066600000000606152143340070017320 0ustar00{ "version": 3, "mappings": "AACI;wCACgB;EACZ,KAAK,EAAE,eAAe;EACtB,KAAK,EAAE,IAAI;AAGf,6CAAqB;EACjB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;;AAI1B,oCAAqC;EAGzB,mDAAM;IACF,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,eAAe;EAG1B,qDAAQ;IACJ,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;EAIxB,wCAAgB;IACZ,UAAU,EAAE,GAAG", "sources": ["field_spacing.scss"], "names": [], "file": "field_spacing.css" }redux/ReduxCore/inc/fields/spacing/field_spacing.css000066600000000750152143340070016544 0ustar00.redux-container-spacing select,.redux-container-spacing .select_wrapper{width:80px !important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-container-spacing .field-spacing-input input{display:inline-block !important;width:70px !important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}redux/ReduxCore/inc/fields/spacing/field_spacing.min.js000066600000002527152143340070017156 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.spacing=redux.field_objects.spacing||{},a(document).ready(function(){}),redux.field_objects.spacing.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-spacing:visible")),a(b).each(function(){var b=a(this),c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),!c.is(":hidden")&&c.hasClass("redux-field-init")){c.removeClass("redux-field-init");var d={width:"resolve",triggerChange:!0,allowClear:!0},e=b.find(".select2_params");if(e.size()>0){var f=e.val();f=JSON.parse(f),d=a.extend({},d,f)}b.find(".redux-spacing-units").select2(d),b.find(".redux-spacing-input").on("change",function(){var b=a(this).parents(".redux-field:first").find(".field-units").val();0!==a(this).parents(".redux-field:first").find(".redux-spacing-units").length&&(b=a(this).parents(".redux-field:first").find(".redux-spacing-units option:selected").val());var c=a(this).val();"undefined"!=typeof b&&c&&(c+=b),a(this).hasClass("redux-spacing-all")?a(this).parents(".redux-field:first").find(".redux-spacing-value").each(function(){a(this).val(c)}):a("#"+a(this).attr("rel")).val(c)}),b.find(".redux-spacing-units").on("change",function(){a(this).parents(".redux-field:first").find(".redux-spacing-input").change()})}})}}(jQuery);redux/ReduxCore/inc/fields/spacing/field_spacing.js000066600000006206152143340070016372 0ustar00/*global redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.spacing = redux.field_objects.spacing || {}; $( document ).ready( function() { //redux.field_objects.spacing.init(); } ); redux.field_objects.spacing.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-spacing:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } var default_params = { width: 'resolve', triggerChange: true, allowClear: true }; var select2_handle = el.find( '.select2_params' ); if ( select2_handle.size() > 0 ) { var select2_params = select2_handle.val(); select2_params = JSON.parse( select2_params ); default_params = $.extend( {}, default_params, select2_params ); } el.find( ".redux-spacing-units" ).select2( default_params ); el.find( '.redux-spacing-input' ).on( 'change', function() { var units = $( this ).parents( '.redux-field:first' ).find( '.field-units' ).val(); if ( $( this ).parents( '.redux-field:first' ).find( '.redux-spacing-units' ).length !== 0 ) { units = $( this ).parents( '.redux-field:first' ).find( '.redux-spacing-units option:selected' ).val(); } var value = $( this ).val(); if ( typeof units !== 'undefined' && value ) { value += units; } if ( $( this ).hasClass( 'redux-spacing-all' ) ) { $( this ).parents( '.redux-field:first' ).find( '.redux-spacing-value' ).each( function() { $( this ).val( value ); } ); } else { $( '#' + $( this ).attr( 'rel' ) ).val( value ); } } ); el.find( '.redux-spacing-units' ).on( 'change', function() { $( this ).parents( '.redux-field:first' ).find( '.redux-spacing-input' ).change(); } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/textarea/field_textarea.php000066600000006347152143340070017135 0ustar00field['test'] This is cool. * @param string|boolean $field[default] Default value for this field. * @return Test * @see ParentClass * @since Redux 3.0.9 * @todo Still need to fix this! * @var string cool * @var int notcool * @param string[] $options { * @type boolean $required Whether this element is required * @type string $label The display name for this element */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'ReduxFramework_textarea' ) ) { class ReduxFramework_textarea { /** * Field Constructor. * * @param $value Constructed by Redux class. Based on the passing in $field['defaults'] value and what is stored in the database. * @param $parent ReduxFramework object is passed for easier pointing. * * @since ReduxFramework 1.0.0 * @type string $field [test] Description. Default . Accepts , . */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 * * @param array $arr (See above) * * @return Object A new editor object. **/ function render() { $this->field['placeholder'] = isset( $this->field['placeholder'] ) ? $this->field['placeholder'] : ""; $this->field['rows'] = isset( $this->field['rows'] ) ? $this->field['rows'] : 6; $readonly = ( isset( $this->field['readonly'] ) && $this->field['readonly']) ? ' readonly="readonly"' : ''; // The $this->field variables are already escaped in the ReduxFramework Class. ?> . * * @package ReduxFramework * @subpackage Field_Gallery * @author Abdullah Almesbahi (cadr-sa) * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_gallery' ) ) { /** * Main ReduxFramework_gallery class * * @since 3.0.0 */ class ReduxFramework_gallery { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { echo '
    '; if ( ! empty( $this->value ) ) { $ids = explode( ',', $this->value ); foreach ( $ids as $attachment_id ) { $img = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); echo ''; echo ''; echo ''; } } echo '
    '; echo '' . __( 'Add/Edit Gallery', 'redux-framework' ) . ' '; echo '' . __( 'Clear Gallery', 'redux-framework' ) . ''; echo ''; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ( function_exists( 'wp_enqueue_media' ) ) { wp_enqueue_media(); } else { wp_enqueue_script( 'media-upload' ); wp_enqueue_script( 'thickbox' ); wp_enqueue_style( 'thickbox' ); } wp_enqueue_script( 'redux-field-gallery-js', ReduxFramework::$_url . 'inc/fields/gallery/field_gallery' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), time(), true ); } } }redux/ReduxCore/inc/fields/gallery/field_gallery.min.js000066600000002665152143340070017207 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.gallery=redux.field_objects.gallery||{},a(document).ready(function(){}),redux.field_objects.gallery.init=function(b){b||(b=a(document).find(".redux-container-gallery:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.on({click:function(b){wp.media.view.Settings.Gallery=wp.media.view.Settings.Gallery.extend({template:function(a){}});var c=a(this).closest("fieldset");if("clear-gallery"===b.currentTarget.id){c.find(".gallery_values").val("");return void c.find(".screenshot").html("")}if("undefined"!=typeof wp&&wp.media&&wp.media.gallery){b.preventDefault();var d,e=(a(this),c.find(".gallery_values").val());d=e?'[gallery ids="'+e+'"]':'[gallery ids="0"]';var f=wp.media.gallery.edit(d);return f.state("gallery-edit").on("update",function(a){c.find(".screenshot").html("");var b,d,e="",f=a.models.map(function(a){return b=a.toJSON(),d="undefined"!=typeof b.sizes&&"undefined"!=typeof b.sizes.thumbnail?b.sizes.thumbnail.url:b.url,e="",c.find(".screenshot").append(e),a.id});c.find(".gallery_values").val(f.join(",")),redux_change(c.find(".gallery_values"))}),!1}}},".gallery-attachments"))})}}(jQuery);redux/ReduxCore/inc/fields/gallery/field_gallery.js000066600000011556152143340070016424 0ustar00/* global redux_change, wp */ /*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.gallery = redux.field_objects.gallery || {}; $( document ).ready( function() { //redux.field_objects.gallery.init(); } ); redux.field_objects.gallery.init = function( selector ) { if ( !selector ) { selector = $( document ).find( '.redux-container-gallery:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // When the user clicks on the Add/Edit gallery button, we need to display the gallery editing el.on( { click: function( event ) { // hide gallery settings used for posts/pages wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({ template: function(view){ return; } }); var current_gallery = $( this ).closest( 'fieldset' ); if ( event.currentTarget.id === 'clear-gallery' ) { //remove value from input var rmVal = current_gallery.find( '.gallery_values' ).val( '' ); //remove preview images current_gallery.find( ".screenshot" ).html( "" ); return; } // Make sure the media gallery API exists if ( typeof wp === 'undefined' || !wp.media || !wp.media.gallery ) { return; } event.preventDefault(); // Activate the media editor var $$ = $( this ); var val = current_gallery.find( '.gallery_values' ).val(); var final; if ( !val ) { final = '[gallery ids="0"]'; } else { final = '[gallery ids="' + val + '"]'; } var frame = wp.media.gallery.edit( final ); // When the gallery-edit state is updated, copy the attachment ids across frame.state( 'gallery-edit' ).on( 'update', function( selection ) { //clear screenshot div so we can append new selected images current_gallery.find( ".screenshot" ).html( "" ); var element, preview_html = "", preview_img; var ids = selection.models.map( function( e ) { element = e.toJSON(); //preview_img = typeof element.sizes.thumbnail !== 'undefined' ? element.sizes.thumbnail.url : element.url; preview_img = (typeof element.sizes !== "undefined" && typeof element.sizes.thumbnail !== 'undefined') ? element.sizes.thumbnail.url : element.url; preview_html = ""; current_gallery.find( ".screenshot" ).append( preview_html ); return e.id; } ); current_gallery.find( '.gallery_values' ).val( ids.join( ',' ) ); redux_change( current_gallery.find( '.gallery_values' ) ); } ); return false; } }, '.gallery-attachments' ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/checkbox/field_checkbox.min.js000066600000001334152143340070017455 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.checkbox=redux.field_objects.checkbox||{},a(document).ready(function(){}),redux.field_objects.checkbox.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-checkbox:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".checkbox").on("click",function(b){var c=0;a(this).is(":checked")&&(c=a(this).parent().find(".checkbox-check").attr("data-val")),a(this).parent().find(".checkbox-check").val(c),redux_change(a(this))}))})}}(jQuery);redux/ReduxCore/inc/fields/checkbox/field_checkbox.css.map000066600000000375152143340070017627 0ustar00{ "version": 3, "mappings": "AACI,+BAAM;EACF,cAAc,EAAE,GAAG;EACnB,KAAK,EAAE,IAAI;EAEX,2CAAY;IACR,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI", "sources": ["field_checkbox.scss"], "names": [], "file": "field_checkbox.css" }redux/ReduxCore/inc/fields/checkbox/field_checkbox.js000066600000003373152143340070016700 0ustar00/** * Redux Checkbox * Dependencies : jquery * Feature added by : Dovy Paukstys * Date : 17 June 2014 */ /*global redux_change, wp, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.checkbox = redux.field_objects.checkbox || {}; $( document ).ready( function() { //redux.field_objects.checkbox.init(); } ); redux.field_objects.checkbox.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-checkbox:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.checkbox' ).on( 'click', function( e ) { var val = 0; if ( $( this ).is( ':checked' ) ) { val = $( this ).parent().find( '.checkbox-check' ).attr( 'data-val' ); } $( this ).parent().find( '.checkbox-check' ).val( val ); redux_change( $( this ) ); } ); } ); }; })( jQuery ); redux/ReduxCore/inc/fields/checkbox/field_checkbox.scss000066600000000347152143340070017235 0ustar00.redux-container-checkbox { label { vertical-align: top; width: 100%; .field-desc { margin-top: 0; float: left; width: 93%; clear: none; } } }redux/ReduxCore/inc/fields/checkbox/field_checkbox.css000066600000000227152143340070017047 0ustar00.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}redux/ReduxCore/inc/fields/checkbox/field_checkbox.php000066600000014763152143340070017060 0ustar00. * * @package ReduxFramework * @subpackage Field_Checkbox * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @version 3.0.0 */ // Exit if accessed directly if ( !defined ( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( !class_exists ( 'ReduxFramework_checkbox' ) ) { /** * Main ReduxFramework_checkbox class * * @since 1.0.0 */ class ReduxFramework_checkbox { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct ( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render () { if( !empty( $this->field['data'] ) && empty( $this->field['options'] ) ) { if (empty($this->field['args'])) { $this->field['args'] = array(); } $this->field['options'] = $this->parent->get_wordpress_data($this->field['data'], $this->field['args']); if (empty($this->field['options'])) { return; } } $this->field[ 'data_class' ] = ( isset ( $this->field[ 'multi_layout' ] ) ) ? 'data-' . $this->field[ 'multi_layout' ] : 'data-full'; if ( !empty ( $this->field[ 'options' ] ) && ( is_array ( $this->field[ 'options' ] ) || is_array ( $this->field[ 'default' ] ) ) ) { echo '
      '; if ( !isset ( $this->value ) ) { $this->value = array(); } if ( !is_array ( $this->value ) ) { $this->value = array(); } if ( empty ( $this->field[ 'options' ] ) && isset ( $this->field[ 'default' ] ) && is_array ( $this->field[ 'default' ] ) ) { $this->field[ 'options' ] = $this->field[ 'default' ]; } foreach ( $this->field[ 'options' ] as $k => $v ) { if ( empty ( $this->value[ $k ] ) ) { $this->value[ $k ] = ""; } echo '
    • '; echo ''; echo '
    • '; } echo '
    '; } else if ( empty ( $this->field[ 'data' ] ) ) { echo (!empty ( $this->field[ 'desc' ] ) ) ? '
    '; } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue () { if ($this->parent->args['dev_mode']) { wp_enqueue_style ( 'redux-field-checkbox-css', ReduxFramework::$_url . 'inc/fields/checkbox/field_checkbox.css', array(), time (), 'all' ); } wp_enqueue_script ( 'redux-field-checkbox-js', ReduxFramework::$_url . 'inc/fields/checkbox/field_checkbox' . Redux_Functions::isMin () . '.js', array( 'jquery', 'redux-js' ), time (), true ); } } } redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.min.js000066600000007163152143340070020331 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.color_rgba=redux.field_objects.color_rgba||{},redux.field_objects.color_rgba.fieldID="",redux.field_objects.color_rgba.hexToRGBA=function(a,b){var c;if(null===a)c="";else{a=a.replace("#","");var d=parseInt(a.substring(0,2),16),e=parseInt(a.substring(2,4),16),f=parseInt(a.substring(4,6),16);c="rgba("+d+","+e+","+f+","+b+")"}return c},redux.field_objects.color_rgba.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-color_rgba:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),redux.field_objects.color_rgba.modInit(b),redux.field_objects.color_rgba.initColorPicker(b))})},redux.field_objects.color_rgba.modInit=function(a){redux.field_objects.color_rgba.fieldID=a.find(".redux-color_rgba-container").data("id")},redux.field_objects.color_rgba.initColorPicker=function(b){var c=redux.field_objects.color_rgba.fieldID,d=b.find(".redux-color-rgba"),e=d.data("current-alpha");e=Number(null===e||void 0===e?1:e);var f=d.data("current-color");f=""===f||"transparent"===f?"":f;var g=d.data("output-transparent");g=Boolean(""===g?!1:g);var h=b.find(".redux-color-rgba-container"),i=h.data("palette");i=decodeURIComponent(i),i=JSON.parse(i),null===i&&(i=[["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#f3f3f3","#ffffff"],["#980000","#ff0000","#ff9900","#ffff00","#00ff00","#00ffff","#4a86e8","#0000ff","#9900ff","#ff00ff"],["#e6b8af","#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d9ead3","#c9daf8","#cfe2f3","#d9d2e9","#ead1dc"],["#dd7e6b","#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#a4c2f4","#9fc5e8","#b4a7d6","#d5a6bd"],["#cc4125","#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6d9eeb","#6fa8dc","#8e7cc3","#c27ba0"],["#a61c00","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79"],["#85200c","#990000","#b45f06","#bf9000","#38761d","#134f5c","#1155cc","#0b5394","#351c75","#741b47"],["#5b0f00","#660000","#783f04","#7f6000","#274e13","#0c343d","#1c4587","#073763","#20124d","#4c1130"]]);var j=h.data("show-input");j=Boolean(""===j?!1:j);var k=h.data("show-initial");k=Boolean(""===k?!1:k);var l=h.data("show-alpha");l=Boolean(""===l?!1:l);var m=h.data("allow-empty");m=Boolean(""===m?!1:m);var n=h.data("show-palette");n=Boolean(""===n?!1:n);var o=h.data("show-palette-only");o=Boolean(""===o?!1:o);var p=h.data("show-selection-palette");p=Boolean(""===p?!1:p);var q=Number(h.data("max-palette-size")),r=h.data("clickout-fires-change");r=Boolean(""===r?!1:r);var s=String(h.data("choose-text")),t=String(h.data("cancel-text")),u=String(h.data("input-text")),v=h.data("show-buttons");v=Boolean(""===v?!1:v);var w=String(h.data("container-class")),x=String(h.data("replacer-class"));d.spectrum({color:f,showAlpha:l,showInput:j,allowEmpty:m,className:"redux-color-rgba",showInitial:k,showPalette:n,showSelectionPalette:p,maxPaletteSize:q,showPaletteOnly:o,clickoutFiresChange:r,chooseText:s,cancelText:t,showButtons:v,containerClassName:w,replacerClassName:x,preferredFormat:"hex6",localStorageKey:"redux.color-rgba."+c,palette:i,inputText:u,change:function(c){var d,e,f;null===c?(d=g===!0?"transparent":null,e=null):(d=c.toHexString(),e=c.alpha),f="transparent"!=d?redux.field_objects.color_rgba.hexToRGBA(d,e):"transparent";var h=a(this).data("block-id");b.find("input#"+h+"-color").val(d),b.find("input#"+h+"-alpha").val(e),b.find("input#"+h+"-rgba").val(f),redux_change(b.find(".redux-color-rgba-container"))}})}}(jQuery);redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.php000066600000030345152143340070017720 0ustar00. * * @package Redux Framework * @subpackage Spectrum Color Picker * @author Kevin Provance (kprovance) * @version 1.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_color_rgba' ) ) { /** * Main ReduxFramework_color_rgba class * * @since 1.0.0 */ class ReduxFramework_color_rgba { /** * Class Constructor. Defines the args for the extions class * * @since 1.0.0 * @access public * * @param array $field Field sections. * @param array $value Values. * @param array $parent Parent object. * * @return void */ public function __construct( $field = array(), $value = '', $parent ) { // Set required variables $this->parent = $parent; $this->field = (array) $field; $this->value = $value; $defaults = array( 'color' => '', 'alpha' => 1, 'rgba' => '' ); $option_defaults = array( "show_input" => true, "show_initial" => false, "show_alpha" => true, "show_palette" => false, "show_palette_only" => false, "max_palette_size" => 10, "show_selection_palette" => false, "allow_empty" => true, "clickout_fires_change" => false, "choose_text" => __( 'Choose', 'redux-framework' ), "cancel_text" => __( 'Cancel', 'redux-framework' ), "show_buttons" => true, "input_text" => __( 'Select Color', 'redux-framework' ), "palette" => null, ); $this->value = wp_parse_args( $this->value, $defaults ); $this->field['options'] = isset( $this->field['options'] ) ? wp_parse_args( $this->field['options'], $option_defaults ) : $option_defaults; // Convert empty array to null, if there. $this->field['options']['palette'] = empty( $this->field['options']['palette'] ) ? null : $this->field['options']['palette']; $this->field['output_transparent'] = isset( $this->field['output_transparent'] ) ? $this->field['output_transparent'] : false; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { $field_id = $this->field['id']; // Color picker container echo '
    '; // Colour picker layout $opt_name = $this->parent->args['opt_name']; if ( '' == $this->value['color'] || 'transparent' == $this->value['color'] ) { $color = ''; } else { $color = Redux_Helpers::hex2rgba( $this->value['color'], $this->value['alpha'] ); } if ( $this->value['rgba'] == '' && $this->value['color'] != '' ) { $this->value['rgba'] = Redux_Helpers::hex2rgba( $this->value['color'], $this->value['alpha'] ); } echo ''; echo ''; // Hidden input for alpha channel echo ''; // Hidden input for rgba echo ''; echo '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { // Set up min files for dev_mode = false. $min = Redux_Functions::isMin(); // Field dependent JS if ( ! wp_script_is( 'redux-field-color-rgba-js' ) ) { wp_enqueue_script( 'redux-field-color-rgba-js', ReduxFramework::$_url . 'inc/fields/color_rgba/field_color_rgba' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-spectrum-js' ), time(), true ); } // Spectrum CSS if ( ! wp_style_is( 'redux-spectrum-css' ) ) { wp_enqueue_style( 'redux-spectrum-css' ); } if ( $this->parent->args['dev_mode'] ) { if ( ! wp_style_is( 'redux-field-color-rgba-css' ) ) { wp_enqueue_style( 'redux-field-color-rgba-css', ReduxFramework::$_url . 'inc/fields/color_rgba/field_color_rgba.css', array(), time(), 'all' ); } } } /** * getColorVal. Returns formatted color val in hex or rgba. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access private * @return string */ private function getColorVal() { // No notices $color = ''; $alpha = 1; $rgba = ''; // Must be an array if ( is_array( $this->value ) ) { // Enum array to parse values foreach ( $this->value as $id => $val ) { // Sanitize alpha if ( $id == 'alpha' ) { $alpha = ! empty( $val ) ? $val : 1; } elseif ( $id == 'color' ) { $color = ! empty( $val ) ? $val : ''; } elseif ( $id == 'rgba' ) { $rgba = ! empty( $val ) ? $val : ''; $rgba = Redux_Helpers::hex2rgba( $color, $alpha ); } } // Only build rgba output if alpha ia less than 1 if ( $alpha < 1 && $alpha <> '' ) { $color = $rgba; } } return $color; } /** * Output Function. * Used to enqueue to the front-end * * @since 1.0.0 * @access public * @return void */ public function output() { if ( ! empty( $this->value ) ) { $style = ''; $mode = ( isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'color' ); $color_val = $this->getColorVal(); $style .= $mode . ':' . $color_val . ';'; if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { if ( ! empty( $color_val ) ) { $css = Redux_Functions::parseCSS( $this->field['output'], $style, $color_val ); $this->parent->outputCSS .= $css; } } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { if ( ! empty( $color_val ) ) { $css = Redux_Functions::parseCSS( $this->field['compiler'], $style, $color_val ); $this->parent->compilerCSS .= $css; } } } } } } redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css000066600000002162152143340070017715 0ustar00.sp-container{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer:focus,.sp-replacer:hover,.sp-replacer.focus,.sp-replacer.hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer:focus,.sp-replacer.focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5)}redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.js000066600000022114152143340070017540 0ustar00(function($){ 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.color_rgba = redux.field_objects.color_rgba || {}; redux.field_objects.color_rgba.fieldID = ''; redux.field_objects.color_rgba.hexToRGBA = function( hex, alpha ) { var result; if (hex === null) { result = ''; } else { hex = hex.replace('#', ''); var r = parseInt(hex.substring(0, 2), 16); var g = parseInt(hex.substring(2, 4), 16); var b = parseInt(hex.substring(4, 6), 16); result = 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')'; } return result; }; redux.field_objects.color_rgba.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-color_rgba:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } redux.field_objects.color_rgba.modInit(el); redux.field_objects.color_rgba.initColorPicker(el); }); }; redux.field_objects.color_rgba.modInit = function(el) { redux.field_objects.color_rgba.fieldID = el.find('.redux-color_rgba-container').data('id'); }; // Initialize colour picker redux.field_objects.color_rgba.initColorPicker = function(el){ // Get field ID var field_id = redux.field_objects.color_rgba.fieldID; // Get the color scheme container var colorpickerInput = el.find('.redux-color-rgba'); // Get alpha value and sanitize it var currentAlpha = colorpickerInput.data('current-alpha'); currentAlpha = Number((currentAlpha === null || currentAlpha === undefined) ? 1 : currentAlpha); // Get colour value and sanitize it var currentColor = colorpickerInput.data('current-color'); currentColor = (currentColor === '' || currentColor === 'transparent') ? '' : currentColor; var outputTransparent = colorpickerInput.data('output-transparent'); outputTransparent = Boolean((outputTransparent === '') ? false : outputTransparent); // Color picker arguments var container = el.find('.redux-color-rgba-container'); // Get, decode and parse palette. var palette = container.data('palette'); palette = decodeURIComponent(palette); palette = JSON.parse(palette); // Default palette if (palette === null) { palette = [ ["#000000", "#434343", "#666666", "#999999", "#b7b7b7", "#cccccc", "#d9d9d9", "#efefef", "#f3f3f3", "#ffffff"], ["#980000", "#ff0000", "#ff9900", "#ffff00", "#00ff00", "#00ffff", "#4a86e8", "#0000ff", "#9900ff", "#ff00ff"], ["#e6b8af", "#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d9ead3", "#c9daf8", "#cfe2f3", "#d9d2e9", "#ead1dc"], ["#dd7e6b", "#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#a4c2f4", "#9fc5e8", "#b4a7d6", "#d5a6bd"], ["#cc4125", "#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6d9eeb", "#6fa8dc", "#8e7cc3", "#c27ba0"], ["#a61c00", "#cc0000", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3c78d8", "#3d85c6", "#674ea7", "#a64d79"], ["#85200c", "#990000", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#1155cc", "#0b5394", "#351c75", "#741b47"], ["#5b0f00", "#660000", "#783f04", "#7f6000", "#274e13", "#0c343d", "#1c4587", "#073763", "#20124d", "#4c1130"] ]; } // Get and sanitize show input argument var showInput = container.data('show-input'); showInput = Boolean((showInput === '') ? false : showInput); // Get and sanitize show initial argument var showInitial = container.data('show-initial'); showInitial = Boolean((showInitial === '') ? false : showInitial); // Get and sanitize show alpha argument var showAlpha = container.data('show-alpha'); showAlpha = Boolean((showAlpha === '') ? false : showAlpha); // Get and sanitize allow empty argument var allowEmpty = container.data('allow-empty'); allowEmpty = Boolean((allowEmpty === '') ? false : allowEmpty); // Get and sanitize show palette argument var showPalette = container.data('show-palette'); showPalette = Boolean((showPalette === '') ? false : showPalette); // Get and sanitize show palette only argument var showPaletteOnly = container.data('show-palette-only'); showPaletteOnly = Boolean((showPaletteOnly === '') ? false : showPaletteOnly); // Get and sanitize show selection palette argument var showSelectionPalette = container.data('show-selection-palette'); showSelectionPalette = Boolean((showSelectionPalette === '') ? false : showSelectionPalette); // Get max palette size var maxPaletteSize = Number(container.data('max-palette-size')); // Get and sanitize clickout fires change argument var clickoutFiresChange = container.data('clickout-fires-change'); clickoutFiresChange = Boolean((clickoutFiresChange === '') ? false : clickoutFiresChange); // Get choose button text var chooseText = String(container.data('choose-text')); // Get cancel button text var cancelText = String(container.data('cancel-text')); // Get cancel button text var inputText = String(container.data('input-text')); // Get and sanitize show buttons argument var showButtons = container.data('show-buttons'); showButtons = Boolean((showButtons === '') ? false : showButtons); // Get container class var containerClass = String(container.data('container-class')); // Get replacer class var replacerClass = String(container.data('replacer-class')); // Color picker options colorpickerInput.spectrum({ color: currentColor, //'#ffffff', showAlpha: showAlpha, showInput: showInput, allowEmpty: allowEmpty, className: 'redux-color-rgba', showInitial: showInitial, showPalette: showPalette, showSelectionPalette: showSelectionPalette, maxPaletteSize: maxPaletteSize, showPaletteOnly: showPaletteOnly, clickoutFiresChange: clickoutFiresChange, chooseText: chooseText, cancelText: cancelText, showButtons: showButtons, containerClassName: containerClass, replacerClassName: replacerClass, preferredFormat: 'hex6', localStorageKey: 'redux.color-rgba.' + field_id, palette: palette, inputText: inputText, // on change change: function(color) { var colorVal, alphaVal, rgbaVal; if (color === null) { if (outputTransparent === true) { colorVal = 'transparent'; } else { colorVal = null; } alphaVal = null; } else { colorVal = color.toHexString(); alphaVal = color.alpha; } if (colorVal != 'transparent') { rgbaVal = redux.field_objects.color_rgba.hexToRGBA(colorVal, alphaVal); } else { rgbaVal = 'transparent'; } var blockID = $(this).data('block-id'); // Update HTML color value el.find('input#' + blockID + '-color').val(colorVal); // Update HTML alpha value el.find('input#' + blockID + '-alpha').val(alphaVal); // Update RGBA alpha value el.find('input#' + blockID + '-rgba').val(rgbaVal); redux_change(el.find('.redux-color-rgba-container')); } }); }; })(jQuery);redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.css.map000066600000001337152143340070020474 0ustar00{ "version": 3, "mappings": "AAAA,aAAc;EACd;;oHAEkH;EACjH,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,OAAO;EACrB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,+CAAiD;EACrE,UAAU,EAAE,+CAAiD;EAC5D,cAAc,EAAE,GAAG;;AAGrB,YAAa;EACT,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,OAAO;EACrB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,+CAAiD;EACrE,UAAU,EAAE,+CAAiD;EAC7D,cAAc,EAAE,GAAG;;AAGvB;;;kBAGmB;EACf,UAAU,EAAE,OAAO;EACnB,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,IAAI;;AAGf;kBACmB;EACf,kBAAkB,EACV,sDACkC;EAC1C,UAAU,EACF,sDACkC;;AAI9C,yBAA0B;EACzB,kBAAkB,EACjB,+FAEkC;EACnC,UAAU,EACT,+FAEkC;;AAGpC;;mBAEmB;EACf,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,IAAI;EACX,kBAAkB,EAAE,uCAAyC;EAC7D,UAAU,EAAE,uCAAyC", "sources": ["field_color_rgba.scss"], "names": [], "file": "field_color_rgba.css" }redux/ReduxCore/inc/fields/color_rgba/field_color_rgba.scss000066600000003225152143340070020101 0ustar00.sp-container { /* border: solid 1px black; -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8); box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);*/ color: #555; border-color: #cccccc; background: #f7f7f7; -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); vertical-align: top; } .sp-replacer { color: #555; border-color: #cccccc; background: #f7f7f7; -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); vertical-align: top; } .sp-replacer:focus, .sp-replacer:hover, .sp-replacer.focus, .sp-replacer.hover { background: #fafafa; border-color: #999; color: #222; } .sp-replacer:focus, .sp-replacer.focus { -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); } .sp-replacer.active:focus { -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); } .sp-replacer.active, .sp-replacer.active:hover, .sp-replacer:active{ background: #eee; border-color: #999; color: #333; -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); } redux/ReduxCore/inc/fields/image_select/field_image_select.min.js000066600000004251152143340070021144 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.image_select=redux.field_objects.image_select||{},a(document).ready(function(){}),redux.field_objects.image_select.init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-image_select:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-image-select label img, .redux-image-select label .tiles").click(function(c){var d=a(this).closest("label").attr("for");if(a(this).parents("fieldset:first").find(".redux-image-select-selected").removeClass("redux-image-select-selected").find("input[type='radio']").attr("checked",!1),a(this).closest("label").find('input[type="radio"]').prop("checked"),a(this).closest("label").hasClass("redux-image-select-preset-"+d)){c.preventDefault();var e=a(this).closest("label").find("input"),f=e.data("presets"),g=e.data("merge");if(void 0!==g&&null!==g&&("string"===a.type(g)&&(g=g.split("|")),a.each(f,function(b,c){g!==!0&&-1==a.inArray(b,g)||"object"!==a.type(redux.options[b])||(f[b]=a.extend(redux.options[b],f[b]))})),void 0!==e&&null!==e){var h=confirm(redux.args.preset_confirm);h&&(b.find('label[for="'+d+'"]').addClass("redux-image-select-selected").find("input[type='radio']").attr("checked",!0),window.onbeforeunload=null,0===a("#import-code-value").length?a(this).append('"):a("#import-code-value").val(JSON.stringify(f)),0!==a("#publishing-action #publish").length?a("#publish").click():a("#redux-import").click())}return!1}b.find('label[for="'+d+'"]').addClass("redux-image-select-selected").find("input[type='radio']").attr("checked",!0).trigger("change"),redux_change(a(this).closest("label").find('input[type="radio"]'))}),b.find(".tiles").qtip({content:{text:function(b,c){return""}},style:"qtip-tipsy",position:{my:"top center",at:"bottom center"}}))})}}(jQuery);redux/ReduxCore/inc/fields/image_select/field_image_select.php000066600000025305152143340070020540 0ustar00. * * @package ReduxFramework * @subpackage Field_Images * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_image_select' ) ) { /** * Main ReduxFramework_image_select class * * @since 1.0.0 */ class ReduxFramework_image_select { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { if ( ! empty( $this->field['options'] ) ) { echo '
    '; echo '
      '; $x = 1; foreach ( $this->field['options'] as $k => $v ) { if ( ! is_array( $v ) ) { $v = array( 'img' => $v ); } if ( ! isset( $v['title'] ) ) { $v['title'] = ''; } if ( ! isset( $v['alt'] ) ) { $v['alt'] = $v['title']; } if ( ! isset( $v['class'] ) ) { $v['class'] = ''; } $style = ''; if ( ! empty( $this->field['width'] ) ) { $style .= 'width: ' . $this->field['width']; if ( is_numeric( $this->field['width'] ) ) { $style .= 'px'; } $style .= ';'; } else { $style .= " width: 100%; "; } if ( ! empty( $this->field['height'] ) ) { $style .= 'height: ' . $this->field['height']; if ( is_numeric( $this->field['height'] ) ) { $style .= 'px'; } $style .= ';'; } $theValue = $k; if ( ! empty( $this->field['tiles'] ) && $this->field['tiles'] == true ) { $theValue = $v['img']; } $selected = ( checked( $this->value, $theValue, false ) != '' ) ? ' redux-image-select-selected' : ''; $presets = ''; $is_preset = false; $this->field['class'] .= ' noUpdate '; if ( isset( $this->field['presets'] ) && $this->field['presets'] !== false ) { $this->field['class'] = trim($this->field['class']); if ( ! isset( $v['presets'] ) ) { $v['presets'] = array(); } if ( ! is_array( $v['presets'] ) ) { $v['presets'] = json_decode( $v['presets'], true ); } // Only highlight the preset if it's the same if ( $selected ) { if ( empty( $v['presets'] ) ) { $selected = false; } else { foreach ( $v['presets'] as $pk => $pv ) { if ( isset( $v['merge'] ) && $v['merge'] !== false ) { if( ( $v['merge'] === true || in_array( $pk, $v['merge'] ) ) && is_array( $this->parent->options[ $pk ] ) ) { $pv = array_merge( $this->parent->options[ $pk ], $pv ); } } if ( empty( $pv ) && isset( $this->parent->options[ $pk ] ) && ! empty( $this->parent->options[ $pk ] ) ) { $selected = false; } else if ( ! empty( $pv ) && ! isset( $this->parent->options[ $pk ] ) ) { $selected = false; } else if ( isset( $this->parent->options[ $pk ] ) && $this->parent->options[ $pk ] != $pv ) { $selected = false; } if ( ! $selected ) { // We're still not using the same preset. Let's unset that shall we? $this->value = ""; break; } } } } $v['presets']['redux-backup'] = 1; $presets = ' data-presets="' . htmlspecialchars( json_encode( $v['presets'] ), ENT_QUOTES, 'UTF-8' ) . '"'; $is_preset = true; $this->field['class'] = trim( $this->field['class'] ) . ' redux-presets'; } $is_preset_class = $is_preset ? '-preset-' : ' '; $merge = ''; if ( isset( $v['merge'] ) && $v['merge'] !== false ) { $merge = is_array( $v['merge'] ) ? implode( '|', $v['merge'] ) : 'true'; $merge = ' data-merge="' . htmlspecialchars( $merge, ENT_QUOTES, 'UTF-8' ) . '"'; } echo '
    • '; echo ''; echo '
    • '; $x ++; } echo '
    '; echo '
    '; } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { wp_enqueue_script( 'redux-field-image-select-js', ReduxFramework::$_url . 'inc/fields/image_select/field_image_select' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-image-select-css', ReduxFramework::$_url . 'inc/fields/image_select/field_image_select.css', array(), time(), 'all' ); } } public function getCSS( $mode = '' ) { $css = ''; $value = $this->value; $output = ''; if ( ! empty( $value ) && ! is_array($value) ) { switch ( $mode ) { case 'background-image': $output = "background-image: url('" . $value . "');"; break; default: $output = $mode . ": " . $value . ";"; } } $css .= $output; return $css; } public function output() { $mode = ( isset( $this->field['mode'] ) && ! empty( $this->field['mode'] ) ? $this->field['mode'] : 'background-image' ); if ( ( ! isset( $this->field['output'] ) || ! is_array( $this->field['output'] ) ) && ( ! isset( $this->field['compiler'] ) ) ) { return; } $style = $this->getCSS( $mode ); if ( ! empty( $style ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $keys = implode( ",", $this->field['output'] ); $style = $keys . "{" . $style . '}'; $this->parent->outputCSS .= $style; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $keys = implode( ",", $this->field['compiler'] ); $style = $keys . "{" . $style . '}'; $this->parent->compilerCSS .= $style; } } } } }redux/ReduxCore/inc/fields/image_select/field_image_select.css000066600000002447152143340070020543 0ustar00.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0 !important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#FFF;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select .tiles{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type='radio']{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:2px 2px;padding-left:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}redux/ReduxCore/inc/fields/image_select/field_image_select.scss000066600000002324152143340070020720 0ustar00.redux-container-image_select { .redux-table-container { display: table; table-layout: fixed; width: 100%; } .redux-image-select { margin: 0 !important; .tiles { display: block; background-color: #FFF; background-repeat: repeat; width: 40px; height: 40px; } img, .tiles { border-color: #d9d9d9; } li:last-child { margin-bottom: 0; } input[type='radio'] { display: none; } } .redux-image-select-presets img { width: 100%; } ul.redux-image-select li { margin: 0 10px 3px 10px; display: inline-block; padding: 2px 2px; padding-left: 0; } .redux-image-select-selected { background-color: #f9f9f9; } .redux-image-select img, .redux-image-select-selected img, .redux-image-select .tiles, .redux-image-select-selected .tiles { border-width: 4px; border-style: solid; } .redux-image-select-selected, .redux-image-select-selected { .tiles { border-color: #7a7a7a; } } } redux/ReduxCore/inc/fields/image_select/field_image_select.css.map000066600000001270152143340070021310 0ustar00{ "version": 3, "mappings": "AACI,oDAAuB;EACnB,OAAO,EAAE,KAAK;EACd,YAAY,EAAE,KAAK;EACnB,KAAK,EAAE,IAAI;AAGf,iDAAoB;EAChB,MAAM,EAAE,YAAY;EAEpB,wDAAO;IACH,OAAO,EAAE,KAAK;IACd,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,MAAM;IACzB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB;0DACO;IACH,YAAY,EAAE,OAAO;EAGzB,+DAAc;IACV,aAAa,EAAE,CAAC;EAGpB,qEAAoB;IAChB,OAAO,EAAE,IAAI;AAIrB,6DAAgC;EAC5B,KAAK,EAAE,IAAI;AAGf,sDAAyB;EACrB,MAAM,EAAE,eAAe;EACvB,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,OAAO;EAChB,YAAY,EAAE,CAAC;AAGnB,0DAA6B;EACzB,gBAAgB,EAAE,OAAO;AAG7B;;;iEAGoC;EAChC,YAAY,EAAE,GAAG;EACjB,YAAY,EAAE,KAAK;AAKnB;iEAAO;EACH,YAAY,EAAE,OAAO", "sources": ["field_image_select.scss"], "names": [], "file": "field_image_select.css" }redux/ReduxCore/inc/fields/image_select/field_image_select.js000066600000012650152143340070020364 0ustar00/* global confirm, redux, redux_change */ /*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.image_select = redux.field_objects.image_select || {}; $( document ).ready( function() { //redux.field_objects.image_select.init(); } ); redux.field_objects.image_select.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-image_select:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // On label click, change the input and class el.find( '.redux-image-select label img, .redux-image-select label .tiles' ).click( function( e ) { var id = $( this ).closest( 'label' ).attr( 'for' ); $( this ).parents( "fieldset:first" ).find( '.redux-image-select-selected' ).removeClass( 'redux-image-select-selected' ).find( "input[type='radio']" ).attr( "checked", false ); $( this ).closest( 'label' ).find( 'input[type="radio"]' ).prop( 'checked' ); if ( $( this ).closest( 'label' ).hasClass( 'redux-image-select-preset-' + id ) ) { // If they clicked on a preset, import! e.preventDefault(); var presets = $( this ).closest( 'label' ).find( 'input' ); var data = presets.data( 'presets' ); var merge = presets.data( 'merge' ); if( merge !== undefined && merge !== null ) { if( $.type( merge ) === 'string' ) { merge = merge.split('|'); } $.each(data, function( index, value ) { if( ( merge === true || $.inArray( index, merge ) != -1 ) && $.type( redux.options[index] ) === 'object' ) { data[index] = $.extend(redux.options[index], data[index]); } }); } if ( presets !== undefined && presets !== null ) { var answer = confirm( redux.args.preset_confirm ); if ( answer ) { el.find( 'label[for="' + id + '"]' ).addClass( 'redux-image-select-selected' ).find( "input[type='radio']" ).attr( "checked", true ); window.onbeforeunload = null; if ( $( '#import-code-value' ).length === 0 ) { $( this ).append( '' ); } else { $( '#import-code-value' ).val( JSON.stringify( data ) ); } if ( $( '#publishing-action #publish' ).length !== 0 ) { $( '#publish' ).click(); } else { $( '#redux-import' ).click(); } } } else { } return false; } else { el.find( 'label[for="' + id + '"]' ).addClass( 'redux-image-select-selected' ).find( "input[type='radio']" ).attr( "checked", true ).trigger('change'); redux_change( $( this ).closest( 'label' ).find( 'input[type="radio"]' ) ); } } ); // Used to display a full image preview of a tile/pattern el.find( '.tiles' ).qtip( { content: { text: function( event, api ) { return ""; }, }, style: 'qtip-tipsy', position: { my: 'top center', // Position my top left... at: 'bottom center', // at the bottom right of... } } ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/link_color/field_link_color.css.map000066600000000273152143340070020536 0ustar00{ "version": 3, "mappings": "AACI,sCAAW;EACP,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,IAAI;EACnB,cAAc,EAAE,GAAG", "sources": ["field_link_color.scss"], "names": [], "file": "field_link_color.css" }redux/ReduxCore/inc/fields/link_color/field_link_color.js000066600000007763152143340070017621 0ustar00/* Field Link Color */ /*global jQuery, document, redux_change, redux*/ (function( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.link_color = redux.field_objects.link_color || {}; $( document ).ready( function() { } ); redux.field_objects.link_color.init = function( selector ) { if ( !selector ) { selector = $( document ).find( '.redux-container-link_color:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.redux-color-init' ).wpColorPicker( { change: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ) ); el.find( '#' + e.target.getAttribute( 'data-id' ) + '-transparency' ).removeAttr( 'checked' ); }, clear: function( e, ui ) { $( this ).val( ui.color.toString() ); redux_change( $( this ).parent().find( '.redux-color-init' ) ); } } ); el.find( '.redux-color' ).on( 'keyup', function() { var value = $( this ).val(); var color = colorValidate( this ); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { el.find( id + '-transparency' ).removeAttr( 'checked' ); if ( color && color !== $( this ).val() ) { $( this ).val( color ); } } } ); // Replace and validate field on blur el.find( '.redux-color' ).on( 'blur', function() { var value = $( this ).val(); var id = '#' + $( this ).attr( 'id' ); if ( value === "transparent" ) { $( this ).parent().parent().find( '.wp-color-result' ).css( 'background-color', 'transparent' ); el.find( id + '-transparency' ).attr( 'checked', 'checked' ); } else { if ( colorValidate( this ) === value ) { if ( value.indexOf( "#" ) !== 0 ) { $( this ).val( $( this ).data( 'oldcolor' ) ); } } el.find( id + '-transparency' ).removeAttr( 'checked' ); } } ); // Store the old valid color on keydown el.find( '.redux-color' ).on( 'keydown', function() { $( this ).data( 'oldkeypress', $( this ).val() ); } ); } ); }; })( jQuery ); redux/ReduxCore/inc/fields/link_color/field_link_color.min.js000066600000003162152143340070020370 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.link_color=redux.field_objects.link_color||{},a(document).ready(function(){}),redux.field_objects.link_color.init=function(b){b||(b=a(document).find(".redux-container-link_color:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-color-init").wpColorPicker({change:function(c,d){a(this).val(d.color.toString()),redux_change(a(this)),b.find("#"+c.target.getAttribute("data-id")+"-transparency").removeAttr("checked")},clear:function(b,c){a(this).val(c.color.toString()),redux_change(a(this).parent().find(".redux-color-init"))}}),b.find(".redux-color").on("keyup",function(){var c=a(this).val(),d=colorValidate(this),e="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(e+"-transparency").attr("checked","checked")):(b.find(e+"-transparency").removeAttr("checked"),d&&d!==a(this).val()&&a(this).val(d))}),b.find(".redux-color").on("blur",function(){var c=a(this).val(),d="#"+a(this).attr("id");"transparent"===c?(a(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),b.find(d+"-transparency").attr("checked","checked")):(colorValidate(this)===c&&0!==c.indexOf("#")&&a(this).val(a(this).data("oldcolor")),b.find(d+"-transparency").removeAttr("checked"))}),b.find(".redux-color").on("keydown",function(){a(this).data("oldkeypress",a(this).val())}))})}}(jQuery);redux/ReduxCore/inc/fields/link_color/field_link_color.scss000066600000000221152143340070020136 0ustar00.redux-container-link_color { .linkColor { display: inline-block; padding-right: 10px; padding-bottom: 7px; } } redux/ReduxCore/inc/fields/link_color/field_link_color.css000066600000000142152143340070017755 0ustar00.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}redux/ReduxCore/inc/fields/link_color/field_link_color.php000066600000024207152143340070017764 0ustar00. * * @package ReduxFramework * @subpackage Field_Color_Gradient * @author Luciano "WebCaos" Ubertini * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @author Kevin Provance (kprovance) - fixing everyone else's bugs. * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_link_color' ) ) { /** * Main ReduxFramework_link_color class * * @since 1.0.0 */ class ReduxFramework_link_color { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; $defaults = array( 'regular' => true, 'hover' => true, 'visited' => false, 'active' => true ); $this->field = wp_parse_args( $this->field, $defaults ); $defaults = array( 'regular' => '', 'hover' => '', 'visited' => '', 'active' => '' ); $this->value = wp_parse_args( $this->value, $defaults ); // In case user passes no default values. if ( isset( $this->field['default'] ) ) { $this->field['default'] = wp_parse_args( $this->field['default'], $defaults ); } else { $this->field['default'] = $defaults; } } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { if ( $this->field['regular'] === true && $this->field['default']['regular'] !== false ) { echo '' . __( 'Regular', 'redux-framework' ) . ' '; } if ( $this->field['hover'] === true && $this->field['default']['hover'] !== false ) { echo '' . __( 'Hover', 'redux-framework' ) . ' '; } if ( $this->field['visited'] === true && $this->field['default']['visited'] !== false ) { echo '' . __( 'Visited', 'redux-framework' ) . ' '; } if ( $this->field['active'] === true && $this->field['default']['active'] !== false ) { echo '' . __( 'Active', 'redux-framework' ) . ' '; } } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'redux-field-link-color-js', ReduxFramework::$_url . 'inc/fields/link_color/field_link_color' . Redux_Functions::isMin() . '.js', array( 'jquery', 'wp-color-picker', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-color-picker-css' ); wp_enqueue_style( 'redux-field-link_color-js', ReduxFramework::$_url . 'inc/fields/link_color/field_link_color.css', array(), time(), 'all' ); } } public function output() { $style = array(); if ( ! empty( $this->value['regular'] ) && $this->field['regular'] === true && $this->field['default']['regular'] !== false ) { $style[] = 'color:' . $this->value['regular'] . ';'; } if ( ! empty( $this->value['visited'] ) && $this->field['visited'] === true && $this->field['default']['visited'] !== false ) { $style['visited'] = 'color:' . $this->value['visited'] . ';'; } if ( ! empty( $this->value['hover'] ) && $this->field['hover'] === true && $this->field['default']['hover'] !== false ) { $style['hover'] = 'color:' . $this->value['hover'] . ';'; } if ( ! empty( $this->value['active'] ) && $this->field['active'] === true && $this->field['default']['active'] !== false ) { $style['active'] = 'color:' . $this->value['active'] . ';'; } if ( ! empty( $style ) ) { if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) { $styleString = ""; foreach ( $style as $key => $value ) { if ( is_numeric( $key ) ) { $styleString .= implode( ",", $this->field['output'] ) . "{" . $value . '}'; } else { if ( count( $this->field['output'] ) == 1 ) { foreach($this->field['output'] as $sel => $elem) { continue; } if (strpos($elem, ',') != false) { $selector_arr = explode(',',$elem); $sel_list = ''; foreach($selector_arr as $idx => $selector) { $sel_list .= $selector . ":" . $key . ","; } $sel_list = rtrim($sel_list,','); $styleString .= $sel_list . "{" . $value . '}'; } else { $styleString .= $elem . ":" . $key . "{" . $value . '}'; } } else { $blah = ''; foreach($this->field['output'] as $k => $sel) { $blah .= $sel . ':' . $key . ','; } $blah = substr($blah, 0, strlen($blah) - 1); $styleString .= $blah . '{' . $value . '}'; } } } $this->parent->outputCSS .= $styleString; } if ( ! empty( $this->field['compiler'] ) && is_array( $this->field['compiler'] ) ) { $styleString = ""; foreach ( $style as $key => $value ) { if ( is_numeric( $key ) ) { $styleString .= implode( ",", $this->field['compiler'] ) . "{" . $value . '}'; } else { if ( count( $this->field['compiler'] ) == 1 ) { $styleString .= $this->field['compiler'][0] . ":" . $key . "{" . $value . '}'; } else { $blah = ''; foreach($this->field['compiler'] as $k => $sel) { $blah .= $sel . ':' . $key . ','; } $blah = substr($blah, 0, strlen($blah) - 1); $styleString .= $blah . '{' . $value . '}'; } } } $this->parent->compilerCSS .= $styleString; } } } } }redux/ReduxCore/inc/fields/media/field_media.less000066600000002376152143340100016010 0ustar00.redux-main { .button.remove-image, .removeCSS { margin-left: 10px; color: #ef521d; } .button.remove-image:hover, .removeCSS:hover { color: red; } .upload_button_div { margin-bottom: 5px; } .upload-error { float: left; color: #666; font-size: 10px; font-weight: bold; text-decoration: none; text-shadow: 1px 1px 0 #FFFFFF; margin: 0 10px 0 0; padding: 3px 10px; background: #FFDFEC; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .reset-button { font-family: Arial, Verdana, sans-serif; float: left; margin: 0; color: #ef521d; border-color: #bbb; } .redux-option-image { max-height: 340px; max-width: 340px; padding: 5px; margin-bottom: 0; margin-top: 10px; margin-right: 15px; border: 1px solid #e3e3e3; background: #f7f7f7; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .redux-main .upload { width: 80% !important; } .button { margin-top: 2px; } } redux/ReduxCore/inc/fields/media/field_media.css.map000066600000001653152143340100016403 0ustar00{ "version": 3, "mappings": "AACI;sBACW;EACP,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,OAAO;EAEd;8BAAQ;IACJ,KAAK,EAAE,GAAG;AAIlB,8BAAmB;EACf,aAAa,EAAE,GAAG;AAGtB,yBAAc;EACV,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,iBAAiB;EAC9B,MAAM,EAAE,UAAU;EAClB,OAAO,EAAE,QAAQ;EACjB,UAAU,EAAE,OAAO;EACnB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;AAGtB,yBAAc;EACV,WAAW,EAAE,0BAA0B;EACvC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,OAAO;EACd,YAAY,EAAE,IAAI;AAGtB,+BAAoB;EAChB,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,OAAO;EACnB,kBAAkB,EAAE,GAAG;EACvB,oBAAoB,EAAE,GAAG;EACzB,qBAAqB,EAAE,GAAG;EAC1B,aAAa,EAAE,GAAG;AAGtB,+BAAoB;EAChB,KAAK,EAAE,cAAc;AAGzB,mBAAQ;EACJ,UAAU,EAAE,GAAG", "sources": ["field_media.scss"], "names": [], "file": "field_media.css" }redux/ReduxCore/inc/fields/media/field_media.php000066600000023523152143340100015626 0ustar00. * * @package ReduxFramework * @subpackage Field_Media * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @author Kevin Provance (kprovance) * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_media' ) ) { /** * Main ReduxFramework_media class * * @since 1.0.0 */ class ReduxFramework_media { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { // No errors please $defaults = array( 'id' => '', 'url' => '', 'width' => '', 'height' => '', 'thumbnail' => '', ); $this->value = wp_parse_args( $this->value, $defaults ); if (isset($this->field['mode']) && $this->field['mode'] == false) { $this->field['mode'] = 0; } if ( ! isset( $this->field['mode'] ) ) { $this->field['mode'] = "image"; } if (!isset($this->field['library_filter'])) { $libFilter = ''; } else { if (!is_array($this->field['library_filter'])) { $this->field['library_filter'] = array($this->field['library_filter']); } $mimeTypes = get_allowed_mime_types(); $libArray = $this->field['library_filter']; $jsonArr = array(); // Enum mime types foreach ($mimeTypes as $ext => $type) { if (strpos($ext,'|')) { $expArr = explode('|', $ext); foreach($expArr as $ext){ if (in_array($ext, $libArray )) { $jsonArr[$ext] = $type; } } } elseif (in_array($ext, $libArray )) { $jsonArr[$ext] = $type; } } $libFilter = urlencode(json_encode($jsonArr)); } if ( empty( $this->value ) && ! empty( $this->field['default'] ) ) { // If there are standard values and value is empty if ( is_array( $this->field['default'] ) ) { if ( ! empty( $this->field['default']['id'] ) ) { $this->value['id'] = $this->field['default']['id']; } if ( ! empty( $this->field['default']['url'] ) ) { $this->value['url'] = $this->field['default']['url']; } } else { if ( is_numeric( $this->field['default'] ) ) { // Check if it's an attachment ID $this->value['id'] = $this->field['default']; } else { // Must be a URL $this->value['url'] = $this->field['default']; } } } if ( empty( $this->value['url'] ) && ! empty( $this->value['id'] ) ) { $img = wp_get_attachment_image_src( $this->value['id'], 'full' ); $this->value['url'] = $img[0]; $this->value['width'] = $img[1]; $this->value['height'] = $img[2]; } $hide = 'hide '; if ( ( isset( $this->field['preview'] ) && $this->field['preview'] === false ) ) { $this->field['class'] .= " noPreview"; } if ( ( ! empty( $this->field['url'] ) && $this->field['url'] === true ) || isset( $this->field['preview'] ) && $this->field['preview'] === false ) { $hide = ''; } $placeholder = isset( $this->field['placeholder'] ) ? $this->field['placeholder'] : __( 'No media selected', 'redux-framework' ); $readOnly = ' readonly="readonly"'; if ( isset( $this->field['readonly'] ) && $this->field['readonly'] === false ) { $readOnly = ''; } echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; //Preview $hide = ''; if ( ( isset( $this->field['preview'] ) && $this->field['preview'] === false ) || empty( $this->value['url'] ) ) { $hide = 'hide '; } if ( empty( $this->value['thumbnail'] ) && ! empty( $this->value['url'] ) ) { // Just in case if ( ! empty( $this->value['id'] ) ) { $image = wp_get_attachment_image_src( $this->value['id'], array( 150, 150 ) ); if (empty($image[0]) || $image[0] == '') { $this->value['thumbnail'] = $this->value['url']; } else { $this->value['thumbnail'] = $image[0]; } } else { $this->value['thumbnail'] = $this->value['url']; } } echo '
    '; echo ''; echo ''; echo ''; echo '
    '; //Upload controls DIV echo '
    '; //If the user has WP3.5+ show upload/remove button echo '' . __( 'Upload', 'redux-framework' ) . ''; $hide = ''; if ( empty( $this->value['url'] ) || $this->value['url'] == '' ) { $hide = ' hide'; } echo '' . __( 'Remove', 'redux-framework' ) . ''; echo '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ( function_exists( 'wp_enqueue_media' ) ) { wp_enqueue_media(); } else { wp_enqueue_script( 'media-upload' ); } wp_enqueue_script( 'redux-field-media-js', ReduxFramework::$_url . 'assets/js/media/media' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style('redux-field-media-css'); } } } }redux/ReduxCore/inc/fields/media/field_media.css000066600000001641152143340100015624 0ustar00.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:bold;text-decoration:none;text-shadow:1px 1px 0 #fff;margin:0 10px 0 0;padding:3px 10px;background:#ffdfec;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80% !important}.redux-main .button{margin-top:2px}redux/ReduxCore/inc/fields/media/field_media.scss000066600000002361152143340100016007 0ustar00.redux-main { .button.remove-image, .removeCSS { margin-left: 10px; color: #ef521d; &:hover { color: red; } } .upload_button_div { margin-bottom: 5px; } .upload-error { float: left; color: #666; font-size: 10px; font-weight: bold; text-decoration: none; text-shadow: 1px 1px 0 #FFFFFF; margin: 0 10px 0 0; padding: 3px 10px; background: #FFDFEC; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .reset-button { font-family: Arial, Verdana, sans-serif; float: left; margin: 0; color: #ef521d; border-color: #bbb; } .redux-option-image { max-height: 340px; max-width: 340px; padding: 5px; margin-bottom: 0; margin-top: 10px; margin-right: 15px; border: 1px solid #e3e3e3; background: #f7f7f7; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } .redux-main .upload { width: 80% !important; } .button { margin-top: 2px; } } redux/ReduxCore/inc/fields/sortable/field_sortable.js000066600000006316152143340100016744 0ustar00/*global jQuery, document, redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.sortable = redux.field_objects.sortable || {}; var scroll = ''; redux.field_objects.sortable.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-sortable:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( ".redux-sortable" ).sortable( { handle: ".drag", placeholder: "placeholder", opacity: 0.7, scroll: false, out: function( event, ui ) { if ( !ui.helper ) return; if ( ui.offset.top > 0 ) { scroll = 'down'; } else { scroll = 'up'; } redux.field_objects.sortable.scrolling( $( this ).parents( '.redux-field-container:first' ) ); }, over: function( event, ui ) { scroll = ''; }, deactivate: function( event, ui ) { scroll = ''; }, update: function(event, ui) { // console.log('here'); redux_change( $( this ) ); } } ); el.find( '.checkbox_sortable' ).on( 'click', function() { if ( $( this ).is( ":checked" ) ) { el.find( '#' + $( this ).attr( 'rel' ) ).val( 1 ); } else { el.find( '#' + $( this ).attr( 'rel' ) ).val( '' ); } } ); } ); }; redux.field_objects.sortable.scrolling = function( selector ) { if (selector === undefined) { return; } var $scrollable = selector.find( ".redux-sorter" ); if ( scroll == 'up' ) { $scrollable.scrollTop( $scrollable.scrollTop() - 20 ); setTimeout( redux.field_objects.sortable.scrolling, 50 ); } else if ( scroll == 'down' ) { $scrollable.scrollTop( $scrollable.scrollTop() + 20 ); setTimeout( redux.field_objects.sortable.scrolling, 50 ); } }; })( jQuery );redux/ReduxCore/inc/fields/sortable/field_sortable.min.js000066600000002524152143340100017523 0ustar00(function(b){redux.field_objects=redux.field_objects||{};redux.field_objects.sortable=redux.field_objects.sortable||{};var a="";redux.field_objects.sortable.init=function(c){if(!c){c=b(document).find(".redux-group-tab:visible").find(".redux-container-sortable:visible")}b(c).each(function(){var e=b(this);var d=e;if(!e.hasClass("redux-field-container")){d=e.parents(".redux-field-container:first")}if(d.is(":hidden")){return}if(d.hasClass("redux-field-init")){d.removeClass("redux-field-init")}else{return}e.find(".redux-sortable").sortable({handle:".drag",placeholder:"placeholder",opacity:0.7,scroll:false,out:function(f,g){if(!g.helper){return}if(g.offset.top>0){a="down"}else{a="up"}redux.field_objects.sortable.scrolling(b(this).parents(".redux-field-container:first"))},over:function(f,g){a=""},deactivate:function(f,g){a=""},update:function(f,g){redux_change(b(this))}});e.find(".checkbox_sortable").on("click",function(){if(b(this).is(":checked")){e.find("#"+b(this).attr("rel")).val(1)}else{e.find("#"+b(this).attr("rel")).val("")}})})};redux.field_objects.sortable.scrolling=function(c){if(c===undefined){return}var d=c.find(".redux-sorter");if(a=="up"){d.scrollTop(d.scrollTop()-20);setTimeout(redux.field_objects.sortable.scrolling,50)}else{if(a=="down"){d.scrollTop(d.scrollTop()+20);setTimeout(redux.field_objects.sortable.scrolling,50)}}}})(jQuery);redux/ReduxCore/inc/fields/sortable/field_sortable.scss000066600000002313152143340100017274 0ustar00.redux-container-sortable { i { &.el { cursor: move; } } label { margin-right: 10px; width: 300px; &.bugger { margin-bottom: 0px !important; font-size: 12px !important; color: #999999; } } input { margin-right: 10px; } .checkbox-container { width: 364px; .drag { float: right; margin-left: 10px; } } ul { &.labeled { li { line-height: 1.4em !important; } } } li { line-height: 30px !important; &.ui-state-highlight { height: 30px; width: 364px; margin-bottom: 13px; } &.placeholder { height: 30px; margin: 10px 0; } } } .wp-customizer { .redux-sortable { input[type="text"] { width: 92%; } i.el { margin-left: 5px; } } .redux-container-sortable { .checkbox-container { width: inherit; } .ui-draggable-handle { margin-left: 3%; } } } redux/ReduxCore/inc/fields/sortable/field_sortable.css000066600000001661152143340100017116 0ustar00.redux-container-sortable i.el{cursor:move}.redux-container-sortable label{margin-right:10px;width:300px}.redux-container-sortable label.bugger{margin-bottom:0 !important;font-size:12px !important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:364px}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.labeled li{line-height:1.4em !important}.redux-container-sortable li{line-height:30px !important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type="text"]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}redux/ReduxCore/inc/fields/sortable/field_sortable.php000066600000014713152143340100017117 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since Redux_Options 2.0.1 */ function render() { if ( empty( $this->field['mode'] ) ) { $this->field['mode'] = "text"; } if ( $this->field['mode'] != "checkbox" && $this->field['mode'] != "text" ) { $this->field['mode'] = "text"; } $class = ( isset( $this->field['class'] ) ) ? $this->field['class'] : ''; $options = $this->field['options']; // This is to weed out missing options that might be in the default // Why? Who knows. Call it a dummy check. if ( ! empty( $this->value ) ) { foreach ( $this->value as $k => $v ) { if ( ! isset( $options[ $k ] ) ) { unset( $this->value[ $k ] ); } } } $noSort = false; foreach ( $options as $k => $v ) { if ( ! isset( $this->value[ $k ] ) ) { // A save has previously been done. if ( is_array( $this->value ) && array_key_exists( $k, $this->value ) ) { $this->value[ $k ] = $v; // Missing database entry, meaning no save has yet been done. } else { $noSort = true; $this->value[ $k ] = ''; } } } // If missing database entries are found, it means no save has been done // and therefore no sort should be done. Set the default array in the same // order as the options array. Why? The sort order is based on the // saved default array. If entries are missing, the sort is messed up. // - kp if ( true == $noSort ) { $dummyArr = array(); foreach ( $options as $k => $v ) { $dummyArr[ $k ] = $this->value[ $k ]; } unset( $this->value ); $this->value = $dummyArr; unset( $dummyArr ); } $use_labels = false; $label_class = ''; if ( $this->field['mode'] != "checkbox" ) { if ( ( isset( $this->field['label'] ) && $this->field['label'] == true ) ) { $use_labels = true; $label_class = ' labeled'; } } echo '
      '; foreach ( $this->value as $k => $nicename ) { echo '
    • '; $checked = ""; $name = 'name="' . $this->field['name'] . $this->field['name_suffix'] . '[' . $k . ']' . '" '; if ( $this->field['mode'] == "checkbox" ) { $value_display = $this->value[ $k ]; if ( ! empty( $this->value[ $k ] ) ) { $checked = 'checked="checked" '; } $class .= " checkbox_sortable"; $name = ""; echo ''; echo '
      '; } else { $value_display = isset( $this->value[ $k ] ) ? $this->value[ $k ] : ''; $nicename = $this->field['options'][$k]; } if ($this->field['mode'] != "checkbox") { if ($use_labels) { echo ''; echo "
      "; } } echo ''; echo ''; //if ( ( isset( $this->field['label'] ) && $this->field['label'] == true ) ) { if ($this->field['mode'] == "checkbox") { if ( $this->field['mode'] != "checkbox" ) { //echo "
      "; //echo ''; } else { echo ''; } } if ( $this->field['mode'] == "checkbox" ) { echo '
      '; } echo '
    • '; } echo '
    '; } function enqueue() { if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-sortable-css', ReduxFramework::$_url . 'inc/fields/sortable/field_sortable.css', array(), time(), 'all' ); } wp_enqueue_script( 'redux-field-sortable-js', ReduxFramework::$_url . 'inc/fields/sortable/field_sortable' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js', 'jquery-ui-sortable' ), time(), true ); } } } redux/ReduxCore/inc/fields/sortable/field_sortable.css.map000066600000001305152143340100017665 0ustar00{ "version": 3, "mappings": "AAEQ,8BAAK;EACD,MAAM,EAAE,IAAI;AAIpB,+BAAM;EACF,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,KAAK;EAEZ,sCAAS;IACL,aAAa,EAAE,cAAc;IAC7B,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,OAAO;AAItB,+BAAM;EACF,YAAY,EAAE,IAAI;AAGtB,6CAAoB;EAChB,KAAK,EAAE,KAAK;EAEZ,mDAAM;IACF,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,IAAI;AAMjB,uCAAG;EACC,WAAW,EAAE,gBAAgB;AAKzC,4BAAG;EACC,WAAW,EAAE,eAAe;EAE5B,+CAAqB;IACjB,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,IAAI;EAGvB,wCAAc;IACV,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,MAAM;;AAOlB,iDAAmB;EACf,KAAK,EAAE,GAAG;AAEd,mCAAK;EACD,WAAW,EAAE,GAAG;AAIpB,4DAAoB;EAChB,KAAK,EAAE,OAAO;AAElB,6DAAqB;EACjB,WAAW,EAAE,EAAE", "sources": ["field_sortable.scss"], "names": [], "file": "field_sortable.css" }redux/ReduxCore/inc/fields/date/field_date.css000066600000000130152143340100015310 0ustar00#ui-datepicker-div{z-index:15 !important}.ui-datepicker-header{background-color:#00abef}redux/ReduxCore/inc/fields/date/field_date.php000066600000006357152143340100015330 0ustar00. * * @package ReduxFramework * @subpackage Field_Date * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @author Kevin Provance (kprovance) * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_date' ) ) { /** * Main ReduxFramework_date class * * @since 1.0.0 */ class ReduxFramework_date { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { $placeholder = ( isset( $this->field['placeholder'] ) ) ? ' placeholder="' . esc_attr( $this->field['placeholder'] ) . '" ' : ''; echo ''; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-date-css', ReduxFramework::$_url . 'inc/fields/date/field_date.css', array(), time(), 'all' ); } wp_enqueue_script( 'redux-field-date-js', ReduxFramework::$_url . 'inc/fields/date/field_date' . Redux_Functions::isMin() . '.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'redux-js' ), time(), true ); } } }redux/ReduxCore/inc/fields/date/field_date.scss000066600000000156152143340100015503 0ustar00#ui-datepicker-div { z-index: 15 !important; } .ui-datepicker-header { background-color: #00abef; } redux/ReduxCore/inc/fields/date/field_date.min.js000066600000001430152143340100015722 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.date=redux.field_objects.date||{},a(document).ready(function(){}),redux.field_objects.date.init=function(b){b||(b=a(document).find(".redux-container-date:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".redux-datepicker").each(function(){a(this).datepicker({dateFormat:"mm/dd/yy",beforeShow:function(b,c){var d=a("#ui-datepicker-div"),e=c.dpDiv;a(".redux-container:first").append(d),a("#ui-datepicker-div").hide(),setTimeout(function(){e.position({my:"left top",at:"left bottom",collision:"none",of:b})},1)}})}))})}}(jQuery);redux/ReduxCore/inc/fields/date/field_date.css.map000066600000000253152143340100016072 0ustar00{ "version": 3, "mappings": "AAAA,kBAAmB;EACf,OAAO,EAAE,aAAa;;AAG1B,qBAAsB;EAClB,gBAAgB,EAAE,OAAO", "sources": ["field_date.scss"], "names": [], "file": "field_date.css" }redux/ReduxCore/inc/fields/date/field_date.js000066600000006044152143340100015146 0ustar00/*global jQuery, document, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.date = redux.field_objects.date || {}; $( document ).ready( function() { //redux.field_objects.date.init(); } ); redux.field_objects.date.init = function( selector ) { if ( !selector ) { selector = $( document ).find( '.redux-container-date:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // var someArr = [] // someArr = i; // console.log(someArr); // var str = JSON.parse('{"redux_demo[opt-multi-check]":{"redux_demo[opt-multi-check][1]":"1","redux_demo[opt-multi-check][2]":"","redux_demo[opt-multi-check][3]":""}}'); // console.log (str); // // $.each(str, function(idx, val){ // var tmpArr = new Object(); // var count = 1; // // $.each(val, function (i, v){ // // tmpArr[count] = v; // count++; // }); // // var newArr = {}; // newArr[idx] = tmpArr; // var newJSON = JSON.stringify(newArr) // //console.log(newJSON); // }); el.find( '.redux-datepicker' ).each( function() { $( this ).datepicker({ "dateFormat":"mm/dd/yy", beforeShow: function(input, instance){ var el = $('#ui-datepicker-div'); //$.datepicker._pos = $.datepicker._findPos(input); //this is the default position var popover = instance.dpDiv; $('.redux-container:first').append(el); $('#ui-datepicker-div').hide(); setTimeout(function() { popover.position({ my: 'left top', at: 'left bottom', collision: 'none', of: input }); }, 1); } }); }); } ); }; })( jQuery );redux/ReduxCore/inc/fields/multi_text/field_multi_text.scss000066600000001755152143340100020253 0ustar00.redux-container-multi_text { ul.redux-multi-text { margin: 0; padding: 0; } .redux-multi-text-add { clear: both; margin: 5px 0; } a.redux-multi-text-remove { &.deletion { color: #F00; padding: 2px 4px; margin-left: 5px; &:hover { background: red; color: #fff; text-decoration: none; } } } } @media screen and (max-width: 782px) { .redux-container-multi_text { input { clear: both; } .redux-multi-text-remove { margin: 0; float: right; } } } .wp-customizer { .redux-container-multi_text { .button { float: right; } .redux-multi-text-remove { float: right; margin-bottom: 5px; } ul.redux-multi-text input { width: 100% !important; } } } redux/ReduxCore/inc/fields/multi_text/field_multi_text.min.js000066600000002721152143340100020470 0ustar00(function(a){redux.field_objects=redux.field_objects||{};redux.field_objects.multi_text=redux.field_objects.multi_text||{};redux.field_objects.multi_text.init=function(b){if(!b){b=a(document).find(".redux-container-multi_text:visible")}a(b).each(function(){var d=a(this);var c=d;if(!d.hasClass("redux-field-container")){c=d.parents(".redux-field-container:first")}if(c.is(":hidden")){return}if(c.hasClass("redux-field-init")){c.removeClass("redux-field-init")}else{return}d.find(".redux-multi-text-remove").live("click",function(){redux_change(a(this));a(this).prev('input[type="text"]').val("");var e=a(this).attr("data-id");a(this).parent().slideUp("medium",function(){a(this).remove();var g=d.find("#"+e+" li").length;if(g==1){var h=d.find(".redux-multi-text-add");var f=h.attr("data-name");d.find("#"+e+' li:last-child input[type="text"]').attr("name",f)}})});d.find(".redux-multi-text-add").click(function(){var k=parseInt(a(this).attr("data-add_number"));var m=a(this).attr("data-id");var g=a(this).attr("data-name")+"[]";for(var j=0;j1){var h,e;d.find("#"+m+" li").each(function(i,n){h=a(this).css("display");if(h==="none"){e=a(this).find('input[type="text"]');e.attr("name","")}})}})})}})(jQuery);redux/ReduxCore/inc/fields/multi_text/field_multi_text.css.map000066600000001107152143340100020633 0ustar00{ "version": 3, "mappings": "AACI,+CAAoB;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;AAGd,iDAAsB;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;AAIb,8DAAW;EACP,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,OAAO;EAChB,WAAW,EAAE,GAAG;EAEhB,oEAAQ;IACJ,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;;AAMrC,oCAAqC;EAE7B,iCAAM;IACF,KAAK,EAAE,IAAI;EAGf,oDAAyB;IACrB,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,KAAK;AAOhB,kDAAQ;EACJ,KAAK,EAAE,KAAK;AAEhB,mEAAyB;EACrB,KAAK,EAAE,KAAK;EACZ,aAAa,EAAE,GAAG;AAEtB,oEAA0B;EACtB,KAAK,EAAE,eAAe", "sources": ["field_multi_text.scss"], "names": [], "file": "field_multi_text.css" }redux/ReduxCore/inc/fields/multi_text/field_multi_text.js000066600000007062152143340100017711 0ustar00/*global redux_change, redux*/ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.multi_text = redux.field_objects.multi_text || {}; redux.field_objects.multi_text.init = function( selector ) { if ( !selector ) { selector = $( document ).find( '.redux-container-multi_text:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( '.redux-multi-text-remove' ).live( 'click', function() { redux_change( $( this ) ); $( this ).prev( 'input[type="text"]' ).val( '' ); var id = $( this ).attr( 'data-id' ); $( this ).parent().slideUp( 'medium', function() { $( this ).remove(); var lis = el.find( '#' + id + ' li').length; if (lis == 1) { var add = el.find( '.redux-multi-text-add' ); var name = add.attr( 'data-name' ); el.find( '#' + id + ' li:last-child input[type="text"]' ).attr( 'name', name ); } } ); } ); el.find( '.redux-multi-text-add' ).click( function() { var number = parseInt( $( this ).attr( 'data-add_number' ) ); var id = $( this ).attr( 'data-id' ); var name = $( this ).attr( 'data-name' ) + '[]'; for ( var i = 0; i < number; i++ ) { var new_input = $( '#' + id + ' li:last-child' ).clone(); el.find( '#' + id ).append( new_input ); el.find( '#' + id + ' li:last-child' ).removeAttr( 'style' ); el.find( '#' + id + ' li:last-child input[type="text"]' ).val( '' ); el.find( '#' + id + ' li:last-child input[type="text"]' ).attr( 'name', name ); } var lis = el.find( '#' + id + ' li').length; if (lis > 1) { var css, input; el.find('#' + id + ' li').each(function(idx, val){ css = $(this).css('display'); if (css === 'none') { input = $(this).find('input[type="text"]'); input.attr('name', ''); } }) } } ); } ); }; })( jQuery ); redux/ReduxCore/inc/fields/multi_text/field_multi_text.php000066600000013120152143340100020054 0ustar00. * * @package ReduxFramework * @subpackage Field_Multi_Text * @author Daniel J Griffiths (Ghost1227) * @author Dovy Paukstys * @author Kevin Provance (kprovance) * @version 3.0.0 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework_multi_text' ) ) { /** * Main ReduxFramework_multi_text class * * @since 1.0.0 */ class ReduxFramework_multi_text { /** * Field Constructor. * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function * * @since 1.0.0 * @access public * @return void */ function __construct( $field = array(), $value = '', $parent ) { $this->parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since 1.0.0 * @access public * @return void */ public function render() { $this->add_text = ( isset( $this->field['add_text'] ) ) ? $this->field['add_text'] : __( 'Add More', 'redux-framework' ); $this->show_empty = ( isset( $this->field['show_empty'] ) ) ? $this->field['show_empty'] : true; echo '
      '; if ( isset( $this->value ) && is_array( $this->value ) ) { foreach ( $this->value as $k => $value ) { if ( $value != '' || ($value == '' && $this->show_empty == true) ) { echo '
    • '; echo ' '; echo '' . __( 'Remove', 'redux-framework' ) . ''; echo '
    • '; } } } elseif ( $this->show_empty == true ) { echo '
    • '; echo ' '; echo '' . __( 'Remove', 'redux-framework' ) . ''; echo '
    • '; } $the_name = ''; if (isset($this->value) && empty($this->value) && $this->show_empty == false) { $the_name = $this->field['name'] . $this->field['name_suffix']; } echo '
    • '; echo '' . __( 'Remove', 'redux-framework' ) . ''; echo '
    • '; echo '
    '; echo ''; $this->field['add_number'] = ( isset( $this->field['add_number'] ) && is_numeric( $this->field['add_number'] ) ) ? $this->field['add_number'] : 1; echo '' . $this->add_text . '
    '; } /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since 1.0.0 * @access public * @return void */ public function enqueue() { wp_enqueue_script( 'redux-field-multi-text-js', ReduxFramework::$_url . 'inc/fields/multi_text/field_multi_text' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-multi-text-css', ReduxFramework::$_url . 'inc/fields/multi_text/field_multi_text.css', array(), time(), 'all' ); } } } }redux/ReduxCore/inc/fields/multi_text/field_multi_text.css000066600000001403152143340100020056 0ustar00.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}.redux-container-multi_text a.redux-multi-text-remove.deletion{color:#F00;padding:2px 4px;margin-left:5px}.redux-container-multi_text a.redux-multi-text-remove.deletion:hover{background:red;color:#fff;text-decoration:none}@media screen and (max-width:782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100% !important}redux/ReduxCore/inc/fields/switch/field_switch.scss000066600000002650152143340100016454 0ustar00.redux-container-switch { .switch-options { min-height: 30px; margin-right: 10px; label { cursor: pointer; } input { display: none; } } .cb-enable, .cb-disable { padding: 0 10px; border-width: 1px; border-style: solid; -webkit-appearance: none; white-space: nowrap; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; span { line-height: 30px; display: block; font-weight: 700; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; } } .cb-enable, .cb-disable, .cb-enable span, .cb-disable span { display: block; float: left; } .cb-enable { border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; &.selected { color: #fff; } } .cb-disable { border-left: 0; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; &.selected { color: #fff; } } }redux/ReduxCore/inc/fields/switch/field_switch.css.map000066600000001634152143340100017046 0ustar00{ "version": 3, "mappings": "AACI,uCAAgB;EACZ,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAElB,6CAAM;IACF,MAAM,EAAE,OAAO;EAGnB,6CAAM;IACF,OAAO,EAAE,IAAI;AAIrB;mCACY;EACR,OAAO,EAAE,MAAM;EACf,YAAY,EAAE,GAAG;EACjB,YAAY,EAAE,KAAK;EACnB,kBAAkB,EAAE,IAAI;EACxB,WAAW,EAAE,MAAM;EACnB,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU;EAEtB;0CAAK;IACD,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,IAAI;IACzB,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;AAIzB;;;wCAGiB;EACb,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;AAGf,kCAAW;EACP,YAAY,EAAE,CAAC;EACf,aAAa,EAAE,eAAe;EAC9B,kBAAkB,EAAE,eAAe;EACnC,qBAAqB,EAAE,eAAe;EAEtC,2CAAW;IACP,KAAK,EAAE,IAAI;AAInB,mCAAY;EACR,WAAW,EAAE,CAAC;EACd,aAAa,EAAE,eAAe;EAC9B,kBAAkB,EAAE,eAAe;EACnC,qBAAqB,EAAE,eAAe;EAEtC,4CAAW;IACP,KAAK,EAAE,IAAI", "sources": ["field_switch.scss"], "names": [], "file": "field_switch.css" }redux/ReduxCore/inc/fields/switch/field_switch.php000066600000005505152143340100016272 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 0.0.4 */ function render() { $cb_enabled = $cb_disabled = ''; //no errors, please // //Get selected if ( (int) $this->value == 1 ) { $cb_enabled = ' selected'; } else { $cb_disabled = ' selected'; } //Label ON $this->field['on'] = isset( $this->field['on'] ) ? $this->field['on'] : __( 'On', 'redux-framework' ); //Label OFF $this->field['off'] = isset( $this->field['off'] ) ? $this->field['off'] : __( 'Off', 'redux-framework' ); echo '
    '; echo ''; echo ''; echo ''; echo '
    '; } //function /** * Enqueue Function. * If this field requires any scripts, or css define this function and register/enqueue the scripts/css * * @since ReduxFramework 0.0.4 */ function enqueue() { wp_enqueue_script( 'redux-field-switch-js', ReduxFramework::$_url . 'inc/fields/switch/field_switch' . Redux_Functions::isMin() . '.js', array( 'jquery', 'redux-js' ), time(), true ); if ($this->parent->args['dev_mode']) { wp_enqueue_style( 'redux-field-switch-css', ReduxFramework::$_url . 'inc/fields/switch/field_switch.css', array(), time(), 'all' ); } } } }redux/ReduxCore/inc/fields/switch/field_switch.min.js000066600000002413152143340100016674 0ustar00!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects["switch"]=redux.field_objects["switch"]||{},a(document).ready(function(){}),redux.field_objects["switch"].init=function(b){b||(b=a(document).find(".redux-group-tab:visible").find(".redux-container-switch:visible")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.is(":hidden")||c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".cb-enable").click(function(){if(!a(this).hasClass("selected")){var c=a(this).parents(".switch-options");a(".cb-disable",c).removeClass("selected"),a(this).addClass("selected"),a(".checkbox-input",c).val(1).trigger("change"),redux_change(a(".checkbox-input",c));var d=a(this),e=".f_"+d.data("id");b.find(e).slideDown("normal","swing")}}),b.find(".cb-disable").click(function(){if(!a(this).hasClass("selected")){var c=a(this).parents(".switch-options");a(".cb-enable",c).removeClass("selected"),a(this).addClass("selected"),a(".checkbox-input",c).val(0).trigger("change"),redux_change(a(".checkbox-input",c));var d=a(this),e=".f_"+d.data("id");b.find(e).slideUp("normal","swing")}}),b.find(".cb-enable span, .cb-disable span").find().attr("unselectable","on"))})}}(jQuery);redux/ReduxCore/inc/fields/switch/switch.gif000066600000002321152143340100015076 0ustar00GIF89a\%ItVb\\\`i}dBm u(R{yKs| imoqvvvi[dddWyMrUUUQ]Rq'aaadXW^|||pppzzzjjjrrrnnntttlllxxxhhhyv{sgbk儶#Oggg$uρ"`s!Ȭu nΙÏؿÀXpz!2|nWx%zX \&eUa$#\fff!,L}|! OS<&A9;C̢@>:?B=DT%, QP4NH`Az(TXaC#!"8E2f\‘#YdI%(Q2X2˗0mȔy͛/rl?'C+HXBb& ZIDATxڤTKK[QUDRKWjtEJ*vp-T]-!’bļ0Mb&wz*nz`swfs9,,v)6Yz,]):1a>:JCCC$#C3d5x1l&&&0=|_6lRB, !5122BSSS)Tu]K1KnkQRqEq:s1O2xtpW:PZCiFcjZyxAv'̪H BrO)ECT3.fA<GOOOd'agyppkwwq7 ƻʟy +>:7;|"v70^Lboo$')'њ:w.///q/=Hy]ȀWVVޱMCltJIC:v?[Z3"iIENDB`redux/ReduxCore/inc/fields/switch/field_switch.js000066600000006037152143340100016120 0ustar00/*global redux_change, redux*/ /** * Switch * Dependencies : jquery * Feature added by : Smartik - http://smartik.ws/ * Date : 03.17.2013 */ (function( $ ) { "use strict"; redux.field_objects = redux.field_objects || {}; redux.field_objects.switch = redux.field_objects.switch || {}; $( document ).ready( function() { //redux.field_objects.switch.init(); } ); redux.field_objects.switch.init = function( selector ) { if ( !selector ) { selector = $( document ).find( ".redux-group-tab:visible" ).find( '.redux-container-switch:visible' ); } $( selector ).each( function() { var el = $( this ); var parent = el; if ( !el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ":hidden" ) ) { // Skip hidden fields return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } el.find( ".cb-enable" ).click( function() { if ( $( this ).hasClass( 'selected' ) ) { return; } var parent = $( this ).parents( '.switch-options' ); $( '.cb-disable', parent ).removeClass( 'selected' ); $( this ).addClass( 'selected' ); $( '.checkbox-input', parent ).val( 1 ).trigger('change'); redux_change( $( '.checkbox-input', parent ) ); //fold/unfold related options var obj = $( this ); var $fold = '.f_' + obj.data( 'id' ); el.find( $fold ).slideDown( 'normal', "swing" ); } ); el.find( ".cb-disable" ).click( function() { if ( $( this ).hasClass( 'selected' ) ) { return; } var parent = $( this ).parents( '.switch-options' ); $( '.cb-enable', parent ).removeClass( 'selected' ); $( this ).addClass( 'selected' ); $( '.checkbox-input', parent ).val( 0 ).trigger('change'); redux_change( $( '.checkbox-input', parent ) ); //fold/unfold related options var obj = $( this ); var $fold = '.f_' + obj.data( 'id' ); el.find( $fold ).slideUp( 'normal', "swing" ); } ); el.find( '.cb-enable span, .cb-disable span' ).find().attr( 'unselectable', 'on' ); } ); }; })( jQuery );redux/ReduxCore/inc/fields/raw/field_raw.php000066600000004045152143340100015050 0ustar00parent = $parent; $this->field = $field; $this->value = $value; } /** * Field Render Function. * Takes the vars and outputs the HTML for the field in the settings * * @since ReduxFramework 1.0.0 */ function render() { if ( ! empty( $this->field['include'] ) && file_exists( $this->field['include'] ) ) { require_once $this->field['include']; } if ( isset( $this->field['content_path'] ) && ! empty( $this->field['content_path'] ) && file_exists( $this->field['content_path'] ) ) { $this->field['content'] = $this->parent->filesystem->execute( 'get_contents', $this->field['content_path'] ); } if ( ! empty( $this->field['content'] ) && isset( $this->field['content'] ) ) { if ( isset( $this->field['markdown'] ) && $this->field['markdown'] == true && ! empty( $this->field['content'] ) ) { require_once dirname( __FILE__ ) . "/parsedown.php"; $Parsedown = new Parsedown(); echo $Parsedown->text( $this->field['content'] ); } else { echo $this->field['content']; } } do_action( 'redux-field-raw-' . $this->parent->args['opt_name'] . '-' . $this->field['id'] ); } } }redux/ReduxCore/inc/fields/raw/parsedown.php000066600000111560152143340100015117 0ustar00DefinitionData = array(); # standardize line breaks $text = str_replace(array("\r\n", "\r"), "\n", $text); # remove surrounding line breaks $text = trim($text, "\n"); # split text into lines $lines = explode("\n", $text); # iterate through lines to identify blocks $markup = $this->lines($lines); # trim line breaks $markup = trim($markup, "\n"); return $markup; } # # Setters # function setBreaksEnabled($breaksEnabled) { $this->breaksEnabled = $breaksEnabled; return $this; } protected $breaksEnabled; function setMarkupEscaped($markupEscaped) { $this->markupEscaped = $markupEscaped; return $this; } protected $markupEscaped; function setUrlsLinked($urlsLinked) { $this->urlsLinked = $urlsLinked; return $this; } protected $urlsLinked = true; # # Lines # protected $BlockTypes = array( '#' => array('Header'), '*' => array('Rule', 'List'), '+' => array('List'), '-' => array('SetextHeader', 'Table', 'Rule', 'List'), '0' => array('List'), '1' => array('List'), '2' => array('List'), '3' => array('List'), '4' => array('List'), '5' => array('List'), '6' => array('List'), '7' => array('List'), '8' => array('List'), '9' => array('List'), ':' => array('Table'), '<' => array('Comment', 'Markup'), '=' => array('SetextHeader'), '>' => array('Quote'), '[' => array('Reference'), '_' => array('Rule'), '`' => array('FencedCode'), '|' => array('Table'), '~' => array('FencedCode'), ); # ~ protected $unmarkedBlockTypes = array( 'Code', ); # # Blocks # protected function lines(array $lines) { $CurrentBlock = null; foreach ($lines as $line) { if (chop($line) === '') { if (isset($CurrentBlock)) { $CurrentBlock['interrupted'] = true; } continue; } if (strpos($line, "\t") !== false) { $parts = explode("\t", $line); $line = $parts[0]; unset($parts[0]); foreach ($parts as $part) { $shortage = 4 - mb_strlen($line, 'utf-8') % 4; $line .= str_repeat(' ', $shortage); $line .= $part; } } $indent = 0; while (isset($line[$indent]) and $line[$indent] === ' ') { $indent ++; } $text = $indent > 0 ? substr($line, $indent) : $line; # ~ $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); # ~ if (isset($CurrentBlock['continuable'])) { $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); if (isset($Block)) { $CurrentBlock = $Block; continue; } else { if ($this->isBlockCompletable($CurrentBlock['type'])) { $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); } } } # ~ $marker = $text[0]; # ~ $blockTypes = $this->unmarkedBlockTypes; if (isset($this->BlockTypes[$marker])) { foreach ($this->BlockTypes[$marker] as $blockType) { $blockTypes []= $blockType; } } # # ~ foreach ($blockTypes as $blockType) { $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); if (isset($Block)) { $Block['type'] = $blockType; if ( ! isset($Block['identified'])) { $Blocks []= $CurrentBlock; $Block['identified'] = true; } if ($this->isBlockContinuable($blockType)) { $Block['continuable'] = true; } $CurrentBlock = $Block; continue 2; } } # ~ if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) { $CurrentBlock['element']['text'] .= "\n".$text; } else { $Blocks []= $CurrentBlock; $CurrentBlock = $this->paragraph($Line); $CurrentBlock['identified'] = true; } } # ~ if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) { $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); } # ~ $Blocks []= $CurrentBlock; unset($Blocks[0]); # ~ $markup = ''; foreach ($Blocks as $Block) { if (isset($Block['hidden'])) { continue; } $markup .= "\n"; $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); } $markup .= "\n"; # ~ return $markup; } # # Allow for plugin extensibility # protected function isBlockContinuable($Type) { return method_exists($this, 'block'.$Type.'Continue'); } protected function isBlockCompletable($Type) { return method_exists($this, 'block'.$Type.'Complete'); } # # Code protected function blockCode($Line, $Block = null) { if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) { return; } if ($Line['indent'] >= 4) { $text = substr($Line['body'], 4); $Block = array( 'element' => array( 'name' => 'pre', 'handler' => 'element', 'text' => array( 'name' => 'code', 'text' => $text, ), ), ); return $Block; } } protected function blockCodeContinue($Line, $Block) { if ($Line['indent'] >= 4) { if (isset($Block['interrupted'])) { $Block['element']['text']['text'] .= "\n"; unset($Block['interrupted']); } $Block['element']['text']['text'] .= "\n"; $text = substr($Line['body'], 4); $Block['element']['text']['text'] .= $text; return $Block; } } protected function blockCodeComplete($Block) { $text = $Block['element']['text']['text']; $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); $Block['element']['text']['text'] = $text; return $Block; } # # Comment protected function blockComment($Line) { if ($this->markupEscaped) { return; } if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') { $Block = array( 'markup' => $Line['body'], ); if (preg_match('/-->$/', $Line['text'])) { $Block['closed'] = true; } return $Block; } } protected function blockCommentContinue($Line, array $Block) { if (isset($Block['closed'])) { return; } $Block['markup'] .= "\n" . $Line['body']; if (preg_match('/-->$/', $Line['text'])) { $Block['closed'] = true; } return $Block; } # # Fenced Code protected function blockFencedCode($Line) { if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches)) { $Element = array( 'name' => 'code', 'text' => '', ); if (isset($matches[1])) { $class = 'language-'.$matches[1]; $Element['attributes'] = array( 'class' => $class, ); } $Block = array( 'char' => $Line['text'][0], 'element' => array( 'name' => 'pre', 'handler' => 'element', 'text' => $Element, ), ); return $Block; } } protected function blockFencedCodeContinue($Line, $Block) { if (isset($Block['complete'])) { return; } if (isset($Block['interrupted'])) { $Block['element']['text']['text'] .= "\n"; unset($Block['interrupted']); } if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) { $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); $Block['complete'] = true; return $Block; } $Block['element']['text']['text'] .= "\n".$Line['body'];; return $Block; } protected function blockFencedCodeComplete($Block) { $text = $Block['element']['text']['text']; $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); $Block['element']['text']['text'] = $text; return $Block; } # # Header protected function blockHeader($Line) { if (isset($Line['text'][1])) { $level = 1; while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') { $level ++; } if ($level > 6) { return; } $text = trim($Line['text'], '# '); $Block = array( 'element' => array( 'name' => 'h' . min(6, $level), 'text' => $text, 'handler' => 'line', ), ); return $Block; } } # # List protected function blockList($Line) { list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) { $Block = array( 'indent' => $Line['indent'], 'pattern' => $pattern, 'element' => array( 'name' => $name, 'handler' => 'elements', ), ); $Block['li'] = array( 'name' => 'li', 'handler' => 'li', 'text' => array( $matches[2], ), ); $Block['element']['text'] []= & $Block['li']; return $Block; } } protected function blockListContinue($Line, array $Block) { if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) { if (isset($Block['interrupted'])) { $Block['li']['text'] []= ''; unset($Block['interrupted']); } unset($Block['li']); $text = isset($matches[1]) ? $matches[1] : ''; $Block['li'] = array( 'name' => 'li', 'handler' => 'li', 'text' => array( $text, ), ); $Block['element']['text'] []= & $Block['li']; return $Block; } if ($Line['text'][0] === '[' and $this->blockReference($Line)) { return $Block; } if ( ! isset($Block['interrupted'])) { $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); $Block['li']['text'] []= $text; return $Block; } if ($Line['indent'] > 0) { $Block['li']['text'] []= ''; $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); $Block['li']['text'] []= $text; unset($Block['interrupted']); return $Block; } } # # Quote protected function blockQuote($Line) { if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) { $Block = array( 'element' => array( 'name' => 'blockquote', 'handler' => 'lines', 'text' => (array) $matches[1], ), ); return $Block; } } protected function blockQuoteContinue($Line, array $Block) { if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) { if (isset($Block['interrupted'])) { $Block['element']['text'] []= ''; unset($Block['interrupted']); } $Block['element']['text'] []= $matches[1]; return $Block; } if ( ! isset($Block['interrupted'])) { $Block['element']['text'] []= $Line['text']; return $Block; } } # # Rule protected function blockRule($Line) { if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) { $Block = array( 'element' => array( 'name' => 'hr' ), ); return $Block; } } # # Setext protected function blockSetextHeader($Line, array $Block = null) { if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) { return; } if (chop($Line['text'], $Line['text'][0]) === '') { $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; return $Block; } } # # Markup protected function blockMarkup($Line) { if ($this->markupEscaped) { return; } if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) { $element = strtolower($matches[1]); if (in_array($element, $this->textLevelElements)) { return; } $Block = array( 'name' => $matches[1], 'depth' => 0, 'markup' => $Line['text'], ); $length = strlen($matches[0]); $remainder = substr($Line['text'], $length); if (trim($remainder) === '') { if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) { $Block['closed'] = true; $Block['void'] = true; } } else { if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) { return; } if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) { $Block['closed'] = true; } } return $Block; } } protected function blockMarkupContinue($Line, array $Block) { if (isset($Block['closed'])) { return; } if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open { $Block['depth'] ++; } if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close { if ($Block['depth'] > 0) { $Block['depth'] --; } else { $Block['closed'] = true; } } if (isset($Block['interrupted'])) { $Block['markup'] .= "\n"; unset($Block['interrupted']); } $Block['markup'] .= "\n".$Line['body']; return $Block; } # # Reference protected function blockReference($Line) { # ReduxFramework added string alerting to remove themecheck error. if (preg_match('/^\[(.+?)\]:[ ]*<'.'?'.'(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) { $id = strtolower($matches[1]); $Data = array( 'url' => $matches[2], 'title' => null, ); if (isset($matches[3])) { $Data['title'] = $matches[3]; } $this->DefinitionData['Reference'][$id] = $Data; $Block = array( 'hidden' => true, ); return $Block; } } # # Table protected function blockTable($Line, array $Block = null) { if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) { return; } if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') { $alignments = array(); $divider = $Line['text']; $divider = trim($divider); $divider = trim($divider, '|'); $dividerCells = explode('|', $divider); foreach ($dividerCells as $dividerCell) { $dividerCell = trim($dividerCell); if ($dividerCell === '') { continue; } $alignment = null; if ($dividerCell[0] === ':') { $alignment = 'left'; } if (substr($dividerCell, - 1) === ':') { $alignment = $alignment === 'left' ? 'center' : 'right'; } $alignments []= $alignment; } # ~ $HeaderElements = array(); $header = $Block['element']['text']; $header = trim($header); $header = trim($header, '|'); $headerCells = explode('|', $header); foreach ($headerCells as $index => $headerCell) { $headerCell = trim($headerCell); $HeaderElement = array( 'name' => 'th', 'text' => $headerCell, 'handler' => 'line', ); if (isset($alignments[$index])) { $alignment = $alignments[$index]; $HeaderElement['attributes'] = array( 'style' => 'text-align: '.$alignment.';', ); } $HeaderElements []= $HeaderElement; } # ~ $Block = array( 'alignments' => $alignments, 'identified' => true, 'element' => array( 'name' => 'table', 'handler' => 'elements', ), ); $Block['element']['text'] []= array( 'name' => 'thead', 'handler' => 'elements', ); $Block['element']['text'] []= array( 'name' => 'tbody', 'handler' => 'elements', 'text' => array(), ); $Block['element']['text'][0]['text'] []= array( 'name' => 'tr', 'handler' => 'elements', 'text' => $HeaderElements, ); return $Block; } } protected function blockTableContinue($Line, array $Block) { if (isset($Block['interrupted'])) { return; } if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) { $Elements = array(); $row = $Line['text']; $row = trim($row); $row = trim($row, '|'); preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); foreach ($matches[0] as $index => $cell) { $cell = trim($cell); $Element = array( 'name' => 'td', 'handler' => 'line', 'text' => $cell, ); if (isset($Block['alignments'][$index])) { $Element['attributes'] = array( 'style' => 'text-align: '.$Block['alignments'][$index].';', ); } $Elements []= $Element; } $Element = array( 'name' => 'tr', 'handler' => 'elements', 'text' => $Elements, ); $Block['element']['text'][1]['text'] []= $Element; return $Block; } } # # ~ # protected function paragraph($Line) { $Block = array( 'element' => array( 'name' => 'p', 'text' => $Line['text'], 'handler' => 'line', ), ); return $Block; } # # Inline Elements # protected $InlineTypes = array( '"' => array('SpecialCharacter'), '!' => array('Image'), '&' => array('SpecialCharacter'), '*' => array('Emphasis'), ':' => array('Url'), '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), '>' => array('SpecialCharacter'), '[' => array('Link'), '_' => array('Emphasis'), '`' => array('Code'), '~' => array('Strikethrough'), '\\' => array('EscapeSequence'), ); # ~ protected $inlineMarkerList = '!"*_&[:<>`~\\'; # # ~ # public function line($text) { $markup = ''; # $excerpt is based on the first occurrence of a marker while ($excerpt = strpbrk($text, $this->inlineMarkerList)) { $marker = $excerpt[0]; $markerPosition = strpos($text, $marker); $Excerpt = array('text' => $excerpt, 'context' => $text); foreach ($this->InlineTypes[$marker] as $inlineType) { $Inline = $this->{'inline'.$inlineType}($Excerpt); if ( ! isset($Inline)) { continue; } # makes sure that the inline belongs to "our" marker if (isset($Inline['position']) and $Inline['position'] > $markerPosition) { continue; } # sets a default inline position if ( ! isset($Inline['position'])) { $Inline['position'] = $markerPosition; } # the text that comes before the inline $unmarkedText = substr($text, 0, $Inline['position']); # compile the unmarked text $markup .= $this->unmarkedText($unmarkedText); # compile the inline $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); # remove the examined text $text = substr($text, $Inline['position'] + $Inline['extent']); continue 2; } # the marker does not belong to an inline $unmarkedText = substr($text, 0, $markerPosition + 1); $markup .= $this->unmarkedText($unmarkedText); $text = substr($text, $markerPosition + 1); } $markup .= $this->unmarkedText($text); return $markup; } # # ~ # protected function inlineCode($Excerpt) { $marker = $Excerpt['text'][0]; if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]), 'element' => array( 'name' => 'code', 'text' => $text, ), ); } } protected function inlineEmailTag($Excerpt) { if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) { $url = $matches[1]; if ( ! isset($matches[2])) { $url = 'mailto:' . $url; } return array( 'extent' => strlen($matches[0]), 'element' => array( 'name' => 'a', 'text' => $matches[1], 'attributes' => array( 'href' => $url, ), ), ); } } protected function inlineEmphasis($Excerpt) { if ( ! isset($Excerpt['text'][1])) { return; } $marker = $Excerpt['text'][0]; if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) { $emphasis = 'strong'; } elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) { $emphasis = 'em'; } else { return; } return array( 'extent' => strlen($matches[0]), 'element' => array( 'name' => $emphasis, 'handler' => 'line', 'text' => $matches[1], ), ); } protected function inlineEscapeSequence($Excerpt) { if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) { return array( 'markup' => $Excerpt['text'][1], 'extent' => 2, ); } } protected function inlineImage($Excerpt) { if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') { return; } $Excerpt['text']= substr($Excerpt['text'], 1); $Link = $this->inlineLink($Excerpt); if ($Link === null) { return; } $Inline = array( 'extent' => $Link['extent'] + 1, 'element' => array( 'name' => 'img', 'attributes' => array( 'src' => $Link['element']['attributes']['href'], 'alt' => $Link['element']['text'], ), ), ); $Inline['element']['attributes'] += $Link['element']['attributes']; unset($Inline['element']['attributes']['href']); return $Inline; } protected function inlineLink($Excerpt) { $Element = array( 'name' => 'a', 'handler' => 'line', 'text' => null, 'attributes' => array( 'href' => null, 'title' => null, ), ); $extent = 0; $remainder = $Excerpt['text']; if (preg_match('/\[((?:[^][]|(?R))*)\]/', $remainder, $matches)) { $Element['text'] = $matches[1]; $extent += strlen($matches[0]); $remainder = substr($remainder, $extent); } else { return; } if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches)) { $Element['attributes']['href'] = $matches[1]; if (isset($matches[2])) { $Element['attributes']['title'] = substr($matches[2], 1, - 1); } $extent += strlen($matches[0]); } else { if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) { $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; $definition = strtolower($definition); $extent += strlen($matches[0]); } else { $definition = strtolower($Element['text']); } if ( ! isset($this->DefinitionData['Reference'][$definition])) { return; } $Definition = $this->DefinitionData['Reference'][$definition]; $Element['attributes']['href'] = $Definition['url']; $Element['attributes']['title'] = $Definition['title']; } $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']); return array( 'extent' => $extent, 'element' => $Element, ); } protected function inlineMarkup($Excerpt) { if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false) { return; } if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches)) { return array( 'markup' => $matches[0], 'extent' => strlen($matches[0]), ); } if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) { return array( 'markup' => $matches[0], 'extent' => strlen($matches[0]), ); } if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) { return array( 'markup' => $matches[0], 'extent' => strlen($matches[0]), ); } } protected function inlineSpecialCharacter($Excerpt) { if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) { return array( 'markup' => '&', 'extent' => 1, ); } $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); if (isset($SpecialCharacter[$Excerpt['text'][0]])) { return array( 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', 'extent' => 1, ); } } protected function inlineStrikethrough($Excerpt) { if ( ! isset($Excerpt['text'][1])) { return; } if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) { return array( 'extent' => strlen($matches[0]), 'element' => array( 'name' => 'del', 'text' => $matches[1], 'handler' => 'line', ), ); } } protected function inlineUrl($Excerpt) { if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') { return; } if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) { $Inline = array( 'extent' => strlen($matches[0][0]), 'position' => $matches[0][1], 'element' => array( 'name' => 'a', 'text' => $matches[0][0], 'attributes' => array( 'href' => $matches[0][0], ), ), ); return $Inline; } } protected function inlineUrlTag($Excerpt) { if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) { $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]); return array( 'extent' => strlen($matches[0]), 'element' => array( 'name' => 'a', 'text' => $url, 'attributes' => array( 'href' => $url, ), ), ); } } # ~ protected function unmarkedText($text) { if ($this->breaksEnabled) { $text = preg_replace('/[ ]*\n/', "
    \n", $text); } else { $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
    \n", $text); $text = str_replace(" \n", "\n", $text); } return $text; } # # Handlers # protected function element(array $Element) { $markup = '<'.$Element['name']; if (isset($Element['attributes'])) { foreach ($Element['attributes'] as $name => $value) { if ($value === null) { continue; } $markup .= ' '.$name.'="'.$value.'"'; } } if (isset($Element['text'])) { $markup .= '>'; if (isset($Element['handler'])) { $markup .= $this->{$Element['handler']}($Element['text']); } else { $markup .= $Element['text']; } $markup .= ''; } else { $markup .= ' />'; } return $markup; } protected function elements(array $Elements) { $markup = ''; foreach ($Elements as $Element) { $markup .= "\n" . $this->element($Element); } $markup .= "\n"; return $markup; } # ~ protected function li($lines) { $markup = $this->lines($lines); $trimmedMarkup = trim($markup); if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

    ') { $markup = $trimmedMarkup; $markup = substr($markup, 3); $position = strpos($markup, "

    "); $markup = substr_replace($markup, '', $position, 4); } return $markup; } # # Deprecated Methods # function parse($text) { $markup = $this->text($text); return $markup; } # # Static Methods # static function instance($name = 'default') { if (isset(self::$instances[$name])) { return self::$instances[$name]; } $instance = new static(); self::$instances[$name] = $instance; return $instance; } private static $instances = array(); # # Fields # protected $DefinitionData; # # Read-Only protected $specialCharacters = array( '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', ); protected $StrongRegex = array( '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', ); protected $EmRegex = array( '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', ); protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; protected $voidElements = array( 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', ); protected $textLevelElements = array( 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', 'i', 'rp', 'del', 'code', 'strike', 'marquee', 'q', 'rt', 'ins', 'font', 'strong', 's', 'tt', 'sub', 'mark', 'u', 'xm', 'sup', 'nobr', 'var', 'ruby', 'wbr', 'span', 'time', ); } redux/ReduxCore/inc/lib.redux_instances.php000066600000001647152143340100015025 0ustar00 $ReduxFramework] */ function get_all_redux_instances() { return ReduxFrameworkInstances::get_all_instances(); } }redux/ReduxCore/inc/themecheck/js/admin.js000066600000000625152143340100014506 0ustar00(function( $ ) { "use strict"; $(function() { $('#theme-check > h2').html( $('#theme-check > h2').html() + ' with Redux Theme-Check' ); if ( typeof redux_check_intro !== 'undefined' ) { $('#theme-check .theme-check').append( redux_check_intro.text ); } $('#theme-check form' ).append('   Extra WP.org Requirements.'); }); }(jQuery)); redux/ReduxCore/inc/themecheck/lang/themeforest-check.pot000066600000001626152143340100017513 0ustar00# Copyright (C) 2013 Japh # This file is distributed under the same license as the ThemeForest-Check package. msgid "" msgstr "" "Project-Id-Version: ThemeForest-Check 1.0.0\n" "Report-Msgid-Bugs-To: http://wordpress.org/tag/plugin-name\n" "POT-Creation-Date: 2013-05-10 11:23:19+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2013-05-10 10:37-0500\n" "Last-Translator: Japh \n" "Language-Team: Japh \n" "X-Generator: Poedit 1.5.7\n" "X-Poedit-KeywordsList: __;_e;_n;_x;esc_html_e;esc_html__;esc_attr_e;" "esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_x:1,2c;_n:1,2\n" "X-Poedit-Basepath: ../\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Poedit-SearchPath-0: .\n" #: class-themeforest-check.php:214 msgid "Page Title" msgstr "" #: class-themeforest-check.php:215 msgid "Menu Text" msgstr ""redux/ReduxCore/inc/themecheck/lang/index.php000066600000000033152143340100015176 0ustar00 * @license GPL-3.0+ * @link http://redux.op * @copyright 2015 ReduxFramework */ /** * Redux-ThemeCheck class * * @package Redux_ThemeCheck * @author Dovy */ // Don't duplicate me! if ( ! class_exists( 'Redux_ThemeCheck' ) ) { class Redux_ThemeCheck { /** * Plugin version, used for cache-busting of style and script file references. * * @since 1.0.0 * @var string */ protected $version = '1.0.0'; /** * Instance of this class. * * @since 1.0.0 * @var object */ protected static $instance = null; /** * Instance of the Redux class. * * @since 1.0.0 * @var object */ protected static $redux = null; /** * Details of the embedded Redux class. * * @since 1.0.0 * @var object */ protected static $redux_details = null; /** * Slug for various elements. * * @since 1.0.0 * @var string */ protected $slug = 'redux_themecheck'; /** * Initialize the plugin by setting localization, filters, and administration functions. * * @since 1.0.0 */ private function __construct() { if ( ! class_exists( 'ThemeCheckMain' ) ) { return; } // Load admin style sheet and JavaScript. add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); add_action( 'themecheck_checks_loaded', array( $this, 'disable_checks' ) ); add_action( 'themecheck_checks_loaded', array( $this, 'add_checks' ) ); } /** * Return an instance of this class. * * @since 1.0.0 * @return object A single instance of this class. */ public static function get_instance() { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } return self::$instance; } /** * Return an instance of this class. * * @since 1.0.0 * @return object A single instance of this class. */ public static function get_redux_instance() { // If the single instance hasn't been set, set it now. if ( null == self::$redux && ReduxFramework::$_as_plugin ) { self::$redux = new ReduxFramework(); self::$redux->init(); } return self::$redux; } /** * Return the Redux path info, if had. * * @since 1.0.0 * @return object A single instance of this class. */ public static function get_redux_details( $php_files = array() ) { if ( self::$redux_details === null ) { foreach ( $php_files as $php_key => $phpfile ) { if ( strpos( $phpfile, 'class' . ' ReduxFramework {' ) !== false ) { self::$redux_details = array( 'filename' => strtolower( basename( $php_key ) ), 'path' => $php_key, ); self::$redux_details['dir'] = str_replace( basename( $php_key ), '', $php_key ); self::$redux_details['parent_dir'] = str_replace( basename( self::$redux_details['dir'] ) . '/', '', self::$redux_details['dir'] ); } } } if ( self::$redux_details === null ) { self::$redux_details = false; } return self::$redux_details; } /** * Disable Theme-Check checks that aren't relevant for ThemeForest themes * * @since 1.0.0 */ function disable_checks() { global $themechecks; //$checks_to_disable = array( // 'IncludeCheck', // 'I18NCheck', // 'AdminMenu', // 'Bad_Checks', // 'MalwareCheck', // 'Theme_Support', // 'CustomCheck', // 'EditorStyleCheck', // 'IframeCheck', //); // //foreach ( $themechecks as $keyindex => $check ) { // if ( $check instanceof themecheck ) { // $check_class = get_class( $check ); // if ( in_array( $check_class, $checks_to_disable ) ) { // unset( $themechecks[$keyindex] ); // } // } //} } /** * Disable Theme-Check checks that aren't relevant for ThemeForest themes * * @since 1.0.0 */ function add_checks() { global $themechecks; // load all the checks in the checks directory $dir = 'checks'; foreach ( glob( dirname( __FILE__ ) . '/' . $dir . '/*.php' ) as $file ) { require_once $file; } } /** * Register and enqueue admin-specific style sheet. * * @since 1.0.1 */ public function enqueue_admin_styles() { $screen = get_current_screen(); if ( 'appearance_page_themecheck' == $screen->id ) { wp_enqueue_style( $this->slug . '-admin-styles', ReduxFramework::$_url . 'inc/themecheck/css/admin.css', array(), $this->version ); } } /** * Register and enqueue admin-specific JavaScript. * * @since 1.0.1 */ public function enqueue_admin_scripts() { $screen = get_current_screen(); if ( 'appearance_page_themecheck' == $screen->id ) { wp_enqueue_script( $this->slug . '-admin-script', ReduxFramework::$_url . 'inc/themecheck/js/admin.js', array( 'jquery' ), $this->version ); if ( ! isset( $_POST['themename'] ) ) { $intro = ''; $intro .= '

    Redux Theme-Check

    '; $intro .= '

    Extra checks for Redux to ensure you\'re ready for marketplace submission to marketplaces.

    '; $redux_check_intro['text'] = $intro; wp_localize_script( $this->slug . '-admin-script', 'redux_check_intro', $redux_check_intro ); } } } } Redux_ThemeCheck::get_instance(); }redux/ReduxCore/inc/themecheck/index.php000066600000000033152143340100014255 0ustar00error[] = '
    ' . sprintf( __( 'RECOMMENDED: If you are submitting to WordPress.org Theme Repository, it is strongly suggested that you read this document, or your theme will be rejected because of Redux.', 'redux-framework' ), 'https://docs.reduxframework.com/core/wordpress-org-submissions/' ) . '
    '; $ret = false; } else { // TODO Granular WP.org tests!!! // Check for Tracking checkcount(); $tracking = $redux['dir'] . 'inc/tracking.php'; if ( file_exists( $tracking ) ) { $this->error[] = '
    ' . sprintf( __('REQUIRED: You MUST delete %s , or your theme will be rejected by WP.org theme submission because of Redux.', 'redux-framework'), $tracking ) . '
    '; $ret = false; } // Embedded CDN package //use_cdn // Arguments checkcount(); $args = '
      '; $args .= "
    1. 'save_defaults' => false
    2. "; $args .= "
    3. 'use_cdn' => false
    4. "; $args .= "
    5. 'customizer_only' => true Non-Customizer Based Panels are Prohibited within WP.org Themes
    6. "; $args .= "
    7. 'database' => 'theme_mods' (" . __( 'Optional', 'redux-framework' ) . ")
    8. "; $args .= '
    '; $this->error[] = '
    ' . __( 'RECOMMENDED: The following arguments MUST be used for WP.org submissions, or you will be rejected because of your Redux configuration.', 'redux-framework' ) . $args . '
    '; } } return $ret; } function getError() { return $this->error; } } $themechecks[] = new Redux_Embedded;redux/ReduxCore/inc/themecheck/checks/full_package.php000066600000004540152143340100017032 0ustar00 __( 'Redux localization utilities', 'themecheck' ), 'bin' => __( 'Redux Resting Diles', 'themecheck' ), 'codestyles' => __( 'Redux Code Styles', 'themecheck' ), 'tests' => __( 'Redux Unit Testing', 'themecheck' ), 'class.redux-plugin.php' => __( 'Redux Plugin File', 'themecheck' ), 'bootstrap_tests.php' => __( 'Redux Boostrap Tests', 'themecheck' ), '.travis.yml' => __( 'CI Testing FIle', 'themecheck' ), 'phpunit.xml' => __( 'PHP Unit Testing', 'themecheck' ), ); $errors = array(); foreach ( $blacklist as $file => $reason ) { checkcount(); if ( file_exists( $redux['parent_dir'] . $file ) ) { $errors[ $redux['parent_dir'] . $file ] = $reason; } } if ( ! empty( $errors ) ) { $error = 'REQUIRED ' . __( 'It appears that you have embedded the full Redux package inside your theme. You need only embed the ReduxCore folder. Embedding anything else will get your rejected from theme submission. Suspected Redux package file(s):', 'redux-framework' ); $error .= '
      '; foreach ( $errors as $key => $e ) { $error .= '
    1. ' . $e . ': ' . $key . '
    2. '; } $error .= '
    '; $this->error[] = '
    ' . $error . '
    '; $ret = false; } } return $ret; } function getError() { return $this->error; } } $themechecks[] = new Redux_Full_Package();redux/ReduxCore/inc/themecheck/checks/index.php000066600000000033152143340100015515 0ustar00parent->admin_notices[] = array( 'type' => 'error', 'msg' => '' . __( 'File Permission Issues', 'redux-framework' ) . '
    ' . sprintf( __( 'We were unable to modify required files. Please check your permissions, or modify your wp-config.php file to contain your FTP login credentials as outlined here.', 'redux-framework' ), 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ), 'id' => 'redux-wp-login', 'dismiss' => false, ); } /** * Return an instance of this class. * * @since 1.0.0 * @return object A single instance of this class. */ public static function get_instance( $parent = null ) { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } if ( $parent !== null ) { self::$instance->parent = $parent; } return self::$instance; } public function ftp_form() { if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { echo '

    '; echo '' . __( 'File Permission Issues', 'redux-framework' ) . '
    ' . sprintf( __( 'We were unable to modify required files. Please ensure that %1s has the proper read-write permissions, or modify your wp-config.php file to contain your FTP login credentials as outlined here.', 'redux-framework' ), Redux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/', 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ); echo '

    ' . '
    '; } } function filesystem_init( $form_url, $method = '', $context = false, $fields = null ) { global $wp_filesystem; if ( ! empty( $this->creds ) ) { return true; } ob_start(); /* first attempt to get credentials */ if ( false === ( $this->creds = request_filesystem_credentials( $form_url, $method, false, $context ) ) ) { $this->creds = array(); $this->parent->ftp_form = ob_get_contents(); ob_end_clean(); /** * if we comes here - we don't have credentials * so the request for them is displaying * no need for further processing **/ return false; } /* now we got some credentials - try to use them*/ if ( ! WP_Filesystem( $this->creds ) ) { $this->creds = array(); /* incorrect connection data - ask for credentials again, now with error message */ request_filesystem_credentials( $form_url, '', true, $context ); $this->parent->ftp_form = ob_get_contents(); ob_end_clean(); return false; } return true; } public static function load_direct() { if ( self::$direct === null ) { require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php'; require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php'; self::$direct = new WP_Filesystem_Direct( array() ); } } public function execute( $action, $file = '', $params = '' ) { if ( empty( $this->parent->args ) ) { return; } if ( ! empty ( $params ) ) { extract( $params ); } if ( ! is_dir( ReduxFramework::$_upload_dir ) ) { wp_mkdir_p( ReduxFramework::$_upload_dir ); } // Setup the filesystem with creds require_once ABSPATH . '/wp-admin/includes/template.php'; require_once ABSPATH . '/wp-includes/pluggable.php'; require_once ABSPATH . '/wp-admin/includes/file.php'; if ( $this->parent->args['menu_type'] == 'submenu' ) { $page_parent = $this->parent->args['page_parent']; $base = $page_parent . '?page=' . $this->parent->args['page_slug']; } else { $base = 'admin.php?page=' . $this->parent->args['page_slug']; } $url = wp_nonce_url( $base, 'redux-options' ); $this->filesystem_init( $url, 'direct', dirname( $file ) ); return $this->do_action( $action, $file, $params ); } public function do_action( $action, $file = '', $params = '' ) { if ( ! empty ( $params ) ) { extract( $params ); } global $wp_filesystem; if ( ! isset( $params['chmod'] ) || ( isset( $params['chmod'] ) && empty( $params['chmod'] ) ) ) { if ( defined( 'FS_CHMOD_FILE' ) ) { $chmod = FS_CHMOD_FILE; } else { $chmod = 0644; } } $res = false; if ( ! isset( $recursive ) ) { $recursive = false; } //$target_dir = $wp_filesystem->find_folder( dirname( $file ) ); // Do unique stuff if ( $action == 'mkdir' ) { if ( defined( 'FS_CHMOD_DIR' ) ) { $chmod = FS_CHMOD_DIR; } else { $chmod = 0755; } $res = $wp_filesystem->mkdir( $file ); if ( ! $res ) { wp_mkdir_p( $file ); $res = file_exists( $file ); if ( ! $res ) { mkdir( $file, $chmod, true ); $res = file_exists( $file ); } } } elseif ( $action == 'rmdir' ) { $res = $wp_filesystem->rmdir( $file, $recursive ); } elseif ( $action == 'copy' && ! isset( $this->filesystem->killswitch ) ) { if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { $res = copy( $file, $destination ); if ( $res ) { chmod( $destination, $chmod ); } } else { $res = $wp_filesystem->copy( $file, $destination, $overwrite, $chmod ); } } elseif ( $action == 'move' && ! isset( $this->filesystem->killswitch ) ) { $res = $wp_filesystem->copy( $file, $destination, $overwrite ); } elseif ( $action == 'delete' ) { $res = $wp_filesystem->delete( $file, $recursive ); } elseif ( $action == 'rmdir' ) { $res = $wp_filesystem->rmdir( $file, $recursive ); } elseif ( $action == 'dirlist' ) { if ( ! isset( $include_hidden ) ) { $include_hidden = true; } $res = $wp_filesystem->dirlist( $file, $include_hidden, $recursive ); } elseif ( $action == 'put_contents' && ! isset( $this->filesystem->killswitch ) ) { // Write a string to a file if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { self::load_direct(); $res = self::$direct->put_contents( $file, $content, $chmod ); } else { $res = $wp_filesystem->put_contents( $file, $content, $chmod ); } } elseif ( $action == 'chown' ) { // Changes file owner if ( isset( $owner ) && ! empty( $owner ) ) { $res = $wp_filesystem->chmod( $file, $chmod, $recursive ); } } elseif ( $action == 'owner' ) { // Gets file owner $res = $wp_filesystem->owner( $file ); } elseif ( $action == 'chmod' ) { if ( ! isset( $params['chmod'] ) || ( isset( $params['chmod'] ) && empty( $params['chmod'] ) ) ) { $chmod = false; } $res = $wp_filesystem->chmod( $file, $chmod, $recursive ); } elseif ( $action == 'get_contents' ) { // Reads entire file into a string if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { self::load_direct(); $res = self::$direct->get_contents( $file ); } else { $res = $wp_filesystem->get_contents( $file ); } } elseif ( $action == 'get_contents_array' ) { // Reads entire file into an array $res = $wp_filesystem->get_contents_array( $file ); } elseif ( $action == 'object' ) { $res = $wp_filesystem; } elseif ( $action == 'unzip' ) { $unzipfile = unzip_file( $file, $destination ); if ( $unzipfile ) { $res = true; } } if ( ! $res ) { if ($action == 'dirlist') { if (empty($res) || $res == false || $res == '' ) { return; } if (is_array($res) && empty($res)) { return; } if (!is_array($res)) { if (count(glob("$file*")) == 0) { return; } } } $this->killswitch = true; $this->parent->admin_notices[] = array( 'type' => 'error', 'msg' => '' . __( 'File Permission Issues', 'redux-framework' ) . '
    ' . sprintf( __( 'We were unable to modify required files. Please ensure that %1s has the proper read-write permissions, or modify your wp-config.php file to contain your FTP login credentials as outlined here.', 'redux-framework' ), Redux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/', 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ), 'id' => 'redux-wp-login', 'dismiss' => false, ); //add_action( "redux/page/{$this->parent->args['opt_name']}/form/before", array( // $this, // 'ftp_form' //) ); } return $res; } } Redux_Filesystem::get_instance(); } redux/ReduxCore/inc/class.redux_admin_notices.php000066600000020050152143340100016176 0ustar00ID; if ( ! get_user_meta( $userid, 'ignore_' . $notice['id'] ) ) { // Check if we are on admin.php. If we are, we have // to get the current page slug and tab, so we can // feed it back to Wordpress. Why> admin.php cannot // be accessed without the page parameter. We add the // tab to return the user to the last panel they were // on. $pageName = ''; $curTab = ''; if ( $pagenow == 'admin.php' || $pagenow == 'themes.php' ) { // Get the current page. To avoid errors, we'll set // the redux page slug if the GET is empty. $pageName = empty( $_GET['page'] ) ? '&page=' . self::$_parent->args['page_slug'] : '&page=' . esc_attr( $_GET['page'] ); // Ditto for the current tab. $curTab = empty( $_GET['tab'] ) ? '&tab=0' : '&tab=' . esc_attr( $_GET['tab'] ); } global $wp_version; // Print the notice with the dismiss link if ( version_compare( $wp_version, '4.2', '>' ) ) { $output = ""; $css_id = esc_attr( $notice['id'] ) . $pageName . $curTab; $css_class = esc_attr( $notice['type'] ) . ' redux-notice notice is-dismissible redux-notice'; $output .= "
    \n"; $nonce = wp_create_nonce( $notice['id'] . $userid . 'nonce' ); $output .= " \n"; $output .= '

    ' . wp_kses_post( $notice['msg'] ) . '

    '; $output .= "
    \n"; echo $output; } else { echo '

    ' . wp_kses_post( $notice['msg'] ) . '  ' . esc_html__( 'Dismiss', 'redux-framework' ) . '.

    '; } } } else { // Standard notice echo '

    ' . wp_kses_post( $notice['msg'] ) . '.

    '; } ?> admin_notices = array(); } } /** * dismissAdminNotice - Updates user meta to store dismiss notice preference * * @since 3.2.0 * @access public * @return void */ public static function dismissAdminNotice() { global $current_user; // Verify the dismiss and id parameters are present. if ( isset( $_GET['dismiss'] ) && isset( $_GET['id'] ) ) { if ( 'true' == $_GET['dismiss'] || 'false' == $_GET['dismiss'] ) { // Get the user id $userid = $current_user->ID; // Get the notice id $id = esc_attr( $_GET['id'] ); $val = esc_attr( $_GET['dismiss'] ); // Add the dismiss request to the user meta. update_user_meta( $userid, 'ignore_' . $id, $val ); } } } /** * dismissAdminNotice - Updates user meta to store dismiss notice preference * * @since 3.2.0 * @access public * @return void */ public static function dismissAdminNoticeAJAX() { global $current_user; // Get the notice id $id = explode( '&', $_POST['id'] ); $id = $id[0]; // Get the user id $userid = $current_user->ID; if ( ! wp_verify_nonce( $_POST['nonce'], $id . $userid . 'nonce' ) ) { die( 0 ); } else { // Add the dismiss request to the user meta. update_user_meta( $userid, 'ignore_' . $id, true ); } } } Redux_Admin_Notices::load(); } redux/ReduxCore/inc/tracking.php000066600000062445152143340100012667 0ustar00parent = $parent; $this->options = get_option( 'redux-framework-tracking' ); $this->options['dev_mode'] = $parent->args['dev_mode']; if ( ! isset( $this->options['hash'] ) || ! $this->options['hash'] || empty( $this->options['hash'] ) ) { $this->options['hash'] = md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ); update_option( 'redux-framework-tracking', $this->options ); } if ( isset( $_GET['redux_framework_disable_tracking'] ) && ! empty( $_GET['redux_framework_disable_tracking'] ) ) { $this->options['allow_tracking'] = 'no'; update_option( 'redux-framework-tracking', $this->options ); } if ( isset( $_GET['redux_framework_enable_tracking'] ) && ! empty( $_GET['redux_framework_enable_tracking'] ) ) { $this->options['allow_tracking'] = 'yes'; update_option( 'redux-framework-tracking', $this->options ); } if ( isset( $_GET['page'] ) && $_GET['page'] == $this->parent->args['page_slug'] ) { if ( ! isset( $this->options['allow_tracking'] ) ) { add_action( 'admin_enqueue_scripts', array( $this, '_enqueue_tracking' ) ); } else if ( ! isset( $this->options['tour'] ) && ( $this->parent->args['dev_mode'] == "true" || $this->parent->args['page_slug'] == "redux_demo" ) ) { add_action( 'admin_enqueue_scripts', array( $this, '_enqueue_newsletter' ) ); } } $hash = md5( trailingslashit( network_site_url() ) . '-redux' ); add_action( 'wp_ajax_nopriv_' . $hash, array( $this, 'tracking_arg' ) ); add_action( 'wp_ajax_' . $hash, array( $this, 'tracking_arg' ) ); $hash = md5( md5( AUTH_KEY . SECURE_AUTH_KEY . '-redux' ) . '-support' ); add_action( 'wp_ajax_nopriv_' . $hash, array( $this, 'support_args' ) ); add_action( 'wp_ajax_' . $hash, array( $this, 'support_args' ) ); if ( isset( $this->options['allow_tracking'] ) && $this->options['allow_tracking'] == 'yes' ) { // The tracking checks daily, but only sends new data every 7 days. if ( ! wp_next_scheduled( 'redux_tracking' ) ) { wp_schedule_event( time(), 'daily', 'redux_tracking' ); } add_action( 'redux_tracking', array( $this, 'tracking' ) ); } } function _enqueue_tracking() { wp_enqueue_style( 'wp-pointer' ); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'jquery-ui' ); wp_enqueue_script( 'wp-pointer' ); wp_enqueue_script( 'utils' ); add_action( 'admin_print_footer_scripts', array( $this, 'tracking_request' ) ); } function _enqueue_newsletter() { wp_enqueue_style( 'wp-pointer' ); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'jquery-ui' ); wp_enqueue_script( 'wp-pointer' ); wp_enqueue_script( 'utils' ); add_action( 'admin_print_footer_scripts', array( $this, 'newsletter_request' ) ); } /** * Shows a popup that asks for permission to allow tracking. */ function tracking_request() { $id = '#wpadminbar'; $nonce = wp_create_nonce( 'redux_activate_tracking' ); $content = '

    ' . esc_html__( 'Help improve Our Panel', 'redux-framework' ) . '

    '; $content .= '

    ' . esc_html__( 'Please helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.', 'redux-framework' ) . '

    '; $opt_arr = array( 'content' => $content, 'position' => array( 'edge' => 'top', 'align' => 'center' ) ); $button2 = esc_html__( 'Allow tracking', 'redux-framework' ); $function2 = 'redux_store_answer("yes","' . $nonce . '")'; $function1 = 'redux_store_answer("no","' . $nonce . '")'; $this->print_scripts( $id, $opt_arr, esc_html__( 'Do not allow tracking', 'redux-framework' ), $button2, $function2, $function1 ); } /** * Shows a popup that asks for permission to allow tracking. */ function newsletter_request() { $id = '#wpadminbar'; $nonce = wp_create_nonce( 'redux_activate_tracking' ); $content = '

    ' . esc_html__( 'Welcome to the Redux Demo Panel', 'redux-framework' ) . '

    '; $content .= '

    ' . esc_html__( 'Getting Started', 'redux-framework' ) . '
    ' . sprintf( __( 'This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.', 'redux-framework' ), '' . esc_html__( 'our documentation', 'redux-framework' ) . '' ); $content .= '

    ' . esc_html__( 'Redux Generator', 'redux-framework' ) . '
    ' . sprintf( __( 'Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.', 'redux-framework' ), '' . esc_html__( 'Redux Generator', 'redux-framework' ) . '' ); $content .= '

    ' . esc_html__( 'Redux Extensions', 'redux-framework' ) . '
    ' . sprintf( __( 'Did you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!', 'redux-framework' ), '' . esc_html__( 'extensions directory', 'redux-framework' ) . '' ); $content .= '

    ' . esc_html__( 'Like Redux?', 'redux-framework' ) . '
    ' . sprintf( __( 'If so, please %1$s and consider making a %2$s to keep development of Redux moving forward.', 'redux-framework' ), '' . esc_html__( 'leave us a favorable review on WordPress.org', 'redux-framework' ) . '', '' . esc_html__( 'donation', 'redux-framework' ) . '' ); $content .= '

    ' . esc_html__( 'Newsletter', 'redux-framework' ) . '
    ' . esc_html__( 'If you\'d like to keep up to with all things Redux, please subscribe to our newsletter', 'redux-framework' ) . ':

    '; $content .= '

        

    '; $opt_arr = array( 'content' => $content, 'position' => array( 'edge' => 'top', 'align' => 'center' ), 'pointerWidth' => 450 ); $function1 = 'redux_store_answer("tour","' . $nonce . '")'; $this->print_scripts( $id, $opt_arr, esc_html__( 'Close', 'redux-framework' ), false, '', $function1 ); } /** * Prints the pointer script * * @param string $selector The CSS selector the pointer is attached to. * @param array $options The options for the pointer. * @param string $button1 Text for button 1 * @param string|bool $button2 Text for button 2 (or false to not show it, defaults to false) * @param string $button2_function The JavaScript function to attach to button 2 * @param string $button1_function The JavaScript function to attach to button 1 */ function print_scripts( $selector, $options, $button1, $button2 = false, $button2_function = '', $button1_function = '' ) { ?> true ) ) as $pt ) { $count = wp_count_posts( $pt ); $pts[ $pt ] = $count->publish; } $comments_count = wp_count_comments(); $theme_data = wp_get_theme(); $theme = array( 'version' => $theme_data->Version, 'name' => $theme_data->Name, 'author' => $theme_data->Author, 'template' => $theme_data->Template, ); if ( ! function_exists( 'get_plugin_data' ) ) { require_once ABSPATH . 'wp-admin/includes/admin.php'; } $plugins = array(); foreach ( get_option( 'active_plugins', array() ) as $plugin_path ) { $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); $plugins[ $slug ] = array( 'version' => $plugin_info['Version'], 'name' => $plugin_info['Name'], 'plugin_uri' => $plugin_info['PluginURI'], 'author' => $plugin_info['AuthorName'], 'author_uri' => $plugin_info['AuthorURI'], ); } if ( is_multisite() ) { foreach ( get_option( 'active_sitewide_plugins', array() ) as $plugin_path ) { $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); $plugins[ $slug ] = array( 'version' => $plugin_info['Version'], 'name' => $plugin_info['Name'], 'plugin_uri' => $plugin_info['PluginURI'], 'author' => $plugin_info['AuthorName'], 'author_uri' => $plugin_info['AuthorURI'], ); } } $version = explode( '.', PHP_VERSION ); $version = array( 'major' => $version[0], 'minor' => $version[0] . '.' . $version[1], 'release' => PHP_VERSION ); $user_query = new WP_User_Query( array( 'blog_id' => $blog_id, 'count_total' => true, ) ); $comments_query = new WP_Comment_Query(); $data = array( '_id' => $this->options['hash'], 'localhost' => ( $_SERVER['REMOTE_ADDR'] === '127.0.0.1' ) ? 1 : 0, 'php' => $version, 'site' => array( 'hash' => $this->options['hash'], 'version' => get_bloginfo( 'version' ), 'multisite' => is_multisite(), 'users' => $user_query->get_total(), 'lang' => get_locale(), 'wp_debug' => ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? true : false : false ), 'memory' => WP_MEMORY_LIMIT, ), 'pts' => $pts, 'comments' => array( 'total' => $comments_count->total_comments, 'approved' => $comments_count->approved, 'spam' => $comments_count->spam, 'pings' => $comments_query->query( array( 'count' => true, 'type' => 'pingback' ) ), ), 'options' => apply_filters( 'redux/tracking/options', array() ), 'theme' => $theme, 'redux' => array( 'mode' => ReduxFramework::$_is_plugin ? 'plugin' : 'theme', 'version' => ReduxFramework::$_version, 'demo_mode' => get_option( 'ReduxFrameworkPlugin' ), ), 'developer' => apply_filters( 'redux/tracking/developer', array() ), 'plugins' => $plugins, ); $parts = explode( ' ', $_SERVER['SERVER_SOFTWARE'] ); $software = array(); foreach ( $parts as $part ) { if ( $part[0] == "(" ) { continue; } if ( strpos( $part, '/' ) !== false ) { $chunk = explode( "/", $part ); $software[ strtolower( $chunk[0] ) ] = $chunk[1]; } } $software['full'] = $_SERVER['SERVER_SOFTWARE']; $data['environment'] = $software; //if ( function_exists( 'mysql_get_server_info' ) ) { // $data['environment']['mysql'] = mysql_get_server_info(); //} $data['environment']['mysql'] = $wpdb->db_version(); if ( empty( $data['developer'] ) ) { unset( $data['developer'] ); } return $data; } /** * Main tracking function. */ function tracking() { // Start of Metrics global $blog_id, $wpdb; $data = get_transient( 'redux_tracking_cache' ); if ( ! $data ) { $args = array( 'body' => $this->trackingObject() ); $response = wp_remote_post( 'https://redux-tracking.herokuapp.com', $args ); // Store for a week, then push data again. set_transient( 'redux_tracking_cache', true, WEEK_IN_SECONDS ); } } function tracking_arg() { echo md5( AUTH_KEY . SECURE_AUTH_KEY . '-redux' ); die(); } function support_args() { header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' ); $instances = ReduxFrameworkInstances::get_all_instances(); if ( isset( $_REQUEST['i'] ) && ! empty( $_REQUEST['i'] ) ) { if ( is_array( $instances ) && ! empty( $instances ) ) { foreach ( $instances as $opt_name => $data ) { if ( md5( $opt_name . '-debug' ) == $_REQUEST['i'] ) { $array = $instances[ $opt_name ]; } } } if ( isset( $array ) ) { if ( isset( $array->extensions ) && is_array( $array->extensions ) && ! empty( $array->extensions ) ) { foreach ( $array->extensions as $key => $extension ) { if ( isset( $extension->$version ) ) { $array->extensions[ $key ] = $extension->$version; } else { $array->extensions[ $key ] = true; } } } if ( isset( $array->import_export ) ) { unset( $array->import_export ); } if ( isset( $array->debug ) ) { unset( $array->debug ); } } else { die(); } } else { $array = $this->trackingObject(); if ( is_array( $instances ) && ! empty( $instances ) ) { $array['instances'] = array(); foreach ( $instances as $opt_name => $data ) { $array['instances'][] = $opt_name; } } $array['key'] = md5( AUTH_KEY . SECURE_AUTH_KEY ); } echo @json_encode( $array, true ); die(); } } Redux_Tracking::get_instance(); /** * Adds tracking parameters for Redux settings. Outside of the main class as the class could also be in use in other ways. * * @param array $options * * @return array */ function redux_tracking_additions( $options ) { $opt = array(); $options['redux'] = array( 'demo_mode' => get_option( 'ReduxFrameworkPlugin' ), ); return $options; } add_filter( 'redux/tracking/options', 'redux_tracking_additions' ); function redux_allow_tracking_callback() { // Verify that the incoming request is coming with the security nonce if ( wp_verify_nonce( $_REQUEST['nonce'], 'redux_activate_tracking' ) ) { $options = get_option( 'redux-framework-tracking' ); if ( $_REQUEST['allow_tracking'] == "tour" ) { $options['tour'] = 1; } else { $options['allow_tracking'] = $_REQUEST['allow_tracking']; } if ( update_option( 'redux-framework-tracking', $options ) ) { die( '1' ); } else { die( '0' ); } } else { // Send -1 if the attempt to save via Ajax was completed invalid. die( '-1' ); } // end if } add_action( 'wp_ajax_redux_allow_tracking', 'redux_allow_tracking_callback' ); } redux/ReduxCore/languages/redux-framework-sl_SI.mo000066600000010704152143340100016226 0ustar00JlePQdktx4 .HNS[px      #*:INRU]l u%      % 0 6 : > B H O X c k ;q E       B 5EUj{?  %3 :GP Yg n{      !=M Vbr '0)8Cb&G";!1< @7>6H$%JDC03I')(B*9=A:8 4 F-#.E+  5,?2 /Activate Demo ModeActiveAdd MoreAllAllow trackingAre you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBackground SizeBottomChangelogClick here to activate the sample config file.CloseCopyCreditsDeactivate Demo ModeDefaultDeleteDescriptionDisableDismissDocumentationDownloadEmail addressEnableExpandExport OptionsFont FamilyFont colorFont familyFrom Getting StartedHeightHintsImportImport / ExportImport OptionsLeftOffOnOptionsOptions ObjectPasswordPlease WaitRedux FrameworkRedux Framework has an embedded demo.Redux GeneratorRemoveRepoReset AllReset SectionRightSave ChangesSettings Saved!SizeStyleSystem InfoText AlignTitleTo TopURLUnitsUploadUsernameVersion %sVisitedWidthYou do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?donationerror(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-02-03 22:24:22+00:00 PO-Revision-Date: 2015-03-10 15:34+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/redux-framework/language/sl_SI/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sl_SI Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Vklopite demo načinAktivirajDodaj večVseDovoli sledenjeAli ste prepričani? Z resetom boste izgubili vse custom vrednostiPriponka ozadjaPoložaj ozadjaPonavljajoče ozadjeDimenzije ozadjaDnoDnevnik spremembKliknite tukaj za aktivacijo poskusne konfiguracijske datoteke.ZapriKopirajZaslugeIzklopite demo načinPrivzetoIzbrišiOpisOnemogočiOpustiDokumentacijaPrenosEmail naslovOmogočiRazširiOpcije izvozaPisavaBarva pisaveDružina pisaveOdUvodVišinaNasvetiUvoziUvoz / IzvozOpcije uvozaLevoIzklopljenoVklopljenoOpcijeObjekt opcijGesloProsim počakajteRedux FrameworkRedux Framework ima vgrajen demo.Redux generatorOdstraniRepositorijResetirajte vseResetiraj sekcijoDesnoShrani spremembeNastavitve shranjeneVelikostSlogSistemske informacijePoravnava tekstaNaslovZaZgorajURLEnoteNaložiUporabniško imeRazličica %sObiskanoŠirinaNimate dovoljenja za dostop do te strani.Imate spremembe, ki še niso shranjene. Jih želite shraniti sedaj?donacijaerror(jev) najdenih!redux/ReduxCore/languages/redux-framework-ja.mo000066600000036714152143340100015620 0ustar00 5#DY4  ,@Rb u  . ! -7NV^ t           +8 >IYipTZUZaq]XGL [ g2s ! 0 9EVf%W " ,: @Mhw,(  !) 1 = HScr'.3'& Nouy }( U F`    ;)FeEKb>L3-"/Pa`CLUjJ,, > T f U} #*#$ !$.$!>$`$0g$$T$l %Tv%%%%&&-&=&S&$f&&& &&f& 5'?'O'*k'''' '' '''(,(3(:( S( `(j(z(( (( ( ((( )")')=)P)g)6n)c) ++ +v+7,$G,l,,,o2---- -P-'. ..;.<Q.*.....K.&ia nbK+"yk4?2Su=- 86qdN*[ 1Os f#(/Activate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.HoverIf you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitRedux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Japanese (http://www.transifex.com/projects/p/redux-framework/language/ja/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ja Plural-Forms: nplurals=1; plural=0; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes デモモードを有効化開発プラグインを有効化します有効%s を追加さらに追加ギャラリーを追加 / 編集全てすべてデフォルトに復元しました。トラッキングを許可本当にリセットしますか?すべての値を失うことになります。本当にリセットしますか?このセクションのすべての値を失うことになります。本当にリセットしますか?すべての値を失うことになります。自動アクションが実行:"%s"背景スクロール背景クリップ背景オリジン背景の位置背景の繰り返し背景のサイズ文字の種類をバックアップ枠線のスタイル下更新履歴ギャラリーをクリアサンプルの設定ファイルを有効にするには、ここをクリックしてください。閉じるクレジットデモモードを無効化開発プラグインを無効化しますデフォルト削除説明開発者開発者モードを有効化無効化非表示にするトラッキングを拒否メールアドレス有効拡大エクスポート設定機能拡張文字色文字の種類文字サイズフォントのサブセットFont Variant文字の太さ文字色フォント文字スクリプト文字のスタイル文字のサブセットFromフロントページ始めてみようGoogle Webフォント高さ私たちのパネルの改善にご協力ください現在のオプション設定をダウンロード/コピーすることができます。何か誤操作をした場合、バックアップとして使用することができます。これは安全を守るため、もしくはこのサイト(または任意の他のサイト)で設定を復元するために使用することができます。ヒントHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.ホバーもしあなたが Redux の動向を追いたいのであれば、ニュースレターを購読してください。インポートインポート / エクスポートインポート設定URLからインポートそのサイトからオプションをロードするインポートオプションを設定し、別のサイトへのURLを入力してヒット。あなたのサイトの設定を復元するためには、インポートをクリックしてください。左字間Redux が好きですか?行の高さ「plugins_loaded」アクションの後に呼び出す必要があります。名称新しい %sニュースレター一致するアイテムは見つかりませんでした。メディアが選択されていません無効有効オプション設定オブジェクトオプションパネルは %1$s を使用して作成されています。パスワードしばらくお待ちください...Reduxの拡張機能Redux FrameworkRedux Framework の変更履歴Redux Framework には、デモが内蔵されています。Redux ジェネレータReduxのは、WordPressのテーマやプラグインのためのシンプルな、真拡張可能なオプションフレームワークです。レギュラー削除レポジトリすべてリセットセクションをリセット右変更を保存するセクションをデフォルトに復元しました。アイテムを選択設定がインポートされました。設定を保存しました。設定に変更があります。保存することをおすすめします。JavaScript コンソール でオブジェクトを見て下さい。サイズスライド標準フォントステータススタイル購読サブセットサポートシステム情報チーム Redux文字の配置文字装飾文字の変形以下のディレクトリ·ファイルがまだあなたの Reduxののディレクトリに格納されています。テーマ·チェックでエラーが発生することがあります。Redux Framework を開発する人たちあなたがテストしているテーマは、%sが埋め込まれています。いくつかの警告を理解するために%sテーマ·チェック用ドキュメント%sを読むことを勧めます不明なアクションは "%s" に置き換えられました。テーマこのフィールドは空にすることはできません。値を入力してください。有効な色の値でなければなりません。有効な日付である必要があります。タイトルTo上透明URL単位不明なアクション: %2$s に指定された "%1$s" アップロードユーザーユーザー名バージョンバージョン %sビュー %sプラグインのホームページを表示Visited警告!これは、すべての既存のオプション値が上書きされます、注意して行ってください。警告 - このオプションパネルは JavaScript が無効になっていると正常に動作しません! Redux Framework へようこそRedux Framework %s へようこそReduxのデモパネルへようこそ新着情報幅単語の間隔Working...このページにアクセスするための十分なアクセス権がありません。変更が保存されていません。保存しますか?変更が保存されていません。保存しますか?このフィールドにはHTMLを入力してはなりません。すべてのHTMLタグが削除されました。このフィールド内の特殊文字を入力してはなりません。すべての特殊文字が削除されました。このオプションの数値をカンマで区切ったリストを提供する必要があります。オプションの数値を指定する必要があります。オプションに有効なURLを指定する必要があります。オプションに有効なメールアドレスを提供する必要があります。現在の設定は、プリセット値に置き換えられます。続行しますか?現在の設定は、プリセット値に置き換えられます。続行しますか?クリック寄付エラー が見つかりました拡張機能ディレクトリ適切な読み取り/書き込み権限を設定するか、下記にFTP情報を入力してください。http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkWordPress.orgで私たちにレビューを残すマウスを移動するドキュメンテーション(複数の)警告が見つかりました!redux/ReduxCore/languages/redux-framework-zh_CN.mo000066600000033764152143340100016231 0ustar00 !%<5KD4  '=M_s   . .M)U  l (0F KY`g v          '7GNe28AZGU].X  2 M[` g!r   % .:K[%uW   !/5 GTo~,( !+3 ; G R]m'|.3'  5yV ($)2 :EMcUkF& FQ W d;oFEK8bL34 -h / a `(!!!!!J!",*" W",d""""b"3&F&Y&`& i&v&&& &E&N'EQ' ''' ' ' ' ' ' ( ((( ,( 6( C(%P(v(}((((!((( (()) ))) ))))) ) ) * **** =*J* Q* ^* k*x*|** ****+ ++?+J+),0, @,M,T],Q,- - - -)-)0- Z-f-m-s-+z----- -!--.-. C.M. T. ^.j.}.(..I./#/*/ 1/ >/K/O/ `/m////*/"/ 0,0 30@0G0 N0Y0`0 g0 t00 0 00(0000+,1(X1122222!2"(2K2R2 Y2c2j2s2|22J22E333#4;4K4 R4 _4*l4-434G4WA575(5(51#6BU6B6666 6> 7I7,c77"77 772& R-Y_ m@7:rQUd6j>+(^}O$tXGN%ikyKcw\a4'H`oBVZFu8v[?MsJh5<lqL)#SC3g0*z PpnE,eI;{/T9b" ]1f=.!D|~xWAActivate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Author URLAutomatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDefault timezone is %s - it should be UTCDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingDocsEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Get System ReportGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHome URLHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LanguageLeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.MySQL VersionNameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP Max Input VarsPHP Post Max SizePHP Time LimitPHP VersionPasswordPlease WaitRedux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSUHOSIN InstalledSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSite URLSizeStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe people that develop Redux FrameworkThe unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkis availableleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Chinese (China) (http://www.transifex.com/projects/p/redux-framework/language/zh_CN/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: zh_CN Plural-Forms: nplurals=1; plural=0; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes 启用演示模式启用开发插件激活添加%s添加更多添加/编辑 相册全部所有默认设置已恢复!允许追踪你确定要这样做? 重置将会抹掉当前所有设置数据值.你确定要这样做? 重置将会抹掉当前选区的所有设置数据值.你确定要这样做? 重置将会抹掉当前所有设置数据值.作者链接自动动作: "%s"背景附着方式背景片段背景定位背景位置重复背景背景尺寸备份字体源描边样式下浏览器修订历史清空相册点击此处启用演示配置文件.关闭鸣谢停用演示模式停用开发插件默认默认时区是 %s -默认为 UTC删除描述开发人员已启用开发模式你知道我们还有拓展插件吗? 这些插件将会极大拓展Redux设置面板的功能. 浏览我们的 %1$s 来了解更多!停用不再显示不允许追踪文档Email地址启用展开导出设置数据扩展字体颜色字体源字体尺寸字体子项字体多样性字体粗细样式字体颜色字体字体脚本字体样式字体子项从获取系统报告开始Google字体高度帮助改善我们的面板在此页面你可以复制/下载你当前的设置数据. 你可以以此作为备份以免发生任何错误, 或者你可以用来恢复此站点备份设置(或者其他网站设置).提示主站链接悬浮如果如此, 请 %1$s 与考虑 %2$s 来支持我们的开发.如果你想了解关于Redux的最新消息, 请订阅我们的内容吧.导入导入 / 导出导入选项从网址导入输入另外一个站点的设置数据URL, 然后点击导入来远程导入设置.在下方输入你的备份文件, 然后点击导入来恢复你的备份设置.语言左文字间距喜欢Redux?行高必须在"plugins_loaded"动作后执行.MySql版本名字新%s订阅没有找到符合条件的此类别项目.没有选择媒体关闭开启选项设置对象设置面板由 %1$s 提供开发PHP输入变量最大值PHP最大的POST尺寸PHP执行时间限制PHP版本密码请稍等Redux插件Redux 开发框架Redux Framework 更新日志Redux 开发框架有一个视频演示.Redux生成器Redux是一个简洁,可扩展的Wordpress主题和插件的设置框架.一般移除协议全部重置重置选区右SUHOSIN已安装保存更改选区的默认设置已恢复!选择一个项目设置数据已成功导入!成功保存设置!设置项已改变, 你应该立即保存!在Javsscript控制台显示对象网站链接尺寸标准字体状态样式d你个月子项支持系统信息Team Redux文字对齐方式字体装饰文字转变开发了Redux Framework的人此位置的动作将会被 "%s" 代替主题此项不能为空. 请提供一个有效的值.此项必须填写一个有效的颜色值.此项必须填写一个有效的日期.此演示数据面板包含了许多Redux的特性. 在深入了解前, 我们建议你先浏览 %1$s 来帮助你提高开发速度.标题到上透明URL部件%2$s 挂载的未知动作 "%1$s" 上传用户用户名版本%s版本查看%s访问插件主页访问警告! 此动作将会复写所有当前设置数据值, 请小心使用!想立即开始? 使用 %1$s. 它将会创建一个自定义的主题或者一个标准的管理员文件夹(由Undersocres与TGM提供). 节省你大量时间, 立即尝试下吧.警告! 若没有javascript, 这个设置区域将不能正常工作.欢迎使用Redux Framework欢迎使用Redux Framework %s欢迎来到Redux演示数据面板有什么新的宽度词组间距处理中...您没有足够的权限访问该页面。你还未保存更改. 需要立即保存吗?你修改了某些设置项. 需要立即保存吗?你不能在此填写任何HTML代码, 所有HTML代码将会被移除.你不能在此填写任何特殊文字符号, 所有特殊文字符号将会被移除.你必须填写一列由英文逗号分隔的数字串.你必须填写一个有效的数字值.你必须填写一个有效的URL地址.你必须填写一个有效的电子邮件地址.你当前的设置将会被现在的更改所覆盖. 确定继续?你当前的设置将会被现在的更改所覆盖. 确定继续?点击捐赠找到错误信息!插件列表有合适的读/写权限或者在下面输入您的FTP信息.http://reduxframework.comhttp://wordpress.org/plugins/redux-framework可用在WordPress.org给我们点赞吧将鼠标移动到上面说明文档找到警告信息!redux/ReduxCore/languages/redux-framework-hu_HU.mo000066600000017474152143340100016240 0ustar00nP Q d k |   5 D 4! V l    .    # + 2 > H P X n |      % , < K ][        + 4 @ Q %a         ,HMT Zd l x  UFO  ;EaT` 5mJ!#%K?_P<Oby < 4EN W b oy       . : DP e o|U(,= BMfi lzA(9B%K,q'B+nu~    ' /:?Kg^Ro 96ww  "fe04@:5X]d% hTc)&m91KZ\ P,MbE#8g;Q*a! /DiR3kUY-HBOnjI+[$<J2l_" SW`V7^( GN=CLA.6? '>FActivate Demo ModeActiveAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDefaultDeleteDescriptionDeveloperDisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont colorFont familyFont scriptFont styleFront PageGetting StartedGoogle WebfontsHeightImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.LeftLike Redux?NameNewsletterNo media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitRedux ExtensionsRedux FrameworkRedux Framework has an embedded demo.Redux GeneratorRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!SizeStatusStyleSubscribeSupportSystem InfoText AlignText DecorationThemeTitleTopTransparentURLUploadUserUsernameVersionVersion %sView %sVisit plugin homepageWARNING! This will overwrite all existing option values, please proceed with caution!Warning- This options panel will not work properly without javascript!Welcome to the Redux Demo PanelWhat's NewWidthWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?donationerror(s) were found!extensions directoryProject-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/redux-framework/language/hu_HU/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: hu_HU Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Demo mód bekapcsolásaAktívGaléria hozzáadás/szerkesztésÖsszesMinden alapérték visszaálltíva!Követés engedélyezéseBiztosan ezt akarod? A visszaállítás után minden módosítás elveszik.Biztosan ezt akarod? A visszaállítás után minden módosítás elveszik ebben a szekcióban.Biztosan ezt szeretnénk? A visszaállítás után minden módosítás elveszik.Háttér tartozékHáttér pozícióHáttér ismétlődésBetűtípus család mentéseSzegély stílusLentVáltozásGaléria tisztításaKattintsunk ide a példa beállító fájl aktiválásához.BezárásCreditsDemo mód kikapcsolásaAlapértelmezettTőrlésLeírásfejlesztőKikapcsolásBezárásKövetés tiltásE-mail címBekapcsolásKinyitBeállítások exportálásaBővítményekBetűszínBetűtípus családBetűméretBetűszínBetűcsaládBetűtípus szkriptBetűtípusKezdőlapKezdjük elGoogle betűtípusokMagasságImportálásImportálás / ExportálásBeállítások importálásaImportálás hivatkozásbólAdjuk meg a hivatkozást a külső honlapról való beállítások importálásához.BalTetszik a Redux?NévHírlevélNincs media kiválasztvaKiBeLehetőségekObjektum beállításokBeállítások felület: %1$sJelszóVárjunkRedux kiegészítőkRedux FrameworkRedux keretrendszer rendelkezik egy beépített demo felülettel.Redux generátorTörlésTárolóMinden beállítás visszaállításaSzekció beállításainak visszaállításaJobbMódosítások mentéseSzekció alapértékek visszaállítva!Tétel kiválasztásBeállítások importálva!Beállítások mentve!A beállítások módosultak, el kéne menteni a módosításokat!MéretStátuszStílusFeliratkozásSupportRendszer információSzöveg igazításaSzöveg dekorációSablonCímFentÁtlátszóURLFeltőltésFelhasználóFelhasználónévVerzió%s verzió%s megtekintéseMeg kell látogatni a bővítmények oldalát (plugin homepage)FIGYELEM! Ez a lehetőség felülírja az összes létező beállítás értékét, legyünk óvatosak!Figyelmeztetés- A beállítások felület nem fog megfelelően működni javascript nélkül!Üdvözli a Redux Demo PanelMik az újdonságokSzélességFolyamatban...Nincs megfelelő jogosultság az oldal megtekintéséhez.A változások nem kerültek mentésre. Mentsük most?A jelenlegi beállítások módosítva lesznek ennek az előkonfigurációnak a beállításaival. Biztosan ezt akarod?A jelenlegi beállítások módosítva lesznek ennek az előkonfigurációnak a beállításaival. Biztosan ezt akarod?támogatáshiba(ák) található!Kiegészítők könyvtárredux/ReduxCore/languages/redux-framework-bn_BD.mo000066600000015151152143340100016162 0ustar00;O 5 DV4 .BHMbj q}   %)O V `n t,   ;"F^Ea`M   n -I w =M@F |   <'@!Su%(  0(=mf7r( ) 56<<s 2?(R{ !  m"' 62 $%.1:"(*8 )63/ 4+ &!2' 5#,;70 -9Activate Demo ModeAllAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBottomClick here to activate the sample config file.CloseCopyDeactivate Demo ModeDefaultDeleteDescriptionDisableDismissDocumentationEnableExpandFont FamilyHeightImportImport / ExportLeftOptionsOptions ObjectOptions panel created using %1$sPasswordRedux FrameworkRedux Framework has an embedded demo.RemoveReset AllReset SectionRightSave ChangesSettings Imported!Settings Saved!Settings have changed, you should save them!SizeStyleSystem InfoTitleTopURLUploadUsernameVersion %sWidthWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?error(s) were found!warning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-02-03 22:24:22+00:00 PO-Revision-Date: 2015-03-10 15:34+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/redux-framework/language/bn_BD/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: bn_BD Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes ডেমো মোড চালু করোসকলআপনি কি নিশ্চিত? রিসেট করলে সব কাস্টম ভ্যালু মুছে দিবে।আপনি কি নিশ্চিত? রিসেট করলে এই অংশের কাস্টম ভ্যালু হারিয়ে যাবে।আপনি কি নিশ্চিত? রিসেট করলে সব কাস্টম ভ্যালু মুছে দিবে।ব্যকগ্রাউন্ড সংযুক্তিব্যকগ্রাউন্ডের অবস্থানব্যকগ্রাউন্ড পুনরাবৃত্তিনিচেনমুনা কনফিগ ফাইলটি চালু করতে এখানে ক্লিক করুন।বন্ধকপিডেমো মোড নিষ্ক্রীয় করোডিফল্টঅপসারণবিবরণঅকার্যকরভন্ডুলডকুমেন্টেশনস্বক্রিয়বর্ধিত করোফন্ট ফ্যামিলিউচ্চতাআমদানীআমদানি/রপ্তানিলিঙ্কঅপশনঅপশন্স অবজেক্টঅপশন্স প্যানেল তৈরি করেছেন %1$s ব্যবহার করেপাসওয়ার্ডরিডাক্স ফ্রেমওয়ার্করিডাক্স ফ্রেমওয়ার্ক-এ একটি ডেমো যুক্ত আছে।অপসারণসব রিসেট করোসেকশন রিসেট করোডানেপরিবর্তন সংরক্ষণ করসেটিংস আমদানি হয়েছে!সেটিংস সংরক্ষিত হয়েছে!সেটিংস পরিবর্তন হয়েছে, আপনার সে সংরক্ষণ করা উচিত!আকারস্টাইলসিস্টেমের তথ্যশিরোনামউপরেইউআরআইআপলোডব্যবহারকারীভার্শন %sচওড়াকাজ চলছে...এই পৃষ্ঠায় অনুপ্রবেশের জন্য প্রয়োজনীয় অনুমতি আপনার নেই।আপনার কিছু অসংরক্ষিত পরিবর্তন আছে। আপনি কি তা এখনি সংরক্ষণ করতে চান?আপনার কিছু অসংরক্ষিত পরিবর্তন আছে। আপনি কি তা এখনি সংরক্ষণ করতে চান?আপনার বর্তমান অপশনগুলো এই প্রিসেটের ভ্যালু দিয়ে প্রতিস্থাপিত হবে। আপনি কি তা করতে দিতে চান?আপনার বর্তমান অপশনগুলো এই প্রিসেটের ভ্যালু দিয়ে প্রতিস্থাপিত হবে। আপনি কি তা করতে দিতে চান?ভুল পাওয়া গেছে!ওয়ার্নিং পাওয়া গেছে!redux/ReduxCore/languages/redux-framework-he_IL.mo000066600000024430152143340100016176 0ustar00{h i |     5 D 4+ ` v    .    - 5 < H R Z b x       % , C -<]LX %!*L^bem | %   "1D,T( ' 6<@ DPTZafo wUF EP V c;nFEK7bL33-g/a`'i5>NkrUlWE *9MK    (@T] w 7*@=k - 8 J Y %^      0 ! !%!#;!_!h!q!!!!!"!!<"@B""" " "" """9";4# p#{# ~# # # # # ### ####o$p$ $%% '%23%Zf%^%V &mw&V&D<'I'N'_(cz(((Iti*P%-zU!N+<9yM\Hm&a;Z,>Jj5X[c`7T1 xpDS {eb 38?=qQOkFAY V6C_WnE u#2RGod(rwfB.:L4gh]$@^l)/0s vK"'Activate Demo ModeActiveAdd MoreAdd/Edit GalleryAllAllow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDefaultDeleteDescriptionDeveloperDisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont FamilyFont SizeFont colorFont familyFont scriptFont styleFont subsetsFrom Getting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HoverImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingMySQL VersionNameNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP VersionPasswordRedux FrameworkRedux Framework has an embedded demo.RegularRemoveReset AllReset SectionRightSave ChangesSelect an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeStandard FontsStatusStyleSubsetsSupportSystem InfoThemeThis field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Warning- This options panel will not work properly without javascript!What's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?error(s) were found!warning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Hebrew (Israel) (http://www.transifex.com/projects/p/redux-framework/language/he_IL/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: he_IL Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes הפעל מצב דמופעילהוסף עודהוסף/ערוך גלריההכלאשר מעקבהאם אתה בטוח? איפוס יגרום לאיבוד הערכים שהכנסת.האם אתה בטוח? איפוס יגרום לאיבוד כל ההגדרות שביצעת בסקשן זה.האם אתה בטוח? איפוס יגרום לאיבוד ההגדרות שהגדרת.רקע מצורףמיקום תמונת רקעחזרת תמונת רקעגבה משפחת פונטהסגנון של הגבולתחתיתשינוייםנקה גלריהלחץ כאן על מנת לבצע אקטיבציה לקובץ הקינפוגסגורקרדיטיםבטל מצב דמוברירת מחדלמחיקהתיאורמפתחלכבותסגורלא להרשות מעקבכתובת אימיילערכה פעילההרחבאפשרויות יצואהרחבותגופןגודל גופןצבע פונטמשפחת פונטיםתסריט פונטסגנון פונטתת-פונטמלהתחיל עכשיוגווגל ווב-פונטיםגובהעזור בשיפור הפאנל שלנו כאן תוכל להעתיק/להוריד את הגדרות הפאנל שלך. שמור את זה במקום בטוח על מנת שתוכל להשתמש בזה כגיבוי אם משהו לא ילך כשורה. או שתוכל לשמור את זה לשחזור הגדרות באתר זה (או בכל אתר אחר).מעבריבואיבוא / יצואהגדרות יבואיבא מתוך קישורהכנס את הקישור להגדרות של אתר אחר ולחץ על יבוא על מנת לטעון את ההגדרות מאותו האתר.הכנס את קובץ הגיבוי שלך מתחת ולחץ על יבוא על מנת לשחזר את הגדרות האתר שלך מתוך גיבוי.לשמאלמרווח אותMySQL גרסהשםפריט מסוג זה לא נמצא.לא נבחרה מדיהכבויפועלאפשרויותאובייקט הגדרותפאנל האפשרויות נוצר ע"י %1$sגרסת PHPסיסמהמערכת רדוקסלרדוקס יש דמו מצורףרגילהסרהאפס את הכלאפס סקשןימיןשמור שינוייםבחר אייטםייבוא הגדרות בוצע !ההגדרות נשמרו!הגדרות שונו. אנא שקול לשמור אותם !בדוק אובייקט בג'אווה סקריפט קונסול גודלפונטים סטנדרטייםסטטוססגנוןתתתמיכהמידע מערכתערכת עיצובהשדה חייב להכיל ערך תקין של צבע.שדה זה חייב להכיל ערך תאריך תקני.כותרתללמעלהשקיפותקישוריחידותהעלאהמשתמששם משתמשגרסהגרסה %s%sאתר התוסףקישור שביקרו בואזהרה! זה יגרום לדריסת כל ההגדרות הנוכחיות. אנא המשך בזהירות !אזהרה - פאנל האפשרויות לא יעבוד בצורה תקינה ללא ג'אווה סקריפט !מה חדשרוחבמרווח מיליםעובד...אין לך הרשאות לגשת לעמוד זה.ישנם שינויים שלא נשמרו. האם תרצה לשמור אותם עכשיו?השינויים שביצעת לא נשמרו. האם תרצה לשמור אותם עכשיו?אסור להכניס ערכי HTML לשדה זה. כל תגיות ה HTML הוסרו.אסור להכניס לשדה זה תווים מיוחדים. כל התווים המיוחדים הוסרו.אתה חייב להפריד בין הערכים ע"י פסיקים בהגדרה זו.חובה להכניס ערכים מספריים לאפשרות זו.חובה להכניס ערך קישור URL תקני לאפשרות זו.אתה חייב לספק כתובת אימייל תקנית להגדרה זו.ההגדרות שהגדרת יוחלפו בערכים חדשים. האם תרצה להמשיך?האפשרויות שהגדרת יוחלפו בערכים חדשים. האם תרצה להמשיך?שגיאה(ות) נמצאו !ישנן אזהרה(ות) !redux/ReduxCore/languages/redux-framework-id_ID.mo000066600000022165152143340100016171 0ustar00x( ) < C J S d h 5w D 4 ' = Q c v  .         ! ) ? F M \ g s }          ] XS! 8 AM]%w   , (6_dsz '   $ ,7MUUF  %;0FlEKbEL3-)/Wa`J_iv  %46Dk6/ DQXj-{     %0 ? K W d p |  #  4mO+ *2#F j u%  8>S' % . N T [ _ j n u |     e G&!n!!!!;!<!@."Zo"`"8+#d#{##D#X#G$V$0]Zs l2w=) 1$6D(Eb3.OF*<&rH R%CP"_4;@ NxMpf,KkmVa[Ye:>qvu+Qc`U/5JG9W8g-n!^TAS#tj\BILd 'o7hX?iActivate Demo ModeActiveAdd %sAdd MoreAdd/Edit GalleryAllAllow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDefaultDeleteDescriptionDeveloperDisableDismissDo not allow trackingEnableExpandExport OptionsFont ColorFont FamilyFont SizeFont colorFont familyFont scriptFont styleFont subsetsFrom Google WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HoverImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingNameNew %sNo items of this type were found.No media selectedOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.RegularRemoveReset AllReset SectionRightSave ChangesSelect an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeStandard FontsStatusStyleSubsetsSupportSystem InfoThemeThis field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUploadUserUsernameVersionVersion %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Warning- This options panel will not work properly without javascript!Welcome to the Redux Demo PanelWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?error(s) were found!warning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/redux-framework/language/id_ID/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: id_ID Plural-Forms: nplurals=1; plural=0; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktifkan Mode DemoActiveTambah %sTambahTambah/Hapus GaleriSemuaSilakan TrackingAnda yakin? Reset akan menghapus semua custom value.Yakin ? Reset akan menghapus semua pengaturan pada bagian ini saja. Yakin ? Reset akan menghapus semua pengaturan yang adaLampiran Latar belakang Posisi Latar belakang Latar belakang BerulangCadangan Jenis HurufModel BorderBottomCatatan PerubahanBersihkan GaleriKlik untuk mengaktifkan berkas sample config.TutupPenghargaanDeaktifasi Mode DemoStandarHapusDeskripsiPengembangNonaktifkanSelesaiTidak boleh trackingAktifkanKembangkanPilihan EksporWarna HurufJenis HurufUkuran HurufWarna HurufJenis HurufBentuk HurufModel HurufSubset HurufDariGoogle WebfontsTinggiUrun peran dalam pengembangan PanelAnda dapat menyalin/mendonwload settingan saat ini. Simpan baik-baik sebagai cadangan bila terjadi hal-hal yang tidak diinginkan, atau dapat digunakan untuk mengembalikan settingan pada situs ini ( atau situs mana saja dengan pilihan settingan yang sama )HoverImporImpor / EksporPilihan ImporImpor dari URLMasukkan URL berkas cadangan, dan klik tombol Impor.Masukkan berkas cadangan dibawah ini lalu klik tombol Impor untuk menggunakan settingan dari berkas cadangan.LeftJarak antar hurufNamaBaru %sTidak ada pilihan untuk field jenis berikutTidak ada media yang dipilihOptionsData Object OptionsPanel pengaturan dibuat dengan %1$sKata SandiHarap TungguRedux FrameworkDaftar perubahan pada Redux FrameworkRedux Framework pada mode DemoRegulerHapusReset SemuaReset SectionRightSimpan perubahanPilihSettingan Berhasil Diimpor!Setting Berhasil Disimpan!Settingan telah berubah, silakan disimpan, klik tombol Simpan!Tampilkan Object pada Konsol JavascriptUkuranJenis Huruf StandarStatusModelSubsetDukunganInformasi SystemTemaMasukkan hanya nilai warna yang validMasukkan format data yang validJudulHinggaTopTransparanURLSatuanUnggahPenggunaNama PenggunaVersiVersi %sKunjungi laman pluginVisitedPERHATIAN! Prosedur berikut akan melakukan penimpaan semua settingan yang ada, pastikan semua sesuai.Perhatian- Panel options ini tidak dapat bekerja baik tanpa javascript!Selamat datang di panel demoLebarJarak antar kataTunggu sebentar...Anda tidak memiliki cukup izin untuk mengakses halaman ini.Perubahan yang dibuat belum disimpan. Mau disimpan sekarang?Perubahan yang dilakukan belum disimpan. Mau disimpan sekarang ?Anda tidak dapat memasukkan segala format HTML pada field ini, semua tag HTML akan dihapusAnda tidak dapat memasukkan spesial karakter pada field ini, semua spesial karakter akan dihapusMasukkan daftar berupa barisan angka dibatasi tanda komaMasukkan nilai numerikMasukkan nilai numerikMasukkan nilai numerikSettingan anda saat ini akan digantikan dengan nilai preset. Lanjut?Pengaturan saat ini akan diganti dengan pengaturan yang ditetapkan dalam preset. Lanjut?terdapat errorditemukan peringatan (warning)redux/ReduxCore/languages/README.txt000066600000000157152143340100013237 0ustar00Please visit: https://github.com/ReduxFramework/ReduxFramework/wiki/Translate for details on how you can help. redux/ReduxCore/languages/redux-framework.pot000066600000122721152143340100015411 0ustar00# Copyright (C) 2015 Team Redux # This file is distributed under the GPL2+. msgid "" msgstr "" "Project-Id-Version: Redux Framework 3.5.3\n" "Report-Msgid-Bugs-To: " "https://github.com/ReduxFramework/ReduxFramework/issues\n" "POT-Creation-Date: 2015-04-15 23:15:00+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "X-Generator: grunt-wp-i18n 0.4.9\n" "X-Poedit-KeywordsList: " "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_" "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Country: United States\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-Basepath: ../\n" "X-Poedit-SearchPath-0: .\n" "X-Poedit-Bookmarks: \n" "X-Textdomain-Support: yes\n" #: ReduxCore/core/enqueue.php:397 #: ReduxCore/inc/extensions/customizer/extension_customizer.php:566 msgid "You have changes that are not saved. Would you like to save them now?" msgstr "" #: ReduxCore/core/enqueue.php:405 #: ReduxCore/inc/extensions/customizer/extension_customizer.php:567 msgid "Are you sure? Resetting will lose all custom values." msgstr "" #: ReduxCore/core/enqueue.php:413 msgid "Are you sure? Resetting will lose all custom values in this section." msgstr "" #: ReduxCore/core/enqueue.php:421 #: ReduxCore/inc/extensions/customizer/extension_customizer.php:568 msgid "" "Your current options will be replaced with the values of this preset. Would " "you like to proceed?" msgstr "" #: ReduxCore/core/enqueue.php:428 msgid "Please Wait" msgstr "" #: ReduxCore/core/enqueue.php:439 msgid "There was an error saving. Here is the result of your action:" msgstr "" #: ReduxCore/core/enqueue.php:440 msgid "There was a problem with your action. Please try again or reload the page." msgstr "" #: ReduxCore/core/panel.php:65 msgid "Warning- This options panel will not work properly without javascript!" msgstr "" #: ReduxCore/core/panel.php:141 msgid "Settings Imported!" msgstr "" #: ReduxCore/core/panel.php:156 msgid "All Defaults Restored!" msgstr "" #: ReduxCore/core/panel.php:170 msgid "Section Defaults Restored!" msgstr "" #: ReduxCore/core/panel.php:184 msgid "Settings Saved!" msgstr "" #: ReduxCore/core/panel.php:204 msgid "Settings have changed, you should save them!" msgstr "" #: ReduxCore/core/panel.php:212 msgid "error(s) were found!" msgstr "" #: ReduxCore/core/panel.php:220 msgid "warning(s) were found!" msgstr "" #: ReduxCore/core/panel.php:340 msgid "" "Your panel has bundled outdated copies of Redux Framework template " "files – if you encounter functionality issues this could be " "the reason. Ensure you update or remove them." msgstr "" #: ReduxCore/framework.php:220 msgid "Options panel created using %1$s" msgstr "" #. Plugin Name of the plugin/theme msgid "Redux Framework" msgstr "" #: ReduxCore/framework.php:224 ReduxCore/framework.php:228 msgid "Options" msgstr "" #: ReduxCore/framework.php:1389 #: ReduxCore/templates/panel/menu_container.tpl.php:63 msgid "System Info" msgstr "" #: ReduxCore/framework.php:1692 msgid "Enable" msgstr "" #: ReduxCore/framework.php:1697 msgid "Disable" msgstr "" #: ReduxCore/framework.php:1703 msgid "moving the mouse over" msgstr "" #: ReduxCore/framework.php:1705 msgid "clicking" msgstr "" #: ReduxCore/framework.php:1709 msgid "" "Hints are tooltips that popup when %d the hint icon, offering addition " "information about the field in which they appear. They can be %d d by " "using the link below." msgstr "" #: ReduxCore/framework.php:1714 msgid "Hints" msgstr "" #: ReduxCore/framework.php:1841 msgid "Default" msgstr "" #: ReduxCore/framework.php:2680 msgid "Invalid security credential, please reload the page and try again." msgstr "" #: ReduxCore/framework.php:2766 msgid "Your panel has no fields. Nothing to save." msgstr "" #: ReduxCore/inc/class.redux_filesystem.php:23 msgid "Unable to modify required files. Please ensure that" msgstr "" #: ReduxCore/inc/class.redux_filesystem.php:25 msgid "has the proper read/write permissions or enter your FTP information below." msgstr "" #: ReduxCore/inc/class.redux_functions.php:237 msgid "Dismiss" msgstr "" #: ReduxCore/inc/class.redux_helpers.php:589 msgid "" "%s version %s is out of " "date. The core version is %s" msgstr "" #: ReduxCore/inc/class.redux_themecheck.php:61 msgid "" "The theme you are testing has %s embedded. We invite you to read the " "%sTheme-Check Documentation%s to understand some warnings you will see " "because of Redux." msgstr "" #: ReduxCore/inc/class.redux_themecheck.php:109 msgid "" "The following directories & files are still located in your " "Redux directory. They may cause errors in Theme-Check." msgstr "" #: ReduxCore/inc/debug.php:41 ReduxCore/inc/debug.php:69 #: ReduxCore/inc/debug.php:76 ReduxCore/inc/debug.php:77 msgid "Options Object" msgstr "" #: ReduxCore/inc/debug.php:54 msgid "Show Object in Javascript Console Object" msgstr "" #: ReduxCore/inc/extensions/customizer/extension_customizer.php:601 msgid "You have changes that are not saved. Would you like to save them now?" msgstr "" #: ReduxCore/inc/extensions/customizer/extension_customizer.php:602 msgid "Are you sure? Resetting will lose all custom values." msgstr "" #: ReduxCore/inc/extensions/customizer/extension_customizer.php:603 msgid "" "Your current options will be replaced with the values of this preset. " "Would you like to proceed?" msgstr "" #: ReduxCore/inc/extensions/import_export/extension_import_export.php:120 msgid "Import / Export" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:103 msgid "Import Options" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:104 msgid "Import from File" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:104 msgid "Import from URL" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:107 msgid "" "Input your backup file below and hit Import to restore your sites options " "from a backup." msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:112 msgid "" "Input the URL to another sites options set and hit Import to load the " "options from that site." msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:116 msgid "Import" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:116 msgid "" "WARNING! This will overwrite all existing option values, please proceed " "with caution!" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:119 msgid "Export Options" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:121 msgid "" "Here you can copy/download your current option settings. Keep this safe as " "you can use it as a backup should anything go wrong, or you can use it to " "restore your settings on this site (or any other site)." msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:126 msgid "Copy Data" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:126 msgid "Download Data File" msgstr "" #: ReduxCore/inc/extensions/import_export/import_export/field_import_export.php:126 msgid "Copy Export URL" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:124 #: ReduxCore/inc/fields/color/field_color.php:73 #: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:79 #: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:91 msgid "Transparent" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:141 msgid "Background Repeat" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:157 msgid "Background Clip" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:173 msgid "Background Origin" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:188 msgid "Background Size" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:203 msgid "Background Attachment" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:223 msgid "Background Position" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:277 #: ReduxCore/inc/fields/media/field_media.php:149 msgid "No media selected" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:314 #: ReduxCore/inc/fields/media/field_media.php:198 #: ReduxCore/inc/fields/slides/field_slides.php:126 #: ReduxCore/inc/fields/slides/field_slides.php:188 msgid "Upload" msgstr "" #: ReduxCore/inc/fields/background/field_background.php:321 #: ReduxCore/inc/fields/media/field_media.php:205 #: ReduxCore/inc/fields/multi_text/field_multi_text.php:69 #: ReduxCore/inc/fields/multi_text/field_multi_text.php:73 #: ReduxCore/inc/fields/multi_text/field_multi_text.php:76 #: ReduxCore/inc/fields/slides/field_slides.php:133 #: ReduxCore/inc/fields/slides/field_slides.php:190 msgid "Remove" msgstr "" #: ReduxCore/inc/fields/border/field_border.php:125 #: ReduxCore/inc/fields/spacing/field_spacing.php:191 msgid "All" msgstr "" #: ReduxCore/inc/fields/border/field_border.php:138 #: ReduxCore/inc/fields/spacing/field_spacing.php:215 msgid "Top" msgstr "" #: ReduxCore/inc/fields/border/field_border.php:145 #: ReduxCore/inc/fields/spacing/field_spacing.php:222 msgid "Right" msgstr "" #: ReduxCore/inc/fields/border/field_border.php:152 #: ReduxCore/inc/fields/spacing/field_spacing.php:229 msgid "Bottom" msgstr "" #: ReduxCore/inc/fields/border/field_border.php:159 #: ReduxCore/inc/fields/spacing/field_spacing.php:236 msgid "Left" msgstr "" #: ReduxCore/inc/fields/border/field_border.php:173 msgid "Border style" msgstr "" #: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:68 msgid "From " msgstr "" #: ReduxCore/inc/fields/color_gradient/field_color_gradient.php:82 msgid "To " msgstr "" #: ReduxCore/inc/fields/dimensions/field_dimensions.php:162 msgid "Width" msgstr "" #: ReduxCore/inc/fields/dimensions/field_dimensions.php:178 #: ReduxCore/inc/fields/typography/field_typography.php:442 msgid "Height" msgstr "" #: ReduxCore/inc/fields/dimensions/field_dimensions.php:189 #: ReduxCore/inc/fields/dimensions/field_dimensions.php:190 #: ReduxCore/inc/fields/spacing/field_spacing.php:245 #: ReduxCore/inc/fields/spacing/field_spacing.php:246 msgid "Units" msgstr "" #: ReduxCore/inc/fields/gallery/field_gallery.php:73 msgid "Add/Edit Gallery" msgstr "" #: ReduxCore/inc/fields/gallery/field_gallery.php:74 msgid "Clear Gallery" msgstr "" #: ReduxCore/inc/fields/link_color/field_link_color.php:87 msgid "Regular" msgstr "" #: ReduxCore/inc/fields/link_color/field_link_color.php:91 msgid "Hover" msgstr "" #: ReduxCore/inc/fields/link_color/field_link_color.php:95 msgid "Visited" msgstr "" #: ReduxCore/inc/fields/link_color/field_link_color.php:99 msgid "Active" msgstr "" #: ReduxCore/inc/fields/multi_text/field_multi_text.php:61 msgid "Add More" msgstr "" #: ReduxCore/inc/fields/password/field_password.php:62 msgid "Password" msgstr "" #: ReduxCore/inc/fields/password/field_password.php:63 msgid "Username" msgstr "" #: ReduxCore/inc/fields/select/field_select.php:83 #: ReduxCore/inc/fields/select_image/field_select_image.php:63 msgid "Select an item" msgstr "" #: ReduxCore/inc/fields/select/field_select.php:134 #: ReduxCore/inc/fields/select_image/field_select_image.php:144 msgid "No items of this type were found." msgstr "" #: ReduxCore/inc/fields/slides/field_slides.php:68 msgid "Slide" msgstr "" #: ReduxCore/inc/fields/slides/field_slides.php:73 #: ReduxCore/inc/fields/slides/field_slides.php:174 msgid "New %s" msgstr "" #: ReduxCore/inc/fields/slides/field_slides.php:145 #: ReduxCore/inc/fields/slides/field_slides.php:200 msgid "Title" msgstr "" #: ReduxCore/inc/fields/slides/field_slides.php:149 #: ReduxCore/inc/fields/slides/field_slides.php:204 msgid "Description" msgstr "" #: ReduxCore/inc/fields/slides/field_slides.php:153 #: ReduxCore/inc/fields/slides/field_slides.php:207 msgid "URL" msgstr "" #: ReduxCore/inc/fields/slides/field_slides.php:167 #: ReduxCore/inc/fields/slides/field_slides.php:220 msgid "Delete" msgstr "" #: ReduxCore/inc/fields/slides/field_slides.php:223 msgid "Add %s" msgstr "" #: ReduxCore/inc/fields/switch/field_switch.php:41 msgid "On" msgstr "" #: ReduxCore/inc/fields/switch/field_switch.php:44 msgid "Off" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:231 msgid "Font Family" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:232 msgid "Font family" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:258 #: ReduxCore/inc/fields/typography/field_typography.php:259 msgid "Backup Font Family" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:273 #: ReduxCore/inc/fields/typography/field_typography.php:281 msgid "Font style" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:274 msgid "Font Weight & Style" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:281 msgid "Style" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:321 msgid "Font subsets" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:323 msgid "Font Subsets" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:325 msgid "Subsets" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:325 msgid "Font script" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:342 #: ReduxCore/inc/fields/typography/field_typography.php:343 #: ReduxCore/inc/fields/typography/field_typography.php:344 msgid "Text Align" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:365 #: ReduxCore/inc/fields/typography/field_typography.php:366 #: ReduxCore/inc/fields/typography/field_typography.php:367 msgid "Text Transform" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:388 #: ReduxCore/inc/fields/typography/field_typography.php:389 #: ReduxCore/inc/fields/typography/field_typography.php:390 msgid "Font Variant" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:408 #: ReduxCore/inc/fields/typography/field_typography.php:409 #: ReduxCore/inc/fields/typography/field_typography.php:410 msgid "Text Decoration" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:432 #: ReduxCore/inc/fields/typography/field_typography.php:433 msgid "Font Size" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:433 msgid "Size" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:441 #: ReduxCore/inc/fields/typography/field_typography.php:442 msgid "Line Height" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:450 #: ReduxCore/inc/fields/typography/field_typography.php:451 msgid "Word Spacing" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:459 #: ReduxCore/inc/fields/typography/field_typography.php:460 msgid "Letter Spacing" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:478 msgid "Font Color" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:480 msgid "Font color" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:879 msgid "Standard Fonts" msgstr "" #: ReduxCore/inc/fields/typography/field_typography.php:980 msgid "Google Webfonts" msgstr "" #: ReduxCore/inc/tracking.php:129 msgid "Help improve Our Panel" msgstr "" #: ReduxCore/inc/tracking.php:130 msgid "" "Please helps us improve our panel by allowing us to gather anonymous usage " "stats so we know which configurations, plugins and themes to test to ensure " "compatibility." msgstr "" #: ReduxCore/inc/tracking.php:135 msgid "Allow tracking" msgstr "" #: ReduxCore/inc/tracking.php:140 msgid "Do not allow tracking" msgstr "" #: ReduxCore/inc/tracking.php:151 msgid "Welcome to the Redux Demo Panel" msgstr "" #: ReduxCore/inc/tracking.php:152 msgid "Getting Started" msgstr "" #: ReduxCore/inc/tracking.php:152 msgid "" "This panel demonstrates the many features of Redux. Before digging in, we " "suggest you get up to speed by reviewing %1$s." msgstr "" #: ReduxCore/inc/tracking.php:152 msgid "our documentation" msgstr "" #: ReduxCore/inc/tracking.php:153 msgid "Redux Generator" msgstr "" #: ReduxCore/inc/tracking.php:153 msgid "" "Want to get a head start? Use the %1$s. It will create a customized " "boilerplate theme or a standalone admin folder complete with all things " "Redux (with the help of Underscores and TGM). Save yourself a headache and " "try it today." msgstr "" #: ReduxCore/inc/tracking.php:154 ReduxCore/inc/welcome/welcome.php:214 msgid "Redux Extensions" msgstr "" #: ReduxCore/inc/tracking.php:154 msgid "" "Did you know we have extensions, which greatly enhance the features of " "Redux? Visit our %1$s to learn more!" msgstr "" #: ReduxCore/inc/tracking.php:154 msgid "extensions directory" msgstr "" #: ReduxCore/inc/tracking.php:155 msgid "Like Redux?" msgstr "" #: ReduxCore/inc/tracking.php:155 msgid "" "If so, please %1$s and consider making a %2$s to keep development of Redux " "moving forward." msgstr "" #: ReduxCore/inc/tracking.php:155 msgid "leave us a favorable review on WordPress.org" msgstr "" #: ReduxCore/inc/tracking.php:155 msgid "donation" msgstr "" #: ReduxCore/inc/tracking.php:156 msgid "Newsletter" msgstr "" #: ReduxCore/inc/tracking.php:156 msgid "" "If you'd like to keep up to with all things Redux, please subscribe to our " "newsletter" msgstr "" #: ReduxCore/inc/tracking.php:157 msgid "Email address" msgstr "" #: ReduxCore/inc/tracking.php:157 msgid "Subscribe" msgstr "" #: ReduxCore/inc/tracking.php:166 msgid "Close" msgstr "" #: ReduxCore/inc/validation/color/validation_color.php:15 #: ReduxCore/inc/validation/color_rgba/validation_color_rgba.php:14 #: ReduxCore/inc/validation/colorrgba/validation_colorrgba.php:16 msgid "This field must be a valid color value." msgstr "" #: ReduxCore/inc/validation/comma_numeric/validation_comma_numeric.php:16 msgid "You must provide a comma separated list of numerical values for this option." msgstr "" #: ReduxCore/inc/validation/css/validation_css.php:38 msgid "Unsafe strings were found in your CSS and have been filtered out." msgstr "" #: ReduxCore/inc/validation/date/validation_date.php:16 msgid "This field must be a valid date." msgstr "" #: ReduxCore/inc/validation/email/validation_email.php:16 #: ReduxCore/inc/validation/email_not_empty/validation_email_not_empty.php:16 msgid "You must provide a valid email for this option." msgstr "" #: ReduxCore/inc/validation/no_html/validation_no_html.php:15 msgid "You must not enter any HTML in this field, all HTML tags have been removed." msgstr "" #: ReduxCore/inc/validation/no_special_chars/validation_no_special_chars.php:16 msgid "" "You must not enter any special characters in this field, all special " "characters have been removed." msgstr "" #: ReduxCore/inc/validation/not_empty/validation_not_empty.php:16 msgid "This field cannot be empty. Please provide a value." msgstr "" #: ReduxCore/inc/validation/numeric/validation_numeric.php:16 #: ReduxCore/inc/validation/numeric_not_empty/validation_numeric_not_empty.php:16 msgid "You must provide a numerical value for this option." msgstr "" #: ReduxCore/inc/validation/unique_slug/validation_unique_slug.php:16 msgid "" "That URL slug is in use, please choose another. %s is open for " "use." msgstr "" #: ReduxCore/inc/validation/url/validation_url.php:16 msgid "You must provide a valid URL for this option." msgstr "" #: ReduxCore/inc/welcome/views/about.php:2 msgid "Welcome to Redux Framework %s" msgstr "" #: ReduxCore/inc/welcome/views/about.php:5 msgid "" "Thank you for updating to the latest version! Redux Framework %s is a huge " "step forward in Redux Development. Look at all that's new." msgstr "" #: ReduxCore/inc/welcome/views/about.php:8 #: ReduxCore/inc/welcome/views/changelog.php:8 #: ReduxCore/inc/welcome/views/credits.php:8 #: ReduxCore/inc/welcome/views/extensions.php:82 #: ReduxCore/inc/welcome/views/status_report.php:31 #: ReduxCore/inc/welcome/views/support.php:8 msgid "Version %s" msgstr "" #: ReduxCore/inc/welcome/views/about.php:15 msgid "What is Redux Framework?" msgstr "" #: ReduxCore/inc/welcome/views/about.php:17 msgid "" "Redux Framework is the core of many products on the web. It is an option " "framework which developers use to\n" " enhance their products." msgstr "" #: ReduxCore/inc/welcome/views/about.php:22 msgid "Learn More" msgstr "" #: ReduxCore/inc/welcome/views/about.php:28 msgid "New in this Release" msgstr "" #: ReduxCore/inc/welcome/views/changelog.php:2 msgid "Redux Framework - Changelog" msgstr "" #: ReduxCore/inc/welcome/views/changelog.php:5 #: ReduxCore/inc/welcome/views/status_report.php:28 msgid "" "Our core mantra at Redux is backwards compatibility. With hundreds of " "thousands of instances worldwide, you can be assured that we will take care " "of you and your clients." msgstr "" #: ReduxCore/inc/welcome/views/credits.php:2 msgid "Redux Framework - A Community Effort" msgstr "" #: ReduxCore/inc/welcome/views/credits.php:5 msgid "" "We recognize we are nothing without our community. We would like to thank " "all of those who help Redux to be what it is. Thank you for your " "involvement." msgstr "" #: ReduxCore/inc/welcome/views/credits.php:14 msgid "" "Redux is created by a community of developers world wide. Want to have your " "name listed too? Contribute to Redux." msgstr "" #: ReduxCore/inc/welcome/views/extensions.php:76 msgid "Redux Framework - Extensions" msgstr "" #: ReduxCore/inc/welcome/views/extensions.php:79 msgid "" "Supercharge your Redux experience. Our extensions provide you with features " "that will take your products to the next level." msgstr "" #: ReduxCore/inc/welcome/views/extensions.php:88 msgid "" "While some are built specificially for developers, extensions such as " "Custom Fonts are sure to make any user happy." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:25 msgid "Redux Framework - System Status" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:38 msgid "" "Please copy and paste this information in your ticket when contacting " "support:" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:41 msgid "Get System Report" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:44 msgid "Understanding the Status Report" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:51 msgid "Copied!" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:51 msgid "Copy for Support" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:60 msgid "WordPress Environment" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:65 msgid "Home URL" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:66 msgid "The URL of your site's homepage." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:70 msgid "Site URL" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:71 msgid "The root URL of your site." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:75 msgid "Redux Version" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:76 msgid "The version of Redux Framework installed on your site." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:80 msgid "Redux Data Directory Writable" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:83 msgid "" "Redux and its extensions write data to the uploads directory. " "This directory must be writable." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:88 msgid "To allow data saving, make %s writable." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:93 msgid "WP Content URL" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:96 msgid "The location of Wordpress's content URL." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:102 msgid "WP Version" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:103 msgid "The version of WordPress installed on your site." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:107 msgid "WP Multisite" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:108 msgid "Whether or not you have WordPress Multisite enabled." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:116 msgid "Permalink Structure" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:117 msgid "" "The current permalink structure as defined in Wordpress " "Settings->Permalinks." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:122 msgid "Front Page Display" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:123 msgid "The current Reading mode of Wordpress." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:131 msgid "Front Page" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:132 msgid "The currently selected page which acts as the site's Front Page." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:136 msgid "Posts Page" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:137 msgid "The currently selected page in where blog posts are displayed." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:144 msgid "WP Memory Limit" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:145 msgid "The maximum amount of memory (RAM) that your site can use at one time." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:150 msgid "" "%s - We recommend setting memory to at least 40MB. See: Increasing memory allocated to PHP" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:157 msgid "Database Table Prefix" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:159 msgid "The prefix structure of the current Wordpress database." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:163 msgid "WP Debug Mode" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:164 msgid "Displays whether or not WordPress is in Debug Mode." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:172 msgid "Language" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:173 msgid "The current language used by WordPress. Default = English" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:181 msgid "Browser" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:186 msgid "Browser Info" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:187 msgid "Information about web browser current in use." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:202 msgid "Server Environment" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:207 msgid "Server Info" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:208 msgid "Information about the web server that is currently hosting your site." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:212 msgid "Localhost Environment" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:213 msgid "Is the server running in a localhost environment." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:223 msgid "PHP Version" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:224 msgid "The version of PHP installed on your hosting server." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:228 msgid "ABSPATH" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:229 msgid "The ABSPATH variable on the server." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:235 msgid "PHP Memory Limit" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:236 #: ReduxCore/inc/welcome/views/status_report.php:241 msgid "The largest filesize that can be contained in one post." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:240 msgid "PHP Post Max Size" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:245 msgid "PHP Time Limit" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:246 msgid "" "The amount of time (in seconds) that your site will spend on a single " "operation before timing out (to avoid server lockups)" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:250 msgid "PHP Max Input Vars" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:251 msgid "" "The maximum number of variables your server can use for a single function " "to avoid overloads." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:255 msgid "PHP Display Errors" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:256 msgid "Determines if PHP will display errors within the browser." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:267 msgid "SUHOSIN Installed" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:268 msgid "" "Suhosin is an advanced protection system for PHP installations. It was " "designed to protect your servers on the one hand against a number of well " "known problems in PHP applications and on the other hand against potential " "unknown vulnerabilities within these applications or the PHP core itself. " "If enabled on your server, Suhosin may need to be configured to increase " "its data submission limits." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:277 msgid "MySQL Version" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:278 msgid "The version of MySQL installed on your hosting server." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:282 msgid "Max Upload Size" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:283 msgid "The largest filesize that can be uploaded to your WordPress installation." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:287 msgid "Default Timezone is UTC" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:290 msgid "The default timezone for your server." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:293 msgid "Default timezone is %s - it should be UTC" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:304 msgid "Used when communicating with remote services with PHP." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:310 msgid "" "Your server does not have fsockopen or cURL enabled - cURL is used to " "communicate with other servers. Please contact your hosting provider." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:349 msgid "Remote Post" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:350 msgid "Used to send data to remote servers." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:355 msgid "" "wp_remote_post() failed. Many advanced features may not function. Contact " "your hosting provider." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:358 #: ReduxCore/inc/welcome/views/status_report.php:373 msgid "Error: %s" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:365 msgid "Remote Get" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:366 msgid "Used to grab information from remote servers for updates updates." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:371 msgid "" "wp_remote_get() failed. This is needed to get information from remote " "servers. Contact your hosting provider." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:405 msgid "Active Plugins" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:421 msgid "Visit plugin homepage" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:445 msgid "Redux Instance: " msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:452 msgid "The opt_name argument for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:460 msgid "The global_variable argument for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:468 msgid "Indicates if developer mode is enabled for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:473 msgid "Indicates if ajax based saving is enabled for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:478 msgid "" "The page slug denotes the string used for the options panel page for this " "instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:483 msgid "" "The page permissions variable sets the permission level required to access " "the options panel for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:488 msgid "" "This variable set whether or not the menu is displayed as an admin menu " "item for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:493 msgid "" "The page parent variable sets where the options menu will be placed on the " "WordPress admin sidebar for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:499 msgid "Indicates if the compiler flag is enabled for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:504 msgid "" "Indicates if output flag for globally shutting off all CSS output is " "enabled for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:509 msgid "" "The output_tag variable sets whether or not dynamic CSS will be generated " "for the customizer and Google fonts for this instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:518 msgid "" "The specified template path containing custom template files for this " "instance of Redux." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:523 msgid "List of template files overriding the default Redux template files." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:546 msgid "Indicates the installed Redux extensions and their version numbers." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:577 msgid "Theme" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:582 msgid "Name" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:583 msgid "The name of the current active theme." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:587 msgid "Version" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:588 msgid "The installed version of the current active theme." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:593 msgid "is available" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:598 msgid "Author URL" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:599 msgid "The theme developers URL." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:603 msgid "Child Theme" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:604 msgid "Displays whether or not the current theme is a child theme." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:606 msgid "" "If you're modifying Redux Framework or a parent theme you didn't build " "personally, we recommend using a child theme. See: How to create a child theme" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:614 msgid "Parent Theme Name" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:616 msgid "The name of the parent theme." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:620 msgid "Parent Theme Version" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:623 msgid "The installed version of the parent theme." msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:627 msgid "Parent Theme Author URL" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:630 msgid "The parent theme developers URL." msgstr "" #: ReduxCore/inc/welcome/views/support.php:2 msgid "Redux Framework - Support" msgstr "" #: ReduxCore/inc/welcome/views/support.php:5 msgid "" "We are an open source project used by developers to make powerful control " "panels." msgstr "" #: ReduxCore/inc/welcome/views/support.php:20 msgid "Generate a Support URL" msgstr "" #: ReduxCore/inc/welcome/views/support.php:21 msgid "Select Support Type" msgstr "" #: ReduxCore/inc/welcome/views/support.php:22 #: ReduxCore/inc/welcome/views/support.php:65 msgid "How to Get Support" msgstr "" #: ReduxCore/inc/welcome/views/support.php:27 msgid "Submit a Support Request" msgstr "" #: ReduxCore/inc/welcome/views/support.php:30 msgid "To get started, we will need to generate a support hash." msgstr "" #: ReduxCore/inc/welcome/views/support.php:33 msgid "" "This will provide to your developer all the information they may need to " "remedy your issue. This action WILL send information securely to a remote " "server. To see the type of information sent, please look at the Status tab." msgstr "" #: ReduxCore/inc/welcome/views/support.php:37 msgid "" "Generate\n" " a Support URL" msgstr "" #: ReduxCore/inc/welcome/views/support.php:44 msgid "Select Your Support Type" msgstr "" #: ReduxCore/inc/welcome/views/support.php:47 msgid "What type of user are you?" msgstr "" #: ReduxCore/inc/welcome/views/support.php:52 msgid "User" msgstr "" #: ReduxCore/inc/welcome/views/support.php:53 msgid "I am a user, using a pre-built product." msgstr "" #: ReduxCore/inc/welcome/views/support.php:56 msgid "Developer" msgstr "" #: ReduxCore/inc/welcome/views/support.php:57 msgid "I am a developer, building a product using Redux." msgstr "" #: ReduxCore/inc/welcome/views/support.php:68 msgid "" "Please proceed to the Redux Framework issue tracker and supply us with your " "support URL below. Please also provide any information that will help us to " "reproduce your issue." msgstr "" #: ReduxCore/inc/welcome/views/support.php:74 msgid "" "Listed below are the Wordpress plugins and/or theme installed on your site " "that utilize Redux Framework. We do not directly support products created " "with our framework. It is the responsibility of the plugin or theme " "developer to support their work. You will need to contact the author(s) of " "the products listed below with your support questions." msgstr "" #: ReduxCore/inc/welcome/views/support.php:77 msgid "" "Please be sure to include for your developer - via cut and paste - the " "Support URL in the box below." msgstr "" #: ReduxCore/inc/welcome/views/support.php:215 msgid "" "Should the developer not be responsive, read the following article before asking for support from us " "directly." msgstr "" #: ReduxCore/inc/welcome/welcome.php:170 msgid "Support hash could not be generated. Please try again later." msgstr "" #: ReduxCore/inc/welcome/welcome.php:190 msgid "Welcome to Redux Framework" msgstr "" #: ReduxCore/inc/welcome/welcome.php:198 msgid "Redux Framework Changelog" msgstr "" #: ReduxCore/inc/welcome/welcome.php:206 class.redux-plugin.php:411 msgid "Get Support" msgstr "" #: ReduxCore/inc/welcome/welcome.php:223 msgid "The people that develop Redux Framework" msgstr "" #: ReduxCore/inc/welcome/welcome.php:231 msgid "Redux Framework Status" msgstr "" #: ReduxCore/inc/welcome/welcome.php:336 msgid "What's New" msgstr "" #: ReduxCore/inc/welcome/welcome.php:340 msgid "Extensions" msgstr "" #: ReduxCore/inc/welcome/welcome.php:344 msgid "Changelog" msgstr "" #: ReduxCore/inc/welcome/welcome.php:348 msgid "Credits" msgstr "" #: ReduxCore/inc/welcome/welcome.php:352 msgid "Support" msgstr "" #: ReduxCore/inc/welcome/welcome.php:356 msgid "Status" msgstr "" #: ReduxCore/inc/welcome/welcome.php:513 msgid "View %s" msgstr "" #: ReduxCore/templates/panel/footer.tpl.php:47 #: ReduxCore/templates/panel/header_stickybar.tpl.php:20 msgid "Save Changes" msgstr "" #: ReduxCore/templates/panel/footer.tpl.php:50 #: ReduxCore/templates/panel/header_stickybar.tpl.php:22 msgid "Reset Section" msgstr "" #: ReduxCore/templates/panel/footer.tpl.php:51 #: ReduxCore/templates/panel/header_stickybar.tpl.php:23 msgid "Reset All" msgstr "" #: ReduxCore/templates/panel/footer.tpl.php:56 #: ReduxCore/templates/panel/header_stickybar.tpl.php:26 msgid "Working..." msgstr "" #: ReduxCore/templates/panel/header.tpl.php:18 msgid "Developer Mode Enabled" msgstr "" #: ReduxCore/templates/panel/header_stickybar.tpl.php:16 msgid "Expand" msgstr "" #: class.redux-plugin.php:307 msgid "Redux Framework has an embedded demo." msgstr "" #: class.redux-plugin.php:307 msgid "Click here to activate the sample config file." msgstr "" #: class.redux-plugin.php:408 msgid "Docs" msgstr "" #: class.redux-plugin.php:409 msgid "Repo" msgstr "" #: class.redux-plugin.php:410 msgid "Builder" msgstr "" #: class.redux-plugin.php:416 msgid "Deactivate Demo Mode" msgstr "" #: class.redux-plugin.php:418 msgid "Activate Demo Mode" msgstr "" #: tests/includes/class-tivwp-dm-controller.php:28 msgid "Must call in of after the \"plugins_loaded\" action." msgstr "" #: tests/includes/class-tivwp-dm-controller.php:138 msgid "Unknown action \"%1$s\" specified for %2$s" msgstr "" #: tests/includes/class-tivwp-dm-controller.php:143 msgid "The unknown action has been replaced with \"%s\"" msgstr "" #: tests/includes/class-tivwp-dm-controller.php:158 msgid "Automatic action performed: \"%s\"" msgstr "" #: tests/includes/class-tivwp-dm.php:112 msgid "Activate Development Plugins" msgstr "" #: tests/includes/class-tivwp-dm.php:119 msgid "Deactivate Development Plugins" msgstr "" #: tests/includes/class-tivwp-dm.php:131 msgid "You do not have sufficient permissions to access this page." msgstr "" #. Plugin URI of the plugin/theme msgid "http://wordpress.org/plugins/redux-framework" msgstr "" #. Description of the plugin/theme msgid "" "Redux is a simple, truly extensible options framework for WordPress themes " "and plugins." msgstr "" #. Author of the plugin/theme msgid "Team Redux" msgstr "" #. Author URI of the plugin/theme msgid "http://reduxframework.com" msgstr "" #: ReduxCore/inc/welcome/views/status_report.php:427 msgctxt "by author" msgid "by %s" msgstr ""redux/ReduxCore/languages/redux-framework-es_ES.mo000066600000045561152143340100016224 0ustar00K\ 5DP4 #3 FSZ b o y . .MU)m 9  +0 CQ Xbi x           ."Q ht1'*9JEZ-]X,1     +07 K!Vx  !-6 J Var%&L\ mW{    $ ? S l {   , ( !!!!'!6!=!C! \!f!n! v! ! !!! !{!%T"7z"I"F"'C#k#6#4#0#"$=($3f$'$ $$$$ $$3%5%;%B%G%P% X%c%k%%U% %% % &F&\&w&&&& &4&)' /'<' R';]'F'E'K&(br(L(3")-V)/)a)`**w******J*9+,S+ +,++++V+P/n/// / ///./0I0Zf0H0 11*1;1O1e1+w111 111 11F2V2 ]2 h2u22 2$2 2 23"'34J33 373 33 3 44 &414L4`4 h4r4{4 44444455-5B5Q5e5|555555556 6,67 $72787<N7.777778D81_8r89299 9 999::#:3:B:I:R:i:.~::: :::$:;#;6;P;b; q; ~;!;;;;;$;<9<$S<x<<4<<<=g=|== ========%>A>_>w>>>>0>5? 8?F?N?W?i?p?w? ? ??? ???@+@vC@+@A@L(ACuA'A'A. B,8B/eBBBB@B.C%MCsC{CC CCGCCCCCC DDD5Di>D DD D DOD9EVE)vEEEE-EF"F9F KF:YF;F;FQ Gn^GXG7&H?^HCHjHjMI+III IIJf2JJ,JJ.J K;KRK}$ <)+^xW&v!0LZOpJ"Fu7s ('YcC-*Sj;oUfK>N8/B@2,wDE A6#Q`k=n4]95q1:lmreG. hgHdtM _zybRXa[{\ ~%P|TV3?iIActivate Demo ModeActivate Development PluginsActiveActive PluginsAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Author URLBackground AttachmentBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserBrowser InfoChangelogChild ThemeClear GalleryClick here to activate the sample config file.CloseCopied!Copy DataCopy Export URLCopy for SupportCreditsDatabase Table PrefixDeactivate Demo ModeDeactivate Development PluginsDefaultDefault Timezone is UTCDefault timezone is %s - it should be UTCDeleteDescriptionDetermines if PHP will display errors within the browser.DeveloperDeveloper Mode EnabledDisableDismissDo not allow trackingDocsDownload Data FileEmail addressEnableError: %sExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGenerate a Support URLGenerate a Support URLGet SupportGet System ReportGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHome URLHoverHow to Get SupportI am a developer, building a product using Redux.I am a user, using a pre-built product.ImportImport / ExportImport OptionsImport from FileImport from URLInformation about the web server that is currently hosting your site.Information about web browser current in use.Input the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.Is the server running in a localhost environment.LanguageLearn MoreLeftLetter SpacingLike Redux?Line HeightLocalhost EnvironmentMax Upload SizeMySQL VersionNameNew %sNew in this ReleaseNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP Display ErrorsPHP Max Input VarsPHP Memory LimitPHP Post Max SizePHP Time LimitPHP VersionPasswordPermalink StructurePlease WaitPosts PageRedux ExtensionsRedux FrameworkRedux Framework - ChangelogRedux Framework - ExtensionsRedux Framework - SupportRedux Framework - System StatusRedux Framework ChangelogRedux Framework StatusRedux Framework has an embedded demo.Redux GeneratorRedux Instance: Redux VersionRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSUHOSIN InstalledSave ChangesSection Defaults Restored!Select Support TypeSelect Your Support TypeSelect an itemServer EnvironmentServer InfoSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSite URLSizeSlideStandard FontsStatusStyleSubmit a Support RequestSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe URL of your site's homepage.The amount of time (in seconds) that your site will spend on a single operation before timing out (to avoid server lockups)The default timezone for your server.The largest filesize that can be contained in one post.The largest filesize that can be uploaded to your WordPress installation.The maximum amount of memory (RAM) that your site can use at one time.The people that develop Redux FrameworkThe theme developers URL.The version of MySQL installed on your hosting server.The version of PHP installed on your hosting server.The version of WordPress installed on your site.ThemeThere was an error saving. Here is the result of your action:This field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnable to modify required files. Please ensure thatUnitsUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!WP Debug ModeWP Memory LimitWP MultisiteWP VersionWarning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat is Redux Framework?What type of user are you?What's NewWhether or not you have WordPress Multisite enabled.WidthWord SpacingWordPress EnvironmentWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?Your panel has no fields. Nothing to save.by authorby %sclickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkis availableleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Diego R Language-Team: Spanish (Spain) (http://www.transifex.com/projects/p/redux-framework/language/es_ES/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: es_ES Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Activar Modo de DemostraciónActivar Plugins de DesarrolloActivoPlugins ActivosAñadir %sAñadir MásAñadir/Editar GaleríaTodoRestaurados todos los valores predeterminados!Permitir seguimiento¿Está seguro? Al restablecer perderá todos los valores personalizados.¿Está seguro? Al restablecer perderá todos los valores personalizados de esta sección.¿Está seguro? Al restablecer perdera todos los valores personalizados.URL del AutorAdjunto del fondoOrigen del fondoPosición del fondoRepetición del fondoTamaño del fondoCopiad de seguridad de la Familia de FuenteEstilo del bordeAbajoNavegadorInformación del NavegadorInforme de cambiosChild ThemeLimpiar GaleríaHaga click aquí para activar el archivo de configuración de ejemplo.Cerrar¡Copiado!Copiar DatosCopiar URL de ExportaciónCopiar para el SoporteCréditosPrefijo de Tabla de la Base de DatosDesactivar Modo de DemostraciónDesactivar Plugins de DesarrolloPredeterminadoLa Zona Horaria por defecto es UTCLa Zona Horaria por defecto es %s - Debería ser UTCEliminarDescripciónDetermina si PHP puede mostrar errores en el navegador.DesarrolladorModo Desarrollador HabilitadoDesactivarDescartarNo permitir seguimientoDocumentosDescargar Archivo de DatosDirección de emailActivarError: %sExpandirOpciones de ExportaciónExtensionesColor de fuenteFamilia de fuenteTamaño de fuenteSubconjuntos de fuentesVariaciones de FuentePeso y estilo de fuenteColor de la fuenteFamilia de la fuenteFuentes scriptEstilo de la FuenteSubconjuntos de FuenteDePágina PrincipalGenerar URL de SoporteGenerar URL de SoporteObtener soporteObtener Reporte del SistemaComenzarGoogle WebfontsAlturaAyudenos a mejorar Nuestro PanelAquí puede copiar / descargar sus ajustes de opciones. Mantenga esto seguro, ya que se puede utilizar como una copia de seguridad si algo va mal, o puede utilizarlo para restaurar la configuración en este sitio (o cualquier otro sitio).ConsejosURL de InicioSobreCómo obtener SoporteSoy un desarrollador, construyendo un producto usando Redux.Soy un usuario, usando un producto programado.ImportarImportar / ExportarOpciones de ImportaciónImportar desde archivoImportar desde URLInformación sobre el servidor web en el que está alojado tu sitio.Información del navegador web usado actualmente.Introduzca la URL del conjunto de opciones de otro sitio y pulse Importar para cargar las opciones de dicho sitio.Introduzca su archivo de copia de seguridad debajo y pulse Importar para restaurar las opciones del sitio desde una copia de seguridad.El servidor está funcionando en un entorno local.IdiomaSaber MásIzquierdaEspacio entre letras¿Te gusta Redux?Alto de líneaEntorno LocalhostMax Upload SizeVersión MySQLNombreNuevo %sNuevo en esta versiónBoletín informativoNo se encontró ningún elemento de este tipo.Nada seleccionadoApagadoEncendidoOpcionesObjeto OpcionesPanel de opciones creado usando %1$sMostrar errores PHPPHP Max Input VarsLímite de memoria de PHPPHP Post Max SizePHP Time LimitVersión PHPContraseñaEstructura de Enlaces PermanentesEspere por favorPágina de entradasExtensiones de ReduxRedux FrameworkRedux Framework - Informe de cambiosRedux Framework - ExtensionesRedux Framework - SoporteRedux Framework - Estado del SistemaChangelog de Redux FrameworkEstado de Redux FrameworkRedux Framework tiene una demostración incorporada.Generador ReduxInstancia Redux:Versión ReduxRedux es un framework de opciones simple y realmente extensible para plantillas y plugins de WordPress.RegularQuitarRepositorioRestablecer TodoRestablecer SecciónDerechaSUHOSIN InstaladoGuardar CambiosRestaurados todos los valores predeterminados de la sección!Seleccionar Tipo de SoporteSelecciona tu tipo de SoporteSeleccionar un elementoEntorno del ServidorInformación del Servidor¡Ajustes Importados!¡Ajustes Guardados!Los ajustes han cambiado, ¡debería guardarlos!Mostrar Objeto en la Consola de Objetos de JavascriptURL del sitioTamañoDeslizarFuentes EstándarEstadoEstiloEnviar Solicitud de SoporteSubscribeteSubconjuntosSoporteInformación del sistemaTeam ReduxAlineamiento del textoDecoración del textoTransformar textoLa URL de la página de inicio de tu sitio.La cantidad de tiempo (en segundos) que tu sitio puede usar en una operación (para prevenir bloqueos en el servidor).La Zona Horaria por defecto de tu servidor.El tamaño máximo de archivo que puede ser publicado en un post.Tamaño máximo de archivo que puede subirse a tu instalación de WordPress.Cantidad de memoria (RAM) máxima que tu sitio puede usar cada vez.La gente que desarrolla Redux FrameworkLa URL del programador de la plantilla.La versión de MySQL instalada en el servidor.La versión de PHP instalada en el servidor.La versión de WordPress instalada en tu sitio.TemaHa habido un error al guardar. Este es el resultado de su acción:Este campo no puede estar vacío. Por favor, introduce un valor.Este campo debe ser un valor de color válido.Este campo debe se una fecha válida.TítuloParaArribaTransparenteURLImposible modificar los archivos necesarios. Por favor asegurate de queUnidadesSubirUsuarioUsuarioVersiónVersión %sVer %sVisitar la web del pluginVisitado¡ATENCIÓN! Esto sobrescribirá todos los valores de las opciones existentes, ¡proceda con precaución!WP modo DebugLímite de memoria de WPWP MultisitioVersión WP¡Atención! Este panel de opciones no funcionará correctamente sin javascriptBienvenido a Redux FrameworkBienvenido a Redux Framework %s¡Bienvenido al Panel de prueba de Redux!¿Qué es Redux Framework?¿Qué tipo de usuario eres?¿Que hay de nuevo?Si tienes o no WordPress Multisitio activado.AnchuraEspacio entre palabrasEntorno WordPressProcesando...No tienes suficientes permisos para acceder a esta páginaTiene cambios sin guardar. ¿Le gustaría guardarlos ahora?Tiene cambios sin guardar. ¿Le gustaría guardarlos ahora?No debe introducir HTML en este campo, todas las etiquetas HTML se han eliminado.No debe introducir ningún carácter especial en este campo, se han eliminado todos los caracteres especiales.Debe proporcionar una lista de valores numéricos separados por comas para esta opción.Debe proporcionar un valor numérico para esta opción.Debe proporcionar una dirección URL válida para esta opción.Debe proporcionar un correo electrónico válido para esta opción.Sus opciones actuales serán reemplazadas con los valores predefinidos de este archivo. ¿Desea continuar?Sus opciones actuales serán reemplazadas con los valores predefinidos de este archivo. ¿Desea continuar?Tu panel no tiene campos. Nada que guardar.por %spulsandoDonación¡Se encontraron errores!Directorio de extensionestiene los permisos correctos de lectura/escritura o introduce la información del FTP a continuación.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkestá disponibledéjanos una review favorable en WordPress.orgmover el ratón por encimaNuestra documentación¿Se encontraron advertencias!redux/ReduxCore/languages/redux-framework-ru_RU.mo000066600000136354152143340100016263 0ustar00Kt {d5^q5D%4j  )9 LY` hu }  .   ' < [ c ){  9  l!!!3!;!""" ."<" C"M"T" c" n" y" " " "" " " " " "" # #. #O# f#r######$$9%B%H%1[%'%Z%U&f&'$'4'C'T'Ed'B'h'EV(C(E(-&)]T)X)B *1N** *** * *C*[+`,v,2, ,,,, ,!,-&-*---5- D-e-.#.6.G.Y. h.t..... .d.NA//60 00 11$.1S1o11111%1222 2k2WG33}4 4 444 4 444 4455-5<5 O5[5n5,~55(;6d6m6r6x6666 666{K88<8 9 9 #9.9>9M9P9 $:{E:&:9:M";>p;@;%;<8<2<*=72=Ij=F=]=%Y>>1>>~Y?x?\Q@ @'@7@/AXJAAA.[B6B4B6B0-C^CJdC=C3C'!D IDyjDhDME>FDF4HF8}FF FF3FFG($GAMGGAG$G6G4H9HBH JHUH]HsHU{H HH H HIFIQ3JJK8KVKvKK K4KsK^L dLqL L;LFLEMK[MbML N3WN-N/NaN`KO*OOcPsP|PPPJPP,Q AQ,NQ{QQQmQ`(RR.VxV8UW<XCX6YFYfYzY0YYDY+Z|;ZZdP[[J[\9\I\[\s\\\\\\(\ ]#]6]P]np]]]!^)(^$R^w^#^>^G^=_HU_c_``Z"`}`#``ka~aVaTa+9beb~bbbbbbcc 1cI[Ё -$9^u Ʉ !%F8*1܅!&.C&r\:ه # 0!; ] j5uˆՈ'3 [%f5ҍ;@|1Lk~fLؒLQJ6|7:)7Ea?A8TD,қ5<F!ah\ʞR'NzɟҟsPgET¥ǥ_dĦͦ5rIm yei &3C3W-a&~#ɫ٫wҮ25>*"iG԰=' *;XknqڲqLt3uԴlJce#Rŷ)8&b+,ErO(Ӻ!9X3vp m(-E\[xo/,%OAWI|FC0q!?G4(H uBVDPC k@Z+2$ =`_n :TdR+!&A)92.Y5<D@E>h"L-*=0 rG3Js# Q7&61 {SM?8 84.f )*1'U;F };6Kbc5^"KeN'aziy9BX]J$%I7>:Hlt, 3/#gjw<~%s - We recommend setting memory to at least 40MB. See: Increasing memory allocated to PHP%s version %s is out of date. The core version is %sYour panel has bundled outdated copies of Redux Framework template files – if you encounter functionality issues this could be the reason. Ensure you update or remove them.Activate Demo ModeActivate Development PluginsActiveActive PluginsAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Author URLAutomatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserBrowser InfoBuilderChangelogChild ThemeClear GalleryClick here to activate the sample config file.CloseCopied!Copy DataCopy Export URLCopy for SupportCreditsDatabase Table PrefixDeactivate Demo ModeDeactivate Development PluginsDefaultDefault Timezone is UTCDefault timezone is %s - it should be UTCDeleteDescriptionDetermines if PHP will display errors within the browser.DeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDisplays whether or not WordPress is in Debug Mode.Displays whether or not the current theme is a child theme.Do not allow trackingDocsDownload Data FileEmail addressEnableError: %sExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageFront Page DisplayGenerate a Support URLGenerate a Support URLGet SupportGet System ReportGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.Home URLHoverHow to Get SupportI am a developer, building a product using Redux.I am a user, using a pre-built product.If so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterIf you're modifying Redux Framework or a parent theme you didn't build personally, we recommend using a child theme. See: How to create a child themeImportImport / ExportImport OptionsImport from FileImport from URLIndicates if ajax based saving is enabled for this instance of Redux.Indicates if developer mode is enabled for this instance of Redux.Indicates if output flag for globally shutting off all CSS output is enabled for this instance of Redux.Indicates if the compiler flag is enabled for this instance of Redux.Indicates the installed Redux extensions and their version numbers.Information about the web server that is currently hosting your site.Information about web browser current in use.Input the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.Invalid security credential, please reload the page and try again.Is the server running in a localhost environment.LanguageLearn MoreLeftLetter SpacingLike Redux?Line HeightList of template files overriding the default Redux template files.Listed below are the Wordpress plugins and/or theme installed on your site that utilize Redux Framework. We do not directly support products created with our framework. It is the responsibility of the plugin or theme developer to support their work. You will need to contact the author(s) of the products listed below with your support questions.Localhost EnvironmentMax Upload SizeMust call in of after the "plugins_loaded" action.MySQL VersionNameNew %sNew in this ReleaseNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sOur core mantra at Redux is backwards compatibility. With hundreds of thousands of instances worldwide, you can be assured that we will take care of you and your clients.PHP Display ErrorsPHP Max Input VarsPHP Memory LimitPHP Post Max SizePHP Time LimitPHP VersionParent Theme Author URLParent Theme NameParent Theme VersionPasswordPermalink StructurePlease WaitPlease be sure to include for your developer - via cut and paste - the Support URL in the box below.Please copy and paste this information in your ticket when contacting support:Please helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Please proceed to the Redux Framework issue tracker and supply us with your support URL below. Please also provide any information that will help us to reproduce your issue.Posts PageRedux Data Directory WritableRedux ExtensionsRedux FrameworkRedux Framework - A Community EffortRedux Framework - ChangelogRedux Framework - ExtensionsRedux Framework - SupportRedux Framework - System StatusRedux Framework ChangelogRedux Framework StatusRedux Framework has an embedded demo.Redux Framework is the core of many products on the web. It is an option framework which developers use to enhance their products.Redux GeneratorRedux Instance: Redux VersionRedux and its extensions write data to the uploads directory. This directory must be writable.Redux is a simple, truly extensible options framework for WordPress themes and plugins.Redux is created by a community of developers world wide. Want to have your name listed too? Contribute to Redux.RegularRemote GetRemote PostRemoveRepoReset AllReset SectionRightSUHOSIN InstalledSave ChangesSection Defaults Restored!Select Support TypeSelect Your Support TypeSelect an itemServer EnvironmentServer InfoSettings Imported!Settings Saved!Settings have changed, you should save them!Should the developer not be responsive, read the following article before asking for support from us directly.Show Object in Javascript Console ObjectSite URLSizeSlideStandard FontsStatusStyleSubmit a Support RequestSubscribeSubsetsSuhosin is an advanced protection system for PHP installations. It was designed to protect your servers on the one hand against a number of well known problems in PHP applications and on the other hand against potential unknown vulnerabilities within these applications or the PHP core itself. If enabled on your server, Suhosin may need to be configured to increase its data submission limits.Supercharge your Redux experience. Our extensions provide you with features that will take your products to the next level.SupportSupport hash could not be generated. Please try again later.System InfoTeam ReduxText AlignText DecorationText TransformThank you for updating to the latest version! Redux Framework %s is a huge step forward in Redux Development. Look at all that's new.That URL slug is in use, please choose another. %s is open for use.The URL of your site's homepage.The amount of time (in seconds) that your site will spend on a single operation before timing out (to avoid server lockups)The current Reading mode of Wordpress.The current language used by WordPress. Default = EnglishThe current permalink structure as defined in Wordpress Settings->Permalinks.The currently selected page in where blog posts are displayed.The currently selected page which acts as the site's Front Page.The default timezone for your server.The following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The global_variable argument for this instance of Redux.The installed version of the current active theme.The installed version of the parent theme.The largest filesize that can be contained in one post.The largest filesize that can be uploaded to your WordPress installation.The maximum amount of memory (RAM) that your site can use at one time.The maximum number of variables your server can use for a single function to avoid overloads.The name of the current active theme.The name of the parent theme.The opt_name argument for this instance of Redux.The output_tag variable sets whether or not dynamic CSS will be generated for the customizer and Google fonts for this instance of Redux.The page parent variable sets where the options menu will be placed on the WordPress admin sidebar for this instance of Redux.The page permissions variable sets the permission level required to access the options panel for this instance of Redux.The page slug denotes the string used for the options panel page for this instance of Redux.The parent theme developers URL.The people that develop Redux FrameworkThe prefix structure of the current Wordpress database.The root URL of your site.The specified template path containing custom template files for this instance of Redux.The theme developers URL.The theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"The version of MySQL installed on your hosting server.The version of PHP installed on your hosting server.The version of Redux Framework installed on your site.The version of WordPress installed on your site.ThemeThere was a problem with your action. Please try again or reload the page.There was an error saving. Here is the result of your action:This field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.This variable set whether or not the menu is displayed as an admin menu item for this instance of Redux.This will provide to your developer all the information they may need to remedy your issue. This action WILL send information securely to a remote server. To see the type of information sent, please look at the Status tab.TitleTo To allow data saving, make %s writable.To get started, we will need to generate a support hash.TopTransparentURLUnable to modify required files. Please ensure thatUnderstanding the Status ReportUnitsUnknown action "%1$s" specified for %2$sUnsafe strings were found in your CSS and have been filtered out.UploadUsed to grab information from remote servers for updates updates.Used to send data to remote servers.Used when communicating with remote services with PHP.UserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!WP Debug ModeWP Memory LimitWP MultisiteWP VersionWant to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!We are an open source project used by developers to make powerful control panels.We recognize we are nothing without our community. We would like to thank all of those who help Redux to be what it is. Thank you for your involvement.Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat is Redux Framework?What type of user are you?What's NewWhether or not you have WordPress Multisite enabled.While some are built specificially for developers, extensions such as Custom Fonts are sure to make any user happy.WidthWord SpacingWordPress EnvironmentWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?Your panel has no fields. Nothing to save.Your server does not have fsockopen or cURL enabled - cURL is used to communicate with other servers. Please contact your hosting provider.by authorby %sclickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkis availableleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!wp_remote_get() failed. This is needed to get information from remote servers. Contact your hosting provider.wp_remote_post() failed. Many advanced features may not function. Contact your hosting provider.Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Vladimir Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/redux-framework/language/ru_RU/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ru_RU Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes %s - Мы рекомендуем значение не меньше 40MB. См.: Увеличение памяти, выделяемой PHP%s версия%s устарела. Основная версия — %sВ вашей панели найдены устаревшие копии файлов шаблонов Redux Framework – Это может быть причиной возникновения неполадок. Убедитесь, что вы обновили или удалили их.Включить демонстрационный режимАктивировать плагины для разработкиСсылка в момент нажатия (a:active)Активные плагиныДобавить %sДобавить ещёДобавить/Изменить галереюВсеВосстановлены значения по умолчанию!Разрешить отслеживаниеВы уверены? Сброс приведет к потере всех пользовательских значений.Вы уверены? Сброс приведет к потере всех пользовательских значений в этом разделе.Вы уверены? Сброс удалит все индивидуальные настройки!Ссылка на автораАвтоматическое действие произведено: "%s"Привязка фонаBackground ClipBackground OriginПозиция фонаПовтор фонаРазмер фонаРезервный шрифтСтиль границыНизБраузерИнформация о браузереБилдерИзмененияДочерняя темаОчистить галереюНажмите здесь для активирования демонстрационных настроек.ЗакрытьСкопировано!Копировать данныеКопировать URL экспортаКопия для поддержкиБлагодарностиПрефикс таблиц в БДВыключить демонстрационный режимДеактивировать плагины для разработкиПо умолчаниюЧасовым поясом по умолчанию является UTCЧасовым поясом по умолчанию является %s - должен быть UTCУдалитьОписаниеОпределяет, будет ли PHP выводить ошибки в браузер.РазработчикРежим РазработчикаЗнаете ли вы, что у нас есть расширения, которые улучшают Redux? Посетите наш %1$s, чтобы узнать больше!ОтключитьЗакрытьПоказывает, находится ли WordPress в Режиме ОтладкиОтображает, является ли текущая тема дочернейЗапретить отслеживаниеДокументацияСкачать Data FileАдрес эл. почтыВключитьОшибка: %sРаскрытьЭкспорт настроекДополненияЦвет ШрифтаШрифтРазмер ШрифтаНаборы шрифтаFont VariantНасыщенность (толщина) & стиль шрифта.Цвет шрифтаСемейство шрифтовСкрипт шрифтаСтиль шрифтаПодгруппа шрифтаОтГлавная страницаПоказать главную страницуСгенерировать URL поддержки.Сгенерировать URL поддержкиПолучить поддержкуПолучить системный отчетПриступая к работеGoogle WebfontsВысотаПомогите улучшить нашу Панель Настроек!Здесь вы можете скопировать/скачать ваши текущие настройки панели управления. Сохраненные настройки могут быть использованы для восстановления конфигурации при любых сбоях или для переноса настроек на другой сайт.ПодсказкиПодсказки - это облачка, выплывающие когда %d предлагает дополнительную информацию. Они могу быть %d по ссылке ниже.URL домашней страницыСсылка при наведении курсора (a:hover)Как получить поддержкуЯ — разработчик, собирающий продукт с помощью Redux.Я — пользователь, использующий уже готовый продукт.Если так, пожалуйста %1$s и рассмотрите %2$s на развитие разработки Redux.Если Вы хотите быть в курсе всего о Redux, пожалуйста подпишитесь на нашу рассылкуЕсли Вы переносите Redux Framework или родительскую тему, Вам не надо собирать её лично, мы рекомендуем использовать дочернюю тему. Для справки: How to create a child themeИмпортИмпорт / ЭкспортИмпорт настроекИмпорт из файлаИмпорт из URLПоказывает, включены ли AJAX-сервисы для данного объекта Redux.Показывает, включен ли режим разработчика для данного объекта Redux.Указывает, включен ли флаг, который глобально отключает весь вывод CSS для данного экземпляра Redux.Указывает на то, включен ли флаг компилятора для данного экземпляра Redux.Указывает установленные расширения Redux и номера их версий.Информация о текущем сервере, на котором находится Ваш сайтИнформация о текущем используемом браузереВведите URL другого набора настроек и нажмите Импорт для загрузки новых параметров.Загрузите вашу резервную копию настроек и нажмите Импорт для восстановления.Неверное удостоверение безопасности, пожалуйста, перезагрузите страницу и повторите попытку.Является ли запущенный сервер окружением localhostЯзыкУзнать большеСлеваМежбуквенное расстояниеНравится Redux?Line HeightСписок файлов шаблона, которые перезаписывают стандартные файлы шаблонов Redux.Ниже перечислены Wordpress плагины и / или темы, установленные на вашем сайте, что используют Redux Framework. Мы напрямую не поддерживаем продукты, созданные с нашим фреймворком. Это ответственность разработчика плагина или темы. Вам нужно будет связаться с автором (ами) продуктов, перечисленных ниже с вашими вопросами поддержки.Среда LocalhostМаксимальный размер загружаемого файлаДолжно вызываться после действий "plugins_loaded".Версия MySQLИмяНовый %sНовое в этом релизеНовостная рассылкаНе найдено ни одного элемента заданного типа.Медиа-файл не выбранВыкл.Вкл.НастройкиНастройки объектовПанель настроек создана с помощью %1$sНаша основная мантра в Redux — это обратная совместимость. С сотнями тысяч экземпляров по всему миру, вы можете быть уверены, что мы будем заботиться о вас и ваших клиентах.Переменная PHP Display ErrorsПеременная PHP Max InputЛимит памяти PHPМаксимально допустимый размер данных, отправляемых методом POSTЛимит времени PHPВерсия PHPURL автора родительской темыИмя родительской темыВерсия родительской темыПарольСтруктура постоянны ссылокПожалуйста, подождитеПожалуйста, не забудьте включить для разработчика - с помощью вырезания и вставки - URL поддержки в поле ниже.Пожалуйста, скопируйте следующую информацию и вставьте её в ваш тикет при обращении в службу поддержки:Пожалуйста, помогите улучшить нашу панель позволив собрать анонимную статистику о конфигурации, плагинах и шаблонах, чтобы точнее тестировать совместимость.Пожалуйста, перейдите к трекеру Redux Framework и предоставьте нам свой адрес поддержки ниже. Просьба также представить любую информацию, которая поможет нам воспроизвести вашу проблему.Страница постовПапка для данных Redux доступна для записиРасширения ReduxRedux FrameworkRedux Framework - Общественное достижениеRedux Framework - Журнал измененийRedux Framework - РасширенияRedux Framework - Техническая поддержкаRedux Framework - Состояние системыЖурнал Redux FrameworkСтатус Redux FrameworkRedux Framework имеет встроенную демонстрацию.Redux Framework — это ядро многих веб-продуктов. Это один из фреймворков, который используют разработчики для улучшения их разработок.Redux ГенераторОбъект Redux:Версия ReduxRedux и его расширения сохраняют данные в папку uploads. Эта директория должна быть доступна для записи.Redux — простой, действительно расширяемый фреймворк настроек для тем и плагинов WordPressRedux создаётся разработчиками со всего мира. Хотите внести своё имя в список? Contribute to Redux.Обычная ссылка (a:link)Удалённый GETУдалённый POSTУбратьРепозиторийСбросить всеСброс разделаСправаУстановлен ли SUHOSINСохранить измененияНастройки по умолчанию восстановлены.Выберите тип поддержкиВыберите Ваш тип поддержкиВыбрать элементОкружение сервераИнформация о сервереНастройки импортированы!Настройки сохранены!Настройки были изменены, Вам следует их сохранить!Если разработчик не реагирует, прочитайте следующую статью , прежде чем просить поддержки у нас напрямую.Показать объект в консоли JavaScriptURL сайтаРазмерСлайдСтандартный шрифтСтатусСтильОтправить запрос в поддержкуПодписатьсяПодгруппыSuhosin является усовершенствованной системой защиты установки PHP. Он был разработан для защиты серверов, с одной стороны против ряда хорошо известных проблем в PHP приложениях, а с другой стороны от потенциальных неизвестных уязвимостей в этих приложениях или самого ядра PHP. Если Suhosin включен на вашем сервере, возможно, он должен быть настроены для повышения его пределов представления данных.Улучшите ваш опыт с Redux. Наши расширения предоставят Вам функционал, с помощью которого вы выведете Ваш продукт на новый уровень.ПоддержкаХэш поддержки не может быть сгенерирован. Пожалуйста, повторите попытку позже.Системная информацияTeam ReduxВыравнивание текстаText DecorationПроизвольное ПреобразованиеСпасибо за обновление до последней версии! Redux Framework %s — это большой шаг вперёд в разработке Redux. Взгляните на обновления.Данный краткий заголовок занят, пожалуйста, выберите другой. %s не занят.URL главной страницы Вашего сайтаВремя (в секундах) которое Ваш сайт может потратить на одну операцию до таймаута (во избежание зависания сервера).Текущий режим чтения Wordpress.Текущий язык, используемый WordPress. По умолчанию - АнглийскийТекущая структура постоянных ссылок, как определено в Консоль -> Настройки -> Постоянные ссылкиВыбранная страница, на которой выводятся посты из блогаВыбранная сейчас страница, которая выступает в роли Главной Страницы сайтаЧасовой пояс Вашего сервера по умолчанию.Следующие папки и файлы всё еще находятся в директории Redux. Они могут вызвать ошибки при Theme-Check.Аргумент global_variable для данного объекта Redux.Установленная версия текущей активной темы.Установленная версия родительской темы.Максимальный размер файла, который может содержаться в одном посте.Максимальный размер файла, который может загружен в вашу инсталляцию Wordpress.Максимальное количество памяти (RAM), которое может использовать ваш сайт в один момент времени.Максимальное кол-во переменных, которые может использовать Ваш сервер в одной функции, избегая перегрузки.Название текущей активной темы.Имя родительской темы.Аргумент opt_name для данного объекта Redux.Переменная "output_tag" устанавливает, будет ли генерироваться динамический CSS для настройщика и шрифтов Google для данного экземпляра Redux.Переменная "page parent" определяет, где будет меню настроек размещено в панели администрирования Wordpress для данного экземпляра Redux.Переменная "page permissions" устанавливает уровень прав для доступа к панели настроек для этого экземпляра Redux.Краткий заголовок страницы обозначает строку, используемую для страницы панели настроек для этого экземпляра Redux.URL разработчиков родительской темы.Люди, разрабатывающие Redux FrameworkСтруктура префикса в текущей БД WordpressКорневой URL Вашего сайтаУказанный путь к шаблону, содержащий пользовательские файлы шаблонов для этого экземпляра Redux.Ссылка на разработчиков темыВ теме, которую вы тестируете, имеется встроенный %s. Пожалуйста, прочтите %sДокументацию по проверке тем%s чтобы понять некоторые предупреждения, которые вы увидите из-за Redux.Неизвестное действие было заменено "%s"Версия MySQL, установленная на сервере Вашего хостинга.Версия PHP, установленная на сервер Вашего хостингаВерсия Redux Framework была установлена на Ваш сайт.Версия WordPress, установленная на Вашем сайте.ТемаВозникла проблема с Вашим действием. Пожалуйста, перезагрузите страницу или попробуйте позже.Произошла ошибка при сохранении. Вот результат Ваших действий:Поле не должно быть пусто. Введите значение.Данное поле должно содержать корректное значение цвета.Данное поле должно содержать корректную дату.Эта панель демонстрирует многие важные свойства Redux. Прежде чем углубляться, мы предлагаем Вам увеличить скорость обучения, просмотрев %1$s.Эта переменная определяет, отображать или нет меню, как меню администратора для этого экземпляра Redux.Это даст вашему разработчика всю информацию, в которой он нуждается, чтобы исправить вашу проблему. Это действие будет посылать информацию надежно на удаленный сервер. Чтобы увидеть тип информации, который отправляется, пожалуйста, посмотрите на вкладке статус.ЗаголовокДоЧтобы получить возможность сохранять данные, сделайте %s доступной для записи.Нам нужно будет создать хэш поддержки, чтобы начать.ВерхПрозрачныйURLНевозможно модифицировать требуемые файлы. Пожалуйста, удостоверьтесь, чтоПонимание отчёта о состоянииед. измеренияНеизвестное действие "%1$s" указано для %2$sНебезопасные строки были найдены в вашем CSS и отфильтрованыЗагрузитьИспользуется, чтобы принимать информацию с удаленных серверов для обновления.Используется для отправки данных на удаленные сервера.Используется при общении с удаленными сервисами через PHP.ПользовательИмя пользователяВерсияВерсия %sСмотреть %sПерейти на страницу плагинаПосещенная ссылка (a:visited)ВНИМАНИЕ! Данное действие заменит все существующие значения. Пожалуйста, будьте осторожны!Режим отладки WPОграничение памяти WPМультисайтовость WPВерсия WPХотите получить хороший старт? Используйте %1$s. Это создаст индивидуальный шаблон темы или автономную папку администратора в комплекте со всеми вещами Redux (с помощью Undescore и TGM). Избавьтесь от головной боли и попробуйте сегодня.Предупреждение: Эта панель настроек не будет нормально работать без JavaScript!Мы - проект с открытым исходным кодом, используемый разработчиками для создания мощных административных панелей.Мы осознаём, что мы — ничто без нашего комьюнити. Мы хотели бы поблагодарить всех, кто помогает создавать Redux. Спасибо за ваш вклад.Добро Пожаловать в Redux FrameworkДобро пожаловать в Redux Framework %sДобро пожаловать в демо-панель ReduxЧто такое Redux Framework?Каким типом пользователя Вы являетесь?Что нового?Включена или нет опция WordPress MultisiteВ то время как некоторые сделаны только для разработчиков, такие расширения как Custom Fonts делают пользователя счастливее.ШиринаИнтервал между словамиОкружение WordPressОбработка...У вас недостаточно полномочий для доступа к этой странице.Некоторые настройки не сохранены. Хотите сохранить их сейчас?Некоторые настройки не сохранены. Хотите сохранить их сейчас?Вы не должны вводить HTML в данное поле. Все HTML тэги будут удалены.Вы не должны вводить специальные символы в данное поле. Все спец. символы будут удалены.Вы должны ввести список числовых значений, разделённых запятой.Вы должны использовать числовое значение для данной опции.Вы должны использовать корректный URL для данной опции.Вы должны использовать корректный email для данной опции.Ваши текущие настройки будут заменены значениями из этого набора. Вы хотите продолжить?Ваши текущие настройки будут заменены значениями из этого набора. Вы хотите продолжить?Ваша панель не имеет полей. Нечего сохранять.Ваш сервер не имеет fsockopen или cURL - cURL используется для связи с другими серверами. Пожалуйста, свяжитесь с вашим хостинг-провайдером.by %sнажатиепожертвованиеошибка(и) были найдены!папка с расширениямиимеет достаточные права на чтение/запись или введите информацию для доступа по FTP здесь.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkдоступеноставьте доброжелательный отзыв на WordPress.orgпри наведении курсоранаша документацияпредупреждение(я) были найдены!wp_remote_get () не удалось. Это необходимо, чтобы получить информацию из удаленных серверов. Обратитесь к хостинг-провайдеру.wp_remote_post () не удалось. Многие продвинутые функции могут не работать. Обратитесь к хостинг-провайдеру.redux/ReduxCore/languages/redux-framework-hi_IN.mo000066600000021621152143340100016203 0ustar00_  #*3D5HD~4 " 4 D W d .k            ( 4 : J Z a g n ~           " + 7 G O V ` n t    ,        $ ( . 5 : C ^ d q ;| F E aE ` &,@mg3 3DB^ m..51T/6%? -(=fy"& #4Xu|( $&05 f"s*)  <"_fm_8//_r*" +# 3-3ac 6"Il(`)o. ! "1"#,1#2^#*C J ='S>R;<2F:871W,YGBH95$E)I6M@Q+ZL (%N #TO_0^X/[-DAK4 .\P!3"V]U&?Activate Demo ModeActiveAdd %sAdd MoreAdd/Edit GalleryAllAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomClick here to activate the sample config file.CloseDeactivate Demo ModeDefaultDeleteDescriptionDisableDismissEmail addressEnableExpandFont ColorFont FamilyFont SizeFont colorFont familyFrom Getting StartedGoogle WebfontsHeightHintsImportImport / ExportImport OptionsImport from URLLeftLetter SpacingLike Redux?Line HeightNameNew %sNewsletterNo media selectedOffOnOptionsOptions panel created using %1$sPasswordPlease WaitRedux FrameworkRegularRemoveReset AllReset SectionRightSave ChangesSelect an itemSettings Imported!Settings Saved!Settings have changed, you should save them!SizeStatusSubscribeSupportSystem InfoTitleTo TopTransparentURLUnitsUploadUserUsernameWelcome to Redux FrameworkWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?donationerror(s) were found!http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Hindi (India) (http://www.transifex.com/projects/p/redux-framework/language/hi_IN/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: hi_IN Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes डेमो मोड सक्रिय करेसक्रियजोड़े %sऔर जोड़ेंगैलरी जोड़ें/संपादित करेसभी क्या आपको पूरा यकीन है? आप रीसेट करने से सभी परिवर्तित मूल्यों को खो देंगेक्या आपको पूरा यकीन है? आप रीसेट करने से सभी परिवर्तित मूल्यों को खो देंगेक्या आपको पूरा यकीन है? आप रीसेट करने से सभी परिवर्तित मूल्यों को खो देंगेपृष्ठभूमि संलग्नपृष्ठभूमि की अवस्थापृष्ठभूमि दोहराएँपृष्ठभूमि का आकारफॉन्ट समूह बैकअप करेबॉर्डर स्टाइलतलसैंपल कॉन्फ़िग फ़ाइल को सक्रिय करने के लिए यहां क्लिक करें.बंद करेंडेमो मोड निष्क्रिय करेंस्वतःहटाएँविवरणनिष्क्रिय करेंख़ारिजईमेल पतासक्रिय करेंविस्तृत करेंफ़ॉन्ट रंगफॉन्ट समूहफ़ॉन्ट का आकारफ़ॉन्ट का रंगफॉन्ट समूहसेआरंभ करेगूगल वेबफोंट्सऊंचाईसंकेतआयातआयात / निर्यातआयात के विकल्पयूआरएल से आयात करेबाएँअक्षर अंतरालरिडक्स पसंद आया?पंक्ति की ऊंचाईनामनया %sन्यूज़लेटरमीडिया चयनित नहीं कियाऑफऑनविकल्पविकल्प पैनल %1$s का उपयोग करके बनाया हैकूटशब्दकृपया प्रतीक्षा करें रिडक्स फ्रेमवर्कनियमितहटाएँसभी को रीसेट करेरीसेट सेक्शनदायेपरिवर्तन सहेजेंएक आइटम चुनेंसेटिंग्स आयात किया!सेटिंग्स सहेजा गया!सेटिंग्स बदल गयी हैं, परिवर्तन सहेजेंआकारस्थतिसदस्यता लेंसहायतासिस्टम सूचनाशीर्षकसेशीर्षपारदर्शकयूआरएल इकाईअपलोडउपयोगकर्ताउपयोगकर्ता नाम रिडक्स फ्रेमवर्क में आपका स्वागत हैचौडाईशब्द अंतरालकाम जारी...आपको इस पृष्ठ का उपयोग करने के लिए पर्याप्त अनुमति नहीं है.आप के परिवर्तनों को सहेजा नहीं है अब तक. क्या आप अब उन्हें सहेजना चाहेंगे?आप के परिवर्तनों को सहेजा नहीं है अब तक. क्या आप अब उन्हें सहेजना चाहेंगे?आपके मौजूदा विकल्पों को इस पूर्व निर्धारित मूल्य से बदल दिया जाएगा. क्या आप आगे बढ़ना चाहेंगे?आपके मौजूदा विकल्पों को इस पूर्व निर्धारित मूल्य से बदल दिया जाएगा. क्या आप आगे बढ़ना चाहेंगे?दानत्रुटी (या) पाई गयी!http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkचेतावनी(या) पाई गयी!redux/ReduxCore/languages/redux-framework-pl_PL.mo000066600000045025152143340100016227 0ustar00D3l89Lip5D4E z  '4; C P Z f.t .6)Nx  l!)?D We lv}           % +6 MYiydjZ0U](X   2 R`e l!w   + 7%Qw W  $ ) 3AG Yf ,(, U ^ c i x      %!'!'!!! "."6" #3#'G# o#y# $$$ $$$3($\$(b$$$$$ $$$$U$/% ?%J%F/&v&&&& && &' ';)'Fe'E'K'b>(L(3(-")/P)a)`)C*L*U*j*J**,* +,+K+a+s++/ /:/B/R/[/a/w/4//6/A06D0 {0&0000 00 01101 61D1 _1k1z1<11 1 1112 2;2N2 k2$u26222 223333 33 33 3334 44+4<4O4`4~444 444444 45 5#5C5 55 666[6i9777777Q7OC88888 88+8 9!9'9/9*89c9u9{99 9%999 9999::: ; $;E;'a;;; ;];<< /<;< A<N<_<o<u< <1<<<< ==5=O=7m="= ====== > >> >5>D>W>i>!>->>']????3j@9@@7@*A'AA~iAAAAABL B XB-bB B BBB B B BB+C-C ?CICW=DDD$D'D E E+EGE ]EEgEMEGEWCFlFSG1\GG#GUG[$HHH+HHTH&I,@ImI1|III<ISW)>dyoV,Ku' rp/6[;aq]F\-Cm #R49^Dv?GHnM} IPz =l"Y1k0OQLf:c8xsgi5~tUN_JA!3|<%h.*E j$ @TB+bw{&`7Z(e2XActivate Demo ModeActivate Development PluginsActiveActive PluginsAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Author URLAutomatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserBrowser InfoChangelogChild ThemeClear GalleryClick here to activate the sample config file.CloseCopied!Copy DataCopy Export URLCopy for SupportCreditsDatabase Table PrefixDeactivate Demo ModeDeactivate Development PluginsDefaultDefault Timezone is UTCDefault timezone is %s - it should be UTCDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingDocsDownload Data FileEmail addressEnableError: %sExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGenerate a Support URLGet SupportGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.Home URLHoverHow to Get SupportIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from FileImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LanguageLearn MoreLeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.MySQL VersionNameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP Memory LimitPHP Time LimitPHP VersionPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Posts PageRedux ExtensionsRedux FrameworkRedux Framework - SupportRedux Framework - System StatusRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux Instance: Redux VersionRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemote GetRemote PostRemoveRepoReset AllReset SectionRightSUHOSIN InstalledSave ChangesSection Defaults Restored!Select Support TypeSelect Your Support TypeSelect an itemServer EnvironmentServer InfoSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSite URLSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe URL of your site's homepage.The default timezone for your server.The following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe root URL of your site.The theme developers URL.The theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"The version of Redux Framework installed on your site.ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnable to modify required files. Please ensure thatUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!WP Memory LimitWP VersionWant to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat type of user are you?What's NewWidthWord SpacingWordPress EnvironmentWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkis availableleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Michal Holyszko Language-Team: Polish (Poland) (http://www.transifex.com/projects/p/redux-framework/language/pl_PL/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pl_PL Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktywuj tryb DemoAktywuj Wtyczki TworzeniaAktywnyAktywne WtyczkiDodaj %sDodajDodaj/Edytuj GalerięWszystkoWszystkie domyślne wartości zostały przywrócone!Zezwól na śledzenieJesteś pewien? Utracisz wszystkie własne ustawienia.Jesteś pewien? Utracisz wszystkie własne ustawienia tej sekcji.Jesteś pewien? Utracisz wszystkie własne ustawienia.URL AutoraWykonana automatyczna czynność: "%s"Zaczepienie tłaObcięcie TłaPoczątek TłaPozycja tłaPowtarzanie tłaRozmiar tłaZapasowy Krój CzcionkiStyl obramowaniaDółPrzeglądarkaInformacje o PrzeglądarceLista zmianPokrewny MotywWyczyść galerięKliknij tutal aby aktywować przykładowy plik konfiguracji.ZamknijSkopiowany!Kopiuj DaneKopiuj URL EksportuKopia dla WsparciaPodziękowaniaPrefiks Tabeli Bazy DanychWyłącz tryb DemoDezaktywuj Wtyczki TworzeniaDomyślnyDomyślną Strefą Czasową jest UTCDomyślną strefą czasową jest %s - powinna być UTCUsuńOpisProgramistaWłączony Tryb TwórcyCzy wiedziałeś, że mamy rozszerzenia, które znacznie zwiększają możliwości Redux? Odwiedź nasz %1$s, aby dowiedzieć się więcej!WyłączUkryjWyłącz śledzenieDokumentyPobierz Plik DanychAdres e-mailWłączBłąd: %sRozwińEksportuj opcjeDodatkiKolor czcionkiKrój CzcionkiRozmiar CzcionkiPodzbiory czcionkiWariant CzcionkiGrubość Czcionki & StylKolorKrój czcionkiSkrypt czcionkiStyl czcionkiZbiór znakówOdStrona głównaWygeneruj URL WsparciaUzyskaj WsparcieNa PoczątekGoogle WebfontsWysokośćPomóż udoskonalić Nasz PanelTutaj możej skopiować/pobrać aktualne ustawienia. Zachowaj je, możesz ich użyć jako kopii zapasowej w przypadku awarii, przywrócić na tej lub innej witrynie.WskazówkiWskazówki są podpowiedziami, które wyskakują gdy %d ikonę podpowiedzi, oferując dodatowe informacje o polu w którym się pojawiają. Mogą być &d poprzez użycie poniższego odsyłacza.URL DomowyHoverJak Uzyskać WsparcieJeśli tak, prosimy %1$s i rozważenie zrobienia %2$s, aby utrzymać postęp rozwoju Redux.Jeśli chciałbyś być na bieżąco w sprawach związanych z Redux, prosimy zapisz się na nasz biuletynImportImport / EksportImportuj opcjeImportuj z PlikuImportuj z adresu URLWpisz adres URL do innej strony opcji, z której chcesz zaimportować ustawienia.Wstaw poniżej zawartość pliku kopii i kliknij Import aby załadować opcję.JęzykCzytaj więcejLewoOdstępy pomiędzy znakamiLubisz Redux?Wysokość LiniiMusisz wywołać po akcji "plugins_loaded".Wersja MySQLImięNowy %sBiuletynNie znaleziono żadnego objektu tego typu.Nie wybrano plikuWył.Wł.OpcjeObjekt opcjiPanel opcji stworzony za pomocą %1$sLimit Pamięci PHPLimit Czasu PHPWersja PHPHasłoProszę czekaćProsimy, pomóż nam udoskonalić nasz panel poprzez zezwolenie nam na gromadzenie anonimowych statystyk używania, abyśmy wiedzieli jakie konfiguracje, wtyczki i motywy testować w celu zapewnienia kompatybilnościStrona PostówRozszerzenia ReduxRedux FrameworkRedux Framework - WsparcieRedux Framework - Status SystemuLista Zmian Redux FrameworkRedux Framework zawiera wbudowane demo.Generator ReduxInstancja Redux:Wersja ReduxRedux jest prostym, prawdziwie rozszerzalnym frameworkiem dla motywów i wtyczek WordPress'a.ZwykłyZdalne PobieranieZdalny WpisUsuńRepozytoriumResetuj WszystkoResetuj SekcjęPrawoSUHOSIN ZainstalowanyZapisz ZmianyDomyślne wartości sekcji zostały przywrócone!Wybierz Typ WsparciaWybierz Swój Typ WsparciaWybierz elementŚrodowisko SerweraInformacje o SerwerzeZaimportowano ustawienia.Ustawienia zostały zapisane!Ustawienia zostały zmienione, powinieneś je zapisać!Pokaż Objekt w konsoli JavascriptURL StronyRozmiarSlajdStandardowe czcionkiStatusStylSubskrybujPodzbioryWsparcieInformacje systemoweZespół ReduxWyrównanie TekstuOzdobienie TekstuPrzekształcenie TekstuURL strony domowej twojej witrynyDomyślna strefa czasowa dla twojego serwera Następujące katalogi i pliki są nadal zlokalizowane w Twoim katalogu Redux. Mogą one powodować błędy w Theme-Check.Ludzie, którzy tworzą Redux FrameworkBazowy URL twojej stronyURL deweloperów motywuMotyw, który testujesz posiada wbudowany %s. Zapraszamy Cię do przeczytania %sDokumentacji Theme-Check%s, aby zrozumieć niektóre ostrzeżenia, które zobaczysz z powodu Redux.Nieznana czynność została zastąpiona przez "%s"Wersja Redux Framework zainstalowanego na twojej stronie.MotywTo pole nie może być puste. Proszę podać wartość.To pole wymaga poprawnej wartości koloru.To pole musi zawierać poprawną datę.Ten panel demonstruje wiele cech Redux. Przed zgłębianiem tematu sugerujemy, abyś wzmożył tempo poprzez przejrzenie %1$s.TytułDoGóraPrzezroczysty URLNie udało się zmodyfikować wymaganych plików. Upewnij się, proszę, żeJednostkiNieznana czynność "%1$s" określona do %2$sZaładuj plikUżytkownikNazwa użytkownikaWersjaWersja %sZobacz %sOdwiedź stronę domową wtyczkiVisitedUWAGA! Wszystkie opcję zostaną nadpisane.Limit Pamięci WPWersja WPChcesz zyskać przewagę? Użyj %1$s. Utworzy dostosowany uniwersalny motyw lub samodzielny folder administracyjny wypełniony wszystkim co stanowi Redux (z pomocą Underscores i TGM). Oszczędź sobie bólu głowy i wypróbuj go już dzisiaj.Uwaga - Ten panel może nie działać prawidłowo bez włączonej obsługi Javascript!Witaj w Redux FrameworkWitaj w Redux Framework %sWitaj w Panelu Demonstracyjnym ReduxJakiego rodzaju użytkownikiem jesteś?Co NowegoSzerokośćOdstępy pomiędzy słowamiŚrodowisko WordPressCzekaj...Nie posiadasz wystarczających uprawnień, by wejść na tę stronę.Posiadasz zmiany, które nie są zapisane. Czy chciałbyś je teraz zapisać?Dokonane zmiany nie zostały jeszcze zapisane? Czy chcesz je zachować?Nie możesz wpisać kodu HTML do tego pola. Wszelkie znaczniki HTML zostaną usunięte.Nie możesz wpisać żadnych specjalnych znaków do tego pola. Wszystkie specjalne znaki zostaną usunięte.Dla tej opcji musisz podać listę wartości numerycznych oddzielonych przecinkami.Muisz podać wartość numeryczną dla tej opcji.Musisz podać poprawny URL.Musisz podać poprawny adres email.Twoje aktualne opcje zostaną zastąpione tymi ustawieniami. Czy chcesz kontynuować?Twoje aktualne ustawienia zostaną zastąpione tym zestawem opcji. Czy chcesz kontynuować?klikaniedotacjabłąd/błędów został(o) znaleziony(ch)!katalog rozszerzeńposiada odpowiednie uprawnienia odczytu/zapisu lub wprowadź poniżej swoje dane FTPhttp://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkjest dostępnyzostaw nam przychylną recenzję na WordPress.orgprzesuwanie myszą nadnasza dokumentacjaostrzeżenie/ostrzeżeń został(o) znalezione/znalezionych!redux/ReduxCore/languages/redux-framework-th.mo000066600000020756152143340100015640 0ustar00c4Lpq4  2 D T a h r .          + 2 9 H T _ k v |    U    % 5 : I N Y k o r z        , + 0 ? F L V b m 3s           U S s y ; E 3-Gu~Q9 F>b0-i$0-'$Ch<* ?&$?d9}' 0!0R*q! %0M m9z <  ($Gl! * <  I1S 9Vfy! jB U_rv Q=Sb'~!T ` J!h!%{!'!$!#N(,8aBF!D0@9+2c5SJI_`?CQ*>EVKY%\GUTW)<$]"-L' 3b[= R&./61Z7^;M OX 4H:AP Activate Demo ModeAdd MoreAdd/Edit GalleryAllAllow trackingAre you sure? Resetting will lose all custom values.Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDefaultDeleteDescriptionDeveloperDisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsFont FamilyFont colorFont familyFont styleFrom Getting StartedGoogle WebfontsHeightHintsIf you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLLeftLetter SpacingNameNewsletterNo media selectedOffOnOptionsOptions ObjectPasswordPlease WaitRedux ExtensionsRegularRemoveReset AllRightSave ChangesSettings Imported!Settings Saved!Settings have changed, you should save them!SizeStandard FontsStatusStyleSubscribeSystem InfoText AlignThemeThis field cannot be empty. Please provide a value.TitleTo TopURLUnitsUploadUserUsernameVersionVersion %sVisit plugin homepageWARNING! This will overwrite all existing option values, please proceed with caution!Welcome to the Redux Demo PanelWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You must provide a numerical value for this option.You must provide a valid URL for this option.donationerror(s) were found!extensions directoryour documentationProject-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Thai (http://www.transifex.com/projects/p/redux-framework/language/th/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: th Plural-Forms: nplurals=1; plural=0; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes เปิดใช้งานโหมดทดลองเพิ่มเติมเพิ่ม/แก้ไข คลังรูปภาพทั้งหมดอนุญาติการติดตามคุณแน่ใจไหม? การรีเซ็ตจะทำให้ค่าทั้งหมดหายไปไฟล์แนบพื้นหลังคลิปพื้นหลังพื้นหลังเริ่มต้นตำแหน่งพื้นหลังทำซ้ำพื้นหลังขนาดพื้นหลังรูปแบบขอบด้านล่างบันทึกการเปลี่ยนแปลงล้างคลังรูปภาพคลิ้กที่นี่เพื่อเปิดใช้งานตัวอย่างไฟล์ตั้งค่าปิดเครดิตปิดการใช้งานโหมดทดลองค่าหลักลบคำขยายความผู้พัฒนาปิดการใช้งานเลิกเสียไม่อนุญาติการติดตามอีเมล์แอดเดรสใช้งานขยายส่งออกการตั้งค่าตระกูลฟอนต์สีตัวอักษรรูปแบบตัวอักษรรูปแบบอักษรจากเริ่มต้นGoogle Webfontsความสูงคำใบ้หากคุณต้องการติดตามความเคลื่อนไหวของ Redux, โปรดติดตามรับจดหมายข่าวจากเรานำเข้านำเข้า/ส่งออกนำเข้าการตั้งค่านำเข้าจาก URLซ้ายการเว้นวรรคตัวอักษรชื่อจดหมายไม่มีสื่อที่ถูกเลือกปิดเปิดการตั้งค่าตั้งค่าวัตถุรหัสผ่านโปรดรอส่วนเสริม Reduxปกติลบออกเคลียร์ทั้งหมดขวาบันทึกการเปลี่ยนแปลงการบันทึกการตั้งค่า!การตั้งค่าเปลี่ยนเรียบร้อย, คุณควรบันทึกสิ่งนี้ขนาดรูปแบบอักษรมาตราฐานสถานะรูปแบบติดตามข้อมูลระบบแนวตัวอักษรธีมไม่สามารถปล่อยช่องว่างได้ โปรดใส่ค่าหัวข้อถึงด้านบนURLหน่วยอัปโหลดผู้ใช้ชื่อผู้ใช้รุ่นรุ่น %sเยี่ยมชมหน้าเว็บของปลั๊กอินคำเตือน! การกระทำนี้จะแก้ไขค่าที่มีอยู่, โปรดดำเนินการด้วยความระมัดระวังยินดีต้อนรับสู่แผงควบคุม Redux Demoความกว้างการเว้นวรรคคำกำลังทำงาน...คุณไม่มีสิทธิ์เข้าถึงหน้านี้การแก้ไขของคุณยังไม่ถูกบันทึก, ต้องการบันทึกเลยหรือไม่คุณสามารถใส่ได้แค่ตัวเลขเท่านั้นคุณต้องใส่ค่า URL ให้ถูกต้องบริจาคพบข้อผิดพลาด!แฟ้มส่วนเสริมเอกสารประกอบredux/ReduxCore/languages/redux-framework-fr_FR.mo000066600000114650152143340100016220 0ustar00Kt {d5^q5D%4j  )9 LY` hu }  .   ' < [ c ){  9  l!!!3!;!""" ."<" C"M"T" c" n" y" " " "" " " " " "" # #. #O# f#r######$$9%B%H%1[%'%Z%U&f&'$'4'C'T'Ed'B'h'EV(C(E(-&)]T)X)B *1N** *** * *C*[+`,v,2, ,,,, ,!,-&-*---5- D-e-.#.6.G.Y. h.t..... .d.NA//60 00 11$.1S1o11111%1222 2k2WG33}4 4 444 4 444 4455-5<5 O5[5n5,~55(;6d6m6r6x6666 666{K88<8 9 9 #9.9>9M9P9 $:{E:&:9:M";>p;@;%;<8<2<*=72=Ij=F=]=%Y>>1>>~Y?x?\Q@ @'@7@/AXJAAA.[B6B4B6B0-C^CJdC=C3C'!D IDyjDhDME>FDF4HF8}FF FF3FFG($GAMGGAG$G6G4H9HBH JHUH]HsHU{H HH H HIFIQ3JJK8KVKvKK K4KsK^L dLqL L;LFLEMK[MbML N3WN-N/NaN`KO*OOcPsP|PPPJPP,Q AQ,NQ{QQQmQ`(R?RUi\VV!W)WXX )X 4XAXaX:fXX@XWX6MYY$YY(Y YZ%>Z"dZ ZZZ ZZ ZZ[[G%[m[ t[[[[[+[%[-$\R\%e\;\ \ \;\ ]&]@] ]]2]; ^F^`^%e^^^ ^^^ ^^^__3_!F_h_z______$_` `=`O` k`y``&``aazbbb@b;b*cUcdddee5eSMeIe}eNifCfCf8@gRyggTNh=hhhhii*iX;iiFk3wk kk kk k-kl5l9lE4 z &XGY o |FtЏE!(2[)z0 ’BΒWWibv$a;49.nTT4G|  !!.P]lʗ,5 Vn't3vp m(-E\[xo/,%OAWI|FC0q!?G4(H uBVDPC k@Z+2$ =`_n :TdR+!&A)92.Y5<D@E>h"L-*=0 rG3Js# Q7&61 {SM?8 84.f )*1'U;F };6Kbc5^"KeN'aziy9BX]J$%I7>:Hlt, 3/#gjw<~%s - We recommend setting memory to at least 40MB. See: Increasing memory allocated to PHP%s version %s is out of date. The core version is %sYour panel has bundled outdated copies of Redux Framework template files – if you encounter functionality issues this could be the reason. Ensure you update or remove them.Activate Demo ModeActivate Development PluginsActiveActive PluginsAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Author URLAutomatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserBrowser InfoBuilderChangelogChild ThemeClear GalleryClick here to activate the sample config file.CloseCopied!Copy DataCopy Export URLCopy for SupportCreditsDatabase Table PrefixDeactivate Demo ModeDeactivate Development PluginsDefaultDefault Timezone is UTCDefault timezone is %s - it should be UTCDeleteDescriptionDetermines if PHP will display errors within the browser.DeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDisplays whether or not WordPress is in Debug Mode.Displays whether or not the current theme is a child theme.Do not allow trackingDocsDownload Data FileEmail addressEnableError: %sExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageFront Page DisplayGenerate a Support URLGenerate a Support URLGet SupportGet System ReportGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.Home URLHoverHow to Get SupportI am a developer, building a product using Redux.I am a user, using a pre-built product.If so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterIf you're modifying Redux Framework or a parent theme you didn't build personally, we recommend using a child theme. See: How to create a child themeImportImport / ExportImport OptionsImport from FileImport from URLIndicates if ajax based saving is enabled for this instance of Redux.Indicates if developer mode is enabled for this instance of Redux.Indicates if output flag for globally shutting off all CSS output is enabled for this instance of Redux.Indicates if the compiler flag is enabled for this instance of Redux.Indicates the installed Redux extensions and their version numbers.Information about the web server that is currently hosting your site.Information about web browser current in use.Input the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.Invalid security credential, please reload the page and try again.Is the server running in a localhost environment.LanguageLearn MoreLeftLetter SpacingLike Redux?Line HeightList of template files overriding the default Redux template files.Listed below are the Wordpress plugins and/or theme installed on your site that utilize Redux Framework. We do not directly support products created with our framework. It is the responsibility of the plugin or theme developer to support their work. You will need to contact the author(s) of the products listed below with your support questions.Localhost EnvironmentMax Upload SizeMust call in of after the "plugins_loaded" action.MySQL VersionNameNew %sNew in this ReleaseNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sOur core mantra at Redux is backwards compatibility. With hundreds of thousands of instances worldwide, you can be assured that we will take care of you and your clients.PHP Display ErrorsPHP Max Input VarsPHP Memory LimitPHP Post Max SizePHP Time LimitPHP VersionParent Theme Author URLParent Theme NameParent Theme VersionPasswordPermalink StructurePlease WaitPlease be sure to include for your developer - via cut and paste - the Support URL in the box below.Please copy and paste this information in your ticket when contacting support:Please helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Please proceed to the Redux Framework issue tracker and supply us with your support URL below. Please also provide any information that will help us to reproduce your issue.Posts PageRedux Data Directory WritableRedux ExtensionsRedux FrameworkRedux Framework - A Community EffortRedux Framework - ChangelogRedux Framework - ExtensionsRedux Framework - SupportRedux Framework - System StatusRedux Framework ChangelogRedux Framework StatusRedux Framework has an embedded demo.Redux Framework is the core of many products on the web. It is an option framework which developers use to enhance their products.Redux GeneratorRedux Instance: Redux VersionRedux and its extensions write data to the uploads directory. This directory must be writable.Redux is a simple, truly extensible options framework for WordPress themes and plugins.Redux is created by a community of developers world wide. Want to have your name listed too? Contribute to Redux.RegularRemote GetRemote PostRemoveRepoReset AllReset SectionRightSUHOSIN InstalledSave ChangesSection Defaults Restored!Select Support TypeSelect Your Support TypeSelect an itemServer EnvironmentServer InfoSettings Imported!Settings Saved!Settings have changed, you should save them!Should the developer not be responsive, read the following article before asking for support from us directly.Show Object in Javascript Console ObjectSite URLSizeSlideStandard FontsStatusStyleSubmit a Support RequestSubscribeSubsetsSuhosin is an advanced protection system for PHP installations. It was designed to protect your servers on the one hand against a number of well known problems in PHP applications and on the other hand against potential unknown vulnerabilities within these applications or the PHP core itself. If enabled on your server, Suhosin may need to be configured to increase its data submission limits.Supercharge your Redux experience. Our extensions provide you with features that will take your products to the next level.SupportSupport hash could not be generated. Please try again later.System InfoTeam ReduxText AlignText DecorationText TransformThank you for updating to the latest version! Redux Framework %s is a huge step forward in Redux Development. Look at all that's new.That URL slug is in use, please choose another. %s is open for use.The URL of your site's homepage.The amount of time (in seconds) that your site will spend on a single operation before timing out (to avoid server lockups)The current Reading mode of Wordpress.The current language used by WordPress. Default = EnglishThe current permalink structure as defined in Wordpress Settings->Permalinks.The currently selected page in where blog posts are displayed.The currently selected page which acts as the site's Front Page.The default timezone for your server.The following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The global_variable argument for this instance of Redux.The installed version of the current active theme.The installed version of the parent theme.The largest filesize that can be contained in one post.The largest filesize that can be uploaded to your WordPress installation.The maximum amount of memory (RAM) that your site can use at one time.The maximum number of variables your server can use for a single function to avoid overloads.The name of the current active theme.The name of the parent theme.The opt_name argument for this instance of Redux.The output_tag variable sets whether or not dynamic CSS will be generated for the customizer and Google fonts for this instance of Redux.The page parent variable sets where the options menu will be placed on the WordPress admin sidebar for this instance of Redux.The page permissions variable sets the permission level required to access the options panel for this instance of Redux.The page slug denotes the string used for the options panel page for this instance of Redux.The parent theme developers URL.The people that develop Redux FrameworkThe prefix structure of the current Wordpress database.The root URL of your site.The specified template path containing custom template files for this instance of Redux.The theme developers URL.The theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"The version of MySQL installed on your hosting server.The version of PHP installed on your hosting server.The version of Redux Framework installed on your site.The version of WordPress installed on your site.ThemeThere was a problem with your action. Please try again or reload the page.There was an error saving. Here is the result of your action:This field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.This variable set whether or not the menu is displayed as an admin menu item for this instance of Redux.This will provide to your developer all the information they may need to remedy your issue. This action WILL send information securely to a remote server. To see the type of information sent, please look at the Status tab.TitleTo To allow data saving, make %s writable.To get started, we will need to generate a support hash.TopTransparentURLUnable to modify required files. Please ensure thatUnderstanding the Status ReportUnitsUnknown action "%1$s" specified for %2$sUnsafe strings were found in your CSS and have been filtered out.UploadUsed to grab information from remote servers for updates updates.Used to send data to remote servers.Used when communicating with remote services with PHP.UserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!WP Debug ModeWP Memory LimitWP MultisiteWP VersionWant to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!We are an open source project used by developers to make powerful control panels.We recognize we are nothing without our community. We would like to thank all of those who help Redux to be what it is. Thank you for your involvement.Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat is Redux Framework?What type of user are you?What's NewWhether or not you have WordPress Multisite enabled.While some are built specificially for developers, extensions such as Custom Fonts are sure to make any user happy.WidthWord SpacingWordPress EnvironmentWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?Your panel has no fields. Nothing to save.Your server does not have fsockopen or cURL enabled - cURL is used to communicate with other servers. Please contact your hosting provider.by authorby %sclickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkis availableleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!wp_remote_get() failed. This is needed to get information from remote servers. Contact your hosting provider.wp_remote_post() failed. Many advanced features may not function. Contact your hosting provider.Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Franck Language-Team: French (France) (http://www.transifex.com/projects/p/redux-framework/language/fr_FR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fr_FR Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes %s - Nous recommandons de régler la mémoire au moins à 40MB. Voir : Augmenter la mémoire allouée à PHPLa version %s%s est obsolète. La version du noyau est %sVotre panneau a fourni des copies obsolètes des fichiers modèles Redux Framework – si vous rencontrez des problèmes de fonctionnalité, ceci pourrait en être la raison. Assurez-vous de les mettre à jour ou de les supprimer.Activer le mode de démonstrationActiver les extensions de développement ActifExtensions activéesAjouter %sAjouter plusAjouter ou modifier une galerieToutToutes les options par défaut ont bien été rétablies !Autoriser le suiviÊtes-vous sûr ? Réinitialiser supprimera toutes les données.Êtes-vous sûr ? Cela supprimera toutes les données personnalisées de cette section.Êtes-vous sûr ? Cela supprimera toutes les données.URL de l'auteurAction automatique effectuée : "%s"Image d’arrière-planLimites de coloration de l'arrière-planOrigine de l’arrière-planPosition d’arrière-planRépétition de l’arrière-planDimension de l’arrière-planSauvegarder la famille de policeLe style de bordureEn basNavigateurInfo navigateurConstructeurJournal des modificationsThème enfant.Vider la galerieCliquez ici pour activer le fichier de configuration de démonstration.FermerCopié !Copier les donnéesCopier l'URL d'ExportCopier pour le supportCréditsPréfixe de la table de la base de donnéesDésactiver le mode de démonstrationDésactiver les extensions de développement Valeur par défautLe fuseau horaire par défaut est UTCLe fuseau horaire par défaut est %s - Il devrait être UTCSupprimerDescriptionDétermine si PHP affichera les erreurs dans le navigateur.DéveloppeurMode Développeur activéSaviez-vous que nous avons des extensions, qui améliorent les fonctionnalités de Redux ? Visitez notre %1$s pour en savoir plus !DésactiverFermerAffiche si WordPress est en mode débogage ou non.Affiche si le le thème actuel est un thème enfant ou non.Ne pas autoriser le suiviDocsTélécharger le fichier de données.Adresse e-mailActiverErreur : %sÉlargirOptions d'ExportationExtensionsCouleur de la policeFamille de policesTaille de la policeSous-ensembles de policeVariante de policeStyle & Police de caractèresCouleur de policeFamille de policeScript de policeStyle de policeSous-ensembles de policeDePage d’accueilAffichage de la page d’accueilGénérer une URL de supportGénérer une URL de supportObtenir de l'aideObtenir le rapport systèmeMise en routePolices web GoogleHauteurAider nous à améliorer notre panneauCopier / télécharger les options actuelles ici. Conservez-le précieusement et l'utiliser comme une sauvegarde en cas de problème, ou l'utiliser pour restaurer les paramètres de cet ou un autre site.IndicesLes indices sont des info-bulles qui apparaissent quand %d touche l'icône de l'indice. Ils fournissent des informations supplémentaires sur le champ dans lequel ils apparaissent. Ils peuvent être %d en utilisant le lien ci-dessous.URL de l'accueilSurvolComment obtenir du supportJe suis un développeur construisant un produit utilisant Redux.Je suis un utilisateur utilisant un produit pré-construit.Si c'est le cas %1$s, merci de faire un geste pour nous avec une %2$s qui nous permettra de poursuivre le développement de Redux.Si vous souhaitez savoir tout ce qui concerne Redux, abonnez-vous à notre newsletterSi vous modifiez le Framework Redux ou un thème parent que vous ne avez pas construit personnellement, nous recommandons d'utiliser un thème enfant. Voir : Comment créer un thème enfantImporterImporter / ExporterOptions d'importationImporter depuis un fichierImporter depuis une URLIndique si la sauvegarde basée sur ajax est activée pour cette instance de Redux.Indique si le mode développeur est activé pour cette instance de Redux.Indique si le drapeau de sortie pour arrêter globalement toutes les sorties de CSS est activé pour cette instance de Redux.Indique si le drapeau du compilateur est activé pour cette instance de Redux.Indique les extensions Redux installés et leur numéro de version.Information surle serveur web qui héberge actuellement votre site.Information sur le navigateur web actuellement utilisé.Importer URL à l'option poste d'un autre site. Appuyez sur Importer pour charger.Indiquez votre fichier de sauvegarde ci-dessous. Puis appuyez sur Importer pour restaurer vos options partir de cette sauvegarde.Certificat de sécurité invalide, veuillez recharger la page et essayer à nouveau.Est-ce que le serveur fonctionne dans un environnement local.LangueEn savoir plusA gaucheEspacement des lettresVous aimez Redux ?Hauteur de ligneListe des fichiers de modèle surchargeant les fichiers de modèle par défaut de Redux.Voici ci-dessous la liste des extensions et / ou thèmes Wordpress installés sur votre site qui utilisent Redux Framework. Nous ne fournissons pas directement de support sur les produits créés avec notre framework. Il est de la responsabilité du développeur de l'extension ou du thème de supporter leur travail. Vous aurez besoin de contacter (les) l'auteur(s) des produits énumérés ci-dessous avec vos questions de support.Environnement local Taille max de mise en ligneDoit être appelé après l'action"plugins_loaded".Version MySQLNomNouvel %sNouveau dans cette versionNewsletterAucun élément de ce type n'a été trouvé.Aucun média selectionnéOffOnChoixChoix ObjetPanneau d'options créé avec %1$sNotre noyau mantra dans Redux est de compatibilité ascendante. Avec des centaines de milliers de cas dans le monde entier, vous pouvez être assuré que nous allons prendre soin de vous et vos clientsAffichage des erreurs PHPPHP Max Input VarsLimite de mémoire PHPPHP taille maximale d'envoiLimite de temps PHPVersion PHPURL de l'auteur du thème parentNom du thème parentVersion du thème parent.Mot de passeStructure du permalienVeuillez patienter...Merci de vous assurez d'inclure pour votre développeur - via copier-coller - l'URL de support dans la case ci-dessous.Veuillez copier et coller cette information dans votre ticket lorsque vous contactez le support :S'il vous plaît aider nous à améliorer notre panel en nous permettant de recueillir des informations anonymes d'utilisation afin que nous sachions quelles configurations, extensions et thèmes nous devons tester pour assurer une parfaite compatibilité.Veuillez vous rendre dans le gestionnaire d'incident Redux Framework et nous fournir votre URL de support ci-dessous. Merci de nous fournir également toute information qui nous aidera à reproduire votre problème.Page des articlesAccessibilité en écriture du répertoire de données ReduxExtensions ReduxRedux FrameworkRedux Framework - Un effort communautaireRedux Framework - Journal des modificationsRedux Framework - ExtensionsRedux Framework - SupportRedux Framework - Statut systèmeJournal des modifs de Redux FrameworkStatut Redux FrameworkRedux Framework a une démonstration intégrée.Redux Framework est au cœur de nombreux produits sur le web. C'est un framework d'option que les développeurs utilisent pour améliorer leurs produits.Redux GeneratorInstance de Redux :Version de ReduxRedux et ses extensions écrivent des données dans le répertoire uploads. Ce répertoire doit être accessible en écriture.Redux est un simple, vraiment modifiable framework d'options pour les thèmes et extensions de WordPress.Redux est créé par une communauté de développeurs dans le monde entier. Vous voulez également avoir votre nom inscrit ?Contribuer à Redux.RégulierGet distantPost distantSupprimerRepoTout réinitialiserRéinitialiser la sectionÀ droiteSUHOSIN installéEnregistrer les modificationsToutes les sections par défaut ont bien été rétablies.Sélectionner le type de supportSélectionnez votre type de supportSélectionner un élémentEnvironnement serveurInfo serveurRéglages importés !Réglages enregistrés !Les réglages ont changés, vous devriez les enregistrer !Si le développeur n'est pas réactif, lisez l' article suivant avant de nous demander directement du support.Afficher l'objet dans la console JavascriptURL du siteTailleGlissementPolices standartsStatutStyleEnvoyer une demande de supportAbonnez-vousSous-ensemblesSuhosin est un système de protection avancé pour les installations PHP. Il a été conçu pour protéger vos serveurs d'une part contre un certain nombre de problèmes bien connus dans les applications PHP et d'autre part contre de potentielles vulnérabilités inconnues au sein de ces applications ou du noyau de PHP lui-même. S'il est activé sur votre serveur, Suhosin peut avoir besoin d'être configuré pour augmenter ses limites de soumission de données.Dynamisez votre expérience Redux. Nos extensions vous fournissent des fonctionnalités qui enverront vos produits au niveau suivant.AideLe code de support n'a pas pu être généré. Veuillez réessayer plus tard.Infos systèmeTeam ReduxAlignement du texteDécoration du texteTransformation du texteMerci pour la mise à jour vers la dernière version ! Redux Framework %s est un énorme pas en avant dans le développement Redux. Regardez tout ce qui est nouveau.Cet identifiant d'URL est utilisé, veuillez en choisir un autre. %s est disponible pour l'utiliser.L'URL de la page d'accueil de votre site.La durée (en secondes) que votre site consacre à une seule opération avant son interruption (pour éviter que le serveur boucle)Le mode de lecture actuel de WordPress.Le langage actuellement utilisé par WordPress. Par défault = anglaisLa structure courante du permalien est tel que défini dans Wordpress Réglages -> Permaliens.La page actuellement sélectionnée dans laquelle les articles du blog sont affichés.La page actuellement sélectionnée qui agit comme page d’accueil du site.Le fuseau horaire par défaut de votre serveur.Les dossiers et fichiers suivants sont toujours situés dans votre dossier Redux. Cela peut causer des erreurs lors du Theme-Check.L'argument global_variable pour cette instance de Redux.La version installée du thème actuellement activé.La version installée du thème parent.La plus grande taille de fichier qui peut être contenue dans un article.La plus grande taille de fichier qui peut être mis en ligne sur votre installation de WordPress.La quantité maximum de mémoire (RAM) que votre site peut utiliser en même temps.Le nombre maximum de variables que votre serveur peut utiliser pour une seule fonction pour éviter les surcharges.Le nom du thème actuellement activé.Le nom du thème parent.L'argument opt_name pour cette instance de Redux.La variable output_tag définie si le CSS dynamique sera généré pour l'outil de personnalisation et les polices Google pour cette instance de Redux.La page des ensembles de variable parent lorsque le menu d'options sera mis sur la colonne latérale de l'admin WordPress pour cette instance de Redux.La page de variable d'autorisations définit le niveau d'autorisation requis pour accéder au panneau d'options pour cette instance de Redux.La page identifiant désigne la chaîne utilisée pour la page du panneau des options de cette instance de Redux.URL des développeurs du thème parentLes personnes qui développent Redux FrameworkLa structure du préfixe de la base de données de WordPress.L'URL racine de votre site.Le chemin de modèle spécifié contenant des fichiers de modèles personnalisés pour cette instance de Redux.URL du développeur du thème.Le thème que vous testez a %s d'incorporé. Nous vous invitons à lire la %sDocumentation du Theme-Checker%s pour comprendre certains avertissements que vous pourrez avoir à cause de Redux.L'action inconnue a été remplacée par "%s"La version de MySQL installée sur le serveur de votre hébergement.La version de PHP installées sur votre serveur d'hébergement.Las version de Redux Framework installée sur votre site.La version de WordPress installée sur votre site.ThèmeIl y a eu un problème avec votre action. Veuillez essayer de recharger la page.Il y a eu une erreur en sauvegardant. Voici le résultat de votre action :Ce champ ne peut pas être vide. Veuillez saisir une valeur.Ce champ doit contenir une valeur de couleur valide.Ce champ doit contenir une date valide.Cet écran vous montre les nombreuses fonctionnalités de Redux. Mais avant d'allez plus loin, nous vous proposons d'examiner rapidement %1$s.Cette variable définie si le menu s'affiche ou comme un élément du menu d'administration de cette instance de Redux.Cela fournira à votre développeur toutes les informations dont il pourrait avoir besoin pour remédier à votre problème. Cette action VA ENVOYER des informations en toute sécurité sur un serveur distant. Pour voir le type d'information envoyé, veuillez consulter l'onglet État.TitrePourPour permettre la sauvegarde des données, rendez %s accessible en écriture.Pour commencer, nous aurons besoin pour générer un code de support. En hautTransparentURLImpossible de modifier les fichiers requis. Veuillez vérifier qu'ils soient modifiablesComprendre le rapport de statutUnitésAction inconnue "%1$s" demandée pour %2$sDes chaînes dangereuses ont été trouvés dans votre CSS et ont été filtrées.TéléchargerUtilisé pour récupérer des informations depuis des serveurs distants pour les mises à jour de mises à jour.Utilisé pour envoyer des données vers des serveurs distants.Utilisé lors des communications avec les services distants avec PHP.UtilisateurNom d'utilisateurVersionVersion %sAfficher l’%sAller sur le site de l’extensionVisitéATTENTION! Toutes les valeurs optionnelles existantes seront écrasées. Soyez prudent !Mode débogage WPLimite de mémoire WPWP MultisiteVersion WPEnvie de démarrer rapidement ? Utilisez %1$s. Il créera un thème boilerplate personnalisé ou un dossier admin complet qui contiendra tout Redux (avec l'aide de TGM et Underscores). Epargnez-vous des maux de tête inutiles et essayez-le dès maintenant !Attention - Ce panneau d'options ne fonctionnera pas sans Javascript !Nous sommes un projet open source utilisé par les développeurs pour fabriquer des panneaux de contrôle puissants.Nous reconnaissons que nous ne sommes rien sans notre communauté. Nous tenons à remercier tous ceux qui aident Redux à être ce qu'il est. Merci pour votre implication.Bienvenue dans Redux FrameworkBienvenue dans Redux Framework %sBienvenue sur l'écran de démo de ReduxQu'est-ce que Framework ?Quel type d'utilisateur êtes-vous ?Quoi de neuf ?Si vous avez activé WordPress Multisite ou non.Alors que certains sont construits spécifiquement pour les développeurs, les extensions telles que Custom Fonts sont sûr de faire plaisir à n'importe quel utilisateur.LargeurEspacement des motsEnvironment WordPressEn cours...Vous n'avez pas les droits suffisants pour accéder à cette page.Vous avez des modifications non enregistrées. Voulez vous les enregistrer maintenant ?Vous avez des modifications non enregistrées. Voulez vous les enregistrer maintenant ?Vous ne devez pas entrer de code HTML dans ce champ. Toutes les balises HTML ont été supprimés.Vous ne devez pas entrer des caractères spéciaux dans ce champ. Tous les caractères spéciaux ont été supprimés.Vous devez fournir une liste séparée par des virgules de valeurs numériques pour cette option.Vous devez fournir une valeur numérique pour cette option.Vous devez fournir une URL valide pour cette option.Ce champ nécessite une adresse e-mail valide.Vos options vont être remplacées par de nouvelles valeurs. Voulez vous continuer ?Vos options vont être remplacées par de nouvelles valeurs. Voulez vous continuer ?Votre panneau n'a pas de champ. Rien à sauvegarder.Votre serveur n'a pas fsockopen ou cURL activé - cURL est utilisé pour communiquer avec d'autres serveurs. Veuillez contacter votre hébergeur.par %sen cliquantFaire un donDes erreurs ont été trouvées !répertoires des extensionsa les bonnes autorisations en lecture/écriture ou entrez vos informations de FTP ci-dessous.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkest disponibleLaissez-nous une critique favorable sur WordPress.orgau passage de la sourisnotre documentationDes avertissements ont été trouvés !wp_remote_get() a échoué. C'est nécessaire pour obtenir des informations à partir des serveurs distants. Contactez votre hébergeur.wp_remote_post() a échoué. Beaucoup de fonctions avancées peuvent ne pas fonctionner. Contactez votre hébergeur.redux/ReduxCore/languages/redux-framework-fi.mo000066600000011167152143340100015617 0ustar00D<a\" $(>Rdk{    5 = IUd"   $ - @ N h o u    &        # = H ;N [ '    6AGNW^el   !$5Ziqu#{  =DJ]btz#   (4;;/ 034":<&B,;A->* %#C'1=279 85?.6$ ()D+!@%s → Add NewActiveAdd-on plugins are available that greatly extend the default functionality of Easy Digital Downloads. There are extensions for payment processors, such as Stripe and PayPal, extensions for newsletter integrations, and many, many more.Additional Display OptionsAdditional UpdatesAllBackground AttachmentBackground PositionBackground RepeatBottomBuy Now ButtonsChange the Number of ColumnsChangelogCloseCopyCreditsDefaultDeleteDescriptionDisableDismissDocumentationDownloadDownload FilesEmail addressEnableExtensions for EverythingFeatureFont FamilyFont familyFull ChangelogGet Alerted About New TutorialsGet Notified of Extension ReleasesGetting StartedHeightImportLeftNeed Even Faster Support?Need Help?No valid changlog was found.OffOver 250 ExtensionsPasswordPhenomenal SupportProduct PricePurchase Buttons AnywhereRemoveRightSave ChangesSizeStay Up to DateStyleSubscribeSystem InfoThe [purchase_link] ShortcodeTitleTopURLUploadUsernameVersion %sView %sView the Full ChangelogVisit the Extension StoreWhat's NewWidthYou do not have sufficient permissions to access this page.Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-02-03 22:24:22+00:00 PO-Revision-Date: 2015-03-10 15:34+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Finnish (http://www.transifex.com/projects/p/redux-framework/language/fi/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fi Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes %s → Lisää uusiAktiivinenEasy Digital Downloads -lisäosaan on saatavilla paljon laajennoksia (add-ons), jotka mahdollistavat mm. maksuyhteydet, uutiskirjeet ja paljon muuta.LisäasetuksetLisäpäivityksetKaikkiKuvan asetteluSijaintiKuvan toistoAlasOsta nyt painikkeetMuuta sarakkaiden lukumäärääMuutoslokiSuljeKopioiTekijätOletusPoistaKuvausPoista käytöstäSuljeDokumentaatioLatausLataa tiedostotSähköpostiosoiteSalliLaajennoksia joka lähtöönOminaisuudetKirjasinFontin tyyliKoko muutoslokiSaa muistutuksia uusista ohjeistaSaat ilmoituksia uusista lisäosistaAloita tästäKorkeusTuoVasenTarvitsetko nopeampaa tukipalvelua?Tarvitsetko apua?Muutoslokia ei löytynyt.Pois päältäYli 250 laajennostaSalasanaUskomaton tukipalveluTuotteen hintaOstopainikkeen saa mihin tahansaPoistaOikeaTallenna muutoksetKokoPysy ajan tasallaTyyliLiityJärjestelmäinfo[purchase_link]-lyhytkoodiOtsikkoYlösURLSiirräKäyttäjätunnusVersio %sNäytä %sNäytä koko muutoslokiVieraile verkkokaupassa.Mitä uuttaLeveysSinulla ei ole tämän sivun saantiin tarvittavaa oikeutta.redux/ReduxCore/languages/redux-framework-it_IT.mo000066600000035667152143340100016244 0ustar00| hi|5D!4f  %5 HU\ d n.|) & 2<lS   ! , 8 B O\ t     ZUM]X7  2  !6HLOW f  %    *ETg,w(   #.>.M|3' yy (  UjFO   ;FTEKb-L3- /? ao ` 2!;!P!Je! !,!!!i"}%%% %%%%'%&B7&Mz&M& ' !'B' U'c'r'''' ''' ''=(E(L(T(r( (6(( ( (() ))) ))) )) **(*;*P*k*~********+ +,+?+'G+o+ ,,,^,g-----c-h.....4.. // //"/R/k/r/y// //// /// 000'0$151 =1G1 L1Z1j1q11-11111 2$;2`2 i2t2 {222 2 22222223:3C?343)33g4n4p4 u444.44 4 44 4 445l%55Th666,6'7 :7D7 V74c7=7=7Y8jn8Z8<497q9C9`9gN: :::Y:H;3W;;;2& R-Y_ lA7:qQU|d6~?+(^}O$sXzHv%ijxLc\a4'I`nCVZGt8u[@NrKh5<kpM)#SD30=*y PomF,fJ;{/T9b" ]1g>.!EewWBActivate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Author URLAutomatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDefault timezone is %s - it should be UTCDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingDocsEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGet System ReportGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHome URLHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.MySQL VersionNameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP Max Input VarsPHP Post Max SizePHP Time LimitPHP VersionPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux ExtensionsRedux FrameworkRedux Framework has an embedded demo.Redux GeneratorRegularRemoveRepoReset AllReset SectionRightSUHOSIN InstalledSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSite URLSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoText AlignText DecorationText TransformThe unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?donationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.is availableleave us a favorable review on WordPress.orgour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Italian (Italy) (http://www.transifex.com/projects/p/redux-framework/language/it_IT/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: it_IT Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Attivare la modalità DemoAttiva Plugin di SviluppoAttivoAggiungi %sAggiungi altroAggiungi / Modifica GalleriaTuttiTutti i valori di default ripristinati!Permetti tracciabilitàSei sicuro ? Resettare eliminerà tutte le impostazioni personali.Sei sicuro ? Resettare eliminerà tutti i valori personali in questa sezione.Sei sicuro ? Resettare eliminerà tutti i valori personali che hai impostato.URL autoreAzione automatica eseguita: "%s"Fisso o scorrevoleTaglio SfondoOrigine SfondoPosizione dello sfondoRipetizione dello sfondoDimensione SfondoFamiglia carattere di BackupStile bordoBassoBrowserChangelogCancella GalleriaClicca qui per attivare il file di configurazione di esempio.ChiudiCreditsDisattivare la Modalità DemoDisattiva Plugin di SviluppoPredefinitoIl fuso orario predefinito è %s - dovrebbe essere UTCCancellaDescrizioneSviluppatoreModalità sviluppatore attivaSapevi che abbiamo delle estensioni che possono migliorare le potenzialità di Redux? Visita il nostro %1$s per saperne di più!DisabilitaRimuoviNon permettere tracciabilitàDocumentiIndirizzo EmailAbilitaEspandereEsporta OpzioniEstensioniColore carattereFamiglia carattereDimensione carattereSottoinsiemi del carattereVariante caratterePeso e Stile carattereColore carattereFamiglia di caratteriScript di fontStile carattereSottoinsiemi carattereDaPagina inizialeGenera report di sistemaCome iniziareWebFonts di GoogleAltezzaAiutaci a migliorare il nostro PannelloQui è possibile copiare / scaricare le impostazioni delle opzioni correnti. Tenetele al sicuro poichè le si può utilizzare come backup se qualcosa dovesse andare storto, oppure lo si può utilizzare per ripristinare le impostazioni su questo sito (o di qualsiasi altro sito).SuggerimentiURL HomeHover (al passaggio del mouse)Se è così, per favore %$1$s e considera di fare una %2$s per sostenere lo sviluppo di Redux.Se vuoi essere aggiornato su tutto ciò che riguarda Redux, per favore iscriviti alla nostra newsletterImportaImporta / EsportaImporta OpzioniImporta da URLInserire l'URL delle opzioni di un altro sito e premi Importa per caricare le opzioni da quel sito.Inserisci il file di backup qui sotto e premi Importa per ripristinare le opzioni del sito da un backup.SinistraSpaziatura lettereTi piace Redux?Altezza di lineaDeve essere chiamata dopo la action "plugins_loaded"Versione MySQLNomeNuovo %sNewsletterNon sono stati trovati elementi di questo tipo.Nessun media selezionatoSpentoAccesoOpzioniOggetto OpzioniPannello opzioni creato con %1$sPHP Max Input VarsPHP Post Max SizePHP Time LimitVersione PHPPasswordAttendere PregoPer favore aiutaci a migliorare il nostro pannello permettendoci di raccogliere statistiche anonime sull'uso in modo da sapere quali configurazioni, plugin e temi testare per garantire la compatibilità.Estensioni di ReduxRedux FrameworkRedux Framework ha un demo incorporato.Generatore ReduxNormaleRimuovereRepoResetta tuttoResetta sezioneDestraSUHOSIN installatoSalva ImpostazioniValori di default della sezione ripristinati!Seleziona un elementoImpostazioni importate!Impostazioni salvate!Le impostazioni sono cambiate, dovresti salvarle!Mostra oggetti in Javascript ConsoleURL sitoDimensioneScorriFont standardStatoStileIscrivitiSottoinsiemiSupportoInformazioni di sistemaAllineamento TestoDecorazione testoTrasformazione TestoL'azione sconosciuta è stata rimpiazzata con "%s"TemaQuesto campo non può essere vuoto. Per favore inserisci un valore.Questo campo deve essere un valore di colore valido.Questo campo deve essere una data valida.Questo pannello dimostra le tante funzionalità di Redux. Prima di approfondire, suggeriamo di prendere confidenza esaminando %1$s. TitoloAAltoTrasparenteURLUnitàAzione sconosciuta "%1$s" specificata per %2$sCaricaUtilizzatoreNome utenteVersioneVersione %sVisualizza %sVisita la homepage del pluginVisitatoATTENZIONE! Questo sovrascriverà tutti i valori delle opzioni esistenti, si prega di procedere con cautela!Vuoi un vantaggio iniziale? Usa %1$s. Creerà un tema boilerplate o una cartella di amministrazione con tutto ciò che riguarda Redux (con l'aiuto di Underscores e TGM). Risparmiati un mal di testa e provalo oggi.Attenzione - Questo pannello opzioni non funzionerà correttamente senza javascript!Benvenuti in Redux FrameworkBenvenuto in Redux Framework %sBenvenuti nel pannello dimostrativo di ReduxCosa c'è di nuovoLarghezzaSpaziatura parolaLavorando...Devi farti autorizzare per accedere a questa pagina.Ci sono delle modifiche non ancora salvate. Salvarle adesso ?Ci sono delle modifiche non ancora salvate. Salvarle adesso ?Non devi inserire alcun codice HTML in questo campo, tutti i tag HTML sono stati rimossi.Non devi inserire alcun carattere speciale in questo campo, tutti i caratteri speciali sono stati rimossi.Per questa opzione è necessario fornire un elenco di valori numerici separato da virgole.È necessario fornire un valore numerico per questa opzione.È necessario fornire un URL valido per questa opzione.È necessario fornire un indirizzo email valido per questa opzione.Le tue impostazioni saranno sostituite con i valori di questa pre-impostazione. Vuoi procedere ?Le tue personalizzazioni saranno sovrascritte con i valori di questa pre-impostazione. Vuoi Procedere ?donazioneerrore(i) trovati!directory delle estensioniabbia i permessi di lettura/scrittura adeguati o inserisci le tue informazioni FTP sotto.è disponibilelasciaci una recensione favorevole su WordPress.orgla nostra documentazioneavviso(i) trovati!redux/ReduxCore/languages/redux-framework-nl_NL.mo000066600000027342152143340100016225 0ustar00\ ()<Y`ov5D45 j    ".0_em   $ 3 > I U _ l w     (8 ALQ ` l2x  !  "CV gs |%WQY ` jx ~, & ,6> F R ]h'x.3'  1RX\ `lp(v UFC   ; FHEKb!3-/a`xJK,e,ml  J Yg J # !0!C!X!k!!! !!! ! !6! """3" P" Z" f" s"" """" " " " " # # # !#.# A# L#W#h#{# ## ###### ## $$0$ 5$@$F$ ]$ k$:w$ $$$ $&$%%% % '%05%f%y% % %%%%%*%&Z+&& &&&&&&&'$'8='v'~'''' '' '' ''')(),(V(<\(+(%(((( () )/)D) M)W)f) m)w)))_)F*L*g***** *9*E+E_+G+^+5L,0,3,S,S;- ---P-.,(.5U.!..".t8|zQ{&M%=k@*oU`ls' 1<q0NfL wC]>!X#6 ZV d2IcO-SG4"$5iDART,+h3g7:b( a~9mvPr/B} ?F;u\yYH_pex.[nj)EK^WJActivate Demo ModeActivate Development PluginsActiveActive PluginsAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDisableDismissDo not allow trackingDocsEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont colorFont familyFont styleFont subsetsFrom Front PageGet SupportGetting StartedGoogle WebfontsHeightHelp improve Our PanelHintsHoverImportImport / ExportImport OptionsImport from URLLanguageLearn MoreLeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.MySQL VersionNameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP Display ErrorsPHP Memory LimitPHP VersionPasswordPlease WaitRedux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!SizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationThe people that develop Redux FrameworkThe unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!has the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/redux-framework/language/nl_NL/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: nl_NL Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Demomodus activerenOntwikkelplugins activerenActiefActieve plugins%s toevoegenMeer toevoegenGalerij toevoegen/bewerkenAllesAlle standaarden hersteld!Tracking toestaanWeet je het zeker? Door het herstellen verlies je alle aangepaste waarden.Weet je het zeker? Door het herstellen verlies je alle aangepaste waarden in deze sectie.Weet je het zeker? Door het herstellen verlies je alle aangepaste waarden.Automatische actie uitgevoerd: "%s"AchtergrondbijlageAchtergrondoorsprongAchtergrondpositieAchtergrondherhalingAchtergrondgrootteBack-up lettertypeRandstijlOnderBrowserChangelogGalerij legenKlik hier om het voorbeeld-configbestand te activeren.SluitenCreditsDemomodus deactiverenOntwikkelplugins deactiverenStandaardVerwijderenBeschrijvingOntwikkelaarOntwikkelaarsmodus ingeschakeldUitschakelenNegerenTracking niet toestaanDocsE-mailadresInschakelenUitklappenExportoptiesExtensiesTekstkleurLettertypeTekengrootteSubsets lettertypeTekstkleurLettertypeLettertype-stijlSubsets lettertypeVanVoorpaginaOntvang ondersteuningAan de slagGoogle WebfontsHoogteHelp ons paneel te verbeterenHintsHoverImporterenImporteren/exporterenImportoptiesVanaf URL importerenTaalMeer wetenLinksTussenruimte karaktersDol op Redux?RegelhoogteMoet worden opgeroepen in of na de "plugins_loaded"-actie.MySQL-versieNaamNieuw %sNieuwsbriefGeen items van dit type zijn gevonden.Geen media geselecteerdUitAanOptiesOpties objectPaneel met opties aangemaakt met behulp van %1$sPHP Display ErrorsPHP Memory LimitPHP VersionWachtwoordEven wachten a.u.b.Redux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework heeft een ingebouwde demo.Redux GeneratorRedux is een simpel, echt uitbreidbare opties framework voor WordPress-thema's en plugins.RegulierVerwijderenAlles herstellenSectie herstellenRechtsWijzigingen opslaanSectiestandaarden hersteld!Selecteer een itemInstellingen geïmporteerd!Instellingen opgeslagen!Instellingen zijn gewijzigd, je zou deze moeten opslaan!GrootteSlideStandaardlettertypenStatusStijlAbonnerenSubsetsOndersteuningSysteeminformatieTeam ReduxTekstuitlijningTekstdecoratieDe mensen die Redux Framework ontwikkelenDe onbekende actie is vervangen door "%s"ThemaDit veld kan niet leeg zijn. Geef alsjeblieft een waarde op.Dit veld moet een geldige kleurwaarde zijn.Dit veld moet een geldige datum zijn.TitelNaarBovenTransparantURLEenheidOnbekende actie "%1$s" gespecificeerd voor %2$sUploadenGebruikerGebruikersnaamversieVersie %s%s tonenBezoek homepagina van pluginBezochtWAARSCHUWING! Dit zal alle huidige optiewaarden overschrijven, ga alsjeblieft voorzichtig door!Waarschuwing- dit optiespaneel zal niet goed werken zonder javascript!Welkom bij Redux FrameworkWelkom bij Redux Framework %sWelkom bij het Redux DemopaneelWat is er nieuwBreedteTussenruimte woordenVerwerken...Je hebt onvoldoende rechten voor toegang tot deze pagina.Je hebt wijzigingen die niet zijn opgeslagen. Wil je deze nu opslaan?Je hebt wijzigingen die niet zijn opgeslagen. Wil je deze nu opslaan?Je moet geen HTML in dit veld invoeren, alle HTML-tags zijn verwijderd.Je moet geen speciale karakters in dit veld invoeren, alle speciale karakters zijn verwijderd.Je moet een numerieke waarde voor deze optie opgeven.Je moet een geldige URL voor deze optie opgeven.Je moet een geldige e-mail opgeven voor deze optie.Je huidige opties worden vervangen met de waarden van deze preset. Wil je doorgaan?Je huidige opties worden vervangen met de waarden van deze preset. Wil je doorgaan?aanklikkendonatiefout(en) is/zijn gevonden!de correcte lees/schrijf-rechten heeft of voer jouw FTP-informatie hieronder in.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworklaat een gunstige beoordeling achter op WordPress.orgdoor het met de muis te gaan overonze documentatiewaarschuwing(en) is/zijn gevonden!redux/ReduxCore/languages/redux-framework-de_DE.mo000066600000034256152143340100016165 0ustar00d 89Lip5D4> s ") 1 ;.Ix~  lLT\ r           )6 <GWgnRXZ^U&5]EX  2([` g!r  %  % /= CPkz,(  $, 4 @K['j.3' #yD (   (3;QUYF 4? E R;]FEK&brL3"-V/a`w,j k#######)#$@)$Rj$@$)$!(%J%[%n%%%% %%% %%D% 9& D&P&l&&& & && O' \'f'~' ' '' ' ' '' '' ( %( 2( =( K( W(e( i(t((( (())r)kP* ****x+z+&,,,;, O,8[,,, ,.,,,,,,-.- 7-D-./.?.;Y... ... ...6.3/F/!`/</+////0 0#0 ,0:0B0T0d0u000.00;00*1*[1:1 111 11 1,1 2'2 02=2 E2 P2[2s2[{22Y3.4"N4 q4 44 44H4M 5MX5M5Z5YO6@6;6>&7\e7\78&8>8(\8 885~b|T}&BoP%?mD)qsGnu' 0=/QgO y2^@!X#8 [ $e3Md>NR,1VK6"H7jAE`UW+*i4h9;cZ a:lwSt.F CJ<v]{YLxrfz-\pk(I_Activate Demo ModeActivate Development PluginsActiveActive PluginsAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoText AlignText DecorationText TransformThe people that develop Redux FrameworkThe unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?donationerror(s) were found!extensions directoryleave us a favorable review on WordPress.orgour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: German (Germany) (http://www.transifex.com/projects/p/redux-framework/language/de_DE/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: de_DE Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktiviere den Demo-ModusEntwickler-Plugins aktivierenAktivAktive PluginsMehr HinzufügenGallerie hinzufügen/bearbeitenAlleAlle Voreinstellungen wieder hergestellt!Tracking erlaubenSind Sie sicher? Alle ihre Einstellungen gehen dadurch verloren.Sind Sie sicher? Alle ihre Einstellungen in diesem Bereich gehen dadurch verloren.Sind Sie sicher? Alle ihre Einstellungen gehen dadurch verloren.Automatisierte Action durchgeführt: "%s"Scroll-Verhalten des HintergrundsHintergrund-ClipHintergrund-QuelleHintergrund-PositionHintergrund-WiederholungHintergrundgrößeBackup-SchriftartRahmenstilUntenBrowserChangelogGallerie leerenKlicken Sie hier um die Beispiel-Konfigurations-Datei zu aktivieren.SchliessenMitwirkendeDeaktiviere den Demo-Modus.Entwickler-Plugins deaktivierenStandardeinstellungenLöschenBeschreibungEntwicklerWusstest du schon, dass wir Erweiterungen anbieten, die die Funktionen von Redux stark verbessern? Besuche unsere %1$s um mehr zu erfahren.DeaktivierenVerwerfenTracking nicht erlaubenE-Mail-AdresseAktivierenAusdehnenExport-EinstellungenErweiterungenSchriftfarbeSchriftartSchriftgrößeZeichensätzeSchriftvarianteSchriftstärke & -stilSchriftfarbeSchriftartSchriftsystemSchriftstilZeichensätzeVonStartseiteJetzt loslegenGoogle WebfontsHöheHilf unserer Panel zu verbessernHier kannst du deine derzeitigen Eingestellten Optionen kopieren/herunterladen. Verwahre es sicher auf, da es zur Wiedehrerstellung verwendet werden kann falls etwas falsch abläuft, or du deine Einstellungen auf dieser oder irgendeiner anderen Seite wiederherstellen willst.HinweiseHoverWenn ja, bitte %1$s und unterstütze uns mit einer %2$s, damit wir Redux auch in Zukunft weiterentwickeln können.Wenn du über Redux auf dem Laufenden gehalten werden möchtest, bitte melde dich bei unserem Newsletter anImportierenImport / ExportImport-EinstellungenImportieren von URLFüge die URL von einer anderen Seiten Optionen hinzu und drücke Importieren um die Optionen von dieser Seite zu laden.Füge deine Backup/Sicherungsdatei Datei unten ein und drücke auf Exportieren damit die Einstellungen deiner Seite aus dem Backup/ der Sicherung wiederhergestellt werden.LinksZeichenabstandGefällt dir Redux?ZeilenhöheMuss nach der Action "plugins_loaded" aufgerufen werden.NameNeuer %sNewsletterKeine Elemente von diesem Typ wurden gefunden.Keine ausgewähltAusAnOptionenEinstellungs-ObjektErstellt mit Hilfe von %1$sPasswortBitte wartenBitte helfen Sie uns, das Nutzererlebnis zu verbessern, indem Sie der Sammlung anonymer Nutzerstatistiken zustimmen. Damit erfahren wir, welche Einstellungen, Plugins und Themes wir auf Kompabilität testen müssenRedux-ErweiterungenRedux FrameworkRedux Framework ChangelogDas Redux Framework verfügt über eine mitgelieferte Demo.Redux GeneratorRegulärEntfernenRepoAlles zurücksetzenZurücksetzenRechtsÄnderungen speichernVoreinstellungen dieses Abschnitts wieder hergestellt!Wähle ein ElementEinstellungen importiert!Einstellungen wurden gespeichert!Einstellungen wurden geändert, du solltest sie abspeichern!Zeige Objekte im Javascript Konsolen-ObjektGrößeGleitenStandard SchriftartenStatusStyle/StilAnmeldenZeichensätzeSupportSysteminformationTextausrichtungTextauszeichnungTexttransformationDie Menschen, die das Redux Framework entwickelnDie unbekannte Action wurde durch "%s" ersetztThemeDieses Feld kann nicht leer sein. Bitte gib einen Wert ein.Dieses Feld muss einen gültigen Farbwert haben.Dieses Feld muss ein gültiges Datum sein.Dieses Panel demonstriert die vielen Funktionen von Redux.ÜberschriftZuObenTransparentURLEinheitenUnbekannte Action "%1$s" für %2$s definiertHochladenBenutzerBenutzernameVersionVersion %s%s ansehenBesuch die Plugin-SeiteBesuchtWARNUNG! Dies überschreibt alle bestehenden Einstellungen, bitte gehe vorsichtig damit um!Du möchtest gleich loslegen? Verwende den %1$s. Er wird ein individuelles Boilerplate Theme oder einen eigenständigen Admin-Ordner mit allen Redux things (mit Hilfe von Unterstrichen und TGM) erstellen. Spar dir die Kopfschmerzen und probiere es aus.Warnung - Dieses Einstellungs-Panel wird ohne Javascript nicht einwandfrei funktionieren!Willkommen beim Redux FrameworkWillkommen beim Redux Framework %sWillkommen beim Redux-Demo-PanelWas neu istBreiteWortabstandFunktioniert...Du hast nicht die erforderlichen Rechte, um auf diese Seite zuzugreifen.Ihre Änderungen wurden noch nicht gespeichert. Möchten Sie jetzt speichern?Ihre Änderungen wurden noch nicht gespeichert. Möchten Sie jetzt speichern?In diesen Feld kannst du kein HTML eingeben. Alle HTML Tags werden entfernt. In diesen Feld kannst du keine Sonderzeichen eingeben. Alle Sonderzeichen werden entfernt.Du musst eine kommaseparierte list mit numerischen Werte für diese Option bereitstellen.Du must einen nummerischen Wert für diese Option bereitstellen.Du musst eine gültige URL für diese Option bereitstellen.Du musst eine gültige E-Mail für diese Option bereitstellen.Ihre aktuellen Einstellungen werden mit den Standardwerten ersetzt. Möchten Sie fortfahren?Ihre aktuellen Einstellungen werden mit den Standardwerten ersetzt. Möchten Sie fortfahren?SpendeFehler wurden gefunden!Ordner für die Erweiterungenhinterlasse ein Review auf WordPress.orgDokumentationWarnungen wurden gefunden!redux/ReduxCore/languages/redux-framework-pt_BR.mo000066600000040136152143340100016225 0ustar00  $;5JD4 1ASgy   . "AI P \fl} %, ; F Q ] g t       #ZUQXhw]X> GRW f r2~  !  (I Zf o{!2B%\W   )DSf,v(    $/?N'.3' *yK 3(FMR[ cnvUF 1 O o z ; F E!Ka!b!L"3]"-"/"a"`Q#####J#9$,S$,$$$$l$Y(!w((( ((((( )I )Wj)I)" */*B*Q*a*t***** ***;*-+ 4+ >+$_+++ + ++l+ 7, A,K,f,y,,, , ,,,,,, - "-0-@-P-g-j-|-----..O/kX/f/+040H0Z0cn0W0*1 11<1E1\1m1,}11111(12 2&2-2620I2z22222^3r3343 3h3H4P4X4]4l4~444444:4295l5t5z555 5 555 55566)66/77=7/7($8|M8888 88I8791@9r9y999 9999Y9/:O:B;_;.; ;;; ;6;><>]<K<f<ZO=4=)=+ >_5>_>>>??`7??,?4?@*@?@0}% Q+X k>58oPTa4h<']zN#qWwEL$giI`[2&F|m^@UYDtr6sZ=KpHf3:M jJ("RA1e.;)v OnlC*cG9x-S7_\/Bdb,!y{~uV?Activate Demo ModeActivate Development PluginsActiveActive PluginsAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.HoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LanguageLearn MoreLeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.MySQL VersionNameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP Memory LimitPHP VersionPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnable to modify required files. Please ensure thatUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/redux-framework/language/pt_BR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt_BR Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Ativar Modo de DemonstraçãoAtivar Desenvolvimento de PluginsAtivadoPlugins AtivosAdicionar %sAdicionar MaisAdicionar/Editar GaleriaTodosTodos os Padrões restaurados!Permitir rastreamentoVocê tem certeza? Ao redefinir, todas as modificações serão perdidas.Você tem certeza? Ao redefinir, todas as modificações dessa seção serão perdidas.Você tem certeza? Ao redefinir, todas as modificações serão perdidas.Ação automática realizada: "%s"Fixação do fundoGramp de FundoOrigem do FundoPosição do fundoRepetição do fundoTamanho de FundoBackup do tipo de fonteEstilo de bordaBaseNavegadorLog de mudançasLimpar galeriaClique aqui para ativar a configuração de demonstração.FecharCréditosDesativar Modo de DemonstraçãoDesativar Desenvolvimento de PluginsPadrãoEliminarDescriçãoDesenvolvedorModo Desenvolvedor AtivadoVocê sabia que nós temos extensões que aprimoram os recursos do Redux? Visite nosso %1$s para saber mais!DesativarDispensarNão permitir rastreamentoEndereço de EmailAtivarExpandirExportar OpçõesExtensõesCor da FonteFamília de FonteTamanho da fonteSubconjuntos de FonteVariante da FontePeso e Estilo da FonteCor da fonteTipo de fonteScript da fonteEstilo da fonteFonte dos SubconjuntosDePágina de FrentePrimeiros passosWebfonts do GoogleAlturaAjude a melhorar nosso painelAqui você pode copiar/baixar suas opções atuais. Guarde esse arquivo em um local seguro para utilizá-lo como backup em caso de erro ou para restaurar suas opções nesse site (ou em qualquer outro site).DicasSugestões são os tooltips que aparecem %d no ícone de dica, oferecendo informações adicionais sobre o campo em que eles aparecem. Eles podem ser %d d através do link abaixo.SuspensoSe assim for, por favor, %1$s e considere fazer uma %2$s para manter o desenvolvimento de Redux avançando.Se você gostaria de manter-se atualizado sobre o Redux, por favor, assine o nosso boletim informativoImportarImportar / ExportarImportar OpçõesImportar de uma URLInsira a URL para outras opções locais e clique em importar para carregar as opções desse site.Selecione seu arquivo de backup abaixo e clique em Importar para restaurar as opções.IdiomaSaiba MaisEsquerdaEspaçamento de letrasGostou do Redux?Altura da LinhaDeve chamar após a ação "plugins_loaded".Versão do MySQL NomeNovoBoletim InformativoNão foram encontrados itens desse tipo.Arquivo não selecionadodesligadoligadoOpçõesOpções de ObjetoPainel de configurações criado utilizando %1$sLimite de Memória no PHPVersão do PHPSenhaPor Favor, AguardePor favor, ajude-nos a melhorar esse painel permitindo o uso de estatísticas anônimas para uma análise de compatibilidade de configurações, plugins e temas.Extensões do ReduxRedux FrameworkRedux Framework ChangelogO Redux Framework possui uma demonstração inclusa.Gerador ReduxRedux é um simples framework, com opções verdadeiramente extensíveis para temas e plugins WordPress.RegularRemoverRepoRestaurar tudoRestaurar SeçãoDireitaSalvar AlteraçõesSeção Padrões restaurada!Selecionar um itemConfigurações Importadas!Configurações Salvas!As configurações foram alteradas, você deve salvá-las!Mostrar objeto no console de objetos do JavascriptTamanhoSlideFontes PadrãoEstadoEstiloSubscreverSubconjuntosSuporteInformações do sistemaTeam ReduxAlinhamento de TextoDecoração do TextoTransformação de TextoOs seguintes diretórios e arquivos ainda estão localizados no seu Redux diretório. Eles podem causar erros no Theme-Check.Pessoas que desenvolvem o Redux FrameworkO tema que você está testando tem %s incorporado. Nós convidamos você a ler a %sTheme-Check Documentation%s para entender alguns avisos que verá por causa do Redux.A ação desconhecida foi substituída com "%s"TemaEste campo não pode estar vazio. Por favor informe um valor.Esse campo deve conter um valor de cor válido.Este campo deve conter uma data válida.Este painel demonstra os muitos recursos do Redux. Antes de futucar, sugerimos que busque rapidamente por uma revisão %1$s.TítuloParaTopoTransparenteURLNão é possível modificar arquivos necessários. Por favor os verifiqueUnidadesAção desconhecida "%1$s" especificada para %2$sEnviarUsuárioNome de utilizadorVersãoVersão %sVer %sVisitar a página de pluginsVisitadoATENÇÃO! Isso irá substituir todas as opções salvas. Por favor, proceda com cuidado!Quer uma dica? Use o %1$s. Ele criará um tema inicial personalizado ou uma pasta de admin completa com tudo Redux (com a ajuda de Sublinhados e TGM). Evite dores de cabeça e experimente hoje. Aviso - Este painel de opções pode não funcionar devidamente sem javascript!Bem-vindo ao Redux FrameworkBem-vindo ao Redux Framework %sBem vindo ao painel de demonstração do ReduxNovidadesLarguraEspaçamento de PalavrasCarregando...Sem permissões suficientes para acessar esta página.Você tem mudanças não salvas. Gostaria de salvá-las agora?Você tem mudanças não salvas. Gostaria de salvá-las agora?Você não deve inserir HTML nesse campo. As tags HTML foram desabilitadas.Você não deve inserir caracteres especiais nesse campo. Os caracteres especiais foram desabilitados.Insira uma lista, separada por vírgulas, de valores numéricos válido para essa opção.Insira um valor numérico válido para essa opção.Insira uma URL válida para essa opção.Insira um e-mail válido para essa opção.Suas opções atuais serão substituídas pelas configurações iniciais. Gostaria de proceder?Suas opções atuais serão substituídas pelas configurações iniciais. Gostaria de proceder?ClicandodoaçãoErro(s) encontrado(s)!Diretório de Extensõestem as permissões apropriadas de leitura/gravação ou digite suas informações de FTP abaixo.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkdeixe-nos um comentário favorável no WordPress.orgMovendo o mouse sobrenossa documentaçãoAdvertência(s) encontrada(s)!redux/ReduxCore/languages/redux-framework-cs_CZ.mo000066600000036713152143340100016226 0ustar00<  )07@QUl5{D4 +Lbr   .(.6Kjr y l# 9GNU d o {       6 ZUdk{]XQV e q2} !  : CO%0VWf   ':,J(w    "'.m3' y 3(!&/ 7BJ`UhF# CN T a;lFEK5 b L 31!-e!/!a!`%"""""J" #,'#,T#####L'a'{' ' '''''A'E)(Ao("(((( ) )2)B)Y)k)q))A)) ))* *(*/* 5*@*]* ***+ + $+ 0+ >+ K+W+g+y++ + + + +++ ++, ,), -&--R-e4. ....e.gF/////-/0 0)0%>0 d000 0 0+0000111$2)2X:22 2 22222233-30B3-s3333 33 3 333 44"414D4&45"5@5CI505*5x5b6i6l6 s66?66-66 7 7!7 '7 17=7 U7db77I88949 Q9_9h9 z9@9L9F:>Z:_:O:2I;2|;!;Y;Y+< <<<<W<=,/=1\====TVy? %1pAa(bDW=-24l6U*M `].$\r3#/ |o xC:teu@'} [{!BmRvSdkIF; "Q^qhG0XP,c7&L5<JgZOjfE~znw+>_NYHi8sK9)Activate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Getting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.HoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnable to modify required files. Please ensure thatUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/redux-framework/language/cs_CZ/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: cs_CZ Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktivovat Demo módAktivovat vývoj pluginůAktivníPřidat %sPřidat vícePřidat/Upravit GaleriiVšeVše výchozí obnoveno!Povolit sledováníJste si tím jistý? Resetem ztratíte všechny vlastní hodnoty.Jste si jisti? Reset ztratí všechny vlastní hodnoty v této sekci.Jste si tím jistý? Resetem ztratíte všechny vlastní hodnoty.Provedená automatická akce: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeZálohovat Font FamilyStyl ohraničeníDolůProtokol změnVyčistit GaleriiKlikněte zde pro aktivaci ukázkového konfiguračního souboru.ZavřítPoděkování Deaktivovat Demo módDeaktivovat vývoj pluginůVýchozíSmazatPopisVývojářRežim Vývojář AktivovánVěděli jste, že máme rozšíření, které výrazně zlepšují vlastnosti Redux? Navštivte náš %1$s kde se dozvíte více!DeaktivovatSkrýtZakázat sledování Emailová adresaAktivovatRozšířitVolby ExportuBarva PísmaFont FamilyVelikost PísmaPodskupiny SytlůVarianta StyluVelikost písma a StylBarva písmaFont familySkript písmaStyl písmaPodskupiny sytlůOdZačínámeGoogle WebfontsVýškaPomozte vylepšit Náš panelZde můžete zkopírovat/stáhnout aktuální předvolby nastavení. Používejteto pouze v krajním případě jako zálohu než se něco pokazí, nebo to můžete použít pro obnovení nastavení na této stránce (nebo jakékoliv jiné).NápovědyTipy jsou rady, které se objeví, když %d ikona nápovědy, nabízí doplňující informace o poli, ve kterém se objeví. Mohou %d pomoci následujícího odkazu.Při najetí myšiPokud ano, pak %1$s a zvažte možnost %2$s, umožníte tak další vývoj Reduxu.Pokud chcete držet krok se všemi věcmi Redux, prosím, přihlaste se k odběru našeho newsletteruImportovatImport / ExportNastavení ImportuImportovat z URL adresyZadejte URL jiné stránky se sadou nastavení a dejte Import pro načtení nastavení z tohoto webu.Níže vložte záložní soubor a klikněte na Importovat pro obnovení vašeho nastavení ze zálohy.VlevoVzdálenost písmenMáte rádi Redux?Výška ŘádkuJe třeba vyvovlat po akci "plugins_loaded".NázevNový %s Zasílání novinekPoložka tohoto typu nebyla nalezena.Žádné médium nebylo vybránoVypZapNastaveníVolby objektuPanel nastavení byl vytvořen pomocí %1$sHesloProsím strpeníProsím, pomozte nám zlepšovat náš panel povolením získávat anonymní statistiky používání. Takhle se dozvíme, jaké konfigurace, pluginy a témata použít při testování k zajištění kompatibility.Redux RozšířeníRedux FrameworkRedux Framework Protokol změn Redux Framework má vložené demo.Redux GenerátorRedux je jednoduchý opravdu rozšířitelný framework pro WordPress témata a pluginy.ObvyklýOdstranitÚložištěResetovat všeResetovat SekciVpravoUložit ZměnySekce obnovena na výchozí!Vyber položkuNastavení importováno!Nastavení uloženo!Nastavení se změnilo, měli byste jej uložit!Zobrazit Objekt v "Javascript console Object"VelikostSlideStandardní písmaAktualitaStylOdebíratPodskupinyPodporaSystémové InformaceTým ReduxZarovnání TextuDekorace TextuTransformace TextuNásledující adresáře a soubory jsou stále umístěny ve VašemRedux adresáři. Mohou způsobovat chyby při kontrole témata.Lidé kteří vyvinuli Redux FrameworkTéma které testujete %s Neznámá akce byla nahrazena "%s"ŠablonaToto pole nemůže být prázdné. Prosím vložte platnou hodnotu.Toto pole musí obsahovat platnou hodnotu barvy.Toto pole musí obsahovat platnou hodnout.Tento panel demonstruje mnoho Redux funkcí. Před prozkoumáváním, vám pro zrychlení doporučujeme prozkoumat %1$s.NázevDoNahoruPrůhlednýURLNelze upravit požadovaný adresář. Prosím, ujistěte se žeJednotkyNeznámá akce "%1$s" specifikovaná pro %2$sNahrátUživatelUživatelské jménoVerze Verze %sZobrazit %sNavštívit web pluginuNavštívenoVAROVÁNÍ! Tohle přepíše všechny existující hodnoty nastavení, prosím, postupujte opatrně!Chcete získat náskok? Použijte %1$s. Vytvořte si vlastní motiv nebo samostatnou univerzální administrativní složku se vším, co je Redux (pomocí podtržítka a TGM). Ušetřete si na bolesti hlavy a zkuste to ještě dnes.Varování - Tento panel voleb nebude pracovat správně bez javascriptu!Vítejte v Redux FrameworkVítejte v Redux Framework %sVítejte v Redux Demo PaneluCo je novéhoŠířkaMezery mezi slovyPracuji...Nemáte dostatečné oprávnění pro přistup na tuto stránku.Provedl jste změny které ještě nebyly uloženy. Chcete je uložit nyní?Některé změny dosud nebyly uloženy. Chtěl byste je uložit nyní?Nesmíte zde vkládat HTML, veškeré HTML tagy byly smazány.Nesmíte zde vkládat žádné speciální znaky, veškeré speciální znaky byly odstraněny.Musíte zadat čárkou oddělený seznam číselných hodnot pro tuto možnost.Musíte vložit číselnou hodnotu pro tuto volbu.Musíte vložit platnou URL adresu pro tuto volbu.Uveďte platnou emailovou adresu.Vaše současné hodnoty budou nahrazeny hodnotami tohoto nastavení. Chcete pokračovat?Vaše aktuální nastavení bude přepsáno tímto předdefinovaným. Chcete pokračovat?kliknutímdarByly nalezeny chyby!adresář doplňkůmá příslušná oprávnění pro čtení/zápi,s nebo níže zadejte své FTP údaje.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworknám zanechte kladné hodnocení na WordPress.orgpřejetím myšinaši dokumentaciVarování byla nalezena!redux/ReduxCore/languages/redux-framework-da_DK.mo000066600000011611152143340100016155 0ustar00Tq\ !4QX_c z  *2 9 EOfn v          + < C H R ` f s      .      ( 7 > C L T _ g }   ;    ,: jg  '!@bx     1;APX ^ it      #) .; KVe  1 -EL S^ fqx   A29B,\A/5O'4<" *#3P6$=)@(L:%SF?HJ &8I, 9-1C7Q KERMT!;G.N2B+ >D 0Activate Demo ModeActivate Development PluginsActiveAdd %sAllAll Defaults Restored!Automatic action performed: "%s"Background AttachmentBackground PositionBackground RepeatBottomChangelogCloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDisableDismissEmail addressEnableExpandExtensionsFont FamilyFont SizeFont familyFrom HeightHintsImportLeftNameNew %sNewsletterNo media selectedOffOnOptionsPasswordPlease WaitRedux ExtensionsRemoveRepoReset AllReset SectionRightSave ChangesSettings Imported!Settings Saved!SizeStatusStyleSupportSystem InfoTeam ReduxThe unknown action has been replaced with "%s"ThemeTitleTo TopURLUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageWelcome to Redux FrameworkWelcome to Redux Framework %sWhat's NewWidthWorking...You do not have sufficient permissions to access this page.clickingdonationhttp://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkProject-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Danish (Denmark) (http://www.transifex.com/projects/p/redux-framework/language/da_DK/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: da_DK Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktiver DemofunktionAktiver Udvikling PluginsAktiveTilføj %sAlleAlle standardindstillinger Restaureret!Automatisk handling udført: "%s"BaggrundsvedhæftningBaggrundsplaceringGentag baggrundBundÆndringslogLukKrediteringerDeaktiver DemofunktionDeaktiver Udvikling PluginsStandardSletBeskrivelseUdviklerUdvikler Tilstand AktiveretDeaktiverAfvisE-mail AdresseAktiverUdvidUdvidelserSkrifttypeSkriftstørrelseFontfamilieFraHøjdeTipsImporterVenstreNavnNy %sNyhedsbrevIngen medier er valgtFraPåIndstillingerAdgangskodeVent VenligstRedux UdvidelserFjernRepoNulstil AlleNulstil SektionHøjreGem ændringerIndstillinger Importeret!Indstillinger gemt!StørrelseStatusStyleSupportSystem infoTeam ReduxDen ukendte handling er blevet erstattet med "%s"TemaTitelTilTopURLUkendte handling "%1$s" specificeret for %2$sUploadBrugerBrugernavnVersionVersion %sVis %sBesøg plugin-webstedVelkommen til Redux FrameworkVelkommen til Redux Framework %sHvad er nytBreddeArbejder...Du har ikke tilstrækkelige rettigheder til at se denne side.klikkedonationhttp://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkredux/ReduxCore/languages/redux-framework-ro_RO.mo000066600000040446152143340100016243 0ustar00| hi|5D!4f * =J Q [.i  l        2 = I U `m s~3Z9U] X~   2AF M!Xz   %W[cj o y ,(=BHW^ dnv ~  'Dl. 93?'s y6<@ DP3T( U[F@   ; FE E K b!L!3!-"/0"a`"`"##,#5#J#J_##,#,#$4$F$]$'(#( )(4(E(_('e(!(E(\(ER)!)) ))))** 3*A*E*M*=^**** * ** * + +z&+ ++$+ + +++, , &,3, C,O,^, t, , , , ,, ,,, ,.,%---..L/////k0n00111*1;<1x111*111111% 2 12>2F2]2@3O3"_3)33l3)40484S4d4w44,444484(65 _5 j5t55555 55 5 5555'66077C7?7.<8k8889 99K9a95i99 999 99)9:P:i:Lo;; ;; <&<.< @<DM<<<<<Z =kg=U=D)>Fn>K>b?Yd? ????V@W@,q@7@@@ A.x#N)T f<36j|MP\2c:%YuK!lSrCo"bdG[yW0$Dwh}{>QU~B4nV;IkFam18JeH& O?/`,9'q LigzA(^E7s+5Z X-@_]*tvpR=Activate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.HoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.Learn MoreLeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP VersionPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnable to modify required files. Please ensure thatUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/redux-framework/language/ro_RO/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ro_RO Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1)); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Activare mod DemoActivare module de dezvoltareActivAdaugă %sAdaugă mai multAdaugă/Editează galerieToateToate predefinitele au fost restaurate!Permite colectarea de informațiiSunțeti sigur? Resetând se vor pierde toate valorile personalizate.Sunțeti sigur? Resetând se vor pierde toate valorile personalizate din această secțiune.Sunțeti sigur? Resetând se vor pierde toate valorile personalizate.Acțiune efectuată automat: "%s"Atașament pentru fundalFundal ClipOrigine fundalPoziție fundalRepetiție fundalMărime fundalFamile font rezervaStil bordurăJosIstoricGolește galerieApasați aici pentru a activa fișierul de configurare model.ÎnchideEchipăDezactivare mod DemoDezactivare module de dezvoltarePredefinitȘtergeDescriereProgramatorModul dezvoltator activatŞtiaţi că avem extensii, ce sporesc considerabil caracteristicile Redux? Vizitaţi %1$s nostru pentru a afla mai multe!DezactiveazăÎnchideNu permite colectarea de informațiiAdresă EmailActiveazăExtindeExportă opțiuniExtensiiCuloare fontFamilie fontDimensiune fontSubset fontVariantă fontGrosime și stil fontCuloare fontFamilie fontScript fontStil fontSubset fontDe laPrima paginăNoțiuni de bazăFont-uri web GoogleÎnălțimeAjută la îmbunătățirea Panolui de ControlDe aici puteți copia/descarca opțiunile curente. Vă rugăm să le salvați într-un loc sigur, în caz de probleme sau folosiți-le pentru a restaura setările acestui site (sau oricarui altul).IndiciiSugestiile sunt mesaje ajutătoare ce se afişează când %d peste iconiţa pentru sugestie, oferind informaţii adiţionale despre câmpul în care apar. Acestea pot fi %d d folosind link-ul de mai jos. HoverDacă da, vă rugăm %1$s să luați in calcul posibilitatea de a ne face o %2$s pentru a putea sigura dezvoltarea pe viitor a Redux.Dacă doriţi să rămâneţi la curent cu toate noutăţile Redux, vă rugăm să vă abonaţi la buletinul nostru informativ.ImportăImportă / ExportăImportă opțiuniImportă de la adresa URLInserează adresa opțiunilor din alt site și apasă Importă pentru a încărca opțiunile din acel site.Alege fișierul de rezervă mai jos și apasă Importă pentru a restaura setările dintr-o copie de rezervă.Aflaţi mai MultStangaSpațiere litereVă place Redux?Înălțime linieNecesită apelare în sau după acțiunea "plugins_loaded".DenumireNou %sBuletin informativNu s-a găsit niciun articol de acest tip.Nici un fișier media selectatOpritPornitOpțiuniObiect opțiuniPanoul de optiuni creat folosind %1$sVersiune PHPParolăVă rugăm aşteptaţiVă rugăm să ne ajutați la îmbunătățirea panoului nostru, permițându-ne să colectăm în anonimat statistici de utilizare, pentru a ști ce configurări, module sau teme să testăm pentru a asigura compatibilitatea.Extensii ReduxRedux FrameworkJurnal modificări Redux FrameworkRedux Framework are mod Demo încorporat.Generator ReduxRedux este un framework de opţiuni simplu şi cu adevărat extensibil pentru teme şi plugin-uri WordPress.NormalȘtergeContract de răscumpărareResetare totalăResetare secțiuneDreaptaSalvează modificăriPredefinitele secțiunii au fost restaurate!Selectează un articolSetări importate!Setări salvate!Setările au fost modificate, ar trebui să le salvați!Afișează obiect în Consola JavascriptDimensiuneAlunecareFont-uri standardStareStilAbonareSubsetAsistenţăInformații sistemTeam ReduxAliniere TextDecorațiune textTransformare TextUrmătoarele directoare şi fişiere se găsesc în continuare în directorul dumneavoastră Redux. Acestea pot crea erori în Theme-Check.Persoanele ce dezvoltă Redux FrameworkTemplate-ul pe care îl testaţi are %s încorporate. Vă invităm să citiţi %S documentaţia Theme-Check %s pentru a înţelege anumite avertizări pe care le veţi vedea datorită Redux.Acțiunea necunoscută a fost inlocuită cu "%s"TemăAcest câmp nu poate fi lăsat liber. Vă rugăm să-l completaţi.Acest câmp trebuie să conțină o valoare de culoare validă.Câmpul trebuie să conțină o dată validă.Acest panou prezintă multitudinea de caracteristici ale Redux. Înainte de a intra în detalii, vă sugerăm să avansaţi examinând %1$s.TitluLaSusTransparentURLNu am putut modifica fișierele necesare. Vă rugăm să vă asigurați căUnitateAcțiune necunoscută "%1$s" specificată pentru %2$sUploadUtilizatorNume utilizatorVersiuneVersiunea %sVizualizare %sVizitează pagina de internet a modululuiVizitatATENTIE! Se vor suprascrie toate opțiunile, vă rugăm avansați cu precauție!Vreţi să porniţi de la capăt? Folosiţi %1$s. Se va crea o temă şablon personalizată sau un dosar de administrare independent cu toate elementele Redux (cu ajutorul Liniuţelor-de-subliniere şi TGM). Scăpaţi de durerile de cap, încercând chiar azi. Atenție - Acest panou de control nu va funcționa corect fără javascript!Bun venit la Redux FrameworkBune venit la Redux Framework %sBun venit în Panoul Demo ReduxCe este NouLungimeSpațiere cuvinteProcesare...Nu aveti suficiente drepturi pentru a putea accesa această pagină.Există modificări nesalvate. Doriţi să le salvaţi acum?Există modificări nesalvate. Doriţi să le salvaţi acum?Nu trebuie să introduceți cod HTML în acest câmp, toate tagurile HTML au fost șterse.Nu trebuie să introduceți caractere speciale în acest câmp, toate caracterele speciale au fost șterse.Trebuie să furnizați o listă numerică separată prin virgulă pentru acest câmp.Trebuie să furnizați o valoare numerică pentru această opțiune.Trebuie să furnizați o adresă URL validă pentru această opțiune.Trebuie să furnizați o adresă de email validă pentru această opțiune.Opţiunile dvs, curente vor fi înlocuite cu valorile acestei presetări. Doriţi să continuaţi?Opțiunile curente vor fi înlocuite de valorile acestui câmp. Doriți să continuați ?dând clicdonaţieeroare(i) găsită(e)!directorul de extensiiare permisiunile corecte de citire/scriere sau introduceți informațiile FTP mai jos.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworksă ne lăsaţi o recenzie favorabilă pe WordPress.orgdeplasând mous-ul deasupradocumentaţia noastrăatenționare(i) găsită(e)!redux/ReduxCore/languages/redux-framework-lt_LT.mo000066600000000000152143340100016217 0ustar00redux/ReduxCore/languages/redux-framework-es_MX.mo000066600000014265152143340100016236 0ustar00GTa$+5/De4  ".,[afn    U:AQ V bmqt| %   ! + 7 B &Q {x 3 ( . 2 6 = F Q W ; F0 Ew a `   ,  j HbiNn_Nl~@  6B K X cm|h& :DV_ gqz( 0!)9A HR ky5@e :BB<ff MW/nB%3.$#E/F:!29D)"68 @0?>'(;-&1 7= <,4 A+  5CG*Activate Demo ModeActiveAllAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBottomChangelogClick here to activate the sample config file.CloseCopyCreditsDeactivate Demo ModeDefaultDeleteDescriptionDisableDismissDocumentationEmail addressEnableFont FamilyHeightIf you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportLeftLike Redux?NewsletterOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordRedux ExtensionsRedux FrameworkRedux Framework has an embedded demo.RemoveRightSave ChangesSizeStyleSubscribeSystem InfoText AlignText TransformThe [purchase_link] ShortcodeThe [downloads] shortcode will display a product grid that works with any theme, no matter the size. It is even responsive!This field cannot be empty. Please provide a value.TitleTopURLUploadUsernameVersion %sWidthWith easily accessible shortcodes to display purchase buttons, you can add a Buy Now or Add to Cart button for any product anywhere on your site in seconds.You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?donationextensions directoryleave us a favorable review on WordPress.orgour documentationProject-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-02-03 22:24:22+00:00 PO-Revision-Date: 2015-03-10 15:34+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/redux-framework/language/es_MX/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: es_MX Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Activar Modo DemostrativoActivoTodo¿Estás seguro? La restauración eliminará todos los valores personalizados.¿Estás seguro? La restauración eliminará todos los valores personalizados en esta sección.¿Estás seguro? La restauración eliminará todos los valores personalizados.Adjunto del fondoPosición del fondoRepetición del fondoTodoInforme de cambiosDa clic aquí para activar el archivo de configuración ejemplo.CerrarCopiarCréditosDesactivar Modo DemostrativoPor DefectoEliminarDescripciónDesactivarDescartarDocumentaciónCorreo electrónicoActivarFamilia tipográficaAlturaSi te gustaría mantenerte al tanto con las novedades en Redux, por favor suscríbete a nuestro boletínImportarImportar / ExportarIzquierda¿Te gusta Redux?BoletínApagadoEncendidoOpcionesObjeto de OpcionesPanel de opciones creado utilizando %1$sContraseñaExtensiones de ReduxRedux FrameworkRedux Framework tiene un demostrativo integrado.EliminarDerechaGuardar cambiosTamañoEstiloSuscribirInformación del SistemaAlinear TextoTransformar TextoEl código corto (shortcode) [purchase_link]El código corto (shortcode) [downloads] desplegará una cuadrícula que trabaja con cualquier tema, no importando el tamaño. ¡Es código totalmente responsivo!Este campo no puede quedar vacío. Por favor introduce un valor.TítuloArribaURLSubirNombre de usuarioVersión %sAnchoCon códigos cortos fácilmente accesibles para desplegar los botones de compra, puede añadir un botón de "Compre Ahora Mismo" o "Añadir al pedido" para cualquier producto en cualquier parte de su sitio en segundos.No tienes suficientes permisos para acceder a esta páginaTienes cambios que no han sido salvados. ¿Deseas salvarlos ahora?Tienes cambios que no han sido salvados. ¿Deseas salvarlos ahora?Tus configuraciones actuales serán reemplazadas con los valores que se presentan. ¿Deseas continuar?Tus configuraciones actuales serán reemplazadas con los valores que se presentan. ¿Deseas continuar?donacióncarpeta de extensionescomparte una reseña favorable en WordPress.orgnuestra documentaciónredux/ReduxCore/languages/redux-framework-bg_BG.mo000066600000020567152143340100016165 0ustar00_  *.E5TD4  . @ M T \ f t z            . 5 ; B R a Xq    !      + ; C J T b h u    , (   # 2 9 ? G S Y _ c g s w }      ; F EO a ` XJmn>N0b \'%n#**AU   /M`q2" -(Hq  '#4X& -@75x  !2!T v"n-/-]T0 %/ Ubk%  !. P]Cm$If1f+u ;;!*@< K 9'X:[8L64U3Y7G^?HD50$E)J/ZFN=,\A (%O!.T-SMB>P _ 2]+QCR"1#WVI&;Add %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBorder styleBottomBrowserChangelogClear GalleryCloseCreditsDefaultDeleteDescriptionDeveloperDisableDismissDo not allow trackingEnableExpandExport OptionsFont ColorFont FamilyFont colorFont familyFrom Google WebfontsHeightHintsImportImport / ExportImport OptionsImport from URLInput your backup file below and hit Import to restore your sites options from a backup.LeftNameNew %sNo items of this type were found.No media selectedOffOnPasswordPlease WaitRedux FrameworkRegularRemoveReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubsetsSystem InfoThemeTitleTo TopTransparentURLUnitsUploadUserUsernameVersionVersion %sVisit plugin homepageWidthWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?error(s) were found!has the proper read/write permissions or enter your FTP information below.warning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/redux-framework/language/bg_BG/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: bg_BG Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Добави %sДобави ощеДобави/Редактирай галерияВсичкиВсички настройки по подразбиране са възстановени!Разреши проследяванеСигурни ли сте? Възстановяването ще загуби всички допълнително направени промени?Сигурни ли сте? Възстановяването ще загуби всички допълнително направени промени в тази секция.Сигурни ли сте? Възстановяването ще загуби всички допълнително направени промени?фоново изображениеМестоположение на фонаПовторение на фоновото изображениеСтил на границатаДолуБраузърСписък с промениИзчисти галерияЗатварянеЗаслугиПо подразбиранеИзтриванеОписаниеРазработчик ИзключванеЗатварянеНе разрешавай проследяванеРазрешаванеРазшириНастройки за износЦвят на шрифтаСемейство от шрифтовеЦвят на шрифтаШрифтОтШрифтове от GoogleВисочинаНасокиВнедряванеВнедряване / ИзнасянеВнедри настройкиВнедри от уеб адресВкарайте вашия резервен файл отдолу и натиснете "Внедри", за да възстановите настройките на вашите сайтове.ЛявоИмеНов %sНяма намерени артикули от този тип.Няма избрани медиини файловеИзключеноВключеноПаролаМоля, изчакайтеRedux FrameworkОбикновенИзтриванеВъзстанови всичкиВъзстанови секцияДясноЗапис на променитеНастройките по подразбиране за тази секция са възстановени!Избери артикулНастройките са внедрени!Настройките са записани!Настройките са промени. Трябва да ги запишете!Покажи Object в Javascript Console ObjectРазмерПлъзганеСтандартни шрифтовеСтатусСтилПодмножествоСистемна информацияТемаЗаглавиеДоГореПрозрачноАдресМерни единициКачванеПотребителПотребителско имеВерсияВерсия %sИнтернет страницата на разширениетоШирочинаВ процес на работа...Нямате право на достъп до тази страница.Имате незаписани промени. Искате ли да ги запишете сега?Имате незаписани промени. Искате ли да ги запишете сега?Текущите ви опции ще бъдат заменени с тези предварително зададени стойности. Искате ли да продължите?Текущите ви опции ще бъдат заменени с тези предварително зададени стойности. Искате ли да продължите?грешка(и) бяха намерени!има подходящите права за четене/записване или въведете вашата FTP информация отдолу.предупреждение(я) бяха намерени!redux/ReduxCore/languages/redux-framework-sv_SE.mo000066600000031575152143340100016245 0ustar00   ) 0 9 J N e 5t D 4 $E[k}   .)/7Lks z l  #18? N Y e p |  ZUnu]X[` o2{ ! 1 :FW%g   ,)(V   .3'I qy  &*(0Y`en vUF) IT Z g;rFEK;bL37-k/a`+,j .     ' "'!CJ!G!G!!"@" P"^"p"""""" " " "6 #B#I#Q#0o### # ## H$S$'\$$$ $$$$$ $$$$% %*%D%%J%p%x& &h&`& V'`'p''v'((((8(( ()&)7):) >)I)"Y) |))) )&))))** *6*=*,N*{***3*'+++3+E+L+ Q+]+n+v+ ++1++<+1,/K,{,(-.-3- 8-D-H-0P- - - -- ----k-P.O;// // / /L/:#0=^0Q0R0NA1312151b-2b2223)%3O3b3AsXmul.!7K8qR*J +_B:;# 3=^~?$%n",9]b W4\di fc1(Spo&>FY) <@My0}hgZ'vNC P5HQxz`tjUVG/w{reL2aD|-TE[6IOkActivate Demo ModeActivate Development PluginsActiveAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont FamilyFont colorFont familyFont scriptFont styleFont subsetsFrom Getting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Must call in of after the "plugins_loaded" action.NameNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitRedux ExtensionsRedux FrameworkRedux Framework has an embedded demo.Redux GeneratorRegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoText AlignText TransformThe unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?donationerror(s) were found!extensions directoryleave us a favorable review on WordPress.orgour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/redux-framework/language/sv_SE/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sv_SE Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktivera DemoinställningAktivera Utvecklings-plugins / InsticksprogramAktivLägg till merLägg till/redigera galleriAllaAlla grundinställningar återställda!Tillåt s.k. 'tracking' spårning.Är du säker? Återställning kommer ta bort alla standardvärden.Är du säker? Återställning kommer att ta bort alla standardvärden.Är du säker? Återställning kommer att ta bort alla standardvärden.Automatisk åtgärd utförd: "%s"BakgrundsbilagaBakgrundsbildBakgrundsursprungPosition för bakgrundRepetition av bakgrundStorlek för bakgrundSäkerhetsspara typsnittsfamiljRamstilBottenWebbläsareÄndringsloggRensa galleriKlicka här för att aktivera exempelkonfigurationsfilStängCreditsAvaktivera DemoinställningenAvaktivera utvecklings-plugins / insticksprogramStandardRaderaBeskrivningUtvecklareVisste du att vi har tillägg som som i stor utsträckning förbättrar verktygen i Redux? Besök vår %1$s för att lära mer.InaktiveraAvfärdaTillåt inte s.k. 'tracking' spårning.E-postAktiveraExpanderaExportinställningarTilläggTypsnittTypsnittsfärgTextfamiljTeckentypsskriptTextsnittsstilTeckedeluppsättningarFrånKomma igång!Google Webfonts /typsnittHöjdHjälp oss att förbättra Vår PanelHär kan du kopiera/ladda ned dina nuvarande inställningar. Spara dessa på ett säkert ställe. Du kan använda dessa som om något skulle gå fel, eller så kan du använda dessa för att återställa dina inställningar för denna ´site´ (eller annan site).Tips! Sväva/hovraom så, vänligen %1$s och överväg en donation om %2$s för att hjälpa utvecklingen av Redux framåt.Om du vill hålla dig uppdaterad om allt kring Redux, vänligen prenumerera på vårt nyhetsbrevImporteraImport / ExportImportinställningarImportera från URLSkriv in en URL för en annan sidas inställningar och 'klicka' på importera för att ladda hem dessa inställningar.Hämta/markera din backup-fil nedan och klicka på ´Importera´ för att återställa din Site´s inställningar från en backup.VänsterTeckenmellanrumGilla Du Redux?Måste uppdatera efter att "plugins_loaded" genomförts.NamnNyhetsbrevInga objekt av denna typ funna.Inga media valdaAVPÅFunktionerFunktionsobjektFunktionspanelen skapades med %1$sLösenordVar vänlig väntaRedux TilläggFunktioner:Redux Framework har en inbäddad demo.Redux GeneratorOrdinarie/reguljärRaderaFörrådÅterställ alltÅterställ sektionenHögerSpara ÄndringarSektionsgrundinställningar - Återställda!Välj till ett objektInställningar har importerats!Inställningarna är sparade!Inställningarna har ändrats. Du bör spara dessa!Visa Objekt i Javascript Console ObjectStorlekStandardtextsnittStatusStilPrenumereraDelupsättningarSupportSysteminformationTextplaceringTextomvandlingDen okända åtgärden har blivit ersatt med "%s"TemaDetta fält får inte vara tomt - vänligen ange ett värde.Detta fält måste innehålla en giltig färgkod.Detta fält måste innehålla ett giltigt datumDenna panel beskriver de många verktygen och funktionerna hos Redux. Innan du börjar testa runt, föreslår vi att du, för att snabbare komma igång, tittar igenom %1$s.TitelTillToppTransparentURLEnheterOkänd händelse för "%1$s" specifikt för %2$sLadda uppAnvändareAnvändarnamnVersionVersion %sVisa %sBesök tilläggets webbplatsBesöktVARNING! Detta kommer att skriva över dina nuvarande inställda värden. Fortsätt med stor försiktighet!Vill du komma igång snabbt? Använd %1$s. Denna skapar en individuellt anpassad plattform eller fristående adminmapp, komplett med allt runt Redux (med hjälp av Underscores och TGM). Bespara dig huvudvärken och testa redan idag.Varning - Denna funktionspanel kommer inte att fungera korrekt utan Javascript!Välkommen till Redux DemopanelVad är NyttBreddOrdmellanrumArbetar...Du har inte tillräcklig behörighet för att få tillgång till denna sida.Du har ändringar som ej sparats. Vill du spara dessa nu?Du har ändringar som du inte sparat. Vill du spara dessa nu?Du får inte mata in någon HTML i detta fält. Alla HTML-taggar har tagits bort.Du får inte ange specialtecken i detta fält, alla specialtecken har tagits bort.Du måste, för detta val, ange en kommaseparerad lista med numeriska värden.Du måste ange ett numeriskt värde för detta val.Du måste ange en giltig URL för detta alternativDu måste ange en giltig e-postadress för detta val.Dina nuvarande inställningar kommer att ersättas med förinställda värden. Vill du fortsätta?Dina nuvarande inställningar kommer att ersättas med denna förinställning. Vill du fortsätta?donationfel /(flera fel) funna!tilläggskataloglämna en bra recension på WordPress.orgvår dokumentationVarning (varningar) funna!redux/ReduxCore/languages/redux-framework-pt_PT.mo000066600000015651152143340100016251 0ustar00v|      , 0 G 5V          ) / 7 L T [ g q          ) 6 < L S Y _ f v       !       * : J R Y c q w           '$ Lmsw { U-M S `;k,+=oT %<NR $<K R\ p|     );L cpv %5:B&V }    (=Pi  &"'Iqy~    d.X<  ,:g|T H$7&m5<BAYa! DSh%#kg1P;bf"-q. F\nc U`4C+ji]W2t r80J[6Reu/I'3N(QVZ>)?E_M,dl@*=s9X L^oKpGOv:Activate Demo ModeActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Background AttachmentBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomChangelogClear GalleryCloseCreditsDeactivate Demo ModeDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsFont ColorFont FamilyFont SizeFont SubsetsFont colorFont familyFont styleFont subsetsFrom Getting StartedHeightHintsHoverImportImport / ExportImport OptionsImport from URLLanguageLeftLetter SpacingLine HeightNameNew %sNewsletterNo items of this type were found.OffOnOptionsOptions ObjectPasswordPlease WaitRedux FrameworkRedux GeneratorRegularRemoveReset AllReset SectionRightSave ChangesSelect an itemSettings Imported!Settings Saved!SizeSlideStatusStyleSubscribeSubsetsSupportSystem InfoText AlignText DecorationText TransformThemeThis field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUploadUserUsernameVersionVersion %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Welcome to the Redux Demo PanelWidthWord SpacingWorking...You do not have sufficient permissions to access this page.clickingdonationerror(s) were found!http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/redux-framework/language/pt_PT/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: pt_PT Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Ativar modo demoAtivoAdicionar %sAdicionar maisAdicionar/Editar GaleriaTodosTodos as predefinições restauradas!Permitir rastreamentoTem a certeza que pretende repor? Irá perder todos os valores personalizados.Anexo do fundoOrigem do fundoPosição do fundoRepetir fundoTamanho do fundoCópia da família da fonteEstilo da bordaFundoRegisto de alteraçõesLimpar GaleriaFecharCréditosDesativar modo demoPor defeitoEliminarDescriçãoDeveloperModo de desenvolvedor ativoDesactivarIgnorarNão permitir o rastreamentoEndereço de emailAtivarExpandirExportar opçõesCor do textoFamília da FonteTamanho do textoSub conjuntos da fonteCor da fonteFonteEstilo da fonteSub conjuntos da fonteDeIniciarAlturaDicasSobreImportarImportar / ExportarImportar opçõesImportar de URLLínguaEsquerdaEspaçamento entre letrasAltura da linhaNomeNovo %sBoletim InformativoNenhum item deste tipo foi encontrado.DesligadoLigadoOpçõesOpções do ObjetoPalavra-passePor favor aguardeRedux FrameworkGerador ReduxNormalRemoverRestabelecer todosRestabelecer secçãoDireitaGuardar AlteraçõesSelecionar um itemDefinições Importadas!Definições Guardadas!TamanhoDeslizarEstadoEstiloSubscreverSub conjuntosSuporteInformações do sistemaAlinhamento do textoDecoração do textoTransformação do textoTemaEste campo tem de ter uma cor válida.Este campo tem de ter uma data válida.TítuloParaTopoTransparenteURLUnidadesCarregarUtilizadorUtilizadorVersãoVersão %sVisitar homepage do pluginVisitadoCuidado! Isto irá sobrepor todos os valores das opções existentes, por favor proceda com cuidado!Bem vindo ao Painel de Demonstração do ReduxLarguraEspaçamento entre palavrasA trabalhar...Não tem permissões suficientes para aceder a esta página.clicandodoaçãoerro(s) encontrado(s)!http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkmovendo o rato sobrenossa documentaçãoaviso(s) encontrado(s)!redux/ReduxCore/languages/redux-framework-sk_SK.mo000066600000017332152143340100016233 0ustar00Ok "*<CS pz     $ ; G S b "          % . A O D ^ # * 0 = B H X ^ j &0 {W | PVZ^dk4 =HPh P0;"Dgp#/Smu     & ,8A ^ lv   )4< q|'%% 7E  !29P-v3}(/48AI? V `m$ MR9> KH9!.JF*E#B'M0+5/A4<$%: 3LIG6( N;D? 7-81 C2 ,O)@"=&%s → Add NewActiveAdd-on plugins are available that greatly extend the default functionality of Easy Digital Downloads. There are extensions for payment processors, such as Stripe and PayPal, extensions for newsletter integrations, and many, many more.Additional Display OptionsAdditional UpdatesAllBackground AttachmentBackground PositionBackground RepeatBottomBuy Now ButtonsChange the Number of ColumnsChangelogCloseCopyCreditsDefaultDeleteDescriptionDisableDismissDisplay a Product GridDocumentationDownloadDownload FilesEmail addressEnableExtensions for EverythingFlexible Product GridsFont FamilyFont familyFull ChangelogGet Alerted About New TutorialsGet Notified of Extension ReleasesGetting StartedHeightImportLeftNeed Even Faster Support?Need Help?No valid changlog was found.OffOnOver 250 ExtensionsPasswordPhenomenal SupportProduct PriceProducts can have simple prices or variable prices if you wish to have more than one price point for a product. For a single price, simply enter the price. For multiple price points, click Enable variable pricing and enter the options.Purchase Buttons AnywherePurchase buttons can behave as either Add to Cart or Buy Now buttons. With Buy Now buttons customers are taken straight to PayPal, giving them the most frictionless purchasing experience possible.RemoveRightSave ChangesSizeSlideStay Up to DateStyleSystem InfoThe %s menu is your access point for all aspects of your Easy Digital Downloads product creation and setup. To create your first product, simply click Add New and then fill out the product details.The [purchase_link] ShortcodeThe [downloads] shortcode will display a product grid that works with any theme, no matter the size. It is even responsive!The product grids can be customized in any way you wish and there is extensive documentation to assist you.TitleTopURLUnitsUploadUploading the downloadable files is simple. Click Upload File in the Download Files section and choose your download file. To add more than one file, simply click the Add New button.UsernameVersion %sView %sView the Full ChangelogVisit the Extension StoreWhat's NewWidthWith easily accessible shortcodes to display purchase buttons, you can add a Buy Now or Add to Cart button for any product anywhere on your site in seconds.You can easily change the number of columns by adding the columns="x" parameter:You do not have sufficient permissions to access this page.Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-02-03 22:24:22+00:00 PO-Revision-Date: 2015-03-10 15:34+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/redux-framework/language/sk_SK/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: sk_SK Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Pridať nový %s AktívnyExistuje veľa doplnkov rozširujúcich funkcionalitu Easy Digital Downloads. Rozšírenia zahŕňajú platobné procesory (Stripe, PayPal) integráciu informačných letákov a omnoho viac.Nastavenia pokročilého zobrazeniaDodatočné aktualizácieVšetkoPríloha pozadiaUmiestnenie pozadiaOpakovanie pozadiaSpodokTlačidlá kúpiť ihneďZmeniť počet stĺpcovZoznam zmienZatvoriťKopírovaťKredityPredvolenýVymazaťPopisZablokovaťZrušiťZobraziť mriežku produktovDokumentáciaStiahnuťStiahnuť súboryE-mailová adresaPovoliťRozšírenia pre všetko možnéFlexibilná mriežka produktovŠtýl písmaTyp písmaÚplný záznam zmienZískajte informácie o nových návodochZískajte oznámenia o vydaní nových rozšírení.ZačínameVýškaImportVľavoPotrebujete ešte rýchlejšiu podporu?Potrebujete pomoc?Nebol nájdený platný záznam zmienVypnúťZapnúťViac ako 250 rozšíreníHesloÚžasná podporaCena produktuProdukty môžu mať jednotné alebo variabilné ceny. Ak si želáte jednotnú cenu zadajte tú. Pre nastavenia viacerých cien, nastavte variabilné ceny.Všade tlačidlá nákupuTlačidlá nákupu sa správajú buď ako tlačidlo "pridať do košíka" alebo ako tlačidlo "kúpiť teraz". Pomocou "kúpiť teraz" je zákazník rovno presmerovaný na stránku PayPal kde zažije najlepšiu platobnú skúsenosť.OdstrániťVpravoUložiť zmenyVeľkostiPosuvBuďte aktuálnyŠtýlInformácie o systémeMenu %s hrá úlohu prístupu k vytvoreniu a nastavenou celého modulu Easy Digital Downloads. Pre vytvorenie produktu kliknite na tlačidlo "pridať nový" a vyplňte podrobnosti.Krátky kód nákupu [purchase_link]Krátky kód [downloads] je responzívna mriežka vašich produktov. Teraz môžete predávať na ľubovoľnom mieste!Mriežka produktov je prispôsobiteľná podľa vašich požiadaviek. Môžeme vám pomôcť dokumentáciou.NázovVrchURLJednotkyNahraťNahratie stiahnuteľných súborov je jednoduché. V sekcii stiahnutia súborov si vyberiete súbor a kliknete na tlačidlo nahrať súbor. Pre pridanie viacerých súborov jednoducho klikajte daľej na tlačiclo pridať nový.Používateľské menoVerzia %sZobraziť %sZobraziť celý záznam zmien.Navštíviť obchod s rozšíreniamiČo je novéŠírkaPomocou krátkych kódov predstavujúcich tlačidlá: Pridať do košíka a Kúpiť teraz môžete zobraziť nákup kdekoľvek na stránke.Jednoducho môžete zmeniť počet stĺpcov pridaním parametra: columns="x" Nemáte dostatočné práva na prístup k tejto stránke.redux/ReduxCore/languages/redux-framework-fa_IR.mo000066600000031153152143340100016176 0ustar00     ' 0 A E \ 5k D 4 1ASgy    ! -7NV^ t           )/?OVmsy]X fk z !    #2E,U(    -33'g   F"i   ;F'EnKbLc3-/BKTJi,#a:3<  -&Nu#|fyf6On4   # > G :X C     '!=!W!%^!!!!!!!!# "/"C"a"q"""#"""" #"#<# E#P#"d# ###|$7%<%P%b% t%%7%'% %%&&,&;&T&&4&3'M'V']''f'''''#'!'#(]C(7( ( ("( )!) ()5)N)_) y)))) )[)D%*Hj* **** ****+"+ ++7+%I+o+r+1+5(,<^,,,, ,X,w7-w-}'..=/X/X-0[0007 1~E11,1 2 2,>2ArUmgt1 K:D/Q;J )]BX" 6=\|?#$n!+Rk_[`~V7csh eb4'po%aW>ET(<@Mw3{-fY.& u}C O8Hx^PjF*G2vyqdL5i,z0SZ9INlActivate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryCloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDisableDismissDo not allow trackingEmail addressEnableExpandExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Getting StartedGoogle WebfontsHeightHelp improve Our PanelHintsHoverImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLine HeightNameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux FrameworkRedux Framework ChangelogRedux GeneratorRegularRemoveRepoReset AllReset SectionRightSave ChangesSelect an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWarning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.clickingdonationerror(s) were found!has the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Persian (Iran) (http://www.transifex.com/projects/p/redux-framework/language/fa_IR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: fa_IR Plural-Forms: nplurals=1; plural=0; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes فعال کردن حالت نسخه ی نمایشیفعال کردن افزونه های در حال توسعهفعالاضافه کردن %sافزودن ادامه مطلبافزودن / ویرایش گالریهمهپیشفرض ها بازگشتند!اجازه ردیابیآیا مطمئن هستید ؟ تمام مقادیر وارد شده از بین خواهند رفت.آیا مطمئن هستید ؟ تمام مقادیر وارد شده در این بخش از بین خواهند رفت.آیا مطمئن هستید ؟ تمام مقادیر وارد شده از بین خواهند رفت.پیوست پس‌زمینهفیلم پس زمینهمنبع پس زمینهموقعیت پس‌زمینهتکرار پس‌زمینهاندازه پس زمینهپشتیبان گیری از خانواده فونتاستایل حاشیهپایینمرورگرثبت تغییراتپاک کردن گالریبستنسازندگانغیر فعال کردن حالت نسخه ی نمایشیغیر فعال کردن افزونه های در حال توسعهپیش‌فرضحذفتوضیحاتتوسعه‌دهندهحالت برنامه نویس فعالغیرفعال‌سازیلغواجازه ردیابی نمی دهمآدرس ایمیلفعالبازگشایی همهافزونه‌هارنگ فونتخانواده فونتاندازه فونتزیر مجموعه های فونتمتغیر فونتعرض فونت & سبکرنگ فونتخانواده فونتاسکریپت فونتسبک فونتزیر مجموعه های فونتازشروع کنیدوب فونت های گوگلیارتفاعکمک به بهبود پنل مانکاتشناوردرون‌آوریدرون ریزی/ برون بریتنظیمات درون ریزیدرون ریزی از آدرسآدرس بک آپ را در این قسمت وارد کنید و با زدن دکمه درون ریزی تنظیمات سایت را از آدرس بک آپ بازگردانید.فایل بک آپ خود را در این قسمت وارد کنید و با زدن دکمه درون ریزی تنظیمات سایت را از فایل بک آپ بازگردانید.چپفاصله حروفارتفاع خطنام پیوندجدید %sخبرنامههیچ موردی در این باره پیدا نشد.هیچ فایلی انتخاب نشدهخاموشروشنتنظیماتتنظیمات اشیاءرمزعبورلطفا صبر کنیدبرای بهبود پنل به ما کمک کنید تا بتوانیم آزمایشاتی در سیستم های مختلف تست کنیمفریم ورک ردوکسگزارش تغییرات فریم ورک ردوکسژنراتور ردوکسمنظمحذفمخزنبازگردانی پیش فرض همهبازگردانی پیش فرض بخشراستذخیره تغییراتیک ایتم انتخاب کنیدتنظیمات وارد شدند!تنظیمات ذخیره شدند!تنظیمات تغییر کرده اند ، شما باید آنها را ذخیر کنید!نمایش شی در جاوا اسکریپت آبجکتاندازهاسلایدفونت های استانداردوضعیتسبکاشتراکزیر مجموعه هاپشتیبانیاطلاعات سیستمتیم Reduxتراز متنتزئینات متنتبدیل متنپوستهاین فیلد نمی تواند خالی باشد لطفا یک مقدار پر کنید.مقدار رنگ باید در این فیلد گذاشته شود.این فیلد باید دارای یک تاریخ معتبر باشد.عنوانبهبالاشفافنشانیواحدبارگذارینام کاربرینام کاربرینسخهنسخه %sمشاهده %1$sنمایش خانه‌ی افزونهمشاهده شدهاخطار ، تنظیمات این بخش بدون جاوااسکریپت به درستی کار نمیکنند .به فریم ورک ردوکس خوش آمدیدبه چهارچوب ریداکس خوش آمدید %sبه پنل Redux نسخه ی نمایشی خوش آمدیدتازگی چه خبر؟پهنافاصله کلماتکار ...شما مجوز کافی برای دسترسی به‌این برگه را ندارید.شما تغییرات ذخیره نشده ای دارید. آیا می خواهید آنها را ذخیره کنید؟شما تغییرات ذخیره نشده ای دارید. آیا می خواهید آنها را ذخیره کنید؟شما نباید کدهای HTML را در این فیلد وارد کنید، همه تگ های HTML حذف شده اند.شما نباید کاراکترهای ویژه را در این فیلد وارد کنید . همه ی کاراکتر های ویژه پاک شدند.شما باید یک لیست که مقادیر عددی با کاما جدا شده باشند را برای این گزینه فراهم کنید .شما باید یک مقدار عددی برای این گزینه فراهم کنید.شما باید یک آدرس معتبر برای این گزینه فراهم کنید.شما باید یک ایمیل معتبر برای این گزینه فراهم کنید .کلیک کردنکمک کردن مالیهیچ موردی در این باره پیدا نشد.دارای مجوز خواندن / نوشتن مناسب و یا اطلاعات FTP خود را در زیر وارد کنید.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkحرکت موس براسناد و مدارک مااخطار(هایی) پیدا شده اند!redux/ReduxCore/languages/redux-framework-nb_NO.mo000066600000036247152143340100016222 0ustar00   15L5[D4 ,BRdx   .+JR Y eol '.5 D O [ e r     ZUDK[j]zX16 E Q2] !  #/%6WF   ,*(W    '.Et3z' yqw{ ( U bFG   ;FLEKb% L 3 - !/7!ag!`!*"3"<"Q"Jf"",","%#;#M#td#&&' ' '%'<''A'i'9y'9'9'!'(I(Z(i(}(((( (( ( (0(#) ()2)G)c)l) r)~))l) *** 2*?*G*M* e* r*~** ** * * * **+++(+/+M+!,&,,[,_!-----v-~:.. .. .5.!/&/ ,/&7/^/p/s/ w//,//// 000%00L 1X1_1e1j1{1111111+2#02 T2_2d2s2z22 22 22 22s2)Q3{3,%4R4:W4*4&44k5r5u5 z555+555 55 5556d6~6FW77 77 7 8 8 8?'89g898R8X.9R9692:<D:q:q:e;l;u;;^;;,<-<<j<y<<TVx? %1pAa(bDW=-24l6U*M `].$\r3#/ {o wC:et@'| [z!BmRuSdkIF; "Q^qhG0XP,c7&L5<JgZOjfE}ynv+>_NYH~i8sK9)Activate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Getting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.HoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSystem InfoTeam ReduxText AlignText DecorationText TransformThe following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/redux-framework/language/nb_NO/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: nb_NO Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktiver demo-modusAktiver utviklingstilleggAktivLegg til %sLegg til merLegg til/Fjern galleriAlleAlle standardinnstillinger tilbakesatt!Tillatt sporingEr du sikker? Nullstilling vil fjerne alle innstillinger.Er du sikker? Nullstilling vil fjerne alle innstillinger.Er du sikker? Nullstilling vil fjerne alle innstillinger.Automatisk handling utført: "%s"BakgrunnsvedleggBakgrunnsklippBakgrunnsplasseringBakgrunnsjusteringGjenta bakgrunnBakgrunnsstørrelseBackup skriftfamilieRammestilBunnEndringsloggRens galleriKlikk her for å aktivere prøvekonfigurasjonen.LukkKreditterDeaktiver demo-modusDeaktiver utviklingstilleggStandardFjernBeskrivelseUtviklerUtviklingsmodus påskrudd.Viste du at vi har tillegg, som kan kraftig forebedre mulighetene ved Redux? Se vårt %1$s for å lære mer!DeaktiverLukkIkke tillat sporingEpostadresseAktiverUtvidEksporter innstillingerSkriftsfargeFontfamilieSkriftstørrelseSkriftundersettFontvariantSkriftvekt og -stilSkriftsfargeSkriftfamilieFontskriptSkriftstilSkriftundersettFraLa oss sette i gangGoogle WebfontsHøydeHjelp å forbedre vårt panelHer kan du ta kopi eller laste ned dine nåværende innstilling. Hold dette sikkert, siden du kan bruke den som en sikkerhetskopi om noe skulle gå galt, eller om du vil sette tilbake siden (eller en annen side)HintHint er verktøytips som kommer opp når du %d hint-ikonet, som gir deg opplysninger om feltet. De kan bli %d klikket på, ved å bruke linken nedenfor.SveveHvis så, vennligst %1$s og vurder å gi oss en %2$s for å fortsette utviklingen av Redux.Hvis du vil følge med på hva som skjer rundt Redux, vennligst meld deg på nyhetsbrevet vårtImporterImport / EksportImporter innstillingerImporter fra URLLegg inn URL-en til en annen sides innstillinger, og trykk på «Importer» for å laste innstillingene fra den siden.Velg din sikkerhetskopi-fil nedenfor, og trykk på «Importer» for å gjennopprette dine innstillinger fra en sikkerhetskopi.VenstreBokstavdelingLiker du Redux?LinjehøydeMå være kalt inn etter "plugins_loaded"-handlingen.NavnNy %sNyhetsbrevIngen elementer av denne typen funnet.Ingen medie valgtAvPåInnstillingerInnstillingsobjektInnstillingspanel opprettet ved bruk av %1$sPassordVennligst ventVennglist hjelp oss å forebedre vårt panel ved å la oss anonymt hente ned brukstatstikk, slik at vi vet hvilke konfigurasjoner, utvidelser og temaer å teste for å sikre kompatiblitet.Redux TilleggRedux RammeverkRedux Rammeverks endringsloggRedux Rammeverk har en innebygd demo.Redux GeneratorRedux er et enkelt, utvidbart rammeverk for Wordpress temaer og -utvidelser.NormalFjernDepoTilbakestill altTilbakestill seksjonHøyreLagre endringerSeksjonsstandard tilbakestilt!Velg et elementInnstillinger importert!Innstillinger lagretInnstillingene er endret, du bør lagre de!Vis objekter i Javascript-konsollenStørrelseSkyvStandardskriftStatusStilAbonnerUndersettSysteminformasjonTeam ReduxTekstjusteringTekstdekorTekst-transformeringDe følgende mapper og filer er fremdeles i din Redux mappe. De vil forårsake feil i teamsjekken.Menneskene som utvikler Redux RammeverketTemaet du tester har %s innbygd. Vi vil gjerne invitere deg til å lese %Theme-Check-Documentation%s slik at du forstår noe av advarselene som du vil se, grunnet Redux.Den ukjent handlingen ble erstattet med "%s"TemaDette feltet kan ikke være tomt, vennligst angi en verdi.Dette feltet må være en gylid fargeveri.Dette feltet må være en gyldig dato.Dette panelet demonstrerer de mange mulighetene som finnes med Redux. Før du setter i gang, foreslår vi at du setter deg inn i %1$s.TittelTiToppGjennomsiktigURLEnheterUkjent handling "%1$s" spesifisert for %2%sLast oppBrukerBrukernavnVersjonVersjon %sSe %sGå til utvidelsens nettsideBesøktADVARSEL! Dette vil overskrive samtlige av de nåværende innstillingene. Fortsett med forsiktighet.Vil du komme i gang kjapt? Bruk %1$s. Denne vil opprette et skreddersydd tema, eller en administrasjons-mappe komplett med alt Redux trenger (med hjelp av Underscores og TGM). Spar deg for hodebryet - og prøv i dag!Advarsel - Dette innstillingspanelet vil ikke fungere uten Javascript!Velkommen til Redux Rammeverk.Velkommen til Redux Rammeverk %sVelkommen til Redux demo-panel!Hva er nyttBreddeOrddelingArbeider…Du har ikke nok rettigheter til å få tilgang til denne siden.Du har endringer som ikke er lagret. Vil du lagre de nå?Du har endringer som ikke er lagret. Vil du lagre de nå?Du må ikke skrive inn noe HTML i dette feltet, alle HTML-knagger vil bli fjernet.Du må ikke skrive inn noe spesialtegn i dette feltet, alle spesialtegn vil bli fjernet.Du må angi en komma-separert liste med numeriske verdier for denne innstillingen.Du må angi en numerisk verdi for denne innstillingen.Du må angi en gyldig URL for denne innstillingen.Du må angi en gyldig e-postadresse for denne innstillingen.Dine nåværende innstillinger vil bli erstattet med verdier fra disse forhåndsinnstillingene. Vil du fortsette?Dine nåværende innstillinger vil bli erstattet med verdier fra disse forhåndsinnstillingene. Vil du fortsette?klikkedonasjonfeil ble funnet!tilleggskatalogden har de nødvendige skrive- og leserettigheter, eller skriv inn FTP-opplysningene nedenfor.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworklegg igjen en omtale om oss på Wordpress.orgtar musen overvår dokumentasjon.advarsel(-er) ble funnet!redux/ReduxCore/languages/redux-framework-km.mo000066600000017443152143340100015633 0ustar00`()09JN]s      ! / 6 = L W c n z       Z   0 ? O T c o t               3 C H W ^ d n v  3            & , 9 ;D      R /K=j9E3A<u-E3B v $$$(E;0 3$!(J!f6*'CT'g3-)-W$g6  $'79VBB"-e?C 9$^w00+  $-@n ~' $*&$CKG<RB+*P =[H-EN< ZSD\% #(RFJIXYWGO.2@:)'7C`0&34"T>]V;A9_ UK^Q1$5/M,68?L ! ActiveAdd MoreAdd/Edit GalleryAllAllow trackingBackground AttachmentBackground PositionBackground RepeatBackground SizeBottomChangelogClear GalleryCloseCreditsDefaultDeleteDescriptionDeveloperDisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsExtensionsFont FamilyFont colorFont familyFont styleFrom Getting StartedGoogle WebfontsHeightHintsHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.ImportImport / ExportImport OptionsImport from URLLeftLetter SpacingLike Redux?NameNewsletterNo media selectedOffOnOptionsOptions ObjectPasswordPlease WaitRedux ExtensionsRedux FrameworkRegularRemoveReset AllRightSave ChangesSelect an itemSettings Imported!Settings Saved!SizeStandard FontsStatusStyleSubscribeSupportSystem InfoText AlignThemeThis field cannot be empty. Please provide a value.TitleTo TopTransparentURLUnitsUploadUserUsernameVersion %sView %sVisitedWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.donationerror(s) were found!extensions directoryour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Khmer (http://www.transifex.com/projects/p/redux-framework/language/km/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: km Plural-Forms: nplurals=1; plural=0; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes ដែល​សកម្មបន្ថែម​ទៀតបន្ថែម​/កែ​វិចិត្រសាលទាំង​អស់អនុញ្ញាត​ការ​តាមដានឯកសារ​ភ្ជាប់​ផ្ទៃ​ក្រោយទីតាំង​ផ្ទៃ​ក្រោយធ្វើផ្ទៃ​ក្រោយ​ដដែលៗទំហំ​ផ្ទៃ​ក្រោយខាង​ក្រោមកំណត់​ត្រា​ផ្លាស់​ប្ដូរសម្អាត​វិចិត្រសាលបិទក្រឌីដលំនាំ​ដើមលុបការ​អធិប្បាយអ្នក​អភិវឌ្ឍមិន​អនុញ្ញាតបំបាត់មិន​អនុញ្ញាត​ការ​តាមដានអាសយដ្ឋាន​អ៊ីមែលបើកពង្រីកជម្រើស​ការ​នាំចេញផ្នែក​បន្ថែមពុម្ព​អក្សរពណ៌​អក្សរពុម្ព​អក្សររចនាបថ​ពុម្ព​អក្សរពីការ​ចាប់​ផ្ដើមGoogle Webfontsកម្ពស់គន្លឹះចង្អុល​លើប្រសិន​បើ​ចូល​ចិត្ត សូម %1$s ហើយ​គិត​ធ្វើ %2$s ដើម្បី​រក្សា​ឲ្យ​ការ​អភិវឌ្ឍ Redux នៅ​តែ​ទៅ​មុខ​ជា​និច្ច។នាំចូលនាំចូល / នាំចេញជម្រើស​ការ​នាំចូលនាំចូល​ពី URLខាង​ឆ្វេងគម្លាត​តួ​អក្សរចូល​ចិត្ត Redux ទេ?ឈ្មោះព្រឹត្តិបត្រមិន​បាន​ជ្រើស​មេឌាបិទបើកជម្រើសជម្រើស​វត្ថុពាក្យ​សម្ងាត់សូម​រង់ចាំផ្នែក​បន្ថែម​របស់ ReduxRedux Frameworkធម្មតាដកចេញកំណត់​ឡើង​វិញ​ទាំង​អស់ខាង​ស្ដាំរក្សាទុក​បន្លាស់​ប្ដូរជ្រើស​វត្ថុ​មួយបាន​នាំចូល​ការ​កំណត់។បាន​រក្សាទុក​ការ​កំណត់!ទំហំពុម្ពអក្សរ​ស្តង់ដារស្ថានភាពរចនាបថតាមដានការគាំទ្រព័ត៌មាន​ប្រព័ន្ធការ​តម្រឹម​អក្សរស្បែកវាល​នេះ​មិន​ទទេ​បាន​ឡើយ។ សូម​ផ្ដល់​តម្លៃ​អ្វី​មួយ។ឈ្មោះទៅខាង​លើថ្លាURLឯកតាផ្ទុក​ឡើងអ្នក​ប្រើឈ្មោះ​អ្នក​ប្រើកំណែ %sមើល %sបាន​មើលអ្វី​ដែល​ថ្មីទទឹងគម្លាត​ពាក្យកំពុង​ធ្វើការ...អ្នក​គ្មាន​សិទ្ធិ​គ្រប់គ្រាន់​ដើម្បី​ចូល​ទៅកាន់​ទំព័រ​នេះ​ទេ។ការ​បរិច្ចាគកំហុស​ត្រូវ​បាន​រក​ឃើញ!ឃ្លាំង​ផ្ទុក​ផ្នែក​បន្ថែមកម្រង​ឯកសារ​របស់​យើងការ​ព្រមាន​ត្រូវ​បាន​រក​ឃើញ!redux/ReduxCore/languages/redux-framework-tr_TR.mo000066600000037166152143340100016262 0ustar00 5 DA4 (:J ]jq y .    '1lH    $ / ; E R_ w     ZU5]X0   2 ! ,>BEM \ } DUe%W  ! +9 ?Lgv,(   ( 0 < GRbq'.M3S' yJPT Xdh(n U;F g   ;F>EKb Lz 3 - /)!aY!`!"%"."C"JX"",","#-#?#\V#&&&&& ' '"'%)'O'Nb'Z'K ("X( {(((((((() ))-)J<)))))() )* * **4****** + ++ <+G+W+h+y++%+++++,', 0, :,E, U,*`,, --j-W. Z.h....}.L/////03"0V0f0n0$v0000 00/0 11$1512.2(>2+g22|2#3,34393M3a3f3&}3333%30 4;4A4I4_4e4j4 s4}44!44444(o5(551505))6S6667777/7K7 R7^7n7 v77"77X78F9 X9y9!99 9 99 9.:>7:Hv:P:T;Ve;E;9<D<<V<V< /=<=E=X=Kj==,=3=1>N>a>1% Q,W i?69mPS_5f='\xNI#oVuEr$*egJ^|Z3&Fzk~ATXDp7qY>LnHd4;MhK("RB2c/<)t Olj}C+aG:v.8] [0b{`-!wysU@Activate Demo ModeActivate Development PluginsActiveAdd %sAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomBrowserChangelogClear GalleryClick here to activate the sample config file.CloseCopy DataCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingDownload Data FileEmail addressEnableExpandExport OptionsExtensionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Front PageGetting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from FileImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.Learn MoreLeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP VersionPasswordPlease WaitPlease helps us improve our panel by allowing us to gather anonymous usage stats so we know which configurations, plugins and themes to test to ensure compatibility.Redux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoTeam ReduxText AlignText DecorationText TransformThe following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to Redux Framework %sWelcome to the Redux Demo PanelWhat is Redux Framework?What's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-15 14:12+0000 Last-Translator: Samet Köseoğlu Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/redux-framework/language/tr_TR/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: tr_TR Plural-Forms: nplurals=1; plural=0; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Demo Modunu EtkinleştirGeliştirme Eklentilerini EtkinleştirEtkin%s EkleBaşka EkleGaleri Ekle/DüzenleTümüVarsayılanların Hepsi Restore Oldu!İzlemeye izin verEmin misiniz? Sıfırlama özelleştirilmiş tüm değerleri kaybettirecektir.Emin misiniz? Sıfırlama bu kısımdaki tüm özelleştirilmiş değerleri kaybettirecek.Emin misiniz? Sıfırlama tüm özelleştirilmiş değerleri kaybettirecek.Otomatik eylem gerçekleşti: "%s"Arkaplan EkiArkaplan ŞablonuArkaplan OrijiniArkaplan KonumuArkaplan TekrarıArkaplan BoyutuYedek Yazıtipi AilesiKenarlık tarzıAltTarayıcıDeğişiklik GünlüğüGaleri TemizleÖrnek yapılandırma dosyasını etkinleştirmek için buraya tıklayın.KapatVeriyi KopyalaKatkı sağlayanlarDemo Modunu EtkisizleştirGeliştirme Eklentilerini EtkisizleştirVarsayılanSilAçıklamaGeliştiriciGeliştirici Modu EtkinRedux'ın özelliklerini harika şekilde artıran eklentilerimizin olduğunu biliyor muydunuz? Dahasını öğrenmek için %1$sEtkisizleştirGizleİzlemeye izin vermeVeri Dosyasını İndirinEmail adresinizEtkinleştirGenişletSeçenekleri Dışarı AktarEklentilerYazıtipi RengiYazıtipi AilesiYazıtipi BoyutuYazıtipi Alt KümeleriYazıtipi VaryantıYazıtipi Kalınlığı & TarzıYazıtipi rengiYazıtipi ailesiYazıtipi skriptiYazıtipi tarzıYazıtipi alt kümeleriŞundan:Ön SayfaBaşlarkenGoogle WebfontsYükseklikPanelimizi geliştirmek için yardım edinGeçerli seçenek ayarlarınızı buradan kopyalayabilirsiniz/indirebilirsiniz. Herhangi yanlışlıkta yedek olarak kullanabileceğiniz gibi bu sitedeki (ya da başka sitedeki) ayarlarınızı restore amaçlı kullanabilmeniz için güvende tutunuz.TavsiyelerHoverÖyleyse, lütfen %1$s ve Redux'ın geliştirme sürecini ileri taşımak için %2$s yapmayı düşünün.Redux hakkında hiçbir şey kaçırmak istemiyorsanız lütfen bültenimize abone olunİçeri Aktarİçeri Aktar / Dışarı Aktarİçeri Aktarma SeçenekleriDosyadan içe aktarURL'den içeri aktarBirbaşka sitenin seçenek setine giden URL'yi giriniz ve o sitenin seçeneklerini yüklemek için İçeri Aktar'a basınız.Aşağıya yedek dosyanızın yolunu giriniz ve sitenizin seçeneklerini yedekten restore etmek için İçeri Aktar'a basınız.Daha fazla bilgi alınSolHarf AralığıRedux'ı sevdiniz mi?Satır Yüksekliği"plugins_loaded" eyleminden sonra çağırılmalı.Bağlantı ismiYeni %sBültenBu tipte hiçbir eleman bulunamadı.Medya seçili değilKapalıAçıkSeçeneklerSeçenekler NesnesiSeçenek paneli %1$s kullanılarak oluşturulduPHP SürümüŞifreLütfen BekleyinLütfen yapılandırmaları, eklentileri ve temaları test etmek ve bunların framework'ümüz ile uyumluluğunu sağlamak için anonim kullanım istatistikleri toplamamıza izin vererek panelimizi geliştirmemize yardımcı olun.Redux EklentileriRedux FrameworkRedux Framework Değişiklik GünlüğüRedux Framework gömülü bir demoya sahip.Redux JeneratörüRedux WordPress tema ve eklentileri için basit, gerçek genişletilebilir bir yapılandırma seçenekleri framework'üdür.SıradanKaldırRepoTümünü SıfırlaKısımı SıfırlaSağDeğişiklikleri SaklaKısım Varsayılanları Restore Oldu!Bir eleman seçAyarlar İçeri Aktarıldı!Ayarlar Saklandı!Ayarlar değişti, saklamalısınız!Nesneyi Javascript Konsol Nesnesi olarak gösterBoyutSürgüStandart YazıtipleriDurumTarzAbone olAltsetlerDestekSistem BilgisiTeam Redux (çeviri: mapazarbasi)Metin HizalamaMetin DekorasyonuMetin DönüşümüAşağıdaki klasör ve dosyalar halen Redux klasörünüzde bulunuyor. Bu tema kontrolünde soruna neden olabilir.Redux Framework 'ü geliştiren insanlarBilinmeyen eylem "%s" ile değiştirildiTemaBu alan boş olamaz. Lütfen bir değer belirtin.Bu alan geçerli bir renk değeri olmak zorunda.Bu alan geçerli bir tarih olmak zorunda.Bu panel Redux'ın birçok özelliğini uygulamalı gösterir. Derinlere inmeden önce, %1$s 'i gözden geçirerek hızınızı artırmanızı tavsiye ederiz.BaşlıkŞuna:ÜstSaydamURLBirimler%2$s için belirlenmiş bilinmeyen eylem "%1$s"YükleKullanıcıKullanıcıadıSürümSürüm %s%sEklenti ana sayfasını ziyaret etZiyaretlenmişUYARI! Bu tüm varolan seçenek değerlerinin üzerine yazacak, lütfen dikkatli olunuz!Üstünlük sağlamak ister misiniz? %1$s eklentisini kullanın. Özelleştirilmiş bir kalıp tema oluşturabilir veya a standalone admin folder complete with all things Redux (Underscores ve TGM yardımıyla). Şimdi deneyin ve başağrısından kurtulun.Uyarı: Bu seçenek paneli javascript olmaksızın doğru çalışmaz!Redux Framework 'e hoş geldinizRedux Framework %s HoşgeldinizRedux Demo Paneli'ne HoşgeldinizRedux Framework Nedir?Yeni Ne Var?GenişlikKelime Aralığıİşliyor...Bu sayfaya erişmek için yeterli izniniz yok.Saklanmamış değişiklikleriniz var. Saklamak ister misiniz?Saklanmamış değişiklikleriniz mevcut. Şimdi saklamak ister misiniz?Bu alana herhangi HTML etiketi giremezsiniz, tüm HTML etiketleri kaldırıldı.Bu alana herhangi özel karakter giremezsiniz, tüm özel karakterler kaldırıldı.Bu seçenek için virgülle ayrılmış nümerik değer listesi girmek zorundasınız.Bu seçenek için geçerli bir nümerik değer girmek zorundasınız.Bu seçenek için geçerli bir URL girmek zorundasınız.Bu seçenek için geçerli bir e-posta adresi girmek zorundasınız.Geçerli seçimleriniz bu önsetteki değerlerle değiştirilecek. Onaylıyor musunuz?Geçerli seçimleriniz bu önsetteki değerlerle değiştirilecek. Onaylıyor musunuz?tıklanıyorbağışhata(lar) bulundu!eklentiler diziniuygun okuma/yazma izinleri edinin ya da aşağıya FTP bilgilerinizi girin.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkWordPress.org'a değerli görüşlerinizi bırakınmouse üzerinde gezdiriliyordokümantasyonumuzuyarı(lar) bulundu!redux/ReduxCore/languages/redux-framework-el.mo000066600000043712152143340100015622 0ustar00        5DJ4  1CS fs z .   l(      ! 9 D P \ gtzZUBIYh]xX/4 C O2[ !  $ -9J%Z    ,(Irw}   .3'R zy #/3(9binw UF2R X e;pFEK9bL35-i/a`),Y9m!H! !+!6)"`"Dg"6"{"_#$E$$$%!%7%W%nt%%%&#.&R&&&=&E<''''''((=)DC))))')1)+.*0Z*/*7*'*1+8M+%+/++++,E,]W,.../Z0!k0#030x0^1f2"v222P2 3 3#'3HK3J3333)4`:444%444O 5\5u5555#5 5.5G6(b6*6.6e6aK777+77 88$878+L8!x8%8/8Q8B9sK9j9_*: : ;; ; ;;;U;+< <<I< a<n<~<<<<<=~i?G? 0@=@]@Zw@@hAABrCj#DpDrDrE'F F&F'GM)GwG3GU{QWX)np^l*F-ewjTS5%P(mzYgir`vDZR.h+xNLJ ;20Kk d?3V 7O y_<!A>1}|HB]u$G,ot/q[IEb8 \ ~c=':s69aM@"&4Cf#Activate Demo ModeActivate Development PluginsActiveAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Getting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNew %sNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPHP VersionPasswordPlease WaitRedux ExtensionsRedux FrameworkRedux Framework has an embedded demo.Redux GeneratorRegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoText AlignText DecorationText TransformThe unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to the Redux Demo PanelWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?donationerror(s) were found!extensions directoryleave us a favorable review on WordPress.orgour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Greek (http://www.transifex.com/projects/p/redux-framework/language/el/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: el Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Ενεργοποιήστε τη λειτουργία DemoΕνεργοποιήσετε Αναπτυσσόμενα ΠρόσθεταΕνεργόΠροσθέσετε ΠερισσότεροΠροσθήκη/Επεξεργασία ΓκαλερίΌλαΌλες οι Προεπιλογές Αποκαταστάθηκαν!Επιτρέψετε την παρακολούθησηΕίσαι σίγουρος; Η επαναφορά θα χάσει όλες τις προσαρμοσμένες τιμές.Είστε σίγουροι; Η επαναφορά θα χάσει όλες τοις προσαρμοσμένες τιμές σε αυτή την ενότητα.Είστε σίγουροι; Στη επαναφορά θα χάσετε όλες τις προσαρμοσμένες τιμές.Αυτόματη ενέργεια που εκτελέστηκε: "%s"Επισύναψη φόντουΦόντο ΒίντεοΠροέλευση ΦόντουΘέση φόντουΕπανάληψη φόντουΜέγεθος Φόντου Δημιουργία αντιγράφων ασφαλείας Οικογένεια ΓραμματοσειράςΣυνοριακό στυλKάτω μέροςΣύνοψη αλλαγώνΚαθαρισμός ΓκαλερίΚάντε κλικ εδώ για να ενεργοποιήσετε το αρχείο ρυθμίσεων του δείγματος.ΚλείσιμοΕυχαριστίεςΑπενεργοποιήστε τη λειτουργία DemoΑπενεργοποιήσετε Πρόσθετα Ανάπτυξης ΠροεπιλογήΔιαγράψετεΠεριγραφήΠρογραμματιστήςΓνωρίζατε ότι έχουμε επεκτάσεις, οι οποίες αυξάνουν σημαντικά τα χαρακτηριστικά του Redux; Επισκεφθείτε μας %1$s για να μάθετε περισσότερα!ΑπενεργοποίησηΑπόκρυψηΜην Επιτρέψετε την παρακολούθησηΔιεύθυνση ηλεκτρονικού ταχυδρομείουΕνεργοποίησηΑναπτύξτεΕξαγωγή ΕπιλογώνΧρώμα ΓραμματοσειράςΟικογένεια γραμματοσειράςΜέγεθος ΓραμματοσειράςΥποσύνολο Γραμματοσειρών Παραλλαγή ΓραμματοσειράςΒάρος Γραμματοσειράς & ΣτυλΧρώμα γραμματοσειράςΟικογένεια γραμματοσειρώνΓραμματοσειρά δέσμη ενεργειώνΣτυλ γραμματοσειράςΥποσύνολα ΓραμματοσειρώνΑπόΞεκινώνταςGoogle WebFontsΎψοςΒοηθήστε μας να βελτιώσουμε το Panel μαςΕδώ μπορείτε να αντιγράψετε/κατεβάστε τις τρέχουσες ρυθμίσεις τών επιλογών σας. Κρατήστε αυτό το ασφαλές, όπου μπορείτε να το χρησιμοποιήσετε ως ένα αντίγραφο ασφαλείας σε περίπτωση που κάτι πάει στραβά, ή μπορείτε να το χρησιμοποιήσετε για να επαναφέρετε τις ρυθμίσεις σας σε αυτή την ιστοσελίδα (ή οποιαδήποτε άλλη ιστοσελίδα).ΣυμβουλέςΕπικρέμαμαιΕάν ναι, παρακαλούμε %1$s και να εξετάσει κάνοντας %2$s για να κρατήσει την ανάπτυξη από Redux να προχωρήσει.Αν θέλετε να παρακολουθείτε με όλα τα πράγματα Redux, παρακαλούμε να εγγραφείτε στο ενημερωτικό δελτίο μαςΕισαγωγήΕισαγωγή / ΕξαγωγήΕπιλογές ΕισαγωγήςΕισαγωγή από τη διεύθυνση URLFüge die URL von einer anderen Seiten Optionen hinzu und drücke Importieren um die Optionen von dieser Seite zu laden.Εισάγετε το εφεδρικό αρχείο σας παρακάτω και πατήστε Εισαγωγή για να επαναφέρετε τις επιλογές των ιστοσελίδων σας από ένα αντίγραφο ασφαλείας.AριστεράΔιάστημα Επιστολή Όπως Redux;Ύψος ΓραμμήςΠρέπει να καλέσετε μετά την δράση «plugins_loaded".ΌνομαΝέο %sΕνημερωτικό ΔελτίοΒρέθηκε.χωρίς στοιχεία αυτού του τύπου.Δεν υπάρχουν επιλεγμένα μέσα ενημέρωσηςΚλείσιμοΆνοιγμαΕπιλογέςΕπιλογές ΑντικειμένουΠίνακα επιλογών που έχει δημιουργηθεί με τη χρήση %1$sΈκδοση PHPΚωδικόςΠαρακαλώ ΠεριμένετεΕπεκτάσεις ReduxRedux FrameworkΤο Πλαίσιο Του Redux έχει ένα ενσωματωμένο demo.Γεννήτρια ReduxΚανονικάΑφαίρεσηΡεπόΕπαναφορά ΌλωνΕπαναφορά ΤμήματοςΔεξιάΑποθηκεύσετε τις ΑλλαγέςΠροεπιλογές Τμήματος Αποκαταστάθηκαν!Επιλέξτε ένα στοιχείοΡυθμίσεις Εισήχθηκαν! Ρυθμίσεις Αποθηκεύτηκαν!Ρυθμίσεις έχουν αλλάξει, θα πρέπει να τις αποθηκεύσετε!Εμφάνιση αντικειμένου σε Κονσόλα Javascript ΑντικείμενουΜέγεθοςΟλίσθησηΓραμματοσειρές ΠρότυπαΚατάστασηΣτυλΕγγραφήΥποσύνολαΥποστήριξηΠληροφορίες ΣυστήματοςΣτοίχιση κειμένουΔιακόσμηση ΚειμένουΜετασχηματισμός κειμένουΗ άγνωστη δράση έχει αντικατασταθεί με τη "%s"ΘέμαΑυτό το πεδίο δεν μπορεί να είναι κενό. Παρακαλώ δώστε μια τιμή.Αυτό το πεδίο πρέπει να αποτελεί μία έγκυρη τιμή χρώματος.Αυτό το πεδίο πρέπει να είναι μια έγκυρη ημερομηνία.Αυτός ο πίνακας δείχνει τα πολλά χαρακτηριστικά του Redux. Πριν από το σκάψιμο σε, σας προτείνουμε να πάρετε μέχρι την ταχύτητα με την επανεξέταση %1$s.ΤίτλοςΣέΚορυφήTransparentURLΜονάδεςΆγνωστη ενέργεια "%1$s" που καθορίζεται για το %2$sΑνεβάστεΜέλουςΌνομα ΧρήστηΈκδοσηΈκδοση %s%s Δείτε τον ιστότοπο του προσθέτουΕπισκέφτηκεΠΡΟΣΟΧΗ! Αυτό θα διαγράψει όλες τις υπάρχουσες αξίες, σας παρακαλούμε να προχωρίσεται με προσοχή!Θέλετε να πάρετε ένα προβάδισμα; Χρησιμοποιήστε το %1$s. Θα δημιουργήσει ένα προσαρμοσμένο θέμα στερεότυπο ή ένα αυτόνομο admin φάκελο πλήρες με όλα τα πράγματα Redux (με τη βοήθεια από υπογράμμισης και TGM). Σώσε τον εαυτό σου έναν πονοκέφαλο και να το δοκιμάσετε σήμερα.Προειδοποίηση-Αυτός ο πίνακας δεν θα λειτουργήσει σωστά χωρίς javascript!Καλώς ήρθατε στον Πίνακα Επίδειξης ReduxΠλάτοςΛέξη ΔιαστήματοςΔουλεύοντας...Δεν έχετε δικαιώματα πρόσβασης σε αυτή τη σελίδα.Έχετε κάνει αλλαγές που δεν είναι αποθηκευμένες. Θέλετε να τις αποθηκεύσετε τώρα;Έχετε κάνει αλλαγές που δεν έχουν αποθηκευτεί. Θέλετε να τοις αποθηκεύσετε τώρα;Δεν πρέπει να εισέρχονται σε οποιαδήποτε HTML στον τομέα αυτό, όλες οι ετικέτες HTML έχουν αφαιρεθεί.Δεν πρέπει να εισάγετε ειδικούς χαρακτήρες σε αυτόν τον τομέα, όλοι οι ειδικοί χαρακτήρες έχουν αφαιρεθεί.Πρέπει να δώσετε ένα με κόμμα διαχωρίζοντας την λίστα των αριθμητικών τιμών με αυτή την επιλογή.Πρέπει να δώσετε μια αριθμητική τιμή για αυτή την επιλογή.Πρέπει να δώσετε μια έγκυρη διεύθυνση URL για αυτή την επιλογή.Πρέπει να δώσετε μια έγκυρη διεύθυνση email για αυτή την επιλογή.Τρέχουσες επιλογές σας θα πρέπει αντικατασταθούν με τις αξίες αυτού του Preset. Θέλετε να συνεχίσετε;Τρέχουσες επιλογές σας θα αντικατασταθούν με τις αξίες αυτού του Preset. Θέλετε να συνεχίσετε;δωρεάσφάλμα (-τα) βρέθηκαν!κατάλογος επεκτάσεωναφήστε μας μία ευνοϊκή κριτική για WordPress.orgή τεκμηρίωση μαςπροειδοποίηση (ες) βρέθηκαν!redux/ReduxCore/languages/redux-framework-hr.mo000066600000022016152143340100015625 0ustar00pp q      5 D 43 h ~    .    5 = D P Z b j              ]! X    ! %- <]f%v   ,(5^cry '    #.DULF  ;FCEKbL3-/.a^`!6M  48KJZK=Oa v =%-2 EPXr{     !" & + 8 EVSK  !!2T ['i"  "44I#~  4*&QX[_hlu~ lI:    5 @ @!G\!c!d"3m")"2"l"kk###R/O<8>,b# pdm^`%"+0fP5TEVY L(G*9Ja] S .6H3nMU)ClKcNX!4Dg1eh'Z2@:&7[$ WBI;?Fki=Q-jo _\AActivate Demo ModeActiveAdd MoreAdd/Edit GalleryAllAllow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDefaultDeleteDescriptionDeveloperDisableDismissDo not allow trackingEnableExpandExport OptionsFont FamilyFont colorFont familyFont scriptFont styleFont subsetsFrom Google WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HoverImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingNameNo items of this type were found.No media selectedOptionsOptions ObjectOptions panel created using %1$sPasswordRedux FrameworkRedux Framework has an embedded demo.RegularRemoveReset AllReset SectionRightSave ChangesSelect an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeStandard FontsStatusStyleSubsetsSystem InfoThemeThis field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUploadUserUsernameVersionVersion %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Warning- This options panel will not work properly without javascript!WidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?error(s) were found!warning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Croatian (http://www.transifex.com/projects/p/redux-framework/language/hr/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: hr Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes Aktiviraj demo način radaActiveDodaj jošDodaj/Uredi galerijuSviDopusti praćenjeJeste li sigurni? Resetiranjem ćete izgubiti sve prilagođene vrijednosti.Jeste li sigurni? Resetiranjem ćete izgubiti sve prilagođene vrijednosti u ovoj sekciji.Jeste li sigurni? Resetiranjem ćete izgubiti sve prilagođene vrijednosti.Privitak PozadinePozicija PozadinePonavljanje PozadinePohrani fontStil rubaDnoDnevnik promjenaObriši galerijuKliknite ovdje za aktivaciju probne konfiguracijske datoteke.ZatvoriZaslugeDeaktiviraj demo način radaZadanoObrišiOpisRazvojni programerOnemogućiZatvoriNemoj dopustiti praćenjeOmogućiProširiOpcije izvozaObitelj fontovaBoja fontaSkupina fontaFont scriptStil fontaPodskupovi fontaOdGoogle Web-fontoviVisinaPomozi nam poboljšati naš panelOvdje možete kopirati/preuzeti svoje trenutne postavke opcija. Čuvajte ih na sigurnom kako biste ih mogli koristiti kao backup u slučaju da nešto pođe krivo, također ih možete koristiti za vraćanje postavki na ovom sajtu (ili bilo kojem drugom).HoverUvozUvoz / IzvozOpcije uvozaUvoz iz URL-aUnesi URL do opcija nekog drugog sajta i lupi Uvoz za učitavanje opcija iz tog sajta.Unesi dolje svoju backup datoteku i lupi Uvoz za povrat opcija iz backup-a.LijevoRazmak slovaNazivNisu pronađene stavke ovog tipa.Nema odabranih medijskih datotekaOpcijeObjekt opcijaPanel opcija je kreiran koristeći %1$sLozinkaRedux FrameworkRedux Framework ima ugrađen demo.RegularanUkloniResetiraj sveResetiraj sekcijuDesnoSpremi promjeneOdaberi stavkuPostavke uvezene!Postavke spremljene!Postavke su promijenjene, trebali biste ih spremiti!Pokaži objekt u Javascript konzoliVeličinaStandardni fontoviStatusStilPodskupoviInformacije o sustavuTemaOvo polje mora sadržavati ispravnu vrijednost boje.Ovo polje mora sadržavati ispravan datum.NaslovDoVrhProzirnoURLJedinicePrijenosKorisnikKorisničko imeInačicaInačica %sPosjeti stranicu dodatkaVisitedUPOZORENJE! Ovo će unijeti nove vrijednosti preko postojećih, molimo nastavite samo ako znate što radite!Upozorenje- Ovaj panel s opcijama neće ispravno raditi bez JavaScript-a!ŠirinaRazmak riječiRadim...Nemate dopuštenje potrebno za pristup ovoj stranici.Imate izmjene koje nisu spremljene. Želite li ih spremiti sada?Imate izmjene koje nisu spremljene. Želite li ih spremiti sada?Ne smijete unositi HTML u ovo polje, svi HTML tagovi bit će uklonjeni.Ne smijete unositi specijalne znakove u ovo polje, svi specijalni znakovi tagovi bit će uklonjeni.Morate osigurati zarezom odvojeni popis (en. comma separated) numeričkih vrijednosti za ovu opciju.Morate unijeti numeričku vrijednost za ovu opciju.Morate unijeti valjani URL za ovu opciju.Morate unijeti valjanu email adresu za ovu opciju.Vaše trenutne opcije biti će zamijenjene vrijednostima ovih predefiniranih postavki. Želite li nastaviti?Vaše trenutne opcije bit će zamijenjene vrijednostima ovih predefiniranih postavki. Želite li nastaviti?greška(e) su pronađene!upozorenje(a) su pronađena!redux/ReduxCore/languages/redux-framework-ne_NP.mo000066600000032365152143340100016223 0ustar00m@ A T [ d u y  5 D 4 O e y   .      % < D Z a p |           ] XX    !    6 ?K%[   ,(5^cix '   U#Fy  FE%KkbL3g-/a`[Jh30: ;ZED.C17L#5R R9_*,+GCD(#(Cl&  e@>! Q! ^!$k!;!-!!"#+# $M$9k$$"$Z$?%7U%%B%%%) &,3&`&>p&]&6 '6D'+{''J2( }((( ( ((+(])Vw)) ) ))**+*!;*+]***z+,(!,J,g,--Z.//0/112/3 424^ )-;63*_  mei[]"(.bPTE9VY %GL?7K'O,lS 4H1jNU&Bh=`CJXM2Dc/ad$Z0R8#5k!WAI>Fg<Q+f \:@Activate Demo ModeActiveAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Background AttachmentBackground PositionBackground RepeatBackup Font FamilyBorder styleBottomClear GalleryClick here to activate the sample config file.CloseDeactivate Demo ModeDefaultDeleteDescriptionDeveloper Mode EnabledDismissDo not allow trackingExpandExport OptionsFont FamilyFont colorFont familyFont scriptFont styleFont subsetsFrom Google WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHoverImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingNameNo items of this type were found.No media selectedOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitRedux FrameworkRedux Framework has an embedded demo.RegularRemoveReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubsetsSystem InfoThis field must be a valid color value.This field must be a valid date.TitleTo TopTransparentURLUnitsUploadUserUsernameVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Warning- This options panel will not work properly without javascript!WidthWord SpacingWorking...You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?error(s) were found!has the proper read/write permissions or enter your FTP information below.warning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Nepali (Nepal) (http://www.transifex.com/projects/p/redux-framework/language/ne_NP/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ne_NP Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes डेमो मोड सक्रिय गरसक्रियअझ थप्नुहोसनयाँ / सम्पादन ग्यालरीसबैसबै पूर्वनिर्धारित पुनर्स्थापित!ट्रयाकिङ अनुमति दिनुहोस्तपाईं निश्चित हुनुहुन्छ? रिसेट गर्दा सबै कस्टम मानहरु गुम्नेछ !तपाईं निश्चित हुनुहुन्छ? रिसेट गरेमा सबै कस्टम मान गुम्नेछ ।तपाईं निश्चित हुनुहुन्छ? रिसेट गर्दा सबै कस्टम मानहरु गुम्नेछ !पृष्ठभुमिको संलग्ऩवस्तुपृष्ठभूमिको स्थानपृष्ठभूमि दोहोराउनेजगेडा फन्ट रङसीमा शैलीतलग्यालरी खाली गर्नुसनमूना सक्रिय गर्न यहाँ थिच्नुसबन्दडेमो मोड निष्क्रिय गरपूर्वनिर्धारितमेट्नुसविवरणडेभलपर मोड सक्षमखारेज गर्नुहोस्ट्रयाकिङ अनुमति नदिनुहोस्विस्तारविकल्पहरु निर्यात गर्नुसअक्षरको परिवारफन्ट रङफन्ट परिवारफन्ट स्क्रिप्टफन्ट शैलीफन्ट सबसेटहरु बाटगुगल Webfontsऊचाईहाम्रो प्यानल सुधार गर्न सहयोग गर्नुसयहाँ तपाईं आफ्नो वर्तमान विकल्पहरु डाउनलोड / कपी गर्न सक्नु हुन्छ ! यसलाई सुरक्षित राख्नुस किनकि केहि बिग्रेमा यो जगेडाको रुपमा बस्नेछ अनि पछि यहि साइट (वा अन्य साइट) मा पुनःस्थापना गर्न सकिन्छ !सङ्केतहोभरआयातआयात / निर्यातविकल्पहरु आयात गर्नुसURL बाट आयात गर्नुसअर्को साइटबाट विकल्प ल्याउन यहाँ अर्को साइटको विकल्पको URL हाल्नुस अनि आयात थिच्नुस !जगेडा फाइलबाट साइट विकल्पहरु पुनःस्थापना गर्न तल आफ्नो जगेडा फाइल हाल्नुहोस् अनि आयात थिच्नुस!वायाँअक्षर खालीस्थाननामयस प्रकारको कुनै आइटम पाइएन ।मिडिया चयन गरिएको छैनविकल्पहरुविकल्प वस्तु%1$s प्रयोग गरी विकल्प प्यानल बनाइयोपासवर्डप्रतीक्षा गर्नुहोस्Redux FrameworkRedux Framework मा एम्बेडेड डेमो छ !नियमितहटाउनुससबै नष्ट गर्नुसखण्ड नष्ट गर्नुसदायाँपरिवर्तनहरू बचत गर्नुसखण्ड पूर्वनिर्धारित पुनर्स्थापित!एउटा आइटम चयन गर्नुससेटिङहरू आयात गरियो!सेटिङ बचत गरियो! सेटिङहरू परिवर्तन गरिएका छन, तिनीहरूलाई बचत गर्नुस !Object लाई Javascript Console Object मा देखाउनुसआकारस्लाइडमानक फन्ट्सखबरशैलीसबसेटहरुप्रणाली जानकारीयो फिल्ड एक मान्य रंग मान हुनुपर्छ।यो फिल्ड एक मान्य मिति हुनुपर्छ।शीर्षकतिरमाथिपारदर्शीURLइकाइहरुअपलोडप्रयोगकर्ताप्रयोगकर्ता नामहेरिएकोचेतावनी! सबै विद्यमान विकल्प मानहरु अधिलेखन हुनेछ, कृपया सावधानीसंग अगाडी बढ्नुस !चेतावनी- यो विकल्प प्यानल javascript विना राम्ररी काम गर्नेछैन !चौडाईशब्द खालीस्थानकाम गर्दै...परिवर्तनहरू बचत गरिएका छैनन् । तपाईं अब त्यसलाई बचत गर्न चाहनुहुन्छ?परिवर्तनहरू बचत गरिएका छैनन् । तपाईं अब त्यसलाई बचत गर्न चाहनुहुन्छ?यस फिल्डमा कुनै HTML नहाल्नुस, सबै HTML ट्याग हटाइएको छ।यस फिल्डमा कुनै विशेष वर्ण हाल्न हुदैन, सबै विशेष वर्ण हटाइएको छ।तपाईंले यो विकल्पका लागि संख्यात्मक मानको एक अल्पविराम विभाजित सूची प्रदान गर्नुपर्छ।तपाईले यो विकल्पका लागि एक मान्य संख्यात्मक मान प्रदान गर्नुपर्छ।तपाईले यो विकल्पका लागि एक मान्य URL प्रदान गर्नुपर्छ।तपाईंले यो विकल्पका लागि वैध इमेल प्रदान गर्नुपर्छ।वर्तमान विकल्पहरुमा पूर्व निर्धारित मानहरु प्रतिस्थापन गरिनेछ। तपाईं यो प्रक्रिया गर्न चाहनुहुन्छ?वर्तमान विकल्पहरुमा पूर्व निर्धारित मानहरु प्रतिस्थापन गरिनेछ। तपाईं यो प्रक्रिया गर्न चाहनुहुन्छ?त्रुटि (हरू) पाइयो!उचित पढ्ने / लेख्ने अनुमति छ वा तल आफ्नो FTP जानकारी प्रविष्ट गर्नुहोस्।चेतावनी (हरू) पाइयो!redux/ReduxCore/languages/redux-framework-ar.mo000066600000041625152143340100015625 0ustar00t `at5D4W   .; B L.Z  lt|        # / ; FSYiydjZpU!(8G]WX " .2:m r!}  &%@fWv    (7J,Z(   ''.r3' y$ ( 1U9Ft   ;F[EKb4L3-/Fav`9 B K ` Ju  , ,!4!J!\!s!&!%$H%m%v%)%%A%%p&&p'/'$''' ("(<((R({( (((@())&2)$Y)~)) ) )%)) q* |*"*!* **** ++&.+U+g+++++++ ++ ,%,IB,- --2..../+//c0l00080 00B1b111 116112#2=2.Z2<2223 3 3+3-3 44G-4u4'44?4M5 ]5 h5u5 55 5555556%6M7\74G8|8W8G8@%9f9:!: (:5: >: K:(V:::: :: :"::q:$l;m<5<C5=y=== =Q=Q >Q\>v>~%?g?E @CR@I@q@qRAA A"AB BB,B>B%/CUCuC0?ai@P#A3W'1{R7Bnl(ELy U}qh\V>C Y2)_&z uc!9=, 5[mDgI.;t]8HX^pTKNrfGSkJ6bwsd|*e-+$o%4~<OxM F"j v`:Z/QActivate Demo ModeActivate Development PluginsActiveAdd MoreAdd/Edit GalleryAllAll Defaults Restored!Allow trackingAre you sure? Resetting will lose all custom values.Are you sure? Resetting will lose all custom values in this section.Are you sure? Resetting will lose all custom values.Automatic action performed: "%s"Background AttachmentBackground ClipBackground OriginBackground PositionBackground RepeatBackground SizeBackup Font FamilyBorder styleBottomChangelogClear GalleryClick here to activate the sample config file.CloseCreditsDeactivate Demo ModeDeactivate Development PluginsDefaultDeleteDescriptionDeveloperDeveloper Mode EnabledDid you know we have extensions, which greatly enhance the features of Redux? Visit our %1$s to learn more!DisableDismissDo not allow trackingEmail addressEnableExpandExport OptionsFont ColorFont FamilyFont SizeFont SubsetsFont VariantFont Weight & StyleFont colorFont familyFont scriptFont styleFont subsetsFrom Getting StartedGoogle WebfontsHeightHelp improve Our PanelHere you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).HintsHoverIf so, please %1$s and consider making a %2$s to keep development of Redux moving forward.If you'd like to keep up to with all things Redux, please subscribe to our newsletterImportImport / ExportImport OptionsImport from URLInput the URL to another sites options set and hit Import to load the options from that site.Input your backup file below and hit Import to restore your sites options from a backup.LeftLetter SpacingLike Redux?Line HeightMust call in of after the "plugins_loaded" action.NameNewsletterNo items of this type were found.No media selectedOffOnOptionsOptions ObjectOptions panel created using %1$sPasswordPlease WaitRedux ExtensionsRedux FrameworkRedux Framework ChangelogRedux Framework has an embedded demo.Redux GeneratorRedux is a simple, truly extensible options framework for WordPress themes and plugins.RegularRemoveRepoReset AllReset SectionRightSave ChangesSection Defaults Restored!Select an itemSettings Imported!Settings Saved!Settings have changed, you should save them!Show Object in Javascript Console ObjectSizeSlideStandard FontsStatusStyleSubscribeSubsetsSupportSystem InfoText AlignText DecorationText TransformThe following directories & files are still located in your Redux directory. They may cause errors in Theme-Check.The people that develop Redux FrameworkThe theme you are testing has %s embedded. We invite you to read the %sTheme-Check Documentation%s to understand some warnings you will see because of Redux.The unknown action has been replaced with "%s"ThemeThis field cannot be empty. Please provide a value.This field must be a valid color value.This field must be a valid date.This panel demonstrates the many features of Redux. Before digging in, we suggest you get up to speed by reviewing %1$s.TitleTo TopTransparentURLUnitsUnknown action "%1$s" specified for %2$sUploadUserUsernameVersionVersion %sView %sVisit plugin homepageVisitedWARNING! This will overwrite all existing option values, please proceed with caution!Want to get a head start? Use the %1$s. It will create a customized boilerplate theme or a standalone admin folder complete with all things Redux (with the help of Underscores and TGM). Save yourself a headache and try it today.Warning- This options panel will not work properly without javascript!Welcome to Redux FrameworkWelcome to the Redux Demo PanelWhat's NewWidthWord SpacingWorking...You do not have sufficient permissions to access this page.You have changes that are not saved. Would you like to save them now?You have changes that are not saved. Would you like to save them now?You must not enter any HTML in this field, all HTML tags have been removed.You must not enter any special characters in this field, all special characters have been removed.You must provide a comma separated list of numerical values for this option.You must provide a numerical value for this option.You must provide a valid URL for this option.You must provide a valid email for this option.Your current options will be replaced with the values of this preset. Would you like to proceed?Your current options will be replaced with the values of this preset. Would you like to proceed?clickingdonationerror(s) were found!extensions directoryhas the proper read/write permissions or enter your FTP information below.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkleave us a favorable review on WordPress.orgmoving the mouse overour documentationwarning(s) were found!Project-Id-Version: Redux Framework Report-Msgid-Bugs-To: https://github.com/ReduxFramework/ReduxFramework/issues POT-Creation-Date: 2015-04-02 04:45:17+00:00 PO-Revision-Date: 2015-04-14 00:13+0000 Last-Translator: Dionizio Bonfim Bach Language-Team: Arabic (http://www.transifex.com/projects/p/redux-framework/language/ar/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Language: ar Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5; X-Generator: grunt-wp-i18n 0.4.9 X-Poedit-Basepath: ../ X-Poedit-Bookmarks: X-Poedit-Country: United States X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c; X-Poedit-SearchPath-0: . X-Poedit-SourceCharset: UTF-8 X-Textdomain-Support: yes تفعيل الوضع التجريبيتفعيل إضافة التطويرفعالأضف المزيدإضافة/تحرير معرض الصورالكلتم استعادة كل الإعدادات الافتراضية!السماح بالتتبعهل أنت متأكد؟ ستفقد كل التغييرات الشخصية بإعادة الوضع الأصلي.هل أنت متأكد؟ ستفقد كل التغييرات الشخصية بإعادة الوضع الأصلي في هذا القسم.هل أنت متأكد؟ ستفقد كل التغييرات الشخصية بإعادة الوضع الأصلي.تم تنفيذ النشاط التلقائي: خلفية ثابتة / متحركةقصاصة الخلفيةأصل الخلفيةموضع الخلفيةتكرار الخلفيةحجم الخلفيةعائلة الخط الاحتياطيةنمط الإطارالأسفلسجّل التغييرتنظيف معرض الصورانقر هنا لتفعيل ملف عينة الإعدادات.أغلقشكر و تقديرإيقاف الوضع التجريبيتعطيل إضافة التطويرافتراضيحذفالوصفمطوّروضع المطور تم تفعيلههل تعلم أنه لدينا ملحقات, تقوم بدعم و تحسين ميزات ريدوكس كثيراً؟ قم بزيارة %1$s لتعرف أكثر!تعطيلتجاهلعدم السماح بالتتبعالبريد الإلكترونيتفعيلوسعخيارات التصديرلون الخطعائلة الخطحجم الخطمجموعات الخط الفرعيةتنوع الخطثقل & نمط الخطلون الخطعائلة الخطسكريبت الخطنمط الخطمجموعات خط فرعيةمنالبدءخطوط جوجلارتفاعساعد في تطوير لوحتنايمكنك هنا نسخ/تحميل إعدادات خياراتك الحالية. أبقي هذه النسخة بمأمن فقد تحتاجها كنسخة احطياطية في حال حدوث مشكلة ما, يمكنك استخدامها لاستعادة إعداداتك على هذا الموقع (أو أي موقع آخر).التلميحاتالحومإن كان كذلك, من فضلك %1$s و ضع بعين الإعتبار %2$s لكي يبقى تطوير ريدوكس مستمراً.إذا أردت البقاء مطلعاً على كل ما يتعلق بريدوكس, اشترك من فضلك بنشرتنا الإخباريةاستيراداستيراد / تصديرخيارات الاستيراداستيراد من رابطلتحميل الخيارات من موقع آخر أدخل الرابط لمجموعة خيارات ذلك الموقع و اضغط استيراد.لاستعادة خيارات موقعك من نسخة احتياطية أدخل ملف نسختك الاحتياطية بالأسفل و اضغط استيراد.يسارتباعد الحروفهل يعجبك ريدوكس؟ارتفاع السطريجب الإدراج بعد نشاط "plugins_loaded" .الاسمالنشرة الإخباريةلم يتم العثور على عناصر من هذا النوع.لا وسائط مختارةمعطلمفعلخياراتكائن الخياراتلوحة الخيارات أنشأت بواسطة %1$sكلمة المرورالرجاء الإنتظارملحقات ريدوكسإطار عمل ريدوكسسجل تغيير إطار عمل ريدوكسلدى إطار عمل ريدوكس مستعرض مضمّن.مولد ريدوكسريدوكس هو إطار عمل لقوالب وإضافات الوردبريس ويتميز بالبساطة وبالعديد من الخيارات المتعددة بالفعل.عاديإزالةالرباإعادة الوضع الأصلي للكلإعادة الوضع الأصلي للقسميمينحفظ التغييراتتم استعادة الإعدادات الافتراضية للقسم!اختر عنصرتم استيراد الإعدادات!تم حفظ الاعدادات!الإعدادات قد تغيرت, يجب عليك حفظها!إظهار الكائن في كائن وحدة تحكم جافا سكريبتالحجمانزلاقخطوط قياسيةوضعیةنمطإشتراكمجموعات فرعيةدعممعلومات النظاممحاذاة النصزخرفة النصتحويل النصالمجلدات & الملفات التالية ما زالت موجودة في مجلد ريدوكس الخاص بك. يمكنهم أن يسببون بعض الأخطاء أثناء عملية فحص القالب.الفريق الذي يعمل على تطوير إطار عمل ريدوكسالقالب الذي تقوم بإختبارة به %s مضمن. نحن ندعوك لقراءة التوثيق الخاص ب %s لفحص القالب %s ولفهم بعض التحذيرات التي تراها بسبب ريدوكس؟تم استبدال النشاط المجهول ب "قالبﻻ يمكن لهذا الحقل أن يكون فارغ. أضف قيمة من فضلك.هذا الحقل يجب أن يكون ذو قيمة لون صالحة.هذا الحقل يجب أن يكون ذو تاريخ صالح.تستعرض هذه اللوحة الميزات العديدة لريدوكس. قبل الغوص بها, من المحبذ أن تقوم بإلقاء نظرة على %1$s.العنوانإلىالأعلىشفافالرابطوحداتنشاط مجهول "%1$s" محدد ل %رفععضواسم المستخدمالنسخةالإصدار %sعرض %sزيارة صفحة الإضافةمزارتحذير! سيتم إعادة صياغة كل الخيارات الحالية, من فضلك تابع بحذر!هل ترغب في أن تكون سبّاقاًً؟ استخدم %1$s. ستنشئ مظهر متداول مخصص أو مجلد أدمين مستقل كامل مع كل شيء (مع المساعدة من أندرسكورس و TGM). أنقذ نفسك من الصداع و جربها اليوم.تحذير- لن تعمل لوحة الخيارات هذه بشكل جيد من دون جافا سكريبت!مرحباً بكم في إطار عمل ريدوكسمرحباً بك في لوحة ريدوكس الإستعراضيةما الجديدعرضتباعد الكلماتيعمل...ليس لديك الصلاحيات الكافية لدخول هذه الصفحة.يوجد تغييرات لم تحفظ بعد. هل تريد حفظها الآن؟يوجد تغييرات لم تحفظ بعد. هل تريد حفظها الآن؟لا يجب إدخال أي علامة HTML في هذا الحقل, تمت إزالة جميع علامات ال HTML.ﻻ يجب إدخال أي محارف خاصة في هذا الحقل, تمت إزالة جميع المحارف الخاصة.يجب أن تضيف قائمة قيم عددية يفصل بينها فواصل لهذا الخيار.يجب عليك إضافة قيمة عددية لهذا الخيار.يجب عليك إضافة رابط صحيح لهذا الخيار.يجب عليك إضافة عنوان بريد إلكتروني صحيح.ستستبدل الخيارات الحالية بقيم هذا الإعداد. هل تريد الإستمرار؟ستستبدل الخيارات الحالية بقيم هذا الإعداد. هل تريد الإستمرار؟عند النقرالتبرعخطأ (أخطاء) قد وجدت!مجلد الملحقاتلديه صلاحيات القراءة/الكتابة المناسبة أو قم بإدخال بيانات الـ FTP في الأسفل.http://reduxframework.comhttp://wordpress.org/plugins/redux-frameworkأترك لنا تقييماً جيداً على WordPress.orgعند مرور مؤشر الماوسوثائقنا المساعدةتحذير(ات) قد وجدت!redux/ReduxCore/framework.php000066600000627405152143340100012314 0ustar00. * * @package Redux_Framework * @subpackage Core * @author Redux Framework Team */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'ReduxFrameworkInstances' ) ) { // Instance Container require_once dirname( __FILE__ ) . '/inc/class.redux_instances.php'; require_once dirname( __FILE__ ) . '/inc/lib.redux_instances.php'; } if ( class_exists( 'ReduxFrameworkInstances' ) ) { add_action( 'redux/init', 'ReduxFrameworkInstances::get_instance' ); } // Don't duplicate me! if ( ! class_exists( 'ReduxFramework' ) ) { // Redux CDN class require_once dirname( __FILE__ ) . '/inc/class.redux_cdn.php'; // Redux API class :) require_once dirname( __FILE__ ) . '/inc/class.redux_api.php'; // General helper functions require_once dirname( __FILE__ ) . '/inc/class.redux_helpers.php'; // General functions require_once dirname( __FILE__ ) . '/inc/class.redux_functions.php'; require_once dirname( __FILE__ ) . '/inc/class.p.php'; require_once dirname( __FILE__ ) . '/inc/class.thirdparty.fixes.php'; require_once dirname( __FILE__ ) . '/inc/class.redux_filesystem.php'; require_once dirname( __FILE__ ) . '/inc/class.redux_admin_notices.php'; // ThemeCheck checks require_once dirname( __FILE__ ) . '/inc/themecheck/class.redux_themecheck.php'; // Welcome require_once dirname( __FILE__ ) . '/inc/welcome/welcome.php'; /** * Main ReduxFramework class * * @since 1.0.0 */ class ReduxFramework { // ATTENTION DEVS // Please update the build number with each push, no matter how small. // This will make for easier support when we ask users what version they are using. public static $_version = '3.6.3.5'; public static $_dir; public static $_url; public static $_upload_dir; public static $_upload_url; public static $wp_content_url; public static $base_wp_content_url; public static $_is_plugin = true; public static $_as_plugin = false; public static function init() { $dir = Redux_Helpers::cleanFilePath( dirname( __FILE__ ) ); // Windows-proof constants: replace backward by forward slashes. Thanks to: @peterbouwmeester self::$_dir = trailingslashit( $dir ); self::$wp_content_url = trailingslashit( Redux_Helpers::cleanFilePath( ( is_ssl() ? str_replace( 'http://', 'https://', WP_CONTENT_URL ) : WP_CONTENT_URL ) ) ); // See if Redux is a plugin or not if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory_uri() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/themes/' ) ) !== false ) { self::$_is_plugin = false; } else { // Check if plugin is a symbolic link, see if it's a plugin. If embedded, we can't do a thing. if ( strpos( self::$_dir, ABSPATH ) === false ) { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $is_plugin = false; foreach ( get_plugins() as $key => $value ) { if ( is_plugin_active( $key ) && strpos( $key, 'redux-framework.php' ) !== false ) { self::$_dir = trailingslashit( Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/plugins/' . plugin_dir_path( $key ) . 'ReduxCore/' ) ); $is_plugin = true; } } if ( ! $is_plugin ) { self::$_is_plugin = false; } } } if ( self::$_is_plugin == true || self::$_as_plugin == true ) { self::$_url = plugin_dir_url( __FILE__ ); } else { if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory() ) ) !== false ) { $relative_url = str_replace( Redux_Helpers::cleanFilePath( get_template_directory() ), '', self::$_dir ); self::$_url = trailingslashit( get_template_directory_uri() . $relative_url ); } else if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false ) { $relative_url = str_replace( Redux_Helpers::cleanFilePath( get_stylesheet_directory() ), '', self::$_dir ); self::$_url = trailingslashit( get_stylesheet_directory_uri() . $relative_url ); } else { $wp_content_dir = trailingslashit( Redux_Helpers::cleanFilePath( WP_CONTENT_DIR ) ); $wp_content_dir = trailingslashit( str_replace( '//', '/', $wp_content_dir ) ); $relative_url = str_replace( $wp_content_dir, '', self::$_dir ); self::$_url = trailingslashit( self::$wp_content_url . $relative_url ); } } self::$_url = apply_filters( "redux/_url", self::$_url ); self::$_dir = apply_filters( "redux/_dir", self::$_dir ); self::$_is_plugin = apply_filters( "redux/_is_plugin", self::$_is_plugin ); } // ::init() public $framework_url = 'http://www.reduxframework.com/'; public static $instance = null; public $admin_notices = array(); public $page = ''; public $saved = false; public $fields = array(); // Fields by type used in the panel public $field_sections = array(); // Section id's by field type, then field ID public $current_tab = ''; // Current section to display, cookies public $extensions = array(); // Extensions by type used in the panel public $sections = array(); // Sections and fields public $errors = array(); // Errors public $warnings = array(); // Warnings public $options = array(); // Option values public $options_defaults = null; // Option defaults public $notices = array(); // Option defaults public $compiler_fields = array(); // Fields that trigger the compiler hook public $required = array(); // Information that needs to be localized public $required_child = array(); // Information that needs to be localized public $localize_data = array(); // Information that needs to be localized public $fonts = array(); // Information that needs to be localized public $folds = array(); // The itms that need to fold. public $path = ''; public $changed_values = array(); // Values that have been changed on save. Orig values. public $output = array(); // Fields with CSS output selectors public $outputCSS = null; // CSS that get auto-appended to the header public $compilerCSS = null; // CSS that get sent to the compiler hook public $customizerCSS = null; // CSS that goes to the customizer public $fieldsValues = array(); //all fields values in an id=>value array so we can check dependencies public $fieldsHidden = array(); //all fields that didn't pass the dependency test and are hidden public $toHide = array(); // Values to hide on page load public $typography = null; //values to generate google font CSS public $import_export = null; public $no_panel = array(); // Fields that are not visible in the panel private $show_hints = false; public $hidden_perm_fields = array(); // Hidden fields specified by 'permissions' arg. public $hidden_perm_sections = array(); // Hidden sections specified by 'permissions' arg. public $typography_preview = array(); public $args = array(); public $filesystem = null; public $font_groups = array(); public $lang = ""; public $dev_mode_forced = false; public $reload_fields = array(); public $omit_share_icons = false; public $omit_admin_items = false; /** * Class Constructor. Defines the args for the theme options class * * @since 1.0.0 * * @param array $sections Panel sections. * @param array $args Class constructor arguments. * @param array $extra_tabs Extra panel tabs. // REMOVE * * @return \ReduxFramework */ public function __construct( $sections = array(), $args = array(), $extra_tabs = array() ) { // Disregard WP AJAX 'heartbeat'call. Why waste resources? if ( isset ( $_POST ) && isset ( $_POST['action'] ) && $_POST['action'] == 'heartbeat' ) { // Hook, for purists. if ( ! has_action( 'redux/ajax/heartbeat' ) ) { do_action( 'redux/ajax/heartbeat', $this ); } // Buh bye! return; } // Pass parent pointer to function helper. Redux_Functions::$_parent = $this; Redux_CDN::$_parent = $this; Redux_Admin_Notices::$_parent = $this; // Set values $this->set_default_args(); $this->args = wp_parse_args( $args, $this->args ); if ( empty ( $this->args['transient_time'] ) ) { $this->args['transient_time'] = 60 * MINUTE_IN_SECONDS; } if ( empty ( $this->args['footer_credit'] ) ) { $this->args['footer_credit'] = '' . sprintf( __( 'Options panel created using %1$s', 'redux-framework' ), '' . __( 'Redux Framework', 'redux-framework' ) . ' v' . self::$_version ) . ''; } if ( empty ( $this->args['menu_title'] ) ) { $this->args['menu_title'] = __( 'Options', 'redux-framework' ); } if ( empty ( $this->args['page_title'] ) ) { $this->args['page_title'] = __( 'Options', 'redux-framework' ); } $this->old_opt_name = $this->args['opt_name']; /** * filter 'redux/args/{opt_name}' * * @param array $args ReduxFramework configuration */ $this->args = apply_filters( "redux/args/{$this->args['opt_name']}", $this->args ); /** * filter 'redux/options/{opt_name}/args' * * @param array $args ReduxFramework configuration */ $this->args = apply_filters( "redux/options/{$this->args['opt_name']}/args", $this->args ); if ( $this->args['opt_name'] == $this->old_opt_name ) { unset( $this->old_opt_name ); } // Do not save the defaults if we're on a live preview! if ( $GLOBALS['pagenow'] == "customize" && isset( $_GET['theme'] ) && ! empty( $_GET['theme'] ) ) { $this->args['save_defaults'] = false; } $this->change_demo_defaults(); if ( ! empty ( $this->args['opt_name'] ) ) { /** * SHIM SECTION * Old variables and ways of doing things that need correcting. ;) * */ // Variable name change if ( ! empty ( $this->args['page_cap'] ) ) { $this->args['page_permissions'] = $this->args['page_cap']; unset ( $this->args['page_cap'] ); } if ( ! empty ( $this->args['page_position'] ) ) { $this->args['page_priority'] = $this->args['page_position']; unset ( $this->args['page_position'] ); } if ( ! empty ( $this->args['page_type'] ) ) { $this->args['menu_type'] = $this->args['page_type']; unset ( $this->args['page_type'] ); } // Get rid of extra_tabs! Not needed. if ( is_array( $extra_tabs ) && ! empty ( $extra_tabs ) ) { foreach ( $extra_tabs as $tab ) { array_push( $this->sections, $tab ); } } // Move to the first loop area! /** * filter 'redux-sections' * * @deprecated * * @param array $sections field option sections */ $this->sections = apply_filters( 'redux-sections', $sections ); // REMOVE LATER /** * filter 'redux-sections-{opt_name}' * * @deprecated * * @param array $sections field option sections */ $this->sections = apply_filters( "redux-sections-{$this->args['opt_name']}", $this->sections ); // REMOVE LATER /** * filter 'redux/options/{opt_name}/sections' * * @param array $sections field option sections */ $this->sections = apply_filters( "redux/options/{$this->args['opt_name']}/sections", $this->sections ); /** * Construct hook * action 'redux/construct' * * @param object $this ReduxFramework */ do_action( 'redux/construct', $this ); // Set the default values $this->_default_cleanup(); // Internataionalization $this->_internationalization(); $this->filesystem = Redux_Filesystem::get_instance( $this ); //set redux upload folder $this->set_redux_content(); // Register extra extensions $this->_register_extensions(); // Grab database values $this->get_options(); // Tracking if ( isset( $this->args['allow_tracking'] ) && $this->args['allow_tracking'] && Redux_Helpers::isTheme( __FILE__ ) ) { $this->_tracking(); } // Options page add_action( 'admin_menu', array( $this, '_options_page' ) ); // Add a network menu if ( $this->args['database'] == "network" && $this->args['network_admin'] ) { add_action( 'network_admin_menu', array( $this, '_options_page' ) ); } // Admin Bar menu add_action( 'admin_bar_menu', array( $this, '_admin_bar_menu' ), $this->args['admin_bar_priority'] ); // Register setting add_action( 'admin_init', array( $this, '_register_settings' ) ); // Display admin notices in dev_mode if ( true == $this->args['dev_mode'] ) { if ( true == $this->args['update_notice'] ) { add_action( 'admin_init', array( $this, '_update_check' ) ); } } // Display admin notices add_action( 'admin_notices', array( $this, '_admin_notices' ), 99 ); // Check for dismissed admin notices. add_action( 'admin_init', array( $this, '_dismiss_admin_notice' ), 9 ); // Enqueue the admin page CSS and JS if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { add_action( 'admin_enqueue_scripts', array( $this, '_enqueue' ), 1 ); } // Output dynamic CSS // Frontend: Maybe enqueue dynamic CSS and Google fonts if ( empty ( $this->args['output_location'] ) || in_array( 'frontend', $this->args['output_location'] ) ) { add_action( 'wp_head', array( &$this, '_output_css' ), 150 ); add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); } // Login page: Maybe enqueue dynamic CSS and Google fonts if ( in_array( 'login', $this->args['output_location'] ) ) { add_action( 'login_head', array( &$this, '_output_css' ), 150 ); add_action( 'login_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); } // Admin area: Maybe enqueue dynamic CSS and Google fonts if ( in_array( 'admin', $this->args['output_location'] ) ) { add_action( 'admin_head', array( &$this, '_output_css' ), 150 ); add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); } add_action( 'wp_print_scripts', array( $this, 'vc_fixes' ), 100 ); add_action( 'admin_enqueue_scripts', array( $this, 'vc_fixes' ), 100 ); if ( $this->args['database'] == "network" && $this->args['network_admin'] ) { add_action( 'network_admin_edit_redux_' . $this->args['opt_name'], array( $this, 'save_network_page' ), 10, 0 ); add_action( 'admin_bar_menu', array( $this, 'network_admin_bar' ), 999 ); } // Ajax saving!!! add_action( "wp_ajax_" . $this->args['opt_name'] . '_ajax_save', array( $this, "ajax_save" ) ); if ( $this->args['dev_mode'] == true || Redux_Helpers::isLocalHost() == true ) { require_once 'core/dashboard.php'; new reduxDashboardWidget( $this ); if ( ! isset ( $GLOBALS['redux_notice_check'] ) ) { require_once 'core/newsflash.php'; $params = array( 'dir_name' => 'notice', 'server_file' => 'http://reduxframework.com/wp-content/uploads/redux/redux_notice.json', 'interval' => 3, 'cookie_id' => 'redux_blast', ); new reduxNewsflash( $this, $params ); $GLOBALS['redux_notice_check'] = 1; } } } /** * Loaded hook * action 'redux/loaded' * * @param object $this ReduxFramework */ do_action( 'redux/loaded', $this ); } // __construct() private function set_redux_content() { $upload_dir = wp_upload_dir(); self::$_upload_dir = $upload_dir['basedir'] . '/redux/'; self::$_upload_url = str_replace( array( 'https://', 'http://' ), '//', $upload_dir['baseurl'] . '/redux/' ); } private function set_default_args() { $this->args = array( 'opt_name' => '', // Must be defined by theme/plugin 'google_api_key' => '', // Must be defined to update the google fonts cache for the typography module 'google_update_weekly' => false, // Set to keep your google fonts updated weekly 'last_tab' => '', // force a specific tab to always show on reload 'menu_icon' => '', // menu icon 'menu_title' => '', // menu title/text 'page_title' => '', // option page title 'page_slug' => '', 'page_permissions' => 'manage_options', 'menu_type' => 'menu', // ('menu'|'submenu') 'page_parent' => 'themes.php', // requires menu_type = 'submenu 'page_priority' => null, 'allow_sub_menu' => true, // allow submenus to be added if menu_type == menu 'save_defaults' => true, // Save defaults to the DB on it if empty 'footer_credit' => '', 'async_typography' => false, 'disable_google_fonts_link' => false, 'class' => '', // Class that gets appended to all redux-containers 'admin_bar' => true, 'admin_bar_priority' => 999, // Show the panel pages on the admin bar 'admin_bar_icon' => '', // admin bar icon 'help_tabs' => array(), 'help_sidebar' => '', 'database' => '', // possible: options, theme_mods, theme_mods_expanded, transient, network 'customizer' => false, // setting to true forces get_theme_mod_expanded 'global_variable' => '', // Changes global variable from $GLOBALS['YOUR_OPT_NAME'] to whatever you set here. false disables the global variable 'output' => true, // Dynamically generate CSS 'compiler' => true, // Initiate the compiler hook 'output_tag' => true, // Print Output Tag 'output_location' => array( 'frontend' ), // Where the dynamic CSS will be added. Can be any combination from: 'frontend', 'login', 'admin' 'transient_time' => '', 'default_show' => false, // If true, it shows the default value 'default_mark' => '', // What to print by the field's title if the value shown is default 'update_notice' => true, // Recieve an update notice of new commits when in dev mode 'disable_save_warn' => false, // Disable the save warn 'open_expanded' => false, 'hide_expand' => false, // Start the panel fully expanded to start with 'network_admin' => false, // Enable network admin when using network database mode 'network_sites' => true, // Enable sites as well as admin when using network database mode 'hide_reset' => false, 'hide_save' => false, 'hints' => array( 'icon' => 'el el-question-sign', 'icon_position' => 'right', 'icon_color' => 'lightgray', 'icon_size' => 'normal', 'tip_style' => array( 'color' => 'light', 'shadow' => true, 'rounded' => false, 'style' => '', ), 'tip_position' => array( 'my' => 'top_left', 'at' => 'bottom_right', ), 'tip_effect' => array( 'show' => array( 'effect' => 'slide', 'duration' => '500', 'event' => 'mouseover', ), 'hide' => array( 'effect' => 'fade', 'duration' => '500', 'event' => 'click mouseleave', ), ), ), 'show_import_export' => true, 'show_options_object' => true, 'dev_mode' => true, 'templates_path' => '', // Path to the templates file for various Redux elements 'ajax_save' => true, // Disable the use of ajax saving for the panel 'use_cdn' => true, 'cdn_check_time' => 1440, 'options_api' => true, ); } // Fix conflicts with Visual Composer. public function vc_fixes() { if ( redux_helpers::isFieldInUse( $this, 'ace_editor' ) ) { wp_dequeue_script( 'wpb_ace' ); wp_deregister_script( 'wpb_ace' ); } } public function network_admin_bar( $wp_admin_bar ) { $args = array( 'id' => $this->args['opt_name'] . '_network_admin', 'title' => $this->args['menu_title'], 'parent' => 'network-admin', 'href' => network_admin_url( 'settings.php' ) . '?page=' . $this->args['page_slug'], 'meta' => array( 'class' => 'redux-network-admin' ) ); $wp_admin_bar->add_node( $args ); } public function save_network_page() { $data = $this->_validate_options( $_POST[ $this->args['opt_name'] ] ); if ( ! empty ( $data ) ) { $this->set_options( $data ); } wp_redirect( add_query_arg( array( 'page' => $this->args['page_slug'], 'updated' => 'true' ), network_admin_url( 'settings.php' ) ) ); exit (); } public function _update_check() { // Only one notice per instance please if ( ! isset ( $GLOBALS['redux_update_check'] ) ) { Redux_Functions::updateCheck( self::$_version ); $GLOBALS['redux_update_check'] = 1; } } public function _admin_notices() { Redux_Admin_Notices::adminNotices( $this->admin_notices ); } public function _dismiss_admin_notice() { Redux_Admin_Notices::dismissAdminNotice(); } /** * Load the plugin text domain for translation. * * @since 3.0.5 */ private function _internationalization() { /** * Locale for text domain * filter 'redux/textdomain/{opt_name}' * * @param string The locale of the blog or from the 'locale' hook * @param string 'redux-framework' text domain */ // $locale = apply_filters( "redux/textdomain/{$this->args['opt_name']}", get_locale(), 'redux-framework' ); // // if ( strpos( $locale, '_' ) === false ) { // if ( file_exists( self::$_dir . 'languages/' . strtolower( $locale ) . '_' . strtoupper( $locale ) . '.mo' ) ) { // $locale = strtolower( $locale ) . '_' . strtoupper( $locale ); // } // } $basename = basename( __FILE__ ); $basepath = plugin_basename( __FILE__ ); $basepath = str_replace( $basename, '', $basepath ); $basepath = apply_filters( "redux/textdomain/basepath/{$this->args['opt_name']}", $basepath ); $loaded = load_plugin_textdomain( 'redux-framework', false, $basepath . 'languages'); if ( !$loaded ){ $loaded = load_muplugin_textdomain( 'redux-framework', $basepath . 'languages' ); } if ( !$loaded ){ $loaded = load_theme_textdomain( 'redux-framework', $basepath . 'languages' ); } if ( ! $loaded ) { $locale = apply_filters( 'plugin_locale', get_locale(), 'redux-framework' ); $mofile = dirname( __FILE__ ) . '/languages/redux-framework-' . $locale . '.mo'; load_textdomain( 'redux-framework', $mofile ); } } // _internationalization() /** * @return ReduxFramework */ public function get_instance() { //self::$_instance = $this; return self::$instance; } // get_instance() private function _tracking() { if ( file_exists( dirname( __FILE__ ) . '/inc/tracking.php' ) ) { require_once dirname( __FILE__ ) . '/inc/tracking.php'; $tracking = Redux_Tracking::get_instance(); $tracking->load( $this ); } } // _tracking() /** * ->_get_default(); This is used to return the default value if default_show is set * * @since 1.0.1 * @access public * * @param string $opt_name The option name to return * @param mixed $default (null) The value to return if default not set * * @return mixed $default */ public function _get_default( $opt_name, $default = null ) { if ( $this->args['default_show'] == true ) { if ( empty ( $this->options_defaults ) ) { $this->_default_values(); // fill cache } $default = array_key_exists( $opt_name, $this->options_defaults ) ? $this->options_defaults[ $opt_name ] : $default; } return $default; } // _get_default() /** * ->get(); This is used to return and option value from the options array * * @since 1.0.0 * @access public * * @param string $opt_name The option name to return * @param mixed $default (null) The value to return if option not set * * @return mixed */ public function get( $opt_name, $default = null ) { return ( ! empty ( $this->options[ $opt_name ] ) ) ? $this->options[ $opt_name ] : $this->_get_default( $opt_name, $default ); } // get() /** * ->set(); This is used to set an arbitrary option in the options array * * @since 1.0.0 * @access public * * @param string $opt_name The name of the option being added * @param mixed $value The value of the option being added * * @return void */ public function set( $opt_name = '', $value = '' ) { if ( $opt_name != '' ) { $this->options[ $opt_name ] = $value; $this->set_options( $this->options ); } } // set() /** * Set a global variable by the global_variable argument * * @since 3.1.5 * @return bool (global was set) */ private function set_global_variable() { if ( $this->args['global_variable'] ) { $option_global = $this->args['global_variable']; /** * filter 'redux/options/{opt_name}/global_variable' * * @param array $value option value to set global_variable with */ $GLOBALS[ $this->args['global_variable'] ] = apply_filters( "redux/options/{$this->args['opt_name']}/global_variable", $this->options ); if ( isset ( $this->transients['last_save'] ) ) { // Deprecated $GLOBALS[ $this->args['global_variable'] ]['REDUX_last_saved'] = $this->transients['last_save']; // Last save key $GLOBALS[ $this->args['global_variable'] ]['REDUX_LAST_SAVE'] = $this->transients['last_save']; } if ( isset ( $this->transients['last_compiler'] ) ) { // Deprecated $GLOBALS[ $this->args['global_variable'] ]['REDUX_COMPILER'] = $this->transients['last_compiler']; // Last compiler hook key $GLOBALS[ $this->args['global_variable'] ]['REDUX_LAST_COMPILER'] = $this->transients['last_compiler']; } return true; } return false; } // set_global_variable() /** * ->set_options(); This is used to set an arbitrary option in the options array * * @since ReduxFramework 3.0.0 * * @param mixed $value the value of the option being added */ public function set_options( $value = '' ) { $this->transients['last_save'] = time(); if ( ! empty ( $value ) ) { $this->options = $value; if ( $this->args['database'] === 'transient' ) { set_transient( $this->args['opt_name'] . '-transient', $value, $this->args['transient_time'] ); } else if ( $this->args['database'] === 'theme_mods' ) { set_theme_mod( $this->args['opt_name'] . '-mods', $value ); } else if ( $this->args['database'] === 'theme_mods_expanded' ) { foreach ( $value as $k => $v ) { set_theme_mod( $k, $v ); } } else if ( $this->args['database'] === 'network' ) { // Strip those slashes! $value = json_decode( stripslashes( json_encode( $value ) ), true ); update_site_option( $this->args['opt_name'], $value ); } else { update_option( $this->args['opt_name'], $value ); } // Store the changed values in the transient if ( $value != $this->options ) { foreach ( $value as $k => $v ) { if ( ! isset ( $this->options[ $k ] ) ) { $this->options[ $k ] = ""; } else if ( $v == $this->options[ $k ] ) { unset ( $this->options[ $k ] ); } } $this->transients['changed_values'] = $this->options; } $this->options = $value; // Set a global variable by the global_variable argument. $this->set_global_variable(); // Saving the transient values $this->set_transients(); //do_action( "redux-saved-{$this->args['opt_name']}", $value ); // REMOVE //do_action( "redux/options/{$this->args['opt_name']}/saved", $value, $this->transients['changed_values'] ); } } // set_options() /** * ->get_options(); This is used to get options from the database * * @since ReduxFramework 3.0.0 */ public function get_options() { $defaults = false; if ( ! empty ( $this->defaults ) ) { $defaults = $this->defaults; } if ( $this->args['database'] === "transient" ) { $result = get_transient( $this->args['opt_name'] . '-transient' ); } else if ( $this->args['database'] === "theme_mods" ) { $result = get_theme_mod( $this->args['opt_name'] . '-mods' ); } else if ( $this->args['database'] === 'theme_mods_expanded' ) { $result = get_theme_mods(); } else if ( $this->args['database'] === 'network' ) { $result = get_site_option( $this->args['opt_name'], array() ); $result = json_decode( stripslashes( json_encode( $result ) ), true ); } else { $result = get_option( $this->args['opt_name'], array() ); } if ( empty ( $result ) && ! empty ( $defaults ) ) { $results = $defaults; $this->set_options( $results ); } else { $this->options = $result; } /** * action 'redux/options/{opt_name}/options' * * @param mixed $value option values */ $this->options = apply_filters( "redux/options/{$this->args['opt_name']}/options", $this->options ); // Get transient values $this->get_transients(); // Set a global variable by the global_variable argument. $this->set_global_variable(); } // get_options() /** * ->get_wordpress_date() - Get Wordpress specific data from the DB and return in a usable array * * @since ReduxFramework 3.0.0 */ public function get_wordpress_data( $type = false, $args = array() ) { $data = ""; //return $data; /** * filter 'redux/options/{opt_name}/wordpress_data/{type}/' * * @deprecated * * @param string $data */ $data = apply_filters( "redux/options/{$this->args['opt_name']}/wordpress_data/$type/", $data ); // REMOVE LATER /** * filter 'redux/options/{opt_name}/data/{type}' * * @param string $data */ $data = apply_filters( "redux/options/{$this->args['opt_name']}/data/$type", $data ); $argsKey = ""; foreach ( $args as $key => $value ) { if ( ! is_array( $value ) ) { $argsKey .= $value . "-"; } else { $argsKey .= implode( "-", $value ); } } if ( empty ( $data ) && isset ( $this->wp_data[ $type . $argsKey ] ) ) { $data = $this->wp_data[ $type . $argsKey ]; } if ( empty ( $data ) && ! empty ( $type ) ) { /** * Use data from Wordpress to populate options array * */ if ( ! empty ( $type ) && empty ( $data ) ) { if ( empty ( $args ) ) { $args = array(); } $data = array(); $args = wp_parse_args( $args, array() ); if ( $type == "categories" || $type == "category" ) { $cats = get_categories( $args ); if ( ! empty ( $cats ) ) { foreach ( $cats as $cat ) { $data[ $cat->term_id ] = $cat->name; } //foreach } // If } else if ( $type == "menus" || $type == "menu" ) { $menus = wp_get_nav_menus( $args ); if ( ! empty ( $menus ) ) { foreach ( $menus as $item ) { $data[ $item->term_id ] = $item->name; } //foreach } //if } else if ( $type == "pages" || $type == "page" ) { if ( ! isset ( $args['posts_per_page'] ) ) { $args['posts_per_page'] = 20; } $pages = get_pages( $args ); if ( ! empty ( $pages ) ) { foreach ( $pages as $page ) { $data[ $page->ID ] = $page->post_title; } //foreach } //if } else if ( $type == "terms" || $type == "term" ) { $taxonomies = $args['taxonomies']; unset ( $args['taxonomies'] ); $terms = get_terms( $taxonomies, $args ); // this will get nothing if ( ! empty ( $terms ) && ! is_a( $terms, 'WP_Error' ) ) { foreach ( $terms as $term ) { $data[ $term->term_id ] = $term->name; } //foreach } // If } else if ( $type == "taxonomy" || $type == "taxonomies" ) { $taxonomies = get_taxonomies( $args ); if ( ! empty ( $taxonomies ) ) { foreach ( $taxonomies as $key => $taxonomy ) { $data[ $key ] = $taxonomy; } //foreach } // If } else if ( $type == "posts" || $type == "post" ) { $posts = get_posts( $args ); if ( ! empty ( $posts ) ) { foreach ( $posts as $post ) { $data[ $post->ID ] = $post->post_title; } //foreach } //if } else if ( $type == "post_type" || $type == "post_types" ) { global $wp_post_types; $defaults = array( 'public' => true, 'exclude_from_search' => false, ); $args = wp_parse_args( $args, $defaults ); $output = 'names'; $operator = 'and'; $post_types = get_post_types( $args, $output, $operator ); ksort( $post_types ); foreach ( $post_types as $name => $title ) { if ( isset ( $wp_post_types[ $name ]->labels->menu_name ) ) { $data[ $name ] = $wp_post_types[ $name ]->labels->menu_name; } else { $data[ $name ] = ucfirst( $name ); } } } else if ( $type == "tags" || $type == "tag" ) { // NOT WORKING! $tags = get_tags( $args ); if ( ! empty ( $tags ) ) { foreach ( $tags as $tag ) { $data[ $tag->term_id ] = $tag->name; } //foreach } //if } else if ( $type == "menu_location" || $type == "menu_locations" ) { global $_wp_registered_nav_menus; foreach ( $_wp_registered_nav_menus as $k => $v ) { $data[ $k ] = $v; } } else if ( $type == "image_size" || $type == "image_sizes" ) { global $_wp_additional_image_sizes; foreach ( $_wp_additional_image_sizes as $size_name => $size_attrs ) { $data[ $size_name ] = $size_name . ' - ' . $size_attrs['width'] . ' x ' . $size_attrs['height']; } } else if ( $type == "elusive-icons" || $type == "elusive-icon" || $type == "elusive" || $type == "font-icon" || $type == "font-icons" || $type == "icons" ) { /** * filter 'redux-font-icons' * * @deprecated * * @param array $font_icons array of elusive icon classes */ $font_icons = apply_filters( 'redux-font-icons', array() ); // REMOVE LATER /** * filter 'redux/font-icons' * * @deprecated * * @param array $font_icons array of elusive icon classes */ $font_icons = apply_filters( 'redux/font-icons', $font_icons ); /** * filter 'redux/{opt_name}/field/font/icons' * * @deprecated * * @param array $font_icons array of elusive icon classes */ $font_icons = apply_filters( "redux/{$this->args['opt_name']}/field/font/icons", $font_icons ); foreach ( $font_icons as $k ) { $data[ $k ] = $k; } } else if ( $type == "roles" ) { /** @global WP_Roles $wp_roles */ global $wp_roles; $data = $wp_roles->get_names(); } else if ( $type == "sidebars" || $type == "sidebar" ) { /** @global array $wp_registered_sidebars */ global $wp_registered_sidebars; foreach ( $wp_registered_sidebars as $key => $value ) { $data[ $key ] = $value['name']; } } else if ( $type == "capabilities" ) { /** @global WP_Roles $wp_roles */ global $wp_roles; foreach ( $wp_roles->roles as $role ) { foreach ( $role['capabilities'] as $key => $cap ) { $data[ $key ] = ucwords( str_replace( '_', ' ', $key ) ); } } } else if ( $type == "callback" ) { if ( ! is_array( $args ) ) { $args = array( $args ); } $data = call_user_func( $args[0] ); } else if ( $type == "users" || $type == "users" ) { $users = get_users( $args ); if ( ! empty ( $users ) ) { foreach ( $users as $user ) { $data[ $user->ID ] = $user->display_name; } //foreach } //if } //if } //if $this->wp_data[ $type . $argsKey ] = $data; } //if return $data; } // get_wordpress_data() /** * ->show(); This is used to echo and option value from the options array * * @since 1.0.0 * @access public * * @param string $opt_name The name of the option being shown * @param mixed $default The value to show if $opt_name isn't set * * @return void */ public function show( $opt_name, $default = '' ) { $option = $this->get( $opt_name ); if ( ! is_array( $option ) && $option != '' ) { echo $option; } elseif ( $default != '' ) { echo $this->_get_default( $opt_name, $default ); } } // show() /** * Get the default value for an option * * @since 3.3.6 * @access public * * @param string $key The option's ID * @param string $array_key The key of the default's array * * @return mixed */ public function get_default_value( $key, $array_key = false ) { if ( empty ( $this->options_defaults ) ) { $this->options_defaults = $this->_default_values(); } $defaults = $this->options_defaults; $value = ''; if ( isset ( $defaults[ $key ] ) ) { if ( $array_key !== false && isset ( $defaults[ $key ][ $array_key ] ) ) { $value = $defaults[ $key ][ $array_key ]; } else { $value = $defaults[ $key ]; } } return $value; } public function field_default_values( $field ) { // Detect what field types are being used if ( ! isset ( $this->fields[ $field['type'] ][ $field['id'] ] ) ) { $this->fields[ $field['type'] ][ $field['id'] ] = 1; } else { $this->fields[ $field['type'] ] = array( $field['id'] => 1 ); } if ( isset ( $field['default'] ) ) { $this->options_defaults[ $field['id'] ] = apply_filters( "redux/{$this->args['opt_name']}/field/{$field['type']}/defaults", $field['default'], $field ); } elseif ( ( $field['type'] != "ace_editor" ) ) { // Sorter data filter if ( isset( $field['data'] ) && ! empty( $field['data'] ) ) { if ( ! isset( $field['args'] ) ) { $field['args'] = array(); } if ( is_array( $field['data'] ) && ! empty( $field['data'] ) ) { foreach ( $field['data'] as $key => $data ) { if ( ! empty( $data ) ) { if ( ! isset ( $field['args'][ $key ] ) ) { $field['args'][ $key ] = array(); } $field['options'][ $key ] = $this->get_wordpress_data( $data, $field['args'][ $key ] ); } } } else { $field['options'] = $this->get_wordpress_data( $field['data'], $field['args'] ); } } if ( $field['type'] == "sorter" && isset ( $field['data'] ) && ! empty ( $field['data'] ) && is_array( $field['data'] ) ) { if ( ! isset ( $field['args'] ) ) { $field['args'] = array(); } foreach ( $field['data'] as $key => $data ) { if ( ! isset ( $field['args'][ $key ] ) ) { $field['args'][ $key ] = array(); } $field['options'][ $key ] = $this->get_wordpress_data( $data, $field['args'][ $key ] ); } } if ( isset ( $field['options'] ) ) { if ( $field['type'] == "sortable" ) { $this->options_defaults[ $field['id'] ] = array(); } elseif ( $field['type'] == "image_select" ) { $this->options_defaults[ $field['id'] ] = ''; } elseif ( $field['type'] == "select" ) { $this->options_defaults[ $field['id'] ] = ''; } else { $this->options_defaults[ $field['id'] ] = $field['options']; } } } } /** * Get default options into an array suitable for the settings API * * @since 1.0.0 * @access public * @return array $this->options_defaults */ public function _default_values() { if ( ! is_null( $this->sections ) && is_null( $this->options_defaults ) ) { // fill the cache foreach ( $this->sections as $sk => $section ) { if ( ! isset ( $section['id'] ) ) { if ( ! is_numeric( $sk ) || ! isset ( $section['title'] ) ) { $section['id'] = $sk; } else { $section['id'] = sanitize_title( $section['title'], $sk ); } $this->sections[ $sk ] = $section; } if ( isset ( $section['fields'] ) ) { foreach ( $section['fields'] as $k => $field ) { if ( empty ( $field['id'] ) && empty ( $field['type'] ) ) { continue; } if ( in_array( $field['type'], array( 'ace_editor' ) ) && isset ( $field['options'] ) ) { $this->sections[ $sk ]['fields'][ $k ]['args'] = $field['options']; unset ( $this->sections[ $sk ]['fields'][ $k ]['options'] ); } if ( $field['type'] == "section" && isset ( $field['indent'] ) && $field['indent'] == "true" ) { $field['class'] = isset ( $field['class'] ) ? $field['class'] : ''; $field['class'] .= " redux-section-indent-start"; $this->sections[ $sk ]['fields'][ $k ] = $field; } $this->field_default_values( $field ); } } } } /** * filter 'redux/options/{opt_name}/defaults' * * @param array $defaults option default values */ $this->transients['changed_values'] = isset ( $this->transients['changed_values'] ) ? $this->transients['changed_values'] : array(); $this->options_defaults = apply_filters( "redux/options/{$this->args['opt_name']}/defaults", $this->options_defaults, $this->transients['changed_values'] ); return $this->options_defaults; } /** * Set default options on admin_init if option doesn't exist * * @since 1.0.0 * @access public * @return void */ private function _default_cleanup() { // Fix the global variable name if ( $this->args['global_variable'] == "" && $this->args['global_variable'] !== false ) { $this->args['global_variable'] = str_replace( '-', '_', $this->args['opt_name'] ); } // Force dev_mode on WP_DEBUG = true and if it's a local server if ( Redux_Helpers::isLocalHost() || ( Redux_Helpers::isWpDebug() ) ) { if ( $this->args['dev_mode'] != true ) { $this->args['update_notice'] = false; } $this->dev_mode_forced = true; $this->args['dev_mode'] = true; // if ( isset( $this->args['forced_dev_mode_off'] ) && $this->args['forced_dev_mode_off'] == true ) { // $this->dev_mode_forced = false; // $this->args['dev_mode'] = false; // } } // Auto create the page_slug appropriately if ( empty( $this->args['page_slug'] ) ) { if ( ! empty( $this->args['display_name'] ) ) { $this->args['page_slug'] = sanitize_html_class( $this->args['display_name'] ); } else if ( ! empty( $this->args['page_title'] ) ) { $this->args['page_slug'] = sanitize_html_class( $this->args['page_title'] ); } else if ( ! empty( $this->args['menu_title'] ) ) { $this->args['page_slug'] = sanitize_html_class( $this->args['menu_title'] ); } else { $this->args['page_slug'] = str_replace( '-', '_', $this->args['opt_name'] ); } } if ( isset( $this->args['customizer_only'] ) && $this->args['customizer_only'] == true ) { $this->args['menu_type'] = 'hidden'; $this->args['customizer'] = true; $this->args['admin_bar'] = false; $this->args['allow_sub_menu'] = false; } // Check if the Airplane Mode plugin is installed if ( class_exists( 'Airplane_Mode_Core' ) ) { $airplane = Airplane_Mode_Core::getInstance(); if ( method_exists( $airplane, 'enabled' ) ) { if ( $airplane->enabled() ) { $this->args['use_cdn'] = false; } } else if ( $airplane->check_status() == 'on' ) { $this->args['use_cdn'] = false; } } } /** * Class Add Sub Menu Function, creates options submenu in Wordpress admin area. * * @since 3.1.9 * @access private * @return void */ private function add_submenu( $page_parent, $page_title, $menu_title, $page_permissions, $page_slug ) { global $submenu; // Just in case. One never knows. $page_parent = strtolower( $page_parent ); $test = array( 'index.php' => 'dashboard', 'edit.php' => 'posts', 'upload.php' => 'media', 'link-manager.php' => 'links', 'edit.php?post_type=page' => 'pages', 'edit-comments.php' => 'comments', 'themes.php' => 'theme', 'plugins.php' => 'plugins', 'users.php' => 'users', 'tools.php' => 'management', 'options-general.php' => 'options', ); if ( isset ( $test[ $page_parent ] ) ) { $function = 'add_' . $test[ $page_parent ] . '_page'; $this->page = $function ( $page_title, $menu_title, $page_permissions, $page_slug, array( $this, 'generate_panel' ) ); } else { // Network settings and Post type menus. These do not have // wrappers and need to be appened to using add_submenu_page. // Okay, since we've left the post type menu appending // as default, we need to validate it, so anything that // isn't post_type= doesn't get through and mess // things up. $addMenu = false; if ( 'settings.php' != $page_parent ) { // Establish the needle $needle = '?post_type='; // Check if it exists in the page_parent (how I miss instr) $needlePos = strrpos( $page_parent, $needle ); // It's there, so... if ( $needlePos > 0 ) { // Get the post type. $postType = substr( $page_parent, $needlePos + strlen( $needle ) ); // Ensure it exists. if ( post_type_exists( $postType ) ) { // Set flag to add the menu page $addMenu = true; } // custom menu } elseif ( isset ( $submenu[ $this->args['page_parent'] ] ) ) { $addMenu = true; } else { global $menu; foreach ( $menu as $menupriority => $menuitem ) { $needle_menu_slug = isset ( $menuitem ) ? $menuitem[2] : false; if ( $needle_menu_slug != false ) { // check if the current needle menu equals page_parent if ( strcasecmp( $needle_menu_slug, $page_parent ) == 0 ) { // found an empty parent menu $addMenu = true; } } } } } else { // The page_parent was settings.php, so set menu add // flag to true. $addMenu = true; } // Add the submenu if it's permitted. if ( true == $addMenu ) { // ONLY for non-wp.org themes OR plugins. Theme-Check alert shown if used and IS theme. $this->page = call_user_func( 'add_submenu_page', $page_parent, $page_title, $menu_title, $page_permissions, $page_slug, array( &$this, 'generate_panel' ) ); } } } /** * Class Options Page Function, creates main options page. * * @since 1.0.0 * @access public * @return void */ public function _options_page() { if ( $this->args['menu_type'] == 'hidden' ) { // No menu to add! } else if ( $this->args['menu_type'] == 'submenu' ) { $this->add_submenu( $this->args['page_parent'], $this->args['page_title'], $this->args['menu_title'], $this->args['page_permissions'], $this->args['page_slug'] ); } else { // Theme-Check notice is displayed for WP.org theme devs, informing them to NOT use this. $this->page = call_user_func( 'add_menu_page', $this->args['page_title'], $this->args['menu_title'], $this->args['page_permissions'], $this->args['page_slug'], array( &$this, 'generate_panel' ), $this->args['menu_icon'], $this->args['page_priority'] ); if ( true === $this->args['allow_sub_menu'] ) { if ( ! isset ( $section['type'] ) || $section['type'] != 'divide' ) { foreach ( $this->sections as $k => $section ) { $canBeSubSection = ( $k > 0 && ( ! isset ( $this->sections[ ( $k ) ]['type'] ) || $this->sections[ ( $k ) ]['type'] != "divide" ) ) ? true : false; if ( ! isset ( $section['title'] ) || ( $canBeSubSection && ( isset ( $section['subsection'] ) && $section['subsection'] == true ) ) ) { continue; } if ( isset ( $section['submenu'] ) && $section['submenu'] == false ) { continue; } if ( isset ( $section['customizer_only'] ) && $section['customizer_only'] == true ) { continue; } if ( isset ( $section['hidden'] ) && $section['hidden'] == true ) { continue; } if ( isset( $section['permissions'] ) && ! self::current_user_can( $section['permissions'] ) ) { continue; } // ONLY for non-wp.org themes OR plugins. Theme-Check alert shown if used and IS theme. call_user_func( 'add_submenu_page', $this->args['page_slug'], $section['title'], $section['title'], $this->args['page_permissions'], $this->args['page_slug'] . '&tab=' . $k, //create_function( '$a', "return null;" ) '__return_null' ); } // Remove parent submenu item instead of adding null item. remove_submenu_page( $this->args['page_slug'], $this->args['page_slug'] ); } } } add_action( "load-{$this->page}", array( &$this, '_load_page' ) ); } // _options_page() /** * Add admin bar menu * * @since 3.1.5.16 * @access public * @global $menu , $submenu, $wp_admin_bar * @return void */ public function _admin_bar_menu() { global $menu, $submenu, $wp_admin_bar; $ct = wp_get_theme(); $theme_data = $ct; if ( ! is_super_admin() || ! is_admin_bar_showing() || ! $this->args['admin_bar'] || $this->args['menu_type'] == 'hidden' ) { return; } if ( $menu ) { foreach ( $menu as $menu_item ) { if ( isset ( $menu_item[2] ) && $menu_item[2] === $this->args["page_slug"] ) { // Fetch the title $title = empty ( $this->args['admin_bar_icon'] ) ? $menu_item[0] : '' . $menu_item[0]; $nodeargs = array( 'id' => $menu_item[2], 'title' => $title, 'href' => admin_url( 'admin.php?page=' . $menu_item[2] ), 'meta' => array() ); $wp_admin_bar->add_node( $nodeargs ); break; } } if ( isset ( $submenu[ $this->args["page_slug"] ] ) && is_array( $submenu[ $this->args["page_slug"] ] ) ) { foreach ( $submenu[ $this->args["page_slug"] ] as $index => $redux_options_submenu ) { $subnodeargs = array( 'id' => $this->args["page_slug"] . '_' . $index, 'title' => $redux_options_submenu[0], 'parent' => $this->args["page_slug"], 'href' => admin_url( 'admin.php?page=' . $redux_options_submenu[2] ), ); $wp_admin_bar->add_node( $subnodeargs ); } } // Let's deal with external links if ( isset ( $this->args['admin_bar_links'] ) ) { if ( ! $this->args['dev_mode'] && $this->omit_admin_items ) { return; } // Group for Main Root Menu (External Group) $wp_admin_bar->add_node( array( 'id' => $this->args["page_slug"] . '-external', 'parent' => $this->args["page_slug"], 'group' => true, 'meta' => array( 'class' => 'ab-sub-secondary' ) ) ); // Add Child Menus to External Group Menu foreach ( $this->args['admin_bar_links'] as $link ) { if ( ! isset ( $link['id'] ) ) { $link['id'] = $this->args["page_slug"] . '-sub-' . sanitize_html_class( $link['title'] ); } $externalnodeargs = array( 'id' => $link['id'], 'title' => $link['title'], 'parent' => $this->args["page_slug"] . '-external', 'href' => $link['href'], 'meta' => array( 'target' => '_blank' ) ); $wp_admin_bar->add_node( $externalnodeargs ); } } } else { // Fetch the title $title = empty ( $this->args['admin_bar_icon'] ) ? $this->args['menu_title'] : '' . $this->args['menu_title']; $nodeargs = array( 'id' => $this->args["page_slug"], 'title' => $title, // $theme_data->get( 'Name' ) . " " . __( 'Options', 'redux-framework-demo' ), 'href' => admin_url( 'admin.php?page=' . $this->args["page_slug"] ), 'meta' => array() ); $wp_admin_bar->add_node( $nodeargs ); } } // _admin_bar_menu() /** * Output dynamic CSS at bottom of HEAD * * @since 3.2.8 * @access public * @return void */ public function _output_css() { if ( $this->args['output'] == false && $this->args['compiler'] == false ) { return; } if ( isset ( $this->no_output ) ) { return; } if ( ! empty ( $this->outputCSS ) && ( $this->args['output_tag'] == true || ( isset ( $_POST['customized'] ) ) ) ) { echo ''; } } /** * Enqueue CSS and Google fonts for front end * * @since 1.0.0 * @access public * @return void */ public function _enqueue_output() { if ( $this->args['output'] == false && $this->args['compiler'] == false ) { return; } /** @noinspection PhpUnusedLocalVariableInspection */ foreach ( $this->sections as $k => $section ) { if ( isset ( $section['type'] ) && ( $section['type'] == 'divide' ) ) { continue; } if ( isset ( $section['fields'] ) ) { /** @noinspection PhpUnusedLocalVariableInspection */ foreach ( $section['fields'] as $fieldk => $field ) { if ( isset ( $field['type'] ) && $field['type'] != "callback" ) { $field_class = "ReduxFramework_{$field['type']}"; if ( ! class_exists( $field_class ) ) { if ( ! isset ( $field['compiler'] ) ) { $field['compiler'] = ""; } /** * Field class file * filter 'redux/{opt_name}/field/class/{field.type} * * @param string field class file * @param array $field field config data */ $class_file = apply_filters( "redux/{$this->args['opt_name']}/field/class/{$field['type']}", self::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); if ( $class_file && file_exists( $class_file ) && ! class_exists( $field_class ) ) { /** @noinspection PhpIncludeInspection */ require_once $class_file; } } if ( ! empty ( $this->options[ $field['id'] ] ) && class_exists( $field_class ) && method_exists( $field_class, 'output' ) && $this->_can_output_css( $field ) ) { $field = apply_filters( "redux/field/{$this->args['opt_name']}/output_css", $field ); if ( ! empty ( $field['output'] ) && ! is_array( $field['output'] ) ) { $field['output'] = array( $field['output'] ); } $value = isset ( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : ''; $enqueue = new $field_class ( $field, $value, $this ); if ( ( ( isset ( $field['output'] ) && ! empty ( $field['output'] ) ) || ( isset ( $field['compiler'] ) && ! empty ( $field['compiler'] ) ) || $field['type'] == "typography" || $field['type'] == "icon_select" ) ) { $enqueue->output(); } } } } } } // For use like in the customizer. Stops the output, but passes the CSS in the variable for the compiler if ( isset ( $this->no_output ) ) { return; } if ( ! empty ( $this->typography ) && ! empty ( $this->typography ) && filter_var( $this->args['output'], FILTER_VALIDATE_BOOLEAN ) ) { $version = ! empty ( $this->transients['last_save'] ) ? $this->transients['last_save'] : ''; $typography = new ReduxFramework_typography ( null, null, $this ); if ( $this->args['async_typography'] && ! empty ( $this->typography ) ) { $families = array(); foreach ( $this->typography as $key => $value ) { $families[] = $key; } ?> args['disable_google_fonts_link'] ) { $protocol = ( ! empty ( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:"; //echo ''; wp_register_style( 'redux-google-fonts-' . $this->args['opt_name'], $protocol . $typography->makeGoogleWebfontLink( $this->typography ), '', $version ); wp_enqueue_style( 'redux-google-fonts-' . $this->args['opt_name'] ); } } } // _enqueue_output() /** * Enqueue CSS/JS for options page * * @since 1.0.0 * @access public * @global $wp_styles * @return void */ public function _enqueue() { require_once 'core/enqueue.php'; $enqueue = new reduxCoreEnqueue ( $this ); $enqueue->init(); } // _enqueue() /** * Show page help * * @since 1.0.0 * @access public * @return void */ public function _load_page() { // Do admin head action for this page add_action( 'admin_head', array( &$this, 'admin_head' ) ); // Do admin footer text hook add_filter( 'admin_footer_text', array( &$this, 'admin_footer_text' ) ); $screen = get_current_screen(); if ( is_array( $this->args['help_tabs'] ) ) { foreach ( $this->args['help_tabs'] as $tab ) { $screen->add_help_tab( $tab ); } } // If hint argument is set, display hint tab if ( true == $this->show_hints ) { global $current_user; // Users enable/disable hint choice $hint_status = get_user_meta( $current_user->ID, 'ignore_hints' ) ? get_user_meta( $current_user->ID, 'ignore_hints', true ) : 'true'; // current page parameters $curPage = esc_attr( $_GET['page'] ); $curTab = '0'; if ( isset ( $_GET['tab'] ) ) { $curTab = esc_attr( $_GET['tab'] ); } // Default url values for enabling hints. $dismiss = 'true'; $s = __( 'Enable', 'redux-framework' ); // Values for disabling hints. if ( 'true' == $hint_status ) { $dismiss = 'false'; $s = __( 'Disable', 'redux-framework' ); } // Make URL $url = '' . $s . ' hints'; $event = __( 'moving the mouse over', 'redux-framework' ); if ( 'click' == $this->args['hints']['tip_effect']['show']['event'] ) { $event = __( 'clicking', 'redux-framework' ); } // Construct message $msg = sprintf( __( 'Hints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.', 'redux-framework' ), $event, strtolower( $s ) ) . '

    ' . $url; // Construct hint tab $tab = array( 'id' => 'redux-hint-tab', 'title' => __( 'Hints', 'redux-framework' ), 'content' => '

    ' . $msg . '

    ' ); $screen->add_help_tab( $tab ); } // Sidebar text if ( $this->args['help_sidebar'] != '' ) { // Specify users text from arguments $screen->set_help_sidebar( $this->args['help_sidebar'] ); } else { // If sidebar text is empty and hints are active, display text // about hints. if ( true == $this->show_hints ) { $screen->set_help_sidebar( '

    Redux Framework

    Hint Tooltip Preferences

    ' ); } } /** * action 'redux-load-page-{opt_name}' * * @deprecated * * @param object $screen WP_Screen */ do_action( "redux-load-page-{$this->args['opt_name']}", $screen ); // REMOVE /** * action 'redux/page/{opt_name}/load' * * @param object $screen WP_Screen */ do_action( "redux/page/{$this->args['opt_name']}/load", $screen ); } // _load_page() /** * Do action redux-admin-head for options page * * @since 1.0.0 * @access public * @return void */ public function admin_head() { /** * action 'redux-admin-head-{opt_name}' * * @deprecated * * @param object $this ReduxFramework */ do_action( "redux-admin-head-{$this->args['opt_name']}", $this ); // REMOVE /** * action 'redux/page/{opt_name}/header' * * @param object $this ReduxFramework */ do_action( "redux/page/{$this->args['opt_name']}/header", $this ); } // admin_head() /** * Return footer text * * @since 2.0.0 * @access public * @return string $this->args['footer_credit'] */ public function admin_footer_text() { return $this->args['footer_credit']; } // admin_footer_text() /** * Return default output string for use in panel * * @since 3.1.5 * @access public * @return string default_output */ private function get_default_output_string( $field ) { $default_output = ""; if ( ! isset ( $field['default'] ) ) { $field['default'] = ""; } if ( ! is_array( $field['default'] ) ) { if ( ! empty ( $field['options'][ $field['default'] ] ) ) { if ( ! empty ( $field['options'][ $field['default'] ]['alt'] ) ) { $default_output .= $field['options'][ $field['default'] ]['alt'] . ', '; } else { // TODO: This serialize fix may not be the best solution. Look into it. PHP 5.4 error without serialize if ( ! is_array( $field['options'][ $field['default'] ] ) ) { $default_output .= $field['options'][ $field['default'] ] . ", "; } else { $default_output .= serialize( $field['options'][ $field['default'] ] ) . ", "; } } } else if ( ! empty ( $field['options'][ $field['default'] ] ) ) { $default_output .= $field['options'][ $field['default'] ] . ", "; } else if ( ! empty ( $field['default'] ) ) { if ( $field['type'] == 'switch' && isset ( $field['on'] ) && isset ( $field['off'] ) ) { $default_output .= ( $field['default'] == 1 ? $field['on'] : $field['off'] ) . ', '; } else { $default_output .= $field['default'] . ', '; } } } else { foreach ( $field['default'] as $defaultk => $defaultv ) { if ( ! empty ( $field['options'][ $defaultv ]['alt'] ) ) { $default_output .= $field['options'][ $defaultv ]['alt'] . ', '; } else if ( ! empty ( $field['options'][ $defaultv ] ) ) { $default_output .= $field['options'][ $defaultv ] . ", "; } else if ( ! empty ( $field['options'][ $defaultk ] ) ) { $default_output .= $field['options'][ $defaultk ] . ", "; } else if ( ! empty ( $defaultv ) ) { $default_output .= $defaultv . ', '; } } } if ( ! empty ( $default_output ) ) { $default_output = __( 'Default', 'redux-framework' ) . ": " . substr( $default_output, 0, - 2 ); } if ( ! empty ( $default_output ) ) { $default_output = '' . $default_output . '
    '; } return $default_output; } // get_default_output_string() public function get_header_html( $field ) { global $current_user; // Set to empty string to avoid wanrings. $hint = ''; $th = ""; if ( isset ( $field['title'] ) && isset ( $field['type'] ) && $field['type'] !== "info" && $field['type'] !== "section" ) { $default_mark = ( ! empty ( $field['default'] ) && isset ( $this->options[ $field['id'] ] ) && $this->options[ $field['id'] ] == $field['default'] && ! empty ( $this->args['default_mark'] ) && isset ( $field['default'] ) ) ? $this->args['default_mark'] : ''; // If a hint is specified in the field, process it. if ( isset ( $field['hint'] ) && ! '' == $field['hint'] ) { // Set show_hints flag to true, so helptab will be displayed. $this->show_hints = true; $hint = apply_filters( 'redux/hints/html', $hint, $field, $this->args ); // Get user pref for displaying hints. $metaVal = get_user_meta( $current_user->ID, 'ignore_hints', true ); if ( 'true' == $metaVal || empty ( $metaVal ) && empty( $hint ) ) { // Set hand cursor for clickable hints $pointer = ''; if ( isset ( $this->args['hints']['tip_effect']['show']['event'] ) && 'click' == $this->args['hints']['tip_effect']['show']['event'] ) { $pointer = 'pointer'; } $size = '16px'; if ( 'large' == $this->args['hints']['icon_size'] ) { $size = '18px'; } // In case docs are ignored. $titleParam = isset ( $field['hint']['title'] ) ? $field['hint']['title'] : ''; $contentParam = isset ( $field['hint']['content'] ) ? $field['hint']['content'] : ''; $hint_color = isset ( $this->args['hints']['icon_color'] ) ? $this->args['hints']['icon_color'] : '#d3d3d3'; // Set hint html with appropriate position css $hint = '
     
    '; } } if ( ! empty ( $field['title'] ) ) { if ( 'left' == $this->args['hints']['icon_position'] ) { $th = $hint . $field['title'] . $default_mark . ""; } else { $th = $field['title'] . $default_mark . "" . $hint; } } if ( isset ( $field['subtitle'] ) ) { $th .= '' . $field['subtitle'] . ''; } } if ( ! empty ( $th ) ) { $th = '
    ' . $th . '
    '; } $filter_arr = array( 'editor', 'ace_editor', 'info', 'section', 'repeater', 'color_scheme', 'social_profiles', 'css_layout' ); if ( $this->args['default_show'] == true && isset ( $field['default'] ) && isset ( $this->options[ $field['id'] ] ) && $this->options[ $field['id'] ] != $field['default'] && ! in_array( $field['type'], $filter_arr ) ) { $th .= $this->get_default_output_string( $field ); } return $th; } /** * Register Option for use * * @since 1.0.0 * @access public * @return void */ public function _register_settings() { // TODO - REMOVE // Not used by new sample-config, but in here for legacy builds // This is bad and can break things. Hehe. if ( ! function_exists( 'wp_get_current_user' ) ) { require_once ABSPATH . "wp-includes/pluggable.php"; } if ( $this->args['options_api'] == true ) { register_setting( $this->args['opt_name'] . '_group', $this->args['opt_name'], array( $this, '_validate_options' ) ); } if ( is_null( $this->sections ) ) { return; } if ( empty( $this->options_defaults ) ) { $this->options_defaults = $this->_default_values(); } $runUpdate = false; foreach ( $this->sections as $k => $section ) { if ( isset ( $section['type'] ) && $section['type'] == 'divide' ) { continue; } $display = true; if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { if ( isset ( $section['panel'] ) && $section['panel'] == false ) { $display = false; } } // DOVY! Replace $k with $section['id'] when ready /** * filter 'redux-section-{index}-modifier-{opt_name}' * * @param array $section section configuration */ $section = apply_filters( "redux-section-{$k}-modifier-{$this->args['opt_name']}", $section ); /** * filter 'redux/options/{opt_name}/section/{section.id}' * * @param array $section section configuration */ if ( isset ( $section['id'] ) ) { $section = apply_filters( "redux/options/{$this->args['opt_name']}/section/{$section['id']}", $section ); } if ( empty ( $section ) ) { unset ( $this->sections[ $k ] ); continue; } if ( ! isset ( $section['title'] ) ) { $section['title'] = ""; } if ( isset ( $section['customizer_only'] ) && $section['customizer_only'] == true ) { $section['panel'] = false; $this->sections[ $k ] = $section; } $heading = isset ( $section['heading'] ) ? $section['heading'] : $section['title']; if ( isset ( $section['permissions'] ) ) { if ( ! self::current_user_can( $section['permissions'] ) ) { $this->hidden_perm_sections[] = $section['title']; foreach ( $section['fields'] as $num => $field_data ) { $field_type = $field_data['type']; if ( $field_type != 'section' || $field_type != 'divide' || $field_type != 'info' || $field_type != 'raw' ) { $field_id = $field_data['id']; $default = isset ( $this->options_defaults[ $field_id ] ) ? $this->options_defaults[ $field_id ] : ''; $data = isset ( $this->options[ $field_id ] ) ? $this->options[ $field_id ] : $default; $this->hidden_perm_fields[ $field_id ] = $data; } } continue; } } if ( ! $display || ! function_exists( 'add_settings_section' ) ) { $this->no_panel_section[ $k ] = $section; } else { add_settings_section( $this->args['opt_name'] . $k . '_section', $heading, array( &$this, '_section_desc' ), $this->args['opt_name'] . $k . '_section_group' ); } $sectionIndent = false; if ( isset ( $section['fields'] ) ) { foreach ( $section['fields'] as $fieldk => $field ) { if ( ! isset ( $field['type'] ) ) { continue; // You need a type! } if ( $field['type'] == "info" && isset( $field['raw_html'] ) && $field['raw_html'] == true ) { $field['type'] = "raw"; $field['content'] = $field['desc']; $field['desc'] = ""; $this->sections[ $k ]['fields'][ $fieldk ] = $field; } else if ( $field['type'] == "info" ) { if ( ! isset( $field['full_width'] ) ) { $field['full_width'] = true; $this->sections[ $k ]['fields'][ $fieldk ] = $field; } } if ( $field['type'] == "raw" ) { if ( isset( $field['align'] ) ) { $field['full_width'] = $field['align'] ? false : true; unset( $field['align'] ); } else if ( ! isset( $field['full_width'] ) ) { $field['full_width'] = true; } $this->sections[ $k ]['fields'][ $fieldk ] = $field; } /** * filter 'redux/options/{opt_name}/field/{field.id}' * * @param array $field field config */ $field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}/register", $field ); $this->field_types[ $field['type'] ] = isset ( $this->field_types[ $field['type'] ] ) ? $this->field_types[ $field['type'] ] : array(); $this->field_sections[ $field['type'] ][ $field['id'] ] = $k; $display = true; if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { if ( isset ( $field['panel'] ) && $field['panel'] == false ) { $display = false; } } if ( isset ( $field['customizer_only'] ) && $field['customizer_only'] == true ) { $display = false; } if ( isset ( $section['customizer'] ) ) { $field['customizer'] = $section['customizer']; $this->sections[ $k ]['fields'][ $fieldk ] = $field; } if ( isset ( $field['permissions'] ) ) { if ( ! self::current_user_can( $field['permissions'] ) ) { $data = isset ( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : $this->options_defaults[ $field['id'] ]; $this->hidden_perm_fields[ $field['id'] ] = $data; continue; } } if ( ! isset ( $field['id'] ) ) { echo '

    No field ID is set.

    ';
                                    print_r( $field );
                                    echo "

    "; continue; } if ( isset ( $field['type'] ) && $field['type'] == "section" ) { if ( isset ( $field['indent'] ) && $field['indent'] == true ) { $sectionIndent = true; } else { $sectionIndent = false; } } if ( isset ( $field['type'] ) && $field['type'] == "info" && $sectionIndent ) { $field['indent'] = $sectionIndent; } $th = $this->get_header_html( $field ); $field['name'] = $this->args['opt_name'] . '[' . $field['id'] . ']'; // Set the default value if present $this->options_defaults[ $field['id'] ] = isset ( $this->options_defaults[ $field['id'] ] ) ? $this->options_defaults[ $field['id'] ] : ''; // Set the defaults to the value if not present $doUpdate = false; // Check fields for values in the default parameter if ( ! isset ( $this->options[ $field['id'] ] ) && isset ( $field['default'] ) ) { $this->options_defaults[ $field['id'] ] = $this->options[ $field['id'] ] = $field['default']; $doUpdate = true; // Check fields that hae no default value, but an options value with settings to // be saved by default } elseif ( ! isset ( $this->options[ $field['id'] ] ) && isset ( $field['options'] ) ) { // If sorter field, check for options as save them as defaults if ( $field['type'] == 'sorter' || $field['type'] == 'sortable' ) { $this->options_defaults[ $field['id'] ] = $this->options[ $field['id'] ] = $field['options']; $doUpdate = true; } } // CORRECT URLS if media URLs are wrong, but attachment IDs are present. if ( $field['type'] == "media" ) { if ( isset ( $this->options[ $field['id'] ]['id'] ) && isset ( $this->options[ $field['id'] ]['url'] ) && ! empty ( $this->options[ $field['id'] ]['url'] ) && strpos( $this->options[ $field['id'] ]['url'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { $data = wp_get_attachment_url( $this->options[ $field['id'] ]['id'] ); if ( isset ( $data ) && ! empty ( $data ) ) { $this->options[ $field['id'] ]['url'] = $data; $data = wp_get_attachment_image_src( $this->options[ $field['id'] ]['id'], array( 150, 150 ) ); $this->options[ $field['id'] ]['thumbnail'] = $data[0]; $doUpdate = true; } } } if ( $field['type'] == "background" ) { if ( isset ( $this->options[ $field['id'] ]['media']['id'] ) && isset ( $this->options[ $field['id'] ]['background-image'] ) && ! empty ( $this->options[ $field['id'] ]['background-image'] ) && strpos( $this->options[ $field['id'] ]['background-image'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { $data = wp_get_attachment_url( $this->options[ $field['id'] ]['media']['id'] ); if ( isset ( $data ) && ! empty ( $data ) ) { $this->options[ $field['id'] ]['background-image'] = $data; $data = wp_get_attachment_image_src( $this->options[ $field['id'] ]['media']['id'], array( 150, 150 ) ); $this->options[ $field['id'] ]['media']['thumbnail'] = $data[0]; $doUpdate = true; } } } if ( $field['type'] == "slides" ) { if ( isset ( $this->options[ $field['id'] ] ) && is_array( $this->options[ $field['id'] ] ) && isset ( $this->options[ $field['id'] ][0]['attachment_id'] ) && isset ( $this->options[ $field['id'] ][0]['image'] ) && ! empty ( $this->options[ $field['id'] ][0]['image'] ) && strpos( $this->options[ $field['id'] ][0]['image'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { foreach ( $this->options[ $field['id'] ] as $key => $val ) { $data = wp_get_attachment_url( $val['attachment_id'] ); if ( isset ( $data ) && ! empty ( $data ) ) { $this->options[ $field['id'] ][ $key ]['image'] = $data; $data = wp_get_attachment_image_src( $val['attachment_id'], array( 150, 150 ) ); $this->options[ $field['id'] ][ $key ]['thumb'] = $data[0]; $doUpdate = true; } } } } // END -> CORRECT URLS if media URLs are wrong, but attachment IDs are present. if ( true == $doUpdate && ! isset ( $this->never_save_to_db ) ) { if ( $this->args['save_defaults'] ) { // Only save that to the DB if allowed to $runUpdate = true; } // elseif($this->saved != '' && $this->saved != false) { // $runUpdate = true; //} } if ( ! isset ( $field['class'] ) ) { // No errors please $field['class'] = ""; } $id = $field['id']; /** * filter 'redux-field-{field.id}modifier-{opt_name}' * * @deprecated * * @param array $field field config */ $field = apply_filters( "redux-field-{$field['id']}modifier-{$this->args['opt_name']}", $field ); // REMOVE LATER /** * filter 'redux/options/{opt_name}/field/{field.id}' * * @param array $field field config */ $field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}", $field ); if ( empty ( $field ) || ! $field || $field == false ) { unset ( $this->sections[ $k ]['fields'][ $fieldk ] ); continue; } if ( ! empty ( $this->folds[ $field['id'] ]['parent'] ) ) { // This has some fold items, hide it by default $field['class'] .= " fold"; } if ( ! empty ( $this->folds[ $field['id'] ]['children'] ) ) { // Sets the values you shoe fold children on $field['class'] .= " foldParent"; } if ( ! empty ( $field['compiler'] ) ) { $field['class'] .= " compiler"; $this->compiler_fields[ $field['id'] ] = 1; } if ( isset ( $field['unit'] ) && ! isset ( $field['units'] ) ) { $field['units'] = $field['unit']; unset ( $field['unit'] ); } $this->sections[ $k ]['fields'][ $fieldk ] = $field; if ( isset ( $this->args['display_source'] ) ) { $th .= ''; $th .= '
    View Source'; } /** * action 'redux/options/{opt_name}/field/field.type}/register' */ do_action( "redux/options/{$this->args['opt_name']}/field/{$field['type']}/register", $field ); $this->check_dependencies( $field ); $this->field_head[ $field['id'] ] = $th; if ( ! $display || isset ( $this->no_panel_section[ $k ] ) ) { $this->no_panel[] = $field['id']; } else { if ( isset ( $field['hidden'] ) && $field['hidden'] ) { $field['label_for'] = 'redux_hide_field'; } if ( $this->args['options_api'] == true ) { add_settings_field( "{$fieldk}_field", $th, array( &$this, '_field_input' ), "{$this->args['opt_name']}{$k}_section_group", "{$this->args['opt_name']}{$k}_section", $field ); } } } } } /** * action 'redux-register-settings-{opt_name}' * * @deprecated */ do_action( "redux-register-settings-{$this->args['opt_name']}" ); // REMOVE /** * action 'redux/options/{opt_name}/register' * * @param array option sections */ do_action( "redux/options/{$this->args['opt_name']}/register", $this->sections ); if ( $runUpdate && ! isset ( $this->never_save_to_db ) ) { // Always update the DB with new fields $this->set_options( $this->options ); } if ( isset ( $this->transients['run_compiler'] ) && $this->transients['run_compiler'] ) { $this->no_output = true; $this->_enqueue_output(); /** * action 'redux-compiler-{opt_name}' * * @deprecated * * @param array options * @param string CSS that get sent to the compiler hook */ do_action( "redux-compiler-{$this->args['opt_name']}", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); // REMOVE /** * action 'redux/options/{opt_name}a' * * @param array options * @param string CSS that get sent to the compiler hook */ do_action( "redux/options/{$this->args['opt_name']}/compiler", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); /** * action 'redux/options/{opt_name}/compiler/advanced' * * @param array options * @param string CSS that get sent to the compiler hook, which sends the full Redux object */ do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this ); unset ( $this->transients['run_compiler'] ); $this->set_transients(); } } // _register_settings() /** * Register Extensions for use * * @since 3.0.0 * @access public * @return void */ private function _register_extensions() { $path = dirname( __FILE__ ) . '/inc/extensions/'; $folders = scandir( $path, 1 ); /** * action 'redux/extensions/before' * * @param object $this ReduxFramework */ do_action( "redux/extensions/before", $this ); /** * action 'redux/extensions/{opt_name}/before' * * @param object $this ReduxFramework */ do_action( "redux/extensions/{$this->args['opt_name']}/before", $this ); if ( isset( $this->old_opt_name ) ) { do_action( "redux/extensions/{$this->old_opt_name}/before", $this ); } foreach ( $folders as $folder ) { if ( $folder === '.' || $folder === '..' || ! is_dir( $path . $folder ) || substr( $folder, 0, 1 ) === '.' || substr( $folder, 0, 1 ) === '@' || substr( $folder, 0, 4 ) === '_vti' ) { continue; } $extension_class = 'ReduxFramework_Extension_' . $folder; /** * filter 'redux-extensionclass-load' * * @deprecated * * @param string extension class file path * @param string $extension_class extension class name */ $class_file = apply_filters( "redux-extensionclass-load", "$path/$folder/extension_{$folder}.php", $extension_class ); // REMOVE LATER /** * filter 'redux/extension/{opt_name}/{folder}' * * @param string extension class file path * @param string $extension_class extension class name */ $class_file = apply_filters( "redux/extension/{$this->args['opt_name']}/$folder", "$path/$folder/extension_{$folder}.php", $class_file ); if ( $class_file ) { if ( file_exists( $class_file ) ) { require_once $class_file; $this->extensions[ $folder ] = new $extension_class ( $this ); } } } /** * action 'redux-register-extensions-{opt_name}' * * @deprecated * * @param object $this ReduxFramework */ do_action( "redux-register-extensions-{$this->args['opt_name']}", $this ); // REMOVE /** * action 'redux/extensions/{opt_name}' * * @param object $this ReduxFramework */ do_action( "redux/extensions/{$this->args['opt_name']}", $this ); if ( isset( $this->old_opt_name ) && ! empty( $this->old_opt_name ) ) { do_action( "redux/extensions/{$this->old_opt_name}", $this ); } } private function get_transients() { if ( ! isset ( $this->transients ) ) { $this->transients = get_option( $this->args['opt_name'] . '-transients', array() ); $this->transients_check = $this->transients; } } public function set_transients() { if ( ! isset ( $this->transients ) || ! isset ( $this->transients_check ) || $this->transients != $this->transients_check ) { update_option( $this->args['opt_name'] . '-transients', $this->transients ); $this->transients_check = $this->transients; } } /** * Validate the Options options before insertion * * @since 3.0.0 * @access public * * @param array $plugin_options The options array * * @return array|mixed|string|void */ public function _validate_options( $plugin_options ) { //print_r($plugin_options); // exit(); if ( isset ( $this->validation_ran ) ) { return $plugin_options; } $this->validation_ran = 1; // Save the values not in the panel if ( isset ( $plugin_options['redux-no_panel'] ) ) { $keys = explode( '|', $plugin_options['redux-no_panel'] ); foreach ( $keys as $key ) { $plugin_options[ $key ] = $this->options[ $key ]; } if ( isset ( $plugin_options['redux-no_panel'] ) ) { unset ( $plugin_options['redux-no_panel'] ); } } if ( ! empty ( $this->hidden_perm_fields ) && is_array( $this->hidden_perm_fields ) ) { foreach ( $this->hidden_perm_fields as $id => $data ) { $plugin_options[ $id ] = $data; } } if ( $plugin_options == $this->options ) { return $plugin_options; } $time = time(); // Sets last saved time $this->transients['last_save'] = $time; // Import if ( ( isset( $plugin_options['import_code'] ) && ! empty( $plugin_options['import_code'] ) ) || ( isset( $plugin_options['import_link'] ) && ! empty( $plugin_options['import_link'] ) ) ) { $this->transients['last_save_mode'] = "import"; // Last save mode $this->transients['last_compiler'] = $time; $this->transients['last_import'] = $time; $this->transients['run_compiler'] = 1; if ( $plugin_options['import_code'] != '' ) { $import = $plugin_options['import_code']; } elseif ( $plugin_options['import_link'] != '' ) { $import = wp_remote_retrieve_body( wp_remote_get( $plugin_options['import_link'] ) ); } if ( ! empty ( $import ) ) { $imported_options = json_decode( $import, true ); } if ( ! empty ( $imported_options ) && is_array( $imported_options ) && isset ( $imported_options['redux-backup'] ) && $imported_options['redux-backup'] == '1' ) { $this->transients['changed_values'] = array(); foreach ( $plugin_options as $key => $value ) { if ( isset ( $imported_options[ $key ] ) && $imported_options[ $key ] != $value ) { $this->transients['changed_values'][ $key ] = $value; $plugin_options[ $key ] = $value; } } /** * action 'redux/options/{opt_name}/import' * * @param &array [&$plugin_options, redux_options] */ do_action_ref_array( "redux/options/{$this->args['opt_name']}/import", array( &$plugin_options, $imported_options, $this->transients['changed_values'] ) ); setcookie( 'redux_current_tab', '', 1, '/', $time + 1000, "/" ); $_COOKIE['redux_current_tab'] = 1; unset ( $plugin_options['defaults'], $plugin_options['compiler'], $plugin_options['import'], $plugin_options['import_code'] ); if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' || $this->args['database'] == 'network' ) { $this->set_options( $plugin_options ); return; } $plugin_options = wp_parse_args( $imported_options, $plugin_options ); $this->set_transients(); // Update the transients return $plugin_options; } } // Reset all to defaults if ( ! empty ( $plugin_options['defaults'] ) ) { if ( empty ( $this->options_defaults ) ) { $this->options_defaults = $this->_default_values(); } /** * apply_filters 'redux/validate/{opt_name}/defaults' * * @param &array [ $this->options_defaults, $plugin_options] */ $plugin_options = apply_filters( "redux/validate/{$this->args['opt_name']}/defaults", $this->options_defaults ); $this->transients['changed_values'] = array(); if ( empty ( $this->options ) ) { $this->options = $this->options_defaults; } foreach ( $this->options as $key => $value ) { if ( isset ( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { $this->transients['changed_values'][ $key ] = $value; } } $this->transients['run_compiler'] = 1; $this->transients['last_save_mode'] = "defaults"; // Last save mode //setcookie('redux-compiler-' . $this->args['opt_name'], 1, time() + 1000, "/"); //setcookie("redux-saved-{$this->args['opt_name']}", 'defaults', time() + 1000, "/"); $this->set_transients(); // Update the transients return $plugin_options; } // Section reset to defaults if ( ! empty ( $plugin_options['defaults-section'] ) ) { if ( isset ( $plugin_options['redux-section'] ) && isset ( $this->sections[ $plugin_options['redux-section'] ]['fields'] ) ) { /** * apply_filters 'redux/validate/{opt_name}/defaults_section' * * @param &array [ $this->options_defaults, $plugin_options] */ foreach ( $this->sections[ $plugin_options['redux-section'] ]['fields'] as $field ) { if ( isset ( $this->options_defaults[ $field['id'] ] ) ) { $plugin_options[ $field['id'] ] = $this->options_defaults[ $field['id'] ]; } else { $plugin_options[ $field['id'] ] = ""; } if ( isset ( $field['compiler'] ) ) { $compiler = true; } } $plugin_options = apply_filters( "redux/validate/{$this->args['opt_name']}/defaults_section", $plugin_options ); } $this->transients['changed_values'] = array(); foreach ( $this->options as $key => $value ) { if ( isset ( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { $this->transients['changed_values'][ $key ] = $value; } } if ( isset ( $compiler ) ) { //$this->run_compiler = true; //setcookie('redux-compiler-' . $this->args['opt_name'], 1, time()+1000, '/'); //$plugin_options['REDUX_COMPILER'] = time(); $this->transients['last_compiler'] = $time; $this->transients['run_compiler'] = 1; } $this->transients['last_save_mode'] = "defaults_section"; // Last save mode //setcookie("redux-saved-{$this->args['opt_name']}", 'defaults_section', time() + 1000, "/"); unset ( $plugin_options['defaults'], $plugin_options['defaults_section'], $plugin_options['import'], $plugin_options['import_code'], $plugin_options['import_link'], $plugin_options['compiler'], $plugin_options['redux-section'] ); $this->set_transients(); return $plugin_options; } // if ($this->transients['last_save_mode'] != 'remove') { $this->transients['last_save_mode'] = "normal"; // Last save mode // } else { // $this->transients['last_save_mode'] = ''; // } /** * apply_filters 'redux/validate/{opt_name}/before_validation' * * @param &array [&$plugin_options, redux_options] */ $plugin_options = apply_filters( "redux/validate/{$this->args['opt_name']}/before_validation", $plugin_options, $this->options ); // Validate fields (if needed) $plugin_options = $this->_validate_values( $plugin_options, $this->options, $this->sections ); if ( ! empty ( $this->errors ) || ! empty ( $this->warnings ) ) { $this->transients['notices'] = array( 'errors' => $this->errors, 'warnings' => $this->warnings ); } /** * action 'redux-validate-{opt_name}' * * @deprecated * * @param &array [&$plugin_options, redux_options] */ do_action_ref_array( "redux-validate-{$this->args['opt_name']}", array( &$plugin_options, $this->options ) ); // REMOVE if ( ! isset ( $this->transients['changed_values'] ) ) { $this->transients['changed_values'] = array(); } /** * action 'redux/options/{opt_name}/validate' * * @param &array [&$plugin_options, redux_options] */ do_action_ref_array( "redux/options/{$this->args['opt_name']}/validate", array( &$plugin_options, $this->options, $this->transients['changed_values'] ) ); if ( ! empty ( $plugin_options['compiler'] ) ) { unset ( $plugin_options['compiler'] ); $this->transients['last_compiler'] = $time; $this->transients['run_compiler'] = 1; } $this->transients['changed_values'] = array(); // Changed values since last save foreach ( $this->options as $key => $value ) { if ( isset ( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { $this->transients['changed_values'][ $key ] = $value; } } unset ( $plugin_options['defaults'], $plugin_options['defaults_section'], $plugin_options['import'], $plugin_options['import_code'], $plugin_options['import_link'], $plugin_options['compiler'], $plugin_options['redux-section'] ); if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' ) { $this->set_options( $plugin_options ); return; } if ( defined( 'WP_CACHE' ) && WP_CACHE && class_exists( 'W3_ObjectCache' ) && function_exists( 'w3_instance' ) ) { //echo "here"; $w3_inst = w3_instance( 'W3_ObjectCache' ); $w3 = $w3_inst->instance(); $key = $w3->_get_cache_key( $this->args['opt_name'] . '-transients', 'transient' ); //echo $key; $w3->delete( $key, 'transient', true ); //set_transient($this->args['opt_name'].'-transients', $this->transients); //exit(); } $this->set_transients( $this->transients ); return $plugin_options; } public function ajax_save() { if ( ! wp_verify_nonce( $_REQUEST['nonce'], "redux_ajax_nonce" . $this->args['opt_name'] ) ) { echo json_encode( array( 'status' => __( 'Invalid security credential. Please reload the page and try again.', 'redux-framework' ), 'action' => '' ) ); die(); } if ( ! self::current_user_can( $this->args['page_permissions'] ) ) { echo json_encode( array( 'status' => __( 'Invalid user capability. Please reload the page and try again.', 'redux-framework' ), 'action' => '' ) ); die(); } $redux = ReduxFrameworkInstances::get_instance( $_POST['opt_name'] ); if ( ! empty ( $_POST['data'] ) && ! empty ( $redux->args['opt_name'] ) ) { $values = array(); //if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { // $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); // while (list($key, $val) = each($process)) { // foreach ($val as $k => $v) { // unset($process[$key][$k]); // if (is_array($v)) { // $process[$key][stripslashes($k)] = $v; // $process[] = &$process[$key][stripslashes($k)]; // } else { // $process[$key][stripslashes($k)] = stripslashes($v); // } // } // } // unset($process); //} $_POST['data'] = stripslashes( $_POST['data'] ); // Old method of saving, in case we need to go back! - kp //parse_str( $_POST['data'], $values ); // New method to avoid input_var nonesense. Thanks @harunbasic $values = $this->redux_parse_str( $_POST['data'] ); $values = $values[ $redux->args['opt_name'] ]; if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) { $values = array_map( 'stripslashes_deep', $values ); } if ( ! empty ( $values ) ) { try { if ( isset ( $redux->validation_ran ) ) { unset ( $redux->validation_ran ); } $redux->set_options( $redux->_validate_options( $values ) ); $do_reload = false; if ( isset( $this->reload_fields ) && ! empty( $this->reload_fields ) ) { if ( ! empty( $this->transients['changed_values'] ) ) { foreach ( $this->reload_fields as $idx => $val ) { if ( array_key_exists( $val, $this->transients['changed_values'] ) ) { $do_reload = true; } } } } if ( $do_reload || ( isset ( $values['defaults'] ) && ! empty ( $values['defaults'] ) ) || ( isset ( $values['defaults-section'] ) && ! empty ( $values['defaults-section'] ) ) ) { echo json_encode( array( 'status' => 'success', 'action' => 'reload' ) ); die (); } require_once 'core/enqueue.php'; $enqueue = new reduxCoreEnqueue ( $redux ); $enqueue->get_warnings_and_errors_array(); $return_array = array( 'status' => 'success', 'options' => $redux->options, 'errors' => isset ( $redux->localize_data['errors'] ) ? $redux->localize_data['errors'] : null, 'warnings' => isset ( $redux->localize_data['warnings'] ) ? $redux->localize_data['warnings'] : null, ); } catch ( Exception $e ) { $return_array = array( 'status' => $e->getMessage() ); } } else { echo json_encode( array( 'status' => __( 'Your panel has no fields. Nothing to save.', 'redux-framework' ) ) ); } } if ( isset ( $this->transients['run_compiler'] ) && $this->transients['run_compiler'] ) { $this->no_output = true; $this->_enqueue_output(); try { /** * action 'redux-compiler-{opt_name}' * * @deprecated * * @param array options * @param string CSS that get sent to the compiler hook */ do_action( "redux-compiler-{$this->args['opt_name']}", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); // REMOVE /** * action 'redux/options/{opt_name}/compiler' * * @param array options * @param string CSS that get sent to the compiler hook */ do_action( "redux/options/{$this->args['opt_name']}/compiler", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); /** * action 'redux/options/{opt_name}/compiler/advanced' * * @param array options * @param string CSS that get sent to the compiler hook, which sends the full Redux object */ do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this ); } catch ( Exception $e ) { $return_array = array( 'status' => $e->getMessage() ); } unset ( $this->transients['run_compiler'] ); $this->set_transients(); } if ( isset( $return_array ) ) { if ( $return_array['status'] == "success" ) { require_once 'core/panel.php'; $panel = new reduxCorePanel ( $redux ); ob_start(); $panel->notification_bar(); $notification_bar = ob_get_contents(); ob_end_clean(); $return_array['notification_bar'] = $notification_bar; } echo json_encode( apply_filters( "redux/options/{$this->args['opt_name']}/ajax_save/response", $return_array ) ); } die (); } /** * Validate values from options form (used in settings api validate function) * calls the custom validation class for the field so authors can override with custom classes * * @since 1.0.0 * @access public * * @param array $plugin_options * @param array $options * * @return array $plugin_options */ public function _validate_values( $plugin_options, $options, $sections ) { foreach ( $sections as $k => $section ) { if ( isset ( $section['fields'] ) ) { foreach ( $section['fields'] as $fkey => $field ) { if ( is_array( $field ) ) { $field['section_id'] = $k; } if ( isset ( $field['type'] ) && ( $field['type'] == 'checkbox' || $field['type'] == 'checkbox_hide_below' || $field['type'] == 'checkbox_hide_all' ) ) { if ( ! isset ( $plugin_options[ $field['id'] ] ) ) { $plugin_options[ $field['id'] ] = 0; } } // if ( isset ( $field['type'] ) && $field['type'] == 'typography' ) { // if ( ! is_array( $plugin_options[ $field['id'] ] ) && ! empty( $plugin_options[ $field['id'] ] ) ) { // $plugin_options[ $field['id'] ] = json_decode( $plugin_options[ $field['id'] ], true ); // } // } if ( isset( $this->extensions[ $field['type'] ] ) && method_exists( $this->extensions[ $field['type'] ], '_validate_values' ) ) { $plugin_options = $this->extensions[ $field['type'] ]->_validate_values( $plugin_options, $field, $sections ); } // Default 'not_empty 'flag to false. $isNotEmpty = false; // Make sure 'validate' field is set. if ( isset ( $field['validate'] ) ) { // Make sure 'validate field' is set to 'not_empty' or 'email_not_empty' //if ( $field['validate'] == 'not_empty' || $field['validate'] == 'email_not_empty' || $field['validate'] == 'numeric_not_empty' ) { if ( strtolower( substr( $field['validate'], - 9 ) ) == 'not_empty' ) { // Set the flag. $isNotEmpty = true; } } // Check for empty id value if ( ! isset ( $field['id'] ) || ! isset ( $plugin_options[ $field['id'] ] ) || ( isset ( $plugin_options[ $field['id'] ] ) && $plugin_options[ $field['id'] ] == '' ) ) { // If we are looking for an empty value, in the case of 'not_empty' // then we need to keep processing. if ( ! $isNotEmpty ) { // Empty id and not checking for 'not_empty. Bail out... if (!isset($field['validate_callback'])) { continue; } //continue; } } // Force validate of custom field types if ( isset ( $field['type'] ) && ! isset ( $field['validate'] ) && ! isset( $field['validate_callback'] ) ) { if ( $field['type'] == 'color' || $field['type'] == 'color_gradient' ) { $field['validate'] = 'color'; } elseif ( $field['type'] == 'date' ) { $field['validate'] = 'date'; } } if ( isset ( $field['validate'] ) ) { $validate = 'Redux_Validation_' . $field['validate']; if ( ! class_exists( $validate ) ) { /** * filter 'redux-validateclass-load' * * @deprecated * * @param string validation class file path * @param string $validate validation class name */ $class_file = apply_filters( "redux-validateclass-load", self::$_dir . "inc/validation/{$field['validate']}/validation_{$field['validate']}.php", $validate ); // REMOVE LATER /** * filter 'redux/validate/{opt_name}/class/{field.validate}' * * @param string validation class file path * @param string $class_file validation class file path */ $class_file = apply_filters( "redux/validate/{$this->args['opt_name']}/class/{$field['validate']}", self::$_dir . "inc/validation/{$field['validate']}/validation_{$field['validate']}.php", $class_file ); if ( $class_file ) { if ( file_exists( $class_file ) ) { require_once $class_file; } } } if ( class_exists( $validate ) ) { //!DOVY - DB saving stuff. Is this right? if ( empty ( $options[ $field['id'] ] ) ) { $options[ $field['id'] ] = ''; } if ( isset ( $plugin_options[ $field['id'] ] ) && is_array( $plugin_options[ $field['id'] ] ) && ! empty ( $plugin_options[ $field['id'] ] ) ) { foreach ( $plugin_options[ $field['id'] ] as $key => $value ) { $before = $after = null; if ( isset ( $plugin_options[ $field['id'] ][ $key ] ) && ( ! empty ( $plugin_options[ $field['id'] ][ $key ] ) || $plugin_options[ $field['id'] ][ $key ] == '0' ) ) { if ( is_array( $plugin_options[ $field['id'] ][ $key ] ) ) { $before = $plugin_options[ $field['id'] ][ $key ]; } else { $before = trim( $plugin_options[ $field['id'] ][ $key ] ); } } if ( isset ( $options[ $field['id'] ][ $key ] ) && ( ! empty ( $plugin_options[ $field['id'] ][ $key ] ) || $plugin_options[ $field['id'] ][ $key ] == '0' ) ) { $after = $options[ $field['id'] ][ $key ]; } $validation = new $validate ( $this, $field, $before, $after ); if ( ! empty ( $validation->value ) || $validation->value == '0' ) { $plugin_options[ $field['id'] ][ $key ] = $validation->value; } else { unset ( $plugin_options[ $field['id'] ][ $key ] ); } if ( isset ( $validation->error ) ) { $this->errors[] = $validation->error; } if ( isset ( $validation->warning ) ) { $this->warnings[] = $validation->warning; } } } else { if ( isset( $plugin_options[ $field['id'] ] ) ) { if ( is_array( $plugin_options[ $field['id'] ] ) ) { $pofi = $plugin_options[ $field['id'] ]; } else { $pofi = trim( $plugin_options[ $field['id'] ] ); } } else { $pofi = null; } $validation = new $validate ( $this, $field, $pofi, $options[ $field['id'] ] ); $plugin_options[ $field['id'] ] = $validation->value; if ( isset ( $validation->error ) ) { $this->errors[] = $validation->error; } if ( isset ( $validation->warning ) ) { $this->warnings[] = $validation->warning; } } continue; } } if ( isset ( $field['validate_callback'] ) && ( is_callable( $field['validate_callback'] ) || ( is_string( $field['validate_callback'] ) && function_exists( $field['validate_callback'] ) ) ) ) { $callback = $field['validate_callback']; unset ( $field['validate_callback'] ); $plugin_option = isset( $plugin_options[ $field['id'] ] ) ? $plugin_options[ $field['id'] ] : null; $option = isset( $options[ $field['id'] ] ) ? $options[ $field['id'] ] : null; $callbackvalues = call_user_func( $callback, $field, $plugin_option, $option ); $plugin_options[ $field['id'] ] = $callbackvalues['value']; if ( isset ( $callbackvalues['error'] ) ) { $this->errors[] = $callbackvalues['error']; } // TODO - This warning message is failing. Hmm. // No it isn't. Problem was in the sample-config - kp if ( isset ( $callbackvalues['warning'] ) ) { $this->warnings[] = $callbackvalues['warning']; } } } } } return $plugin_options; } /** * Return Section Menu HTML * * @since 3.1.5 * @access public * @return void */ public function section_menu( $k, $section, $suffix = "", $sections = array() ) { $display = true; $section['class'] = isset ( $section['class'] ) ? ' ' . $section['class'] : ''; if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { if ( isset ( $section['panel'] ) && $section['panel'] == false ) { $display = false; } } if ( ! $display ) { return ""; } if ( empty ( $sections ) ) { $sections = $this->sections; } $string = ""; if ( ( ( isset ( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) || ( isset ( $section['icon_type'] ) && $section['icon_type'] == 'image' ) ) || ( isset( $section['icon'] ) && strpos( $section['icon'], '/' ) !== false ) ) { //if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) { $icon = ( ! isset ( $section['icon'] ) ) ? '' : ' '; } else { if ( ! empty ( $section['icon_class'] ) ) { $icon_class = ' ' . $section['icon_class']; } elseif ( ! empty ( $this->args['default_icon_class'] ) ) { $icon_class = ' ' . $this->args['default_icon_class']; } else { $icon_class = ''; } $icon = ( ! isset ( $section['icon'] ) ) ? ' ' : ' '; } if ( strpos( $icon, 'el-icon-' ) !== false ) { $icon = str_replace( 'el-icon-', 'el el-', $icon ); } $hide_section = ''; if ( isset ( $section['hidden'] ) ) { $hide_section = ( $section['hidden'] == true ) ? ' hidden ' : ''; } $canBeSubSection = ( $k > 0 && ( ! isset ( $sections[ ( $k ) ]['type'] ) || $sections[ ( $k ) ]['type'] != "divide" ) ) ? true : false; if ( ! $canBeSubSection && isset ( $section['subsection'] ) && $section['subsection'] == true ) { unset ( $section['subsection'] ); } if ( isset ( $section['type'] ) && $section['type'] == "divide" ) { $string .= '
  •  
  • '; } else if ( ! isset ( $section['subsection'] ) || $section['subsection'] != true ) { // DOVY! REPLACE $k with $section['ID'] when used properly. //$active = ( ( is_numeric($this->current_tab) && $this->current_tab == $k ) || ( !is_numeric($this->current_tab) && $this->current_tab === $k ) ) ? ' active' : ''; $subsections = ( isset ( $sections[ ( $k + 1 ) ] ) && isset ( $sections[ ( $k + 1 ) ]['subsection'] ) && $sections[ ( $k + 1 ) ]['subsection'] == true ) ? true : false; $subsectionsClass = $subsections ? ' hasSubSections' : ''; $subsectionsClass .= ( ! isset ( $section['fields'] ) || empty ( $section['fields'] ) ) ? ' empty_section' : ''; $extra_icon = $subsections ? ' ' : ''; $string .= ''; } return $string; } // section_menu() /** * HTML OUTPUT. * * @since 1.0.0 * @access public * @return void */ public function generate_panel() { require_once 'core/panel.php'; $panel = new reduxCorePanel ( $this ); $panel->init(); $this->set_transients(); } /** * Section HTML OUTPUT. * * @since 1.0.0 * @access public * * @param array $section * * @return void */ public function _section_desc( $section ) { $id = rtrim( $section['id'], '_section' ); $id = str_replace($this->args['opt_name'], '', $id); if ( isset ( $this->sections[ $id ]['desc'] ) && ! empty ( $this->sections[ $id ]['desc'] ) ) { echo '
    ' . $this->sections[ $id ]['desc'] . '
    '; } } /** * Field HTML OUTPUT. * Gets option from options array, then calls the specific field type class - allows extending by other devs * * @since 1.0.0 * * @param array $field * @param string $v * * @return void */ public function _field_input( $field, $v = null ) { if ( isset ( $field['callback'] ) && ( is_callable( $field['callback'] ) || ( is_string( $field['callback'] ) && function_exists( $field['callback'] ) ) ) ) { $value = ( isset ( $this->options[ $field['id'] ] ) ) ? $this->options[ $field['id'] ] : ''; /** * action 'redux-before-field-{opt_name}' * * @deprecated * * @param array $field field data * @param string $value field.id */ do_action( "redux-before-field-{$this->args['opt_name']}", $field, $value ); // REMOVE /** * action 'redux/field/{opt_name}/{field.type}/callback/before' * * @param array $field field data * @param string $value field.id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/callback/before", array( &$field, &$value ) ); /** * action 'redux/field/{opt_name}/callback/before' * * @param array $field field data * @param string $value field.id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/callback/before", array( &$field, &$value ) ); call_user_func( $field['callback'], $field, $value ); /** * action 'redux-after-field-{opt_name}' * * @deprecated * * @param array $field field data * @param string $value field.id */ do_action( "redux-after-field-{$this->args['opt_name']}", $field, $value ); // REMOVE /** * action 'redux/field/{opt_name}/{field.type}/callback/after' * * @param array $field field data * @param string $value field.id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/callback/after", array( &$field, &$value ) ); /** * action 'redux/field/{opt_name}/callback/after' * * @param array $field field data * @param string $value field.id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/callback/after", array( &$field, &$value ) ); return; } if ( isset ( $field['type'] ) ) { // If the field is set not to display in the panel $display = true; if ( isset ( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { if ( isset ( $field['panel'] ) && $field['panel'] == false ) { $display = false; } } if ( ! $display ) { return; } $field_class = "ReduxFramework_{$field['type']}"; if ( ! class_exists( $field_class ) ) { // $class_file = apply_filters( 'redux/field/class/'.$field['type'], self::$_dir . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field ); // REMOVE /** * filter 'redux/{opt_name}/field/class/{field.type}' * * @param string field class file path * @param array $field field data */ $class_file = apply_filters( "redux/{$this->args['opt_name']}/field/class/{$field['type']}", self::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); if ( $class_file ) { if ( file_exists( $class_file ) ) { require_once $class_file; } } } if ( class_exists( $field_class ) ) { $value = isset ( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : ''; if ( $v !== null ) { $value = $v; } /** * action 'redux-before-field-{opt_name}' * * @deprecated * * @param array $field field data * @param string $value field id */ do_action( "redux-before-field-{$this->args['opt_name']}", $field, $value ); // REMOVE /** * action 'redux/field/{opt_name}/{field.type}/render/before' * * @param array $field field data * @param string $value field id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/render/before", array( &$field, &$value ) ); /** * action 'redux/field/{$this->args['opt_name']}/render/before' * * @param array $field field data * @param string $value field id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/render/before", array( &$field, &$value ) ); if ( ! isset ( $field['name_suffix'] ) ) { $field['name_suffix'] = ""; } $render = new $field_class ( $field, $value, $this ); ob_start(); $render->render(); /* echo "
    ";
                          print_r($value);
                          echo "
    "; */ /** * filter 'redux-field-{opt_name}' * * @deprecated * * @param string rendered field markup * @param array $field field data */ $_render = apply_filters( "redux-field-{$this->args['opt_name']}", ob_get_contents(), $field ); // REMOVE /** * filter 'redux/field/{opt_name}/{field.type}/render/after' * * @param string rendered field markup * @param array $field field data */ $_render = apply_filters( "redux/field/{$this->args['opt_name']}/{$field['type']}/render/after", $_render, $field ); /** * filter 'redux/field/{opt_name}/render/after' * * @param string rendered field markup * @param array $field field data */ $_render = apply_filters( "redux/field/{$this->args['opt_name']}/render/after", $_render, $field ); ob_end_clean(); //save the values into a unique array in case we need it for dependencies $this->fieldsValues[ $field['id'] ] = ( isset ( $value['url'] ) && is_array( $value ) ) ? $value['url'] : $value; //create default data und class string and checks the dependencies of an object $class_string = ''; $data_string = ''; $this->check_dependencies( $field ); /** * action 'redux/field/{opt_name}/{field.type}/fieldset/before/{opt_name}' * * @param array $field field data * @param string $value field id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/fieldset/before/{$this->args['opt_name']}", array( &$field, &$value ) ); /** * action 'redux/field/{opt_name}/fieldset/before/{opt_name}' * * @param array $field field data * @param string $value field id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/fieldset/before/{$this->args['opt_name']}", array( &$field, &$value ) ); //if ( ! isset( $field['fields'] ) || empty( $field['fields'] ) ) { $hidden = ''; if ( isset ( $field['hidden'] ) && $field['hidden'] ) { $hidden = 'hidden '; } if ( isset( $field['full_width'] ) && $field['full_width'] == true ) { $class_string .= "redux_remove_th"; } if ( isset ( $field['fieldset_class'] ) && ! empty( $field['fieldset_class'] ) ) { $class_string .= ' ' . $field['fieldset_class']; } echo '
    '; //} echo $_render; if ( ! empty ( $field['desc'] ) ) { $field['description'] = $field['desc']; } echo ( isset ( $field['description'] ) && $field['type'] != "info" && $field['type'] !== "section" && ! empty ( $field['description'] ) ) ? '
    ' . $field['description'] . '
    ' : ''; //if ( ! isset( $field['fields'] ) || empty( $field['fields'] ) ) { echo '
    '; //} /** * action 'redux-after-field-{opt_name}' * * @deprecated * * @param array $field field data * @param string $value field id */ do_action( "redux-after-field-{$this->args['opt_name']}", $field, $value ); // REMOVE /** * action 'redux/field/{opt_name}/{field.type}/fieldset/after/{opt_name}' * * @param array $field field data * @param string $value field id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/{$field['type']}/fieldset/after/{$this->args['opt_name']}", array( &$field, &$value ) ); /** * action 'redux/field/{opt_name}/fieldset/after/{opt_name}' * * @param array $field field data * @param string $value field id */ do_action_ref_array( "redux/field/{$this->args['opt_name']}/fieldset/after/{$this->args['opt_name']}", array( &$field, &$value ) ); } } } // _field_input() /** * Can Output CSS * Check if a field meets its requirements before outputting to CSS * * @param $field * * @return bool */ public function _can_output_css( $field ) { $return = true; $field = apply_filters( "redux/field/{$this->args['opt_name']}/_can_output_css", $field ); if ( isset ( $field['force_output'] ) && $field['force_output'] == true ) { return $return; } if ( ! empty ( $field['required'] ) ) { if ( isset ( $field['required'][0] ) ) { if ( ! is_array( $field['required'][0] ) && count( $field['required'] ) == 3 ) { $parentValue = $GLOBALS[ $this->args['global_variable'] ][ $field['required'][0] ]; $checkValue = $field['required'][2]; $operation = $field['required'][1]; $return = $this->compareValueDependencies( $parentValue, $checkValue, $operation ); } else if ( is_array( $field['required'][0] ) ) { foreach ( $field['required'] as $required ) { if ( ! is_array( $required[0] ) && count( $required ) == 3 ) { $parentValue = $GLOBALS[ $this->args['global_variable'] ][ $required[0] ]; $checkValue = $required[2]; $operation = $required[1]; $return = $this->compareValueDependencies( $parentValue, $checkValue, $operation ); } if ( ! $return ) { return $return; } } } } } return $return; } // _can_output_css /** * Checks dependencies between objects based on the $field['required'] array * If the array is set it needs to have exactly 3 entries. * The first entry describes which field should be monitored by the current field. eg: "content" * The second entry describes the comparison parameter. eg: "equals, not, is_larger, is_smaller ,contains" * The third entry describes the value that we are comparing against. * Example: if the required array is set to array('content','equals','Hello World'); then the current * field will only be displayed if the field with id "content" has exactly the value "Hello World" * * @param array $field * * @return array $params */ public function check_dependencies( $field ) { //$params = array('data_string' => "", 'class_string' => ""); if ( isset( $field['ajax_save'] ) && $field['ajax_save'] == false ) { $this->reload_fields[] = $field['id']; } if ( ! empty ( $field['required'] ) ) { if ( ! isset ( $this->required_child[ $field['id'] ] ) ) { $this->required_child[ $field['id'] ] = array(); } if ( ! isset ( $this->required[ $field['id'] ] ) ) { $this->required[ $field['id'] ] = array(); } if ( is_array( $field['required'][0] ) ) { foreach ( $field['required'] as $value ) { if ( is_array( $value ) && count( $value ) == 3 ) { $data = array(); $data['parent'] = $value[0]; $data['operation'] = $value[1]; $data['checkValue'] = $value[2]; $this->required[ $data['parent'] ][ $field['id'] ][] = $data; if ( ! in_array( $data['parent'], $this->required_child[ $field['id'] ] ) ) { $this->required_child[ $field['id'] ][] = $data; } $this->checkRequiredDependencies( $field, $data ); } } } else { $data = array(); $data['parent'] = $field['required'][0]; $data['operation'] = $field['required'][1]; $data['checkValue'] = $field['required'][2]; $this->required[ $data['parent'] ][ $field['id'] ][] = $data; if ( ! in_array( $data['parent'], $this->required_child[ $field['id'] ] ) ) { $this->required_child[ $field['id'] ][] = $data; } $this->checkRequiredDependencies( $field, $data ); } } //return $params; } // Compare data for required field private function compareValueDependencies( $parentValue, $checkValue, $operation ) { $return = false; switch ( $operation ) { case '=': case 'equals': $data['operation'] = "="; if ( is_array( $parentValue ) ) { foreach ( $parentValue as $idx => $val ) { if ( is_array( $checkValue ) ) { foreach ( $checkValue as $i => $v ) { if ( $val == $v ) { $return = true; } } } else { if ( $val == $checkValue ) { $return = true; } } } } else { if ( is_array( $checkValue ) ) { foreach ( $checkValue as $i => $v ) { if ( $parentValue == $v ) { $return = true; } } } else { if ( $parentValue == $checkValue ) { $return = true; } } } break; case '!=': case 'not': $data['operation'] = "!=="; if ( is_array( $parentValue ) ) { foreach ( $parentValue as $idx => $val ) { if ( is_array( $checkValue ) ) { foreach ( $checkValue as $i => $v ) { if ( $val != $v ) { $return = true; } } } else { if ( $val != $checkValue ) { $return = true; } } } } else { if ( is_array( $checkValue ) ) { foreach ( $checkValue as $i => $v ) { if ( $parentValue != $v ) { $return = true; } } } else { if ( $parentValue != $checkValue ) { $return = true; } } } // if ( is_array( $checkValue ) ) { // if ( ! in_array( $parentValue, $checkValue ) ) { // $return = true; // } // } else { // if ( $parentValue != $checkValue ) { // $return = true; // } else if ( is_array( $parentValue ) ) { // if ( ! in_array( $checkValue, $parentValue ) ) { // $return = true; // } // } // } break; case '>': case 'greater': case 'is_larger': $data['operation'] = ">"; if ( $parentValue > $checkValue ) { $return = true; } break; case '>=': case 'greater_equal': case 'is_larger_equal': $data['operation'] = ">="; if ( $parentValue >= $checkValue ) { $return = true; } break; case '<': case 'less': case 'is_smaller': $data['operation'] = "<"; if ( $parentValue < $checkValue ) { $return = true; } break; case '<=': case 'less_equal': case 'is_smaller_equal': $data['operation'] = "<="; if ( $parentValue <= $checkValue ) { $return = true; } break; case 'contains': if ( is_array( $parentValue ) ) { $parentValue = implode( ',', $parentValue ); } if ( is_array( $checkValue ) ) { foreach ( $checkValue as $idx => $opt ) { if ( strpos( $parentValue, (string) $opt ) !== false ) { $return = true; } } } else { if ( strpos( $parentValue, (string) $checkValue ) !== false ) { $return = true; } } break; case 'doesnt_contain': case 'not_contain': if ( is_array( $parentValue ) ) { $parentValue = implode( ',', $parentValue ); } if ( is_array( $checkValue ) ) { foreach ( $checkValue as $idx => $opt ) { if ( strpos( $parentValue, (string) $opt ) === false ) { $return = true; } } } else { if ( strpos( $parentValue, (string) $checkValue ) === false ) { $return = true; } } break; case 'is_empty_or': if ( empty ( $parentValue ) || $parentValue == $checkValue ) { $return = true; } break; case 'not_empty_and': if ( ! empty ( $parentValue ) && $parentValue != $checkValue ) { $return = true; } break; case 'is_empty': case 'empty': case '!isset': if ( empty ( $parentValue ) || $parentValue == "" || $parentValue == null ) { $return = true; } break; case 'not_empty': case '!empty': case 'isset': if ( ! empty ( $parentValue ) && $parentValue != "" && $parentValue != null ) { $return = true; } break; } return $return; } private function checkRequiredDependencies( $field, $data ) { //required field must not be hidden. otherwise hide this one by default if ( ! in_array( $data['parent'], $this->fieldsHidden ) && ( ! isset ( $this->folds[ $field['id'] ] ) || $this->folds[ $field['id'] ] != "hide" ) ) { if ( isset ( $this->options[ $data['parent'] ] ) ) { $return = $this->compareValueDependencies( $this->options[ $data['parent'] ], $data['checkValue'], $data['operation'] ); //$return = $this->compareValueDependencies( $data['parent'], $data['checkValue'], $data['operation'] ); } } if ( ( isset ( $return ) && $return ) && ( ! isset ( $this->folds[ $field['id'] ] ) || $this->folds[ $field['id'] ] != "hide" ) ) { $this->folds[ $field['id'] ] = "show"; } else { $this->folds[ $field['id'] ] = "hide"; if ( ! in_array( $field['id'], $this->fieldsHidden ) ) { $this->fieldsHidden[] = $field['id']; } } } /** * converts an array into a html data string * * @param array $data example input: array('id'=>'true') * * @return string $data_string example output: data-id='true' */ public function create_data_string( $data = array() ) { $data_string = ""; foreach ( $data as $key => $value ) { if ( is_array( $value ) ) { $value = implode( "|", $value ); } $data_string .= " data-$key='$value' "; } return $data_string; } /** * Parses the string into variables without the max_input_vars limitation. * * @since 3.5.7.11 * @author harunbasic * @access public * * @param string $string * * @return array $result */ function redux_parse_str( $string ) { if ( '' == $string ) { return false; } $result = array(); $pairs = explode( '&', $string ); foreach ( $pairs as $key => $pair ) { // use the original parse_str() on each element parse_str( $pair, $params ); $k = key( $params ); if ( ! isset( $result[ $k ] ) ) { $result += $params; } else { $result[ $k ] = $this->redux_array_merge_recursive_distinct( $result[ $k ], $params[ $k ] ); } } return $result; } /** * Merge arrays without converting values with duplicate keys to arrays as array_merge_recursive does. * As seen here http://php.net/manual/en/function.array-merge-recursive.php#92195 * * @since 3.5.7.11 * @author harunbasic * @access public * * @param array $array1 * @param array $array2 * * @return array $merged */ function redux_array_merge_recursive_distinct( array $array1, array $array2 ) { $merged = $array1; foreach ( $array2 as $key => $value ) { if ( is_array( $value ) && isset( $merged[ $key ] ) && is_array( $merged[ $key ] ) ) { $merged[ $key ] = $this->redux_array_merge_recursive_distinct( $merged[ $key ], $value ); } else if ( is_numeric( $key ) && isset( $merged[ $key ] ) ) { $merged[] = $value; } else { $merged[ $key ] = $value; } } return $merged; } private function change_demo_defaults() { if ( $this->args['dev_mode'] == true || Redux_Helpers::isLocalHost() == true ) { if ( ! empty( $this->args['admin_bar_links'] ) ) { foreach ( $this->args['admin_bar_links'] as $idx => $arr ) { if ( is_array( $arr ) && ! empty( $arr ) ) { foreach ( $arr as $x => $y ) { if ( strpos( strtolower( $y ), 'redux' ) !== false ) { $msg = __( 'Redux Framework Notice: There are references to the Redux Framework support site in your config\'s admin_bar_links argument. This is sample data. Please change or remove this data before shipping your product.', 'redux-framework' ); $this->display_arg_change_notice( 'admin', $msg ); $this->omit_admin_items = true; continue; } } } } } if ( ! empty( $this->args['share_icons'] ) ) { foreach ( $this->args['share_icons'] as $idx => $arr ) { if ( is_array( $arr ) && ! empty( $arr ) ) { foreach ( $arr as $x => $y ) { if ( strpos( strtolower( $y ), 'redux' ) !== false ) { $msg = __( 'Redux Framework Notice: There are references to the Redux Framework support site in your config\'s share_icons argument. This is sample data. Please change or remove this data before shipping your product.', 'redux-framework' ); $this->display_arg_change_notice( 'share', $msg ); $this->omit_share_icons = true; } } } } } } } private function display_arg_change_notice( $mode, $msg = '' ) { if ( $mode == 'admin' ) { if ( ! $this->omit_admin_items ) { $this->admin_notices[] = array( 'type' => 'error', 'msg' => $msg, 'id' => 'admin_config', 'dismiss' => true, ); } } if ( $mode == 'share' ) { if ( ! $this->omit_share_icons ) { $this->admin_notices[] = array( 'type' => 'error', 'msg' => $msg, 'id' => 'share_config', 'dismiss' => true, ); } } } /** * Checks a nested capabilities array or string to determine if the current user meets the requirements. * * @since 3.6.3.4 * * @param string|array $capabilities Permission string or array to check. See self::user_can() for details. * @param int $object_id (Optional) ID of the specific object to check against if capability is a "meta" cap. * e.g. 'edit_post', 'edit_user', 'edit_page', etc., * * @return bool Whether or not the user meets the requirements. False on invalid user. */ public static function current_user_can( $capabilities ) { $current_user = wp_get_current_user(); if ( empty( $current_user ) ) { return false; } $args = array_merge( array( $current_user ), func_get_args() ); return call_user_func_array( array( 'self', 'user_can' ), $args ); } /** * Checks a nested capabilities array or string to determine if the user meets the requirements. * * You can pass in a simple string like 'edit_posts' or an array of conditions. * * The capability 'relation' is reserved for controlling the relation mode (AND/OR), which defaults to AND. * * Max depth of 30 levels. False is returned for any conditions exceeding max depth. * * If you want to check meta caps, you must also pass the object ID on which to check against. * If you get the error: PHP Notice: Undefined offset: 0 in /wp-includes/capabilities.php, you didn't * pass the required $object_id. * * @since 3.6.3.4 * * @example * ::user_can( 42, 'edit_pages' ); // Checks if user ID 42 has the 'edit_pages' cap. * ::user_can( 42, 'edit_page', 17433 ); // Checks if user ID 42 has the 'edit_page' cap for post ID 17433. * ::user_can( 42, array( 'edit_pages', 'edit_posts' ) ); // Checks if user ID 42 has both the 'edit_pages' and 'edit_posts' caps. * * @param int|object $user User ID or WP_User object to check. Defaults to the current user. * @param string|array $capabilities Capability string or array to check. The array lets you use multiple * conditions to determine if a user has permission. * Invalid conditions are skipped (conditions which aren't a string/array/bool/number(cast to bool)). * Example array where the user needs to have either the 'edit_posts' capability OR doesn't have the * 'delete_pages' cap OR has the 'update_plugins' AND 'add_users' capabilities. * array( * 'relation' => 'OR', // Optional, defaults to AND. * 'edit_posts', // Equivalent to 'edit_posts' => true, * 'delete_pages' => false, // Tests that the user DOESN'T have this capability * array( // Nested conditions array (up to 30 nestings) * 'update_plugins', * 'add_users', * ), * ) * * @param int $object_id (Optional) ID of the specific object to check against if capability is a "meta" cap. * e.g. 'edit_post', 'edit_user', 'edit_page', etc., * * @return bool Whether or not the user meets the requirements. * Will always return false for: * - Invalid/missing user * - If the $capabilities is not a string or array * - Max nesting depth exceeded (for that level) */ public static function user_can( $user, $capabilities, $object_id = null ) { static $depth = 0; if ( $depth >= 30 ) { return false; } if ( empty( $user ) ) { return false; } if ( !is_object( $user ) ) { $user = get_userdata( $user ); } if ( is_string( $capabilities ) ) { // Simple string capability check $args = array( $user, $capabilities, ); if ( $object_id !== null ) { $args[] = $object_id; } return call_user_func_array( 'user_can', $args ); } else { // Only strings and arrays are allowed as valid capabilities if ( !is_array( $capabilities ) ) { return false; } } // Capability array check $or = false; foreach ( $capabilities as $key => $value ) { if ( $key === 'relation' ) { if ( $value === 'OR' ) { $or = true; } continue; } /** * Rules can be in 4 different formats: * [ * [0] => 'foobar', * [1] => array(...), * 'foobar' => false, * 'foobar' => array(...), * ] */ if ( is_numeric( $key ) ) { // Numeric key if ( is_string( $value ) ) { // Numeric key with a string value is the capability string to check // [0] => 'foobar' $args = array( $user, $value, ); if ( $object_id !== null ) { $args[] = $object_id; } $expression_result = call_user_func_array( 'user_can', $args ) === true; } elseif ( is_array( $value ) ) { // [0] => array(...) $depth++; $expression_result = self::user_can( $user, $value, $object_id ); $depth--; } else { // Invalid types are skipped continue; } } else { // Non-numeric key if ( is_scalar( $value ) ) { // 'foobar' => false $args = array( $user, $key, ); if ( $object_id !== null ) { $args[] = $object_id; } $expression_result = call_user_func_array( 'user_can', $args ) === (bool)$value; } elseif ( is_array( $value ) ) { // 'foobar' => array(...) $depth++; $expression_result = self::user_can( $user, $value, $object_id ); $depth--; } else { // Invalid types are skipped continue; } } // Check after every evaluation if we know enough to return a definitive answer if ( $or ) { if ( $expression_result ) { // If the relation is OR, return on the first true expression return true; } } else { if ( !$expression_result ) { // If the relation is AND, return on the first false expression return false; } } } // If we get this far on an OR, then it failed // If we get this far on an AND, then it succeeded return !$or; } } // ReduxFramework /** * action 'redux/init' * * @param null */ do_action( 'redux/init', ReduxFramework::init() ); } // class_exists('ReduxFramework') redux/index.php000066600000000033152143340100007504 0ustar00 'nb_recent_portfolio', 'description' => __('Shows recent posts in sidebar.','nimbus') ); parent::__construct('nb_recent_portfolio', __('Nimbus - Recent Portfolio','nimbus'), $widget_ops); } function widget($args, $instance) { extract( $args ); $title = apply_filters( 'widget_title', empty($instance['title']) ? 'Recent Portfolio' : $instance['title'], $instance, $this->id_base); if ( ! $number = absint( $instance['number'] ) ) $number = 5; if( ! $cats = $instance["cats"] ) $cats=''; if($cats){ $cat_query = implode(',', $cats); } else { $cat_query = ''; } $my_args = array( 'post_type' => 'portfolio', 'posts_per_page' => $number, 'post_status' => 'publish', ); if ( $cat_query ) { $args['tax_query'] = array( array( 'taxonomy' => 'portfolio_category', 'field' => 'term_id', 'terms' => array($cat_query), ) ); } $adv_recent_posts = null; $adv_recent_posts = new WP_Query($my_args); echo $args['before_widget']; if ( $title ) { echo $args['before_title'] . $title . $args['after_title']; } echo '
      '."\n"; $post_count = 0; while ( $adv_recent_posts->have_posts() ) : $adv_recent_posts->the_post(); ?>
    • >
    • '."\n"; wp_reset_query(); echo $args['after_widget']; } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['cats'] = $new_instance['cats']; $instance['number'] = absint($new_instance['number']); return $instance; } function form( $instance ) { $title = isset($instance['title']) ? esc_attr($instance['title']) : 'Recent Portfolio'; $number = isset($instance['number']) ? absint($instance['number']) : 5; ?>

      'nb_flickr_images widget-flickr', 'description' => __('Display Flickr images','nimbus') ); parent::__construct('nimbus_flickr_images', __('Nimbus - Flickr Images','nimbus'), $widget_ops); } function widget($args, $instance) { extract( $args ); $title = apply_filters( 'widget_title', empty($instance['title']) ? 'Flickr' : $instance['title'], $instance, $this->id_base); echo $args['before_widget']; if ( $title ) { echo $args['before_title'] . $title . $args['after_title']; } echo '
      '."\n"; echo '
      '; echo '
      '."\n"; echo $args['after_widget']; } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['flickr_id'] = strip_tags($new_instance['flickr_id']); $instance['number_img'] = strip_tags($new_instance['number_img']); return $instance; } function form( $instance ) { $title = isset($instance['title']) ? esc_attr($instance['title']) : 'Flickr'; $flickr_id = isset($instance['flickr_id']) ? esc_attr($instance['flickr_id']) : ''; $number_img = isset($instance['number_img']) ? esc_attr($instance['number_img']) : '9'; ?>

      'nb-latest-tweet', 'description' => __('Display Lastest Tweet','nimbus') ); parent::__construct('nimbus_twitter', __('Nimbus - New Tweets','nimbus'), $widget_ops); } function widget($args, $instance) { extract( $args ); $title = apply_filters( 'widget_title', empty($instance['title']) ? 'Tweets' : $instance['title'], $instance, $this->id_base); $twitter_widget_id = 'nb-twitter-'.rand(); wp_enqueue_script( 'nimbus-tweetie' ); echo $args['before_widget']; if ( $title ) { echo $args['before_title'] . $title . $args['after_title']; } echo '
      '; echo '
      '."\n"; echo '
      '."\n"; echo '
      '."\n"; echo $args['after_widget']; } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['twitter_id'] = strip_tags($new_instance['twitter_id']); $instance['number_tweet'] = strip_tags($new_instance['number_tweet']); return $instance; } function form( $instance ) { $title = isset($instance['title']) ? esc_attr($instance['title']) : 'Twitter'; $twitter_id = isset($instance['twitter_id']) ? esc_attr($instance['twitter_id']) : ''; $number_tweet = isset($instance['number_tweet']) ? esc_attr($instance['number_tweet']) : '3'; ?>

      , Xcomments AC^dateLastOpened EYdateAdded#@(Tname#@0,>FZcnw  !"#/89;<AJKMNS\]_`foprs{Mcmb2lsvpblob^bplist00 FGHB_useRelativeDates_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumnXiconSize_viewOptionsVersion #(-27 @  B%  #@(Tname#@0,>FZcnw&(*+,579:;DFHIJSUWXYbdfghqsuvwIcmb2vSrnlong E DSDB ` @ @ @./ d 34 s 89 K  > @  B%  #@(Tname#@0,>FZcnw&(*+,579:;DFHIJSUWXYbdfghqsuvwIcmb2vSrnlongmeta/cmb2/bootstrap.php000066600000003222152143340100011037 0ustar00prop( 'hookup' ) ) { $hookup = new CMB2_hookup( $cmb ); $hookup->universal_hooks(); } if ( $cmb->prop( 'show_in_rest' ) && function_exists( 'rest_get_server' ) ) { $rest = new CMB2_REST( $cmb ); $rest->universal_hooks(); } } /** * Fires after CMB2 initiation process has been completed */ do_action( 'cmb2_after_init' ); } /* End. That's it, folks! */ meta/cmb2/.github/PULL_REQUEST_TEMPLATE.md000066600000000122152143340100013446 0ustar00Fixes #{issue-number}. ### Changes proposed in this pull request - - - meta/cmb2/.github/ISSUE_TEMPLATE.md000066600000000701152143340100012355 0ustar00### Expected Behavior: ### Actual Behavior: ### Steps to reproduce (I have confirmed I can reproduce this issue on the trunk branch): 1. 2. ### CMB2 Field Registration Code: ```php add_action( 'cmb2_admin_init', 'yourprefix_register_demo_metabox' ); function yourprefix_register_demo_metabox() { $cmb = new_cmb2_box( array( // Box Config... ) ); $cmb->add_field( array( // Field Config... ) ); // Additional fields... } ``` meta/cmb2/css/cmb2-display-rtl.min.css000066600000000467152143340100013472 0ustar00.cmb2-colorpicker-swatch span{display:inline-block;width:1em;height:1em;border-radius:1em;float:right;margin-top:3px;margin-left:2px}.cmb2-code{overflow:scroll}.cmb-image-display{max-width:100%;height:auto}.cmb2-display-file-list li{display:inline;margin:0 0 .5em .5em}.cmb2-oembed *{max-width:100%;height:auto}meta/cmb2/css/sass/index.php000066600000000032152143340100011666 0ustar00 .cmb-field-list > .cmb-row { padding: 1.8em 0; } input[type=text] { &.cmb2-oembed { width: 100%; } } } .cmb-row { padding: 0 0 1.8em; margin: 0 0 0.8em; .cmbhandle { right: -1em; position: relative; } } .cmb-repeatable-grouping { padding: 0 1em; max-width: 100%; min-width: 1px !important; } .cmb-repeatable-group > .cmb-row { padding-bottom: 0; } .cmb-th { width: 18%; padding: 0 2% 0 0; // text-align: right; } .cmb-td { margin-bottom: 0; padding: 0; line-height: 1.3; } .cmb-repeat-row .cmb-td { padding-bottom: 1.8em; } .cmb-th + .cmb-td { width: 80%; float: right; } .cmb-row:not(:last-of-type), .cmb-repeatable-group:not(:last-of-type) { border-bottom: 1px solid $light-gray; @media (max-width: $mobile-break) { border-bottom: 0; } } .cmb-repeat-group-field, .cmb-remove-field-row { padding-top: 1.8em; } .cmb2-metabox > .cmb-row { &.table-layout, .cmb-row.table-layout { .cmb-repeat-table .cmb-tbody { display: table; width: 100%; input.regular-text { width: 100%; } .cmb-row:not(.hidden):not(.empty-row) { display: table-row; } .cmb-td { display: table-cell; float: none; width: 100%; } .cmb-row:not(:first-of-type) .cmb-td { padding-top: 1.8em; } .cmb-td.cmb-remove-row { padding-right: 0; } } } } } meta/cmb2/css/sass/partials/_mixins.scss000066600000001151152143340100014233 0ustar00//-------------------------------------------------------------- // Mixins //-------------------------------------------------------------- @mixin fullth() { font-size: 1.2em; @include _fullth; } @mixin fullth_side() { @include _fullth; label { font-size: $font-size; line-height: 1.4em; } } @mixin _fullth() { display: block; float: none; padding-bottom: 1em; text-align: left; width: 100%; label { display: block; margin-top: 0em; padding-bottom: 5px; &:after { border-bottom: 1px solid $light-gray; content: ''; clear: both; display: block; padding-top: .4em; } } } meta/cmb2/css/sass/partials/_context_metaboxes.scss000066600000002753152143340100016470 0ustar00/*-------------------------------------------------------------- Context Metaboxes --------------------------------------------------------------*/ /* Metabox collapse arrow indicators */ .js .cmb2-postbox.context-box { .toggle-indicator { &:before { content: "\f142"; display: inline-block; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } } &.closed { .toggle-indicator { &:before { content: "\f140"; } } } } .cmb2-postbox.context-box { margin-bottom: 10px; &.context-before_permalink-box { margin-top: 10px; } &.context-after_title-box { margin-top: 10px; } &.context-after_editor-box { margin-top: 20px; margin-bottom: 0; } &.context-form_top-box { margin-top: 10px; .hndle { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } } .hndle { cursor: auto; } } .cmb2-context-wrap { margin-top: 10px; &.cmb2-context-wrap-form_top { margin-right: 300px; width: auto; } &.cmb2-context-wrap-no-title { .cmb2-metabox { padding: 10px; } } .cmb-th { padding: 0 2% 0 0; width: 18%; } .cmb-td { width: 80%; padding: 0; } .cmb-row { margin-bottom: 10px; &:last-of-type { margin-bottom: 0; } } } /* one column on the post write/edit screen */ @media only screen and (max-width: 850px) { .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-right: 0; } } meta/cmb2/css/sass/partials/_display.scss000066600000000637152143340100014401 0ustar00/** * CMB2 Styling */ .cmb2-colorpicker-swatch { span { display: inline-block; width: 1em; height: 1em; border-radius: 1em; float: left; margin-top: 3px; margin-right: 2px; } } .cmb2-code { overflow: scroll; } .cmb-image-display { max-width: 100%; height: auto; } .cmb2-display-file-list li { display: inline; margin: 0 .5em .5em 0; } .cmb2-oembed * { max-width: 100%; height: auto; } meta/cmb2/css/sass/partials/_misc.scss000066600000001145152143340100013662 0ustar00/*-------------------------------------------------------------- Misc. --------------------------------------------------------------*/ #poststuff .cmb-repeatable-group h2 { margin: 0; } .edit-tags-php, .profile-php, .user-edit-php { .cmb2-metabox-title { font-size: 1.4em; } } .cmb2-options-page { .cmb2-metabox-title { font-size: 1.3em; margin: 1em 0; + p.cmb2-metabox-description { margin-top: -1.6em; margin-bottom: .8em; } } } .cmb2-postbox, .cmb2-no-box-wrap { .cmb-spinner { float: left; display: none; } } .cmb-spinner { display: none; &.is-active { display: block; } } meta/cmb2/css/sass/partials/_front.scss000066600000001406152143340100014057 0ustar00.closed .inside { display: none; } .cmb-repeatable-grouping { position: relative; .cmb-group-title { margin-left: -1em; margin-right: -1em; min-height: 1.5em; } h3 { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } } .cmb-repeatable-group { &.repeatable .cmb-group-title { padding-left: 2.2em; } &.non-repeatable .cmb-group-title { padding-left: 12px; } } .cmb-type-group .cmb-row .cmbhandle { right: 0; position: absolute; } .cmb-spinner { background: url(/wp-admin/images/spinner.gif) no-repeat; -webkit-background-size: 20px 20px; background-size: 20px 20px; display: none; float: right; vertical-align: middle; opacity: 0.7; filter: alpha(opacity=70); width: 20px; height: 20px; margin: 4px 10px 0; } meta/cmb2/css/sass/partials/_jquery_ui.scss000066600000016625152143340100014754 0ustar00/* * jQuery UI CSS Framework 1.8.16 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * WordPress Styles adopted from "jQuery UI Datepicker CSS for WordPress" * https://github.com/stuttter/wp-datepicker-styling * */ * html .cmb2-element.ui-helper-clearfix { height:1%; } $weekend: #f4f4f4; $freshblue: #00a0d2; $freshdark: #32373c; $freshdarkblue: #0073aa; .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { padding: 0; margin: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; background-color: #fff; border: 1px solid #dfdfdf; border-top: none; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); min-width: 17em; width: auto; * { padding: 0; font-family: "Open Sans", sans-serif; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } table { font-size: 13px; margin: 0; border: none; border-collapse: collapse; } .ui-widget-header, .ui-datepicker-header { background-image: none; border: none; color: #fff; font-weight: normal; } .ui-datepicker-header .ui-state-hover { background: transparent; border-color: transparent; cursor: pointer; } .ui-datepicker-title { margin: 0; padding: 10px 0; color: #fff; font-size: 14px; line-height: 14px; text-align: center; select { margin-top: -8px; margin-bottom: -8px; } } .ui-datepicker-prev, .ui-datepicker-next { position: relative; top: 0; height: 34px; width: 34px; } .ui-state-hover.ui-datepicker-prev, .ui-state-hover.ui-datepicker-next { border: none; } .ui-datepicker-prev, .ui-datepicker-prev-hover { left: 0; } .ui-datepicker-next, .ui-datepicker-next-hover { right: 0; } .ui-datepicker-next span, .ui-datepicker-prev span { display: none; } .ui-datepicker-prev { float: left; } .ui-datepicker-next { float: right; } .ui-datepicker-prev:before, .ui-datepicker-next:before { font: normal 20px/34px 'dashicons'; padding-left: 7px; color: #fff; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 34px; height: 34px; } .ui-datepicker-prev:before { content: '\f341'; } .ui-datepicker-next:before { content: '\f345'; } .ui-datepicker-prev-hover:before, .ui-datepicker-next-hover:before { opacity: 0.7; } select.ui-datepicker-month, select.ui-datepicker-year { width: 33%; background: transparent; border-color: transparent; box-shadow: none; color: #fff; option { color: #333; } } thead { color: #fff; font-weight: 600; th { font-weight: normal; } } th { padding: 10px; } td { padding: 0; border: 1px solid $weekend; } td.ui-datepicker-other-month { border: transparent; } td.ui-datepicker-week-end { background-color: $weekend; border: 1px solid $weekend; &.ui-datepicker-today { -webkit-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); } } td.ui-datepicker-today { background-color: #f0f0c0; } td.ui-datepicker-current-day { background: #bbdd88; } td .ui-state-default { background: transparent; border: none; text-align: center; text-decoration: none; width: auto; display: block; padding: 5px 10px; font-weight: normal; color: #444; } td.ui-state-disabled .ui-state-default { opacity: 0.5; } /* Default Color Scheme */ .ui-widget-header, .ui-datepicker-header { background: $freshblue; } thead { background: $freshdark; } td .ui-state-hover, td .ui-state-active { background: $freshdarkblue; color: #fff; } .ui-timepicker-div { font-size: 14px; dl { text-align: left; padding: 0 .6em; dt { float: left; clear:left; padding: 0 0 0 5px; } dd { margin: 0 10px 10px 40%; select { width: 100%; } } } + .ui-datepicker-buttonpane { padding: .6em; text-align: left; .button-primary, .button-secondary { padding: 0 10px 1px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; margin: 0 .6em .4em .4em; } } } } .admin-color-fresh { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: $freshblue; } thead { background: $freshdark; } td .ui-state-hover { background: $freshdarkblue; color: #fff; } } } .admin-color-blue { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #52accc; } thead { background: #4796b3; } // td .ui-state-hover { // background: #096484; // } td { .ui-state-hover, .ui-state-active { background: #096484; color: #fff; } &.ui-datepicker-today { background: #eee; } } } } .admin-color-coffee { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #59524c; } thead { background: #46403c; } td .ui-state-hover { background: #c7a589; color: #fff; } } } .admin-color-ectoplasm { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #523f6d; } thead { background: #413256; } td .ui-state-hover { background: #a3b745; color: #fff; } } } .admin-color-midnight { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #363b3f; } thead { background: #26292c; } td .ui-state-hover { background: #e14d43; color: #fff; } } } .admin-color-ocean { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #738e96; } thead { background: #627c83; } td .ui-state-hover { background: #9ebaa0; color: #fff; } } } .admin-color-sunrise { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header, .ui-datepicker-header .ui-state-hover { background: #cf4944; } th { border-color: #be3631; background: #be3631; } td .ui-state-hover { background: #dd823b; color: #fff; } } } .admin-color-light { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #e5e5e5; } select.ui-datepicker-month, select.ui-datepicker-year { color: #555; } thead { background: #888; } .ui-datepicker-title, td .ui-state-default, .ui-datepicker-prev:before, .ui-datepicker-next:before { color: #555; } td { .ui-state-hover, .ui-state-active { background: #ccc; } &.ui-datepicker-today { background: #eee; } } } } .admin-color-bbp-evergreen { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #56b274; } thead { background: #36533f; } td .ui-state-hover { background: #446950; color: #fff; } } } .admin-color-bbp-mint { .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { .ui-widget-header, .ui-datepicker-header { background: #4ca26a; } thead { background: #4f6d59; } td .ui-state-hover { background: #5fb37c; color: #fff; } } } meta/cmb2/css/sass/partials/_main_wrap.scss000066600000013241152143340100014704 0ustar00/*-------------------------------------------------------------- Main Wrap --------------------------------------------------------------*/ .cmb2-wrap { margin: 0; input, textarea { font-size: $font-size; max-width: 100%; padding: 5px; } input[type=text] { &.cmb2-oembed { width: 100%; } } textarea { width: 500px; &.cmb2-textarea-code { font-family: $font-mono; line-height: 16px; } } input { &.cmb2-text-small, &.cmb2-timepicker { width: 100px; // margin-right: 15px } &.cmb2-text-money { width: 90px; // margin-right: 15px } &.cmb2-text-medium { width: 230px; // margin-right: 15px } &.cmb2-upload-file { width: 65%; } &.ed_button { padding: 2px 4px; } &:not([type="hidden"]) { + input, + .button, + select { margin-left: 20px; } } } ul { margin: 0; } li { font-size: $font-size; line-height: 16px; margin: 1px 0 5px 0; } // .cmb-field-list .cmb-field-list { // padding-top:5px; // margin: 0; // } select { font-size: $font-size; margin-top: 3px; } input:focus, textarea:focus { background: $light-yellow; } input[type="radio"] { margin: 0 5px 0 0; padding: 0 } input[type="checkbox"] { margin: 0 5px 0 0; padding: 0; } button, .button { white-space: nowrap; } .mceLayout { border: 1px solid $light-gray !important; } .mceIframeContainer { background: #fff; } .meta_mce { width: 97%; textarea { width: 100%; } } // /** // * Color picker // */ .wp-color-result, .wp-picker-input-wrap { vertical-align: middle; } .wp-color-result, .wp-picker-container { margin: 0 10px 0 0; } .cmb-row { margin: 0; &:after { content: ''; clear: both; display: block; width: 100%; } &.cmb-repeat-row { padding: 1.8em 0 0; &:first-of-type { padding: 0; } } &.cmb-repeat .cmb2-metabox-description { padding-top: 0; padding-bottom: 1.8em; } } } .cmb2-metabox { clear: both; margin: 0; > .cmb-row:first-of-type >, .cmb-field-list > .cmb-row:first-of-type > { .cmb-td, .cmb-th { border: 0; } } > .cmb-row { .cmb-repeat-table .cmb-row > .cmb-td { padding-right: 20px; box-sizing: border-box; float: left; } } } .cmb-add-row { margin: 1.8em 0 0; } .cmb-nested .cmb-td, .cmb-repeatable-group .cmb-th, .cmb-repeatable-group:first-of-type { border: 0; } .cmb-row:last-of-type, .cmb2-wrap .cmb-row:last-of-type, .cmb-repeatable-group:last-of-type { border-bottom: 0; } .cmb-repeatable-grouping { border: 1px solid $light-gray; padding: 0 1em; max-width: 1000px; &.cmb-row { margin: 0 0 0.8em; } + .cmb-repeatable-grouping { } } .cmb-th { color: $dark-gray; float: left; font-weight: 600; line-height: 1.3; padding: 20px 10px 20px 0; vertical-align: top; width: 200px; @media (max-width: $mobile-break) { @include fullth; } } .cmb-td { line-height: 1.3; max-width: 100%; padding: 15px 10px; vertical-align: middle; } .cmb-type-title { .cmb-td { padding: 0; } } .cmb-th label { display: block; padding: 5px 0; } .cmb-th + .cmb-td { float: left; } .cmb-td .cmb-td { padding-bottom: 1em; } .cmb-remove-row { text-align: right; } .empty-row.hidden { display: none; } .cmb-repeatable-group { .cmb-th { padding: 5px; } .cmb-group-title { background-color: $light-gray; padding: 8px 12px 8px 2.2em; margin: 0 -1em; min-height: 1.5em; font-size: 14px; line-height: 1.4; h4 { border: 0; margin: 0; font-size: 1.2em; font-weight: 500; padding: 0.5em 0.75em; } .cmb-th { display: block; width: 100%; } } .cmb-group-description .cmb-th { @include fullth; } .cmb-shift-rows { font-size: 1em; margin-right: 1em; text-decoration: none; .dashicons { font-size: 1.5em; height: 1.5em; line-height: 1.2em; width: 1em; &.dashicons-arrow-down-alt2 { line-height: 1.3em; } } } .cmb2-upload-button { float: right; } } p.cmb2-metabox-description { color: $gray; font-style: italic; margin: 0; padding-top: .5em; } span.cmb2-metabox-description { color: $gray; font-style: italic; } .cmb2-metabox-title { margin: 0 0 5px 0; padding: 5px 0 0 0; font-size: 14px; } .cmb-inline ul { padding: 4px 0 0 0; } .cmb-inline li { display: inline-block; padding-right: 18px; } .cmb-type-textarea-code pre { margin: 0; } .cmb2-media-status { .img-status { clear: none; display: inline-block; vertical-align: middle; margin-right: 10px; width: auto; img { max-width: 350px; height: auto; } } .img-status img, .embed-status { background: $white; border: 1px solid $light-gray; border-radius: 2px; -moz-border-radius: 2px; margin: 15px 0 0 0; padding: 5px; } .embed-status { float: left; max-width: 800px; } .img-status, .embed-status { position: relative; .cmb2-remove-file-button { background: url(../images/ico-delete.png); height: 16px; left: -5px; position: absolute; text-indent: -9999px; top: -5px; width: 16px; } } .img-status { .cmb2-remove-file-button { top: 10px; } } .img-status img, .file-status > span { cursor: pointer; } } .cmb-type-file-list .cmb2-media-status .img-status { clear: none; vertical-align: middle; width: auto; margin-right: 10px; margin-bottom: 10px; margin-top: 0; } .cmb-attach-list li { clear: both; display: inline-block; width: 100%; margin-top: 5px; margin-bottom: 10px; img { cursor: move; float: left; margin-right: 10px; } } .cmb2-remove-wrapper { margin: 0; } .child-cmb2 .cmb-th { text-align: left; } @media (max-width: $mobile-break) { .cmb-th, .cmb-td, .cmb-th + .cmb-td { display: block; float: none; width: 100%; } } meta/cmb2/css/sass/partials/index.php000066600000000032152143340100013505 0ustar00 .cmb-field-list > .cmb-row { padding: 1.4em 0; } input { &[type=text]:not( .wp-color-picker ) { width: 100%; } + input:not( .wp-picker-clear ), + select { margin-left: 0; margin-top: 1em; display: block; } &.cmb2-text-money { max-width: 70%; + .cmb2-metabox-description { display: block; } } } label { display: block; font-weight: 700; padding: 0 0 5px; } } textarea { max-width: 99%; } .cmb-repeatable-group { border-bottom: 1px solid $light-gray; } .cmb-type-group > .cmb-td > .cmb-repeatable-group { border-bottom: 0; margin-bottom: -1.4em; } .cmb-th, .cmb-td, .cmb-th + .cmb-td { width: 100%; display: block; float: none; } .closed .inside { display: none; } .cmb-td .cmb-td { padding-bottom: 1em; } .cmb-th { @include fullth_side; padding-left: 0; padding-right: 0; } .cmb-group-description { .cmb-th { padding-top: 0; } .cmb2-metabox-description { padding: 0; } } .cmb-group-title { // padding-bottom: 0; .cmb-th { padding: 0; } } .cmb-repeatable-grouping { + .cmb-repeatable-grouping { margin-top: 1em; } } .cmb2-media-status { .img-status, .embed-status { img { max-width: 90%; // width: auto; height: auto; } } } .cmb2-list label { display: inline; font-weight: normal; } .cmb2-metabox-description { display: block; padding: 7px 0 0; } .cmb-type-checkbox { .cmb-td label, .cmb2-metabox-description { font-weight: normal; display: inline; } } .cmb-row .cmb2-metabox-description { padding-bottom: 1.8em; } .cmb2-metabox-title { font-size: 1.2em; font-style: italic; } .cmb-remove-row { clear: both; padding-top: 12px; padding-bottom: 0; } .cmb-type-colorpicker .cmb-repeat-row { .cmb-td { width: auto; clear: none; float: left; padding-top: 0; &.cmb-remove-row { float: right; margin: 0; } } } .cmb2-upload-button { clear: both; margin-top: 12px; } } meta/cmb2/css/sass/cmb2-display.scss000066600000000065152143340100013237 0ustar00/** * CMB2 Styling */ @import "partials/display"; meta/cmb2/css/cmb2-display.min.css000066600000000467152143340100012673 0ustar00.cmb2-colorpicker-swatch span{display:inline-block;width:1em;height:1em;border-radius:1em;float:left;margin-top:3px;margin-right:2px}.cmb2-code{overflow:scroll}.cmb-image-display{max-width:100%;height:auto}.cmb2-display-file-list li{display:inline;margin:0 .5em .5em 0}.cmb2-oembed *{max-width:100%;height:auto}meta/cmb2/css/cmb2.min.css000066600000076761152143340100011242 0ustar00.cmb2-wrap{margin:0}.cmb2-wrap input,.cmb2-wrap textarea{font-size:14px;max-width:100%;padding:5px}.cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb2-wrap textarea{width:500px}.cmb2-wrap textarea.cmb2-textarea-code{font-family:"Courier 10 Pitch",Courier,monospace;line-height:16px}.cmb2-wrap input.cmb2-text-small,.cmb2-wrap input.cmb2-timepicker{width:100px}.cmb2-wrap input.cmb2-text-money{width:90px}.cmb2-wrap input.cmb2-text-medium{width:230px}.cmb2-wrap input.cmb2-upload-file{width:65%}.cmb2-wrap input.ed_button{padding:2px 4px}.cmb2-wrap input:not([type=hidden])+.button,.cmb2-wrap input:not([type=hidden])+input,.cmb2-wrap input:not([type=hidden])+select{margin-left:20px}.cmb2-wrap ul{margin:0}.cmb2-wrap li{font-size:14px;line-height:16px;margin:1px 0 5px}.cmb2-wrap select{font-size:14px;margin-top:3px}.cmb2-wrap input:focus,.cmb2-wrap textarea:focus{background:#fffff8}.cmb2-wrap input[type=checkbox],.cmb2-wrap input[type=radio]{margin:0 5px 0 0;padding:0}.cmb2-wrap .button,.cmb2-wrap button{white-space:nowrap}.cmb2-wrap .mceLayout{border:1px solid #e9e9e9!important}.cmb2-wrap .mceIframeContainer{background:#fff}.cmb2-wrap .meta_mce{width:97%}.cmb2-wrap .meta_mce textarea{width:100%}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-input-wrap{vertical-align:middle}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-container{margin:0 10px 0 0}.cmb2-wrap .cmb-row{margin:0}.cmb2-wrap .cmb-row:after{content:'';clear:both;display:block;width:100%}.cmb2-wrap .cmb-row.cmb-repeat-row{padding:1.8em 0 0}.cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type{padding:0}.cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description{padding-top:0;padding-bottom:1.8em}.cmb2-metabox{clear:both;margin:0}.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-th,.cmb2-metabox>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox>.cmb-row:first-of-type>.cmb-th{border:0}.cmb2-metabox>.cmb-row .cmb-repeat-table .cmb-row>.cmb-td{padding-right:20px;box-sizing:border-box;float:left}.cmb-add-row{margin:1.8em 0 0}.cmb-nested .cmb-td,.cmb-repeatable-group .cmb-th,.cmb-repeatable-group:first-of-type{border:0}.cmb-repeatable-group:last-of-type,.cmb-row:last-of-type,.cmb2-wrap .cmb-row:last-of-type{border-bottom:0}.cmb-repeatable-grouping{border:1px solid #e9e9e9;padding:0 1em;max-width:1000px}.cmb-repeatable-grouping.cmb-row{margin:0 0 .8em}.cmb-th{color:#222;float:left;font-weight:600;line-height:1.3;padding:20px 10px 20px 0;vertical-align:top;width:200px}.cmb-td{line-height:1.3;max-width:100%;padding:15px 10px;vertical-align:middle}.cmb-type-title .cmb-td{padding:0}.cmb-th label{display:block;padding:5px 0}.cmb-th+.cmb-td{float:left}.cmb-td .cmb-td{padding-bottom:1em}.cmb-remove-row{text-align:right}.empty-row.hidden{display:none}.cmb-repeatable-group .cmb-th{padding:5px}.cmb-repeatable-group .cmb-group-title{background-color:#e9e9e9;padding:8px 12px 8px 2.2em;margin:0 -1em;min-height:1.5em;font-size:14px;line-height:1.4}.cmb-repeatable-group .cmb-group-title h4{border:0;margin:0;font-size:1.2em;font-weight:500;padding:.5em .75em}.cmb-repeatable-group .cmb-group-title .cmb-th{display:block;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th{font-size:1.2em;display:block;float:none;padding-bottom:1em;text-align:left;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-repeatable-group .cmb-group-description .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}.cmb-repeatable-group .cmb-shift-rows{font-size:1em;margin-right:1em;text-decoration:none}.cmb-repeatable-group .cmb-shift-rows .dashicons{font-size:1.5em;height:1.5em;line-height:1.2em;width:1em}.cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2{line-height:1.3em}.cmb-repeatable-group .cmb2-upload-button{float:right}p.cmb2-metabox-description{color:#aaa;font-style:italic;margin:0;padding-top:.5em}span.cmb2-metabox-description{color:#aaa;font-style:italic}.cmb2-metabox-title{margin:0 0 5px;padding:5px 0 0;font-size:14px}.cmb-inline ul{padding:4px 0 0}.cmb-inline li{display:inline-block;padding-right:18px}.cmb-type-textarea-code pre{margin:0}.cmb2-media-status .img-status{clear:none;display:inline-block;vertical-align:middle;margin-right:10px;width:auto}.cmb2-media-status .img-status img{max-width:350px;height:auto}.cmb2-media-status .embed-status,.cmb2-media-status .img-status img{background:#fff;border:1px solid #e9e9e9;border-radius:2px;-moz-border-radius:2px;margin:15px 0 0;padding:5px}.cmb2-media-status .embed-status{float:left;max-width:800px}.cmb2-media-status .embed-status,.cmb2-media-status .img-status{position:relative}.cmb2-media-status .embed-status .cmb2-remove-file-button,.cmb2-media-status .img-status .cmb2-remove-file-button{background:url(../images/ico-delete.png);height:16px;left:-5px;position:absolute;text-indent:-9999px;top:-5px;width:16px}.cmb2-media-status .img-status .cmb2-remove-file-button{top:10px}.cmb2-media-status .file-status>span,.cmb2-media-status .img-status img{cursor:pointer}.cmb-type-file-list .cmb2-media-status .img-status{clear:none;vertical-align:middle;width:auto;margin-right:10px;margin-bottom:10px;margin-top:0}.cmb-attach-list li{clear:both;display:inline-block;width:100%;margin-top:5px;margin-bottom:10px}.cmb-attach-list li img{cursor:move;float:left;margin-right:10px}.cmb2-remove-wrapper{margin:0}.child-cmb2 .cmb-th{text-align:left}#poststuff .cmb-group-title{margin-left:-1em;margin-right:-1em;min-height:1.5em}#poststuff .repeatable .cmb-group-title{padding-left:2.2em}.cmb-type-group .cmb2-wrap,.cmb2-postbox .cmb2-wrap{margin:0}.cmb-type-group .cmb2-wrap>.cmb-field-list>.cmb-row,.cmb2-postbox .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.8em 0}.cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed,.cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb-type-group .cmb-row,.cmb2-postbox .cmb-row{padding:0 0 1.8em;margin:0 0 .8em}.cmb-type-group .cmb-row .cmbhandle,.cmb2-postbox .cmb-row .cmbhandle{right:-1em;position:relative}.cmb-type-group .cmb-repeatable-grouping,.cmb2-postbox .cmb-repeatable-grouping{padding:0 1em;max-width:100%;min-width:1px!important}.cmb-type-group .cmb-repeatable-group>.cmb-row,.cmb2-postbox .cmb-repeatable-group>.cmb-row{padding-bottom:0}.cmb-type-group .cmb-th,.cmb2-postbox .cmb-th{width:18%;padding:0 2% 0 0}.cmb-type-group .cmb-td,.cmb2-postbox .cmb-td{margin-bottom:0;padding:0;line-height:1.3}.cmb-type-group .cmb-repeat-row .cmb-td,.cmb2-postbox .cmb-repeat-row .cmb-td{padding-bottom:1.8em}.cmb-type-group .cmb-th+.cmb-td,.cmb2-postbox .cmb-th+.cmb-td{width:80%;float:right}.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:1px solid #e9e9e9}.cmb-type-group .cmb-remove-field-row,.cmb-type-group .cmb-repeat-group-field,.cmb2-postbox .cmb-remove-field-row,.cmb2-postbox .cmb-repeat-group-field{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody{display:table;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text{width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row){display:table-row}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td{display:table-cell;float:none;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row{padding-right:0}.js .cmb2-postbox.context-box .toggle-indicator:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .cmb2-postbox.context-box.closed .toggle-indicator:before{content:"\f140"}.cmb2-postbox.context-box{margin-bottom:10px}.cmb2-postbox.context-box.context-after_title-box,.cmb2-postbox.context-box.context-before_permalink-box{margin-top:10px}.cmb2-postbox.context-box.context-after_editor-box{margin-top:20px;margin-bottom:0}.cmb2-postbox.context-box.context-form_top-box{margin-top:10px}.cmb2-postbox.context-box.context-form_top-box .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.cmb2-postbox.context-box .hndle{cursor:auto}.cmb2-context-wrap{margin-top:10px}.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-right:300px;width:auto}.cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox{padding:10px}.cmb2-context-wrap .cmb-th{padding:0 2% 0 0;width:18%}.cmb2-context-wrap .cmb-td{width:80%;padding:0}.cmb2-context-wrap .cmb-row{margin-bottom:10px}.cmb2-context-wrap .cmb-row:last-of-type{margin-bottom:0}#poststuff .cmb-repeatable-group h2{margin:0}.edit-tags-php .cmb2-metabox-title,.profile-php .cmb2-metabox-title,.user-edit-php .cmb2-metabox-title{font-size:1.4em}.cmb2-options-page .cmb2-metabox-title{font-size:1.3em;margin:1em 0}.cmb2-options-page .cmb2-metabox-title+p.cmb2-metabox-description{margin-top:-1.6em;margin-bottom:.8em}.cmb2-no-box-wrap .cmb-spinner,.cmb2-postbox .cmb-spinner{float:left;display:none}.cmb-spinner{display:none}.cmb-spinner.is-active{display:block}#side-sortables .cmb2-wrap>.cmb-field-list>.cmb-row,.inner-sidebar .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.4em 0}#side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker),.inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker){width:100%}#side-sortables .cmb2-wrap input+input:not(.wp-picker-clear),#side-sortables .cmb2-wrap input+select,.inner-sidebar .cmb2-wrap input+input:not(.wp-picker-clear),.inner-sidebar .cmb2-wrap input+select{margin-left:0;margin-top:1em;display:block}#side-sortables .cmb2-wrap input.cmb2-text-money,.inner-sidebar .cmb2-wrap input.cmb2-text-money{max-width:70%}#side-sortables .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description,.inner-sidebar .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description{display:block}#side-sortables .cmb2-wrap label,.inner-sidebar .cmb2-wrap label{display:block;font-weight:700;padding:0 0 5px}#side-sortables textarea,.inner-sidebar textarea{max-width:99%}#side-sortables .cmb-repeatable-group,.inner-sidebar .cmb-repeatable-group{border-bottom:1px solid #e9e9e9}#side-sortables .cmb-type-group>.cmb-td>.cmb-repeatable-group,.inner-sidebar .cmb-type-group>.cmb-td>.cmb-repeatable-group{border-bottom:0;margin-bottom:-1.4em}#side-sortables .cmb-td,#side-sortables .cmb-th,#side-sortables .cmb-th+.cmb-td,.inner-sidebar .cmb-td,.inner-sidebar .cmb-th,.inner-sidebar .cmb-th+.cmb-td{width:100%;display:block;float:none}#side-sortables .closed .inside,.inner-sidebar .closed .inside{display:none}#side-sortables .cmb-td .cmb-td,.inner-sidebar .cmb-td .cmb-td{padding-bottom:1em}#side-sortables .cmb-th,.inner-sidebar .cmb-th{display:block;float:none;padding-bottom:1em;text-align:left;width:100%;padding-left:0;padding-right:0}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{display:block;margin-top:0;padding-bottom:5px}#side-sortables .cmb-th label:after,.inner-sidebar .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{font-size:14px;line-height:1.4em}#side-sortables .cmb-group-description .cmb-th,.inner-sidebar .cmb-group-description .cmb-th{padding-top:0}#side-sortables .cmb-group-description .cmb2-metabox-description,#side-sortables .cmb-group-title .cmb-th,.inner-sidebar .cmb-group-description .cmb2-metabox-description,.inner-sidebar .cmb-group-title .cmb-th{padding:0}#side-sortables .cmb-repeatable-grouping+.cmb-repeatable-grouping,.inner-sidebar .cmb-repeatable-grouping+.cmb-repeatable-grouping{margin-top:1em}#side-sortables .cmb2-media-status .embed-status img,#side-sortables .cmb2-media-status .img-status img,.inner-sidebar .cmb2-media-status .embed-status img,.inner-sidebar .cmb2-media-status .img-status img{max-width:90%;height:auto}#side-sortables .cmb2-list label,.inner-sidebar .cmb2-list label{display:inline;font-weight:400}#side-sortables .cmb2-metabox-description,.inner-sidebar .cmb2-metabox-description{display:block;padding:7px 0 0}#side-sortables .cmb-type-checkbox .cmb-td label,#side-sortables .cmb-type-checkbox .cmb2-metabox-description,.inner-sidebar .cmb-type-checkbox .cmb-td label,.inner-sidebar .cmb-type-checkbox .cmb2-metabox-description{font-weight:400;display:inline}#side-sortables .cmb-row .cmb2-metabox-description,.inner-sidebar .cmb-row .cmb2-metabox-description{padding-bottom:1.8em}#side-sortables .cmb2-metabox-title,.inner-sidebar .cmb2-metabox-title{font-size:1.2em;font-style:italic}#side-sortables .cmb-remove-row,.inner-sidebar .cmb-remove-row{clear:both;padding-top:12px;padding-bottom:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td{width:auto;clear:none;float:left;padding-top:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row{float:right;margin:0}#side-sortables .cmb2-upload-button,.inner-sidebar .cmb2-upload-button{clear:both;margin-top:12px}.cmb2-metabox .cmb-type-group{max-width:1000px}.cmb2-metabox .cmbhandle{color:#aaa;float:right;width:27px;height:30px;cursor:pointer;right:-1em;position:relative}.cmb2-metabox .cmbhandle:before{content:'\f142';right:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.cmb2-metabox .postbox.closed .cmbhandle:before{content:'\f140'}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row{-webkit-appearance:none!important;background:none!important;border:none!important;position:absolute;left:0;top:.5em;line-height:1em;padding:2px 6px 3px;opacity:.5}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]){cursor:pointer;color:#a00;opacity:1}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover{color:red}* html .cmb2-element.ui-helper-clearfix{height:1%}.cmb2-element .ui-datepicker,.cmb2-element.ui-datepicker{padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background-color:#fff;border:1px solid #dfdfdf;border-top:none;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075);min-width:17em;width:auto}.cmb2-element .ui-datepicker *,.cmb2-element.ui-datepicker *{padding:0;font-family:"Open Sans",sans-serif;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.cmb2-element .ui-datepicker table,.cmb2-element.ui-datepicker table{font-size:13px;margin:0;border:none;border-collapse:collapse}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{border:none;color:#fff;font-weight:400}.cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover{background:0 0;border-color:transparent;cursor:pointer}.cmb2-element .ui-datepicker .ui-datepicker-title,.cmb2-element.ui-datepicker .ui-datepicker-title{margin:0;padding:10px 0;color:#fff;font-size:14px;line-height:14px;text-align:center}.cmb2-element .ui-datepicker .ui-datepicker-title select,.cmb2-element.ui-datepicker .ui-datepicker-title select{margin-top:-8px;margin-bottom:-8px}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-prev{position:relative;top:0;height:34px;width:34px}.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev{border:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover,.cmb2-element.ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover{left:0}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-next-hover,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next-hover{right:0}.cmb2-element .ui-datepicker .ui-datepicker-next span,.cmb2-element .ui-datepicker .ui-datepicker-prev span,.cmb2-element.ui-datepicker .ui-datepicker-next span,.cmb2-element.ui-datepicker .ui-datepicker-prev span{display:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev{float:left}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next{float:right}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{font:400 20px/34px dashicons;padding-left:7px;color:#fff;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:34px;height:34px}.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{content:'\f341'}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before{content:'\f345'}.cmb2-element .ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before{opacity:.7}.cmb2-element .ui-datepicker select.ui-datepicker-month,.cmb2-element .ui-datepicker select.ui-datepicker-year,.cmb2-element.ui-datepicker select.ui-datepicker-month,.cmb2-element.ui-datepicker select.ui-datepicker-year{width:33%;background:0 0;border-color:transparent;box-shadow:none;color:#fff}.cmb2-element .ui-datepicker select.ui-datepicker-month option,.cmb2-element .ui-datepicker select.ui-datepicker-year option,.cmb2-element.ui-datepicker select.ui-datepicker-month option,.cmb2-element.ui-datepicker select.ui-datepicker-year option{color:#333}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{color:#fff;font-weight:600}.cmb2-element .ui-datepicker thead th,.cmb2-element.ui-datepicker thead th{font-weight:400}.cmb2-element .ui-datepicker th,.cmb2-element.ui-datepicker th{padding:10px}.cmb2-element .ui-datepicker td,.cmb2-element.ui-datepicker td{padding:0;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-other-month,.cmb2-element.ui-datepicker td.ui-datepicker-other-month{border:transparent}.cmb2-element .ui-datepicker td.ui-datepicker-week-end,.cmb2-element.ui-datepicker td.ui-datepicker-week-end{background-color:#f4f4f4;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today{-webkit-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);-moz-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1)}.cmb2-element .ui-datepicker td.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-today{background-color:#f0f0c0}.cmb2-element .ui-datepicker td.ui-datepicker-current-day,.cmb2-element.ui-datepicker td.ui-datepicker-current-day{background:#bd8}.cmb2-element .ui-datepicker td .ui-state-default,.cmb2-element.ui-datepicker td .ui-state-default{background:0 0;border:none;text-align:center;text-decoration:none;width:auto;display:block;padding:5px 10px;font-weight:400;color:#444}.cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default,.cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default{opacity:.5}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{background:#32373c}.cmb2-element .ui-datepicker td .ui-state-active,.cmb2-element .ui-datepicker td .ui-state-hover,.cmb2-element.ui-datepicker td .ui-state-active,.cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.cmb2-element .ui-datepicker .ui-timepicker-div,.cmb2-element.ui-datepicker .ui-timepicker-div{font-size:14px}.cmb2-element .ui-datepicker .ui-timepicker-div dl,.cmb2-element.ui-datepicker .ui-timepicker-div dl{text-align:left;padding:0 .6em}.cmb2-element .ui-datepicker .ui-timepicker-div dl dt,.cmb2-element.ui-datepicker .ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd{margin:0 10px 10px 40%}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd select,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd select{width:100%}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane{padding:.6em;text-align:left}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary{padding:0 10px 1px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:0 .6em .4em .4em}.admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.admin-color-fresh .cmb2-element .ui-datepicker thead,.admin-color-fresh .cmb2-element.ui-datepicker thead{background:#32373c}.admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header{background:#52accc}.admin-color-blue .cmb2-element .ui-datepicker thead,.admin-color-blue .cmb2-element.ui-datepicker thead{background:#4796b3}.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover{background:#096484;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header{background:#59524c}.admin-color-coffee .cmb2-element .ui-datepicker thead,.admin-color-coffee .cmb2-element.ui-datepicker thead{background:#46403c}.admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover{background:#c7a589;color:#fff}.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header{background:#523f6d}.admin-color-ectoplasm .cmb2-element .ui-datepicker thead,.admin-color-ectoplasm .cmb2-element.ui-datepicker thead{background:#413256}.admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover{background:#a3b745;color:#fff}.admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header{background:#363b3f}.admin-color-midnight .cmb2-element .ui-datepicker thead,.admin-color-midnight .cmb2-element.ui-datepicker thead{background:#26292c}.admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover{background:#e14d43;color:#fff}.admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header{background:#738e96}.admin-color-ocean .cmb2-element .ui-datepicker thead,.admin-color-ocean .cmb2-element.ui-datepicker thead{background:#627c83}.admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover{background:#9ebaa0;color:#fff}.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header{background:#cf4944}.admin-color-sunrise .cmb2-element .ui-datepicker th,.admin-color-sunrise .cmb2-element.ui-datepicker th{border-color:#be3631;background:#be3631}.admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover{background:#dd823b;color:#fff}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element.ui-datepicker .ui-widget-header{background:#e5e5e5}.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year{color:#555}.admin-color-light .cmb2-element .ui-datepicker thead,.admin-color-light .cmb2-element.ui-datepicker thead{background:#888}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-default,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-default{color:#555}.admin-color-light .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover{background:#ccc}.admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header{background:#56b274}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead{background:#36533f}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover{background:#446950;color:#fff}.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header{background:#4ca26a}.admin-color-bbp-mint .cmb2-element .ui-datepicker thead,.admin-color-bbp-mint .cmb2-element.ui-datepicker thead{background:#4f6d59}.admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover{background:#5fb37c;color:#fff}@media only screen and (max-width:850px){.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-right:0}}@media (max-width:450px){.cmb-th{font-size:1.2em;padding-bottom:1em;text-align:left}.cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}.cmb-td,.cmb-th,.cmb-th+.cmb-td{display:block;float:none;width:100%}.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:0}}meta/cmb2/css/cmb2.css000066600000136436152143340100010454 0ustar00/** * CMB2 Styling */ /*-------------------------------------------------------------- Main Wrap --------------------------------------------------------------*/ /* line 5, sass/partials/_main_wrap.scss */ .cmb2-wrap { margin: 0; } /* line 8, sass/partials/_main_wrap.scss */ .cmb2-wrap input, .cmb2-wrap textarea { font-size: 14px; max-width: 100%; padding: 5px; } /* line 18, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 23, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea { width: 500px; } /* line 26, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea.cmb2-textarea-code { font-family: "Courier 10 Pitch", Courier, monospace; line-height: 16px; } /* line 34, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-small, .cmb2-wrap input.cmb2-timepicker { width: 100px; } /* line 40, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-money { width: 90px; } /* line 45, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-medium { width: 230px; } /* line 50, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-upload-file { width: 65%; } /* line 54, sass/partials/_main_wrap.scss */ .cmb2-wrap input.ed_button { padding: 2px 4px; } /* line 59, sass/partials/_main_wrap.scss */ .cmb2-wrap input:not([type="hidden"]) + input, .cmb2-wrap input:not([type="hidden"]) + .button, .cmb2-wrap input:not([type="hidden"]) + select { margin-left: 20px; } /* line 67, sass/partials/_main_wrap.scss */ .cmb2-wrap ul { margin: 0; } /* line 71, sass/partials/_main_wrap.scss */ .cmb2-wrap li { font-size: 14px; line-height: 16px; margin: 1px 0 5px 0; } /* line 82, sass/partials/_main_wrap.scss */ .cmb2-wrap select { font-size: 14px; margin-top: 3px; } /* line 87, sass/partials/_main_wrap.scss */ .cmb2-wrap input:focus, .cmb2-wrap textarea:focus { background: #fffff8; } /* line 92, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="radio"] { margin: 0 5px 0 0; padding: 0; } /* line 97, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="checkbox"] { margin: 0 5px 0 0; padding: 0; } /* line 102, sass/partials/_main_wrap.scss */ .cmb2-wrap button, .cmb2-wrap .button { white-space: nowrap; } /* line 107, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceLayout { border: 1px solid #e9e9e9 !important; } /* line 111, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceIframeContainer { background: #fff; } /* line 115, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce { width: 97%; } /* line 118, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce textarea { width: 100%; } /* line 126, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-input-wrap { vertical-align: middle; } /* line 131, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-container { margin: 0 10px 0 0; } /* line 136, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row { margin: 0; } /* line 139, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row:after { content: ''; clear: both; display: block; width: 100%; } /* line 146, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row { padding: 1.8em 0 0; } /* line 149, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type { padding: 0; } /* line 154, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description { padding-top: 0; padding-bottom: 1.8em; } /* line 161, sass/partials/_main_wrap.scss */ .cmb2-metabox { clear: both; margin: 0; } /* line 167, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox > .cmb-row:first-of-type > .cmb-th, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-th { border: 0; } /* line 174, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row .cmb-repeat-table .cmb-row > .cmb-td { padding-right: 20px; box-sizing: border-box; float: left; } /* line 182, sass/partials/_main_wrap.scss */ .cmb-add-row { margin: 1.8em 0 0; } /* line 186, sass/partials/_main_wrap.scss */ .cmb-nested .cmb-td, .cmb-repeatable-group .cmb-th, .cmb-repeatable-group:first-of-type { border: 0; } /* line 192, sass/partials/_main_wrap.scss */ .cmb-row:last-of-type, .cmb2-wrap .cmb-row:last-of-type, .cmb-repeatable-group:last-of-type { border-bottom: 0; } /* line 198, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping { border: 1px solid #e9e9e9; padding: 0 1em; max-width: 1000px; } /* line 202, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping.cmb-row { margin: 0 0 0.8em; } /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { color: #222222; float: left; font-weight: 600; line-height: 1.3; padding: 20px 10px 20px 0; vertical-align: top; width: 200px; } /* line 223, sass/partials/_main_wrap.scss */ .cmb-td { line-height: 1.3; max-width: 100%; padding: 15px 10px; vertical-align: middle; } /* line 232, sass/partials/_main_wrap.scss */ .cmb-type-title .cmb-td { padding: 0; } /* line 237, sass/partials/_main_wrap.scss */ .cmb-th label { display: block; padding: 5px 0; } /* line 242, sass/partials/_main_wrap.scss */ .cmb-th + .cmb-td { float: left; } /* line 246, sass/partials/_main_wrap.scss */ .cmb-td .cmb-td { padding-bottom: 1em; } /* line 250, sass/partials/_main_wrap.scss */ .cmb-remove-row { text-align: right; } /* line 254, sass/partials/_main_wrap.scss */ .empty-row.hidden { display: none; } /* line 260, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-th { padding: 5px; } /* line 264, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title { background-color: #e9e9e9; padding: 8px 12px 8px 2.2em; margin: 0 -1em; min-height: 1.5em; font-size: 14px; line-height: 1.4; } /* line 272, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title h4 { border: 0; margin: 0; font-size: 1.2em; font-weight: 500; padding: 0.5em 0.75em; } /* line 280, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title .cmb-th { display: block; width: 100%; } /* line 286, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: left; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 290, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows { font-size: 1em; margin-right: 1em; text-decoration: none; } /* line 295, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons { font-size: 1.5em; height: 1.5em; line-height: 1.2em; width: 1em; } /* line 301, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2 { line-height: 1.3em; } /* line 308, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb2-upload-button { float: right; } /* line 314, sass/partials/_main_wrap.scss */ p.cmb2-metabox-description { color: #aaaaaa; font-style: italic; margin: 0; padding-top: .5em; } /* line 321, sass/partials/_main_wrap.scss */ span.cmb2-metabox-description { color: #aaaaaa; font-style: italic; } /* line 326, sass/partials/_main_wrap.scss */ .cmb2-metabox-title { margin: 0 0 5px 0; padding: 5px 0 0 0; font-size: 14px; } /* line 332, sass/partials/_main_wrap.scss */ .cmb-inline ul { padding: 4px 0 0 0; } /* line 336, sass/partials/_main_wrap.scss */ .cmb-inline li { display: inline-block; padding-right: 18px; } /* line 341, sass/partials/_main_wrap.scss */ .cmb-type-textarea-code pre { margin: 0; } /* line 347, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status { clear: none; display: inline-block; vertical-align: middle; margin-right: 10px; width: auto; } /* line 354, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img { max-width: 350px; height: auto; } /* line 360, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .embed-status { background: #ffffff; border: 1px solid #e9e9e9; border-radius: 2px; -moz-border-radius: 2px; margin: 15px 0 0 0; padding: 5px; } /* line 370, sass/partials/_main_wrap.scss */ .cmb2-media-status .embed-status { float: left; max-width: 800px; } /* line 375, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status, .cmb2-media-status .embed-status { position: relative; } /* line 378, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button, .cmb2-media-status .embed-status .cmb2-remove-file-button { background: url(../images/ico-delete.png); height: 16px; left: -5px; position: absolute; text-indent: -9999px; top: -5px; width: 16px; } /* line 392, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button { top: 10px; } /* line 397, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .file-status > span { cursor: pointer; } /* line 403, sass/partials/_main_wrap.scss */ .cmb-type-file-list .cmb2-media-status .img-status { clear: none; vertical-align: middle; width: auto; margin-right: 10px; margin-bottom: 10px; margin-top: 0; } /* line 412, sass/partials/_main_wrap.scss */ .cmb-attach-list li { clear: both; display: inline-block; width: 100%; margin-top: 5px; margin-bottom: 10px; } /* line 419, sass/partials/_main_wrap.scss */ .cmb-attach-list li img { cursor: move; float: left; margin-right: 10px; } /* line 426, sass/partials/_main_wrap.scss */ .cmb2-remove-wrapper { margin: 0; } /* line 430, sass/partials/_main_wrap.scss */ .child-cmb2 .cmb-th { text-align: left; } /*-------------------------------------------------------------- Post Metaboxes --------------------------------------------------------------*/ /* line 4, sass/partials/_post_metaboxes.scss */ #poststuff .cmb-group-title { margin-left: -1em; margin-right: -1em; min-height: 1.5em; } /* line 10, sass/partials/_post_metaboxes.scss */ #poststuff .repeatable .cmb-group-title { padding-left: 2.2em; } /* line 16, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap, .cmb-type-group .cmb2-wrap { margin: 0; } /* line 19, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap > .cmb-field-list > .cmb-row, .cmb-type-group .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.8em 0; } /* line 25, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed, .cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 31, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row, .cmb-type-group .cmb-row { padding: 0 0 1.8em; margin: 0 0 0.8em; } /* line 35, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row .cmbhandle, .cmb-type-group .cmb-row .cmbhandle { right: -1em; position: relative; } /* line 41, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-grouping, .cmb-type-group .cmb-repeatable-grouping { padding: 0 1em; max-width: 100%; min-width: 1px !important; } /* line 47, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-group > .cmb-row, .cmb-type-group .cmb-repeatable-group > .cmb-row { padding-bottom: 0; } /* line 51, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th, .cmb-type-group .cmb-th { width: 18%; padding: 0 2% 0 0; } /* line 57, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-td, .cmb-type-group .cmb-td { margin-bottom: 0; padding: 0; line-height: 1.3; } /* line 63, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-row .cmb-td, .cmb-type-group .cmb-repeat-row .cmb-td { padding-bottom: 1.8em; } /* line 67, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th + .cmb-td, .cmb-type-group .cmb-th + .cmb-td { width: 80%; float: right; } /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 1px solid #e9e9e9; } /* line 81, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-group-field, .cmb2-postbox .cmb-remove-field-row, .cmb-type-group .cmb-repeat-group-field, .cmb-type-group .cmb-remove-field-row { padding-top: 1.8em; } /* line 88, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody { display: table; width: 100%; } /* line 92, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text { width: 100%; } /* line 96, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row) { display: table-row; } /* line 100, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td { display: table-cell; float: none; width: 100%; } /* line 106, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td { padding-top: 1.8em; } /* line 110, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row { padding-right: 0; } /*-------------------------------------------------------------- Context Metaboxes --------------------------------------------------------------*/ /* Metabox collapse arrow indicators */ /* line 9, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box .toggle-indicator:before { content: "\f142"; display: inline-block; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 22, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box.closed .toggle-indicator:before { content: "\f140"; } /* line 30, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box { margin-bottom: 10px; } /* line 34, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-before_permalink-box { margin-top: 10px; } /* line 38, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_title-box { margin-top: 10px; } /* line 42, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_editor-box { margin-top: 20px; margin-bottom: 0; } /* line 47, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box { margin-top: 10px; } /* line 51, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box .hndle { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } /* line 59, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box .hndle { cursor: auto; } /* line 64, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap { margin-top: 10px; } /* line 68, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-right: 300px; width: auto; } /* line 75, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox { padding: 10px; } /* line 80, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-th { padding: 0 2% 0 0; width: 18%; } /* line 85, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-td { width: 80%; padding: 0; } /* line 90, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row { margin-bottom: 10px; } /* line 93, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row:last-of-type { margin-bottom: 0; } /* one column on the post write/edit screen */ /*-------------------------------------------------------------- Misc. --------------------------------------------------------------*/ /* line 5, sass/partials/_misc.scss */ #poststuff .cmb-repeatable-group h2 { margin: 0; } /* line 12, sass/partials/_misc.scss */ .edit-tags-php .cmb2-metabox-title, .profile-php .cmb2-metabox-title, .user-edit-php .cmb2-metabox-title { font-size: 1.4em; } /* line 18, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title { font-size: 1.3em; margin: 1em 0; } /* line 21, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title + p.cmb2-metabox-description { margin-top: -1.6em; margin-bottom: .8em; } /* line 28, sass/partials/_misc.scss */ .cmb2-postbox .cmb-spinner, .cmb2-no-box-wrap .cmb-spinner { float: left; display: none; } /* line 33, sass/partials/_misc.scss */ .cmb-spinner { display: none; } /* line 35, sass/partials/_misc.scss */ .cmb-spinner.is-active { display: block; } /*-------------------------------------------------------------- Sidebar Placement Adjustments --------------------------------------------------------------*/ /* line 10, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap > .cmb-field-list > .cmb-row, #side-sortables .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.4em 0; } /* line 16, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker), #side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker) { width: 100%; } /* line 20, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input + input:not(.wp-picker-clear), .inner-sidebar .cmb2-wrap input + select, #side-sortables .cmb2-wrap input + input:not(.wp-picker-clear), #side-sortables .cmb2-wrap input + select { margin-left: 0; margin-top: 1em; display: block; } /* line 26, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money, #side-sortables .cmb2-wrap input.cmb2-text-money { max-width: 70%; } /* line 28, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description, #side-sortables .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description { display: block; } /* line 34, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap label, #side-sortables .cmb2-wrap label { display: block; font-weight: 700; padding: 0 0 5px; } /* line 42, sass/partials/_sidebar_placements.scss */ .inner-sidebar textarea, #side-sortables textarea { max-width: 99%; } /* line 46, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-group, #side-sortables .cmb-repeatable-group { border-bottom: 1px solid #e9e9e9; } /* line 50, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-group > .cmb-td > .cmb-repeatable-group, #side-sortables .cmb-type-group > .cmb-td > .cmb-repeatable-group { border-bottom: 0; margin-bottom: -1.4em; } /* line 55, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, .inner-sidebar .cmb-td, .inner-sidebar .cmb-th + .cmb-td, #side-sortables .cmb-th, #side-sortables .cmb-td, #side-sortables .cmb-th + .cmb-td { width: 100%; display: block; float: none; } /* line 63, sass/partials/_sidebar_placements.scss */ .inner-sidebar .closed .inside, #side-sortables .closed .inside { display: none; } /* line 67, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-td .cmb-td, #side-sortables .cmb-td .cmb-td { padding-bottom: 1em; } /* line 71, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, #side-sortables .cmb-th { display: block; float: none; padding-bottom: 1em; text-align: left; width: 100%; padding-left: 0; padding-right: 0; } /* line 27, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label:after, #side-sortables .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 14, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { font-size: 14px; line-height: 1.4em; } /* line 78, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb-th, #side-sortables .cmb-group-description .cmb-th { padding-top: 0; } /* line 81, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb2-metabox-description, #side-sortables .cmb-group-description .cmb2-metabox-description { padding: 0; } /* line 88, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-title .cmb-th, #side-sortables .cmb-group-title .cmb-th { padding: 0; } /* line 94, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-grouping + .cmb-repeatable-grouping, #side-sortables .cmb-repeatable-grouping + .cmb-repeatable-grouping { margin-top: 1em; } /* line 103, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-media-status .img-status img, .inner-sidebar .cmb2-media-status .embed-status img, #side-sortables .cmb2-media-status .img-status img, #side-sortables .cmb2-media-status .embed-status img { max-width: 90%; height: auto; } /* line 111, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-list label, #side-sortables .cmb2-list label { display: inline; font-weight: normal; } /* line 116, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-description, #side-sortables .cmb2-metabox-description { display: block; padding: 7px 0 0; } /* line 123, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-checkbox .cmb-td label, .inner-sidebar .cmb-type-checkbox .cmb2-metabox-description, #side-sortables .cmb-type-checkbox .cmb-td label, #side-sortables .cmb-type-checkbox .cmb2-metabox-description { font-weight: normal; display: inline; } /* line 130, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-row .cmb2-metabox-description, #side-sortables .cmb-row .cmb2-metabox-description { padding-bottom: 1.8em; } /* line 134, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-title, #side-sortables .cmb2-metabox-title { font-size: 1.2em; font-style: italic; } /* line 139, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-remove-row, #side-sortables .cmb-remove-row { clear: both; padding-top: 12px; padding-bottom: 0; } /* line 146, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td { width: auto; clear: none; float: left; padding-top: 0; } /* line 151, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row { float: right; margin: 0; } /* line 158, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-upload-button, #side-sortables .cmb2-upload-button { clear: both; margin-top: 12px; } /* line 2, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmb-type-group { max-width: 1000px; } /* line 5, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle { color: #aaa; float: right; width: 27px; height: 30px; cursor: pointer; right: -1em; position: relative; } /* line 13, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle:before { content: '\f142'; right: 12px; font: normal 20px/1 'dashicons'; speak: none; display: inline-block; padding: 8px 10px; top: 0; position: relative; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 30, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .postbox.closed .cmbhandle:before { content: '\f140'; } /* line 36, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row { -webkit-appearance: none !important; background: none !important; border: none !important; position: absolute; left: 0; top: .5em; line-height: 1em; padding: 2px 6px 3px; opacity: .5; } /* line 46, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]) { cursor: pointer; color: #a00; opacity: 1; } /* line 50, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover { color: #f00; } /* * jQuery UI CSS Framework 1.8.16 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * WordPress Styles adopted from "jQuery UI Datepicker CSS for WordPress" * https://github.com/stuttter/wp-datepicker-styling * */ /* line 15, sass/partials/_jquery_ui.scss */ * html .cmb2-element.ui-helper-clearfix { height: 1%; } /* line 24, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { padding: 0; margin: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; background-color: #fff; border: 1px solid #dfdfdf; border-top: none; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); min-width: 17em; width: auto; /* Default Color Scheme */ } /* line 38, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker *, .cmb2-element .ui-datepicker * { padding: 0; font-family: "Open Sans", sans-serif; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } /* line 46, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker table, .cmb2-element .ui-datepicker table { font-size: 13px; margin: 0; border: none; border-collapse: collapse; } /* line 53, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background-image: none; border: none; color: #fff; font-weight: normal; } /* line 61, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: transparent; border-color: transparent; cursor: pointer; } /* line 67, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title, .cmb2-element .ui-datepicker .ui-datepicker-title { margin: 0; padding: 10px 0; color: #fff; font-size: 14px; line-height: 14px; text-align: center; } /* line 75, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title select, .cmb2-element .ui-datepicker .ui-datepicker-title select { margin-top: -8px; margin-bottom: -8px; } /* line 81, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-next { position: relative; top: 0; height: 34px; width: 34px; } /* line 89, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next { border: none; } /* line 94, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-prev-hover, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover { left: 0; } /* line 99, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element.ui-datepicker .ui-datepicker-next-hover, .cmb2-element .ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next-hover { right: 0; } /* line 104, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next span, .cmb2-element.ui-datepicker .ui-datepicker-prev span, .cmb2-element .ui-datepicker .ui-datepicker-next span, .cmb2-element .ui-datepicker .ui-datepicker-prev span { display: none; } /* line 109, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev { float: left; } /* line 113, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next { float: right; } /* line 117, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { font: normal 20px/34px 'dashicons'; padding-left: 7px; color: #fff; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 34px; height: 34px; } /* line 129, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before { content: '\f341'; } /* line 133, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { content: '\f345'; } /* line 137, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element.ui-datepicker .ui-datepicker-next-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-next-hover:before { opacity: 0.7; } /* line 142, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month, .cmb2-element.ui-datepicker select.ui-datepicker-year, .cmb2-element .ui-datepicker select.ui-datepicker-month, .cmb2-element .ui-datepicker select.ui-datepicker-year { width: 33%; background: transparent; border-color: transparent; box-shadow: none; color: #fff; } /* line 149, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month option, .cmb2-element.ui-datepicker select.ui-datepicker-year option, .cmb2-element .ui-datepicker select.ui-datepicker-month option, .cmb2-element .ui-datepicker select.ui-datepicker-year option { color: #333; } /* line 154, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { color: #fff; font-weight: 600; } /* line 157, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead th, .cmb2-element .ui-datepicker thead th { font-weight: normal; } /* line 162, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker th, .cmb2-element .ui-datepicker th { padding: 10px; } /* line 166, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td, .cmb2-element .ui-datepicker td { padding: 0; border: 1px solid #f4f4f4; } /* line 171, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-other-month, .cmb2-element .ui-datepicker td.ui-datepicker-other-month { border: transparent; } /* line 175, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end, .cmb2-element .ui-datepicker td.ui-datepicker-week-end { background-color: #f4f4f4; border: 1px solid #f4f4f4; } /* line 178, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today { -webkit-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); } /* line 185, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-today { background-color: #f0f0c0; } /* line 189, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-current-day, .cmb2-element .ui-datepicker td.ui-datepicker-current-day { background: #bbdd88; } /* line 193, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-default, .cmb2-element .ui-datepicker td .ui-state-default { background: transparent; border: none; text-align: center; text-decoration: none; width: auto; display: block; padding: 5px 10px; font-weight: normal; color: #444; } /* line 205, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default, .cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default { opacity: 0.5; } /* line 210, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 215, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 219, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-hover, .cmb2-element.ui-datepicker td .ui-state-active, .cmb2-element .ui-datepicker td .ui-state-hover, .cmb2-element .ui-datepicker td .ui-state-active { background: #0073aa; color: #fff; } /* line 224, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div, .cmb2-element .ui-datepicker .ui-timepicker-div { font-size: 14px; } /* line 226, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl, .cmb2-element .ui-datepicker .ui-timepicker-div dl { text-align: left; padding: 0 .6em; } /* line 229, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dt, .cmb2-element .ui-datepicker .ui-timepicker-div dl dt { float: left; clear: left; padding: 0 0 0 5px; } /* line 234, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd { margin: 0 10px 10px 40%; } /* line 236, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd select, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd select { width: 100%; } /* line 242, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane { padding: .6em; text-align: left; } /* line 246, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary { padding: 0 10px 1px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; margin: 0 .6em .4em .4em; } /* line 260, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 265, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker thead, .admin-color-fresh .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 269, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover { background: #0073aa; color: #fff; } /* line 277, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header { background: #52accc; } /* line 282, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker thead, .admin-color-blue .cmb2-element .ui-datepicker thead { background: #4796b3; } /* line 291, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active { background: #096484; color: #fff; } /* line 296, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 305, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header { background: #59524c; } /* line 310, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker thead, .admin-color-coffee .cmb2-element .ui-datepicker thead { background: #46403c; } /* line 314, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover { background: #c7a589; color: #fff; } /* line 322, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header { background: #523f6d; } /* line 327, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker thead, .admin-color-ectoplasm .cmb2-element .ui-datepicker thead { background: #413256; } /* line 331, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover { background: #a3b745; color: #fff; } /* line 339, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header { background: #363b3f; } /* line 344, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker thead, .admin-color-midnight .cmb2-element .ui-datepicker thead { background: #26292c; } /* line 348, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover { background: #e14d43; color: #fff; } /* line 356, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header { background: #738e96; } /* line 361, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker thead, .admin-color-ocean .cmb2-element .ui-datepicker thead { background: #627c83; } /* line 365, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover { background: #9ebaa0; color: #fff; } /* line 373, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: #cf4944; } /* line 379, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker th, .admin-color-sunrise .cmb2-element .ui-datepicker th { border-color: #be3631; background: #be3631; } /* line 384, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover { background: #dd823b; color: #fff; } /* line 392, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-light .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header { background: #e5e5e5; } /* line 397, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year { color: #555; } /* line 402, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker thead, .admin-color-light .cmb2-element .ui-datepicker thead { background: #888; } /* line 406, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before { color: #555; } /* line 414, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-active { background: #ccc; } /* line 418, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 426, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header { background: #56b274; } /* line 431, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead { background: #36533f; } /* line 435, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover { background: #446950; color: #fff; } /* line 443, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header { background: #4ca26a; } /* line 448, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker thead, .admin-color-bbp-mint .cmb2-element .ui-datepicker thead { background: #4f6d59; } /* line 452, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover { background: #5fb37c; color: #fff; } /*# sourceMappingURL=cmb2.css.map */ @media only screen and (max-width: 850px) { /* line 103, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-right: 0; } } @media (max-width: 450px) { /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: left; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 435, sass/partials/_main_wrap.scss */ .cmb-th, .cmb-td, .cmb-th + .cmb-td { display: block; float: none; width: 100%; } /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 0; } } meta/cmb2/css/cmb2-front-rtl.min.css000066600000100365152143340100013153 0ustar00.cmb2-wrap{margin:0}.cmb2-wrap input,.cmb2-wrap textarea{font-size:14px;max-width:100%;padding:5px}.cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb2-wrap textarea{width:500px}.cmb2-wrap textarea.cmb2-textarea-code{font-family:"Courier 10 Pitch",Courier,monospace;line-height:16px}.cmb2-wrap input.cmb2-text-small,.cmb2-wrap input.cmb2-timepicker{width:100px}.cmb2-wrap input.cmb2-text-money{width:90px}.cmb2-wrap input.cmb2-text-medium{width:230px}.cmb2-wrap input.cmb2-upload-file{width:65%}.cmb2-wrap input.ed_button{padding:2px 4px}.cmb2-wrap input:not([type=hidden])+.button,.cmb2-wrap input:not([type=hidden])+input,.cmb2-wrap input:not([type=hidden])+select{margin-right:20px}.cmb2-wrap ul{margin:0}.cmb2-wrap li{font-size:14px;line-height:16px;margin:1px 0 5px}.cmb2-wrap select{font-size:14px;margin-top:3px}.cmb2-wrap input:focus,.cmb2-wrap textarea:focus{background:#fffff8}.cmb2-wrap input[type=checkbox],.cmb2-wrap input[type=radio]{margin:0 0 0 5px;padding:0}.cmb2-wrap .button,.cmb2-wrap button{white-space:nowrap}.cmb2-wrap .mceLayout{border:1px solid #e9e9e9!important}.cmb2-wrap .mceIframeContainer{background:#fff}.cmb2-wrap .meta_mce{width:97%}.cmb2-wrap .meta_mce textarea{width:100%}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-input-wrap{vertical-align:middle}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-container{margin:0 0 0 10px}.cmb2-wrap .cmb-row{margin:0}.cmb2-wrap .cmb-row:after{content:'';clear:both;display:block;width:100%}.cmb2-wrap .cmb-row.cmb-repeat-row{padding:1.8em 0 0}.cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type{padding:0}.cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description{padding-top:0;padding-bottom:1.8em}.cmb2-metabox{clear:both;margin:0}.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-th,.cmb2-metabox>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox>.cmb-row:first-of-type>.cmb-th{border:0}.cmb2-metabox>.cmb-row .cmb-repeat-table .cmb-row>.cmb-td{padding-left:20px;box-sizing:border-box;float:right}.cmb-add-row{margin:1.8em 0 0}.cmb-nested .cmb-td,.cmb-repeatable-group .cmb-th,.cmb-repeatable-group:first-of-type{border:0}.cmb-repeatable-group:last-of-type,.cmb-row:last-of-type,.cmb2-wrap .cmb-row:last-of-type{border-bottom:0}.cmb-repeatable-grouping{border:1px solid #e9e9e9;padding:0 1em;max-width:1000px}.cmb-repeatable-grouping.cmb-row{margin:0 0 .8em}.cmb-th{color:#222;float:right;font-weight:600;line-height:1.3;padding:20px 0 20px 10px;vertical-align:top;width:200px}@media (max-width:450px){.cmb-th{font-size:1.2em;display:block;float:none;padding-bottom:1em;text-align:right;width:100%}.cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}}.cmb-td{line-height:1.3;max-width:100%;padding:15px 10px;vertical-align:middle}.cmb-type-title .cmb-td{padding:0}.cmb-th label{display:block;padding:5px 0}.cmb-th+.cmb-td{float:right}.cmb-td .cmb-td{padding-bottom:1em}.cmb-remove-row{text-align:left}.empty-row.hidden{display:none}.cmb-repeatable-group .cmb-th{padding:5px}.cmb-repeatable-group .cmb-group-title{background-color:#e9e9e9;padding:8px 2.2em 8px 12px;margin:0 -1em;min-height:1.5em;font-size:14px;line-height:1.4}.cmb-repeatable-group .cmb-group-title h4{border:0;margin:0;font-size:1.2em;font-weight:500;padding:.5em .75em}.cmb-repeatable-group .cmb-group-title .cmb-th{display:block;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th{font-size:1.2em;display:block;float:none;padding-bottom:1em;text-align:right;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-repeatable-group .cmb-group-description .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}.cmb-repeatable-group .cmb-shift-rows{font-size:1em;margin-left:1em;text-decoration:none}.cmb-repeatable-group .cmb-shift-rows .dashicons{font-size:1.5em;height:1.5em;line-height:1.2em;width:1em}.cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2{line-height:1.3em}.cmb-repeatable-group .cmb2-upload-button{float:left}p.cmb2-metabox-description{color:#aaa;font-style:italic;margin:0;padding-top:.5em}span.cmb2-metabox-description{color:#aaa;font-style:italic}.cmb2-metabox-title{margin:0 0 5px;padding:5px 0 0;font-size:14px}.cmb-inline ul{padding:4px 0 0}.cmb-inline li{display:inline-block;padding-left:18px}.cmb-type-textarea-code pre{margin:0}.cmb2-media-status .img-status{clear:none;display:inline-block;vertical-align:middle;margin-left:10px;width:auto}.cmb2-media-status .img-status img{max-width:350px;height:auto}.cmb2-media-status .embed-status,.cmb2-media-status .img-status img{background:#fff;border:1px solid #e9e9e9;border-radius:2px;-moz-border-radius:2px;margin:15px 0 0;padding:5px}.cmb2-media-status .embed-status{float:right;max-width:800px}.cmb2-media-status .embed-status,.cmb2-media-status .img-status{position:relative}.cmb2-media-status .embed-status .cmb2-remove-file-button,.cmb2-media-status .img-status .cmb2-remove-file-button{background:url(../images/ico-delete.png);height:16px;right:-5px;position:absolute;text-indent:-9999px;top:-5px;width:16px}.cmb2-media-status .img-status .cmb2-remove-file-button{top:10px}.cmb2-media-status .file-status>span,.cmb2-media-status .img-status img{cursor:pointer}.cmb-type-file-list .cmb2-media-status .img-status{clear:none;vertical-align:middle;width:auto;margin-left:10px;margin-bottom:10px;margin-top:0}.cmb-attach-list li{clear:both;display:inline-block;width:100%;margin-top:5px;margin-bottom:10px}.cmb-attach-list li img{cursor:move;float:right;margin-left:10px}.cmb2-remove-wrapper{margin:0}.child-cmb2 .cmb-th{text-align:right}@media (max-width:450px){.cmb-td,.cmb-th,.cmb-th+.cmb-td{display:block;float:none;width:100%}}#poststuff .cmb-group-title{margin-right:-1em;margin-left:-1em;min-height:1.5em}#poststuff .repeatable .cmb-group-title{padding-right:2.2em}.cmb-type-group .cmb2-wrap,.cmb2-postbox .cmb2-wrap{margin:0}.cmb-type-group .cmb2-wrap>.cmb-field-list>.cmb-row,.cmb2-postbox .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.8em 0}.cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed,.cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb-type-group .cmb-row,.cmb2-postbox .cmb-row{padding:0 0 1.8em;margin:0 0 .8em}.cmb-type-group .cmb-row .cmbhandle,.cmb2-postbox .cmb-row .cmbhandle{left:-1em;position:relative}.cmb-type-group .cmb-repeatable-grouping,.cmb2-postbox .cmb-repeatable-grouping{padding:0 1em;max-width:100%;min-width:1px!important}.cmb-type-group .cmb-repeatable-group>.cmb-row,.cmb2-postbox .cmb-repeatable-group>.cmb-row{padding-bottom:0}.cmb-type-group .cmb-th,.cmb2-postbox .cmb-th{width:18%;padding:0 0 0 2%}.cmb-type-group .cmb-td,.cmb2-postbox .cmb-td{margin-bottom:0;padding:0;line-height:1.3}.cmb-type-group .cmb-repeat-row .cmb-td,.cmb2-postbox .cmb-repeat-row .cmb-td{padding-bottom:1.8em}.cmb-type-group .cmb-th+.cmb-td,.cmb2-postbox .cmb-th+.cmb-td{width:80%;float:left}.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:1px solid #e9e9e9}@media (max-width:450px){.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:0}}.cmb-type-group .cmb-remove-field-row,.cmb-type-group .cmb-repeat-group-field,.cmb2-postbox .cmb-remove-field-row,.cmb2-postbox .cmb-repeat-group-field{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody{display:table;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text{width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row){display:table-row}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td{display:table-cell;float:none;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row{padding-left:0}.js .cmb2-postbox.context-box .toggle-indicator:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .cmb2-postbox.context-box.closed .toggle-indicator:before{content:"\f140"}.cmb2-postbox.context-box{margin-bottom:10px}.cmb2-postbox.context-box.context-after_title-box,.cmb2-postbox.context-box.context-before_permalink-box{margin-top:10px}.cmb2-postbox.context-box.context-after_editor-box{margin-top:20px;margin-bottom:0}.cmb2-postbox.context-box.context-form_top-box{margin-top:10px}.cmb2-postbox.context-box.context-form_top-box .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.cmb2-postbox.context-box .hndle{cursor:auto}.cmb2-context-wrap{margin-top:10px}.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-left:300px;width:auto}.cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox{padding:10px}.cmb2-context-wrap .cmb-th{padding:0 0 0 2%;width:18%}.cmb2-context-wrap .cmb-td{width:80%;padding:0}.cmb2-context-wrap .cmb-row{margin-bottom:10px}.cmb2-context-wrap .cmb-row:last-of-type{margin-bottom:0}@media only screen and (max-width:850px){.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-left:0}}#poststuff .cmb-repeatable-group h2{margin:0}.edit-tags-php .cmb2-metabox-title,.profile-php .cmb2-metabox-title,.user-edit-php .cmb2-metabox-title{font-size:1.4em}.cmb2-options-page .cmb2-metabox-title{font-size:1.3em;margin:1em 0}.cmb2-options-page .cmb2-metabox-title+p.cmb2-metabox-description{margin-top:-1.6em;margin-bottom:.8em}.cmb2-no-box-wrap .cmb-spinner,.cmb2-postbox .cmb-spinner{float:right;display:none}.cmb-spinner.is-active{display:block}#side-sortables .cmb2-wrap>.cmb-field-list>.cmb-row,.inner-sidebar .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.4em 0}#side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker),.inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker){width:100%}#side-sortables .cmb2-wrap input+input:not(.wp-picker-clear),#side-sortables .cmb2-wrap input+select,.inner-sidebar .cmb2-wrap input+input:not(.wp-picker-clear),.inner-sidebar .cmb2-wrap input+select{margin-right:0;margin-top:1em;display:block}#side-sortables .cmb2-wrap input.cmb2-text-money,.inner-sidebar .cmb2-wrap input.cmb2-text-money{max-width:70%}#side-sortables .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description,.inner-sidebar .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description{display:block}#side-sortables .cmb2-wrap label,.inner-sidebar .cmb2-wrap label{display:block;font-weight:700;padding:0 0 5px}#side-sortables textarea,.inner-sidebar textarea{max-width:99%}#side-sortables .cmb-repeatable-group,.inner-sidebar .cmb-repeatable-group{border-bottom:1px solid #e9e9e9}#side-sortables .cmb-type-group>.cmb-td>.cmb-repeatable-group,.inner-sidebar .cmb-type-group>.cmb-td>.cmb-repeatable-group{border-bottom:0;margin-bottom:-1.4em}#side-sortables .cmb-td,#side-sortables .cmb-th,#side-sortables .cmb-th+.cmb-td,.inner-sidebar .cmb-td,.inner-sidebar .cmb-th,.inner-sidebar .cmb-th+.cmb-td{width:100%;display:block;float:none}#side-sortables .closed .inside,.inner-sidebar .closed .inside{display:none}#side-sortables .cmb-td .cmb-td,.inner-sidebar .cmb-td .cmb-td{padding-bottom:1em}#side-sortables .cmb-th,.inner-sidebar .cmb-th{display:block;float:none;padding-bottom:1em;text-align:right;width:100%;padding-right:0;padding-left:0}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{display:block;margin-top:0;padding-bottom:5px}#side-sortables .cmb-th label:after,.inner-sidebar .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{font-size:14px;line-height:1.4em}#side-sortables .cmb-group-description .cmb-th,.inner-sidebar .cmb-group-description .cmb-th{padding-top:0}#side-sortables .cmb-group-description .cmb2-metabox-description,#side-sortables .cmb-group-title .cmb-th,.inner-sidebar .cmb-group-description .cmb2-metabox-description,.inner-sidebar .cmb-group-title .cmb-th{padding:0}#side-sortables .cmb-repeatable-grouping+.cmb-repeatable-grouping,.inner-sidebar .cmb-repeatable-grouping+.cmb-repeatable-grouping{margin-top:1em}#side-sortables .cmb2-media-status .embed-status img,#side-sortables .cmb2-media-status .img-status img,.inner-sidebar .cmb2-media-status .embed-status img,.inner-sidebar .cmb2-media-status .img-status img{max-width:90%;height:auto}#side-sortables .cmb2-list label,.inner-sidebar .cmb2-list label{display:inline;font-weight:400}#side-sortables .cmb2-metabox-description,.inner-sidebar .cmb2-metabox-description{display:block;padding:7px 0 0}#side-sortables .cmb-type-checkbox .cmb-td label,#side-sortables .cmb-type-checkbox .cmb2-metabox-description,.inner-sidebar .cmb-type-checkbox .cmb-td label,.inner-sidebar .cmb-type-checkbox .cmb2-metabox-description{font-weight:400;display:inline}#side-sortables .cmb-row .cmb2-metabox-description,.inner-sidebar .cmb-row .cmb2-metabox-description{padding-bottom:1.8em}#side-sortables .cmb2-metabox-title,.inner-sidebar .cmb2-metabox-title{font-size:1.2em;font-style:italic}#side-sortables .cmb-remove-row,.inner-sidebar .cmb-remove-row{clear:both;padding-top:12px;padding-bottom:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td{width:auto;clear:none;float:right;padding-top:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row{float:left;margin:0}#side-sortables .cmb2-upload-button,.inner-sidebar .cmb2-upload-button{clear:both;margin-top:12px}.cmb2-metabox .cmb-type-group{max-width:1000px}.cmb2-metabox .cmbhandle{color:#aaa;float:left;width:27px;height:30px;cursor:pointer;left:-1em;position:relative}.cmb2-metabox .cmbhandle:before{content:'\f142';left:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.cmb2-metabox .postbox.closed .cmbhandle:before{content:'\f140'}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row{-webkit-appearance:none!important;background:none!important;border:none!important;position:absolute;right:0;top:.5em;line-height:1em;padding:2px 6px 3px;opacity:.5}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]){cursor:pointer;color:#a00;opacity:1}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover{color:red}* html .cmb2-element.ui-helper-clearfix{height:1%}.cmb2-element .ui-datepicker,.cmb2-element.ui-datepicker{padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background-color:#fff;border:1px solid #dfdfdf;border-top:none;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075);min-width:17em;width:auto}.cmb2-element .ui-datepicker *,.cmb2-element.ui-datepicker *{padding:0;font-family:"Open Sans",sans-serif;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.cmb2-element .ui-datepicker table,.cmb2-element.ui-datepicker table{font-size:13px;margin:0;border:none;border-collapse:collapse}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{border:none;color:#fff;font-weight:400}.cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover{background:0 0;border-color:transparent;cursor:pointer}.cmb2-element .ui-datepicker .ui-datepicker-title,.cmb2-element.ui-datepicker .ui-datepicker-title{margin:0;padding:10px 0;color:#fff;font-size:14px;line-height:14px;text-align:center}.cmb2-element .ui-datepicker .ui-datepicker-title select,.cmb2-element.ui-datepicker .ui-datepicker-title select{margin-top:-8px;margin-bottom:-8px}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-prev{position:relative;top:0;height:34px;width:34px}.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev{border:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover,.cmb2-element.ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover{right:0}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-next-hover,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next-hover{left:0}.cmb2-element .ui-datepicker .ui-datepicker-next span,.cmb2-element .ui-datepicker .ui-datepicker-prev span,.cmb2-element.ui-datepicker .ui-datepicker-next span,.cmb2-element.ui-datepicker .ui-datepicker-prev span{display:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev{float:right}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next{float:left}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{font:400 20px/34px dashicons;padding-right:7px;color:#fff;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:34px;height:34px}.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{content:'\f341'}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before{content:'\f345'}.cmb2-element .ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before{opacity:.7}.cmb2-element .ui-datepicker select.ui-datepicker-month,.cmb2-element .ui-datepicker select.ui-datepicker-year,.cmb2-element.ui-datepicker select.ui-datepicker-month,.cmb2-element.ui-datepicker select.ui-datepicker-year{width:33%;background:0 0;border-color:transparent;box-shadow:none;color:#fff}.cmb2-element .ui-datepicker select.ui-datepicker-month option,.cmb2-element .ui-datepicker select.ui-datepicker-year option,.cmb2-element.ui-datepicker select.ui-datepicker-month option,.cmb2-element.ui-datepicker select.ui-datepicker-year option{color:#333}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{color:#fff;font-weight:600}.cmb2-element .ui-datepicker thead th,.cmb2-element.ui-datepicker thead th{font-weight:400}.cmb2-element .ui-datepicker th,.cmb2-element.ui-datepicker th{padding:10px}.cmb2-element .ui-datepicker td,.cmb2-element.ui-datepicker td{padding:0;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-other-month,.cmb2-element.ui-datepicker td.ui-datepicker-other-month{border:transparent}.cmb2-element .ui-datepicker td.ui-datepicker-week-end,.cmb2-element.ui-datepicker td.ui-datepicker-week-end{background-color:#f4f4f4;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today{-webkit-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);-moz-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1)}.cmb2-element .ui-datepicker td.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-today{background-color:#f0f0c0}.cmb2-element .ui-datepicker td.ui-datepicker-current-day,.cmb2-element.ui-datepicker td.ui-datepicker-current-day{background:#bd8}.cmb2-element .ui-datepicker td .ui-state-default,.cmb2-element.ui-datepicker td .ui-state-default{background:0 0;border:none;text-align:center;text-decoration:none;width:auto;display:block;padding:5px 10px;font-weight:400;color:#444}.cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default,.cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default{opacity:.5}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{background:#32373c}.cmb2-element .ui-datepicker td .ui-state-active,.cmb2-element .ui-datepicker td .ui-state-hover,.cmb2-element.ui-datepicker td .ui-state-active,.cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.cmb2-element .ui-datepicker .ui-timepicker-div,.cmb2-element.ui-datepicker .ui-timepicker-div{font-size:14px}.cmb2-element .ui-datepicker .ui-timepicker-div dl,.cmb2-element.ui-datepicker .ui-timepicker-div dl{text-align:right;padding:0 .6em}.cmb2-element .ui-datepicker .ui-timepicker-div dl dt,.cmb2-element.ui-datepicker .ui-timepicker-div dl dt{float:right;clear:right;padding:0 5px 0 0}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd{margin:0 40% 10px 10px}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd select,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd select{width:100%}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane{padding:.6em;text-align:right}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary{padding:0 10px 1px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:0 .4em .4em .6em}.admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.admin-color-fresh .cmb2-element .ui-datepicker thead,.admin-color-fresh .cmb2-element.ui-datepicker thead{background:#32373c}.admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header{background:#52accc}.admin-color-blue .cmb2-element .ui-datepicker thead,.admin-color-blue .cmb2-element.ui-datepicker thead{background:#4796b3}.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover{background:#096484;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header{background:#59524c}.admin-color-coffee .cmb2-element .ui-datepicker thead,.admin-color-coffee .cmb2-element.ui-datepicker thead{background:#46403c}.admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover{background:#c7a589;color:#fff}.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header{background:#523f6d}.admin-color-ectoplasm .cmb2-element .ui-datepicker thead,.admin-color-ectoplasm .cmb2-element.ui-datepicker thead{background:#413256}.admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover{background:#a3b745;color:#fff}.admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header{background:#363b3f}.admin-color-midnight .cmb2-element .ui-datepicker thead,.admin-color-midnight .cmb2-element.ui-datepicker thead{background:#26292c}.admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover{background:#e14d43;color:#fff}.admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header{background:#738e96}.admin-color-ocean .cmb2-element .ui-datepicker thead,.admin-color-ocean .cmb2-element.ui-datepicker thead{background:#627c83}.admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover{background:#9ebaa0;color:#fff}.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header{background:#cf4944}.admin-color-sunrise .cmb2-element .ui-datepicker th,.admin-color-sunrise .cmb2-element.ui-datepicker th{border-color:#be3631;background:#be3631}.admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover{background:#dd823b;color:#fff}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element.ui-datepicker .ui-widget-header{background:#e5e5e5}.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year{color:#555}.admin-color-light .cmb2-element .ui-datepicker thead,.admin-color-light .cmb2-element.ui-datepicker thead{background:#888}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-default,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-default{color:#555}.admin-color-light .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover{background:#ccc}.admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header{background:#56b274}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead{background:#36533f}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover{background:#446950;color:#fff}.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header{background:#4ca26a}.admin-color-bbp-mint .cmb2-element .ui-datepicker thead,.admin-color-bbp-mint .cmb2-element.ui-datepicker thead{background:#4f6d59}.admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover{background:#5fb37c;color:#fff}.closed .inside{display:none}.cmb-repeatable-grouping{position:relative}.cmb-repeatable-grouping .cmb-group-title{margin-right:-1em;margin-left:-1em;min-height:1.5em}.cmb-repeatable-grouping h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.cmb-repeatable-group.repeatable .cmb-group-title{padding-right:2.2em}.cmb-repeatable-group.non-repeatable .cmb-group-title{padding-right:12px}.cmb-type-group .cmb-row .cmbhandle{left:0;position:absolute}.cmb-spinner{background:url(/wp-admin/images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:none;float:left;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}meta/cmb2/css/cmb2-front.min.css000066600000100361152143340100012350 0ustar00.cmb2-wrap{margin:0}.cmb2-wrap input,.cmb2-wrap textarea{font-size:14px;max-width:100%;padding:5px}.cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb2-wrap textarea{width:500px}.cmb2-wrap textarea.cmb2-textarea-code{font-family:"Courier 10 Pitch",Courier,monospace;line-height:16px}.cmb2-wrap input.cmb2-text-small,.cmb2-wrap input.cmb2-timepicker{width:100px}.cmb2-wrap input.cmb2-text-money{width:90px}.cmb2-wrap input.cmb2-text-medium{width:230px}.cmb2-wrap input.cmb2-upload-file{width:65%}.cmb2-wrap input.ed_button{padding:2px 4px}.cmb2-wrap input:not([type=hidden])+.button,.cmb2-wrap input:not([type=hidden])+input,.cmb2-wrap input:not([type=hidden])+select{margin-left:20px}.cmb2-wrap ul{margin:0}.cmb2-wrap li{font-size:14px;line-height:16px;margin:1px 0 5px}.cmb2-wrap select{font-size:14px;margin-top:3px}.cmb2-wrap input:focus,.cmb2-wrap textarea:focus{background:#fffff8}.cmb2-wrap input[type=checkbox],.cmb2-wrap input[type=radio]{margin:0 5px 0 0;padding:0}.cmb2-wrap .button,.cmb2-wrap button{white-space:nowrap}.cmb2-wrap .mceLayout{border:1px solid #e9e9e9!important}.cmb2-wrap .mceIframeContainer{background:#fff}.cmb2-wrap .meta_mce{width:97%}.cmb2-wrap .meta_mce textarea{width:100%}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-input-wrap{vertical-align:middle}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-container{margin:0 10px 0 0}.cmb2-wrap .cmb-row{margin:0}.cmb2-wrap .cmb-row:after{content:'';clear:both;display:block;width:100%}.cmb2-wrap .cmb-row.cmb-repeat-row{padding:1.8em 0 0}.cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type{padding:0}.cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description{padding-top:0;padding-bottom:1.8em}.cmb2-metabox{clear:both;margin:0}.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-th,.cmb2-metabox>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox>.cmb-row:first-of-type>.cmb-th{border:0}.cmb2-metabox>.cmb-row .cmb-repeat-table .cmb-row>.cmb-td{padding-right:20px;box-sizing:border-box;float:left}.cmb-add-row{margin:1.8em 0 0}.cmb-nested .cmb-td,.cmb-repeatable-group .cmb-th,.cmb-repeatable-group:first-of-type{border:0}.cmb-repeatable-group:last-of-type,.cmb-row:last-of-type,.cmb2-wrap .cmb-row:last-of-type{border-bottom:0}.cmb-repeatable-grouping{border:1px solid #e9e9e9;padding:0 1em;max-width:1000px}.cmb-repeatable-grouping.cmb-row{margin:0 0 .8em}.cmb-th{color:#222;float:left;font-weight:600;line-height:1.3;padding:20px 10px 20px 0;vertical-align:top;width:200px}@media (max-width:450px){.cmb-th{font-size:1.2em;display:block;float:none;padding-bottom:1em;text-align:left;width:100%}.cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}}.cmb-td{line-height:1.3;max-width:100%;padding:15px 10px;vertical-align:middle}.cmb-type-title .cmb-td{padding:0}.cmb-th label{display:block;padding:5px 0}.cmb-th+.cmb-td{float:left}.cmb-td .cmb-td{padding-bottom:1em}.cmb-remove-row{text-align:right}.empty-row.hidden{display:none}.cmb-repeatable-group .cmb-th{padding:5px}.cmb-repeatable-group .cmb-group-title{background-color:#e9e9e9;padding:8px 12px 8px 2.2em;margin:0 -1em;min-height:1.5em;font-size:14px;line-height:1.4}.cmb-repeatable-group .cmb-group-title h4{border:0;margin:0;font-size:1.2em;font-weight:500;padding:.5em .75em}.cmb-repeatable-group .cmb-group-title .cmb-th{display:block;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th{font-size:1.2em;display:block;float:none;padding-bottom:1em;text-align:left;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-repeatable-group .cmb-group-description .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}.cmb-repeatable-group .cmb-shift-rows{font-size:1em;margin-right:1em;text-decoration:none}.cmb-repeatable-group .cmb-shift-rows .dashicons{font-size:1.5em;height:1.5em;line-height:1.2em;width:1em}.cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2{line-height:1.3em}.cmb-repeatable-group .cmb2-upload-button{float:right}p.cmb2-metabox-description{color:#aaa;font-style:italic;margin:0;padding-top:.5em}span.cmb2-metabox-description{color:#aaa;font-style:italic}.cmb2-metabox-title{margin:0 0 5px;padding:5px 0 0;font-size:14px}.cmb-inline ul{padding:4px 0 0}.cmb-inline li{display:inline-block;padding-right:18px}.cmb-type-textarea-code pre{margin:0}.cmb2-media-status .img-status{clear:none;display:inline-block;vertical-align:middle;margin-right:10px;width:auto}.cmb2-media-status .img-status img{max-width:350px;height:auto}.cmb2-media-status .embed-status,.cmb2-media-status .img-status img{background:#fff;border:1px solid #e9e9e9;border-radius:2px;-moz-border-radius:2px;margin:15px 0 0;padding:5px}.cmb2-media-status .embed-status{float:left;max-width:800px}.cmb2-media-status .embed-status,.cmb2-media-status .img-status{position:relative}.cmb2-media-status .embed-status .cmb2-remove-file-button,.cmb2-media-status .img-status .cmb2-remove-file-button{background:url(../images/ico-delete.png);height:16px;left:-5px;position:absolute;text-indent:-9999px;top:-5px;width:16px}.cmb2-media-status .img-status .cmb2-remove-file-button{top:10px}.cmb2-media-status .file-status>span,.cmb2-media-status .img-status img{cursor:pointer}.cmb-type-file-list .cmb2-media-status .img-status{clear:none;vertical-align:middle;width:auto;margin-right:10px;margin-bottom:10px;margin-top:0}.cmb-attach-list li{clear:both;display:inline-block;width:100%;margin-top:5px;margin-bottom:10px}.cmb-attach-list li img{cursor:move;float:left;margin-right:10px}.cmb2-remove-wrapper{margin:0}.child-cmb2 .cmb-th{text-align:left}@media (max-width:450px){.cmb-td,.cmb-th,.cmb-th+.cmb-td{display:block;float:none;width:100%}}#poststuff .cmb-group-title{margin-left:-1em;margin-right:-1em;min-height:1.5em}#poststuff .repeatable .cmb-group-title{padding-left:2.2em}.cmb-type-group .cmb2-wrap,.cmb2-postbox .cmb2-wrap{margin:0}.cmb-type-group .cmb2-wrap>.cmb-field-list>.cmb-row,.cmb2-postbox .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.8em 0}.cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed,.cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb-type-group .cmb-row,.cmb2-postbox .cmb-row{padding:0 0 1.8em;margin:0 0 .8em}.cmb-type-group .cmb-row .cmbhandle,.cmb2-postbox .cmb-row .cmbhandle{right:-1em;position:relative}.cmb-type-group .cmb-repeatable-grouping,.cmb2-postbox .cmb-repeatable-grouping{padding:0 1em;max-width:100%;min-width:1px!important}.cmb-type-group .cmb-repeatable-group>.cmb-row,.cmb2-postbox .cmb-repeatable-group>.cmb-row{padding-bottom:0}.cmb-type-group .cmb-th,.cmb2-postbox .cmb-th{width:18%;padding:0 2% 0 0}.cmb-type-group .cmb-td,.cmb2-postbox .cmb-td{margin-bottom:0;padding:0;line-height:1.3}.cmb-type-group .cmb-repeat-row .cmb-td,.cmb2-postbox .cmb-repeat-row .cmb-td{padding-bottom:1.8em}.cmb-type-group .cmb-th+.cmb-td,.cmb2-postbox .cmb-th+.cmb-td{width:80%;float:right}.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:1px solid #e9e9e9}@media (max-width:450px){.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:0}}.cmb-type-group .cmb-remove-field-row,.cmb-type-group .cmb-repeat-group-field,.cmb2-postbox .cmb-remove-field-row,.cmb2-postbox .cmb-repeat-group-field{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody{display:table;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text{width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row){display:table-row}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td{display:table-cell;float:none;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row{padding-right:0}.js .cmb2-postbox.context-box .toggle-indicator:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .cmb2-postbox.context-box.closed .toggle-indicator:before{content:"\f140"}.cmb2-postbox.context-box{margin-bottom:10px}.cmb2-postbox.context-box.context-after_title-box,.cmb2-postbox.context-box.context-before_permalink-box{margin-top:10px}.cmb2-postbox.context-box.context-after_editor-box{margin-top:20px;margin-bottom:0}.cmb2-postbox.context-box.context-form_top-box{margin-top:10px}.cmb2-postbox.context-box.context-form_top-box .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.cmb2-postbox.context-box .hndle{cursor:auto}.cmb2-context-wrap{margin-top:10px}.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-right:300px;width:auto}.cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox{padding:10px}.cmb2-context-wrap .cmb-th{padding:0 2% 0 0;width:18%}.cmb2-context-wrap .cmb-td{width:80%;padding:0}.cmb2-context-wrap .cmb-row{margin-bottom:10px}.cmb2-context-wrap .cmb-row:last-of-type{margin-bottom:0}@media only screen and (max-width:850px){.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-right:0}}#poststuff .cmb-repeatable-group h2{margin:0}.edit-tags-php .cmb2-metabox-title,.profile-php .cmb2-metabox-title,.user-edit-php .cmb2-metabox-title{font-size:1.4em}.cmb2-options-page .cmb2-metabox-title{font-size:1.3em;margin:1em 0}.cmb2-options-page .cmb2-metabox-title+p.cmb2-metabox-description{margin-top:-1.6em;margin-bottom:.8em}.cmb2-no-box-wrap .cmb-spinner,.cmb2-postbox .cmb-spinner{float:left;display:none}.cmb-spinner.is-active{display:block}#side-sortables .cmb2-wrap>.cmb-field-list>.cmb-row,.inner-sidebar .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.4em 0}#side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker),.inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker){width:100%}#side-sortables .cmb2-wrap input+input:not(.wp-picker-clear),#side-sortables .cmb2-wrap input+select,.inner-sidebar .cmb2-wrap input+input:not(.wp-picker-clear),.inner-sidebar .cmb2-wrap input+select{margin-left:0;margin-top:1em;display:block}#side-sortables .cmb2-wrap input.cmb2-text-money,.inner-sidebar .cmb2-wrap input.cmb2-text-money{max-width:70%}#side-sortables .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description,.inner-sidebar .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description{display:block}#side-sortables .cmb2-wrap label,.inner-sidebar .cmb2-wrap label{display:block;font-weight:700;padding:0 0 5px}#side-sortables textarea,.inner-sidebar textarea{max-width:99%}#side-sortables .cmb-repeatable-group,.inner-sidebar .cmb-repeatable-group{border-bottom:1px solid #e9e9e9}#side-sortables .cmb-type-group>.cmb-td>.cmb-repeatable-group,.inner-sidebar .cmb-type-group>.cmb-td>.cmb-repeatable-group{border-bottom:0;margin-bottom:-1.4em}#side-sortables .cmb-td,#side-sortables .cmb-th,#side-sortables .cmb-th+.cmb-td,.inner-sidebar .cmb-td,.inner-sidebar .cmb-th,.inner-sidebar .cmb-th+.cmb-td{width:100%;display:block;float:none}#side-sortables .closed .inside,.inner-sidebar .closed .inside{display:none}#side-sortables .cmb-td .cmb-td,.inner-sidebar .cmb-td .cmb-td{padding-bottom:1em}#side-sortables .cmb-th,.inner-sidebar .cmb-th{display:block;float:none;padding-bottom:1em;text-align:left;width:100%;padding-left:0;padding-right:0}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{display:block;margin-top:0;padding-bottom:5px}#side-sortables .cmb-th label:after,.inner-sidebar .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{font-size:14px;line-height:1.4em}#side-sortables .cmb-group-description .cmb-th,.inner-sidebar .cmb-group-description .cmb-th{padding-top:0}#side-sortables .cmb-group-description .cmb2-metabox-description,#side-sortables .cmb-group-title .cmb-th,.inner-sidebar .cmb-group-description .cmb2-metabox-description,.inner-sidebar .cmb-group-title .cmb-th{padding:0}#side-sortables .cmb-repeatable-grouping+.cmb-repeatable-grouping,.inner-sidebar .cmb-repeatable-grouping+.cmb-repeatable-grouping{margin-top:1em}#side-sortables .cmb2-media-status .embed-status img,#side-sortables .cmb2-media-status .img-status img,.inner-sidebar .cmb2-media-status .embed-status img,.inner-sidebar .cmb2-media-status .img-status img{max-width:90%;height:auto}#side-sortables .cmb2-list label,.inner-sidebar .cmb2-list label{display:inline;font-weight:400}#side-sortables .cmb2-metabox-description,.inner-sidebar .cmb2-metabox-description{display:block;padding:7px 0 0}#side-sortables .cmb-type-checkbox .cmb-td label,#side-sortables .cmb-type-checkbox .cmb2-metabox-description,.inner-sidebar .cmb-type-checkbox .cmb-td label,.inner-sidebar .cmb-type-checkbox .cmb2-metabox-description{font-weight:400;display:inline}#side-sortables .cmb-row .cmb2-metabox-description,.inner-sidebar .cmb-row .cmb2-metabox-description{padding-bottom:1.8em}#side-sortables .cmb2-metabox-title,.inner-sidebar .cmb2-metabox-title{font-size:1.2em;font-style:italic}#side-sortables .cmb-remove-row,.inner-sidebar .cmb-remove-row{clear:both;padding-top:12px;padding-bottom:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td{width:auto;clear:none;float:left;padding-top:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row{float:right;margin:0}#side-sortables .cmb2-upload-button,.inner-sidebar .cmb2-upload-button{clear:both;margin-top:12px}.cmb2-metabox .cmb-type-group{max-width:1000px}.cmb2-metabox .cmbhandle{color:#aaa;float:right;width:27px;height:30px;cursor:pointer;right:-1em;position:relative}.cmb2-metabox .cmbhandle:before{content:'\f142';right:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.cmb2-metabox .postbox.closed .cmbhandle:before{content:'\f140'}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row{-webkit-appearance:none!important;background:none!important;border:none!important;position:absolute;left:0;top:.5em;line-height:1em;padding:2px 6px 3px;opacity:.5}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]){cursor:pointer;color:#a00;opacity:1}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover{color:red}* html .cmb2-element.ui-helper-clearfix{height:1%}.cmb2-element .ui-datepicker,.cmb2-element.ui-datepicker{padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background-color:#fff;border:1px solid #dfdfdf;border-top:none;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075);min-width:17em;width:auto}.cmb2-element .ui-datepicker *,.cmb2-element.ui-datepicker *{padding:0;font-family:"Open Sans",sans-serif;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.cmb2-element .ui-datepicker table,.cmb2-element.ui-datepicker table{font-size:13px;margin:0;border:none;border-collapse:collapse}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{border:none;color:#fff;font-weight:400}.cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover{background:0 0;border-color:transparent;cursor:pointer}.cmb2-element .ui-datepicker .ui-datepicker-title,.cmb2-element.ui-datepicker .ui-datepicker-title{margin:0;padding:10px 0;color:#fff;font-size:14px;line-height:14px;text-align:center}.cmb2-element .ui-datepicker .ui-datepicker-title select,.cmb2-element.ui-datepicker .ui-datepicker-title select{margin-top:-8px;margin-bottom:-8px}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-prev{position:relative;top:0;height:34px;width:34px}.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev{border:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover,.cmb2-element.ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover{left:0}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-next-hover,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next-hover{right:0}.cmb2-element .ui-datepicker .ui-datepicker-next span,.cmb2-element .ui-datepicker .ui-datepicker-prev span,.cmb2-element.ui-datepicker .ui-datepicker-next span,.cmb2-element.ui-datepicker .ui-datepicker-prev span{display:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev{float:left}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next{float:right}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{font:400 20px/34px dashicons;padding-left:7px;color:#fff;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:34px;height:34px}.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{content:'\f341'}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before{content:'\f345'}.cmb2-element .ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before{opacity:.7}.cmb2-element .ui-datepicker select.ui-datepicker-month,.cmb2-element .ui-datepicker select.ui-datepicker-year,.cmb2-element.ui-datepicker select.ui-datepicker-month,.cmb2-element.ui-datepicker select.ui-datepicker-year{width:33%;background:0 0;border-color:transparent;box-shadow:none;color:#fff}.cmb2-element .ui-datepicker select.ui-datepicker-month option,.cmb2-element .ui-datepicker select.ui-datepicker-year option,.cmb2-element.ui-datepicker select.ui-datepicker-month option,.cmb2-element.ui-datepicker select.ui-datepicker-year option{color:#333}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{color:#fff;font-weight:600}.cmb2-element .ui-datepicker thead th,.cmb2-element.ui-datepicker thead th{font-weight:400}.cmb2-element .ui-datepicker th,.cmb2-element.ui-datepicker th{padding:10px}.cmb2-element .ui-datepicker td,.cmb2-element.ui-datepicker td{padding:0;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-other-month,.cmb2-element.ui-datepicker td.ui-datepicker-other-month{border:transparent}.cmb2-element .ui-datepicker td.ui-datepicker-week-end,.cmb2-element.ui-datepicker td.ui-datepicker-week-end{background-color:#f4f4f4;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today{-webkit-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);-moz-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1)}.cmb2-element .ui-datepicker td.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-today{background-color:#f0f0c0}.cmb2-element .ui-datepicker td.ui-datepicker-current-day,.cmb2-element.ui-datepicker td.ui-datepicker-current-day{background:#bd8}.cmb2-element .ui-datepicker td .ui-state-default,.cmb2-element.ui-datepicker td .ui-state-default{background:0 0;border:none;text-align:center;text-decoration:none;width:auto;display:block;padding:5px 10px;font-weight:400;color:#444}.cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default,.cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default{opacity:.5}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{background:#32373c}.cmb2-element .ui-datepicker td .ui-state-active,.cmb2-element .ui-datepicker td .ui-state-hover,.cmb2-element.ui-datepicker td .ui-state-active,.cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.cmb2-element .ui-datepicker .ui-timepicker-div,.cmb2-element.ui-datepicker .ui-timepicker-div{font-size:14px}.cmb2-element .ui-datepicker .ui-timepicker-div dl,.cmb2-element.ui-datepicker .ui-timepicker-div dl{text-align:left;padding:0 .6em}.cmb2-element .ui-datepicker .ui-timepicker-div dl dt,.cmb2-element.ui-datepicker .ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd{margin:0 10px 10px 40%}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd select,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd select{width:100%}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane{padding:.6em;text-align:left}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary{padding:0 10px 1px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:0 .6em .4em .4em}.admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.admin-color-fresh .cmb2-element .ui-datepicker thead,.admin-color-fresh .cmb2-element.ui-datepicker thead{background:#32373c}.admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header{background:#52accc}.admin-color-blue .cmb2-element .ui-datepicker thead,.admin-color-blue .cmb2-element.ui-datepicker thead{background:#4796b3}.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover{background:#096484;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header{background:#59524c}.admin-color-coffee .cmb2-element .ui-datepicker thead,.admin-color-coffee .cmb2-element.ui-datepicker thead{background:#46403c}.admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover{background:#c7a589;color:#fff}.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header{background:#523f6d}.admin-color-ectoplasm .cmb2-element .ui-datepicker thead,.admin-color-ectoplasm .cmb2-element.ui-datepicker thead{background:#413256}.admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover{background:#a3b745;color:#fff}.admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header{background:#363b3f}.admin-color-midnight .cmb2-element .ui-datepicker thead,.admin-color-midnight .cmb2-element.ui-datepicker thead{background:#26292c}.admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover{background:#e14d43;color:#fff}.admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header{background:#738e96}.admin-color-ocean .cmb2-element .ui-datepicker thead,.admin-color-ocean .cmb2-element.ui-datepicker thead{background:#627c83}.admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover{background:#9ebaa0;color:#fff}.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header{background:#cf4944}.admin-color-sunrise .cmb2-element .ui-datepicker th,.admin-color-sunrise .cmb2-element.ui-datepicker th{border-color:#be3631;background:#be3631}.admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover{background:#dd823b;color:#fff}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element.ui-datepicker .ui-widget-header{background:#e5e5e5}.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year{color:#555}.admin-color-light .cmb2-element .ui-datepicker thead,.admin-color-light .cmb2-element.ui-datepicker thead{background:#888}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-default,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-default{color:#555}.admin-color-light .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover{background:#ccc}.admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header{background:#56b274}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead{background:#36533f}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover{background:#446950;color:#fff}.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header{background:#4ca26a}.admin-color-bbp-mint .cmb2-element .ui-datepicker thead,.admin-color-bbp-mint .cmb2-element.ui-datepicker thead{background:#4f6d59}.admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover{background:#5fb37c;color:#fff}.closed .inside{display:none}.cmb-repeatable-grouping{position:relative}.cmb-repeatable-grouping .cmb-group-title{margin-left:-1em;margin-right:-1em;min-height:1.5em}.cmb-repeatable-grouping h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.cmb-repeatable-group.repeatable .cmb-group-title{padding-left:2.2em}.cmb-repeatable-group.non-repeatable .cmb-group-title{padding-left:12px}.cmb-type-group .cmb-row .cmbhandle{right:0;position:absolute}.cmb-spinner{background:url(/wp-admin/images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:none;float:right;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}meta/cmb2/css/cmb2-rtl.min.css000066600000076765152143340100012045 0ustar00.cmb2-wrap{margin:0}.cmb2-wrap input,.cmb2-wrap textarea{font-size:14px;max-width:100%;padding:5px}.cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb2-wrap textarea{width:500px}.cmb2-wrap textarea.cmb2-textarea-code{font-family:"Courier 10 Pitch",Courier,monospace;line-height:16px}.cmb2-wrap input.cmb2-text-small,.cmb2-wrap input.cmb2-timepicker{width:100px}.cmb2-wrap input.cmb2-text-money{width:90px}.cmb2-wrap input.cmb2-text-medium{width:230px}.cmb2-wrap input.cmb2-upload-file{width:65%}.cmb2-wrap input.ed_button{padding:2px 4px}.cmb2-wrap input:not([type=hidden])+.button,.cmb2-wrap input:not([type=hidden])+input,.cmb2-wrap input:not([type=hidden])+select{margin-right:20px}.cmb2-wrap ul{margin:0}.cmb2-wrap li{font-size:14px;line-height:16px;margin:1px 0 5px}.cmb2-wrap select{font-size:14px;margin-top:3px}.cmb2-wrap input:focus,.cmb2-wrap textarea:focus{background:#fffff8}.cmb2-wrap input[type=checkbox],.cmb2-wrap input[type=radio]{margin:0 0 0 5px;padding:0}.cmb2-wrap .button,.cmb2-wrap button{white-space:nowrap}.cmb2-wrap .mceLayout{border:1px solid #e9e9e9!important}.cmb2-wrap .mceIframeContainer{background:#fff}.cmb2-wrap .meta_mce{width:97%}.cmb2-wrap .meta_mce textarea{width:100%}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-input-wrap{vertical-align:middle}.cmb2-wrap .wp-color-result,.cmb2-wrap .wp-picker-container{margin:0 0 0 10px}.cmb2-wrap .cmb-row{margin:0}.cmb2-wrap .cmb-row:after{content:'';clear:both;display:block;width:100%}.cmb2-wrap .cmb-row.cmb-repeat-row{padding:1.8em 0 0}.cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type{padding:0}.cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description{padding-top:0;padding-bottom:1.8em}.cmb2-metabox{clear:both;margin:0}.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox .cmb-field-list>.cmb-row:first-of-type>.cmb-th,.cmb2-metabox>.cmb-row:first-of-type>.cmb-td,.cmb2-metabox>.cmb-row:first-of-type>.cmb-th{border:0}.cmb2-metabox>.cmb-row .cmb-repeat-table .cmb-row>.cmb-td{padding-left:20px;box-sizing:border-box;float:right}.cmb-add-row{margin:1.8em 0 0}.cmb-nested .cmb-td,.cmb-repeatable-group .cmb-th,.cmb-repeatable-group:first-of-type{border:0}.cmb-repeatable-group:last-of-type,.cmb-row:last-of-type,.cmb2-wrap .cmb-row:last-of-type{border-bottom:0}.cmb-repeatable-grouping{border:1px solid #e9e9e9;padding:0 1em;max-width:1000px}.cmb-repeatable-grouping.cmb-row{margin:0 0 .8em}.cmb-th{color:#222;float:right;font-weight:600;line-height:1.3;padding:20px 0 20px 10px;vertical-align:top;width:200px}.cmb-td{line-height:1.3;max-width:100%;padding:15px 10px;vertical-align:middle}.cmb-type-title .cmb-td{padding:0}.cmb-th label{display:block;padding:5px 0}.cmb-th+.cmb-td{float:right}.cmb-td .cmb-td{padding-bottom:1em}.cmb-remove-row{text-align:left}.empty-row.hidden{display:none}.cmb-repeatable-group .cmb-th{padding:5px}.cmb-repeatable-group .cmb-group-title{background-color:#e9e9e9;padding:8px 2.2em 8px 12px;margin:0 -1em;min-height:1.5em;font-size:14px;line-height:1.4}.cmb-repeatable-group .cmb-group-title h4{border:0;margin:0;font-size:1.2em;font-weight:500;padding:.5em .75em}.cmb-repeatable-group .cmb-group-title .cmb-th{display:block;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th{font-size:1.2em;display:block;float:none;padding-bottom:1em;text-align:right;width:100%}.cmb-repeatable-group .cmb-group-description .cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-repeatable-group .cmb-group-description .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}.cmb-repeatable-group .cmb-shift-rows{font-size:1em;margin-left:1em;text-decoration:none}.cmb-repeatable-group .cmb-shift-rows .dashicons{font-size:1.5em;height:1.5em;line-height:1.2em;width:1em}.cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2{line-height:1.3em}.cmb-repeatable-group .cmb2-upload-button{float:left}p.cmb2-metabox-description{color:#aaa;font-style:italic;margin:0;padding-top:.5em}span.cmb2-metabox-description{color:#aaa;font-style:italic}.cmb2-metabox-title{margin:0 0 5px;padding:5px 0 0;font-size:14px}.cmb-inline ul{padding:4px 0 0}.cmb-inline li{display:inline-block;padding-left:18px}.cmb-type-textarea-code pre{margin:0}.cmb2-media-status .img-status{clear:none;display:inline-block;vertical-align:middle;margin-left:10px;width:auto}.cmb2-media-status .img-status img{max-width:350px;height:auto}.cmb2-media-status .embed-status,.cmb2-media-status .img-status img{background:#fff;border:1px solid #e9e9e9;border-radius:2px;-moz-border-radius:2px;margin:15px 0 0;padding:5px}.cmb2-media-status .embed-status{float:right;max-width:800px}.cmb2-media-status .embed-status,.cmb2-media-status .img-status{position:relative}.cmb2-media-status .embed-status .cmb2-remove-file-button,.cmb2-media-status .img-status .cmb2-remove-file-button{background:url(../images/ico-delete.png);height:16px;right:-5px;position:absolute;text-indent:-9999px;top:-5px;width:16px}.cmb2-media-status .img-status .cmb2-remove-file-button{top:10px}.cmb2-media-status .file-status>span,.cmb2-media-status .img-status img{cursor:pointer}.cmb-type-file-list .cmb2-media-status .img-status{clear:none;vertical-align:middle;width:auto;margin-left:10px;margin-bottom:10px;margin-top:0}.cmb-attach-list li{clear:both;display:inline-block;width:100%;margin-top:5px;margin-bottom:10px}.cmb-attach-list li img{cursor:move;float:right;margin-left:10px}.cmb2-remove-wrapper{margin:0}.child-cmb2 .cmb-th{text-align:right}#poststuff .cmb-group-title{margin-right:-1em;margin-left:-1em;min-height:1.5em}#poststuff .repeatable .cmb-group-title{padding-right:2.2em}.cmb-type-group .cmb2-wrap,.cmb2-postbox .cmb2-wrap{margin:0}.cmb-type-group .cmb2-wrap>.cmb-field-list>.cmb-row,.cmb2-postbox .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.8em 0}.cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed,.cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed{width:100%}.cmb-type-group .cmb-row,.cmb2-postbox .cmb-row{padding:0 0 1.8em;margin:0 0 .8em}.cmb-type-group .cmb-row .cmbhandle,.cmb2-postbox .cmb-row .cmbhandle{left:-1em;position:relative}.cmb-type-group .cmb-repeatable-grouping,.cmb2-postbox .cmb-repeatable-grouping{padding:0 1em;max-width:100%;min-width:1px!important}.cmb-type-group .cmb-repeatable-group>.cmb-row,.cmb2-postbox .cmb-repeatable-group>.cmb-row{padding-bottom:0}.cmb-type-group .cmb-th,.cmb2-postbox .cmb-th{width:18%;padding:0 0 0 2%}.cmb-type-group .cmb-td,.cmb2-postbox .cmb-td{margin-bottom:0;padding:0;line-height:1.3}.cmb-type-group .cmb-repeat-row .cmb-td,.cmb2-postbox .cmb-repeat-row .cmb-td{padding-bottom:1.8em}.cmb-type-group .cmb-th+.cmb-td,.cmb2-postbox .cmb-th+.cmb-td{width:80%;float:left}.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:1px solid #e9e9e9}.cmb-type-group .cmb-remove-field-row,.cmb-type-group .cmb-repeat-group-field,.cmb2-postbox .cmb-remove-field-row,.cmb2-postbox .cmb-repeat-group-field{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody{display:table;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text{width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row),.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row){display:table-row}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td{display:table-cell;float:none;width:100%}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td{padding-top:1.8em}.cmb-type-group .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb-type-group .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row,.cmb2-postbox .cmb2-metabox>.cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row{padding-left:0}.js .cmb2-postbox.context-box .toggle-indicator:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .cmb2-postbox.context-box.closed .toggle-indicator:before{content:"\f140"}.cmb2-postbox.context-box{margin-bottom:10px}.cmb2-postbox.context-box.context-after_title-box,.cmb2-postbox.context-box.context-before_permalink-box{margin-top:10px}.cmb2-postbox.context-box.context-after_editor-box{margin-top:20px;margin-bottom:0}.cmb2-postbox.context-box.context-form_top-box{margin-top:10px}.cmb2-postbox.context-box.context-form_top-box .hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.cmb2-postbox.context-box .hndle{cursor:auto}.cmb2-context-wrap{margin-top:10px}.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-left:300px;width:auto}.cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox{padding:10px}.cmb2-context-wrap .cmb-th{padding:0 0 0 2%;width:18%}.cmb2-context-wrap .cmb-td{width:80%;padding:0}.cmb2-context-wrap .cmb-row{margin-bottom:10px}.cmb2-context-wrap .cmb-row:last-of-type{margin-bottom:0}#poststuff .cmb-repeatable-group h2{margin:0}.edit-tags-php .cmb2-metabox-title,.profile-php .cmb2-metabox-title,.user-edit-php .cmb2-metabox-title{font-size:1.4em}.cmb2-options-page .cmb2-metabox-title{font-size:1.3em;margin:1em 0}.cmb2-options-page .cmb2-metabox-title+p.cmb2-metabox-description{margin-top:-1.6em;margin-bottom:.8em}.cmb2-no-box-wrap .cmb-spinner,.cmb2-postbox .cmb-spinner{float:right;display:none}.cmb-spinner{display:none}.cmb-spinner.is-active{display:block}#side-sortables .cmb2-wrap>.cmb-field-list>.cmb-row,.inner-sidebar .cmb2-wrap>.cmb-field-list>.cmb-row{padding:1.4em 0}#side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker),.inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker){width:100%}#side-sortables .cmb2-wrap input+input:not(.wp-picker-clear),#side-sortables .cmb2-wrap input+select,.inner-sidebar .cmb2-wrap input+input:not(.wp-picker-clear),.inner-sidebar .cmb2-wrap input+select{margin-right:0;margin-top:1em;display:block}#side-sortables .cmb2-wrap input.cmb2-text-money,.inner-sidebar .cmb2-wrap input.cmb2-text-money{max-width:70%}#side-sortables .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description,.inner-sidebar .cmb2-wrap input.cmb2-text-money+.cmb2-metabox-description{display:block}#side-sortables .cmb2-wrap label,.inner-sidebar .cmb2-wrap label{display:block;font-weight:700;padding:0 0 5px}#side-sortables textarea,.inner-sidebar textarea{max-width:99%}#side-sortables .cmb-repeatable-group,.inner-sidebar .cmb-repeatable-group{border-bottom:1px solid #e9e9e9}#side-sortables .cmb-type-group>.cmb-td>.cmb-repeatable-group,.inner-sidebar .cmb-type-group>.cmb-td>.cmb-repeatable-group{border-bottom:0;margin-bottom:-1.4em}#side-sortables .cmb-td,#side-sortables .cmb-th,#side-sortables .cmb-th+.cmb-td,.inner-sidebar .cmb-td,.inner-sidebar .cmb-th,.inner-sidebar .cmb-th+.cmb-td{width:100%;display:block;float:none}#side-sortables .closed .inside,.inner-sidebar .closed .inside{display:none}#side-sortables .cmb-td .cmb-td,.inner-sidebar .cmb-td .cmb-td{padding-bottom:1em}#side-sortables .cmb-th,.inner-sidebar .cmb-th{display:block;float:none;padding-bottom:1em;text-align:right;width:100%;padding-right:0;padding-left:0}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{display:block;margin-top:0;padding-bottom:5px}#side-sortables .cmb-th label:after,.inner-sidebar .cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}#side-sortables .cmb-th label,.inner-sidebar .cmb-th label{font-size:14px;line-height:1.4em}#side-sortables .cmb-group-description .cmb-th,.inner-sidebar .cmb-group-description .cmb-th{padding-top:0}#side-sortables .cmb-group-description .cmb2-metabox-description,#side-sortables .cmb-group-title .cmb-th,.inner-sidebar .cmb-group-description .cmb2-metabox-description,.inner-sidebar .cmb-group-title .cmb-th{padding:0}#side-sortables .cmb-repeatable-grouping+.cmb-repeatable-grouping,.inner-sidebar .cmb-repeatable-grouping+.cmb-repeatable-grouping{margin-top:1em}#side-sortables .cmb2-media-status .embed-status img,#side-sortables .cmb2-media-status .img-status img,.inner-sidebar .cmb2-media-status .embed-status img,.inner-sidebar .cmb2-media-status .img-status img{max-width:90%;height:auto}#side-sortables .cmb2-list label,.inner-sidebar .cmb2-list label{display:inline;font-weight:400}#side-sortables .cmb2-metabox-description,.inner-sidebar .cmb2-metabox-description{display:block;padding:7px 0 0}#side-sortables .cmb-type-checkbox .cmb-td label,#side-sortables .cmb-type-checkbox .cmb2-metabox-description,.inner-sidebar .cmb-type-checkbox .cmb-td label,.inner-sidebar .cmb-type-checkbox .cmb2-metabox-description{font-weight:400;display:inline}#side-sortables .cmb-row .cmb2-metabox-description,.inner-sidebar .cmb-row .cmb2-metabox-description{padding-bottom:1.8em}#side-sortables .cmb2-metabox-title,.inner-sidebar .cmb2-metabox-title{font-size:1.2em;font-style:italic}#side-sortables .cmb-remove-row,.inner-sidebar .cmb-remove-row{clear:both;padding-top:12px;padding-bottom:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td{width:auto;clear:none;float:right;padding-top:0}#side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row,.inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row{float:left;margin:0}#side-sortables .cmb2-upload-button,.inner-sidebar .cmb2-upload-button{clear:both;margin-top:12px}.cmb2-metabox .cmb-type-group{max-width:1000px}.cmb2-metabox .cmbhandle{color:#aaa;float:left;width:27px;height:30px;cursor:pointer;left:-1em;position:relative}.cmb2-metabox .cmbhandle:before{content:'\f142';left:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.cmb2-metabox .postbox.closed .cmbhandle:before{content:'\f140'}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row{-webkit-appearance:none!important;background:none!important;border:none!important;position:absolute;right:0;top:.5em;line-height:1em;padding:2px 6px 3px;opacity:.5}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]){cursor:pointer;color:#a00;opacity:1}.cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover{color:red}* html .cmb2-element.ui-helper-clearfix{height:1%}.cmb2-element .ui-datepicker,.cmb2-element.ui-datepicker{padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background-color:#fff;border:1px solid #dfdfdf;border-top:none;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075);min-width:17em;width:auto}.cmb2-element .ui-datepicker *,.cmb2-element.ui-datepicker *{padding:0;font-family:"Open Sans",sans-serif;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.cmb2-element .ui-datepicker table,.cmb2-element.ui-datepicker table{font-size:13px;margin:0;border:none;border-collapse:collapse}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{border:none;color:#fff;font-weight:400}.cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover{background:0 0;border-color:transparent;cursor:pointer}.cmb2-element .ui-datepicker .ui-datepicker-title,.cmb2-element.ui-datepicker .ui-datepicker-title{margin:0;padding:10px 0;color:#fff;font-size:14px;line-height:14px;text-align:center}.cmb2-element .ui-datepicker .ui-datepicker-title select,.cmb2-element.ui-datepicker .ui-datepicker-title select{margin-top:-8px;margin-bottom:-8px}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-prev{position:relative;top:0;height:34px;width:34px}.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next,.cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev{border:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover,.cmb2-element.ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover{right:0}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element .ui-datepicker .ui-datepicker-next-hover,.cmb2-element.ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next-hover{left:0}.cmb2-element .ui-datepicker .ui-datepicker-next span,.cmb2-element .ui-datepicker .ui-datepicker-prev span,.cmb2-element.ui-datepicker .ui-datepicker-next span,.cmb2-element.ui-datepicker .ui-datepicker-prev span{display:none}.cmb2-element .ui-datepicker .ui-datepicker-prev,.cmb2-element.ui-datepicker .ui-datepicker-prev{float:right}.cmb2-element .ui-datepicker .ui-datepicker-next,.cmb2-element.ui-datepicker .ui-datepicker-next{float:left}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{font:400 20px/34px dashicons;padding-right:7px;color:#fff;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:34px;height:34px}.cmb2-element .ui-datepicker .ui-datepicker-prev:before,.cmb2-element.ui-datepicker .ui-datepicker-prev:before{content:'\f341'}.cmb2-element .ui-datepicker .ui-datepicker-next:before,.cmb2-element.ui-datepicker .ui-datepicker-next:before{content:'\f345'}.cmb2-element .ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-next-hover:before,.cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before{opacity:.7}.cmb2-element .ui-datepicker select.ui-datepicker-month,.cmb2-element .ui-datepicker select.ui-datepicker-year,.cmb2-element.ui-datepicker select.ui-datepicker-month,.cmb2-element.ui-datepicker select.ui-datepicker-year{width:33%;background:0 0;border-color:transparent;box-shadow:none;color:#fff}.cmb2-element .ui-datepicker select.ui-datepicker-month option,.cmb2-element .ui-datepicker select.ui-datepicker-year option,.cmb2-element.ui-datepicker select.ui-datepicker-month option,.cmb2-element.ui-datepicker select.ui-datepicker-year option{color:#333}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{color:#fff;font-weight:600}.cmb2-element .ui-datepicker thead th,.cmb2-element.ui-datepicker thead th{font-weight:400}.cmb2-element .ui-datepicker th,.cmb2-element.ui-datepicker th{padding:10px}.cmb2-element .ui-datepicker td,.cmb2-element.ui-datepicker td{padding:0;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-other-month,.cmb2-element.ui-datepicker td.ui-datepicker-other-month{border:transparent}.cmb2-element .ui-datepicker td.ui-datepicker-week-end,.cmb2-element.ui-datepicker td.ui-datepicker-week-end{background-color:#f4f4f4;border:1px solid #f4f4f4}.cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today{-webkit-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);-moz-box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 1px 0 rgba(0,0,0,.1)}.cmb2-element .ui-datepicker td.ui-datepicker-today,.cmb2-element.ui-datepicker td.ui-datepicker-today{background-color:#f0f0c0}.cmb2-element .ui-datepicker td.ui-datepicker-current-day,.cmb2-element.ui-datepicker td.ui-datepicker-current-day{background:#bd8}.cmb2-element .ui-datepicker td .ui-state-default,.cmb2-element.ui-datepicker td .ui-state-default{background:0 0;border:none;text-align:center;text-decoration:none;width:auto;display:block;padding:5px 10px;font-weight:400;color:#444}.cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default,.cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default{opacity:.5}.cmb2-element .ui-datepicker .ui-datepicker-header,.cmb2-element .ui-datepicker .ui-widget-header,.cmb2-element.ui-datepicker .ui-datepicker-header,.cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.cmb2-element .ui-datepicker thead,.cmb2-element.ui-datepicker thead{background:#32373c}.cmb2-element .ui-datepicker td .ui-state-active,.cmb2-element .ui-datepicker td .ui-state-hover,.cmb2-element.ui-datepicker td .ui-state-active,.cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.cmb2-element .ui-datepicker .ui-timepicker-div,.cmb2-element.ui-datepicker .ui-timepicker-div{font-size:14px}.cmb2-element .ui-datepicker .ui-timepicker-div dl,.cmb2-element.ui-datepicker .ui-timepicker-div dl{text-align:right;padding:0 .6em}.cmb2-element .ui-datepicker .ui-timepicker-div dl dt,.cmb2-element.ui-datepicker .ui-timepicker-div dl dt{float:right;clear:right;padding:0 5px 0 0}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd{margin:0 40% 10px 10px}.cmb2-element .ui-datepicker .ui-timepicker-div dl dd select,.cmb2-element.ui-datepicker .ui-timepicker-div dl dd select{width:100%}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane{padding:.6em;text-align:right}.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element .ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-primary,.cmb2-element.ui-datepicker .ui-timepicker-div+.ui-datepicker-buttonpane .button-secondary{padding:0 10px 1px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:0 .4em .4em .6em}.admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header{background:#00a0d2}.admin-color-fresh .cmb2-element .ui-datepicker thead,.admin-color-fresh .cmb2-element.ui-datepicker thead{background:#32373c}.admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover{background:#0073aa;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header{background:#52accc}.admin-color-blue .cmb2-element .ui-datepicker thead,.admin-color-blue .cmb2-element.ui-datepicker thead{background:#4796b3}.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover{background:#096484;color:#fff}.admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header{background:#59524c}.admin-color-coffee .cmb2-element .ui-datepicker thead,.admin-color-coffee .cmb2-element.ui-datepicker thead{background:#46403c}.admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover{background:#c7a589;color:#fff}.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header{background:#523f6d}.admin-color-ectoplasm .cmb2-element .ui-datepicker thead,.admin-color-ectoplasm .cmb2-element.ui-datepicker thead{background:#413256}.admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover{background:#a3b745;color:#fff}.admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header{background:#363b3f}.admin-color-midnight .cmb2-element .ui-datepicker thead,.admin-color-midnight .cmb2-element.ui-datepicker thead{background:#26292c}.admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover{background:#e14d43;color:#fff}.admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header{background:#738e96}.admin-color-ocean .cmb2-element .ui-datepicker thead,.admin-color-ocean .cmb2-element.ui-datepicker thead{background:#627c83}.admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover{background:#9ebaa0;color:#fff}.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header{background:#cf4944}.admin-color-sunrise .cmb2-element .ui-datepicker th,.admin-color-sunrise .cmb2-element.ui-datepicker th{border-color:#be3631;background:#be3631}.admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover{background:#dd823b;color:#fff}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-light .cmb2-element.ui-datepicker .ui-widget-header{background:#e5e5e5}.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month,.admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year{color:#555}.admin-color-light .cmb2-element .ui-datepicker thead,.admin-color-light .cmb2-element.ui-datepicker thead{background:#888}.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-default,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before,.admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-default{color:#555}.admin-color-light .cmb2-element .ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-active,.admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover{background:#ccc}.admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today,.admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today{background:#eee}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header{background:#56b274}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead{background:#36533f}.admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover{background:#446950;color:#fff}.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header,.admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header{background:#4ca26a}.admin-color-bbp-mint .cmb2-element .ui-datepicker thead,.admin-color-bbp-mint .cmb2-element.ui-datepicker thead{background:#4f6d59}.admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover,.admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover{background:#5fb37c;color:#fff}@media only screen and (max-width:850px){.cmb2-context-wrap.cmb2-context-wrap-form_top{margin-left:0}}@media (max-width:450px){.cmb-th{font-size:1.2em;padding-bottom:1em;text-align:right}.cmb-th label{display:block;margin-top:0;padding-bottom:5px}.cmb-th label:after{border-bottom:1px solid #e9e9e9;content:'';clear:both;display:block;padding-top:.4em}.cmb-td,.cmb-th,.cmb-th+.cmb-td{display:block;float:none;width:100%}.cmb-type-group .cmb-repeatable-group:not(:last-of-type),.cmb-type-group .cmb-row:not(:last-of-type),.cmb2-postbox .cmb-repeatable-group:not(:last-of-type),.cmb2-postbox .cmb-row:not(:last-of-type){border-bottom:0}}meta/cmb2/css/cmb2-rtl.css000066600000136442152143340100011250 0ustar00/** * CMB2 Styling */ /*-------------------------------------------------------------- Main Wrap --------------------------------------------------------------*/ /* line 5, sass/partials/_main_wrap.scss */ .cmb2-wrap { margin: 0; } /* line 8, sass/partials/_main_wrap.scss */ .cmb2-wrap input, .cmb2-wrap textarea { font-size: 14px; max-width: 100%; padding: 5px; } /* line 18, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 23, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea { width: 500px; } /* line 26, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea.cmb2-textarea-code { font-family: "Courier 10 Pitch", Courier, monospace; line-height: 16px; } /* line 34, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-small, .cmb2-wrap input.cmb2-timepicker { width: 100px; } /* line 40, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-money { width: 90px; } /* line 45, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-medium { width: 230px; } /* line 50, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-upload-file { width: 65%; } /* line 54, sass/partials/_main_wrap.scss */ .cmb2-wrap input.ed_button { padding: 2px 4px; } /* line 59, sass/partials/_main_wrap.scss */ .cmb2-wrap input:not([type="hidden"]) + input, .cmb2-wrap input:not([type="hidden"]) + .button, .cmb2-wrap input:not([type="hidden"]) + select { margin-right: 20px; } /* line 67, sass/partials/_main_wrap.scss */ .cmb2-wrap ul { margin: 0; } /* line 71, sass/partials/_main_wrap.scss */ .cmb2-wrap li { font-size: 14px; line-height: 16px; margin: 1px 0 5px 0; } /* line 82, sass/partials/_main_wrap.scss */ .cmb2-wrap select { font-size: 14px; margin-top: 3px; } /* line 87, sass/partials/_main_wrap.scss */ .cmb2-wrap input:focus, .cmb2-wrap textarea:focus { background: #fffff8; } /* line 92, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="radio"] { margin: 0 0 0 5px; padding: 0; } /* line 97, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="checkbox"] { margin: 0 0 0 5px; padding: 0; } /* line 102, sass/partials/_main_wrap.scss */ .cmb2-wrap button, .cmb2-wrap .button { white-space: nowrap; } /* line 107, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceLayout { border: 1px solid #e9e9e9 !important; } /* line 111, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceIframeContainer { background: #fff; } /* line 115, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce { width: 97%; } /* line 118, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce textarea { width: 100%; } /* line 126, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-input-wrap { vertical-align: middle; } /* line 131, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-container { margin: 0 0 0 10px; } /* line 136, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row { margin: 0; } /* line 139, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row:after { content: ''; clear: both; display: block; width: 100%; } /* line 146, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row { padding: 1.8em 0 0; } /* line 149, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type { padding: 0; } /* line 154, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description { padding-top: 0; padding-bottom: 1.8em; } /* line 161, sass/partials/_main_wrap.scss */ .cmb2-metabox { clear: both; margin: 0; } /* line 167, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox > .cmb-row:first-of-type > .cmb-th, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-th { border: 0; } /* line 174, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row .cmb-repeat-table .cmb-row > .cmb-td { padding-left: 20px; box-sizing: border-box; float: right; } /* line 182, sass/partials/_main_wrap.scss */ .cmb-add-row { margin: 1.8em 0 0; } /* line 186, sass/partials/_main_wrap.scss */ .cmb-nested .cmb-td, .cmb-repeatable-group .cmb-th, .cmb-repeatable-group:first-of-type { border: 0; } /* line 192, sass/partials/_main_wrap.scss */ .cmb-row:last-of-type, .cmb2-wrap .cmb-row:last-of-type, .cmb-repeatable-group:last-of-type { border-bottom: 0; } /* line 198, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping { border: 1px solid #e9e9e9; padding: 0 1em; max-width: 1000px; } /* line 202, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping.cmb-row { margin: 0 0 0.8em; } /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { color: #222222; float: right; font-weight: 600; line-height: 1.3; padding: 20px 0 20px 10px; vertical-align: top; width: 200px; } /* line 223, sass/partials/_main_wrap.scss */ .cmb-td { line-height: 1.3; max-width: 100%; padding: 15px 10px; vertical-align: middle; } /* line 232, sass/partials/_main_wrap.scss */ .cmb-type-title .cmb-td { padding: 0; } /* line 237, sass/partials/_main_wrap.scss */ .cmb-th label { display: block; padding: 5px 0; } /* line 242, sass/partials/_main_wrap.scss */ .cmb-th + .cmb-td { float: right; } /* line 246, sass/partials/_main_wrap.scss */ .cmb-td .cmb-td { padding-bottom: 1em; } /* line 250, sass/partials/_main_wrap.scss */ .cmb-remove-row { text-align: left; } /* line 254, sass/partials/_main_wrap.scss */ .empty-row.hidden { display: none; } /* line 260, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-th { padding: 5px; } /* line 264, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title { background-color: #e9e9e9; padding: 8px 2.2em 8px 12px; margin: 0 -1em; min-height: 1.5em; font-size: 14px; line-height: 1.4; } /* line 272, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title h4 { border: 0; margin: 0; font-size: 1.2em; font-weight: 500; padding: 0.5em 0.75em; } /* line 280, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title .cmb-th { display: block; width: 100%; } /* line 286, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: right; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 290, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows { font-size: 1em; margin-left: 1em; text-decoration: none; } /* line 295, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons { font-size: 1.5em; height: 1.5em; line-height: 1.2em; width: 1em; } /* line 301, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2 { line-height: 1.3em; } /* line 308, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb2-upload-button { float: left; } /* line 314, sass/partials/_main_wrap.scss */ p.cmb2-metabox-description { color: #aaaaaa; font-style: italic; margin: 0; padding-top: .5em; } /* line 321, sass/partials/_main_wrap.scss */ span.cmb2-metabox-description { color: #aaaaaa; font-style: italic; } /* line 326, sass/partials/_main_wrap.scss */ .cmb2-metabox-title { margin: 0 0 5px 0; padding: 5px 0 0 0; font-size: 14px; } /* line 332, sass/partials/_main_wrap.scss */ .cmb-inline ul { padding: 4px 0 0 0; } /* line 336, sass/partials/_main_wrap.scss */ .cmb-inline li { display: inline-block; padding-left: 18px; } /* line 341, sass/partials/_main_wrap.scss */ .cmb-type-textarea-code pre { margin: 0; } /* line 347, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status { clear: none; display: inline-block; vertical-align: middle; margin-left: 10px; width: auto; } /* line 354, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img { max-width: 350px; height: auto; } /* line 360, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .embed-status { background: #ffffff; border: 1px solid #e9e9e9; border-radius: 2px; -moz-border-radius: 2px; margin: 15px 0 0 0; padding: 5px; } /* line 370, sass/partials/_main_wrap.scss */ .cmb2-media-status .embed-status { float: right; max-width: 800px; } /* line 375, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status, .cmb2-media-status .embed-status { position: relative; } /* line 378, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button, .cmb2-media-status .embed-status .cmb2-remove-file-button { background: url(../images/ico-delete.png); height: 16px; right: -5px; position: absolute; text-indent: -9999px; top: -5px; width: 16px; } /* line 392, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button { top: 10px; } /* line 397, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .file-status > span { cursor: pointer; } /* line 403, sass/partials/_main_wrap.scss */ .cmb-type-file-list .cmb2-media-status .img-status { clear: none; vertical-align: middle; width: auto; margin-left: 10px; margin-bottom: 10px; margin-top: 0; } /* line 412, sass/partials/_main_wrap.scss */ .cmb-attach-list li { clear: both; display: inline-block; width: 100%; margin-top: 5px; margin-bottom: 10px; } /* line 419, sass/partials/_main_wrap.scss */ .cmb-attach-list li img { cursor: move; float: right; margin-left: 10px; } /* line 426, sass/partials/_main_wrap.scss */ .cmb2-remove-wrapper { margin: 0; } /* line 430, sass/partials/_main_wrap.scss */ .child-cmb2 .cmb-th { text-align: right; } /*-------------------------------------------------------------- Post Metaboxes --------------------------------------------------------------*/ /* line 4, sass/partials/_post_metaboxes.scss */ #poststuff .cmb-group-title { margin-right: -1em; margin-left: -1em; min-height: 1.5em; } /* line 10, sass/partials/_post_metaboxes.scss */ #poststuff .repeatable .cmb-group-title { padding-right: 2.2em; } /* line 16, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap, .cmb-type-group .cmb2-wrap { margin: 0; } /* line 19, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap > .cmb-field-list > .cmb-row, .cmb-type-group .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.8em 0; } /* line 25, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed, .cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 31, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row, .cmb-type-group .cmb-row { padding: 0 0 1.8em; margin: 0 0 0.8em; } /* line 35, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row .cmbhandle, .cmb-type-group .cmb-row .cmbhandle { left: -1em; position: relative; } /* line 41, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-grouping, .cmb-type-group .cmb-repeatable-grouping { padding: 0 1em; max-width: 100%; min-width: 1px !important; } /* line 47, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-group > .cmb-row, .cmb-type-group .cmb-repeatable-group > .cmb-row { padding-bottom: 0; } /* line 51, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th, .cmb-type-group .cmb-th { width: 18%; padding: 0 0 0 2%; } /* line 57, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-td, .cmb-type-group .cmb-td { margin-bottom: 0; padding: 0; line-height: 1.3; } /* line 63, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-row .cmb-td, .cmb-type-group .cmb-repeat-row .cmb-td { padding-bottom: 1.8em; } /* line 67, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th + .cmb-td, .cmb-type-group .cmb-th + .cmb-td { width: 80%; float: left; } /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 1px solid #e9e9e9; } /* line 81, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-group-field, .cmb2-postbox .cmb-remove-field-row, .cmb-type-group .cmb-repeat-group-field, .cmb-type-group .cmb-remove-field-row { padding-top: 1.8em; } /* line 88, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody { display: table; width: 100%; } /* line 92, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text { width: 100%; } /* line 96, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row) { display: table-row; } /* line 100, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td { display: table-cell; float: none; width: 100%; } /* line 106, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td { padding-top: 1.8em; } /* line 110, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row { padding-left: 0; } /*-------------------------------------------------------------- Context Metaboxes --------------------------------------------------------------*/ /* Metabox collapse arrow indicators */ /* line 9, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box .toggle-indicator:before { content: "\f142"; display: inline-block; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 22, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box.closed .toggle-indicator:before { content: "\f140"; } /* line 30, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box { margin-bottom: 10px; } /* line 34, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-before_permalink-box { margin-top: 10px; } /* line 38, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_title-box { margin-top: 10px; } /* line 42, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_editor-box { margin-top: 20px; margin-bottom: 0; } /* line 47, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box { margin-top: 10px; } /* line 51, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box .hndle { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } /* line 59, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box .hndle { cursor: auto; } /* line 64, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap { margin-top: 10px; } /* line 68, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-left: 300px; width: auto; } /* line 75, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox { padding: 10px; } /* line 80, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-th { padding: 0 0 0 2%; width: 18%; } /* line 85, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-td { width: 80%; padding: 0; } /* line 90, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row { margin-bottom: 10px; } /* line 93, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row:last-of-type { margin-bottom: 0; } /* one column on the post write/edit screen */ /*-------------------------------------------------------------- Misc. --------------------------------------------------------------*/ /* line 5, sass/partials/_misc.scss */ #poststuff .cmb-repeatable-group h2 { margin: 0; } /* line 12, sass/partials/_misc.scss */ .edit-tags-php .cmb2-metabox-title, .profile-php .cmb2-metabox-title, .user-edit-php .cmb2-metabox-title { font-size: 1.4em; } /* line 18, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title { font-size: 1.3em; margin: 1em 0; } /* line 21, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title + p.cmb2-metabox-description { margin-top: -1.6em; margin-bottom: .8em; } /* line 28, sass/partials/_misc.scss */ .cmb2-postbox .cmb-spinner, .cmb2-no-box-wrap .cmb-spinner { float: right; display: none; } /* line 33, sass/partials/_misc.scss */ .cmb-spinner { display: none; } /* line 35, sass/partials/_misc.scss */ .cmb-spinner.is-active { display: block; } /*-------------------------------------------------------------- Sidebar Placement Adjustments --------------------------------------------------------------*/ /* line 10, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap > .cmb-field-list > .cmb-row, #side-sortables .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.4em 0; } /* line 16, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker), #side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker) { width: 100%; } /* line 20, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input + input:not(.wp-picker-clear), .inner-sidebar .cmb2-wrap input + select, #side-sortables .cmb2-wrap input + input:not(.wp-picker-clear), #side-sortables .cmb2-wrap input + select { margin-right: 0; margin-top: 1em; display: block; } /* line 26, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money, #side-sortables .cmb2-wrap input.cmb2-text-money { max-width: 70%; } /* line 28, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description, #side-sortables .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description { display: block; } /* line 34, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap label, #side-sortables .cmb2-wrap label { display: block; font-weight: 700; padding: 0 0 5px; } /* line 42, sass/partials/_sidebar_placements.scss */ .inner-sidebar textarea, #side-sortables textarea { max-width: 99%; } /* line 46, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-group, #side-sortables .cmb-repeatable-group { border-bottom: 1px solid #e9e9e9; } /* line 50, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-group > .cmb-td > .cmb-repeatable-group, #side-sortables .cmb-type-group > .cmb-td > .cmb-repeatable-group { border-bottom: 0; margin-bottom: -1.4em; } /* line 55, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, .inner-sidebar .cmb-td, .inner-sidebar .cmb-th + .cmb-td, #side-sortables .cmb-th, #side-sortables .cmb-td, #side-sortables .cmb-th + .cmb-td { width: 100%; display: block; float: none; } /* line 63, sass/partials/_sidebar_placements.scss */ .inner-sidebar .closed .inside, #side-sortables .closed .inside { display: none; } /* line 67, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-td .cmb-td, #side-sortables .cmb-td .cmb-td { padding-bottom: 1em; } /* line 71, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, #side-sortables .cmb-th { display: block; float: none; padding-bottom: 1em; text-align: right; width: 100%; padding-right: 0; padding-left: 0; } /* line 27, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label:after, #side-sortables .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 14, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { font-size: 14px; line-height: 1.4em; } /* line 78, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb-th, #side-sortables .cmb-group-description .cmb-th { padding-top: 0; } /* line 81, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb2-metabox-description, #side-sortables .cmb-group-description .cmb2-metabox-description { padding: 0; } /* line 88, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-title .cmb-th, #side-sortables .cmb-group-title .cmb-th { padding: 0; } /* line 94, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-grouping + .cmb-repeatable-grouping, #side-sortables .cmb-repeatable-grouping + .cmb-repeatable-grouping { margin-top: 1em; } /* line 103, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-media-status .img-status img, .inner-sidebar .cmb2-media-status .embed-status img, #side-sortables .cmb2-media-status .img-status img, #side-sortables .cmb2-media-status .embed-status img { max-width: 90%; height: auto; } /* line 111, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-list label, #side-sortables .cmb2-list label { display: inline; font-weight: normal; } /* line 116, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-description, #side-sortables .cmb2-metabox-description { display: block; padding: 7px 0 0; } /* line 123, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-checkbox .cmb-td label, .inner-sidebar .cmb-type-checkbox .cmb2-metabox-description, #side-sortables .cmb-type-checkbox .cmb-td label, #side-sortables .cmb-type-checkbox .cmb2-metabox-description { font-weight: normal; display: inline; } /* line 130, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-row .cmb2-metabox-description, #side-sortables .cmb-row .cmb2-metabox-description { padding-bottom: 1.8em; } /* line 134, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-title, #side-sortables .cmb2-metabox-title { font-size: 1.2em; font-style: italic; } /* line 139, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-remove-row, #side-sortables .cmb-remove-row { clear: both; padding-top: 12px; padding-bottom: 0; } /* line 146, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td { width: auto; clear: none; float: right; padding-top: 0; } /* line 151, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row { float: left; margin: 0; } /* line 158, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-upload-button, #side-sortables .cmb2-upload-button { clear: both; margin-top: 12px; } /* line 2, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmb-type-group { max-width: 1000px; } /* line 5, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle { color: #aaa; float: left; width: 27px; height: 30px; cursor: pointer; left: -1em; position: relative; } /* line 13, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle:before { content: '\f142'; left: 12px; font: normal 20px/1 'dashicons'; speak: none; display: inline-block; padding: 8px 10px; top: 0; position: relative; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 30, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .postbox.closed .cmbhandle:before { content: '\f140'; } /* line 36, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row { -webkit-appearance: none !important; background: none !important; border: none !important; position: absolute; right: 0; top: .5em; line-height: 1em; padding: 2px 6px 3px; opacity: .5; } /* line 46, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]) { cursor: pointer; color: #a00; opacity: 1; } /* line 50, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover { color: #f00; } /* * jQuery UI CSS Framework 1.8.16 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * WordPress Styles adopted from "jQuery UI Datepicker CSS for WordPress" * https://github.com/stuttter/wp-datepicker-styling * */ /* line 15, sass/partials/_jquery_ui.scss */ * html .cmb2-element.ui-helper-clearfix { height: 1%; } /* line 24, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { padding: 0; margin: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; background-color: #fff; border: 1px solid #dfdfdf; border-top: none; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); min-width: 17em; width: auto; /* Default Color Scheme */ } /* line 38, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker *, .cmb2-element .ui-datepicker * { padding: 0; font-family: "Open Sans", sans-serif; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } /* line 46, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker table, .cmb2-element .ui-datepicker table { font-size: 13px; margin: 0; border: none; border-collapse: collapse; } /* line 53, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background-image: none; border: none; color: #fff; font-weight: normal; } /* line 61, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: transparent; border-color: transparent; cursor: pointer; } /* line 67, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title, .cmb2-element .ui-datepicker .ui-datepicker-title { margin: 0; padding: 10px 0; color: #fff; font-size: 14px; line-height: 14px; text-align: center; } /* line 75, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title select, .cmb2-element .ui-datepicker .ui-datepicker-title select { margin-top: -8px; margin-bottom: -8px; } /* line 81, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-next { position: relative; top: 0; height: 34px; width: 34px; } /* line 89, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next { border: none; } /* line 94, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-prev-hover, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover { right: 0; } /* line 99, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element.ui-datepicker .ui-datepicker-next-hover, .cmb2-element .ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next-hover { left: 0; } /* line 104, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next span, .cmb2-element.ui-datepicker .ui-datepicker-prev span, .cmb2-element .ui-datepicker .ui-datepicker-next span, .cmb2-element .ui-datepicker .ui-datepicker-prev span { display: none; } /* line 109, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev { float: right; } /* line 113, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next { float: left; } /* line 117, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { font: normal 20px/34px 'dashicons'; padding-right: 7px; color: #fff; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 34px; height: 34px; } /* line 129, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before { content: '\f341'; } /* line 133, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { content: '\f345'; } /* line 137, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element.ui-datepicker .ui-datepicker-next-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-next-hover:before { opacity: 0.7; } /* line 142, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month, .cmb2-element.ui-datepicker select.ui-datepicker-year, .cmb2-element .ui-datepicker select.ui-datepicker-month, .cmb2-element .ui-datepicker select.ui-datepicker-year { width: 33%; background: transparent; border-color: transparent; box-shadow: none; color: #fff; } /* line 149, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month option, .cmb2-element.ui-datepicker select.ui-datepicker-year option, .cmb2-element .ui-datepicker select.ui-datepicker-month option, .cmb2-element .ui-datepicker select.ui-datepicker-year option { color: #333; } /* line 154, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { color: #fff; font-weight: 600; } /* line 157, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead th, .cmb2-element .ui-datepicker thead th { font-weight: normal; } /* line 162, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker th, .cmb2-element .ui-datepicker th { padding: 10px; } /* line 166, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td, .cmb2-element .ui-datepicker td { padding: 0; border: 1px solid #f4f4f4; } /* line 171, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-other-month, .cmb2-element .ui-datepicker td.ui-datepicker-other-month { border: transparent; } /* line 175, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end, .cmb2-element .ui-datepicker td.ui-datepicker-week-end { background-color: #f4f4f4; border: 1px solid #f4f4f4; } /* line 178, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today { -webkit-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); } /* line 185, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-today { background-color: #f0f0c0; } /* line 189, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-current-day, .cmb2-element .ui-datepicker td.ui-datepicker-current-day { background: #bbdd88; } /* line 193, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-default, .cmb2-element .ui-datepicker td .ui-state-default { background: transparent; border: none; text-align: center; text-decoration: none; width: auto; display: block; padding: 5px 10px; font-weight: normal; color: #444; } /* line 205, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default, .cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default { opacity: 0.5; } /* line 210, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 215, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 219, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-hover, .cmb2-element.ui-datepicker td .ui-state-active, .cmb2-element .ui-datepicker td .ui-state-hover, .cmb2-element .ui-datepicker td .ui-state-active { background: #0073aa; color: #fff; } /* line 224, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div, .cmb2-element .ui-datepicker .ui-timepicker-div { font-size: 14px; } /* line 226, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl, .cmb2-element .ui-datepicker .ui-timepicker-div dl { text-align: right; padding: 0 .6em; } /* line 229, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dt, .cmb2-element .ui-datepicker .ui-timepicker-div dl dt { float: right; clear: right; padding: 0 5px 0 0; } /* line 234, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd { margin: 0 40% 10px 10px; } /* line 236, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd select, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd select { width: 100%; } /* line 242, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane { padding: .6em; text-align: right; } /* line 246, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary { padding: 0 10px 1px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; margin: 0 .4em .4em .6em; } /* line 260, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 265, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker thead, .admin-color-fresh .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 269, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover { background: #0073aa; color: #fff; } /* line 277, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header { background: #52accc; } /* line 282, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker thead, .admin-color-blue .cmb2-element .ui-datepicker thead { background: #4796b3; } /* line 291, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active { background: #096484; color: #fff; } /* line 296, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 305, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header { background: #59524c; } /* line 310, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker thead, .admin-color-coffee .cmb2-element .ui-datepicker thead { background: #46403c; } /* line 314, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover { background: #c7a589; color: #fff; } /* line 322, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header { background: #523f6d; } /* line 327, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker thead, .admin-color-ectoplasm .cmb2-element .ui-datepicker thead { background: #413256; } /* line 331, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover { background: #a3b745; color: #fff; } /* line 339, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header { background: #363b3f; } /* line 344, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker thead, .admin-color-midnight .cmb2-element .ui-datepicker thead { background: #26292c; } /* line 348, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover { background: #e14d43; color: #fff; } /* line 356, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header { background: #738e96; } /* line 361, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker thead, .admin-color-ocean .cmb2-element .ui-datepicker thead { background: #627c83; } /* line 365, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover { background: #9ebaa0; color: #fff; } /* line 373, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: #cf4944; } /* line 379, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker th, .admin-color-sunrise .cmb2-element .ui-datepicker th { border-color: #be3631; background: #be3631; } /* line 384, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover { background: #dd823b; color: #fff; } /* line 392, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-light .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header { background: #e5e5e5; } /* line 397, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year { color: #555; } /* line 402, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker thead, .admin-color-light .cmb2-element .ui-datepicker thead { background: #888; } /* line 406, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before { color: #555; } /* line 414, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-active { background: #ccc; } /* line 418, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 426, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header { background: #56b274; } /* line 431, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead { background: #36533f; } /* line 435, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover { background: #446950; color: #fff; } /* line 443, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header { background: #4ca26a; } /* line 448, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker thead, .admin-color-bbp-mint .cmb2-element .ui-datepicker thead { background: #4f6d59; } /* line 452, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover { background: #5fb37c; color: #fff; } /*# sourceMappingURL=cmb2.css.map */ @media only screen and (max-width: 850px) { /* line 103, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-left: 0; } } @media (max-width: 450px) { /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: right; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 435, sass/partials/_main_wrap.scss */ .cmb-th, .cmb-td, .cmb-th + .cmb-td { display: block; float: none; width: 100%; } /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 0; } } meta/cmb2/css/cmb2-front.css000066600000141230152143340100011566 0ustar00/** * CMB2 Styling */ /*-------------------------------------------------------------- Main Wrap --------------------------------------------------------------*/ /* line 5, sass/partials/_main_wrap.scss */ .cmb2-wrap { margin: 0; } /* line 8, sass/partials/_main_wrap.scss */ .cmb2-wrap input, .cmb2-wrap textarea { font-size: 14px; max-width: 100%; padding: 5px; } /* line 18, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 23, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea { width: 500px; } /* line 26, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea.cmb2-textarea-code { font-family: "Courier 10 Pitch", Courier, monospace; line-height: 16px; } /* line 34, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-small, .cmb2-wrap input.cmb2-timepicker { width: 100px; } /* line 40, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-money { width: 90px; } /* line 45, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-medium { width: 230px; } /* line 50, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-upload-file { width: 65%; } /* line 54, sass/partials/_main_wrap.scss */ .cmb2-wrap input.ed_button { padding: 2px 4px; } /* line 59, sass/partials/_main_wrap.scss */ .cmb2-wrap input:not([type="hidden"]) + input, .cmb2-wrap input:not([type="hidden"]) + .button, .cmb2-wrap input:not([type="hidden"]) + select { margin-left: 20px; } /* line 67, sass/partials/_main_wrap.scss */ .cmb2-wrap ul { margin: 0; } /* line 71, sass/partials/_main_wrap.scss */ .cmb2-wrap li { font-size: 14px; line-height: 16px; margin: 1px 0 5px 0; } /* line 82, sass/partials/_main_wrap.scss */ .cmb2-wrap select { font-size: 14px; margin-top: 3px; } /* line 87, sass/partials/_main_wrap.scss */ .cmb2-wrap input:focus, .cmb2-wrap textarea:focus { background: #fffff8; } /* line 92, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="radio"] { margin: 0 5px 0 0; padding: 0; } /* line 97, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="checkbox"] { margin: 0 5px 0 0; padding: 0; } /* line 102, sass/partials/_main_wrap.scss */ .cmb2-wrap button, .cmb2-wrap .button { white-space: nowrap; } /* line 107, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceLayout { border: 1px solid #e9e9e9 !important; } /* line 111, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceIframeContainer { background: #fff; } /* line 115, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce { width: 97%; } /* line 118, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce textarea { width: 100%; } /* line 126, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-input-wrap { vertical-align: middle; } /* line 131, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-container { margin: 0 10px 0 0; } /* line 136, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row { margin: 0; } /* line 139, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row:after { content: ''; clear: both; display: block; width: 100%; } /* line 146, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row { padding: 1.8em 0 0; } /* line 149, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type { padding: 0; } /* line 154, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description { padding-top: 0; padding-bottom: 1.8em; } /* line 161, sass/partials/_main_wrap.scss */ .cmb2-metabox { clear: both; margin: 0; } /* line 167, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox > .cmb-row:first-of-type > .cmb-th, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-th { border: 0; } /* line 174, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row .cmb-repeat-table .cmb-row > .cmb-td { padding-right: 20px; box-sizing: border-box; float: left; } /* line 182, sass/partials/_main_wrap.scss */ .cmb-add-row { margin: 1.8em 0 0; } /* line 186, sass/partials/_main_wrap.scss */ .cmb-nested .cmb-td, .cmb-repeatable-group .cmb-th, .cmb-repeatable-group:first-of-type { border: 0; } /* line 192, sass/partials/_main_wrap.scss */ .cmb-row:last-of-type, .cmb2-wrap .cmb-row:last-of-type, .cmb-repeatable-group:last-of-type { border-bottom: 0; } /* line 198, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping { border: 1px solid #e9e9e9; padding: 0 1em; max-width: 1000px; } /* line 202, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping.cmb-row { margin: 0 0 0.8em; } /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { color: #222222; float: left; font-weight: 600; line-height: 1.3; padding: 20px 10px 20px 0; vertical-align: top; width: 200px; } @media (max-width: 450px) { /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: left; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } } /* line 223, sass/partials/_main_wrap.scss */ .cmb-td { line-height: 1.3; max-width: 100%; padding: 15px 10px; vertical-align: middle; } /* line 232, sass/partials/_main_wrap.scss */ .cmb-type-title .cmb-td { padding: 0; } /* line 237, sass/partials/_main_wrap.scss */ .cmb-th label { display: block; padding: 5px 0; } /* line 242, sass/partials/_main_wrap.scss */ .cmb-th + .cmb-td { float: left; } /* line 246, sass/partials/_main_wrap.scss */ .cmb-td .cmb-td { padding-bottom: 1em; } /* line 250, sass/partials/_main_wrap.scss */ .cmb-remove-row { text-align: right; } /* line 254, sass/partials/_main_wrap.scss */ .empty-row.hidden { display: none; } /* line 260, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-th { padding: 5px; } /* line 264, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title { background-color: #e9e9e9; padding: 8px 12px 8px 2.2em; margin: 0 -1em; min-height: 1.5em; font-size: 14px; line-height: 1.4; } /* line 272, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title h4 { border: 0; margin: 0; font-size: 1.2em; font-weight: 500; padding: 0.5em 0.75em; } /* line 280, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title .cmb-th { display: block; width: 100%; } /* line 286, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: left; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 290, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows { font-size: 1em; margin-right: 1em; text-decoration: none; } /* line 295, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons { font-size: 1.5em; height: 1.5em; line-height: 1.2em; width: 1em; } /* line 301, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2 { line-height: 1.3em; } /* line 308, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb2-upload-button { float: right; } /* line 314, sass/partials/_main_wrap.scss */ p.cmb2-metabox-description { color: #aaaaaa; font-style: italic; margin: 0; padding-top: .5em; } /* line 321, sass/partials/_main_wrap.scss */ span.cmb2-metabox-description { color: #aaaaaa; font-style: italic; } /* line 326, sass/partials/_main_wrap.scss */ .cmb2-metabox-title { margin: 0 0 5px 0; padding: 5px 0 0 0; font-size: 14px; } /* line 332, sass/partials/_main_wrap.scss */ .cmb-inline ul { padding: 4px 0 0 0; } /* line 336, sass/partials/_main_wrap.scss */ .cmb-inline li { display: inline-block; padding-right: 18px; } /* line 341, sass/partials/_main_wrap.scss */ .cmb-type-textarea-code pre { margin: 0; } /* line 347, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status { clear: none; display: inline-block; vertical-align: middle; margin-right: 10px; width: auto; } /* line 354, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img { max-width: 350px; height: auto; } /* line 360, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .embed-status { background: #ffffff; border: 1px solid #e9e9e9; border-radius: 2px; -moz-border-radius: 2px; margin: 15px 0 0 0; padding: 5px; } /* line 370, sass/partials/_main_wrap.scss */ .cmb2-media-status .embed-status { float: left; max-width: 800px; } /* line 375, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status, .cmb2-media-status .embed-status { position: relative; } /* line 378, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button, .cmb2-media-status .embed-status .cmb2-remove-file-button { background: url(../images/ico-delete.png); height: 16px; left: -5px; position: absolute; text-indent: -9999px; top: -5px; width: 16px; } /* line 392, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button { top: 10px; } /* line 397, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .file-status > span { cursor: pointer; } /* line 403, sass/partials/_main_wrap.scss */ .cmb-type-file-list .cmb2-media-status .img-status { clear: none; vertical-align: middle; width: auto; margin-right: 10px; margin-bottom: 10px; margin-top: 0; } /* line 412, sass/partials/_main_wrap.scss */ .cmb-attach-list li { clear: both; display: inline-block; width: 100%; margin-top: 5px; margin-bottom: 10px; } /* line 419, sass/partials/_main_wrap.scss */ .cmb-attach-list li img { cursor: move; float: left; margin-right: 10px; } /* line 426, sass/partials/_main_wrap.scss */ .cmb2-remove-wrapper { margin: 0; } /* line 430, sass/partials/_main_wrap.scss */ .child-cmb2 .cmb-th { text-align: left; } @media (max-width: 450px) { /* line 435, sass/partials/_main_wrap.scss */ .cmb-th, .cmb-td, .cmb-th + .cmb-td { display: block; float: none; width: 100%; } } /*-------------------------------------------------------------- Post Metaboxes --------------------------------------------------------------*/ /* line 4, sass/partials/_post_metaboxes.scss */ #poststuff .cmb-group-title { margin-left: -1em; margin-right: -1em; min-height: 1.5em; } /* line 10, sass/partials/_post_metaboxes.scss */ #poststuff .repeatable .cmb-group-title { padding-left: 2.2em; } /* line 16, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap, .cmb-type-group .cmb2-wrap { margin: 0; } /* line 19, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap > .cmb-field-list > .cmb-row, .cmb-type-group .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.8em 0; } /* line 25, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed, .cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 31, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row, .cmb-type-group .cmb-row { padding: 0 0 1.8em; margin: 0 0 0.8em; } /* line 35, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row .cmbhandle, .cmb-type-group .cmb-row .cmbhandle { right: -1em; position: relative; } /* line 41, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-grouping, .cmb-type-group .cmb-repeatable-grouping { padding: 0 1em; max-width: 100%; min-width: 1px !important; } /* line 47, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-group > .cmb-row, .cmb-type-group .cmb-repeatable-group > .cmb-row { padding-bottom: 0; } /* line 51, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th, .cmb-type-group .cmb-th { width: 18%; padding: 0 2% 0 0; } /* line 57, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-td, .cmb-type-group .cmb-td { margin-bottom: 0; padding: 0; line-height: 1.3; } /* line 63, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-row .cmb-td, .cmb-type-group .cmb-repeat-row .cmb-td { padding-bottom: 1.8em; } /* line 67, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th + .cmb-td, .cmb-type-group .cmb-th + .cmb-td { width: 80%; float: right; } /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 1px solid #e9e9e9; } @media (max-width: 450px) { /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 0; } } /* line 81, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-group-field, .cmb2-postbox .cmb-remove-field-row, .cmb-type-group .cmb-repeat-group-field, .cmb-type-group .cmb-remove-field-row { padding-top: 1.8em; } /* line 88, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody { display: table; width: 100%; } /* line 92, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text { width: 100%; } /* line 96, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row) { display: table-row; } /* line 100, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td { display: table-cell; float: none; width: 100%; } /* line 106, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td { padding-top: 1.8em; } /* line 110, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row { padding-right: 0; } /*-------------------------------------------------------------- Context Metaboxes --------------------------------------------------------------*/ /* Metabox collapse arrow indicators */ /* line 9, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box .toggle-indicator:before { content: "\f142"; display: inline-block; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 22, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box.closed .toggle-indicator:before { content: "\f140"; } /* line 30, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box { margin-bottom: 10px; } /* line 34, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-before_permalink-box { margin-top: 10px; } /* line 38, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_title-box { margin-top: 10px; } /* line 42, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_editor-box { margin-top: 20px; margin-bottom: 0; } /* line 47, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box { margin-top: 10px; } /* line 51, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box .hndle { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } /* line 59, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box .hndle { cursor: auto; } /* line 64, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap { margin-top: 10px; } /* line 68, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-right: 300px; width: auto; } /* line 75, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox { padding: 10px; } /* line 80, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-th { padding: 0 2% 0 0; width: 18%; } /* line 85, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-td { width: 80%; padding: 0; } /* line 90, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row { margin-bottom: 10px; } /* line 93, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row:last-of-type { margin-bottom: 0; } /* one column on the post write/edit screen */ @media only screen and (max-width: 850px) { /* line 103, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-right: 0; } } /*-------------------------------------------------------------- Misc. --------------------------------------------------------------*/ /* line 5, sass/partials/_misc.scss */ #poststuff .cmb-repeatable-group h2 { margin: 0; } /* line 12, sass/partials/_misc.scss */ .edit-tags-php .cmb2-metabox-title, .profile-php .cmb2-metabox-title, .user-edit-php .cmb2-metabox-title { font-size: 1.4em; } /* line 18, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title { font-size: 1.3em; margin: 1em 0; } /* line 21, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title + p.cmb2-metabox-description { margin-top: -1.6em; margin-bottom: .8em; } /* line 28, sass/partials/_misc.scss */ .cmb2-postbox .cmb-spinner, .cmb2-no-box-wrap .cmb-spinner { float: left; display: none; } /* line 33, sass/partials/_misc.scss */ .cmb-spinner { display: none; } /* line 35, sass/partials/_misc.scss */ .cmb-spinner.is-active { display: block; } /*-------------------------------------------------------------- Sidebar Placement Adjustments --------------------------------------------------------------*/ /* line 10, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap > .cmb-field-list > .cmb-row, #side-sortables .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.4em 0; } /* line 16, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker), #side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker) { width: 100%; } /* line 20, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input + input:not(.wp-picker-clear), .inner-sidebar .cmb2-wrap input + select, #side-sortables .cmb2-wrap input + input:not(.wp-picker-clear), #side-sortables .cmb2-wrap input + select { margin-left: 0; margin-top: 1em; display: block; } /* line 26, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money, #side-sortables .cmb2-wrap input.cmb2-text-money { max-width: 70%; } /* line 28, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description, #side-sortables .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description { display: block; } /* line 34, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap label, #side-sortables .cmb2-wrap label { display: block; font-weight: 700; padding: 0 0 5px; } /* line 42, sass/partials/_sidebar_placements.scss */ .inner-sidebar textarea, #side-sortables textarea { max-width: 99%; } /* line 46, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-group, #side-sortables .cmb-repeatable-group { border-bottom: 1px solid #e9e9e9; } /* line 50, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-group > .cmb-td > .cmb-repeatable-group, #side-sortables .cmb-type-group > .cmb-td > .cmb-repeatable-group { border-bottom: 0; margin-bottom: -1.4em; } /* line 55, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, .inner-sidebar .cmb-td, .inner-sidebar .cmb-th + .cmb-td, #side-sortables .cmb-th, #side-sortables .cmb-td, #side-sortables .cmb-th + .cmb-td { width: 100%; display: block; float: none; } /* line 63, sass/partials/_sidebar_placements.scss */ .inner-sidebar .closed .inside, #side-sortables .closed .inside { display: none; } /* line 67, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-td .cmb-td, #side-sortables .cmb-td .cmb-td { padding-bottom: 1em; } /* line 71, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, #side-sortables .cmb-th { display: block; float: none; padding-bottom: 1em; text-align: left; width: 100%; padding-left: 0; padding-right: 0; } /* line 27, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label:after, #side-sortables .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 14, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { font-size: 14px; line-height: 1.4em; } /* line 78, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb-th, #side-sortables .cmb-group-description .cmb-th { padding-top: 0; } /* line 81, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb2-metabox-description, #side-sortables .cmb-group-description .cmb2-metabox-description { padding: 0; } /* line 88, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-title .cmb-th, #side-sortables .cmb-group-title .cmb-th { padding: 0; } /* line 94, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-grouping + .cmb-repeatable-grouping, #side-sortables .cmb-repeatable-grouping + .cmb-repeatable-grouping { margin-top: 1em; } /* line 103, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-media-status .img-status img, .inner-sidebar .cmb2-media-status .embed-status img, #side-sortables .cmb2-media-status .img-status img, #side-sortables .cmb2-media-status .embed-status img { max-width: 90%; height: auto; } /* line 111, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-list label, #side-sortables .cmb2-list label { display: inline; font-weight: normal; } /* line 116, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-description, #side-sortables .cmb2-metabox-description { display: block; padding: 7px 0 0; } /* line 123, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-checkbox .cmb-td label, .inner-sidebar .cmb-type-checkbox .cmb2-metabox-description, #side-sortables .cmb-type-checkbox .cmb-td label, #side-sortables .cmb-type-checkbox .cmb2-metabox-description { font-weight: normal; display: inline; } /* line 130, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-row .cmb2-metabox-description, #side-sortables .cmb-row .cmb2-metabox-description { padding-bottom: 1.8em; } /* line 134, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-title, #side-sortables .cmb2-metabox-title { font-size: 1.2em; font-style: italic; } /* line 139, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-remove-row, #side-sortables .cmb-remove-row { clear: both; padding-top: 12px; padding-bottom: 0; } /* line 146, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td { width: auto; clear: none; float: left; padding-top: 0; } /* line 151, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row { float: right; margin: 0; } /* line 158, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-upload-button, #side-sortables .cmb2-upload-button { clear: both; margin-top: 12px; } /* line 2, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmb-type-group { max-width: 1000px; } /* line 5, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle { color: #aaa; float: right; width: 27px; height: 30px; cursor: pointer; right: -1em; position: relative; } /* line 13, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle:before { content: '\f142'; right: 12px; font: normal 20px/1 'dashicons'; speak: none; display: inline-block; padding: 8px 10px; top: 0; position: relative; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 30, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .postbox.closed .cmbhandle:before { content: '\f140'; } /* line 36, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row { -webkit-appearance: none !important; background: none !important; border: none !important; position: absolute; left: 0; top: .5em; line-height: 1em; padding: 2px 6px 3px; opacity: .5; } /* line 46, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]) { cursor: pointer; color: #a00; opacity: 1; } /* line 50, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover { color: #f00; } /* * jQuery UI CSS Framework 1.8.16 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * WordPress Styles adopted from "jQuery UI Datepicker CSS for WordPress" * https://github.com/stuttter/wp-datepicker-styling * */ /* line 15, sass/partials/_jquery_ui.scss */ * html .cmb2-element.ui-helper-clearfix { height: 1%; } /* line 24, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { padding: 0; margin: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; background-color: #fff; border: 1px solid #dfdfdf; border-top: none; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); min-width: 17em; width: auto; /* Default Color Scheme */ } /* line 38, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker *, .cmb2-element .ui-datepicker * { padding: 0; font-family: "Open Sans", sans-serif; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } /* line 46, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker table, .cmb2-element .ui-datepicker table { font-size: 13px; margin: 0; border: none; border-collapse: collapse; } /* line 53, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background-image: none; border: none; color: #fff; font-weight: normal; } /* line 61, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: transparent; border-color: transparent; cursor: pointer; } /* line 67, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title, .cmb2-element .ui-datepicker .ui-datepicker-title { margin: 0; padding: 10px 0; color: #fff; font-size: 14px; line-height: 14px; text-align: center; } /* line 75, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title select, .cmb2-element .ui-datepicker .ui-datepicker-title select { margin-top: -8px; margin-bottom: -8px; } /* line 81, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-next { position: relative; top: 0; height: 34px; width: 34px; } /* line 89, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next { border: none; } /* line 94, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-prev-hover, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover { left: 0; } /* line 99, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element.ui-datepicker .ui-datepicker-next-hover, .cmb2-element .ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next-hover { right: 0; } /* line 104, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next span, .cmb2-element.ui-datepicker .ui-datepicker-prev span, .cmb2-element .ui-datepicker .ui-datepicker-next span, .cmb2-element .ui-datepicker .ui-datepicker-prev span { display: none; } /* line 109, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev { float: left; } /* line 113, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next { float: right; } /* line 117, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { font: normal 20px/34px 'dashicons'; padding-left: 7px; color: #fff; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 34px; height: 34px; } /* line 129, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before { content: '\f341'; } /* line 133, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { content: '\f345'; } /* line 137, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element.ui-datepicker .ui-datepicker-next-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-next-hover:before { opacity: 0.7; } /* line 142, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month, .cmb2-element.ui-datepicker select.ui-datepicker-year, .cmb2-element .ui-datepicker select.ui-datepicker-month, .cmb2-element .ui-datepicker select.ui-datepicker-year { width: 33%; background: transparent; border-color: transparent; box-shadow: none; color: #fff; } /* line 149, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month option, .cmb2-element.ui-datepicker select.ui-datepicker-year option, .cmb2-element .ui-datepicker select.ui-datepicker-month option, .cmb2-element .ui-datepicker select.ui-datepicker-year option { color: #333; } /* line 154, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { color: #fff; font-weight: 600; } /* line 157, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead th, .cmb2-element .ui-datepicker thead th { font-weight: normal; } /* line 162, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker th, .cmb2-element .ui-datepicker th { padding: 10px; } /* line 166, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td, .cmb2-element .ui-datepicker td { padding: 0; border: 1px solid #f4f4f4; } /* line 171, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-other-month, .cmb2-element .ui-datepicker td.ui-datepicker-other-month { border: transparent; } /* line 175, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end, .cmb2-element .ui-datepicker td.ui-datepicker-week-end { background-color: #f4f4f4; border: 1px solid #f4f4f4; } /* line 178, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today { -webkit-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); } /* line 185, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-today { background-color: #f0f0c0; } /* line 189, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-current-day, .cmb2-element .ui-datepicker td.ui-datepicker-current-day { background: #bbdd88; } /* line 193, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-default, .cmb2-element .ui-datepicker td .ui-state-default { background: transparent; border: none; text-align: center; text-decoration: none; width: auto; display: block; padding: 5px 10px; font-weight: normal; color: #444; } /* line 205, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default, .cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default { opacity: 0.5; } /* line 210, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 215, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 219, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-hover, .cmb2-element.ui-datepicker td .ui-state-active, .cmb2-element .ui-datepicker td .ui-state-hover, .cmb2-element .ui-datepicker td .ui-state-active { background: #0073aa; color: #fff; } /* line 224, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div, .cmb2-element .ui-datepicker .ui-timepicker-div { font-size: 14px; } /* line 226, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl, .cmb2-element .ui-datepicker .ui-timepicker-div dl { text-align: left; padding: 0 .6em; } /* line 229, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dt, .cmb2-element .ui-datepicker .ui-timepicker-div dl dt { float: left; clear: left; padding: 0 0 0 5px; } /* line 234, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd { margin: 0 10px 10px 40%; } /* line 236, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd select, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd select { width: 100%; } /* line 242, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane { padding: .6em; text-align: left; } /* line 246, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary { padding: 0 10px 1px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; margin: 0 .6em .4em .4em; } /* line 260, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 265, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker thead, .admin-color-fresh .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 269, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover { background: #0073aa; color: #fff; } /* line 277, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header { background: #52accc; } /* line 282, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker thead, .admin-color-blue .cmb2-element .ui-datepicker thead { background: #4796b3; } /* line 291, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active { background: #096484; color: #fff; } /* line 296, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 305, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header { background: #59524c; } /* line 310, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker thead, .admin-color-coffee .cmb2-element .ui-datepicker thead { background: #46403c; } /* line 314, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover { background: #c7a589; color: #fff; } /* line 322, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header { background: #523f6d; } /* line 327, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker thead, .admin-color-ectoplasm .cmb2-element .ui-datepicker thead { background: #413256; } /* line 331, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover { background: #a3b745; color: #fff; } /* line 339, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header { background: #363b3f; } /* line 344, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker thead, .admin-color-midnight .cmb2-element .ui-datepicker thead { background: #26292c; } /* line 348, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover { background: #e14d43; color: #fff; } /* line 356, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header { background: #738e96; } /* line 361, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker thead, .admin-color-ocean .cmb2-element .ui-datepicker thead { background: #627c83; } /* line 365, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover { background: #9ebaa0; color: #fff; } /* line 373, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: #cf4944; } /* line 379, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker th, .admin-color-sunrise .cmb2-element .ui-datepicker th { border-color: #be3631; background: #be3631; } /* line 384, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover { background: #dd823b; color: #fff; } /* line 392, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-light .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header { background: #e5e5e5; } /* line 397, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year { color: #555; } /* line 402, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker thead, .admin-color-light .cmb2-element .ui-datepicker thead { background: #888; } /* line 406, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before { color: #555; } /* line 414, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-active { background: #ccc; } /* line 418, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 426, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header { background: #56b274; } /* line 431, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead { background: #36533f; } /* line 435, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover { background: #446950; color: #fff; } /* line 443, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header { background: #4ca26a; } /* line 448, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker thead, .admin-color-bbp-mint .cmb2-element .ui-datepicker thead { background: #4f6d59; } /* line 452, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover { background: #5fb37c; color: #fff; } /** * CMB2 Frontend */ /* line 1, sass/partials/_front.scss */ .closed .inside { display: none; } /* line 5, sass/partials/_front.scss */ .cmb-repeatable-grouping { position: relative; } /* line 8, sass/partials/_front.scss */ .cmb-repeatable-grouping .cmb-group-title { margin-left: -1em; margin-right: -1em; min-height: 1.5em; } /* line 14, sass/partials/_front.scss */ .cmb-repeatable-grouping h3 { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } /* line 25, sass/partials/_front.scss */ .cmb-repeatable-group.repeatable .cmb-group-title { padding-left: 2.2em; } /* line 29, sass/partials/_front.scss */ .cmb-repeatable-group.non-repeatable .cmb-group-title { padding-left: 12px; } /* line 35, sass/partials/_front.scss */ .cmb-type-group .cmb-row .cmbhandle { right: 0; position: absolute; } /* line 40, sass/partials/_front.scss */ .cmb-spinner { background: url(/wp-admin/images/spinner.gif) no-repeat; -webkit-background-size: 20px 20px; background-size: 20px 20px; display: none; float: right; vertical-align: middle; opacity: 0.7; filter: alpha(opacity=70); width: 20px; height: 20px; margin: 4px 10px 0; } /*# sourceMappingURL=cmb2-front.css.map */ meta/cmb2/css/cmb2-display.css000066600000001273152143340100012105 0ustar00/** * CMB2 Styling */ /** * CMB2 Styling */ /* line 6, sass/partials/_display.scss */ .cmb2-colorpicker-swatch span { display: inline-block; width: 1em; height: 1em; border-radius: 1em; float: left; margin-top: 3px; margin-right: 2px; } /* line 17, sass/partials/_display.scss */ .cmb2-code { overflow: scroll; } /* line 21, sass/partials/_display.scss */ .cmb-image-display { max-width: 100%; height: auto; } /* line 26, sass/partials/_display.scss */ .cmb2-display-file-list li { display: inline; margin: 0 .5em .5em 0; } /* line 31, sass/partials/_display.scss */ .cmb2-oembed * { max-width: 100%; height: auto; } /*# sourceMappingURL=cmb2-display.css.map */ meta/cmb2/css/cmb2-display-rtl.css000066600000001273152143340100012704 0ustar00/** * CMB2 Styling */ /** * CMB2 Styling */ /* line 6, sass/partials/_display.scss */ .cmb2-colorpicker-swatch span { display: inline-block; width: 1em; height: 1em; border-radius: 1em; float: right; margin-top: 3px; margin-left: 2px; } /* line 17, sass/partials/_display.scss */ .cmb2-code { overflow: scroll; } /* line 21, sass/partials/_display.scss */ .cmb-image-display { max-width: 100%; height: auto; } /* line 26, sass/partials/_display.scss */ .cmb2-display-file-list li { display: inline; margin: 0 0 .5em .5em; } /* line 31, sass/partials/_display.scss */ .cmb2-oembed * { max-width: 100%; height: auto; } /*# sourceMappingURL=cmb2-display.css.map */ meta/cmb2/css/cmb2.css.map000066600000034236152143340100011223 0ustar00{ "version": 3, "mappings": "AAAA;;GAEG;ACFH;;gEAEgE;;AAEhE,UAAW;EACV,MAAM,EAAE,CAAC;;;AAET;mBACS;EACR,SAAS,ECEK,IAAI;EDDlB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,GAAG;;;AAMZ,uCAAc;EACb,KAAK,EAAE,IAAI;;;AAIb,mBAAS;EACR,KAAK,EAAE,KAAK;;;AAEZ,sCAAqB;EACpB,WAAW,EChBE,sCAAsC;EDiBnD,WAAW,EAAE,IAAI;;;AAMlB,kEACkB;EACjB,KAAK,EAAE,KAAK;;;AAIb,gCAAkB;EACjB,KAAK,EAAE,IAAI;;;AAIZ,iCAAmB;EAClB,KAAK,EAAE,KAAK;;;AAIb,iCAAmB;EAClB,KAAK,EAAE,GAAG;;;AAGX,0BAAY;EACX,OAAO,EAAE,OAAO;;;AAIhB;;8CAES;EACR,WAAW,EAAE,IAAI;;;AAKpB,aAAG;EACF,MAAM,EAAE,CAAC;;;AAGV,aAAG;EACF,SAAS,EC5DK,IAAI;ED6DlB,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,WAAW;;;AAQpB,iBAAO;EACN,SAAS,ECvEK,IAAI;EDwElB,UAAU,EAAE,GAAG;;;AAGhB;yBACe;EACd,UAAU,ECtEI,OAAO;;;ADyEtB,8BAAoB;EACnB,MAAM,EAAE,SAAS;EACjB,OAAO,EAAE,CAAC;;;AAGX,iCAAuB;EACtB,MAAM,EAAE,SAAS;EACjB,OAAO,EAAE,CAAC;;;AAGX;kBACQ;EACP,WAAW,EAAE,MAAM;;;AAGpB,qBAAW;EACV,MAAM,EAAE,4BAAgC;;;AAGzC,8BAAoB;EACnB,UAAU,EAAE,IAAI;;;AAGjB,oBAAU;EACT,KAAK,EAAE,GAAG;;;AAEV,6BAAS;EACR,KAAK,EAAE,IAAI;;;AAOb;gCACsB;EACrB,cAAc,EAAE,MAAM;;;AAGvB;+BACqB;EACpB,MAAM,EAAE,UAAU;;;AAGnB,mBAAS;EACR,MAAM,EAAE,CAAC;;;AAET,yBAAQ;EACP,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;;AAGZ,kCAAiB;EAChB,OAAO,EAAE,SAAS;;;AAElB,gDAAgB;EACf,OAAO,EAAE,CAAC;;;AAIZ,wDAAuC;EACtC,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,KAAK;;;;AAKxB,aAAc;EACb,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC;;;AAIR;;;gEACQ;EACP,MAAM,EAAE,CAAC;;;AAKV,6DAAqC;EACpC,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,UAAU;EACtB,KAAK,EAAE,IAAI;;;;AAKd,YAAa;EACZ,MAAM,EAAE,SAAS;;;;AAGlB;;mCAEoC;EACnC,MAAM,EAAE,CAAC;;;;AAGV;;kCAEmC;EAClC,aAAa,EAAE,CAAC;;;;AAGjB,wBAAyB;EACxB,MAAM,EAAE,iBAAqB;EAC7B,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,MAAM;;;AACjB,gCAAU;EACT,MAAM,EAAE,SAAS;;;;AAMnB,OAAQ;EACP,KAAK,ECnMU,OAAO;EDoMtB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,GAAG;EAChB,OAAO,EAAE,gBAAgB;EACzB,cAAc,EAAE,GAAG;EACnB,KAAK,EAAE,KAAK;;AAEZ,yBAAkC;;EATnC,OAAQ;IE3MP,SAAS,EAAE,KAAK;IAehB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,cAAc,EAAE,GAAG;IACnB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;;;EAEX,aAAM;IACL,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,GAAG;IACf,cAAc,EAAE,GAAG;;;EAEnB,mBAAQ;IACP,aAAa,EAAE,iBAAqB;IACpC,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;;;;;AF0LpB,OAAQ;EACP,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,SAAS;EAClB,cAAc,EAAE,MAAM;;;;AAKtB,uBAAQ;EACP,OAAO,EAAE,CAAC;;;;AAIZ,aAAc;EACb,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,KAAK;;;;AAGf,iBAAkB;EACjB,KAAK,EAAE,IAAI;;;;AAGZ,eAAgB;EACf,cAAc,EAAE,GAAG;;;;AAGpB,eAAgB;EACf,UAAU,EAAE,KAAK;;;;AAGlB,iBAAkB;EACjB,OAAO,EAAE,IAAI;;;;AAKb,6BAAQ;EACP,OAAO,EAAE,GAAG;;;AAGb,sCAAiB;EAChB,gBAAgB,ECxPF,OAAO;EDyPrB,OAAO,EAAE,kBAAkB;EAC3B,MAAM,EAAE,MAAM;EACd,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;;;AAEhB,yCAAG;EACF,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;EACT,SAAS,EAAE,KAAK;EAChB,WAAW,EAAE,GAAG;EAChB,OAAO,EAAE,YAAY;;;AAGtB,8CAAQ;EACP,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;;AAIb,oDAA+B;EExR/B,SAAS,EAAE,KAAK;EAehB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,cAAc,EAAE,GAAG;EACnB,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;;;AAEX,0DAAM;EACL,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,GAAG;EACf,cAAc,EAAE,GAAG;;;AAEnB,gEAAQ;EACP,aAAa,EAAE,iBAAqB;EACpC,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;;;AF6PnB,qCAAgB;EACf,SAAS,EAAE,GAAG;EACd,YAAY,EAAE,GAAG;EACjB,eAAe,EAAE,IAAI;;;AAErB,gDAAW;EACV,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,KAAK;EACb,WAAW,EAAE,KAAK;EAClB,KAAK,EAAE,GAAG;;;AAEV,0EAA4B;EAC3B,WAAW,EAAE,KAAK;;;AAMrB,yCAAoB;EACnB,KAAK,EAAE,KAAK;;;;AAKd,0BAA2B;EAC1B,KAAK,EC3SU,OAAO;ED4StB,UAAU,EAAE,MAAM;EAClB,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,IAAI;;;;AAGlB,6BAA8B;EAC7B,KAAK,EClTU,OAAO;EDmTtB,UAAU,EAAE,MAAM;;;;AAGnB,mBAAoB;EACnB,MAAM,EAAE,SAAS;EACjB,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;;;;AAGhB,cAAe;EACd,OAAO,EAAE,SAAS;;;;AAGnB,cAAe;EACd,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,IAAI;;;;AAGpB,2BAA4B;EAC3B,MAAM,EAAE,CAAC;;;;AAKT,8BAAY;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM;EACtB,YAAY,EAAE,IAAI;EAClB,KAAK,EAAE,IAAI;;;AAEX,kCAAI;EACH,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,IAAI;;;AAId;gCACc;EACb,UAAU,ECtVI,OAAO;EDuVrB,MAAM,EAAE,iBAAqB;EAC7B,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,GAAG;EACtB,MAAM,EAAE,UAAU;EACnB,OAAO,EAAE,GAAG;;;AAGb,gCAAc;EACb,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;;;AAGjB,gEAA2B;EAC1B,QAAQ,EAAE,QAAQ;;;AAElB,kHAAyB;EACxB,UAAU,EAAE,6BAA6B;EACzC,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,IAAI;EACV,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,OAAO;EACpB,GAAG,EAAE,IAAI;EACT,KAAK,EAAE,IAAI;;;AAOZ,uDAAyB;EACxB,GAAG,EAAE,IAAI;;;AAIX,0EAAqC;EACpC,MAAM,EAAE,OAAO;;;;AAKjB,kDAAmD;EAClD,KAAK,EAAE,IAAI;EACX,cAAc,EAAE,MAAM;EACtB,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,CAAC;;;;AAGd,mBAAoB;EACnB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,IAAI;;;AAEnB,uBAAI;EACH,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,IAAI;;;;AAIpB,oBAAqB;EACpB,MAAM,EAAE,CAAC;;;;AAGV,mBAAoB;EACnB,UAAU,EAAE,IAAI;;;AAGjB,yBAAkC;;EACjC;;mBAEkB;IACjB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;;;AGvbb;;gEAEgE;;AAChE,2BAA4B;EAC3B,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAClB,UAAU,EAAE,KAAK;;;;AAGlB,uCAAwC;EACvC,YAAY,EAAE,KAAK;;;;AAKnB,oDAAW;EACV,MAAM,EAAE,CAAC;;;AAET,8GAA6B;EAC5B,OAAO,EAAE,OAAO;;;AAKhB,8GAAc;EACb,KAAK,EAAE,IAAI;;;AAKd,gDAAS;EACR,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,SAAS;;;AAEjB,sEAAW;EACV,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,QAAQ;;;AAIpB,gFAAyB;EACxB,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,IAAI;EACf,SAAS,EAAE,cAAc;;;AAG1B,gGAAiC;EAChC,cAAc,EAAE,CAAC;;;AAGlB,8CAAQ;EACP,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,QAAQ;;;AAIlB,8CAAQ;EACP,aAAa,EAAE,CAAC;EAChB,OAAO,EAAE,CAAC;EACV,WAAW,EAAE,GAAG;;;AAGjB,8EAAwB;EACvB,cAAc,EAAE,KAAK;;;AAGtB,kEAAkB;EACjB,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,KAAK;;;AAGb;;wDACyC;EACxC,aAAa,EAAE,iBAAqB;;AAEpC,yBAAkC;;EAJnC;;0DACyC;IAIvC,aAAa,EAAE,CAAC;;;;AAIlB;;qCACsB;EACrB,WAAW,EAAE,KAAK;;;AAKjB,4VAA6B;EAC5B,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;;AAEX,waAAmB;EAClB,KAAK,EAAE,IAAI;;;AAGZ,ofAAsC;EACrC,OAAO,EAAE,SAAS;;;AAGnB,4XAAQ;EACP,OAAO,EAAE,UAAU;EACnB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;;;AAGZ,gfAAqC;EACpC,WAAW,EAAE,KAAK;;;AAGnB,wbAAuB;EACtB,aAAa,EAAE,CAAC;;;AC9GrB;;gEAEgE;AAEhE,uCAAuC;;AAIrC,sDAAS;EACR,OAAO,EAAE,OAAO;EAChB,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,uBAAuB;EAC7B,KAAK,EAAE,IAAI;EACX,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,eAAe,EAAE,eAAe;;;AAMhC,6DAAS;EACR,OAAO,EAAE,OAAO;;;;AAOpB,yBAA0B;EAEzB,aAAa,EAAE,IAAI;;;AAEnB,sDAA+B;EAC9B,UAAU,EAAE,IAAI;;;AAGjB,iDAA0B;EACzB,UAAU,EAAE,IAAI;;;AAGjB,kDAA2B;EAC1B,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,CAAC;;;AAGjB,8CAAuB;EAEtB,UAAU,EAAE,IAAI;;;AAEhB,qDAAO;EACN,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,GAAG;;;AAIlB,gCAAO;EACN,MAAM,EAAE,IAAI;;;;AAId,kBAAmB;EAElB,UAAU,EAAE,IAAI;;;AAEhB,6CAA6B;EAC5B,YAAY,EAAE,KAAK;EACnB,KAAK,EAAE,IAAI;;;AAKX,2DAAc;EACb,OAAO,EAAE,IAAI;;;AAIf,0BAAQ;EACP,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAE,GAAG;;;AAGX,0BAAQ;EACP,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,CAAC;;;AAGX,2BAAS;EACR,aAAa,EAAE,IAAI;;;AAEnB,wCAAe;EACd,aAAa,EAAE,CAAC;;;AAMnB,8CAA8C;AAC9C,yCAA0C;;EAEzC,6CAA8C;IAC7C,YAAY,EAAE,CAAC;;;ACvGjB;;gEAEgE;;AAEhE,mCAAoC;EACnC,MAAM,EAAE,CAAC;;;;AAMT;;kCAAoB;EACnB,SAAS,EAAE,KAAK;;;;AAKjB,sCAAoB;EACnB,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,KAAK;;;AACb,mEAA6B;EAC5B,UAAU,EAAE,MAAM;EAClB,aAAa,EAAE,IAAI;;;;AAKrB,0DAAa;EACZ,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;;;;AAGf,YAAa;EACZ,OAAO,EAAE,IAAI;;;AACb,sBAAY;EACX,OAAO,EAAE,KAAK;;;ACnChB;;gEAEgE;;AAO9D;uDAA6B;EAC5B,OAAO,EAAE,OAAO;;;AAKhB;iEAAqC;EACpC,KAAK,EAAE,IAAI;;;AAGZ;;yCAA0C;EACzC,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,GAAG;EACf,OAAO,EAAE,KAAK;;;AAGf;gDAAkB;EACjB,SAAS,EAAE,GAAG;;;AACd;4EAA4B;EAC3B,OAAO,EAAE,KAAK;;;AAKjB;gCAAM;EACL,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,GAAG;EAChB,OAAO,EAAE,OAAO;;;AAKlB;wBAAS;EACR,SAAS,EAAE,GAAG;;;AAGf;qCAAsB;EACrB,aAAa,EAAE,iBAAqB;;;AAGrC;iEAAkD;EACjD,aAAa,EAAE,CAAC;EAChB,aAAa,EAAE,MAAM;;;AAGtB;;;;;iCAEkB;EACjB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;;AAGZ;+BAAgB;EACf,OAAO,EAAE,IAAI;;;AAGd;+BAAgB;EACf,cAAc,EAAE,GAAG;;;AAGpB;uBAAQ;EJlDR,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,cAAc,EAAE,GAAG;EACnB,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;EIgDV,YAAY,EAAE,CAAC;EACf,aAAa,EAAE,CAAC;;;AJ/CjB;6BAAM;EACL,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,GAAG;EACf,cAAc,EAAE,GAAG;;;AAEnB;mCAAQ;EACP,aAAa,EAAE,iBAAqB;EACpC,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;;;AAvBnB;6BAAM;EACL,SAAS,EDHK,IAAI;ECIlB,WAAW,EAAE,KAAK;;;AI8DlB;8CAAQ;EACP,WAAW,EAAE,CAAC;;;AAEf;gEAA0B;EACzB,OAAO,EAAE,CAAC;;;AAMX;wCAAQ;EACP,OAAO,EAAE,CAAC;;;AAKX;mEAA2B;EAC1B,UAAU,EAAE,GAAG;;;AAQf;;;oDAAI;EACH,SAAS,EAAE,GAAG;EAEd,MAAM,EAAE,IAAI;;;AAKf;gCAAiB;EAChB,OAAO,EAAE,MAAM;EACf,WAAW,EAAE,MAAM;;;AAGpB;yCAA0B;EACzB,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,OAAO;;;AAKhB;;;4DAC0B;EACzB,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,MAAM;;;AAIjB;kDAAmC;EAClC,cAAc,EAAE,KAAK;;;AAGtB;mCAAoB;EACnB,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,MAAM;;;AAGnB;+BAAgB;EACf,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,CAAC;;;AAIjB;6DAAQ;EACP,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,CAAC;;;AACd;4EAAiB;EAChB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,CAAC;;;AAKZ;mCAAoB;EACnB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;;;;AC9JjB,6BAAgB;EACf,SAAS,EAAE,MAAM;;;AAElB,wBAAW;EACV,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,KAAK;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,OAAO;EACf,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,QAAQ;;;AAClB,+BAAS;EACR,OAAO,EAAE,OAAO;EAChB,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,yBAAyB;EAC/B,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,QAAQ;EACjB,GAAG,EAAE,CAAC;EACN,QAAQ,EAAE,QAAQ;EAClB,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,eAAe,EAAE,eAAe;;;AAMhC,+CAAS;EACR,OAAO,EAAE,OAAO;;;AAKnB,2EAA8D;EAC7D,kBAAkB,EAAE,eAAe;EACnC,UAAU,EAAE,eAAe;EAC3B,MAAM,EAAE,eAAe;EACvB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,IAAI;EACT,WAAW,EAAE,GAAG;EAChB,OAAO,EAAE,WAAW;EACpB,OAAO,EAAE,EAAE;;;AACX,2FAAkB;EACjB,MAAM,EAAE,OAAO;EACf,KAAK,EN1BQ,IAAI;EM2BjB,OAAO,EAAE,CAAC;;;AACV,iGAAQ;EACP,KAAK,EN9BO,IAAI;;;AOpBpB;;;;;;;;;;;;GAYG;;AAEH,uCAAwC;EACvC,MAAM,EAAC,EAAE;;;;AAQV,yDAA0D;EACzD,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,qBAAqB,EAAE,CAAC;EACxB,kBAAkB,EAAE,CAAC;EACrB,aAAa,EAAE,CAAC;EAChB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,IAAI;EAChB,kBAAkB,EAAE,8BAA8B;EAClD,UAAU,EAAE,8BAA8B;EAC1C,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,IAAI;EA6KX,0BAA0B;;;AA3K1B,6DAAE;EACD,OAAO,EAAE,CAAC;EACV,WAAW,EAAE,uBAAuB;EACpC,qBAAqB,EAAE,CAAC;EACxB,kBAAkB,EAAE,CAAC;EACrB,aAAa,EAAE,CAAC;;;AAGjB,qEAAM;EACL,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,IAAI;EACZ,eAAe,EAAE,QAAQ;;;AAG1B;;kDACsB;EACrB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,MAAM;;;AAGpB,qIAAsC;EACrC,UAAU,EAAE,WAAW;EACvB,YAAY,EAAE,WAAW;EACzB,MAAM,EAAE,OAAO;;;AAGhB,mGAAqB;EACpB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,MAAM;EACf,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;;;AAElB,iHAAO;EACN,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI;;;AAIrB;;gDACoB;EACnB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;;;AAGZ;;+DACmC;EAClC,MAAM,EAAE,IAAI;;;AAGb;;sDAC0B;EACzB,IAAI,EAAE,CAAC;;;AAGR;;sDAC0B;EACzB,KAAK,EAAE,CAAC;;;AAGT;;qDACyB;EACxB,OAAO,EAAE,IAAI;;;AAGd,iGAAoB;EACnB,KAAK,EAAE,IAAI;;;AAGZ,iGAAoB;EACnB,KAAK,EAAE,KAAK;;;AAGb;;uDAC2B;EAC1B,IAAI,EAAE,4BAA4B;EAClC,YAAY,EAAE,GAAG;EACjB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;;;AAGb,+GAA2B;EAC1B,OAAO,EAAE,OAAO;;;AAGjB,+GAA2B;EAC1B,OAAO,EAAE,OAAO;;;AAGjB;;6DACiC;EAChC,OAAO,EAAE,GAAG;;;AAGb;;sDAC0B;EACzB,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,WAAW;EACvB,YAAY,EAAE,WAAW;EACzB,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;;;AACX;;6DAAO;EACN,KAAK,EAAE,IAAI;;;AAIb,qEAAM;EACL,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,GAAG;;;AAChB,2EAAG;EACF,WAAW,EAAE,MAAM;;;AAIrB,+DAAG;EACF,OAAO,EAAE,IAAI;;;AAGd,+DAAG;EACF,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,iBAAkB;;;AAG3B,mHAA6B;EAC5B,MAAM,EAAE,WAAW;;;AAGpB,6GAA0B;EACzB,gBAAgB,EA7JR,OAAO;EA8Jf,MAAM,EAAE,iBAAkB;;;AAC1B,qJAAsB;EACrB,kBAAkB,EAAE,wCAAwC;EAC5D,eAAe,EAAE,wCAAwC;EACzD,UAAU,EAAE,wCAAwC;;;AAItD,uGAAuB;EACtB,gBAAgB,EAAE,OAAO;;;AAG1B,mHAA6B;EAC5B,UAAU,EAAE,OAAO;;;AAGpB,mGAAqB;EACpB,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,MAAM;EAClB,eAAe,EAAE,IAAI;EACrB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,QAAQ;EACjB,WAAW,EAAE,MAAM;EACnB,KAAK,EAAE,IAAI;;;AAGZ,uIAAuC;EACtC,OAAO,EAAE,GAAG;;;AAIb;;kDACsB;EACrB,UAAU,EAhMA,OAAO;;;AAmMlB,qEAAM;EACL,UAAU,EAnMA,OAAO;;;AAsMlB,kMAAwC;EACvC,UAAU,EAtMI,OAAO;EAuMrB,KAAK,EAAE,IAAI;;;AAGZ,+FAAmB;EAClB,SAAS,EAAE,IAAI;;;AACf,qGAAG;EACF,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,MAAM;;;AACf,2GAAG;EACF,KAAK,EAAE,IAAI;EACX,KAAK,EAAC,IAAI;EACV,OAAO,EAAE,SAAS;;;AAEnB,2GAAG;EACF,MAAM,EAAE,eAAe;;;AACvB,yHAAO;EACN,KAAK,EAAE,IAAI;;;AAKd,uJAA4B;EAC3B,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,IAAI;;;AAEhB,oXAAmC;EAClC,OAAO,EAAE,UAAU;EACnB,qBAAqB,EAAE,GAAG;EAC1B,kBAAkB,EAAE,GAAG;EACvB,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,gBAAgB;;;;AAS1B;;qEACsB;EACrB,UAAU,EAlPD,OAAO;;;AAqPjB,2GAAM;EACL,UAAU,EArPD,OAAO;;;AAwPjB,qIAAmB;EAClB,UAAU,EAxPG,OAAO;EAyPpB,KAAK,EAAE,IAAI;;;;AAMZ;;oEACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB,yGAAM;EACL,UAAU,EAAE,OAAO;;;AAQnB,0QAAkC;EACjC,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;;AAGZ,2IAAsB;EACrB,UAAU,EAAE,IAAI;;;;AAQlB;;sEACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB,6GAAM;EACL,UAAU,EAAE,OAAO;;;AAGpB,uIAAmB;EAClB,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;;;AAMZ;;yEACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB,mHAAM;EACL,UAAU,EAAE,OAAO;;;AAGpB,6IAAmB;EAClB,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;;;AAMZ;;wEACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB,iHAAM;EACL,UAAU,EAAE,OAAO;;;AAGpB,2IAAmB;EAClB,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;;;AAMZ;;qEACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB,2GAAM;EACL,UAAU,EAAE,OAAO;;;AAGpB,qIAAmB;EAClB,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;;;AAMZ;;;;uFAEsC;EACrC,UAAU,EAAE,OAAO;;;AAGpB,yGAAG;EACF,YAAY,EAAE,OAAO;EACrB,UAAU,EAAE,OAAO;;;AAGpB,yIAAmB;EAClB,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;;;AAMZ;;qEACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB;;yEAC0B;EACzB,KAAK,EAAE,IAAI;;;AAGZ,2GAAM;EACL,UAAU,EAAE,IAAI;;;AAGjB;;;;;;0EAG2B;EAC1B,KAAK,EAAE,IAAI;;;AAIX,8QAAkC;EACjC,UAAU,EAAE,IAAI;;;AAGjB,6IAAsB;EACrB,UAAU,EAAE,IAAI;;;;AAOlB;;6EACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB,2HAAM;EACL,UAAU,EAAE,OAAO;;;AAGpB,qJAAmB;EAClB,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;;;AAMZ;;wEACsB;EACrB,UAAU,EAAE,OAAO;;;AAGpB,iHAAM;EACL,UAAU,EAAE,OAAO;;;AAGpB,2IAAmB;EAClB,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI", "sources": ["sass/cmb2.scss","sass/partials/_main_wrap.scss","sass/partials/_variables.scss","sass/partials/_mixins.scss","sass/partials/_post_metaboxes.scss","sass/partials/_context_metaboxes.scss","sass/partials/_misc.scss","sass/partials/_sidebar_placements.scss","sass/partials/_collapsible_ui.scss","sass/partials/_jquery_ui.scss"], "names": [], "file": "cmb2.css" } meta/cmb2/css/cmb2-display.css.map000066600000001007152143340100012654 0ustar00{ "version": 3, "mappings": "AAAA;;GAEG;ACFH;;GAEG;;AAGF,6BAAK;EACJ,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,aAAa,EAAE,GAAG;EAClB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,GAAG;EACf,YAAY,EAAE,GAAG;;;;AAInB,UAAW;EACV,QAAQ,EAAE,MAAM;;;;AAGjB,kBAAmB;EAClB,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;;;;AAGb,0BAA2B;EAC1B,OAAO,EAAE,MAAM;EACf,MAAM,EAAE,aAAa;;;;AAGtB,cAAe;EACd,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI", "sources": ["sass/cmb2-display.scss","sass/partials/_display.scss"], "names": [], "file": "cmb2-display.css" } meta/cmb2/css/cmb2-front-rtl.css000066600000141234152143340100012371 0ustar00/** * CMB2 Styling */ /*-------------------------------------------------------------- Main Wrap --------------------------------------------------------------*/ /* line 5, sass/partials/_main_wrap.scss */ .cmb2-wrap { margin: 0; } /* line 8, sass/partials/_main_wrap.scss */ .cmb2-wrap input, .cmb2-wrap textarea { font-size: 14px; max-width: 100%; padding: 5px; } /* line 18, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 23, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea { width: 500px; } /* line 26, sass/partials/_main_wrap.scss */ .cmb2-wrap textarea.cmb2-textarea-code { font-family: "Courier 10 Pitch", Courier, monospace; line-height: 16px; } /* line 34, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-small, .cmb2-wrap input.cmb2-timepicker { width: 100px; } /* line 40, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-money { width: 90px; } /* line 45, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-text-medium { width: 230px; } /* line 50, sass/partials/_main_wrap.scss */ .cmb2-wrap input.cmb2-upload-file { width: 65%; } /* line 54, sass/partials/_main_wrap.scss */ .cmb2-wrap input.ed_button { padding: 2px 4px; } /* line 59, sass/partials/_main_wrap.scss */ .cmb2-wrap input:not([type="hidden"]) + input, .cmb2-wrap input:not([type="hidden"]) + .button, .cmb2-wrap input:not([type="hidden"]) + select { margin-right: 20px; } /* line 67, sass/partials/_main_wrap.scss */ .cmb2-wrap ul { margin: 0; } /* line 71, sass/partials/_main_wrap.scss */ .cmb2-wrap li { font-size: 14px; line-height: 16px; margin: 1px 0 5px 0; } /* line 82, sass/partials/_main_wrap.scss */ .cmb2-wrap select { font-size: 14px; margin-top: 3px; } /* line 87, sass/partials/_main_wrap.scss */ .cmb2-wrap input:focus, .cmb2-wrap textarea:focus { background: #fffff8; } /* line 92, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="radio"] { margin: 0 0 0 5px; padding: 0; } /* line 97, sass/partials/_main_wrap.scss */ .cmb2-wrap input[type="checkbox"] { margin: 0 0 0 5px; padding: 0; } /* line 102, sass/partials/_main_wrap.scss */ .cmb2-wrap button, .cmb2-wrap .button { white-space: nowrap; } /* line 107, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceLayout { border: 1px solid #e9e9e9 !important; } /* line 111, sass/partials/_main_wrap.scss */ .cmb2-wrap .mceIframeContainer { background: #fff; } /* line 115, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce { width: 97%; } /* line 118, sass/partials/_main_wrap.scss */ .cmb2-wrap .meta_mce textarea { width: 100%; } /* line 126, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-input-wrap { vertical-align: middle; } /* line 131, sass/partials/_main_wrap.scss */ .cmb2-wrap .wp-color-result, .cmb2-wrap .wp-picker-container { margin: 0 0 0 10px; } /* line 136, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row { margin: 0; } /* line 139, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row:after { content: ''; clear: both; display: block; width: 100%; } /* line 146, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row { padding: 1.8em 0 0; } /* line 149, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat-row:first-of-type { padding: 0; } /* line 154, sass/partials/_main_wrap.scss */ .cmb2-wrap .cmb-row.cmb-repeat .cmb2-metabox-description { padding-top: 0; padding-bottom: 1.8em; } /* line 161, sass/partials/_main_wrap.scss */ .cmb2-metabox { clear: both; margin: 0; } /* line 167, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox > .cmb-row:first-of-type > .cmb-th, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-td, .cmb2-metabox .cmb-field-list > .cmb-row:first-of-type > .cmb-th { border: 0; } /* line 174, sass/partials/_main_wrap.scss */ .cmb2-metabox > .cmb-row .cmb-repeat-table .cmb-row > .cmb-td { padding-left: 20px; box-sizing: border-box; float: right; } /* line 182, sass/partials/_main_wrap.scss */ .cmb-add-row { margin: 1.8em 0 0; } /* line 186, sass/partials/_main_wrap.scss */ .cmb-nested .cmb-td, .cmb-repeatable-group .cmb-th, .cmb-repeatable-group:first-of-type { border: 0; } /* line 192, sass/partials/_main_wrap.scss */ .cmb-row:last-of-type, .cmb2-wrap .cmb-row:last-of-type, .cmb-repeatable-group:last-of-type { border-bottom: 0; } /* line 198, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping { border: 1px solid #e9e9e9; padding: 0 1em; max-width: 1000px; } /* line 202, sass/partials/_main_wrap.scss */ .cmb-repeatable-grouping.cmb-row { margin: 0 0 0.8em; } /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { color: #222222; float: right; font-weight: 600; line-height: 1.3; padding: 20px 0 20px 10px; vertical-align: top; width: 200px; } @media (max-width: 450px) { /* line 209, sass/partials/_main_wrap.scss */ .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: right; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } } /* line 223, sass/partials/_main_wrap.scss */ .cmb-td { line-height: 1.3; max-width: 100%; padding: 15px 10px; vertical-align: middle; } /* line 232, sass/partials/_main_wrap.scss */ .cmb-type-title .cmb-td { padding: 0; } /* line 237, sass/partials/_main_wrap.scss */ .cmb-th label { display: block; padding: 5px 0; } /* line 242, sass/partials/_main_wrap.scss */ .cmb-th + .cmb-td { float: right; } /* line 246, sass/partials/_main_wrap.scss */ .cmb-td .cmb-td { padding-bottom: 1em; } /* line 250, sass/partials/_main_wrap.scss */ .cmb-remove-row { text-align: left; } /* line 254, sass/partials/_main_wrap.scss */ .empty-row.hidden { display: none; } /* line 260, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-th { padding: 5px; } /* line 264, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title { background-color: #e9e9e9; padding: 8px 2.2em 8px 12px; margin: 0 -1em; min-height: 1.5em; font-size: 14px; line-height: 1.4; } /* line 272, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title h4 { border: 0; margin: 0; font-size: 1.2em; font-weight: 500; padding: 0.5em 0.75em; } /* line 280, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-title .cmb-th { display: block; width: 100%; } /* line 286, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th { font-size: 1.2em; display: block; float: none; padding-bottom: 1em; text-align: right; width: 100%; } /* line 27, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .cmb-repeatable-group .cmb-group-description .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 290, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows { font-size: 1em; margin-left: 1em; text-decoration: none; } /* line 295, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons { font-size: 1.5em; height: 1.5em; line-height: 1.2em; width: 1em; } /* line 301, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb-shift-rows .dashicons.dashicons-arrow-down-alt2 { line-height: 1.3em; } /* line 308, sass/partials/_main_wrap.scss */ .cmb-repeatable-group .cmb2-upload-button { float: left; } /* line 314, sass/partials/_main_wrap.scss */ p.cmb2-metabox-description { color: #aaaaaa; font-style: italic; margin: 0; padding-top: .5em; } /* line 321, sass/partials/_main_wrap.scss */ span.cmb2-metabox-description { color: #aaaaaa; font-style: italic; } /* line 326, sass/partials/_main_wrap.scss */ .cmb2-metabox-title { margin: 0 0 5px 0; padding: 5px 0 0 0; font-size: 14px; } /* line 332, sass/partials/_main_wrap.scss */ .cmb-inline ul { padding: 4px 0 0 0; } /* line 336, sass/partials/_main_wrap.scss */ .cmb-inline li { display: inline-block; padding-left: 18px; } /* line 341, sass/partials/_main_wrap.scss */ .cmb-type-textarea-code pre { margin: 0; } /* line 347, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status { clear: none; display: inline-block; vertical-align: middle; margin-left: 10px; width: auto; } /* line 354, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img { max-width: 350px; height: auto; } /* line 360, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .embed-status { background: #ffffff; border: 1px solid #e9e9e9; border-radius: 2px; -moz-border-radius: 2px; margin: 15px 0 0 0; padding: 5px; } /* line 370, sass/partials/_main_wrap.scss */ .cmb2-media-status .embed-status { float: right; max-width: 800px; } /* line 375, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status, .cmb2-media-status .embed-status { position: relative; } /* line 378, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button, .cmb2-media-status .embed-status .cmb2-remove-file-button { background: url(../images/ico-delete.png); height: 16px; right: -5px; position: absolute; text-indent: -9999px; top: -5px; width: 16px; } /* line 392, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status .cmb2-remove-file-button { top: 10px; } /* line 397, sass/partials/_main_wrap.scss */ .cmb2-media-status .img-status img, .cmb2-media-status .file-status > span { cursor: pointer; } /* line 403, sass/partials/_main_wrap.scss */ .cmb-type-file-list .cmb2-media-status .img-status { clear: none; vertical-align: middle; width: auto; margin-left: 10px; margin-bottom: 10px; margin-top: 0; } /* line 412, sass/partials/_main_wrap.scss */ .cmb-attach-list li { clear: both; display: inline-block; width: 100%; margin-top: 5px; margin-bottom: 10px; } /* line 419, sass/partials/_main_wrap.scss */ .cmb-attach-list li img { cursor: move; float: right; margin-left: 10px; } /* line 426, sass/partials/_main_wrap.scss */ .cmb2-remove-wrapper { margin: 0; } /* line 430, sass/partials/_main_wrap.scss */ .child-cmb2 .cmb-th { text-align: right; } @media (max-width: 450px) { /* line 435, sass/partials/_main_wrap.scss */ .cmb-th, .cmb-td, .cmb-th + .cmb-td { display: block; float: none; width: 100%; } } /*-------------------------------------------------------------- Post Metaboxes --------------------------------------------------------------*/ /* line 4, sass/partials/_post_metaboxes.scss */ #poststuff .cmb-group-title { margin-right: -1em; margin-left: -1em; min-height: 1.5em; } /* line 10, sass/partials/_post_metaboxes.scss */ #poststuff .repeatable .cmb-group-title { padding-right: 2.2em; } /* line 16, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap, .cmb-type-group .cmb2-wrap { margin: 0; } /* line 19, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap > .cmb-field-list > .cmb-row, .cmb-type-group .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.8em 0; } /* line 25, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-wrap input[type=text].cmb2-oembed, .cmb-type-group .cmb2-wrap input[type=text].cmb2-oembed { width: 100%; } /* line 31, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row, .cmb-type-group .cmb-row { padding: 0 0 1.8em; margin: 0 0 0.8em; } /* line 35, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row .cmbhandle, .cmb-type-group .cmb-row .cmbhandle { left: -1em; position: relative; } /* line 41, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-grouping, .cmb-type-group .cmb-repeatable-grouping { padding: 0 1em; max-width: 100%; min-width: 1px !important; } /* line 47, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeatable-group > .cmb-row, .cmb-type-group .cmb-repeatable-group > .cmb-row { padding-bottom: 0; } /* line 51, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th, .cmb-type-group .cmb-th { width: 18%; padding: 0 0 0 2%; } /* line 57, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-td, .cmb-type-group .cmb-td { margin-bottom: 0; padding: 0; line-height: 1.3; } /* line 63, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-row .cmb-td, .cmb-type-group .cmb-repeat-row .cmb-td { padding-bottom: 1.8em; } /* line 67, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-th + .cmb-td, .cmb-type-group .cmb-th + .cmb-td { width: 80%; float: left; } /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 1px solid #e9e9e9; } @media (max-width: 450px) { /* line 72, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-row:not(:last-of-type), .cmb2-postbox .cmb-repeatable-group:not(:last-of-type), .cmb-type-group .cmb-row:not(:last-of-type), .cmb-type-group .cmb-repeatable-group:not(:last-of-type) { border-bottom: 0; } } /* line 81, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb-repeat-group-field, .cmb2-postbox .cmb-remove-field-row, .cmb-type-group .cmb-repeat-group-field, .cmb-type-group .cmb-remove-field-row { padding-top: 1.8em; } /* line 88, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody { display: table; width: 100%; } /* line 92, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody input.regular-text { width: 100%; } /* line 96, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row), .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(.hidden):not(.empty-row) { display: table-row; } /* line 100, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td { display: table-cell; float: none; width: 100%; } /* line 106, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-row:not(:first-of-type) .cmb-td { padding-top: 1.8em; } /* line 110, sass/partials/_post_metaboxes.scss */ .cmb2-postbox .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb2-postbox .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row, .cmb-type-group .cmb2-metabox > .cmb-row .cmb-row.table-layout .cmb-repeat-table .cmb-tbody .cmb-td.cmb-remove-row { padding-left: 0; } /*-------------------------------------------------------------- Context Metaboxes --------------------------------------------------------------*/ /* Metabox collapse arrow indicators */ /* line 9, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box .toggle-indicator:before { content: "\f142"; display: inline-block; font: normal 20px/1 dashicons; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 22, sass/partials/_context_metaboxes.scss */ .js .cmb2-postbox.context-box.closed .toggle-indicator:before { content: "\f140"; } /* line 30, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box { margin-bottom: 10px; } /* line 34, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-before_permalink-box { margin-top: 10px; } /* line 38, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_title-box { margin-top: 10px; } /* line 42, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-after_editor-box { margin-top: 20px; margin-bottom: 0; } /* line 47, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box { margin-top: 10px; } /* line 51, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box.context-form_top-box .hndle { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } /* line 59, sass/partials/_context_metaboxes.scss */ .cmb2-postbox.context-box .hndle { cursor: auto; } /* line 64, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap { margin-top: 10px; } /* line 68, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-left: 300px; width: auto; } /* line 75, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-no-title .cmb2-metabox { padding: 10px; } /* line 80, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-th { padding: 0 0 0 2%; width: 18%; } /* line 85, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-td { width: 80%; padding: 0; } /* line 90, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row { margin-bottom: 10px; } /* line 93, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap .cmb-row:last-of-type { margin-bottom: 0; } /* one column on the post write/edit screen */ @media only screen and (max-width: 850px) { /* line 103, sass/partials/_context_metaboxes.scss */ .cmb2-context-wrap.cmb2-context-wrap-form_top { margin-left: 0; } } /*-------------------------------------------------------------- Misc. --------------------------------------------------------------*/ /* line 5, sass/partials/_misc.scss */ #poststuff .cmb-repeatable-group h2 { margin: 0; } /* line 12, sass/partials/_misc.scss */ .edit-tags-php .cmb2-metabox-title, .profile-php .cmb2-metabox-title, .user-edit-php .cmb2-metabox-title { font-size: 1.4em; } /* line 18, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title { font-size: 1.3em; margin: 1em 0; } /* line 21, sass/partials/_misc.scss */ .cmb2-options-page .cmb2-metabox-title + p.cmb2-metabox-description { margin-top: -1.6em; margin-bottom: .8em; } /* line 28, sass/partials/_misc.scss */ .cmb2-postbox .cmb-spinner, .cmb2-no-box-wrap .cmb-spinner { float: right; display: none; } /* line 33, sass/partials/_misc.scss */ .cmb-spinner { display: none; } /* line 35, sass/partials/_misc.scss */ .cmb-spinner.is-active { display: block; } /*-------------------------------------------------------------- Sidebar Placement Adjustments --------------------------------------------------------------*/ /* line 10, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap > .cmb-field-list > .cmb-row, #side-sortables .cmb2-wrap > .cmb-field-list > .cmb-row { padding: 1.4em 0; } /* line 16, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input[type=text]:not(.wp-color-picker), #side-sortables .cmb2-wrap input[type=text]:not(.wp-color-picker) { width: 100%; } /* line 20, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input + input:not(.wp-picker-clear), .inner-sidebar .cmb2-wrap input + select, #side-sortables .cmb2-wrap input + input:not(.wp-picker-clear), #side-sortables .cmb2-wrap input + select { margin-right: 0; margin-top: 1em; display: block; } /* line 26, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money, #side-sortables .cmb2-wrap input.cmb2-text-money { max-width: 70%; } /* line 28, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description, #side-sortables .cmb2-wrap input.cmb2-text-money + .cmb2-metabox-description { display: block; } /* line 34, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-wrap label, #side-sortables .cmb2-wrap label { display: block; font-weight: 700; padding: 0 0 5px; } /* line 42, sass/partials/_sidebar_placements.scss */ .inner-sidebar textarea, #side-sortables textarea { max-width: 99%; } /* line 46, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-group, #side-sortables .cmb-repeatable-group { border-bottom: 1px solid #e9e9e9; } /* line 50, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-group > .cmb-td > .cmb-repeatable-group, #side-sortables .cmb-type-group > .cmb-td > .cmb-repeatable-group { border-bottom: 0; margin-bottom: -1.4em; } /* line 55, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, .inner-sidebar .cmb-td, .inner-sidebar .cmb-th + .cmb-td, #side-sortables .cmb-th, #side-sortables .cmb-td, #side-sortables .cmb-th + .cmb-td { width: 100%; display: block; float: none; } /* line 63, sass/partials/_sidebar_placements.scss */ .inner-sidebar .closed .inside, #side-sortables .closed .inside { display: none; } /* line 67, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-td .cmb-td, #side-sortables .cmb-td .cmb-td { padding-bottom: 1em; } /* line 71, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-th, #side-sortables .cmb-th { display: block; float: none; padding-bottom: 1em; text-align: right; width: 100%; padding-right: 0; padding-left: 0; } /* line 27, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { display: block; margin-top: 0em; padding-bottom: 5px; } /* line 32, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label:after, #side-sortables .cmb-th label:after { border-bottom: 1px solid #e9e9e9; content: ''; clear: both; display: block; padding-top: .4em; } /* line 14, sass/partials/_mixins.scss */ .inner-sidebar .cmb-th label, #side-sortables .cmb-th label { font-size: 14px; line-height: 1.4em; } /* line 78, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb-th, #side-sortables .cmb-group-description .cmb-th { padding-top: 0; } /* line 81, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-description .cmb2-metabox-description, #side-sortables .cmb-group-description .cmb2-metabox-description { padding: 0; } /* line 88, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-group-title .cmb-th, #side-sortables .cmb-group-title .cmb-th { padding: 0; } /* line 94, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-repeatable-grouping + .cmb-repeatable-grouping, #side-sortables .cmb-repeatable-grouping + .cmb-repeatable-grouping { margin-top: 1em; } /* line 103, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-media-status .img-status img, .inner-sidebar .cmb2-media-status .embed-status img, #side-sortables .cmb2-media-status .img-status img, #side-sortables .cmb2-media-status .embed-status img { max-width: 90%; height: auto; } /* line 111, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-list label, #side-sortables .cmb2-list label { display: inline; font-weight: normal; } /* line 116, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-description, #side-sortables .cmb2-metabox-description { display: block; padding: 7px 0 0; } /* line 123, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-checkbox .cmb-td label, .inner-sidebar .cmb-type-checkbox .cmb2-metabox-description, #side-sortables .cmb-type-checkbox .cmb-td label, #side-sortables .cmb-type-checkbox .cmb2-metabox-description { font-weight: normal; display: inline; } /* line 130, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-row .cmb2-metabox-description, #side-sortables .cmb-row .cmb2-metabox-description { padding-bottom: 1.8em; } /* line 134, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-metabox-title, #side-sortables .cmb2-metabox-title { font-size: 1.2em; font-style: italic; } /* line 139, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-remove-row, #side-sortables .cmb-remove-row { clear: both; padding-top: 12px; padding-bottom: 0; } /* line 146, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td { width: auto; clear: none; float: right; padding-top: 0; } /* line 151, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row, #side-sortables .cmb-type-colorpicker .cmb-repeat-row .cmb-td.cmb-remove-row { float: left; margin: 0; } /* line 158, sass/partials/_sidebar_placements.scss */ .inner-sidebar .cmb2-upload-button, #side-sortables .cmb2-upload-button { clear: both; margin-top: 12px; } /* line 2, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmb-type-group { max-width: 1000px; } /* line 5, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle { color: #aaa; float: left; width: 27px; height: 30px; cursor: pointer; left: -1em; position: relative; } /* line 13, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .cmbhandle:before { content: '\f142'; left: 12px; font: normal 20px/1 'dashicons'; speak: none; display: inline-block; padding: 8px 10px; top: 0; position: relative; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; } /* line 30, sass/partials/_collapsible_ui.scss */ .cmb2-metabox .postbox.closed .cmbhandle:before { content: '\f140'; } /* line 36, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row { -webkit-appearance: none !important; background: none !important; border: none !important; position: absolute; right: 0; top: .5em; line-height: 1em; padding: 2px 6px 3px; opacity: .5; } /* line 46, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]) { cursor: pointer; color: #a00; opacity: 1; } /* line 50, sass/partials/_collapsible_ui.scss */ .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row:not([disabled]):hover { color: #f00; } /* * jQuery UI CSS Framework 1.8.16 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * WordPress Styles adopted from "jQuery UI Datepicker CSS for WordPress" * https://github.com/stuttter/wp-datepicker-styling * */ /* line 15, sass/partials/_jquery_ui.scss */ * html .cmb2-element.ui-helper-clearfix { height: 1%; } /* line 24, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker, .cmb2-element .ui-datepicker { padding: 0; margin: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; background-color: #fff; border: 1px solid #dfdfdf; border-top: none; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); box-shadow: 0 3px 6px rgba(0, 0, 0, 0.075); min-width: 17em; width: auto; /* Default Color Scheme */ } /* line 38, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker *, .cmb2-element .ui-datepicker * { padding: 0; font-family: "Open Sans", sans-serif; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } /* line 46, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker table, .cmb2-element .ui-datepicker table { font-size: 13px; margin: 0; border: none; border-collapse: collapse; } /* line 53, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background-image: none; border: none; color: #fff; font-weight: normal; } /* line 61, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: transparent; border-color: transparent; cursor: pointer; } /* line 67, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title, .cmb2-element .ui-datepicker .ui-datepicker-title { margin: 0; padding: 10px 0; color: #fff; font-size: 14px; line-height: 14px; text-align: center; } /* line 75, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-title select, .cmb2-element .ui-datepicker .ui-datepicker-title select { margin-top: -8px; margin-bottom: -8px; } /* line 81, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-next { position: relative; top: 0; height: 34px; width: 34px; } /* line 89, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-state-hover.ui-datepicker-next, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-state-hover.ui-datepicker-next { border: none; } /* line 94, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element.ui-datepicker .ui-datepicker-prev-hover, .cmb2-element .ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover { right: 0; } /* line 99, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element.ui-datepicker .ui-datepicker-next-hover, .cmb2-element .ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next-hover { left: 0; } /* line 104, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next span, .cmb2-element.ui-datepicker .ui-datepicker-prev span, .cmb2-element .ui-datepicker .ui-datepicker-next span, .cmb2-element .ui-datepicker .ui-datepicker-prev span { display: none; } /* line 109, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev, .cmb2-element .ui-datepicker .ui-datepicker-prev { float: right; } /* line 113, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next, .cmb2-element .ui-datepicker .ui-datepicker-next { float: left; } /* line 117, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { font: normal 20px/34px 'dashicons'; padding-right: 7px; color: #fff; speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 34px; height: 34px; } /* line 129, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .cmb2-element .ui-datepicker .ui-datepicker-prev:before { content: '\f341'; } /* line 133, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-next:before, .cmb2-element .ui-datepicker .ui-datepicker-next:before { content: '\f345'; } /* line 137, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element.ui-datepicker .ui-datepicker-next-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-prev-hover:before, .cmb2-element .ui-datepicker .ui-datepicker-next-hover:before { opacity: 0.7; } /* line 142, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month, .cmb2-element.ui-datepicker select.ui-datepicker-year, .cmb2-element .ui-datepicker select.ui-datepicker-month, .cmb2-element .ui-datepicker select.ui-datepicker-year { width: 33%; background: transparent; border-color: transparent; box-shadow: none; color: #fff; } /* line 149, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker select.ui-datepicker-month option, .cmb2-element.ui-datepicker select.ui-datepicker-year option, .cmb2-element .ui-datepicker select.ui-datepicker-month option, .cmb2-element .ui-datepicker select.ui-datepicker-year option { color: #333; } /* line 154, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { color: #fff; font-weight: 600; } /* line 157, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead th, .cmb2-element .ui-datepicker thead th { font-weight: normal; } /* line 162, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker th, .cmb2-element .ui-datepicker th { padding: 10px; } /* line 166, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td, .cmb2-element .ui-datepicker td { padding: 0; border: 1px solid #f4f4f4; } /* line 171, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-other-month, .cmb2-element .ui-datepicker td.ui-datepicker-other-month { border: transparent; } /* line 175, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end, .cmb2-element .ui-datepicker td.ui-datepicker-week-end { background-color: #f4f4f4; border: 1px solid #f4f4f4; } /* line 178, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-week-end.ui-datepicker-today { -webkit-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); box-shadow: inset 0px 0px 1px 0px rgba(0, 0, 0, 0.1); } /* line 185, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-today, .cmb2-element .ui-datepicker td.ui-datepicker-today { background-color: #f0f0c0; } /* line 189, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-datepicker-current-day, .cmb2-element .ui-datepicker td.ui-datepicker-current-day { background: #bbdd88; } /* line 193, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-default, .cmb2-element .ui-datepicker td .ui-state-default { background: transparent; border: none; text-align: center; text-decoration: none; width: auto; display: block; padding: 5px 10px; font-weight: normal; color: #444; } /* line 205, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td.ui-state-disabled .ui-state-default, .cmb2-element .ui-datepicker td.ui-state-disabled .ui-state-default { opacity: 0.5; } /* line 210, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-widget-header, .cmb2-element.ui-datepicker .ui-datepicker-header, .cmb2-element .ui-datepicker .ui-widget-header, .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 215, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker thead, .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 219, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker td .ui-state-hover, .cmb2-element.ui-datepicker td .ui-state-active, .cmb2-element .ui-datepicker td .ui-state-hover, .cmb2-element .ui-datepicker td .ui-state-active { background: #0073aa; color: #fff; } /* line 224, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div, .cmb2-element .ui-datepicker .ui-timepicker-div { font-size: 14px; } /* line 226, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl, .cmb2-element .ui-datepicker .ui-timepicker-div dl { text-align: right; padding: 0 .6em; } /* line 229, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dt, .cmb2-element .ui-datepicker .ui-timepicker-div dl dt { float: right; clear: right; padding: 0 5px 0 0; } /* line 234, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd { margin: 0 40% 10px 10px; } /* line 236, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div dl dd select, .cmb2-element .ui-datepicker .ui-timepicker-div dl dd select { width: 100%; } /* line 242, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane { padding: .6em; text-align: right; } /* line 246, sass/partials/_jquery_ui.scss */ .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element.ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-primary, .cmb2-element .ui-datepicker .ui-timepicker-div + .ui-datepicker-buttonpane .button-secondary { padding: 0 10px 1px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; margin: 0 .4em .4em .6em; } /* line 260, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-fresh .cmb2-element .ui-datepicker .ui-datepicker-header { background: #00a0d2; } /* line 265, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker thead, .admin-color-fresh .cmb2-element .ui-datepicker thead { background: #32373c; } /* line 269, sass/partials/_jquery_ui.scss */ .admin-color-fresh .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-fresh .cmb2-element .ui-datepicker td .ui-state-hover { background: #0073aa; color: #fff; } /* line 277, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-blue .cmb2-element .ui-datepicker .ui-datepicker-header { background: #52accc; } /* line 282, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker thead, .admin-color-blue .cmb2-element .ui-datepicker thead { background: #4796b3; } /* line 291, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-blue .cmb2-element .ui-datepicker td .ui-state-active { background: #096484; color: #fff; } /* line 296, sass/partials/_jquery_ui.scss */ .admin-color-blue .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-blue .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 305, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-coffee .cmb2-element .ui-datepicker .ui-datepicker-header { background: #59524c; } /* line 310, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker thead, .admin-color-coffee .cmb2-element .ui-datepicker thead { background: #46403c; } /* line 314, sass/partials/_jquery_ui.scss */ .admin-color-coffee .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-coffee .cmb2-element .ui-datepicker td .ui-state-hover { background: #c7a589; color: #fff; } /* line 322, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ectoplasm .cmb2-element .ui-datepicker .ui-datepicker-header { background: #523f6d; } /* line 327, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker thead, .admin-color-ectoplasm .cmb2-element .ui-datepicker thead { background: #413256; } /* line 331, sass/partials/_jquery_ui.scss */ .admin-color-ectoplasm .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ectoplasm .cmb2-element .ui-datepicker td .ui-state-hover { background: #a3b745; color: #fff; } /* line 339, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-midnight .cmb2-element .ui-datepicker .ui-datepicker-header { background: #363b3f; } /* line 344, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker thead, .admin-color-midnight .cmb2-element .ui-datepicker thead { background: #26292c; } /* line 348, sass/partials/_jquery_ui.scss */ .admin-color-midnight .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-midnight .cmb2-element .ui-datepicker td .ui-state-hover { background: #e14d43; color: #fff; } /* line 356, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-ocean .cmb2-element .ui-datepicker .ui-datepicker-header { background: #738e96; } /* line 361, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker thead, .admin-color-ocean .cmb2-element .ui-datepicker thead { background: #627c83; } /* line 365, sass/partials/_jquery_ui.scss */ .admin-color-ocean .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-ocean .cmb2-element .ui-datepicker td .ui-state-hover { background: #9ebaa0; color: #fff; } /* line 373, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element.ui-datepicker .ui-datepicker-header .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header, .admin-color-sunrise .cmb2-element .ui-datepicker .ui-datepicker-header .ui-state-hover { background: #cf4944; } /* line 379, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker th, .admin-color-sunrise .cmb2-element .ui-datepicker th { border-color: #be3631; background: #be3631; } /* line 384, sass/partials/_jquery_ui.scss */ .admin-color-sunrise .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-sunrise .cmb2-element .ui-datepicker td .ui-state-hover { background: #dd823b; color: #fff; } /* line 392, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-light .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-header { background: #e5e5e5; } /* line 397, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element.ui-datepicker select.ui-datepicker-year, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-month, .admin-color-light .cmb2-element .ui-datepicker select.ui-datepicker-year { color: #555; } /* line 402, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker thead, .admin-color-light .cmb2-element .ui-datepicker thead { background: #888; } /* line 406, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element.ui-datepicker .ui-datepicker-next:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-title, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-default, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-prev:before, .admin-color-light .cmb2-element .ui-datepicker .ui-datepicker-next:before { color: #555; } /* line 414, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element.ui-datepicker td .ui-state-active, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-hover, .admin-color-light .cmb2-element .ui-datepicker td .ui-state-active { background: #ccc; } /* line 418, sass/partials/_jquery_ui.scss */ .admin-color-light .cmb2-element.ui-datepicker td.ui-datepicker-today, .admin-color-light .cmb2-element .ui-datepicker td.ui-datepicker-today { background: #eee; } /* line 426, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker .ui-datepicker-header { background: #56b274; } /* line 431, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker thead, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker thead { background: #36533f; } /* line 435, sass/partials/_jquery_ui.scss */ .admin-color-bbp-evergreen .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-evergreen .cmb2-element .ui-datepicker td .ui-state-hover { background: #446950; color: #fff; } /* line 443, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element.ui-datepicker .ui-datepicker-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-widget-header, .admin-color-bbp-mint .cmb2-element .ui-datepicker .ui-datepicker-header { background: #4ca26a; } /* line 448, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker thead, .admin-color-bbp-mint .cmb2-element .ui-datepicker thead { background: #4f6d59; } /* line 452, sass/partials/_jquery_ui.scss */ .admin-color-bbp-mint .cmb2-element.ui-datepicker td .ui-state-hover, .admin-color-bbp-mint .cmb2-element .ui-datepicker td .ui-state-hover { background: #5fb37c; color: #fff; } /** * CMB2 Frontend */ /* line 1, sass/partials/_front.scss */ .closed .inside { display: none; } /* line 5, sass/partials/_front.scss */ .cmb-repeatable-grouping { position: relative; } /* line 8, sass/partials/_front.scss */ .cmb-repeatable-grouping .cmb-group-title { margin-right: -1em; margin-left: -1em; min-height: 1.5em; } /* line 14, sass/partials/_front.scss */ .cmb-repeatable-grouping h3 { font-size: 14px; padding: 8px 12px; margin: 0; line-height: 1.4; } /* line 25, sass/partials/_front.scss */ .cmb-repeatable-group.repeatable .cmb-group-title { padding-right: 2.2em; } /* line 29, sass/partials/_front.scss */ .cmb-repeatable-group.non-repeatable .cmb-group-title { padding-right: 12px; } /* line 35, sass/partials/_front.scss */ .cmb-type-group .cmb-row .cmbhandle { left: 0; position: absolute; } /* line 40, sass/partials/_front.scss */ .cmb-spinner { background: url(/wp-admin/images/spinner.gif) no-repeat; -webkit-background-size: 20px 20px; background-size: 20px 20px; display: none; float: left; vertical-align: middle; opacity: 0.7; filter: alpha(opacity=70); width: 20px; height: 20px; margin: 4px 10px 0; } /*# sourceMappingURL=cmb2-front.css.map */ meta/cmb2/css/index.php000066600000000032152143340100010715 0ustar00 The `pw_map` field stores the latitude/longitude values which you can then use to display a map in your theme. * [CMB2 Field Type: Select2](https://github.com/mustardBees/cmb-field-select2) from [mustardBees](https://github.com/mustardBees): Custom field types which use the [Select2](http://ivaynberg.github.io/select2/) script: > 1. The `pw_select field` acts much like the default select field. However, it adds typeahead-style search allowing you to quickly make a selection from a large list > 2. The `pw_multiselect` field allows you to select multiple values with typeahead-style search. The values can be dragged and dropped to reorder * [CMB Field Type: Slider](https://github.com/qmatt/cmb2-field-slider) from [mattkrupnik](https://github.com/mattkrupnik/): Adds a jQuery UI Slider field. * [WDS CMB2 Date Range Field](https://github.com/WebDevStudios/CMB2-Date-Range-Field) from [dustyf](https://github.com/dustyf) of [WebDevStudios](https://github.com/WebDevStudios): Adds a date range field. * [CMB2 Remote Image Select](https://github.com/WebDevStudios/CMB2-Remote-Image-Select-Field) from [JayWood](https://github.com/JayWood) of [WebDevStudios](https://github.com/WebDevStudios): Allows users to enter a URL in a text field and select a single image for use in post meta. Similar to Facebook's featured image selector. * [CMB Field Type: Sorter](https://wordpress.org/plugins/cmb-field-type-sorter/): This plugin gives you two CMB field types based on the Sorter script. * [CMB Field Type: Tags](https://github.com/florianbeck/cmb2-field-type-tags): WordPress-Tags-like field type for CMB2. _note: this does not set the post tags, but simply provides a unique text input_ * [CMB Field Type: Link Picker](https://wordpress.org/plugins/link-picker-for-cmb2/): Using the Link Picker for CMB2 control, you can choose a link from your WordPress site, or manually enter a link. You can also identify if the link should open in a new window, or not. * [CMB Field Type: MultidatesPicker](https://github.com/origgami/cmb2-multidates-picker): Creates a CMB2 field type that enables a multiple date calendar. It uses a plugin called [MultiDatesPicker v1.6.3 for jQuery UI](http://multidatespickr.sourceforge.net/). * [CMB Field Type: CMB2-radio-image](https://github.com/satwinderrathore/CMB2-radio-image): Image as radio buttons. * [CMB2 Term Select](https://github.com/florianbeck/cmb2-field-type-tags): Special CMB2 Field that allows users to define an autocomplete text field for terms. _Note: this will set the taxonomy terms, but has the option (`'apply_term' => false`) to disable and save the term ids as data instead (like for options pages, etc)._ * [CMB2 Related Links](https://github.com/jtsternberg/CMB2-Related-Links): Allows users to add a related links via a repeating field group. Field inputs are powered by the [CMB2 Field Type: CMB2 Post Search field](https://github.com/WebDevStudios/CMB2-Post-Search-field) documented above, and so each link can be populated with existing WordPress content by clicking on the search button. _Note: this is not a standard field type, but instead a function you use in combination with CMB2::add_field()._ * [CMB Field Type: Order](https://github.com/rubengc/cmb2-field-order): Allows users to define custom order of predefined options. * [CMB Field Type: Animation](https://github.com/rubengc/cmb2-field-animation): Allows users to pickup an animation from [Animate.css](https://github.com/daneden/animate.css) (includes preview of chosen animation). ##### Other Helpful Resources * [WordPress Shortcode Button](https://github.com/jtsternberg/Shortcode_Button): Uses CMB2 fields to generate fields for shortcode input modals. * [WDS-Simple-Page-Builder](https://github.com/WebDevStudios/WDS-Simple-Page-Builder): Uses existing template parts in the currently-active theme to build a customized page with rearrangeable elements. Built with CMB2. * [CMB2 Example Theme](https://github.com/WebDevStudios/CMB2-Example-Theme): Demonstrate how to include CMB2 in your theme, as well as some cool tips and tricks. * [facetwp-cmb2](https://github.com/FacetWP/facetwp-cmb2): FacetWP integration with CMB2. * [CMB2-grid](https://github.com/origgami/CMB2-grid) from [origgami](https://github.com/origgami/): A grid system for WordPress CMB2 library that allows the creation of columns for a better layout in the admin. * [CMB2 Metatabs Options](https://github.com/rogerlos/cmb2-metatabs-options) from [rogerlos](https://github.com/rogerlos/): CMO makes it easy to create options pages with multiple metaboxes--and optional WordPress admin tabs. * [CMB2 Conditionals](https://github.com/jcchavezs/cmb2-conditionals) from [jcchavezs](https://github.com/jcchavezs/): Allows developers to relate fields so the display of one is conditional on the value of another. * [CMB2 Metabox Code Generator](http://willthemoor.github.io/cmb2-metabox-generator/) from [willthemoor](https://github.com/willthemoor/): Skip the boring bits. Use this generator to create fully functional CMB2 metaboxes easily. Now with bulk entry! * [Caldera Metaplate](https://wordpress.org/plugins/caldera-metaplate/) by [CalderaWP](https://calderawp.com/): Not specific to CMB2, but allows creating templates for outputting your custom fields. * [Yoast CMB2 Field Analysis WP Plugin](https://github.com/alexis-magina/yoast-cmb2-field-analysis) by [alexis-magina](https://github.com/alexis-magina): This plugin adds in a js based method of recalculating Yoast SEO's content scores when updating page content, specifically custom meta fields added via the CMB2 library. ### Links * [Project Homepage](http://cmb2.io) * [Github project page](https://github.com/webdevstudios/CMB2) * [Documentation (GitHub wiki)](https://github.com/webdevstudios/CMB2/wiki) [Pluginize](https://pluginize.com/?utm_source=CMB2&utm_medium=text&utm_campaign=wporg) was launched in 2016 by [WebDevStudios](https://webdevstudios.com/) to promote, support, and house all of their [WordPress products](https://pluginize.com/shop/?utm_source=CMB2&utm_medium=text&utm_campaign=wporg). Pluginize is not only creating new products for WordPress all the time, like [CPTUI Extended](https://pluginize.com/product/custom-post-type-ui-extended/?utm_source=cptui&utm_medium=text&utm_campaign=wporg), but also provides [ongoing support and development for WordPress community favorites like CPTUI](https://wordpress.org/plugins/custom-post-type-ui/) and more. **[View CHANGELOG](https://github.com/WebDevStudios/CMB2/blob/master/CHANGELOG.md)** ### Known Issues * Metabox containing WYSIWYG editor cannot be moved or used in a repeatable way at this time (this is a TinyMCE issue). * Not all fields work well in a repeatable group. == Installation == If installing the plugin from wordpress.org: 1. Upload the entire `/CMB2` directory to the `/wp-content/plugins/` directory. 2. Activate CMB2 through the 'Plugins' menu in WordPress. 2. Copy (and rename if desired) `example-functions.php` into to your theme or plugin's directory. 2. Edit to only include the fields you need and rename the functions. 4. Profit. If including the library in your plugin or theme: 1. Place the CMB directory inside of your theme or plugin. 2. Copy (and rename if desired) `example-functions.php` into a folder *above* the CMB directory OR copy the entirety of its contents to your theme's `functions.php` file. 2. Edit to only include the fields you need and rename the functions (CMB directory should be left unedited in order to easily update the library). 4. Profit. == Frequently Asked Questions == FAQ's usually end up in the [github wiki](https://github.com/WebDevStudios/CMB2/wiki). == Changelog == ### 2.2.4 - 2017-02-27 #### Enhancements * Modify `'taxonomy_*'` fields to return stored terms for non-post objects. * Modify `CMB2::get_sanitized_values()` to return the sanitized `'taxonomy_*'` field values. Also added `"cmb2_return_taxonomy_values_{$cmb_id}"` filter to modify if `'taxonomy_*'` field values are returned. Fixes [#538](https://github.com/WebDevStudios/CMB2/issues/538). * Allow outputting CMB2 boxes/fields in additional locations in the post-editor. **The new locations are:** [`form_top`](https://developer.wordpress.org/reference/hooks/edit_form_top/), [`before_permalink`](https://developer.wordpress.org/reference/hooks/edit_form_before_permalink/), [`after_title`](https://developer.wordpress.org/reference/hooks/edit_form_after_title/), and [`after_editor`](https://developer.wordpress.org/reference/hooks/edit_form_after_editor/) These would be defined by setting the `context` property for your box: ```php $cmb_demo = new_cmb2_box( array( ... 'context' => 'before_permalink', ) ); ``` If it is preferred that the fields are output without the metabox, then omit the `'title'` property from the metabox registration array, and instead add ` 'remove_box_wrap' => true,`. Props [@norcross](https://github.com/norcross) ([#836](https://github.com/WebDevStudios/CMB2/pull/836)). * New field parameter, `'render_class'`, allowing you to override the default `'CMB2_Type_Base'` class that is used when rendering the field. This provides interesting object-oriented ways to override default CMB2 behavior by subclassing the default class and overriding methods. The render class can also be overridden with the `"cmb2_render_class_{$fieldtype}"` filter, which is passed the default render class name as well as the `CMB2_Types` object, but this should be used sparingly, and within the context of your project's boxes/fields or you could break other plugins'/themes' CMB2 fields. * Improvements to the `file`/`file_list` fields javascript APIs, including using undersore templates. * Small improvements to the styling for the `file_list` field type. * New action hook, `cmb2_footer_enqueue`, which occurs after CMB2 enqueues its assets. * Example functions clean up. Props [@PavelK27](https://github.com/PavelK27) ([#866](https://github.com/WebDevStudios/CMB2/pull/866)). * New `CMB2_Utils` methods, `get_available_image_sizes()` and `get_named_size()`. Props [@Cai333](https://github.com/Cai333). #### Bug Fixes * Fix datepicker month/year dropdown text color. On windows, the option text was showing as white (invisible). Fixes [#770](https://github.com/WebDevStudios/CMB2/issues/770). * Repeatable WYSIWYG no longer breaks if `'quicktags'` param is set to false. Props [@timburden](https://github.com/timburden) ([#797](https://github.com/WebDevStudios/CMB2/pull/797), [#796](https://github.com/WebDevStudios/CMB2/issues/796)). * Do not process title fields during group field save process. * Fix issue where term-meta values were not being displayed for some users. Props [@sbussetti](https://github.com/sbussetti) ([#763](https://github.com/WebDevStudios/CMB2/pull/763), [#700](https://github.com/WebDevStudios/CMB2/issues/700)). * Fix issue where term meta would not be applied when using the new term form if multiple object types were specified. Props [@ADC07](https://github.com/ADC07) ([#842](https://github.com/WebDevStudios/CMB2/pull/842), [#841](https://github.com/WebDevStudios/CMB2/issues/841)). * Fix WordPress spinner styling when boxes/fields used on the frontend. * Fix issue where clicking to remove a `file_list` item could occasionally remove the field row. ([#828](https://github.com/WebDevStudios/CMB2/pull/828)). * Fix issue where empty file field in group would still cause non-empty values to store to database. ([#721](https://github.com/WebDevStudios/CMB2/issues/721)). * Make `file`/`file_list` field preview images work with named sizes. Props [@Cai333](https://github.com/Cai333) ([#848](https://github.com/WebDevStudios/CMB2/pull/848), [#844](https://github.com/WebDevStudios/CMB2/issues/844)). * Fix incorrect text-domain. ([#798](https://github.com/WebDevStudios/CMB2/issues/798)) * Do not silence notices/errors in `CMB2_Utils::get_file_ext()`. * If `title` field type has no name value, then only output a span element (instead of a header element). ### 2.2.3.1 - 2016-11-08 #### Enhancements * Better styling for disabled group "X" buttons, and add title attr. Fixes [#773](https://github.com/WebDevStudios/CMB2/issues/773). #### Bug Fixes * Use quotes for `label[for=""]` selector. Fixed `Syntax error, unrecognized expression`. Props [@anhskohbo](https://github.com/anhskohbo) ([#789](https://github.com/WebDevStudios/CMB2/pull/789)). * Fix `ReferenceError: tinyMCE is not defined` javascript errors (happening when trying to remove a repeatable field/group). Fixes [#790](https://github.com/WebDevStudios/CMB2/issues/790), and [#730](https://github.com/WebDevStudios/CMB2/issues/730). * Fix REST API `'show_in_rest'` examples in `example-functions.php`. Any REST API boxes/fields must use the `'cmb2_init'` hook (as opposed to the `'cmb2_admin_init'` hook). ### 2.2.3 - 2016-10-25 #### Enhancements * CMB2 REST API! CMB2 now has WP REST API endpoints for displaying your boxes and fields data, as well as registers rest fields in the existing post, user, term, and comment endpoints (in the cmb2 namespace). Enabling the REST API for your boxes/fields is opt-in, meaning it will not be automatically enabled. For more info, [check out the wiki](https://github.com/WebDevStudios/CMB2/wiki/REST-API). * Small string improvement, move a period inside the translatable string. Props [@pedro-mendonca](https://github.com/pedro-mendonca) ([#672](https://github.com/WebDevStudios/CMB2/pull/672)). * Introduce the `'save_field'` boolean field parameter for disabling the saving of a field. Useful if you want to display the value of another field, or use a disabled/read-only field. Props [@jamesgol](https://github.com/jamesgol) ([#674](https://github.com/WebDevStudios/CMB2/pull/674), [#346](https://github.com/WebDevStudios/CMB2/issues/346), [#500](https://github.com/WebDevStudios/CMB2/issues/500)). * Update docblocks for `CMB2_Field::save_field_from_data()` and `CMB2_Field::save_field()`. Props [@jamesgol](https://github.com/jamesgol) ([#675](https://github.com/WebDevStudios/CMB2/pull/675)). * More javascript events tied to the media modal actions (related to the `'file'` and '`file_list'` fields). `'cmb_media_modal_init'`, `'cmb_media_modal_open'`, and `'cmb_media_modal_select'`. * All CMB2 JS events now also get the CMB2 JS object passed in the list of arguments. * CMB2 JS object is now instantiated without stomping existing object, to enable extending. * New field parameter for taxonomy fields, `'remove_default'` which allows disabling the default taxonomy metabox. Props [@c3mdigital](https://github.com/c3mdigital) ([#593](https://github.com/WebDevStudios/CMB2/pull/593)). * Change `'row_classes'` to just `'classes'`, to mirror the metabox `'classes'` property. Also now accepts a `'classes_cb'` parameter for specifying a callback which returns a string or array. The callback will receive `$field_args` as the first argument, and the CMB2_Field `$field` object as the second argument. (`'row_classes'` will continue to work, but is deprecated) * Make wysiwyg editors work in the repeatable groups context. A standard repeatable (non-group) wysiwyg field is not supported (but will possibly be included in a future update). Props [@johnsonpaul1014](https://github.com/johnsonpaul1014) ([#26](https://github.com/WebDevStudios/CMB2/pull/26), [#99](https://github.com/WebDevStudios/CMB2/pull/99), [#260](https://github.com/WebDevStudios/CMB2/pull/260), [#264](https://github.com/WebDevStudios/CMB2/pull/264), [#356](https://github.com/WebDevStudios/CMB2/pull/356), [#431](https://github.com/WebDevStudios/CMB2/pull/431), [#462](https://github.com/WebDevStudios/CMB2/pull/462), [#657](https://github.com/WebDevStudios/CMB2/pull/657), [#693](https://github.com/WebDevStudios/CMB2/pull/693)). * Add an id to the heading tag in the title field. This allows linking to a particular title using the id. * Internationalization improvements. Props [ramiy](https://github.com/ramiy) ([#696](https://github.com/WebDevStudios/CMB2/pull/696)). * Ensure that saving does not happen during a switch-to-blog session, as data would be saved to the wrong object. [See more](https://wordpress.org/support/topic/bug-in-lastest-version?replies=2). * Add `'cmb2_group_wrap_attributes'` filter to modifying the group wrap div's attributes. Filter gets passed an array of attributes and expects the return to be an array. Props [jrfnl](https://github.com/jrfnl) ([#582](https://github.com/WebDevStudios/CMB2/pull/582)). * Update the unit-tests README and inline docs. Props [bobbingwide](https://github.com/bobbingwide) ([#714](https://github.com/WebDevStudios/CMB2/pull/714), [#715](https://github.com/WebDevStudios/CMB2/pull/715)). * Minor update to make naming-conventions consistent. Props [ramiy](https://github.com/ramiy) ([#718](https://github.com/WebDevStudios/CMB2/pull/718)). * Update files to be compatible with PHP7 CodeSniffer standards. Props [ryanshoover](https://github.com/ryanshoover) ([#719](https://github.com/WebDevStudios/CMB2/pull/719), [#720](https://github.com/WebDevStudios/CMB2/pull/720)). * Make exception message translatable. Props [ramiy](https://github.com/ramiy) ([#724](https://github.com/WebDevStudios/CMB2/pull/724)). * Portuguese translation provided by [@alvarogois](https://github.com/alvarogois) and [@pedro-mendonca](https://github.com/pedro-mendonca) - [#709](https://github.com/WebDevStudios/CMB2/pull/709), [#727](https://github.com/WebDevStudios/CMB2/pull/727). * Stop using `$wp_version` global. Props [ramiy](https://github.com/ramiy) ([#731](https://github.com/WebDevStudios/CMB2/pull/731)). * Closures (anonymous functions) are now supported for any box/field `'*_cb'` parameters. E.g. ```php ... 'show_on_cb' => function( $cmb ) { return has_tag( 'cats', $cmb->object_id ); }, ... ``` #### Bug Fixes * If custom field types use a method and the Type object has not been instantiated, Try to guess the Type object and instantiate. * Normalize WordPress root path (`ABSPATH`) and theme rooth path (`get_theme_root()`). Props [@rianbotha](https://github.com/rianbotha) ([#677](https://github.com/WebDevStudios/CMB2/pull/677), [#676](https://github.com/WebDevStudios/CMB2/pull/676)). * Fix issue with `'cmb2_remove_row'` Javascript callback for non-group row removal. Fixes [#729](https://github.com/WebDevStudios/CMB2/pull/729)). * Fix issue with missing assignment of variable (undefined variable). Props [@anhskohbo](https://github.com/anhskohbo) ([#779](https://github.com/WebDevStudios/CMB2/pull/779)). ### 2.2.2.1 - 2016-06-27 #### Bug Fixes * Fix issue that kept CMB2 stylesheet from being enqueued when using the [options-page snippets](https://github.com/WebDevStudios/CMB2-Snippet-Library/tree/master/options-and-settings-pages). * Fix issue which caused the CMB2 column display styles to be enqueued in the wrong pages. Now only enqueues on admin pages with columns. ### 2.2.2 - 2016-06-27 #### Enhancements * You can now set admin post-listing columns with an extra field parameter, `'column' => true,`. If you want to dictate what position the column is, use `'column' => array( 'position' => 2 ),`. If you want to dictate the column title (instead of using the field `'name'` value), use `'column' => array( 'name' => 'My Column' ),`. If you need to specify the column display callback, set the `'display_cb'` parameter to [a callback function](https://github.com/WebDevStudios/CMB2/wiki/Field-Parameters#render_row_cb). Columns work for post (all post-types), comment, user, and term object types. * Updated Datepicker styles using JJJ's "jQuery UI Datepicker CSS for WordPress", so props Props [@stuttter](https://github.com/stuttter), [@johnjamesjacoby](https://github.com/johnjamesjacoby). Also cleaned up the timepicker styles (specifically the buttons) to more closely align with the datepicker and WordPress styles. * CMB2 is now a lot more intelligent about where it is located in your installation. This update should solve almost all of the reasons to use the `'cmb2_meta_box_url'` filter (thought it will continue to work as expected). ([#27](https://github.com/WebDevStudios/CMB2/issues/27), [#118](https://github.com/WebDevStudios/CMB2/issues/118), [#432](https://github.com/WebDevStudios/CMB2/issues/432), [related wiki item](https://github.com/WebDevStudios/CMB2/wiki/Troubleshooting#cmb2-urls-issues)) * Implement CMB2_Ajax as a singleton. Props [jrfnl](https://github.com/jrfnl) ([#602](https://github.com/WebDevStudios/CMB2/pull/602)). * Add `classes` and `classes_cb` CMB2 box params which allows you to add additional classes to the cmb-wrap. The `classes` parameter can take a string or array, and the `classes_cb` takes a callback which returns a string or array. The callback will receive `$cmb` as an argument. These classes are also passed through a new filter, `'cmb2_wrap_classes'`, which receives the array of classes as the first argument, and the CMB2 object as the second. Reported/requested in [#364](https://github.com/WebDevStudios/CMB2/issues/364#issuecomment-213223692). * Make the `'title'` field type accept extra arguments. Props [@vladolaru](https://github.com/vladolaru), [@pixelgrade](https://github.com/pixelgrade) ([#656](https://github.com/WebDevStudios/CMB2/pull/656)). * Updated `cmb2_get_oembed()` function to NOT return the "remove" link, as it's intended for outputting the oembed only. **This is a backwards-compatibility concern.** If you were depending on the "remove" link, use `cmb2_ajax()->get_oembed( $args )` instead. * New function, `cmb2_do_oembed()`', which is hooked to `'cmb2_do_oembed'`, so you can use `do_action( 'cmb2_do_oembed', $args )` in your themes without `function_exists()` checks. * New method, `CMB2:set_prop( $property, $value )`, for setting a CMB2 metabox object property. * The `CMB2_Field` object instances will now have a `cmb_id` property and a `get_cmb` method to enable access to the field's `CMB2` parent object's instance, in places like field callbacks and filters (e.g. `$cmb = $field->get_cmb();`). * Add a `data-fieldtype` attribute to the field rows for simpler identification in Javascript. * Moved each type in `CMB2_Types` to it's own class so that each field type can handle it's own field display, and added the infrastructure to maintainn back-compatibility. * New `CMB2_Utils` methods, `notempty()` and `filter_empty()`, both of which consider `null`, `''` and `false` as empty, but allow `0` (for saving `0` as a field value). * New `CMB2_Utils` public methods, `get_url_from_dir()`, `get_file_ext()`, `get_file_name_from_path()`, and `wp_at_least()`. * Add a `cmb_pre_init` Javascript event to allow overriding CMB2 defaults via JS. #### Bug Fixes * Fix issue with 'default' callback not being applied in all instances. Introduced new `CMB2_Field::get_default()` method, and `'default_cb'` field parameter. Using the `'default'` field parameter with a callback will be deprecated in the next few releases. ([#572](https://github.com/WebDevStudios/CMB2/issues/572)). * Be sure to call `CMB2_Field::row_classes()` for group field rows. Also, update CSS to use the "cmb-type-group" classname instead of "cmb-repeat-group-wrap". * Introduce new `'text'` and `'text_cb'` field parameters for overriding CMB2 text strings instead of using the `'options'` array. ([#630](https://github.com/WebDevStudios/CMB2/pull/630)) * Fix bug where the value of '0' could not be saved in group fields. * Fix bug where a serialized empty array value in the database for a repeatable field would output as "Array". * Allow for optional/empty money field. Props [@jrfnl](https://github.com/jrfnl) ([#577](https://github.com/WebDevStudios/CMB2/pull/577)). * The `CMB2::$updated` parameter (which contains field ids for all fields updated during a save) now also correctly adds group field ids to the array. ### 2.2.1 #### Bug Fixes * Fixes back-compatibility issue which could allow multiple CMB2 instances to load (causing fatal errors). ([#520](https://github.com/WebDevStudios/CMB2/pull/520)) ### 2.2.0 - 2016-02-27 #### Enhancements * Term Meta! As of WordPress 4.4, [WordPress will have the ability to use term metadata](https://make.wordpress.org/core/2015/10/23/4-4-taxonomy-roundup/). CMB2 will work with term meta out of the box. To do so, see the example cmb registration in the `yourprefix_register_taxonomy_metabox` function in [example-functions.php](https://github.com/WebDevStudios/CMB2/blob/master/example-functions.php). * New hooks which hook in after save field action: `'cmb2_save_field'` and `"cmb2_save_field_{$field_id}"`. Props [wpsmith](https://github.com/wpsmith) ([#475](https://github.com/WebDevStudios/CMB2/pull/475)). * The "cmb2_sanitize_{$field_type}" hook now runs for every field type (not just custom types) so you can override the sanitization for all field types via a filter. * `CMB2::show_form()` is now composed of 3 smaller methods, `CMB2::render_form_open()`, `CMB2::render_field()`, `CMB2::render_form_close()` ([#506](https://github.com/WebDevStudios/CMB2/pull/506)). * RTL Style generated. Props [@devinsays](https://github.com/devinsays) ([#510](https://github.com/WebDevStudios/CMB2/pull/510)). * Properly scope date/time-pickers styling by adding a class to only cmb2 picker instances. ([#527](https://github.com/WebDevStudios/CMB2/pull/527)) * Allow per-field overrides for the date/time/color picker options (wiki documentation: [Modify Field Date, Time, or Color Picker options](https://github.com/WebDevStudios/CMB2/wiki/Tips-&-Tricks#modify-field-date-time-or-color-picker-options)) * Fix some inline documentation issues. Props [@jrfnl](https://github.com/jrfnl) ([#579](https://github.com/WebDevStudios/CMB2/pull/579)). * Include `.gitattributes` file for excluding development resources when using Composer. Props [@benoitchantre](https://github.com/benoitchantre) ([#575](https://github.com/WebDevStudios/CMB2/pull/575), [#53](https://github.com/WebDevStudios/CMB2/pull/53)). #### Bug Fixes * Fixed issue with `'taxonomy_select'` field type where a term which evaluated falsey would not be displayed properly. Props [adamcapriola](https://github.com/adamcapriola) ([#477](https://github.com/WebDevStudios/CMB2/pull/477)). * Fix issue with colorpickers not changing when sorting groups. * `'show_option_none'` field parameter now works on taxonomy fields when explicitly setting to false. * Fix so the date/time-picker javascript respects the `'date_format'` and `'time_format'` field parameters. Props [@yivi](https://github.com/yivi) ([#39](https://github.com/WebDevStudios/CMB2/pull/39), [#282](https://github.com/WebDevStudios/CMB2/pull/282), [#300](https://github.com/WebDevStudios/CMB2/pull/300), [#318](https://github.com/WebDevStudios/CMB2/pull/318), [#330](https://github.com/WebDevStudios/CMB2/pull/330), [#446](https://github.com/WebDevStudios/CMB2/pull/446), [#498](https://github.com/WebDevStudios/CMB2/pull/498)). * Fix a sometimes-broken unit test. Props [JPry](https://github.com/JPry) ([#539](https://github.com/WebDevStudios/CMB2/pull/539)). * Fix issue with oembed fields not working correctly on options pages. ([#542](https://github.com/WebDevStudios/CMB2/pull/542)). * Fix issue with repeatable field