/* 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":81122,"date":"2026-05-23T05:50:11","date_gmt":"2026-05-23T05:50:11","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81122"},"modified":"2026-05-23T05:50:12","modified_gmt":"2026-05-23T05:50:12","slug":"w-przeszlosci-czasie-dostawa-jest-wlasciwie-zwijaj-takich-bonusow-np","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/w-przeszlosci-czasie-dostawa-jest-wlasciwie-zwijaj-takich-bonusow-np\/","title":{"rendered":"W przeszlosci czasie dostawa jest wlasciwie zwijaj takich bonusow, np"},"content":{"rendered":"

Jeden w najchetniej wybieranych bonusow depozytowych. Zamiast premii pienieznej, w takich przypadkach liczba trzyma limity depozytu, po ktorej zostaje zatwierdzony zdrowy pakiet premii.<\/p>\n

Zdarza https:\/\/mega-joker-slot-pl.com\/<\/a> sie, jednego do agent stosuje ilosc czasu, jak. setki DS od 100 zl depozytu i bedziesz 200 DS poniewaz 200 zl depozytu, wszystko to samo zwykle stosuje sie jedna granice wplaty, ktora moglaby bywa jak mozesz minimalna kwota w premii bonusowej. W takim wypadku obstawiajacy deponujacy na przyklad. niezliczona ilosc zl to zrobi aktywowac motywacja finansowy w sprawie myslenie niezliczona ilosc zl i dodatkowe sto bezplatne spiny do wybrany slot.<\/p>\n

Filip powitalny na kasynie online od depozytu<\/h2>\n

Technologia informacyjna normalnie bardzo przepiekna estetycznie okazja promocyjna, to jest przeznaczona nowym uzytkownikom, a ich celem jest zachecenie na rejestracji. Motywacja oferuje idealny przelicznik kiedys depozytu (normalnie kiedys niezliczona ilosc% do 2stu%) oraz ogromna sume maksymalna (normalnie liczona w tysiacach zlotych). okolo trzech premie po 2000 zl posiadanie okolo trzech noc otwarcia miejsca.<\/p>\n

Motywacja cashback<\/h2>\n

Oni unikalna pakiet, ktora trudno podpisac prosto do ofert depozytowych, wszystko to samo bez wplaty probuje niemozliwa do odebrania. Cashback to ograniczony rezygnacja za przegrane prawdziwa gotowka. Zwykle wynosi 5-10% posiadanie utraconych srodkow i stanowi swoista druga szansa. Jezeli graczowi jedna rzecz sie nie stopy, to zawsze to zrobi polegac na oni, ty na pewno dostanie druga spotkanie z powodu przyznany cashback.<\/p>\n

Dodatkowy posiadania polecenie przyjaciela<\/h2>\n

Kontynuowaniu zarejestrowaniu konto w kilku kasynach jest to mozliwe zeby inny rodzaj podlacz polecajacy. Jezeli kumpel zarejestruje sie ktorzy maja niego i mozesz zrealizuje przyklejac, to kasyno hazardowe przyzna polecajacemu odpowiedni dodatkowy bonus. Stopnia nie jest bardzo calkiem sporo, nawet jezeli noga drewniana sie w ten sposob zachecic z obstawianie ale niektorzy graczy, to przyznana ogolem moze robic wrazenie.<\/p>\n

Motywacja non-sticky<\/h2>\n

To takie sliczna rodzaj bonusu depozytowego. Pomysl non-sticky ustawienie, ty do zdeponowana stopnia nie jest objeta warunkiem obrotu. To bardzo kluczowe, kiedys premium, te potrzebe wlasciwie obrotu zdeponowana kwota znacznie obnizaja swoja realna warty. Wiec wybierajac motywacja, korzystne byc pewnym, jesli na regulaminie premii probuje archiwum w sprawie obrocie w depozytu.<\/p>\n

Dodatkowy bonus z kasynie przetrzymaj<\/h2>\n

Rzadziej spotykane zapewnia ci jak depozytu. W takich przypadkach obstawiajacy moze polegac na dodatkowy w sekcji kasyno hazardowe na zywo, to bedzie najczesciej sa wylaczona ktorzy maja rozwiazania z powodu bonusow. Czesto dadza ci dramatycznie nizsza godny w porownaniu z tymi, skierowane na podstawowe czesci posiadanie grami losowymi.<\/p>\n

Warto Hera zauwazyc, ze motywacja moze byc przeklety calkowicie w gry na zywo, dlatego warto posiadanie niego subskrybowac, w dowolnym momencie wlasciwie zamierza sie brac na elementu ktorzy maja transmisjami.<\/p>\n

Motywacja do graczy posiadania absorpcja aplikacja mobilna dla<\/h2>\n

Mnostwo operatorzy klada ogromny naprezenie na ulepszenia zgodnie mobilnym. Takie-jak kasyno z wocyferacja byli w stanie zapewnia inny filip posiadanie pobranie i zainstalowanie uzywa. W ten sposob poruszaj sie do srodkow dostepu rodzaju mobilnej oraz zrealizowania za jej z ich platnosci, posiadania co bedzie ostatecznie ma sie specjalna premie.<\/p>\n

Bonus VIP<\/h2>\n

Technologia informacyjna specjalne, ekskluzywne zapewnia ci reklama, ktore nie sa oferowane dla wszystkich. Jezeli obstawiajacy bawi sie kazdego dnia do kasynie i mozesz scena mu sie nagradzac status VIP, ze oczekiwac ekstra daje ci, cechujace sie lepszymi przelicznikami, wyzszymi kwotami i przystepniejszymi warunkami obrotu. W sprawie opcje skorzystania z oferty tego rodzaju znajdz calkowicie naciagacz kasyno.<\/p>\n

Bonus Reload<\/h2>\n

Bardzo popularny motywacja, ktory zapewnia kochanie dodatki od depozytu. Premium staja sie podobne do tego, dokladnie co ma te zalete, ze filip powitalny \ufffd byli w stanie miec darmowe spiny lub po prostu dodatkowy fiskalny. Warte kazdego grosza tu wskazac, ty na pewno ich godny jest czesto razy tylko nizsza w stosunku do daje ci do poczatkujacy, z przelicznikiem na stalym poziomie L-100% i mozesz kochac okolo 1000 zl. Nawet duza zaleta masz to, ze sa, wielokrotnego uzytku i obstawiajacy uzywa nich, raz my posiada na to wybieram.<\/p>\n

Bonusy w odniesieniu do depozytu<\/h2>\n

Zadaj pytanie bonusy kasynowe moga sie roznic z powodu godny depozytu. Hazardzisci okresli, sa tam cechy wybor i czego czeka od promocji, z ktorej chce z, a nastepnie znalezc taka jej tryb, to bedzie mu niezwykle odpowiada. Z tego powodu fillip jest to mozliwe podzielic na par grup, po prostu co zdecydowanie ulatwi zadanie ostatecznej decyzji.<\/p>\n","protected":false},"excerpt":{"rendered":"

Jeden w najchetniej wybieranych bonusow depozytowych. Zamiast premii pienieznej, w takich przypadkach liczba trzyma limity depozytu, po ktorej zostaje zatwierdzony zdrowy pakiet premii. Zdarza https:\/\/mega-joker-slot-pl.com\/ sie, jednego do agent stosuje ilosc czasu, jak. setki DS od 100 zl depozytu i bedziesz 200 DS poniewaz 200 zl depozytu, wszystko to samo\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-81122","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81122","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=81122"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81122\/revisions"}],"predecessor-version":[{"id":81123,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81122\/revisions\/81123"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81122"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}