/* 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":210983,"date":"2026-06-22T20:52:52","date_gmt":"2026-06-22T20:52:52","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=210983"},"modified":"2026-06-22T20:52:52","modified_gmt":"2026-06-22T20:52:52","slug":"weiterfuhrende-informationen-vergleiche-und-empfehlungen-gibt-es-in-diesem-guter-13","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/weiterfuhrende-informationen-vergleiche-und-empfehlungen-gibt-es-in-diesem-guter-13\/","title":{"rendered":"Weiterfuhrende Informationen, Vergleiche und Empfehlungen gibt es in diesem Guter"},"content":{"rendered":"

Diese https:\/\/woopwincasino-de.com\/app\/<\/a> Umsetzbar-Casinos sind legal? Hier finden sie eine Liste der lizenzierten Casinos und erfahren mehrere \u00fcber Sicherheits- und Schutzma?nahmen, um herauszufinden, die Umsetzbar-Casinos sind zugelassen.<\/p>\n

In diesem Waren erhalten Sie einen genauen \u00dcbersicht \u00fcber diese wichtigsten Casino Versorger, Casino Seiten und Casinoseiten auf zuhilfenahme von deutscher Erlaubnis. Wir erzahlen diese Unterschiede zwischen legalen und illegalen Glucksspielanbietern und vorweisen, wonach Sie in ein Wahl denken mi?ssen. Jedoch M\u00f6glich Spielbanken und Erreichbar Spielotheken uber gultiger Erlaubnis sind angeschaltet der stelle in Deutschland zugelassen, wobei diese Regulierung je nach Grund anders sein kann.<\/p>\n

Kurzbeschreibung<\/h2>\n

Noch fangen wir diese Spanne ein Casino Spiele, speziell Slots, und diese Part ein Spielehersteller f\u00fcr das Spielangebot und diese Organisation de l’ensemble des jeweiligen Spiels heraus. Ein Waren geht daruber hinaus auf diese bekanntesten Top Umsetzbar Casinos, Top Gemeinsam Casino Versorger und Top Slots ein und enthalt einen Test ein erfolgreichsten Versorger.<\/p>\n

Diese Umsetzbar Casinos sind legal? Hier diese Ruckmeldung:<\/h2>\n

Testsieger se rendre Kategorien 2025:Spinrollz? 3fach Provision two hundred and fifty% bis zu usd \ufffd + two hundred fifity FS einzig Freispiele ? gar kein Einsatzlimit ? gar keine Verifizierung<\/p>\n

Ein rundum gelungenes Unternehmen auf zuhilfenahme von witzigem Function. Man muss i?berhaupt kein Rockfan sind, um sich hier wohlzufuhlen, es ist gerade reine Personliche zuneigung, in wie weit diesem es Webseiten-Layout gefallt. Wenigstens fanden wir diese Navigation ganz gelungen, wenn es nebensachlich hier & da Verbesserungsmoglichkeiten gibt. Irgendwo wenigstens noch mehr nachgearbeitet sind muss ist beim Hilfe, bekannterma?en der ist neoterisch, wenigstens zum Moment unseres Casinotests, jedoch in englischer und russischer Sprache erhaltlich. Diese Mitarbeier man sagt, sie sind schon besorgt , in Fragen schnell qualifizierte Hilfe nach geben. Wenns zwar angeschaltet das Sprache hapert, ist es sehr schade – z. hd. beiderlei Eigenschaften. Ehrbar ist ein Vermittlungsgebuhr, einen wir schnell eingesammelt und verspielt haben. Es blieb ein netter Erfolg h\u00e4ngen, ein auch ruckzuck ausgezahlt wird. \u00dcber 19 verschiedenen Zahlungsanbietern deckt Rolling Slots ganz noch moglichen Zahlungsmoglichkeiten nicht im voraus. Auch Bitcoin, Ethereum und andere Kryptos sind akzeptiert.<\/p>\n

Testsieger Schnelluberweisung:SpinsOfGlory? Provision solange bis 2k \ufffd+ 300 Freispiele & Vermittlungsgebuhr Crab ? diese forderfahigen Spiele ? keineswegs Limits, \u00fcber Provision Crab<\/p>\n

Testsieger Computerprogramm-Auswahl:RichRoyal? Provision solange bis 7500 \ufffd+ 225 FS + Provision Crab ? Tischspiele ? Live Spiele ? Slots und mehr<\/p>\n

Testsieger aktuellste Spielauswahl:Ninlay? 3-schublade Provision solange bis usd \ufffd+ 300 FS + 1 Vermittlungsgebuhr Crab ? Stay Drogenhandler ? Sportwetten, Slotautomaten<\/p>\n

Testsieger Reihe Spiele + Provider:Spinplatinum? 100% Pramie solange bis 3 hundred \ufffd+ one hundred Freispiele ? Tv Game titles ? Are living Casino, Tischspiele, Slots<\/p>\n

Es Erreichbar Casino ist vollkommen f\u00fcr Glucksspieler aus Deutschland, diese in hiesigen Umsetzbar Casinos lange zeit zeit beschrankt sind. In Silverplay geben diese ganz ohne Einschrankungen und kommen in einen Genuss einiger Spielarten, diese mittlerweile inoffizieller mitarbeiter Onlinecasino Deutschland deutschland gar nicht mehr leistungen sind. Bloderweise kann man in Silverplay gar keine Demo-Spiele spielen – bzgl. ein Moglichkeit sind andere Kontrahenten diesem Gold Drama Casino einen Schritt vorne. Sonst kann charakter zwar nicht meckern und ohne bedenken ein Runde uber Echtgeld-Anwendung uber seinen schatten springen.<\/p>\n

Testsieger Casino Neuheiten 2025:Greenluck? 3-schublade Bonuspaket 300% bis zu usd \ufffd + 200 FS ? contemporaines actuelles Konzept ? kaum Pausen, frei Limits<\/p>\n

Testsieger Casino Novitat :AstroMania? 250% Provision solange bis 3000 \ufffd+ 350 FS + Pramie Crab ? Jackpots ? Reside Casino, Sportwetten, Slots<\/p>\n

QuickWin ist in unseren Casinotestern wie des diesen ein erfolgreichsten Beginner Moglich Casinos blo? Limits erkoren. Schlicht gehalten, zwar \u00fcber ganz Runde Nervenkitzel gespickt. Adrenalinfreaks durften hier voll auf ihre Kostenaufwand kommen. \u00dcberzeugen konnten auch das kompetente Hilfe und diese einigen Ein- und Auszahlungs-Optionen. G\u00fctesiegel willkommen.<\/p>\n

Super f\u00fcr Neueinsteiger:Casino Infinity? 300 \ufffd Provision + 300 Kosteloze SpinsLive Casino ? 4000+ Video games ? frei Einzahlungslimit ? ohne Einsatzlimits<\/p>\n

Top Gewinnmoglichkeiten:Cashwin? 100% Provision solange bis 1000 \ufffd + 40 Cuma-cuma Spinskein a single \ufffd Einsatzlimit ? Stay Casino & Jackpots ? \u00fcber Beruhmtheit-Club<\/p>\n","protected":false},"excerpt":{"rendered":"

Diese https:\/\/woopwincasino-de.com\/app\/ Umsetzbar-Casinos sind legal? Hier finden sie eine Liste der lizenzierten Casinos und erfahren mehrere \u00fcber Sicherheits- und Schutzma?nahmen, um herauszufinden, die Umsetzbar-Casinos sind zugelassen. In diesem Waren erhalten Sie einen genauen \u00dcbersicht \u00fcber diese wichtigsten Casino Versorger, Casino Seiten und Casinoseiten auf zuhilfenahme von deutscher Erlaubnis. Wir erzahlen\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-210983","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/210983","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=210983"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/210983\/revisions"}],"predecessor-version":[{"id":210987,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/210983\/revisions\/210987"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=210983"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=210983"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=210983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}