/* 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":193436,"date":"2026-06-22T17:57:10","date_gmt":"2026-06-22T17:57:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=193436"},"modified":"2026-06-22T17:57:11","modified_gmt":"2026-06-22T17:57:11","slug":"naturlich-time-umsetzbar-casinos-angebot-eine-breite-wahl-geiler-spiele-sowohl-2","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/naturlich-time-umsetzbar-casinos-angebot-eine-breite-wahl-geiler-spiele-sowohl-2\/","title":{"rendered":"Nat\u00fcrlich time Umsetzbar Casinos angebot eine breite Wahl geiler Spiele sowohl"},"content":{"rendered":"

Diese bekanntesten Spiele inoffizieller mitarbeiter Stay Gemeinsam Casino<\/h2>\n

Speziell https:\/\/rollinocasino-de.de\/promo-code\/<\/a> respektiert ist Stay Blackjack, es du angeschaltet verschiedenen Tischen sein gluck versuchen kannst. Jedoch nebensachlich abseits von Blackjack meinen verschenken diese Spanne ein Spiele. Live roulette, z.b. von Evolution, bereitet es echte Casino-Atmosphere schnell nach dir nachhause.<\/p>\n

F\u00fcr viele Spieler man sagt, sie sind beilaufig diese Einsatzlimits wichtig, ja diese festlegen, \u00fcber welchen Entfallen aufgesetzt sind kann. Dank ein gro?en Wahl angeschaltet Live Spielen kommt noch keine Langeweile in. Daneben klassischen Kartenspielen wie Blackjack, diese nat\u00fcrlich time rund echte Rauschgifthandler aufgesetzt man sagt, sie sind, prasentation sehr Moglich Casinos zweite geige spannende Gameshows angeschaltet. Diese Spanne macht Alive Casinos so attraktiv. Hier ist diese eine Uberblick ein beliebtesten Stay Dealer Spiele:<\/p>\n

Game of chance \ufffd Zeitloser Klassiker inoffizieller mitarbeiter Casino<\/h2>\n

The roulette table ist des ein bekanntesten und bekanntesten Spiele in Stay Moglich Casinos. Spieler ablaufen auf eine Kennziffer, eine Farbe und eine Inhaltsverzeichnis von beidem, intensiv das Croupier diese Kugel in das rotierende Fahrrad wirft. Diese Abenteuer steigt, wenn diese Flur ins Bl\u00e4ttern kommt und aufwarts der Kennziffer zum Angleichung passiert. Evolution finden sie auf mehrere Varianten von Are living Live roulette, in europaisches und amerikanisches Toothed wheel. Es Runde ist gut vertraglich auf uber kenntnisse verfugen, finden sie auf noch mehrere Wettoptionen z. hd. mehrere Abwechslung.<\/p>\n

Blackjack \ufffd Rechtskraftig f\u00fcr Strategen<\/h2>\n

Blackjack ist es beste Runde fur jedes ganz, diese in Langerfristig ausgerichtetes walten ablaufen. Diese Abschluss ist es, \u00fcber der Kartenhand so in der n\u00e4he wie moglich angeschaltet twenty-one heranzukommen, abzuglich diese Kennziffer nach passieren. In Nat\u00fcrlich time Casinos trittst du rund echte Rauschgifthandler angeschaltet, das das Runde noch spannender macht. \u00dcber Entscheidungen wie \ufffdHit\ufffd und \ufffdStand\ufffd ist Blackjack sehr interaktiv und erfordert mehr taktisches Denken als viele andere Casino-Spiele.<\/p>\n

Baccarat \ufffd Muhelos auf lernen, umfangreiche Gewinnchancen<\/h2>\n

Baccarat ist ein schnelles und einfaches Runde, diese sowohl f\u00fcr Einsteiger wie sekundar fur jedes erfahrene Spieler attraktiv ist. Du setzt darauf, in wie weit ein Spieler & ein Banker diese hohere Hand head wear, und in wie weit es ein Unentschlossen gibt. Dank ein schnellen Spielrunden und das au?erordentlichen Gewinnchancen ist Baccarat des ein bekanntesten Are living Casino Spiele. Es erfordert kaum Langerfristig ausgerichtetes walten, ist zwar von fishnet Eleganz und diese ma?geschneiderten Dealer interessant.<\/p>\n

Casino Hold’em \ufffd Poker in rasantem Hast<\/h2>\n

Casino Hold’em ist eine actiongeladene Variante von Lone-star state Hold’em, in ein du vielleicht einen Dealer spielst. Abschluss ist es, diese sinnvolle Pokerhand zu haben, um einen Dealer nach zuchtigen. Dankgefuhl ein schnellen Spielweise und klaren Beherrschen ist Casino Hold’em in Alive Casinos speziell reprasentabel. Fur samtliche, diese Poker bevorzugen, zwar keine lust auf T\u00e4uschen haben, ist es diese perfekte Wahl f\u00fcr rasante Poker-Measure.<\/p>\n

Pai Gow \ufffd Poker \u00fcber asiatischem Stimmung<\/h2>\n

Pai Gow kombiniert traditionelle Pokerregeln auf einsatz von asiatischer Kultur. Du musst zwei Hande pragen: eine \u00fcber funf Karten & eine uber beiden Karten. Abschluss ist es, \u00fcber beiden Handen einen Drogenhandler nach verkaufen. Diese Allerlei ganz Hub und Konzept macht Pai Gow speziell interessant. In Alive Casinos sorgt diese Runde fur jedes eine spannende Atmosphare, diese einen einzigartigen Alter von Pai Gow komplett einfangt.<\/p>\n

Craps \ufffd Spannendes Wurfelspiel uber Nervenkitzel<\/h2>\n

Craps ist das aufregendste Wurfelspiel inoffizieller mitarbeiter Casino. Diese Spieler legen darauf, die Kombinationen in dem Wurf von zwei Wurfeln einwirken. In Stay Casinos ist ein Wurf in Echtzeit von dem ma?geschneiderten Rauschgifthandler durchgefuhrt, was diese Abenteuer erhoht. Diese Abwechslung angeschaltet Wettmoglichkeiten und diese einfache Leidenschaft machen Craps nach dem ein aufregendsten und interaktivsten Spiele in Are living Casinos.<\/p>\n

Mehr Live Dealer Matches<\/h2>\n

Anbei einen klassischen Casino-Auffuhren angebot mehrere Stay Casinos diese Reihe von anderen Alive Rauschgifthandler Matches angeschaltet, diese Abwechslung und Gesprach garantieren. Daf\u00fcr gehoren beliebte Stay Casino Gameshows wie Abgedreht Go veraltet und Monopoly Are living, in denen das Spielerlebnis noch interaktiver und geiler vermittelt ist und bleibt. Diese Spiele schlie\u00dfen das Sinnvolle ganz renommierten Casinospielen und modernen Gameshow-Elementen. Ebenfalls riesig respektiert sind spezielle Varianten von Poker und So Bo, diese fur jedes diese andere Stuck Nervositat liefern. Diese ohne unterbrechung wachsende Wahl macht Are living Casinos nach dem unvergleichlichen Erfahrung.<\/p>\n","protected":false},"excerpt":{"rendered":"

Diese bekanntesten Spiele inoffizieller mitarbeiter Stay Gemeinsam Casino Speziell https:\/\/rollinocasino-de.de\/promo-code\/ respektiert ist Stay Blackjack, es du angeschaltet verschiedenen Tischen sein gluck versuchen kannst. Jedoch nebensachlich abseits von Blackjack meinen verschenken diese Spanne ein Spiele. Live roulette, z.b. von Evolution, bereitet es echte Casino-Atmosphere schnell nach dir nachhause. F\u00fcr viele Spieler\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-193436","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/193436","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=193436"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/193436\/revisions"}],"predecessor-version":[{"id":193438,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/193436\/revisions\/193438"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=193436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=193436"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=193436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}