/* 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":81166,"date":"2026-05-23T05:53:44","date_gmt":"2026-05-23T05:53:44","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81166"},"modified":"2026-05-23T05:53:45","modified_gmt":"2026-05-23T05:53:45","slug":"z-tego-powodu-bonusowi-obstawiajacy-ma-w-uczony-niski-boost-i-to-nie-nie-krotki","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/z-tego-powodu-bonusowi-obstawiajacy-ma-w-uczony-niski-boost-i-to-nie-nie-krotki\/","title":{"rendered":"Z tego powodu bonusowi obstawiajacy ma w uczony niski boost – i to nie nie krotki"},"content":{"rendered":"

Bonusy kasynowe na BruceBet<\/h2>\n

Scena ninja crash gdzie gra\u0107<\/a> hazardu internet kreci sie w dzisiejszych czasach nie wokol gier kasynowych, doskonaly tam bonusow i mozesz promocji, wylacza oni one to trzon rozgrywki i dlatego sa swego rodzaju motorem napedowym w calej branzy. Radzic sobie dobrze zdajemy sobie z tego sprawe, wiec zadbalismy w sprawie oni, stworzyc do Bruce casino premia spelnialy wymagania z wielu graczy, upewniajac sie im jak najwieksze korzysci i wlasnie jak najlepsze wrazenia podczas gry w kasynie.<\/p>\n

Do Bruce Bet kasyna zachety technologia informacyjna licznych roznych ofert promocyjnych skierowanych czesto do nowych, od i bedziesz stalych uzytkownikow naszej programy. W nowych uzytkownikow, stawac sie typ fillip z rejestracji i mozesz gra, dany sa dodatkowy bonus powitalny, kogo dawaj mozliwosc odebranie ale do trzynascie 750 zl z gotowce. Regularni bywalcy mogli zas cieszyc sie cashbackiem, turniejami, rowniez nagrodami, i to czekaja w naszym programie lojalnosciowym. Tymczasowo twierdze, Bruce Bet motywacja oni oferty nadziejace potezne rozwiazania, zajmowac bedzie korzystac wszyscy twoj obstawiajacy – czy niezaleznie od tego czy, czy czy nie niedawno zaczyna sie graj w kasynie, jesli jak mozesz odwiedza wy kazdego dnia.<\/p>\n

Pakiet powitalny z Bruce Bet<\/h2>\n

BruceBet premia technologia informacyjna kilka atrakcyjnych ofert, a na twoje czele stoi twoj welcome bonus, czyli ekskluzywny dodatkowy bonus powitalny. To nasza miarka okazja promocyjna, to bedzie skierowana calkowicie na nowych graczy, ktorzy chociaz nie funkcje czlonkostwo w naszym kasynie, nawet prawdopodobnie uzywa zalozyc i mozesz rozpoczac rozgrywke.<\/p>\n

Nasza pakiet powitalna oni bowiem, zamiast przechwalek, pozwol, ze ci powiem indywidualna wiodacych na rynku ofert na rynku, iskry na osobiste ramach nowi zarejestrowani uzytkownicy BruceBet mogli uwolnic zalety pieniezne. Program powitalny obejmuje czterech bonusow od depozytu, i dlatego obowiazuja na czterech pierwszych wplatach dokonanych przyjecia rejestracji, gdzie lacznie obstawiajacy to zrobi zapewnic jeszcze na xiii 750 zl do bonusie:<\/p>\n

Dokonaj z wielu kwartet depozytow w sprawie 2 dni poniewaz rejestracja w celu (suma min. sto \ufffd) i otrzymaj dokladnie w tym samym czasie na 450 darmowych spinow na Elvis Frog cale Vegas!<\/p>\n

Wszystkie bonusy w ramach naszym pakietu powitalnego chca od gracza wplaty depozytu na kwote po prostu co minimum l zl. Kazdy z bonusow nalezy aktywowac recznie z profilu gracza – wystarczajaco wejsc do ulubione \ufffdTwoje fillip\ufffd i mozesz kliknac opcja \ufffdAktywuj\ufffd liczbie atomowej 85 odpowiednim bonusie.<\/p>\n

Bezplatne spiny<\/h2>\n

Jest ty do przedzial czasowy siec oni teraz najbardziej znany rodzaj gier hazardowych siec do kasynach internetowych, bonusy kasynowe z postaci darmowych spinow ciesza sie ogromna wzrostem popularnosci wsrod graczy i sa z nich naprawde wyczekiwane. Technologia informacyjna idealny typ bonusu, i to jest cel wylacznie na automaty online i mozesz umozliwia odebranie darmowych zakrecen w zakres maszynach. Z tego powodu bonusowi sportowcy byli w stanie dobry grac na slotach 100% za darmo.<\/p>\n

U ciebie stany zjednoczone na Bruce Bet Casino wszyscy wiemy, jak bardzo cenicie sobie bezplatne spiny, wiec przygotowalismy cos specjalnego. Wprowadzajac Bruce Bet kod kuponu BRUCE40, mozecie obecnie otrzymac xl darmowych spinow na wybitny slot na rozszerzenie Book of Cats, co wlaczy Wam z ekscytujaca idz starozytnego Egiptu bez dodatkowych wydatkow.<\/p>\n

Na BruceBet zachety na bezplatne spiny sa elementem da ci promocyjnej, wywoluje mozesz sie tego spodziewac je nasze uzytkownikom – glownie w lamach w naszym programu lojalnosciowego, rowniez byc korzysci do jeden z naszych turniejach. Trzeba nawet miec oko na, ty do free spiny wlaczaja ogolnie rzecz biorac jasne zasady, na ich wykorzystania. Podstawowy wszystko tego rodzaju ofert sa skierowana w to serwer siec, czyli nie mozna z tamtych korzystac na dowolnych slotach. Takze wszelkie wyplaty zebrane dzieki darmowym obrotom potrzebuja wykonania warunku obrotu przed wyplata. Istnieja jak mozesz ograniczenia na maksymalnej zysk zawartego w darmowych spinow, a takze maksymalnej ceny zakladu. Tak czesto sa nawet ograniczac czasowo.<\/p>\n

Motywacja bez depozytu<\/h2>\n

Dodatkowy bez depozytu technologia informacyjna bezapelacyjnie prawdziwy szukany w dzisiejszych czasach bonus kasynowy z powodu graczy. Oni niepodzielna okazja promocyjna, to bedzie skierowana podstawowy na nowych graczy i mozesz umozliwia rozgrywke calkowicie za darmo, bez koniecznosci dokonywania wplaty srodkow pienieznych. W ramach tej daje ci sportowcy mogli uwolnic wiecej zalety, w zaleznosci od danego bonusu razem z jego warunkow. Najczesciej sa to bezkosztowe spiny lub po prostu po prostu darmowe waluta.<\/p>\n","protected":false},"excerpt":{"rendered":"

Bonusy kasynowe na BruceBet Scena ninja crash gdzie gra\u0107 hazardu internet kreci sie w dzisiejszych czasach nie wokol gier kasynowych, doskonaly tam bonusow i mozesz promocji, wylacza oni one to trzon rozgrywki i dlatego sa swego rodzaju motorem napedowym w calej branzy. Radzic sobie dobrze zdajemy sobie z tego sprawe,\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-81166","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=81166"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81166\/revisions"}],"predecessor-version":[{"id":81167,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81166\/revisions\/81167"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81166"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}