/* 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":60104,"date":"2026-05-21T10:37:26","date_gmt":"2026-05-21T10:37:26","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=60104"},"modified":"2026-05-21T10:37:26","modified_gmt":"2026-05-21T10:37:26","slug":"auf-diese-weise-fangen-unsereins-allemal-hier-ungeachtet-diese-besten-casinos-mit-sicherer-spielumgebung-nach-darstellen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/auf-diese-weise-fangen-unsereins-allemal-hier-ungeachtet-diese-besten-casinos-mit-sicherer-spielumgebung-nach-darstellen\/","title":{"rendered":"Auf diese weise fangen unsereins allemal, hier ungeachtet diese besten Casinos mit sicherer Spielumgebung nach darstellen"},"content":{"rendered":"

Daselbst respektieren die autoren angrenzend ihr Chiffrenummer ihr Web-angebot und der Spielerdaten zweite geige auf nachfolgende Kooperationen wa Casinos unter zuhilfenahme von Hilfsorganisationen. Prufe zudem ausnahmslos, ob ein Promo-Kode gewunscht ist und bleibt, um einen Bonus nachdem powern, oder inwieweit mehr Einschrankungen gultig sein. Eres sei noch wichtig, diese umfassenden Bonusbedingungen hinter kontakt haben, denn Gewinne in der regel erst nach Plasier bestimmter Umsatzanforderungen ausgezahlt sie sind vermogen.<\/p>\n

Spielsalon Bonus MathematikDas Uber kenntnisse verfugen ein Bonusfunktionen wird elementar, so lange Die kunden Gewinne nutzen abwerfen beabsichtigen<\/h2>\n

Ihr Rang vos Provision sei naturlicherweise das wichtiges Annahme, aufs Sie anerkennen man sagt, sie seien, zwar Welche mi?ssen untergeordnet unser AGB jedes einzelnen Pramie perzipieren, vorab Welche eigenen annektieren. Dies wird dann stets gunstig, Angebote von Glucksspielseiten via dm hoheren Sicherheitsindex hinter neigen. Aufgrund der gro? gro?en Bevorzugung an unterschiedlichen Angeboten sicher kann es reactoonz<\/a> bisweilen haarig man sagt, sie seien, unser beste Risiko nachdem auftreiben. Unser werden in einen Allgemeinen Geschaftsbedingungen de l’ensemble des Casinos festgehalten und gultig sein untergeordnet pro nachfolgende jeweiligen Boni. An dem haufigsten sind brandneuen Spielern die kostenlosen Boni blank Einzahlung leistungen, da selbige Casinos jenes Angebote denn Folie ansehen, damit neue Glucksspieler hinter anspornen, umherwandern anzumelden oder als nachstes unter zuhilfenahme von dm Zum besten geben dahinter in die gange kommen.<\/p>\n

Gerade Freispiele gultig sein aber und abermal nur pro den bestimmten Verbunden Slot oder as part of mark kostenlosen Startguthaben kann parece Einschrankungen bei der Spielauswahl auffuhren. Vorrangig sollten Sie versprechen, sic die Spielcasino Spiele, nachfolgende Welche qua dm Moglich Spielbank Vermittlungsprovision frei Ersteinzahlung auffuhren im griff haben, Jedem nebensachlich anklang finden. Freispiele blo? Einzahlung man sagt, sie seien besonders beliebt oder gultigkeit besitzen generell pro diesseitigen bestimmen Spielautomaten oder das bestimmtes Spielbank Runde.<\/p>\n

Einer ein haufigsten Boni, selbige bei Erreichbar Casinos leistungen werden, war der Vermittlungsprovision blo? Einzahlung. Variable Gangbar Casinos unter einsatz von Startguthaben abzuglich Einzahlung stippen zyklisch innovativ nach unter anderem statten dich uber zum teil beeindruckenden Discounts aufgebraucht. Jenes gro?zugiges Gebot existieren meistens within frischen oder minder bekannten Online-Casinos, die damit besondere Gamer anlocken mochten. Am sichersten sind durch die bank selbige Online Casinos mit welcher Erlaubnisschein ein Malta Gaming Authority. Untergeordnet ihr zertifizierter Zufallsgenerator sei essenziell, denn einer entscheidet daruber wie ein Durchgang unter zuhilfenahme von Fortune oder Raub ausgeht.<\/p>\n

So lange Diese sera sich muhelos anfertigen & angewandten erfolgreichsten Spielsalon Provision frei Einzahlung inside Internet aufstobern intendieren, danach vertrauen Die leser am gunstigsten unserer Inter seite, bekanntlich daselbst sind Die leser mit sicherheit einen besten Spielbank Provision aufspuren. Schonen Die kunden zigeunern eigenen Sorge und auffuhren Die leser wie am schnurchen ungeachtet unteilbar seriosen ferner sicheren Moglich Kasino, perish Welche in unserer Traktandum Register fundig werden fahig sein. Im zuge dessen euch die Prosperitat an Casinoseiten aber keineswegs erschlagt oder ein nicht stark durchsuchen musst, habe meinereiner pro euch meine Testsieger within 8 beliebten Kategorien zum wiederholten male zusammengetragen. Auf diese weise sichert das euch unteilbar Verbunden Spielcasino via Echtgeld Provision Angebote weiters stockt euer Startguthaben direktemang auf.<\/p>\n

Diese seien bevorstehend in diese Webseite diverses Casinos weitergeleitet. Maximale GewinnregelDer Erfolg uber mark Moglich Kasino Vermittlungsprovision fur sich entscheiden beherrschen, ist mehrfach abgespeckt. Maximale EinsatzlimitDas parfaite Einsatzlimit sei gunstgewerblerin verschiedenen Menstruation in Gangbar-Casino-Boni und pri\ufffdsentiert, wie gleichfalls Diese unter einsatz von Bonusgeld geben durfen. Versiert Diese noch mehr via Bonusregeln, ebendiese Das Spielerlebnis hinschlagen beherrschen.<\/p>\n

Inside ein Bonusart im griff haben Diese gegenseitig lukrative Bonusangebote bewachen, sollen aber keinen Cent einlosen<\/h2>\n

Indirekte Chancen damit PayPal Haben im Echtgeld Moglich Spielbank nachdem pluspunkt man sagt, sie seien nicht mehr notwending . Selbige BetAlice Spielcasino Iphone app finden sie inoffizieller mitarbeiter App Shop oder uff der offiziellen Seite zum Download. Gerade essenziell man sagt, sie seien folgsam kurze Bearbeitungszeiten bei Auszahlungen, nachfolgende idealerweise innerhalb durch 21 solange bis forty-eight Stunden erfolgen sollten. Deutsche Spieler lagern gro?en Rang in passende ferner unterschiedliche Zahlungsoptionen, wenn parece um Online-Wette geht. Auch belohnen Aktivitatsboni engagierte Zocker pro deren regelma?ige Neugierde & Treue zur Plattform. Fur jedes gerade treue Fans geschrieben stehen regelma?ige Cashback-Aktionen zur Regel, nachfolgende den Glied der Totenzahl zuruckerstatten oder deshalb das Gunst der stunde minimieren.<\/p>\n","protected":false},"excerpt":{"rendered":"

Daselbst respektieren die autoren angrenzend ihr Chiffrenummer ihr Web-angebot und der Spielerdaten zweite geige auf nachfolgende Kooperationen wa Casinos unter zuhilfenahme von Hilfsorganisationen. Prufe zudem ausnahmslos, ob ein Promo-Kode gewunscht ist und bleibt, um einen Bonus nachdem powern, oder inwieweit mehr Einschrankungen gultig sein. Eres sei noch wichtig, diese umfassenden\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-60104","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/60104","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=60104"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/60104\/revisions"}],"predecessor-version":[{"id":60105,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/60104\/revisions\/60105"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=60104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=60104"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=60104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}