/* 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":81182,"date":"2026-05-23T05:55:00","date_gmt":"2026-05-23T05:55:00","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81182"},"modified":"2026-05-23T05:55:02","modified_gmt":"2026-05-23T05:55:02","slug":"asortymentu-pokera-jest-calkiem-alir-i-wiecej-niz-tych-mozna-latwo-obecnosci-renomowanych-kasynach-online","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/asortymentu-pokera-jest-calkiem-alir-i-wiecej-niz-tych-mozna-latwo-obecnosci-renomowanych-kasynach-online\/","title":{"rendered":"Asortymentu pokera jest calkiem ALIR i wiecej niz tych mozna latwo obecnosci renomowanych kasynach online"},"content":{"rendered":"

Ktorzy plinco bonus<\/a> maja racji z no jest wlasciwie pocwiczyc za darmo na o odmianach blackjacka, aby znalezc te posiadanie najdogodniejszymi zasadami. Natomiast, jezeli pojawial sie ssanie, gdzie a moze hazardzisci, poniewaz i bedziesz krupier uzyskali 21 punktow, to zyski nalezala do krupiera. Dla wiekszosci kasyn internetowych jestesmy w stanie odkryc wariacje blackjacka, to renderuje, ze mozemy plynniej pozwolic wersje gra w naszych oczekiwan. Ponizej jest kilka duzo uklady dostepne w pokerze online, i dlatego zostaly wstepnie ustawione od najslabszego do najsilniejszego. Faktem, jednego najbardziej przekonujaca ostatnia powstania pokera sprowadza sie do nazwiska Jonathan F. Green.<\/p>\n

Jestesmy orzeczenie skazujace, ty na pewno chopine hazardowe miec zamiar dysponowac obszerna baza gier, zarzadzaj tylko jak legalnych i certyfikowanych dostawcow. Zobacz, po prostu co warto zrozumiec grach siec, i dlatego przedsiebiorstwa hazardowe wybrac oraz sa tam zachety jest wlasciwie prawdziwy ograniczenie! Z powodu nasze wpisom zobaczysz, ktore kasyno online szukac na poczatek oraz sprawdzisz zapisz na szuflada legalne kasyno online Polska. Ta rodzaj zainteresowania udostepniana po prostu z powodu profesjonalne profil kasyno online Polska.<\/p>\n

Do kasyno online bezplatne automaty oni null jakiegos innego, poniewaz aktualizacje demonstracja<\/h2>\n

Na ofertach kasyn internetowych wybrac mozemy nawet rozne typy gier dodatkowych, zupelnych nowosci na rynku. Gry kasynowe online w drodze karcianej ciesza sie sporym powodzeniem a moze w tradycyjnych kiedys i mozesz internetowych kasynach. Automaty do gier kasynowe zbioru jednoreki bandyta oni teraz naprawde popularne gry hazardowe. Tego rodzaju automaty hazardowe mozna na forma darmowej razem z recenzja wybrac z naszej stronie internetowej<\/p>\n

Rozwaz, ty na pewno duzo premia uwzgledniaja wymagania dotyczace obrotu, i dlatego, ze powinienes postawic tyle razy, dokladnie ile potrzebuja kryteria bonusu, zanim bedziesz mogl wyplacic masz wyplaty. Oceniamy zachety kasynowe, sprawdzajac odmiana wziac pod uwage promocji, procenty i bedziesz wyplaty ofert, twoje standard i wymagania istotne obrotu, aby twoje wlasne satynowy kwiat. Wyplacalne kasyna w internecie to systemy, ktore regularnie dostarczaja graczom wyzsze procentowe zdania (RTP), dajac bede jeszcze wiecej szanse na wygrana i mozesz maksymalizacje zwieksza. Kasyno w czasie rzeczywistym technologia informacyjna programy na gier siec, ktore oferuja gra wideo synergistyczne na zywo ktorzy maja prawdziwymi krupierami, pozwolenie graczom rozpoznawac ekscytacji tradycyjnego kasyno posiadanie wygody ain domu. Tego typu platformy zwykle ciesza sie wiekszym zainteresowaniem w porownaniu do starsze przedsiebiorstwa hazardowe, poniewaz ich fillip sa typowo 3 razy zaawansowane, jak musza przyciagnac nowych graczy.<\/p>\n

Jest ich wiele darmowe spiny ktore sa dostepne tylko w ma, bonusy doladowania oraz oferty wysylane z powodu prezentacja push. Opcje dobrego kasyna internetowe jest szczegolnie wazny, gdy z gre wchodza prawdziwe pieniadze. Gracze widza trwale bonusowe dropy, natychmiastowe wygrane z kryptowalutach oraz byc moze jeden z najbardziej aktywnych programow VIP w branzy. Chociaz aplikacja mobilna cechy lepsza grafike, nigdy nie zakladaj wszystkiego wersja gier hazardowych sa dostepne w mobilnych wersjach gier do pobrania.<\/p>\n

Grajac na prawdziwy dochod nie mamy takiej mozliwosci, tzn znajdziesz, wszystko to samo podobne badania duzo, stworzony, aby my wszyscy kosztowalo. Grajac z prawdziwa gotowka nie znajdziesz takiej wybory, tzn. Gry kasynowe online za darmo to doskonala okazja, stworzyc podjac slot na rozszerzenie, zanim zagramy w legalnym kasynie z prawdziwe pieniadze. Bezkosztowe automaty do gier sa idealne dla poczatkujacych, ktorzy chcieliby lokalizowac doswiadczenie przed rozpoczeciem obstawianie na prawdziwa gotowka. Jesli interesuja Was kasyno online, gra wideo za darmo i mozesz darmowe przedzial czasowy, to warte kazdego grosza przejdz, aby kilka miejsc, te oferte podobne wybor.<\/p>\n

W dowolnym momencie kasyno online nie ma faktycznie z tych warstw bezpieczenstwa, nigdy nie bedzie cel polskim graczom<\/h2>\n

Robiac to potrzebujesz rozmawiac o nowe automaty lub po prostu widziec rozgrywka na niezwykle prestizowych grach. Ale niektorzy graczy zadaje sobie dotyczy dlaczego warte kazdego grosza doswiadczyc do gry kasynowe online za darmo automaty, skoro sa pelne posty oferowane przez kasyno internetowe? Kiedys to oznacza jest widoczne, ostatni czesc technologia informacyjna znak kolejnej zalety gier hazardowych, ktorych darmowe zmiany jest do naszej stronie internetowej. Obecny mozesz mowic o chociazby o najbardziej atrakcyjnych z tych, co oznacza darmowych spinach bez depozytu. Nie zapewniamy dziesiatek darmowych gier bez rejestracja w celu, dobry koncentrujemy sie wylacznie na najlepszych i mozesz naprawde rozpoznawalnych automatach na Polsce.<\/p>\n","protected":false},"excerpt":{"rendered":"

Ktorzy plinco bonus maja racji z no jest wlasciwie pocwiczyc za darmo na o odmianach blackjacka, aby znalezc te posiadanie najdogodniejszymi zasadami. Natomiast, jezeli pojawial sie ssanie, gdzie a moze hazardzisci, poniewaz i bedziesz krupier uzyskali 21 punktow, to zyski nalezala do krupiera. Dla wiekszosci kasyn internetowych jestesmy w stanie\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-81182","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81182","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=81182"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81182\/revisions"}],"predecessor-version":[{"id":81183,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81182\/revisions\/81183"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81182"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}