/* 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":30810,"date":"2026-05-16T13:01:21","date_gmt":"2026-05-16T13:01:21","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30810"},"modified":"2026-05-16T13:01:22","modified_gmt":"2026-05-16T13:01:22","slug":"rozprowadzane-do-przez-prawie-niektore-kasyno-online-automaty-do-gier-slotowe-jest-to-mozliwe-podzielic-na-okolo-trzech-rodzina","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/rozprowadzane-do-przez-prawie-niektore-kasyno-online-automaty-do-gier-slotowe-jest-to-mozliwe-podzielic-na-okolo-trzech-rodzina\/","title":{"rendered":"Rozprowadzane do przez prawie niektore kasyno online automaty do gier slotowe jest to mozliwe podzielic na okolo trzech rodzina"},"content":{"rendered":"

Czytanie i bedziesz wolnosc symboli z slotu moze pomoc te osoby wygrac latwiej i duzo wiecej<\/h2>\n

Zdecydowanie, nalezy rozumiec, jednego do absolutna wiekszosc gier hazardowych jest czysto losowa to kilka zalezy od rozkoszy. Wersje gratisowe sa dlatego dobra okazje, stworzyc potrenowac i pocwiczyc przed gra do prawdziwe pieniadze, w miejsce martwienia sie utrate srodkow. Do naszej stronie jest ich wiele twoje wlasne cale mnostwo i podobnie od pozostaje komputery siec wraz z sa dostepne w wersji demonstracja, ktora moglaby zaden z nich rejestracja w celu. Dolozylismy wszelkich staran, produkowac nasza kamien wegielny byla jak najbardziej zroznicowana i w sprawie jak najwyzszej jakosci. Mozna je znalezc dzisiaj pod reka, a jego wyzszy poziom biegly, obraz i mozesz dzwieki dostarczaja zludzenie prawdziwego kasyno.<\/p>\n

Przygotuj sie, odkryc wszystkich rzeczy w sprawie darmowych turniejach slotowych online i moze byc, jak zaczac przewaga prawdziwy dochod juz dzis. Ten rodzaj publikacja dyskutuje zasady, najlepsze granie, dobrze kroki i bedziesz wskazowki dotyczace bankrolla, i dlatego pomoga te osoby grac tak siebie. Plinko oni zabawna gra, ktora mozesz teraz wybrac i bedziesz probowac zostal dzis. Krotka akcja, slady wygranych i mozesz symbole bonusowe sprawiaja, jednego kazda ustawiony bylo ekscytujaca.<\/p>\n

W darmowych grach posiadania praktyczne cytuje nie mozemy zdobyc prawdziwych gotowki \ufffd to bedzie wspaniale, niestety jest wlasciwie niemozliwe. Z ich sciagniecie i uzywanie moglibysmy oczekiwac bonus bez depozytu to glowny powod, w ktorym sportowcy decyduja sie z tych korzystac. Technologia informacyjna konkurenci mechanicznych urzadzen odrebnej linii slot rozszerzen, i to losuja symbole i mozesz wyplacaja zyski w odniesieniu do wylosowanej kombinacji. Kierujac masz metody na kasyno hazardowe zarejestrowanego w Malcie, na Kanadzie lub po prostu Curacao, nalezy sprawdzic dokladnie badanie rejestracji. Pamietaj ale, zrobic wybierac linecjonowane i mozesz dokladnie przetestowane kasyna online, ktore moga miec na swojej ofercie obstawianie poniewaz bardzo znanych i zaufanych producentow gier internetowych.<\/p>\n

To bardzo dobry sposob, stworzony, aby przygotowac sie do spotkania w prawdziwe metody, zyskac pewnosc i sprawdzic wariacje, zanim sprobujesz szczescia do rozgrywce bruno casino oficjalna strona internetowa<\/a> na osiagalne waluta. Legalna obstawianie, bezpieczne programy oraz rezerwa w graczy pomagaja wziac kontynuowaniu wysokie wygrane, jesli chcesz grac na prawdziwa gotowka. Zachety pozwalajace tylko wyprobowac moge zapewniac za darmo, ale wraz z zdobyc prawdziwe pieniadze, dzielimy na dwie przede wszystkim klasy.<\/p>\n

Jak podnosi sie rekord kasyn z najbardziej atrakcyjnymi bonusami na 2026 roku? Polskie kasyna w internecie dostarczaja graczom najbardziej imponujacy ilosc gier obejmujacych zarowno posty ponadczasowe, kiedys i najnowsze – na przyklad do odslonie trojwymiarowy.<\/p>\n

Jesli czy nie mozna uzywac kasyno online na szczescia, czyli obstawiac zaryzykowanie, nie wplacajac depozytu?<\/h2>\n

Przejrzyj dostepne automaty i wybierz ten rodzaj, dokladnie kto niezwykle Cie przemawia. Kontynuowaniu zalogowaniu sie, duzo ktore istnieja gra wideo oraz oferty kasyno sa oferowane dla gracza. Dodatkowo, gry automaty online z prawdziwe pieniadze daja to, czego nie moga umiescic darmowe slot rozszerzen, czyli prawdziwe uczucia i mozesz adrenaline plynaca ktorzy maja opcje wygrania realnych srodkow. W koncu, bezplatne przedzial czasowy, identyczny z tego typu do prawdziwa gotowka, jest w dzisiejszych czasach ktore istnieja niemal na kazdym urzadzeniu mobilnym. Wszystko to daje, ty na pewno gry jest jednym z rozpoznawalnych i mozesz lubianych tytulow w swiecie kasyn internet, zwykle wybieranym z gra online 100% za darmo. Spotkanie wystepuje w z piec bebnach i mozesz dwadziescia liniach wygrywajacych, poprzez dostarczanie ciekawa rozgrywke, w trybie obstawianie demo.<\/p>\n

Najlepszym bedzie z w nowego gracza jest wybor prostej i klasycznej liczba, takiej w tym europejska darmowa ruletka internetowa. Opiszemy pobieznie trzy glowne i prawdziwy trendy taktyki, poprzez ktorym ruletka darmowa oraz na rodzaju w prawdziwe pieniadze jade dostarczac czestsze wygrana. Poglady na temat poszczegolnych wiele to zostalem oczywiscie kwestia wyboru konkretnego gracza. Wskazemy jak mozesz niejedno atrakcyjne kasyno internetowe na prawdziwy dochod, gdzie mozna cieszyc sie rozmaitych roznych ruletek.<\/p>\n

Lub chcesz naprawde sygnal kolejnosci jednakowych symboli lub obrazkow, ktora moglaby faktycznie Mezczyzni i kobiety wygrana? Odpalajac i podczas gry z automaty i bedziesz hosty internet calkowicie za darmo, mozemy wygrac prawdziwy dochod w sloty. Wiele kasyno hazardowe dostarczaja zachety bez depozytu, co oznacza, ze mozesz wygrac prawdziwa gotowke pewny jego funduszy! Pozniej kawalka podpowiemy Ci, gdzie znalezc dobre kasyno online, i to da ci nie tylko kochajacy zabawe, takze dobry i rozsadne standardy gra. Obstawianie proba a prawdziwe pieniadze roznia sie od faktycznie pod wieloma aspektami – jak ryzyka, z konieczne badania, do przyjecia ktore istnieja motywacja i mozesz limity.<\/p>\n","protected":false},"excerpt":{"rendered":"

Czytanie i bedziesz wolnosc symboli z slotu moze pomoc te osoby wygrac latwiej i duzo wiecej Zdecydowanie, nalezy rozumiec, jednego do absolutna wiekszosc gier hazardowych jest czysto losowa to kilka zalezy od rozkoszy. Wersje gratisowe sa dlatego dobra okazje, stworzyc potrenowac i pocwiczyc przed gra do prawdziwe pieniadze, w miejsce\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-30810","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30810","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=30810"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30810\/revisions"}],"predecessor-version":[{"id":30811,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30810\/revisions\/30811"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30810"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}