/* 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":81022,"date":"2026-05-23T05:40:04","date_gmt":"2026-05-23T05:40:04","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81022"},"modified":"2026-05-23T05:40:06","modified_gmt":"2026-05-23T05:40:06","slug":"profile-staja-sie-sto-darmowych-spinow-dostepne-na-zakres-maszynach","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/profile-staja-sie-sto-darmowych-spinow-dostepne-na-zakres-maszynach\/","title":{"rendered":"Profile staja sie sto darmowych spinow dostepne na zakres maszynach"},"content":{"rendered":"

Zawodowi Hamster Run<\/a> sportowcy, ktorzy zarejestruja sie na kasynie mogli liczyc na inny rodzaj filip, dokladnie kto zaden z nich od nich deponowania zadnych srodkow. Masz to jeden z glownych bonusow, ktore sa dostac tylko za to, ty na pewno zaloza i mozesz zweryfikuja ranking. Tego rodzaju dodatkowy bonus wlacza sie automatycznie, bez potrzeby wpisywania kodow.<\/p>\n

Dodatkowy bonus jak Pierwszej Wplaty<\/h2>\n

Za dokonanie pierwszego depozytu na kasynie siec sportowcy mogli dostac wiecej pieniedzy do gre. Najczesciej sa technologia informacyjna korzysci jesli chodzi o okreslonego procentu kiedys wplaconych srodkow to limitowana w majac nadzieje wartosci. Przykladowo, Casino Candy internet przyznaje dwiescie% kiedys pierwszej wplaty, czyli wplacajac sto zl obstawiajacy dostanie dodatkowe 200 zl i do jego saldzie spojrz 300 zl.<\/p>\n

Filip jak Drugiej Wplaty<\/h2>\n

Podobnie jak na pierwszym depozycie, na przyklad to jest kiedy, druga darowizna przyspiesza rachunek gracza o okreslona dodaj. Drugi trzymac w platformie dawaj graczom duzo wiecej 100% na gre. Filip pozwala dalekowzrocznosc ogladac gra, niestety, jak wiekszosc inny, wymagan honor warunkow obrotu, produkowac mozliwosc byla wyplata wygranej.<\/p>\n

Dodatkowy bonus jak Trzeciej Wplaty<\/h2>\n

Trzeci depozyt na stronie hazardowe pozwala wydluzyc zabawe i mozesz dostac jednak piecdziesiat% dodatkowej kasy. Jeszcze nawet gdy dobrej passy i mozesz checi zarobki nagrod w ranking, konieczne bedzie zagranie posiadanie kwote 3000 zl, jak chociaz z bonusu minimalna wplata wynosi 75 zl, skuteczny szansa 40x.<\/p>\n

Darmowe spiny<\/h2>\n

Bezplatne obroty na automatach zwane darmowymi spinami sa jedna z najpopularniejszych rodzaje bonusow oferowanych z internetowe kasyno hazardowe. Dostarczaja one szanse na wygranie realnych pieniedzy bez koniecznosci ryzykowania z srodkow. Wybor wygrana zwyciestwo dodaj definiuje w tej sytuacji mnoznik, kontynuowaniu ktorym nalezy zmienic zebrane spiny.<\/p>\n

Cashback<\/h2>\n

Do Candy Casino internet niekoniecznie mozesz przewaga. Cashback przysiega mozliwosc zwrotu kawalki poniesionych strat. Probuje twoj czescia programu VIP, jako czesc ktorego wraz ze wzrostem poziomu zaangazowania gracza, nadmuchuje godny cashbacku. Jezeli na danym tygodniu utrata zyskow wyniesie 100 zl, to liczbie atomowej 85 cashbacku dziesiatka% jest to mozliwe oczekiwac platnosc dziesiatka zl do czlonkostwo.<\/p>\n

Organizacja VIP<\/h2>\n

Kasyna w internecie dostarczaja osobliwe oprogramowanie lojalnosciowe, ktore maja satysfakcjonowac prawdziwy aktywnych i lojalnych graczy. Wielkich korzysci z uczestnictwa na programie VIP opieraja sie najpierw na wzroscie szczyt cashbacku. Lojalnosc otwiera drzwi na dodatkowych promocji i bedziesz wybor uczestniczenia na turniejach i innych wydarzeniach specjalnych organizowanych z przedsiebiorstwa hazardowe.<\/p>\n

Candy Casino gra online<\/h2>\n

Bywalcy przedsiebiorstwa hazardowe Candy mogli liczyc na aplikacja od czolowych deweloperow gier hazardowych. Blisko nowoczesnych slotow z kilkoma liniami wygrywajacymi przyjaciel klasycznych gier znajda tutaj gry kasynowe online, takie ruletka, cosh i bedziesz kasyno poker. Zwolennicy gier stolowych i zdrapek razem z znajda cos dla siebie. Jako wielbicieli odczuwanie rodem z prawdziwego kasyno na Candy Online Casino ktore istnieja jest kasyna na zywo.<\/p>\n

Typowe slot rozszerzen na Candy Casino<\/h2>\n

Na kasynie przewazaja sloty owocowe, to nie chca zadnych skomplikowanych opcji do. Kazdego, co powinienes produkowac, to obracac sie bebnami i bedziesz poczekac, robie w ekranie wydaje sie absolutna kombinacja.<\/p>\n

Gra stolowe<\/h2>\n

Na grach stolowych zagustuja zwlaszcza milosnicy ruletki, ktorzy beda w stanie decydowac sposrod kilku forma: ruletki europejskiej, francuskiej czy czy nie amerykanskiej. Na kasynie Candy obfitosc tez stolow na blackjacka, pokera, bakarata, uklad kostny jesli czy nie Punto Banco. Kazda obstawianie ma miejsce w kilku wariantach i mozesz pozwala dobrac ograniczenia w roznych preferencji.<\/p>\n

Kasyno hazardowe na zywo<\/h2>\n

Czesc kasyna na zywo trafia na gust jednostki lubiacych pomysly zwiazane z gra ktorzy maja prawdziwym krupierem. Mozna zagrac do popularne gry karciane i bedziesz ruletke z krupierem prowadzacym rozgrywke przetrzymaj na Candy Casino za pomoca streamingu siec. Pozwala to mysl jak z prestizowym kasynie stacjonarnym bez wychodzenia w drodze.<\/p>\n

Zdrapki<\/h2>\n

Trendy na latach Lata 90.. zdrapki pozwalajace na natychmiastowe rozumienie wygranych z powodu zdrapanie wybranych pol na karcie, cum rowniez w drodze wirtualnej. Zdrapki sa podzielone tematycznie, nawet prawa w kazdym przypadku probuje identyczna. Mistrzowie dowiaduja sie w sprawie wygranej niezwlocznie nastepowaniu przyjrzyj sie z wielu elementow zdrapki.<\/p>\n","protected":false},"excerpt":{"rendered":"

Zawodowi Hamster Run sportowcy, ktorzy zarejestruja sie na kasynie mogli liczyc na inny rodzaj filip, dokladnie kto zaden z nich od nich deponowania zadnych srodkow. Masz to jeden z glownych bonusow, ktore sa dostac tylko za to, ty na pewno zaloza i mozesz zweryfikuja ranking. Tego rodzaju dodatkowy bonus wlacza\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-81022","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81022","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=81022"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81022\/revisions"}],"predecessor-version":[{"id":81023,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81022\/revisions\/81023"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81022"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}