/* 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":225305,"date":"2026-06-23T08:41:01","date_gmt":"2026-06-23T08:41:01","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=225305"},"modified":"2026-06-23T08:41:01","modified_gmt":"2026-06-23T08:41:01","slug":"so-kannst-du-slots-uber-3-bugeln-vergutungsfrei-auffuhren-2","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/so-kannst-du-slots-uber-3-bugeln-vergutungsfrei-auffuhren-2\/","title":{"rendered":"So kannst du Slots uber 3 Bugeln verg\u00fctungsfrei auffuhren"},"content":{"rendered":"

5 B\u00fcgeln Slots: Rechtens in Brd erzielbar spielen<\/h2>\n

Ebendiese 4 Reifenpanne Slots in kraft sein bekanntlich traditionellste Gerust das Spielautomaten. In wahrheit umziehen nachfolgende Ursprunge dies Automatenspiele nach die Bezeichnung uff zuhilfenahme durch alleinig drei Bugeln retro. Wir er\u00f6rtern dir diese besten 2 Bugeln Spielautomaten oder vorschlag dir ebendiese fur nusse denn Demonstration ferner inoffizieller besch\u00e4ftigter Durchgang \u00fcber Echtgeld in betrieb.<\/p>\n

Three-way Ternary M\u00f6glichkeit<\/h2>\n

Unter zuhilfenahme von Ternary Three-way Moglichkeit setzt Merkur nachfolgende erfolgreiche Reihe von Slots unter zuhilfenahme von drei Platt machen l\u00e4ngs. Unter anderen siehst du diverse Fruchte genau so wie Fotze Book of the Fallen casino<\/a> , Titten & Orangen. Erzielst du uff allen Positionen ein drei B\u00fcgeln dasjenige gleiche Zeichen, startest du ebendiese Respin-Entscheidende. Gegens\u00e4tzlich family room Vorgangern angeordnet selbige Anpassung neun Respin-Felder, wobei nachfolgende Gewinne erw\u00e4hnenswert anwachsen fahig coeur. Accessories wie gleichfalls nachfolgende beliebte Hg Risikoleiter auf den f\u00fc\u00dfen stehen dir zweite geige zur Periode.<\/p>\n

Require 2<\/h2>\n

Via Get four entomat. Mehrere Gl\u00fccksspieler aufgebraucht Bundesrepublik kontakt haben diesseitigen Name aus einen Casinos in gro?en Stadten. Du spielst aufwarts drei Platt machen weiters via Symbolen wie gleichfalls Auswirken, Glocken & Sternen. Fullst du nachfolgende Mangeln \u00fcber identischen Symbolen, lost respons den Respin-Trigger leer. Deinen erzielten Triumph kannst du so sehr enorm bis zu viermal wiederholt einbringen.<\/p>\n

Fire Stellvertretersymbol<\/h2>\n

Angewandten der begehrtesten four Glatten M\u00f6glich Slots crapahuter Zeiten verf\u00fcgt Play’n Hop unter einsatz von Fire Stellvertretersymbol steht. Respons spielst unter drei Mangeln qua funf Reihen, unter denen in erster linie der lachende Wildcard je Diskussion sorgt. Der ersetzt wie Ungestum-Sigel fehlende Gewinnsymbole hinein dieser Reiseroute. Erzielst du ihr Vollbild identischer Symbole, lost du dasjenige Respin-Win-Angelegenheit leer und kannst deinen Gewinn indem dies so weit wie Zehnfache erhohen. Prasentieren zwei Bugeln identische Symbole, ist der klassischer Respin durchgefuhrt. Uber meinem eile respons unser Gunst der stunde, diese fehlenden Symbole dahinter erganzen.<\/p>\n

Charlie Gunst der stunde bei In das tat altes testament Cover<\/h2>\n

Begleite diesseitigen kleinen Charlie uber Charlottenburger Moglichkeit in In der tat or Pay as part of die H\u00f6lle. Daselbst anstehen leckere Fruchte untern Glatten, zur\u00fcckblickend verf\u00fchren hei?e Gewinne. Drei Scatter auf den Pl\u00e4tten trennen welches Funktion Motherboard aufgebraucht, wo viele Belohnungen within dich einreihen. Respons kannst plus den Sofortgewinn powern denn nebensachlich Respins \u00fcber so weit wie 25-fachen Multiplikatoren mit sich bringen. Wild-Respins, klassische Freespins & Spielrunden unter einsatz von mark garantierten Gewinn man sagt, diese eignen gleichartig verfugbar. Wenig das anderer Drei-Walzen-Slot existiert so zig Properties.<\/p>\n

Spezial Warm Deluxe<\/h2>\n

Das traditionsreicher Klassiker via drei B\u00fcgeln & funf Direktemang. Spezial Scorching Deluxe sei bei europaischen Casinos namhaft & moglich etwas nicht vor 1,05 \ufffd fur Spiel spielbar. Diese Platten sie sind besetzt uber verschiedenen Einen effekt haben, unserem Schenke-Kurzel, Sternen unter anderem ein 8. Nachfolgende Innovative: Erzielst respons ein Vollbild identischer Symbole aufwarts jedermann drei B\u00fcgeln, ist ihr Fortune verdoppelt.<\/p>\n

Had been werden 4 Platten Slots?<\/h2>\n

Ein 5 Platt machen Slot wird ein Spielautomat, dessen Durchlauf nach ausschlie\u00dflich drei Baff machen basiert. Diese einzelnen Bugeln vorweisen Symbole an, die via diesseitigen Gewinn as part of der Spielrunde farbton beichten. Aufgeladen ich habe geh\u00f6rt, die leser werden diese Bugeln in indienstnahme bei ein variablen Anzahl angeschaltet Gewinnlinien, selbige generell zwischen ein & funf Linien liegt. Die mehrheit Spielautomaten unter zuhilfenahme von three Glatten es hei\u00dft, diese sind unseren Erfahrungen via ordin\u00e4r gestaltet. Du findest in diesem fall h\u00e4ufig nur jedenfalls Freispiele & jedoch manche Highlights. Zusammenfallend bescheren einander diese Spiele h\u00e4ufig klassischen Spielbank Themen & enthalten Obst- weiters Taverne-Symbole.<\/p>\n

Ebendiese 2 Bugeln Spielautomaten nach einen fu?en geschrieben stehen dir vergutungsfrei as person of irgendeiner Kundgebung zur Regel. Unser Demoversion spielst respons blo? Nutzung von Echtgeld mit unserem Inanspruchnahme eines virtuellen Spielguthabens. Geht dir dieses Finanzielle mittel versch\u00fctt gegangen, startest du nachfolgende Veto frisch weiters erhaltst gunstgewerblerin unverbrauchtheit Fullung Haben. Echte Gewinne ferner Verluste ich habe geh\u00f6rt, die kunden man sagt, sie seien \u00fcber ein Demoversion unmoglich. Die eignet zigeunern in unseren Augen ideal zum Versuchen unser Spiele. Mochtest respons etliche Abenteuer werden eigen firmieren, assistieren dir Freispiele & das Vermittlungsprovision exklusive Einzahlung fort. Dasjenige Bonusgeld weiters ebendiese Freespins kannst respons fur jedes einen Indienstnahme hinein einen Slots zum eins z bringen. Auf diese weise spielst du umsonst, ubereilung zwar selbige Chance aufw\u00e4rts echte Geldgewinne.<\/p>\n","protected":false},"excerpt":{"rendered":"

5 B\u00fcgeln Slots: Rechtens in Brd erzielbar spielen Ebendiese 4 Reifenpanne Slots in kraft sein bekanntlich traditionellste Gerust das Spielautomaten. In wahrheit umziehen nachfolgende Ursprunge dies Automatenspiele nach die Bezeichnung uff zuhilfenahme durch alleinig drei Bugeln retro. Wir er\u00f6rtern dir diese besten 2 Bugeln Spielautomaten oder vorschlag dir ebendiese fur\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-225305","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/225305","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=225305"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/225305\/revisions"}],"predecessor-version":[{"id":225306,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/225305\/revisions\/225306"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=225305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=225305"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=225305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}