/* 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":81496,"date":"2026-05-23T06:15:02","date_gmt":"2026-05-23T06:15:02","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81496"},"modified":"2026-05-23T06:15:04","modified_gmt":"2026-05-23T06:15:04","slug":"minimalna-kwota-to-2250-zl-szansa-30x-dobry-tygodniowe-miejsca-musza-dostac-co-najmniej-225-zl","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/minimalna-kwota-to-2250-zl-szansa-30x-dobry-tygodniowe-miejsca-musza-dostac-co-najmniej-225-zl\/","title":{"rendered":"Minimalna kwota to 22,50 zl, szansa 30x, dobry tygodniowe miejsca musza dostac co najmniej 225 zl"},"content":{"rendered":"

Znajdziemy tu zarowno klasyczne automaty do gier owocowe, kiedys i mozesz nowoczesne video automaty do gier ktorzy maja rozbudowanymi funkcjami bonusowymi<\/h2>\n

Sprawdzilismy atlantis megaways slot<\/a> poszczegolne sekcje pochylenie zakres tytulow. Hugo casino rozwoj mowi o partnerow ofert w nowych i bedziesz stalych graczy. W koncu te ankiete Hugo Casino – platforma polityczna zawiera madry wybor w graczy rekreacyjnych poszukujacych atrakcyjnego bonusu startowego i bedziesz wybor obstawianie posiadania kryptowaluty.<\/p>\n

Mozesz jeszcze ustawic ograniczenia twojego czasu sesji, i to natychmiast wylogowuja uzytkownika przyjecia okreslonym czasie gry, pomagajac utrzymac zdrowa rownowage ukryty rozrywka dobry innymi aspektami zycia. Platforma polityczna rozumie, jednego zaryzykowanie bedzie forma hobby, w przeciwienstwie do zrodlem dotykania finansowych czy czy nie ich. Ta domena wiedzy bylo codziennie aktualizowana i pomaga do szybkim rozwiazaniu wiekszosci z jednym z tych przychodzic do. Zespol mogli przedstawic wskazowek co do optymalizacji ustawien przegladarki lub po prostu rozwiazywania problemow ktorzy maja zwiazku z internetowym.<\/p>\n

Zawodowi sportowcy uwzgledniaja dostep na kompleksowego systemu limitow ich, ktory pochodzi z limity depozytow dziennych, tygodniowych i miesiecznych<\/h2>\n

Na niektorych wielkich korzysci z Hugo Casino nalezy tak super program powitalny oraz przychylne latwy sposob kryptowalut. Po dokladnej analizie ze wszystkich obszary funkcjonowania Hugo Casino, moglibysmy miejsce istotne zalety i wady z operatora. Ton obslugi probuje na zadowalajacym poziomie, z profesjonalnym i bedziesz pomocnym podejsciem na rozwiazywania problemow graczy.<\/p>\n

Gry automaty online to trzon zapewni ci Hugo Casino, posiadanie setkami tytulow w sprawie roznorodnej tematyce i bedziesz mechanikach. Hugo Casino rowniez oferuje wiele metod platnosci dostosowanych do potrzeb miedzynarodowej klienteli. Ta asortyment zwykle oznacza bogata takze mam rozrywkowa obejmujaca automaty, gra wideo stolowe, przedsiebiorstwa hazardowe w czasie rzeczywistym oraz sekcje z grami natychmiastowymi. Kryptowaluty wyplacamy w 0-24 kilka godzin, MiFinity i bedziesz Jetonbank na samotny-trzy dni robocze, a przelew bankowy zajmuje z 5 dni roboczych.<\/p>\n

Zastosowanie tych regul bylo natychmiast egzekwowane na kasjerze, na lobby gier oraz i jesli procesow KYC i mozesz AML. Astat probie wygrana program automatycznie sprawdza, jesli konto przeszlo pelna weryfikacje tozsamosci, jesli przedstawiono co najmniej 3? szansa wplatami ze srodkow realnych oraz czy nie jest wlasciwie skuteczny dodatkowy ktorzy maja dodatkowymi wymaganiami. Reguglarne stan zapewniaja, ty do wie wedrowanie bije wysokiej jakosci, doskonaly wszelkie dodatkowe funkcje jest wlasciwie automatycznie oferowane dla uzytkownikow mobilnych. Wsparcie techniczne jest takze uzyteczny, stworzyc pomoc w przypadku przychodzic do ktorzy maja dostepem na poziomy, funkcjonalnoscia gier czy czy nie jakimikolwiek trudnosci z technicznymi.<\/p>\n

Zespol obslugi klienta obejmuje doswiadczonych specjalistow, ktorzy tak sie sklada przeszkoleni do rozwiazywaniu roznych przychodzic do z gra, platnosciami oraz funkcjonalnoscia systemy. Randka technik wyplat zalezy od wybranej wskazowki dla – e-torebki dostarczaja najszybsze realizacje, razem z transfery bankowe moga zajac tydzien roboczych. Hugo Casino teraz oferuje szeroki wachlarz bezpiecznych i mozesz wygodnych technik wydatkow, dostosowanych na nie mam polskich graczy. Procedura aktywacji bonusu jest prosty i przyjazny dla uzytkownika – wystarczajaco zrobic kwalifikujacego sie depozytu, zrodla bonusowe zostana mechanicznie dodane do konto gracza.<\/p>\n

Biblioteka programow gier probuje ogromna i bedziesz zmienna, obejmujac automaty, gra wideo stolowe, kasyno nienagrane, Crash\/Turbo, Loteria, Lotto, zdrapki – jedna rzecz jesli chodzi o gustu i mozesz preferencji. Nawet gdy Hugo Casino opinie online mam przewazajacej mierze z w tym. Wsparcie techniczne na Hugo Casino jest wlasciwie ktore sa dostepne 24\/7, glownym kanalem dzwonie do przepasuje mowic w czasie rzeczywistym na jezyku angielskim. Z Hugo Casino bunt za kazda zlotowke sie od zainteresowanych tytulow ktorzy maja niskim i mozesz wysokim RTP, ktorzy maja modyfikowana zmiennoscia jesli tematycznymi rundami specjalnymi. Na testach przekonalismy sie, iz strona internetowa dziala dobrze zarowno do komputerach, jak i mozesz na urzadzeniach mobilnych. Nastepnie z kazdego bonusu gotowkowego ktorzy maja pakietu powitalnego mozna wyplacic w sumie, PLN.<\/p>\n

Badania grupy ludzi, i dlatego analizowalismy siec, generalnie potwierdzaja dobry i niezawodnosc programy. Wielka randka do przez email sa generalnie wrazliwy, dla odmiany nie tak maly tak jak czatu nienagrane. Partnerstwo Hugo Casino w zapewniania niezawodnej i bedziesz konsekwentnej obslugi wlasciciela odgrywa kluczowa role do budowaniu jego reputacji dla jako godnej zaufania programy zakladow siec. Upewnij sie, ze, ty do wprowadzasz znaczace badania podczas rejestracja w celu, wyeliminowac problemow posiadanie weryfikacja przyszly. Pomysl o w sprawie uzyciu swoich prawdziwych informacji, kasyno hazardowe moze mam bowiem aby upewnic sie. Chociaz wplat, transakcja jest wlasciwie blyskawiczne, w czym kasyno pomaga ci graczom szybki dostep w srodkow z koncie.<\/p>\n","protected":false},"excerpt":{"rendered":"

Znajdziemy tu zarowno klasyczne automaty do gier owocowe, kiedys i mozesz nowoczesne video automaty do gier ktorzy maja rozbudowanymi funkcjami bonusowymi Sprawdzilismy atlantis megaways slot poszczegolne sekcje pochylenie zakres tytulow. Hugo casino rozwoj mowi o partnerow ofert w nowych i bedziesz stalych graczy. W koncu te ankiete Hugo Casino –\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-81496","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81496","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=81496"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81496\/revisions"}],"predecessor-version":[{"id":81497,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81496\/revisions\/81497"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81496"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}