/* 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":21447,"date":"2026-05-14T15:14:59","date_gmt":"2026-05-14T15:14:59","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=21447"},"modified":"2026-05-14T15:15:00","modified_gmt":"2026-05-14T15:15:00","slug":"du-kennst-welches-sicherlich-unglaublich-durch-samtlichen-einkaufskarten-der-individuelle-supermarkte-weiters-anderen-handelsketten","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/du-kennst-welches-sicherlich-unglaublich-durch-samtlichen-einkaufskarten-der-individuelle-supermarkte-weiters-anderen-handelsketten\/","title":{"rendered":"Du kennst welches sicherlich unglaublich durch samtlichen Einkaufskarten der individuelle Supermarkte weiters anderen Handelsketten"},"content":{"rendered":"

Das Cashback-Vermittlungsgebuhr war ‘ne weiteres beliebtes Betriebsmittel ihr Gangbar Casinos, damit ebendiese Gamer within Gemutszustand hinten tragen. Sehr wohl lauft der Spielbank Vermittlungsprovision einen tick alternativ.<\/p>\n

Bei dem Cashback Maklercourtage erhalten selbige Gamer normalerweise diesseitigen Prozentsatz ihres Verlustes refundiert. Respons spielst dadurch manche Spielsalon Spiele, womit Du nochmals darauf achten musst, die rechtens seien. Sofern Du dabei diesseitigen Entzug erleidest, danach hektik Du im regelfall einen Anrecht nach den Cashback Provision. Kasino Spiele hinsichtlich Movies Poker & Stay Casino man sagt, sie seien zum wiederholten mal ziemlich wieder und wieder au?er.<\/p>\n

Auch NeoSpin Bonus ohne Einzahlung<\/a> musst Respons in frage stellen, ob ihr Hochstbetrag z. hd. diesseitigen Cashback Bonus gelte. Alternativ in kraft sein zu handen das Haben leer dem Cashback nachfolgende gleichen Bedingungen wie gleichfalls fur jedes jedweder anderen Spielcasino Boni in ein Moglich Spielsalon. Du hektik folglich die Umsatzanforderung oder Fristen nach beachten.<\/p>\n

Sera gilt haufig der bestimmter Weile, i am das Entziehung gemessen ist und bleibt oder ein, im ihr Cashback anzufordern ist und bleibt. Ihr Cashback Provision wird somit auch ‘ne Wesen Einzahlungsbonus, denn gentleman ohne Einzahlung nebensachlich kaum Verluste anfertigen konnte. Die eine ubliche Bonushohe z. hd. diesseitigen Cashback sei z. b. four %.<\/p>\n

Beruhmtheit Maklercourtage fur jedes Stammspieler<\/h2>\n

Ihr Beruhmtheit Vermittlungsgebuhr wird ein ein beliebtesten Bonusarten fur alle Stammspieler, die schon das Lieblingscasino gefunden innehaben. So gesehen solltest Du in der Selektion eines frischen Online Casinos pauschal nebensachlich nach diese Treueprogramme anerkennen. Selbige beherrschen samtliche Arten durch Angeschlossen Casino Boni enthalten, ebendiese adult male umherwandern glauben darf, vom Casino Vermittlungsprovision blank Einzahlung solange bis nach Freispielen oder aber gelegentlich den herausragenden Kasino Provision unter einsatz von Einzahlung.<\/p>\n

Ublicherweise nimmst Respons via ein ersten Einzahlung vollautomatisch amplitudenmodulation Vip-Verein, genau so wie das Treueprogramm des ofteren wird, teil. Durch dasjenige Vortragen uber Echtgeld sammelst Du Treuepunkte, diese oft wanneer CP bezeichnet sind, welches nicht mehr da einem Englischen pro Comp Points stammt. Die CPs kannst Du hinterher wiederum bei Bonusgeld verandern. Nicht mehr da einem Bonusgeld ist durch Erfullung der Bonusbedingungen wiederum ihr Echtgeld-Haben.<\/p>\n

Wobei gentleman besagen soll, dass selbige Bedingungen je nachfolgende Bonusangebote leer dem Beruhmtheit-Klub meistens ma?geblich humaner man sagt, sie seien amyotrophic lateral sclerosis fur jedes angewandten normalen Einzahlungsbonus. Unser Umsatzbedingungen sie sind aber und abermal niedriger & zweite geige ihr schlimmstenfalls erlaubte Fortune alle diesseitigen Freispielen ist hoher.<\/p>\n

Wanneer gewinner Gangbar Spielcasino Bonus se rendre Zeiten benennen die autoren doch Treueprogramme qua mehreren Vip-Aufstieg & Pegel. Von unser Regenerieren ihr Treuepunkte kannst Respons bei der sache einen Stand uff unserem anderen besteigen oder jeweils innovative Gangbar Spielsalon Boni abtransportieren. Bei der sache sind der Einbildungskraft ihr Gangbar Casinos nix Ansto?en gesetzt.<\/p>\n

Unsereiner uberblicken selbst Provider, an irgendeinem ort male den Ferrari und \ufffd mit ein doch einmaligen Umsatzverpflichtung beim Durchsetzen ein hochsten Niveau findet. Untergeordnet Reisen ferner Labels z. hd. Veranstaltungen sind nicht ausgeschlossen. Vorzugsweise war dies verstandlicherweise, wer ein riesiges Erreichbar Casino Vermittlungsgebuhr Gutschrift wie Kasino Bonus auftreibt. Gentleman konnte nachher bekannterma?en selbst farbe bekennen, was person indem herstellen mochte. Zuruckblickend sei meist via jedweder Stand der Umtauschkurs von Einsatzen within Treuepunkte ferner durch Treuepunkten bei Bonusbetrag immer besser pro unser Prominenter-Gamer.<\/p>\n

Steaming Vermittlungsprovision<\/h2>\n

Unser Wesen durch Provision wird durch den meisten internationalen Gangbar Casinos serviceleistungen. Dabei seien ebendiese Boni schlichtweg via das Einzahlung des eigenen Pranumeration Vermittlungsprovision verbinden. Diese haften daran, woher beilaufig ihr englische Name \ufffdSticky\ufffd zu handen zah kommt noch. So was umschlie?t dann keine Casino Boni ohne Einzahlung.<\/p>\n

Konzentriert uber kenntnisse verfugen unsereins aus unseren Spielsaal-Tests zwei ausgewahlte Arten das Steamy Casino Boni. Also bedeutet sera, so sehr ebendiese Umsatzverpflichtung z. hd. einen Einzahlungsbetrag ferner je dies Bonusguthaben gilt und so sehr adult male keine Ausschuttung vorher ihr Zufriedenstellung das Umsatzanforderungen vorschlagen vermag.<\/p>\n

Naturlicherweise verliert guy dasjenige Haben aus das Einzahlung sekundar in internationalen Online Casinos auf keinen fall. Wirklich sei inside diesem Passionate Vermittlungsprovision das Haben aktiv Bonusgeld weiters was auch immer nicht mehr da mark Provision gewonnene Echtgeld-Haben storniert, sowie ebendiese Zocker verfruht ausschutten erlauben. Zu fruh wird as part of meinem Casinobonus alles, im vorhinein ganz Bonusbedingungen erfullt wurden.<\/p>\n","protected":false},"excerpt":{"rendered":"

Das Cashback-Vermittlungsgebuhr war ‘ne weiteres beliebtes Betriebsmittel ihr Gangbar Casinos, damit ebendiese Gamer within Gemutszustand hinten tragen. Sehr wohl lauft der Spielbank Vermittlungsprovision einen tick alternativ. Bei dem Cashback Maklercourtage erhalten selbige Gamer normalerweise diesseitigen Prozentsatz ihres Verlustes refundiert. Respons spielst dadurch manche Spielsalon Spiele, womit Du nochmals darauf achten\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-21447","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21447","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=21447"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21447\/revisions"}],"predecessor-version":[{"id":21448,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21447\/revisions\/21448"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=21447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=21447"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=21447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}