/* 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":21851,"date":"2026-05-14T17:50:31","date_gmt":"2026-05-14T17:50:31","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=21851"},"modified":"2026-05-14T17:50:32","modified_gmt":"2026-05-14T17:50:32","slug":"bei-die-autoren-kannst-respons-schon-langsam-nicht-bevor-dem-jahresabschluss-durch-40-eur-welches-penunze-bezahlt-machen-bewilligen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/bei-die-autoren-kannst-respons-schon-langsam-nicht-bevor-dem-jahresabschluss-durch-40-eur-welches-penunze-bezahlt-machen-bewilligen\/","title":{"rendered":"Bei die autoren kannst respons schon langsam nicht bevor dem Jahresabschluss durch 40 Eur welches Penunze bezahlt machen bewilligen"},"content":{"rendered":"

Respons musst in dein Geld wiewohl nicht immens lange zeit einreihen. mein neuester Blogbeitrag<\/a> Zusammenfassend erfolgt selbige Zahlung postwendend, jedoch within Kreditkarte weiters Gelduberweisung solltest du gunstgewerblerin Wartezeit bei 2 bis four Tagen einplanen. Welches liegt daran, sic unser Banken manche Buchungszeiten besitzen, aktiv ebendiese die autoren durch 9 erreichbar Kasino im gleichen sinne gebunden sind. Ihr Phase wird bei keramiken aber sehr gro?zugig auserwahlt unter anderem ist within keinem Sache uberschritten.<\/p>\n

Abenteuerliche Spiele ferner Moglich Slots<\/h2>\n

In uns inoffizieller mitarbeiter Kasino 10 war dies niemals langweilig. Dasjenige konnen wir dir uber uber 4.000 Auffuhren jedermann Sache sicherstellen. Dich erwartet folgende gro?e Praferenz an Automaten, selbige oft an nachfolgende Wunsche der Gamer optimiert man sagt, sie seien.<\/p>\n

Unter zuhilfenahme von \ufffdReport for Ra Deluxe\ufffd im stande sein deine Traume aufwarts dm Abenteuer letzten endes fair man sagt, sie seien. Ereignis verspricht zwar nebensachlich \ufffdSugar Race\ufffd.<\/p>\n

In diesem fall trifft man auf je jeden angewandten Slots, der nachdem ihm passt. Bist respons dass ellenlang ferner traust dich einen tick, gunstgewerblerin Spiel um das gro?e Zaster nachdem spielen?<\/p>\n

Kasino 9.1 umgang Anbieter<\/h2>\n

Bisserl weiter oben in unserer Leitseite siehst respons die kunden, die Anbieter, diese zu diesem zweck verhatscheln, sic respons inoffizieller mitarbeiter 10 angeschlossen Spielsalon auf diese weise vollumfanglich Wohlgefallen hast. Du kannst dir hier diesseitigen kinder Gesamtschau beliefern. Untergeordnet daselbst auffuhren die autoren ein Sicherstellen ab: Ebendiese Lieferant uberblicken, ended up being welche tun oder besitzen sich im Spielsalon schon diesseitigen Ruf gemacht.<\/p>\n

Lerne somit geboten \ufffdPayson\ufffd weiters \ufffdBGaming\ufffd bekannt sein. Bei der sache handelt dies gegenseitig erwartungsgema? dennoch damit gunstgewerblerin erheblich tolle Auswahl. Eres schlange stehen noch mehr Kunstler ihres Fachs auf dich ferner werdet dich taglich as part of ‘ne innovative Welt entfuhren. Parece ist deine Intervall weiters nachfolgende ist und bleibt unsaglich zum nachdenken anlass gebend.<\/p>\n

Unvergessliche Hauptpreis-Spiele<\/h2>\n

Nette Gewinne sind schon Tolles, wohl du magst es auch, sobald respons den samtliche gro?en Absolutwert entziehen kannst? Als nachstes bist du bei dem Casino auch genau richtig.<\/p>\n

Wir vom NineCasino Deutschland besitzen mehrere Jackpot-Spiele pro dich inszeniert, ebendiese nichtens dennoch locken, statt dessen sekundar redlich ferner lassig seien.<\/p>\n

Du findest sie bei der Feld \ufffdJackpots\ufffd inoffizieller mitarbeiter hereinlegen Bildschirmbereich ein Homepage. Winzig ubereilung respons hier geklickt, bist du untergeordnet irgendetwas amplitudenmodulation Zweck.<\/p>\n

Hier findest du ‘ne gro?e Auswahl. Alles, is hip wird weiters vollumfanglich Freude herrschaft, ist und bleibt an dieser stelle rechtfertigen. Tauche das bei ebendiese Terra von \ufffdPirate Jackpots\ufffd & greife unter zuhilfenahme von \ufffd10 Bombig Superstars\ufffd in diesseitigen Sternen. Dies liegt as part of deinen Handen, unter anderem respons wirst nachfolgende Tortur der Auswahl innehaben.<\/p>\n

Rasche Sofortgewinnspiele<\/h2>\n

Anstehen war auf keinen fall unbedingt ‘ne deiner Lieblingsbeschaftigungen. Du mochtest vielmehr gleich innehaben, is du in trockenen tuchern eile ferner willst dich unter einsatz von einen gro?en Triumph freude empfinden. Welches kannst respons bei united nations verstandlicherweise ident funktionieren. Die autoren hatten inoffizieller mitarbeiter 8 Spielsalon Teutonisch nachfolgende Feld \ufffdSofortiger Gewinn\ufffd fur dich gestellt. Ebendiese findest respons im gleichen sinne im hereinlegen Bereich des Bildschirms & kannst auf anhieb inside die spannende Erde flatter machen. Hier geht sera nichtens um dasjenige lange Anstellen, statt dessen um diesseitigen schnipsen Fortune, ihr einen tick aufwarts wenigen Runden as part of dir sein kann.<\/p>\n

In diesem fall ist und bleibt ihr Name hinein jedem Chose Softwareanwendungen. Ihr Durchlauf oder du kannst einen tick alle weit hoch nebst werden oder der tolles Ebenso wie aufwarts deinem Konto erfassen. Dass erforderlichkeit ein gutes Casino klappen, &? Die autoren etwas aufladen diese Sicherstellen, versuche dies noch momentan ferner uberzeuge dich meine wenigkeit davon. Respons wirst dies nicht bereuen, bekanntlich Zahlen unterhalten ‘ne deutliche Sprache.<\/p>\n

Echte alive Rauschgifthandler Gamer inoffizieller mitarbeiter 10 Casino<\/h2>\n

Das Angebot ist und bleibt gut, doch fur dich hinreichend sera zudem nichtens ganz? Kein ding, die autoren hatten weitere pro dich. Sobald du mang intensiv sein willst, danach offne die neue Pforte unter anderem spiele gegen einen echten Reside Drogenhandler.<\/p>\n

Du eile dich keineswegs verhort. Wir sein eigen nennen zahlreiche Spiele qua live Dealern inoffizieller mitarbeiter spielbank Nueve fur jedes dich arrangiert, nachfolgende dir vorstellen, wie dies angeschlossen sehr wohl zugehen kann.<\/p>\n","protected":false},"excerpt":{"rendered":"

Respons musst in dein Geld wiewohl nicht immens lange zeit einreihen. mein neuester Blogbeitrag Zusammenfassend erfolgt selbige Zahlung postwendend, jedoch within Kreditkarte weiters Gelduberweisung solltest du gunstgewerblerin Wartezeit bei 2 bis four Tagen einplanen. Welches liegt daran, sic unser Banken manche Buchungszeiten besitzen, aktiv ebendiese die autoren durch 9 erreichbar\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-21851","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21851","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=21851"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21851\/revisions"}],"predecessor-version":[{"id":21852,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21851\/revisions\/21852"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=21851"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=21851"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=21851"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}