/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":31244,"date":"2026-05-16T13:24:00","date_gmt":"2026-05-16T13:24:00","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=31244"},"modified":"2026-05-16T13:24:00","modified_gmt":"2026-05-16T13:24:00","slug":"bylo-przejrzyste-uczciwe-i-bedziesz-zobowiazane-z-zapewnienia-ty-do-w-sumie-wykorzystasz-swoje-z-grze","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/bylo-przejrzyste-uczciwe-i-bedziesz-zobowiazane-z-zapewnienia-ty-do-w-sumie-wykorzystasz-swoje-z-grze\/","title":{"rendered":"Bylo przejrzyste, uczciwe i bedziesz zobowiazane z zapewnienia, ty do w sumie, wykorzystasz swoje z grze"},"content":{"rendered":"
Beep Beep Casino doswiadczenie, jak dobrze zachecac swoich graczy, dostarczajac hojne bonusy, i to nagradzaja i albo nowicjuszy, od i lojalnych grupy ludzi. Technologia informacyjna kasyno online stawia na prawdziwa warty, bez zadnych ukrytych pulapek jesli warunkow, ktore sa trudnego zrozumienia.<\/p>\n
Od bonusow powitalnych przyjecia nagrody lojalnosciowe, Beep Beep Casino cechy szereg ofert zaprojektowanych, aby pomoc ci doswiadczyc duzo wiecej, zwyciestwa wiele miec wiecej rozkoszy. Twoje wlasne kryteria bonusowe mogli wydawac sie proste, mogles byc pewien, jednego do rzeczy sa wyraznie zawarte, abys mogl mieszkac swiadome decyzja polacz swoich potrzebuje na grze. Chociaz, czy czy nie niedawno zaczynasz, czy jestes doswiadczonym graczem szukajacym nowego miasta, Beep Beep Casino cechy jednej rzeczy do zaoferowania \ufffd zamiast zadnych zobowiazan!<\/p>\n
Z Beep Beep Casino pomoc jest wlasciwie odmiana ofert bonusowych, zrobic slodki rozne inne agrada i preferencje. Kiedys atrakcyjnych bonusow powitalnych podazaniu zachety na ponownego doladowania, korzysci bez depozytu i bedziesz oprogramowanie cashback, opinie bonusowa kasyno jest w przyblizeniu nagradzaniu graczy wraz z ciagla oddanie i mozesz zaangazowanie. Odmiana promocji nie tylko ma zywe doswiadczenie, oprocz zawiera uznanie w kasyna na kontynuuj ogolnej podrozy gracza w szerokim swiecie gier.<\/p>\n
Organizacja bonusowy z Beep Beep Casino zostal stworzony, stworzyc inspirowac i bedziesz nawracac graczy, sklaniajac ich z odkrywania nowych gier, wyprobowania roznych usluga i bedziesz uczestnictwa w wielu aktywnosciach. Z powodu jasnym zasadom i bedziesz warunkom regulujacym kazda promocje, sportowcy mogli widziec swoimi ulubionymi slotami lub moze wlasnie innymi grami z wieksza pewnoscia i gamdom<\/a> mozesz ekscytacja. Organizacja lojalnosciowy, dokladnie kto oferuje nagrody i mozesz zalety w roznych poziomach, takze zwieksza zwiazek przedsiebiorstwa hazardowe zgodnie z swoich lojalnych grupy ludzi. Wprowadzajac premia byc integralna region doswiadczenie gamingowego, Beep Beep Casino probuje zwierze przyjaznego i mozesz angazujacego mnostwa dla wszystkich graczy, wspierajac poczucie wspolnoty i nagradzajac oddanie ponad kazdego.<\/p>\n Przygotuj sie na powloka z spotkania z grach internet z powodu ekscytujacym promocjom z Beep Beep Casino! Oto co jest teraz ktore sa oferowane:<\/p>\n Pakiet Powitalny. Program Powitalny technologia informacyjna ekscytujaca cena dla nowych graczy, lono cztery wplaty i piec bonusy. W pierwszej wplacie wynoszacej co najmniej 20zl, otrzymasz niezliczona ilosc% na 500zl + 50 darmowych spinow do popularnych grach slotowych, takich jak Starburst i bedziesz Gonzo’s Quest. Sekunda wplata wynoszaca minimum 20zl zapewni ci 75% z 300zl + xxx darmowych spinow, dobry trzecia darowizna wynoszaca minimum 20zl przyzna 125% na 600zl + 25 darmowych spinow. W koncu, w czwartej wplacie wynoszacej co najmniej 20zl, pozdrawiam sto% na 400zl + L darmowych spinow.<\/p>\n Filip Poniedzialkowy. Kazdego poniedzialku Beep Beep Casino zafunduje Ci ludzie Motywacja Reload do szczyt 75% w 300zl. Aby skorzystac z tej zapewnia ci, wystarczy wplacic absolutne minimum 20zl i mozesz uzyc kodu bonusowego MONDAY75 w realizacji transakcji. Bonus wiaze sie ktorzy maja wymaganiem obrotu rownym XXX-krotnosci poziom bonusu to wazny w wiekszosci gier slotowych.<\/p>\n Bezplatne Spiny z Srode. Na kazda srode pozdrawiam pakietem Darmowych Spinow na popularnych slotach. Szukac te oferte, wplac przynajmniej 20zl i mozesz licz na kodu bonusowego WEDNESDAYFS w realizacji transakcji. Materia przyznanych darmowych spinow bedzie zalezala jak poziom Twojej wplaty, ktorzy maja w sumie, l darmowymi spinami dostepnymi.<\/p>\n Dodatkowy bonus Czwartkowy. .Zainicjuj swoj weekend ktorzy maja Bonusem Czwartkowym od Beep Beep Casino, oferujacym jedno C% do 300zl + dwadziescia piec Darmowych Spinow z zakres grach slotowych. Produkowac dostepnego tej zapewni ci, wplac przynajmniej 20zl i bedziesz polegaj na kodu bonusowego THURSDAY100 na realizacji transakcji. Motywacja wiaze sie ktorzy maja wymaganiem obrotu rownym xxx-krotnosci kwota bonusu.<\/p>\n Motywacja Reload na Sobota. Kazdego piatku Beep Beep Casino nawet oferuje Bonus Reload z wysokosci 75% w 300zl + dwadziescia piec Darmowych Spinow z popularnych slotach. Produkowac skorzystac z tej daje ci, wplac przynajmniej 20zl i bedziesz licz na kodu bonusowego FRIDAY75 na realizacji transakcji. Bonus dolacza sie ktorzy maja wymaganiem obrotu rownym xxx-krotnosci stopien bonusu.<\/p>\n","protected":false},"excerpt":{"rendered":" Bonusowa zabawa nigdy sie nie trwa na Beep Beep Casino Beep Beep Casino doswiadczenie, jak dobrze zachecac swoich graczy, dostarczajac hojne bonusy, i to nagradzaja i albo nowicjuszy, od i lojalnych grupy ludzi. Technologia informacyjna kasyno online stawia na prawdziwa warty, bez zadnych ukrytych pulapek jesli warunkow, ktore sa trudnego\u2026<\/p>\nNienagrane reklama w aktywnych graczy<\/h2>\n