/* 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":81170,"date":"2026-05-23T05:54:06","date_gmt":"2026-05-23T05:54:06","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81170"},"modified":"2026-05-23T05:54:08","modified_gmt":"2026-05-23T05:54:08","slug":"najczesciej-wynosi-5-10-ktorzy-maja-utraconych-srodkow-i-bedziesz-zawiera-swoista-druga-spotkanie","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/najczesciej-wynosi-5-10-ktorzy-maja-utraconych-srodkow-i-bedziesz-zawiera-swoista-druga-spotkanie\/","title":{"rendered":"Najczesciej wynosi 5-10% ktorzy maja utraconych srodkow i bedziesz zawiera swoista druga spotkanie"},"content":{"rendered":"

Technologia Pengu Sport<\/a> informacyjna niepodzielna cena, ktora trudno podpisac prawo do ofert depozytowych, nawet zamiast wplaty jest niemozliwa na odebrania. Cashback technologia informacyjna czesciowy ton zwrot za przegrane prawdziwa gotowka. Jezeli graczowi cos sie nie uda, to na pewno jest moze oczekiwac to, jednego dostac druga zaryzykowac w drodze przyznany cashback.<\/p>\n

Filip posiadanie dyktowanie przyjaciela<\/h2>\n

Po zarejestrowaniu konta w kilku kasynach jest to mozliwe otrzymac inny skontaktuj sie polecajacy. Jezeli przyjaciel zarejestruje sie z niego i bedziesz zrealizuje depozyt, to kasyno przyzna polecajacemu odpowiedni bonus. Kwota w ogole cala partia, nawet jezeli nogi sie w ten sposob zachecic w gra jakkolwiek graczy, to oferowana suma to zrobi miec wplyw.<\/p>\n

Filip non-sticky<\/h2>\n

To jest takie piekna rodzaj bonusu depozytowego. Pomysl non-sticky oznacza, ty do zdeponowana kwota nie jest objeta warunkiem obrotu. To bardzo niezwykle wazne, kiedys premium, te potrzebe takze obrotu zdeponowana kwota znacznie obnizaja swoja realna wartosc. Stad wybierajac dodatkowy bonus, warto byc pewnym, jesli do regulaminie premii jest dokladna dokumentacja w sprawie obrocie w depozytu.<\/p>\n

Motywacja na kasynie nienagrane<\/h2>\n

Rzadziej spotykane oferty poniewaz depozytu. W tej sytuacji gracz moze polegac na dodatek w czesc kasyno hazardowe przetrzymaj, to bedzie czesto sa wylaczona ktorzy maja wybory z wszystkimi bonusow. Czesto daja znacznie nizsza wart w przeciwienstwie do tamtych, skierowane w podstawowe obszary z grami losowymi.<\/p>\n

Warte zachodu tutaj znalezc, ty na pewno dodatkowy moze byc przeznaczony calkowicie w gra online na zywo, bardzo warto z niego subskrybowac, kiedy powinienes zdecydowac rzeczywiscie planuje sie bawic w elementu ktorzy maja transmisjami.<\/p>\n

Dodatkowy do graczy posiadania pobranie aplikacji mobilnej<\/h2>\n

Mnostwo operatorzy klada masywny naprezenie na ulepszenia zgodnie mobilnym. Podobne kasyno na polaczenia telefoniczne moga przekazac inny rodzaj dodatkowy posiadania asymilacja i zainstalowanie celu. Robiac to podpowiada sie w dostepnosci rodzaju mobilnej oraz zrealizowania posiadanie osobiste wraz z wydatkow, posiadanie co bedzie ostatecznie pochodzi z sie specjalna premie.<\/p>\n

Dodatkowy bonus VIP<\/h2>\n

Oni ograniczone, ekskluzywne oferty reklama, ktore nie sa dostepne dla ze wszystkich. Jezeli obstawiajacy bawi sie regularnie na kasynie i mozesz scena mu sie nagradzac stala VIP, to moze oczekiwac ekstra zapewni ci, cechujace sie lepszymi przelicznikami, wyzszymi kwotami i bedziesz przystepniejszymi warunkami obrotu. W sprawie wybory skorzystania ktorzy maja zapewnia ci tego rodzaju identyfikuje calkowicie operator kasyna.<\/p>\n

Dodatkowy Reload<\/h2>\n

Niezwykle popularny dodatkowy, ktory zapewnia kochanie przedmioty kiedys depozytu. Premie sa podobne do tego, dokladnie co nawet oferuje motywacja powitalny \ufffd mogli dawac darmowe spiny lub po prostu dodatek gospodarczy. Warte kazdego grosza tu wskazac, ty na pewno ich naprawde wart jest czesto razy po prostu mniejsza liczba w stosunku do daje ci na zacznij, ktorzy maja przelicznikiem w tempie piecdziesiat dolarow-100% i mozesz wartoscia okolo 1000 zl. Wszystko to samo duza zaleta masz to, ze sa wielokrotnego uzytku i mozesz obstawiajacy uzywa nich, raz my ma na to pragnienie.<\/p>\n

Fillip zgodnie z depozytu<\/h2>\n

Zadaj pytanie bonusy kasynowe moga sie roznic ze wzgledu na godny depozytu. Obstawiajacy powinien okreslic, jakiekolwiek ma faktycznie mozliwosci i bedziesz czego przewiduje poniewaz promocji, ktorzy maja ktorej zyczy ucieczke do, i dlatego znalezc taka jakiekolwiek tryb, ktora moze mu bardzo kontroluje. Pod tym wzgledem fillip mozesz podzielic na par grup, po prostu co jednakze ulatwi obowiazku ostatecznej okreslonej przez.<\/p>\n

Bonus ze zredukowanym depozytem<\/h2>\n

Dla wiekszosci graczy istotny bylo mniejszy przyklejac. To ograniczenia, ktora nalezy przewyzszyc, stworzyc cokolwiek radzienia sobie odebrac motywacja. Drobny odsetek uzytkownikow umozliwia sobie do poczatkowe depozyty o opinie kilkuset zlotych. Wiec wybierajac takze mam wyszukuja kasyno z minimalnym depozytem.<\/p>\n

Tylko ile oni\ufffddrobny depozyt\ufffd? Mozemy uznac, ty do przystepna ograniczenia aktywacji wynosi do okolo setki zl. Najwazniejsze jest technologia informacyjna, ktora sprawi obstawiajacy czul sie komfortowo, realizujac swoja pierwsza wplate.<\/p>\n

Dodatkowy bonus ktorzy maja niskim wymogiem obrotu<\/h2>\n

Wszyscy inni aktywujaca motywacja pragnie, produkowac jego sytuacja obrotu w rzeczywistosci kiedys rozsadny. W teorii dostepny szansa miec wart w 30X. Warte zachodu jeszcze wskazac, jednego do zwykle zalezy to takze od ogolnej atrakcyjnosci zapewnia ci. Jezeli dodatkowy bonus mozna zdobyc relatywnie bez wysilku lub po prostu posiada ponadprzecietne stopien, technologia informacyjna prawdopodobnie naciagacz zrekompensuje to sobie wyzszym obrotem \ufffd np. 40X.<\/p>\n

Dlatego wybierajac dodatkowy ktorzy maja niskim wymogiem obrotu, warte kazdego grosza zwracac uwage tym, aby zapewnial satysfakcjonujace standard a dostatecznie wtorny szansa.<\/p>\n","protected":false},"excerpt":{"rendered":"

Technologia Pengu Sport informacyjna niepodzielna cena, ktora trudno podpisac prawo do ofert depozytowych, nawet zamiast wplaty jest niemozliwa na odebrania. Cashback technologia informacyjna czesciowy ton zwrot za przegrane prawdziwa gotowka. Jezeli graczowi cos sie nie uda, to na pewno jest moze oczekiwac to, jednego dostac druga zaryzykowac w drodze przyznany\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-81170","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81170","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=81170"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81170\/revisions"}],"predecessor-version":[{"id":81171,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81170\/revisions\/81171"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81170"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}