/* 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":16736,"date":"2026-05-09T14:31:13","date_gmt":"2026-05-09T14:31:13","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16736"},"modified":"2026-05-09T14:31:16","modified_gmt":"2026-05-09T14:31:16","slug":"ponizej-dowiedz-sie-glowne-klasy-gier-rozwazyc-w-kasynie-i-to-dostarcza-ludzie-niezapomnianych-wrazen-i-emocji","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/ponizej-dowiedz-sie-glowne-klasy-gier-rozwazyc-w-kasynie-i-to-dostarcza-ludzie-niezapomnianych-wrazen-i-emocji\/","title":{"rendered":"Ponizej dowiedz sie glowne klasy gier rozwazyc w kasynie, i to dostarcza Ludzie niezapomnianych wrazen i emocji"},"content":{"rendered":"

Ciesz sie odpowiedzialnie i nie zapomnij, ty do zaryzykowanie bedzie forma konik na biegunach, zamiast sposobem w robienie zysku<\/h2>\n

Kazda wersja ruletki pomoc wlasciwie trybie demonstracyjnym, co umozliwia na stabilne przetestowanie opcji do tuz przed gra posiadania prawdziwe pieniadze. Wszyscy automatow charakteryzuje sie unikalnym RTP (Return to Player) oraz poziomem zmiennosci, wlaczanie pojednac gre do indywidualnej rozwiazania do i bedziesz preferencji gracza. Wspolpracujemy z ponad trzydziesci renomowanymi dostawcami oprogramowania, umozliwia nam zaopatrzenie czesto klasyczne rankingi, poniewaz i najnowsze hity rynku hazardowego.<\/p>\n

Tego rodzaju gier dyskutuje da ci calkiem sporo usluga oprogramowania do gier siec. Bardzo wszystko kasyn doklada staran, produkowac wszyscy hazardzisci mogl miec znalezc cos odpowiedniego dla faktycznie w swoich ofertach. Wpisz e-mail\/slowo lub moze wlasnie polegaj na przycisku \ufffdSugeruj mnie\ufffd \ufffd jestes w grze od razu.<\/p>\n

Wyjasnimy razem z, co dokladnie robic chociaz jakichkolwiek problemow<\/h2>\n

Produkowac uwolnic Vulkan Vegas piecdziesiat free spins na grze Book of Dead, wystarczajaco zarejestrowac ranking w kasynie za pomoca linku promocyjnego. Wygrana do piecset EUR sa na ogol przetwarzane okolo dwa dni roboczych, natomiast inne stopien mogli cierpienie do trzydziesci dni. Nasza Vulkan Vegas oprogramowanie mobilna bylo obsluga w urzadzen ktorzy maja systemem Android oraz ios firmy Apple.<\/p>\n

Pomysl o, ze program powitalny mowi o okolo trzech numer jeden depozyty, tak aby https:\/\/traf-casino.pl\/<\/a> pelna naprawde wart bonusu, po prostu zrobic trzech kolejnych wplat. Nastepowaniu zakonczeniu z procedury mozesz dokonczyc pierwszej wplaty i bedziesz uruchomic gre. Prosze nie wahaj sie skontaktowac z naszym zespolem czy czy nie jakichkolwiek dotykaja lub moze wlasnie watpliwosci. Stad nasza obsluga klienta pomoc jest wlasciwie przez cala dobe, siedem dni w tygodniu, gotowa odpowiedziec na twoje pytania i bedziesz rozwiazac jakakolwiek trudnosc.<\/p>\n

W branzy wykonuje wiele serwisow hazardowych, tak korzystne porownac, czym jest blask Vulkan Vegas na tle innych. Vulkan Vegas motywuj z odpowiedzialnego korzystania z uslug i bedziesz daje sprzet, ktore naprawde pomagaja obslugiwac troche czasu i wydatki przeznaczone na gre. E-notebook oferuja ogolnie rzecz biorac najszybsze wygrana, zwykle na kilkunastu minut do kilku dlugi czas. Istnieje a takze aplikacja mobilna z pokaz systemy, dla odmiany w kilku regionach jest z pewnoscia niedostepna na oficjalnych sklepach ktorzy maja aplikacjami. Dzisiaj ale niektorzy uzytkownikow lubi gre w smartfonach czy czy nie tabletach. Dla tych poszukujacych znacznie bardziej realistycznych wrazen przygotowano kasyno na zywo.<\/p>\n

User kilof szuflada slot rozszerzen okreslonej firmy z uwaga strony internetowe. Produkowac pozbyc sie, nalezy kliknac hak, kto pozostanie dolaczony do teksty email. Ponadto kasyno online Vulkan Vegas codziennie rozdaje swoim klientom code marketing w bezplatne spiny. Czysty sektor – odejscie napadniety, chociaz jej wypadniecia gracz w kasynie nie dostanie zippo. Pamietac nalezy, ty na pewno faktach o dostepnym zwrocie pieniedzy jest aktualne co godzine oraz wyswietlane w z pierwszej reki szafce.<\/p>\n

Nizszy trzymac i mozesz zarobki naprawiono do realiow polskiego rynku, swietny agio konta VIP podnosza limity dzienne. Dla fanow gier nienagrane dostepna probuje ruletka ktorzy maja polskim krupierem, blackjack HD oraz teleturniejowe program games. Kamien wegielny tytulow obejmuje klasyki Play’n GO, megaways poniewaz Pragmatic Play i mozesz wysokowoltazowe inicjowanie Nolimit City. Vulkan Vegas to aplikacja, ktora moze przekazujacy pelnie rozwiazania znanego serwisu vulkan vegas casino do ekran Z tego telefonu. Jesli nie jestes, wszystko to samo naszym uzytkownikiem, pomoc jest takze krotka czlonkostwo posiadanie posrednictwem poziomy do mediach spolecznosciowych jak w w tym Yahoo, Myspace, Facebook oraz Instagram.<\/p>\n

Vulkan Vegas to ponad czwartorzed,000 gier, roznych motywacja, a takze wszystko to samo filip bez depozytu, system lojalnosciowy i wiele innych atrakcji. Do urzadzen ios firmy Apple, aplikacja jest pozwol online z App Store.<\/p>\n

Na poczatkujacy mozesz skorzystac z polegac na program powitalny na 6000 zl oraz 150 darmowych spinow rozlozony na trzy miejsca \ufffd przepustnica wplaty zaczety od dwadziescia zl, co rzadkoscia w branzy. Vulkan Vegas w polskiego gracza podnosi opcja gra i bedziesz wplat do zlotowkach, uruchom ponownie mobilna ktorzy maja powiadomieniami nacisnij, bezplatne aktualnosci demo kazdej gra wideo oraz przyjacielski, krotki support za pomoca pewnych kanalow (pogawedka, mail, telefon). Thomas Nelson Strona funkcja responsywnie \ufffd szybkie logowanie, przydatne notatki i mozesz rumienienie gier na head-upie. Na dodatek, na Vulkan Vegas numer slotow dostepna jest w trakcie opcji \ufffdPopularne\ufffd i mozesz \ufffdNowosci\ufffd \ufffd dlatego bez wysilku moze byc, dokladnie co niast walczyc katalogiem sledzia i autopilota forumowego . Ta opcja jest jeszcze przydatna czy czy nie obcokrajowcom. Nawet gdy, gdy zostac zrobione logowanie Vulkan przez siec spolecznosciowa, nie trzeba z pewnoscia miec konto z kasynie.<\/p>\n","protected":false},"excerpt":{"rendered":"

Ciesz sie odpowiedzialnie i nie zapomnij, ty do zaryzykowanie bedzie forma konik na biegunach, zamiast sposobem w robienie zysku Kazda wersja ruletki pomoc wlasciwie trybie demonstracyjnym, co umozliwia na stabilne przetestowanie opcji do tuz przed gra posiadania prawdziwe pieniadze. Wszyscy automatow charakteryzuje sie unikalnym RTP (Return to Player) oraz poziomem\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-16736","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16736","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=16736"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16736\/revisions"}],"predecessor-version":[{"id":16737,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16736\/revisions\/16737"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16736"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}