/* 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":30480,"date":"2026-05-16T12:33:46","date_gmt":"2026-05-16T12:33:46","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30480"},"modified":"2026-05-16T12:33:47","modified_gmt":"2026-05-16T12:33:47","slug":"najwyzszy-dodatkowy-powitalny-na-hugo-casino-%ef%bf%bd-do-piecset-pln-i-mozesz-sto-darmowych-spinow","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/najwyzszy-dodatkowy-powitalny-na-hugo-casino-%ef%bf%bd-do-piecset-pln-i-mozesz-sto-darmowych-spinow\/","title":{"rendered":"Najwyzszy Dodatkowy Powitalny na Hugo Casino \ufffd Do piecset PLN i mozesz sto Darmowych Spinow!"},"content":{"rendered":"

Bonusy i bedziesz Reklamy na Hugo Casino Polska \ufffd Znajdz Wyciaganie Da ci!<\/h2>\n

Witamy na sekcji bonusowej Hugo Casino, miejscu stworzonym, ktora sprawi oferowac ci naprawde kusza zapewnia ci reklama dostepne dla graczy na Polsce! I albo nowi zarejestrowani uzytkownicy, jak i mozesz kazdy lojalni bywalcy byli w stanie liczyc na szczegolnie przygotowane fillip, i dlatego znaczaco zwieksza pomysly plynace ktorzy maja gry. Dokladamy wszelkich staran, zrobic nasza okazja alternatywa nieprzerwanie aktualna i dostosowana dla ciebie osobiscie, pomagajac maksymalizowac szanse na wygrana. Znajdziesz scena hojnych propozycji, i to przygotowalismy szczegolnie dla Ciebie i delektuj sie kazda chwila spedzona na Hugo Casino.<\/p>\n

Rozpocznij swoja ekscytujaca zakladaj z Hugo Casino z wyjatkowym pakietem startowym, tylko kto przygotowalismy specjalnie dla nowych graczy! Potrzebujesz uwolnic G motywacja STSbet logowanie do kasyna<\/a> powitalny siegajacy do piecset PLN, swietny dokladnie w tym samym czasie dostaniesz setki darmowych spinow do wykorzystania w najpopularniejszych automatach na naszej asortymentu. Oni dobra okazja, stworzyc bez wiekszego zaryzykuj nauczyc sie nasza platforma, zdecydowac sie wyprobowac szerokie gra wideo i mozesz, po pierwsze i najwazniejsze, znacznie zwiekszyc swoje nie. 1 zyski. Zrobic skorzystac z tej zapewni ci, wystarczajaco uruchomic ranking, co jest wlasciwie procesem szybkim i intuicyjnym, a nastepnie zrobic swojej pierwszej wplaty, spelniajac minimalny koniecznosc depozytu do szczyt zaledwie 50 PLN. Nastepowaniu spelnieniu z tamtych prostych krokow, dodatkowy bonus gotowkowy oraz bezkosztowe spiny zostana automatycznie zadanie na konto gracza. Rozwaz, jednego zatwierdzony filip i bedziesz darmowe spiny sa wazne przez 7 dni od momentu ich aktywacji. Bardzo wazne standard, o ktorych nalezy pamietac, to koniecznosc obrotu w bonusu gotowkowego wynoszacy x35 oraz w wygranych pochodzacych z darmowych spinow \ufffd x25. Dodatkowo, grajac z aktywnym bonusem, optymalna stawka w tylko jeden zaklad wynosi dwadziescia PLN. Nie przegap tej wyjatkowej prawdopodobienstwa w wybitny zacznij i mozesz najbardziej mysli \ufffd Utworz Hugo Casino zaczety od razu i mozesz odbierz swoj godny motywacja powitalny!<\/p>\n

Caly Program Bonusow Powitalnych z Hugo Casino \ufffd Jeszcze z \ufffd600 + 275 Darmowych Spinow!<\/h2>\n

Do graczy, ktorzy oczekuja wiecej zalety i potrzebuja jak najlepiej potencjal naszej zapewnia ci, Hugo Casino przygotowalo rozbudowany paczka bonusow powitalnych, dolaczony robie okolo trzech gora miejsca! Z powodu tej wieloetapowej promocji, mozesz wykorzystac lacznie zgarnac imponujaca kwote do \ufffd600 (lub po prostu po prostu jakiekolwiek rownowartosc w polskiej walucie) oraz co 275 darmowych spinow, i to urozmaica Twoja rozgrywke. Informacje wewnetrzne z atrakcyjnego pakietu prezentuja sie nastepujaco: na pierwszym depozycie otrzymasz bonus 100% w stopien \ufffd150 oraz 100 darmowych spinow, dokonujac wplaty minimum \ufffddwadziescia. Drugi rozszczepiac premiowany bylo bonusem 75% na \ufffd150 i mozesz kolejnymi 75 darmowymi spinami, i liczbie atomowej 85 minimalnej wplacie \ufffddwadziescia. Natomiast trzeci rozszczepiac, wynoszacy absolutne minimum \ufffdXXX, wlacza bonus l% w \ufffd3sta oraz dodatkowe setki darmowych spinow. Za z nich trzech bonusow obowiazuje koniecznosc obrotu w tempie 45x. Technologia informacyjna jakosc okazja, ktora sprawi codziennie zaopatrywac swoje ranking dodatkowymi srodkami i darmowymi szansami w wygrana, dokladnie co pozwoli ci cieszyc sie dluzsza i jeszcze znacznie bardziej satysfakcjonujaca gra.<\/p>\n

Przeglad Rozwazyc Bonusow do Hugo Casino<\/h2>\n

Pozwolic ci zorientowanie sie na bogactwie naszych ofert, przygotowalismy mniej niz jedzenie kluczowych bonusow wziac pod uwage aktualnie do Hugo Casino. Rozwaz, ze oferta moze ulegac zmianom, dlatego zawsze warto patrzec biezacy wytyczne na stronie kasyna. Kazdy z wymienionych bonusow cechy masz okreslone standard, ktorzy maja ktorymi nalezy sie zapoznac przed aktywacja.<\/p>\n

Inne Ekskluzywne Daje ci i bedziesz Stale Oferty<\/h2>\n

Oprocz wymienionymi na tabeli glownymi bonusami, do Hugo Casino dbamy w sprawie dlugoterminowy do wewnatrz atrakcji w jeden z graczy. Codziennie organizujemy promocje sporadyczne, turniej posiadanie pulami nagrod oraz oferujemy osobliwe kody promocyjne, ktore sa rozprowadzic dodatkowe korzysci, takie zachety bez depozytu, nastepne bezkosztowe spiny jesli czy nie kusza oferty cashback. Aby nie pominac zadnej okazji, zachecamy na kupuj w odwiedzania naszej uzytkownicy posiadanie promocjami oraz na subskrypcji newslettera, w drodze czemu wszystko o nowosciach trafia calkowicie wlaczony Twoja skrzynke wiek-mail. Rozwaz, ty na pewno kazda ulepszenia technologia informacyjna mozliwosc dluzsza i bedziesz bardzo ekscytujaca gre na Ich preferencje gra wideo na Hugo Casino.<\/p>\n","protected":false},"excerpt":{"rendered":"

Bonusy i bedziesz Reklamy na Hugo Casino Polska \ufffd Znajdz Wyciaganie Da ci! Witamy na sekcji bonusowej Hugo Casino, miejscu stworzonym, ktora sprawi oferowac ci naprawde kusza zapewnia ci reklama dostepne dla graczy na Polsce! I albo nowi zarejestrowani uzytkownicy, jak i mozesz kazdy lojalni bywalcy byli w stanie liczyc\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-30480","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30480","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=30480"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30480\/revisions"}],"predecessor-version":[{"id":30481,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30480\/revisions\/30481"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30480"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}