/* 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":30918,"date":"2026-05-16T13:08:02","date_gmt":"2026-05-16T13:08:02","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30918"},"modified":"2026-05-16T13:08:03","modified_gmt":"2026-05-16T13:08:03","slug":"od-pojawia-sie-dodatkowy-bonus-l-free-spins-bez-depozytu-do-ice-internet-casino-w-2025-sezonu","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/od-pojawia-sie-dodatkowy-bonus-l-free-spins-bez-depozytu-do-ice-internet-casino-w-2025-sezonu\/","title":{"rendered":"Od pojawia sie dodatkowy bonus L free spins bez depozytu do Ice Internet Casino w 2025 sezonu"},"content":{"rendered":"

Na poczatku trzeba rozwiac zludzenia, od niestety tego rodzaju calkowicie darmowy dodatkowy kasyna bez depozytu niestety wymaga pewnej wczesniejszej wplaty, a bardzo dokladnie w wysokosc dziesiatka\ufffd (ok. 45 zl). Na poczatek musialem wpisac kod promocyjny KasynoIce PL bez depozytu CORG50, aby otrzymac prawde 70 darmowych free spinow. Masz to dzisiaj uzytkownik z najbardziej hojnych wybor \ufffd niestety rozwiazania 150 free spin juz nie jest aktualna.<\/p>\n

Ostrzegam dlatego, ze nie masz to najczesciej znane kasyno internetowe filip bez depozytu np IceCasino znacznie deposit bonus 60 free spins, kim byl wczesniej az do teraz oferowany, jednak, jesli jestes aktywnym graczem, oni nizej niz dowiesz sie, dokladnie co skrywa ta przelomy.<\/p>\n

Pozniej otrzymasz promocje w sprawie myslenie 150% w 500\ufffd (2200 zl) oraz 70 FS. Tanszy depozyt wraz z wypadku wynosi dziesiatka\ufffd (45 zl). Wazna informacja jest to, ty do dzialania bonusowe probuje objete wymogiem obrotu x40, skuteczny zarobki ktorzy maja FS x35. Ulepszenia nie ma daty znaczenia i bedziesz jest to mozliwe z niej ucieczke do a moze przy uzyciu komputera, jak i w telefonie.<\/p>\n

Przyznam sie, nigdy jestem nadmiernie duzym wielbicielem wedkarstwa, ale akurat serie slotow Big Bass lubie i mozesz gotowy z niej randkuje z powrotem do. Z tego rodzaju czas moim ulubionym slotem ktorzy maja tej kilka jest wlasciwie Big Bass Secrets of jesli chodzi o Golden Lake. Obecnie jest wlasciwie z tamtych automatow zostalem wiecej niz 30, skuteczny ta serwery zapadla mi na pamiec komputerowa dzieki ciekawa historie zwiazana ktorzy maja krolem Arturem. Slucham, jednego IceCasino PL free spins znacznie deposit na Big Bass Bonanza technologia informacyjna swietna opcja na technologia informacyjna, ktora sprawi zaznajomic sie z ta seria, po prostu co zdecydowanie polecam graczom. Przygotowalem jak mozesz krotka sciage najpopularniejszych slotow ktorzy maja tej kilka.<\/p>\n

I znow 70 FS do Big Bass Bonanza bylo niezwykle przyjemne, a nawet hojne \ufffd zdobylem do 140 zl! Jest jeden stan \ufffd bezplatne spiny bylo objete warunkiem x35, co oznacza, jednego musialbym wydrukowac 4900 zl, zrobic te https:\/\/casinoninlay.pl\/<\/a> wygrana wydac. Niefortunnie dzieje sie to moze byc, ty na pewno kolekcja Big Bass wydaj pojemne zarobki, ale interesujaca nie smak przyszedl tak szybko chociaz wyplaty srodkow. Nie ulatwiac jak mozesz ograniczenie z wygrane, ktory wynosi 500$ (w porzadku. 1800 zl). Do mnie nie jest oni wybor na zyski, ale zamiast na przetestowanie slotu zamiast konsekwencji.<\/p>\n

Motywacja bedziesz chcial angazowac recznie do profilu, wpisujac kod kuponu CORG50<\/h2>\n

To kasyno online bonus bez depozytu oferuje prawie non koniec. Ostatnia oferta, jaka wyprobowalem i prawda w tej platformie to Ice Casyno darmowe spiny bez depozytu. Jest dokladnie l, a gra z bonusem technologia informacyjna preferowany Book of Fallen kiedys Pragmatic Play.<\/p>\n

Ktorzy maja tej wartosc oczekiwana jest to sprawa okazja<\/h2>\n

Jak dotad trzeba z pewnoscia naprawde ujawnie, ze ten Ice Casino Poland bonus bez depozytu 2025 nie tak mnie zachwycil. Ktorzy maja kluczowych korzysci z trzeba z pewnoscia dowiedziec sie, jednego do jednoreki bandyta w strone gory najbardziej i zgodnie szaty w formie pisemnej. Jest wlasciwie on prawdziwy czysty, a do tego posiada ciekawa historie, co osobiscie rowniez bardzo istotne. Do tego darmowe obroty bonusowe udalo mi sie rozegrac nie tylko na komputerze, jeszcze razem z do telefonie \ufffd a wraz z.<\/p>\n

Bylem rano wszystko to samo kiedys zdenerwowany, ze to kasyno dodatkowy bonus bez depozytu przynioslo mi po prostu dziesiatka zl i zarobienie \ufffd masz to jesli pytasz mnie troche za bardzo malo. Masz to jak niezwykle, od Pragmatic Play powiedz, ze gra online ma faktycznie RTP za cene 96,5%, wiec matematycznie wygrane operowac stac sie wieksza. Technologia informacyjna, co nawet jest dla mnie najwieksza zaleta to nieodpowiedni obrot \ufffd po prostu x5. Musialem wypuscic tylko piecdziesiat zl, produkowac rozwidlic swoja wygrana.<\/p>\n

Opowiem jak mozesz, poniewaz jak najlepiej ten motywacja na Casino Ice bez depozytu. Wystarczylo, ze zweryfikowalem ranking i mozesz numer kontaktowy. Darmowe spiny natychmiast sa zauwazane z moim profilu. Kwota bonusu zalezy od i zarobienie ze spinow. Zarobki trzeba zmienic x5 na kolejnych trzy dni, dokladnie co, jak zanim zauwazylem, nie powinno byc nauka o rakietach.<\/p>\n

Bylem rano zdziwiony, ty na pewno ograniczenie wygrana jest dosc najwyzszy \ufffd 25\ufffd, bardzo potencjalnie mozesz dostac na Ice Casino na Polsce 100 PLN bez depozytu.<\/p>\n","protected":false},"excerpt":{"rendered":"

Na poczatku trzeba rozwiac zludzenia, od niestety tego rodzaju calkowicie darmowy dodatkowy kasyna bez depozytu niestety wymaga pewnej wczesniejszej wplaty, a bardzo dokladnie w wysokosc dziesiatka\ufffd (ok. 45 zl). Na poczatek musialem wpisac kod promocyjny KasynoIce PL bez depozytu CORG50, aby otrzymac prawde 70 darmowych free spinow. Masz to dzisiaj\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-30918","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30918","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=30918"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30918\/revisions"}],"predecessor-version":[{"id":30919,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30918\/revisions\/30919"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30918"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}