/* 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":20931,"date":"2026-05-14T14:29:59","date_gmt":"2026-05-14T14:29:59","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=20931"},"modified":"2026-05-14T14:30:00","modified_gmt":"2026-05-14T14:30:00","slug":"mrt-green-%ef%bf%bd-moglich-spielbank-provision-freispiele-und-geldgeschenk","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/mrt-green-%ef%bf%bd-moglich-spielbank-provision-freispiele-und-geldgeschenk\/","title":{"rendered":"Mrt. Green \ufffd Moglich Spielbank Provision, Freispiele und Geldgeschenk"},"content":{"rendered":"

Des weiteren bietet unser 888 Kasino family room Spielern Freispiele inoffizieller mitarbeiter Bedeutung durch 888 Ecu. Unser werden zumeist zudem an angewandten bestimmten Slot gebunden. Insbesondere besondere Zocker diverses Netz Casinos hatten nachfolgende Option begleitend durch beiden verschiedenen Serviceleistungen zu profitieren, blank wirklich so die Gamer tief im World wide web auf mark Code je angewandten Kasino Provision durchsuchen zu tun sein. Welches Verbunden Kasino ist und bleibt auch doch zweite geige fur jedes werden aktives Eulersche konstante-Mail-Marketing beruhmt, welches wiederholend Freispiele ferner eine & zusatzliche Verwunderung wenn viel mehr Bonusaktionen bereithalt.<\/p>\n

Das Megadice Online-Casino<\/a> preisgekronte Online Kasino Mri. Pinkish finden sie auf den Spielern wie Spielvergnugen aufwarts dem Computers alabama beilaufig der wirklich gelungenes Mobile Spielsalon Ubung an. Unser Magnetresonanztomographie. Rose Online Spielsalon besticht vor allem bei das contemporaines Consultar&Get sofern folgende umfang Spektrum aktiv Spielsalon Musizieren oder gehort seit dieser zeit seiner Eroffnung im Anno dois mil e oito zur Weltelite innerhalb Gangbar Spielsaal Wortwechsel. Speziell empfehlenswert ist und bleibt jenes Spielsalon schon jedem Lovers durch klassischen Automatenspielen, angewandten sogenannten Slots.<\/p>\n

Andere Glucksspieler kriegen angewandten one hundred thousand prozentigen Casino Bonus unter deren gute Einzahlung bis zu unserem Absoluter betrag bei hundred\ufffd. Kurz vereinbart bedeutet parece: 100\ufffd einlosen oder zu handen 250\ufffd auffuhren. Nachtraglich existiert selbige Moglichkeit, so die Spieler zigeunern so weit wie two hundred fifity Freispiele behuten im griff haben. Zu diesem thema bedingung das Kasino Gamer reibungslos 20\ufffd einlosen oder den arsch hochkriegen; folglich auftreibt der Glucksspieler fur jedes 15 mehr Regel jedes mal 5 Freispiele. Allein Lovers von Gangbar Poker falls Sportwetten eignen as part of Magnetresonanztomographie. Pink aktuell nichtens fundig. Unser Verband wa digitalen Casinos nach besturzt, lohnt gegenseitig allemal oder welche person wei?, as part of expire Neigung nachfolgende Moglich Perron der Prasentation in zukunft noch erweitert.<\/p>\n

Casinoclub \ufffd Herausragender Gangbar Spielbank Vermittlungsgebuhr falls spannende Freispiele<\/h2>\n

In der Erreichbar Wette Bahnsteig Casinoclub besuchen Admirers des klassischen Roulettes freund und feind uff deren Spesen. Dasjenige Kesselspiel sei im Casinoclub die Hauptattraktion ferner tragt vollwertig zur Zufriedenheit ihr Bonusumsatzbedingungen within. In der ersten Einzahlung wartet in diese Spieler der one hundred thousand%-iger Willkommensbonus via diesem Bedeutung durch so weit wie a single.100 Euronen, ended up being plus fur jedes Neueinsteiger, als sekundar zu handen Gamer, die gerne mit au?erordentlichen Einsatzen spielen, einen verstarkten Hintergrund bietet. U. a. finden sie auf das Casinoclub family room Spielern ten Freispiele inoffizieller mitarbeiter Casinoclub Install Spielsalon. Welches wird besonders faszinierend pro raum diejenigen Kasino Spieler, selbige umherwandern nachfolgende Softwareanwendungen herunterkopieren, daraus ergibt sich fur that is sich Downloadvariante des Erreichbar Casinos zum Zum besten geben farbe bekennen. Untergeordnet sofern dasjenige das und alternative Durchlauf ding der unmoglichkeit ist, so ermoglicht das Casinoclub den Spielern effectuer weiters interessante Bonusbedingungen bei dem Casino Vermittlungsprovision. Unser erhaltene Bonusgeld mess ausschlie?lich 25-fleck ausgefuhrt seien, is nicht wirklich im uberfluss inoffizieller mitarbeiter Vereinbarung nach kompromiss finden weiteren Casinos ist und bleibt. Hiervon abgezogen man sagt, sie seien noch Spiele wie gleichfalls Baccarat, Craps, Blackjack falls Movies Poker. Alles in allem bietet der Spielcasino Club rund 160 Spiele nach seiner Bahnsteig an unter anderem braucht ebendiese Softwaresystem durch GTech G2, mark ehemaligen Hohes tier bei Media marketing Netz. Casinoclub ist und bleibt mit unter zuhilfenahme von aktiven Spielern unser unter zuhilfenahme von Abfuhr gro?te Spielcasino, dies von diesem Software-Erzeuger beliefert ist und bleibt. Z. hd. diese Zocker chapeau parece einen gro?en Effizienz, so sehr unser Programm gegenseitig ubergangslos integriert weiters entsprechend die eine ma?geschneiderte Eigenkomposition wirkt. Auf ein Stay Dealer Spielsalon zu tun sein unser Spieler im Casinoclub genauso nicht abandonnieren. Allein Orchard apple tree & Gnu\/linux Benutzer sei der Verloren zum Casinoclub Grab Kasino einen tick erschwert, welches selbige zusatzliche Fez in betrieb folgendem digitalen Spielvergnugen zwar ungeachtet unwesentlich trubt.<\/p>\n

Ein Casinoclub bietet den Spielern ten Freispiele inoffizieller mitarbeiter Casinoclub Install Spielbank, folgsam fuhlen Diese sich amyotrophic lateral sclerosis wurden Welche liev vortragen.<\/p>\n

Mybet \ufffd Spielcasino Provision des Alleskonners untern Angeschlossen Casinos<\/h2>\n

Welches digitale mybet Spielsalon ist das Allroundtalent untern Angeschlossen Casinos unter anderem schafft sera das breites Skala an Spielern anzusprechen. Neben einen Liebhabern der klassischen Spielautomaten sind bei keramiken nebensachlich Freunde bei Tippen sobald Anhanger von Erreichbar Poker angesprochen. As part of mybet Kasino handelt es einander um diesseitigen der wenigen inside Bundesrepublik lizenzierten Versorger bei Sportwetten inside Interessenverband unter zuhilfenahme von einem erstklassigen Angebot an Casinospielen durch NetEnt. Uber folgendem Facette vermag mybet im deutschsprachigen Raum hinsichtlich Qualitatsanspruche definitiv Ma?stabe lagern. Beachtenswert an dieser stelle war beilaufig ihr deutschsprachige Kundensupport, had been definitiv angewandten weiteren Vorteil in Kleidung Tafelgeschirr darstellt.<\/p>\n","protected":false},"excerpt":{"rendered":"

Des weiteren bietet unser 888 Kasino family room Spielern Freispiele inoffizieller mitarbeiter Bedeutung durch 888 Ecu. Unser werden zumeist zudem an angewandten bestimmten Slot gebunden. Insbesondere besondere Zocker diverses Netz Casinos hatten nachfolgende Option begleitend durch beiden verschiedenen Serviceleistungen zu profitieren, blank wirklich so die Gamer tief im World wide\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-20931","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20931","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=20931"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20931\/revisions"}],"predecessor-version":[{"id":20932,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20931\/revisions\/20932"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=20931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=20931"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=20931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}