if ($respect_expiration) { $args['meta_query'] = $this->ExpirationDate->get_meta_query(); } $banners_query = new WP_Query( $args ); $banner = !empty($banners_query->posts) ? $banners_query->posts[0] : false; return $banner; } function get_banners_by_atts($atts) { $args = array( 'posts_per_page' => $atts['count'], 'orderby' => 'rand', 'post_type'=> 'banner', 'banner_groups' => $atts['group'], 'nopaging' => ($atts['count'] == '-1'), // turn paging off posts_per_page is unlimited 'meta_query' => $this->ExpirationDate->get_meta_query() ); $banners_query = new WP_Query( $args ); $banners = !empty($banners_query->posts) ? $banners_query->posts : array(); return $banners; } function buildBannerHTML($banner, $banner_id, $atts) { if($banner_id == ''){ $banner_id = $banner->ID; } $post_thumbnail_id = get_post_thumbnail_id( $banner_id ); $cta = $this->get_option_value($banner_id, 'cta_text', ''); $target_url = $this->get_option_value($banner_id, 'target_url', '#'); $css_class = $this->get_option_value($banner_id, 'css_class', ''); $use_big_link = isset($atts['link_entire_banner']) ? $atts['link_entire_banner'] : get_option('custom_banners_use_big_link'); $open_in_window = isset($atts['open_link_in_new_window']) ? $atts['open_link_in_new_window'] : get_option('custom_banners_open_link_in_new_window'); $show_captions = isset($atts['show_caption']) ? $atts['show_caption'] : !get_option('custom_banners_never_show_captions', 0); $show_cta_buttons = isset($atts['show_cta_button']) ? ($atts['show_cta_button'] == 1) : !get_option('custom_banners_never_show_cta_buttons', 0); $width = isset($atts['width']) ? $atts['width'] : 'auto'; $height = isset($atts['height']) ? $atts['height'] : 'auto'; $banner_width = isset($atts['banner_width']) ? $atts['banner_width'] : 'auto'; $banner_width_px = !empty($atts['banner_width_px']) && intval($atts['banner_width_px']) > 0 ? intval($atts['banner_width_px']) : ''; $banner_height = isset($atts['banner_height']) ? $atts['banner_height'] : 'auto'; $banner_height_px = !empty($atts['banner_height_px']) && intval($atts['banner_height_px']) > 0 ? intval($atts['banner_height_px']) : ''; $theme = isset($atts['theme']) ? $atts['theme'] : get_option('custom_banners_theme'); $legacy_cta_position = ($theme == 'default_style') ? true : false;//if using the original ("default") theme, order the HTML according to the old style. Otherwise, new style. $slideshow = isset($atts['slideshow']) ? $atts['slideshow'] : false; // filters $target_url = apply_filters('custom_banners_target_url', $target_url, $banner_id); $css_class = apply_filters('custom_banners_banner_class', $css_class, $banner_id); // TODO: add filters for the other attributes // if no CTA is present but a target URL is, then link the entire banner if ( empty($cta) && !empty($target_url) ) { $use_big_link = true; } // placeholder variables $html = ''; $img_html = ''; $banner_style = ''; // add any extra CSS classes to the banner $extra_classes = array($css_class, 'banner-' . $banner_id); if (strlen($cta) > 0) { $extra_classes[] = 'has_cta'; if($legacy_cta_position){ $extra_classes[] = 'legacy_cta_position'; } } if ($atts['caption_position'] == 'left') { $extra_classes[] = 'left'; $extra_classes[] = 'horiz'; } else if ($atts['caption_position'] == 'right') { $extra_classes[] = 'right'; $extra_classes[] = 'horiz'; } else if ($atts['caption_position'] == 'top') { $extra_classes[] = 'top'; $extra_classes[] = 'vert'; } else if ($atts['caption_position'] == 'bottom') { $extra_classes[] = 'bottom'; $extra_classes[] = 'vert'; } //get theme name and theme basename //add both via extra classes $spot = strpos($theme, '-'); if ($spot !== FALSE) { $theme_basename = substr($theme, 0, $spot); $extra_classes[] = sprintf('custom-banners-theme-%s', $theme_basename); } $extra_classes[] = sprintf('custom-banners-theme-%s', $theme); $extra_classes_str = implode(' ', $extra_classes); // we can use either a background image on the banner div, or an tag inside the banner div instead $option_use_image_tag = isset($atts['use_image_tag']) ? $atts['use_image_tag'] : false; // we must force image tags on slideshows, however, or cycle2 wont work in our current configuration if ( !empty($atts['slideshow']) ) { $option_use_image_tag = true; } // load the featured image, of one was specified if ($post_thumbnail_id !== '' && $post_thumbnail_id > 0) { if (!$option_use_image_tag) { $img_src = wp_get_attachment_image_src($post_thumbnail_id, 'full'); $banner_style = "background-image: url('" . $img_src[0] . "');"; $img_html = ''; } else { $img_style = ''; $frame_style = ''; $img_meta = wp_get_attachment_metadata($post_thumbnail_id, 'full'); if ($banner_width == 'specify') { $img_style .= sprintf('width: %spx;', $banner_width_px); } else if ( is_numeric($width) ) { $img_style .= sprintf( 'width: %spx;', $width ); $frame_style .= sprintf( 'width: %spx;', $width ); } else if ( $width == '100_percent' ) { $img_style .= 'width: 100%;'; $frame_style .= 'width: 100%;'; } if ($banner_height == 'specify') { $img_style .= sprintf('height: %spx;', $banner_height_px); } else if ( is_numeric($height) ) { $frame_style .= sprintf( 'height: %spx;', $height ); $img_style .= sprintf( 'height: %spx;', $height ); } if (strlen($img_style) > 0) { $img_atts = array('style' => $img_style); } else { $img_atts = array(); } if ($banner_width == 'specify' && $banner_height == 'specify') { $size = array($banner_width_px, $banner_height_px); } else { $size = 'fullsize'; } // add frame if slideshow $img_html = ''; if ($slideshow && $atts['auto_height']) { $img_html .= sprintf(''; } } } if($atts['hide']){ $banner_display = 'style="display:none; %s"'; } else { $banner_display = 'style="%s"'; } $banner_wrapper_style = sprintf($banner_display, $this->build_banner_wrapper_css($atts)); if($open_in_window){ $link_target = ' target="_blank" '; } else { $link_target = ''; } $banner_style .= $this->build_banner_css($atts); // generate the html now $html .= ''; // // apply a filter to the completed banner HTML $banner_html = apply_filters('custom_banners_banner_html', $html, $banner_id, $atts); // allow the user to inject before and after HTML via filters $before_banner = apply_filters('custom_banners_before_banner', '', $banner_id, $atts); $after_banner = apply_filters('custom_banners_after_banner', '', $banner_id, $atts); // add it all together and return return $before_banner . $banner_html . $after_banner; } function get_banner_caption_html($banner_id, $target_url, $link_target, $cta) { $style_str = apply_filters('custom_banners_cta_button_style', '', $banner_id); return sprintf( '', $target_url, $link_target, $style_str, htmlspecialchars($cta) ); } function add_stylesheets_and_scripts() { $cssUrl = plugins_url( 'assets/css/wp-banners.css' , __FILE__ ); $this->add_stylesheet('wp-banners-css', $cssUrl); //theme stylesheets to admin for theme preview section $this->add_admin_stylesheet('wp-banners-css', $cssUrl); //need to include cycle2 this way, for compatibility with our other plugins $jsUrl = plugins_url( 'assets/js/jquery.cycle2.min.js' , __FILE__ ); $this->add_script('gp_cycle2', $jsUrl, array( 'jquery' ), false, true); //enqueue it again, on the admin side, for use in the theme preview tool $this->add_admin_script('gp_cycle2', $jsUrl, array( 'jquery' ), false, true); $cb_js_url = plugins_url( 'assets/js/custom-banners.js' , __FILE__ ); $this->add_script('custom-banners-js', $cb_js_url, array( 'jquery' ), false, true); } //this is the heading of the new column we're adding to the banner posts list function custom_banners_column_head($defaults) { $defaults = array_slice($defaults, 0, 1, true) + array("cbp_banner_preview" => "Thumbnail") + array_slice($defaults, 1, 1, true) + array("single_shortcode" => "Shortcode") + array_slice($defaults, 2, count($defaults)-2, true); return apply_filters('custom_banners_admin_columns_head', $defaults); } //this content is displayed in the banner post list function custom_banners_columns_content($column_name, $post_ID) { if ($column_name == 'cbp_banner_preview') { $thumb_html = get_the_post_thumbnail( $post_ID, 'post-thumbnail', array('style' => 'max-width: 100px; height: auto') ); printf( '%s', get_edit_post_link($post_ID), $thumb_html ); } else if ($column_name == 'single_shortcode') { $banner_shortcode = get_option("custom_banners_banner_shortcode", 'banner'); $my_shortcode = sprintf('[%s id="%d"]', $banner_shortcode, $post_ID); printf('', $my_shortcode); } do_action('custom_banners_admin_columns_content', $column_name, $post_ID); } //this is the heading of the new column we're adding to the banner category list function custom_banners_cat_column_head($defaults) { $defaults = array_slice($defaults, 0, 2, true) + array("single_shortcode" => "Shortcode") + array_slice($defaults, 2, count($defaults)-2, true); return $defaults; } //this content is displayed in the banner category list function custom_banners_cat_columns_content($value, $column_name, $tax_id) { $category = get_term_by('id', $tax_id, 'banner_groups'); return "[banner group='{$category->slug}']"; } //register any widgets here function custom_banners_register_widgets() { include('lib/widgets/single_banner_widget.php'); include('lib/widgets/rotating_banner_widget.php'); include('lib/widgets/banner_list_widget.php'); register_widget( 'singleBannerWidget' ); register_widget( 'rotatingBannerWidget' ); register_widget( 'bannerListWidget' ); } //add an inline link to the settings page, before the "deactivate" link function add_settings_link_to_plugin_action_links($links) { $settings_link = 'Settings'; array_unshift($links, $settings_link); return $links; } // add inline links to our plugin's description area on the Plugins page function add_custom_links_to_plugin_description($links, $file) { /** Get the plugin file name for reference */ $plugin_file = plugin_basename( __FILE__ ); /** Check if $plugin_file matches the passed $file name */ if ( $file == $plugin_file ) { $new_links['settings_link'] = 'Settings'; $new_links['support_link'] = 'Get Support'; if(!$this->is_pro){ $new_links['upgrade_to_pro'] = 'Upgrade to Pro'; } $links = array_merge( $links, $new_links); } return $links; } /* Displays a meta box with the shortcodes to display the current banner */ function display_shortcodes_meta_box() { global $post; echo "Copy & Paste this shortcode into any post or page to display this banner:
"; $banner_shortcode = get_option("custom_banners_banner_shortcode", 'banner'); $my_shortcode = sprintf('[%s id="%d"]', $banner_shortcode, $post->ID); printf('', $my_shortcode); } function add_meta_boxes(){ add_meta_box( 'banner_shortcodes', 'Shortcodes', array($this, 'display_shortcodes_meta_box'), 'banner', 'side', 'default' ); } /* * Builds a CSS string for the banner wrapper. Primarily controls height and width * * @param $atts Attributes from the shortcode * * @returns string The completed CSS string, with the values inlined */ function build_banner_css($atts) { $option_use_image_tag = isset($atts['use_image_tag']) ? $atts['use_image_tag'] : false; $defaults = array( 'width' => get_option('custom_banners_default_width', ''), 'height' => get_option('custom_banners_default_height', ''), 'banner_width' => 'auto', 'banner_width_px' => '', 'banner_height' => 'auto', 'banner_height_px' => '', ); $atts = array_merge($defaults, $atts); $banner_width = isset($atts['banner_width']) ? $atts['banner_width'] : 'auto'; $banner_width_px = !empty($atts['banner_width_px']) && intval($atts['banner_width_px']) > 0 ? intval($atts['banner_width_px']) : ''; $banner_height = isset($atts['banner_height']) ? $atts['banner_height'] : 'auto'; $banner_height_px = !empty($atts['banner_height_px']) && intval($atts['banner_height_px']) > 0 ? intval($atts['banner_height_px']) : ''; $slideshow = isset($atts['slideshow']) ? $atts['slideshow'] : false; if ( $slideshow ) { $banner_width = 'auto'; $banner_width_px = ''; $banner_height = 'auto'; $banner_height_px = ''; $atts['width'] = ''; $atts['height'] = ''; } if ($banner_width == 'specify') { $atts['width'] = $banner_width_px; } if ($banner_height == 'specify') { $atts['height'] = $banner_height_px; } $css_rule_template = ' %s: %s;'; $output = ''; /* * Width */ $option_val = $atts['width']; if (!empty($option_val) || $banner_width == '100_percent' || $banner_width == 'auto') { if ($banner_width == 'auto' && $option_use_image_tag) { $option_val = 'auto'; $output .= sprintf($css_rule_template, 'width', $option_val); } else if ($banner_width == '100_percent') { $option_val = '100%'; $output .= sprintf($css_rule_template, 'width', $option_val); } else if ( is_numeric($option_val) ) { $option_val .= 'px'; $output .= sprintf($css_rule_template, 'width', $option_val); } } /* * Height */ $option_val = $atts['height']; if (!empty($option_val) || $banner_height == 'auto') { if ($banner_height == 'auto' && $option_use_image_tag) { $option_val = 'auto'; $output .= sprintf($css_rule_template, 'height', $option_val); } else if ( is_numeric($option_val)&& !$option_use_image_tag ) { $option_val .= 'px'; $output .= sprintf($css_rule_template, 'height', $option_val); } } // return the completed CSS string return trim($output); } /* * Builds a CSS string for the slideshow wrapper. Primarily controls height and width * * @param $atts Attributes from the shortcode * * @returns string The completed CSS string, with the values inlined */ function build_slideshow_wrapper_css($atts) { $option_use_image_tag = isset($atts['use_image_tag']) ? $atts['use_image_tag'] : false; $defaults = array( 'width' => get_option('custom_banners_default_width', ''), 'height' => get_option('custom_banners_default_height', ''), 'banner_width' => 'auto', 'banner_width_px' => '', 'banner_height' => 'auto', 'banner_height_px' => '', ); $atts = array_merge($defaults, $atts); $width = isset($atts['width']) ? $atts['width'] : 'auto'; $height = isset($atts['height']) ? $atts['height'] : 'auto'; $banner_width = isset($atts['banner_width']) ? $atts['banner_width'] : 'auto'; $banner_width_px = !empty($atts['banner_width_px']) && intval($atts['banner_width_px']) > 0 ? intval($atts['banner_width_px']) : ''; $banner_height = isset($atts['banner_height']) ? $atts['banner_height'] : 'auto'; $banner_height_px = !empty($atts['banner_height_px']) && intval($atts['banner_height_px']) > 0 ? intval($atts['banner_height_px']) : ''; $slideshow = true; if ($banner_width == 'specify') { $atts['width'] = $banner_width_px; } else if ( is_numeric($width) ) { $atts['width'] = $width; } else if ( $width == '100_percent' ) { $atts['width'] = '100%'; } if ($banner_height == 'specify') { $atts['height'] = $banner_height_px; } else if ( is_numeric($height) ) { $atts['height'] = $height; } $css_rule_template = ' %s: %s;'; $output = ''; /* * Width */ $option_val = $atts['width']; if (!empty($option_val) || $banner_width == '100_percent' || $banner_width == 'auto') { if ($banner_width == 'auto' && $option_use_image_tag) { $option_val = 'auto'; $output .= sprintf($css_rule_template, 'width', $option_val); } else if ($banner_width == '100_percent') { $option_val = '100%'; $output .= sprintf($css_rule_template, 'width', $option_val); } else if ( is_numeric($option_val) ) { $option_val .= 'px'; $output .= sprintf($css_rule_template, 'width', $option_val); } } /* * Height */ $option_val = $atts['height']; if (!empty($option_val) || $banner_height == 'auto') { if ($banner_height == 'auto' && $option_use_image_tag) { $option_val = 'auto'; $output .= sprintf($css_rule_template, 'height', $option_val); } else if ( is_numeric($option_val) ) { $option_val .= 'px'; $output .= sprintf($css_rule_template, 'height', $option_val); } } // return the completed CSS string return trim($output); } /* * Builds a CSS string for the banner itself. Primarily controls height and width * * @param $atts Attributes from the shortcode * * @returns string The completed CSS string, with the values inlined */ function build_banner_wrapper_css($atts) { $defaults = array( 'width' => get_option('custom_banners_default_width', ''), 'height' => get_option('custom_banners_default_height', ''), 'banner_width' => '', 'banner_width_px' => '', 'banner_height' => '', 'banner_height_px' => '', ); $atts = shortcode_atts($defaults, $atts); $banner_width = isset($atts['banner_width']) ? $atts['banner_width'] : ''; $banner_width_px = !empty($atts['banner_width_px']) && intval($atts['banner_width_px']) > 0 ? intval($atts['banner_width_px']) : ''; $banner_height = isset($atts['banner_height']) ? $atts['banner_height'] : ''; $banner_height_px = !empty($atts['banner_height_px']) && intval($atts['banner_height_px']) > 0 ? intval($atts['banner_height_px']) : ''; if ($banner_width == 'specify') { $atts['width'] = $banner_width_px; } if ($banner_height == 'specify') { $atts['height'] = $banner_height_px; } $css_rule_template = ' %s: %s;'; $output = ''; /* * Width */ if ($banner_width != 'auto') { $option_val = $atts['width']; if (!empty($option_val) || $banner_width == '100_percent') { if ($banner_width == '100_percent') { $option_val = '100%'; $output .= sprintf($css_rule_template, 'width', $option_val); } else if ( is_numeric($option_val) ) { $option_val .= 'px'; $output .= sprintf($css_rule_template, 'width', $option_val); } } } /* * Height */ if ($banner_height != 'auto') // TODO: maybe disable this altogether { $option_val = $atts['height']; if (!empty($option_val)) { if ( is_numeric($option_val) ) { $option_val .= 'px'; $output .= sprintf($css_rule_template, 'height', $option_val); } } } // return the completed CSS string return trim($output); } /* * Builds a CSS string for the banner's caption * * @param $atts Attributes from the shortcode * * @returns string The completed CSS string, with the values inlined */ function build_caption_css($atts = array()) { $css_rule_template = ' %s: %s;'; $output = ''; /* * Background Color + Opacity */ $color_val = get_option('custom_banners_caption_background_color', ''); $opacity_val = get_option('custom_banners_caption_background_opacity', ''); if (!empty($color_val)) { // convert the hex string into an "rgba()" string $opacity = !empty($opacity_val) ? ($opacity_val / 100) : 1; $rgba = $this->hex2rgba($color_val, $opacity); $output .= sprintf($css_rule_template, 'background-color', $rgba); } /* * Background Opacity */ if (!empty($option_val)) { $output .= sprintf($css_rule_template, 'opacity', $option_val); } /* * Remove Background image if Background Color / Opacity was specified */ if (!empty($output)) { $output .= sprintf($css_rule_template, 'background-image', 'none'); } // return the completed CSS string return trim($output); } function hex2rgba($color, $opacity = false) { $default = 'rgb(0,0,0)'; //Return default if no color provided if(empty($color)) { return $default; } //Sanitize $color if "#" is provided if ($color[0] == '#' ) { $color = substr( $color, 1 ); } //Check if color has 6 or 3 characters and get values if (strlen($color) == 6) { $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif ( strlen( $color ) == 3 ) { $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); } else { return $default; } //Convert hexadec to rgb $rgb = array_map('hexdec', $hex); //Check if opacity is set(rgba or rgb) if($opacity){ if(abs($opacity) > 1) $opacity = 1.0; $output = 'rgba('.implode(",",$rgb).','.$opacity.')'; } else { $output = 'rgb('.implode(",",$rgb).')'; } //Return rgb(a) color string return $output; } function add_settings_link() { do_action('custom_banners_before_add_settings_link'); $hook_suffix = add_submenu_page( 'edit.php?post_type=banner', 'Settings', 'Settings', 'administrator', 'custom-banners-settings-redirect', array($this, 'settings_link_redirect') ); add_action("load-$hook_suffix", array($this, 'settings_link_redirect')); do_action('custom_banners_after_add_settings_link'); } function settings_link_redirect() { $settings_page_url = admin_url('admin.php?page=custom-banners-settings'); wp_redirect($settings_page_url); exit(); } function add_extra_classes_to_admin_menu() { global $menu; if ( !empty($menu) ) { foreach( $menu as $key => $value ) { if( 'Custom Banners Settings' == $value[0] ) { $extra_classes = 'custom_banners_admin_menu'; $extra_classes .= $this->is_pro ? ' custom_banners_pro_admin_menu' : ' custom_banners_free_admin_menu'; $menu[$key][4] .= ' ' . $extra_classes; } } } } } $ebp = new CustomBannersPlugin(); // Initialize any addons now do_action('custom_banners_bootstrap'); Prieskoniai pavėsinguose balkonuose (II dalis) - Asėja

Prieskoniai pavėsinguose balkonuose (II dalis)

Ne visiems prieskoniams reikalingos karštos dienos ir tiesioginė saulė. Rytiniuose ir vakariniuose balkonuose taip pat galima užsiauginti ne mažiau kvapnių ir mėgiamų žolelių. Pirmiausia reikėtų paminėti visiems labai gerai žinomus ir visų taip mėgiamus krapus, petražoles, česnakus. Šiems prieskoniams tarpti būtinas dalinis pavėsis, trąši žemė ir periodiškai gaunama drėgmė. Tik tuomet augalai užaugs vešlūs, kvapnūs ir bus sodriai žalios spalvos. Krapų ir česnakų keliai, matyt, kadaise buvo nedraugingai susikirtę, todėl pastarieji, gražiai tariant, vienas kito labai nemėgsta, kiek galėdami konkuruoja ir stengiasi nustelbti. Taigi, nedarykite klaidos ir nesodinkite jų kartu, kad ir kaip norėtumėte, draugystė neužsimegs… Nežiūrint ką tik paminėtų niuansų, žolelių trijulė puikiai dera virtuvėje kaip klasikinis prieskonių mišinys.

Pusiau pavėsinguose balkonuose drąsiai auginkite ridikėlius, pipirnes ir žaviąsias nasturtas. Šalia ridikėlių būtinai pastatykite bent vieną petražolių vazonėlį. Ši draugija neabejotinai jus maloniai nustebins! Šalia jau paminėtų augalų tinka auginti agurkles. Jos ne tik skleis šviežių agurkų aromatą, dovanos gardžius jaunučius sultingus lapelius, bet ir džiugins žvaigždes primenančiais mėlynais žiedukais.

Jei jau savo balkone auginsite tiek nuostabių prieskonių, į draugiją priimkite ir kelis agurkų daigelius. Smagu bus nusiskinti savų daržovių. Netoliese ar tame pačiame vazone būtinai auginkite krapus. Tai neišskiriamų draugų duetas!

Augindami tiek augalų galėsite mėgautis gaiviomis salotomis ir paskaninti savo gaminamus patiekalus!

Tiems, kas turi tik šiaurinį balkoną, liūdėti visai neverta. Tiesa, tokioje vietoje auga kiek mažiau prieskoninių augalų, tačiau tik šiauriniame balkone galima auginti vertinguosius Meškinius česnakus! Tiesioginės saulės negaunančioje vietoje kuo puikiausiai tarpsta pipirmėtės. Karštą vasaros dieną nėra nieko gaiviau, kaip vos keliais mėtų lapeliais paskanintas šaltas vanduo. Kadangi minint kiekvieną balkoną buvo pasiūlytas vienas ne prieskoninis augalas, negalima skriausti ir šiaurinėje pusėje esančio balkono. Taigi, šiame balkone visai gerai jausis pasodintos ir auginamos žemuogės. Jos ne tik augs, bet ir pradžiugins savo nedidukėmis raudonomis ar gelsvomis uogomis. Salotoms praturtinti auginkite aštroką skonį turinčius rėžiukus, sultinguosius špinatus. Būtinai pasirūpinkite tinkama dirva. Geriausia, kad ji būtų lengva, puri, drėgmei pralaidi, praturtinta kompostu (šiuo atveju ypač tinka sliekų kompostas).

Žaliuojančių, žydinčių ir kvepiančių balkonų!

 

Ugnė D.

Atgal