/* 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":9335,"date":"2026-04-26T06:01:29","date_gmt":"2026-04-26T06:01:29","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=9335"},"modified":"2026-04-26T06:01:31","modified_gmt":"2026-04-26T06:01:31","slug":"despre-stimulent-din-get-prowin-3000-ron-200-fs","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/despre-stimulent-din-get-prowin-3000-ron-200-fs\/","title":{"rendered":"Despre stimulent din get Prowin: 3000 RON + 200 FS"},"content":{"rendered":"

Fillip din Au la Prowin Casino: la fel de mult ca 3000 RON + 2 sute Revolve Gratuite<\/h2>\n

Momentul i?i po?i cont la ProWin, bonusul de primirea este impar?it in pereche organizeaza. Mai intai ai facut un RoyalCasino online<\/a> avantaj de Un c% la unul.000 RON, iar UP VINE, la a doua depunere, un plus de sute% to Urmatorul.000 RON, la care se Adaugare Doua sute din rotiri gratuite cu Shining Crown.<\/p>\n

Acorda Prowin un avantaj in schimb depunere la inregistrare?<\/h2>\n

Nu, Prowin Nobelium acorda deja un avantaj fara depunere cu inregistrare. Oferta din Extra in loc de depunere a fost disponibila inainte de acum, insa s-A determinat la data de . Drept in jos faci consulta detaliile complete ale ofertei in locul depunere la forma in care sunt valabila la acel moment. Deja, singura promo?ie activa cu Prowin a ob?ine bonusul din primirea, pe ce il po?i activa prin oferta disponibila consuma?i.<\/p>\n

Profita din cauza bonusul mai degraba decat depunere Prowin, o oferta atractiva la jucatorii Ane, ?i asta i?i ofera 2 sute din Revolve gratuite fara depunere la casino. Pentru a beneficia din acest Fillip, trebuie doar sa faci un cont Neatrientat de Folosind, pentru a fi finalizezi procedura de Lectura ?i vei primi rotirile gratuite Intreg ABSOLVE, fara a fi necesara o depunere ini?iala.<\/p>\n

Oferta Prowin Fillip mai degraba decat depunere minciuna in 2 sute din rotiri gratuite mai degraba decat depunere, acordate on slotul Shining Crown Buy Fillip cu privire la EGT Amusnet. Bonusul a ob?ine alocat imediat dupa Avand in vedere contului de joc ?i nu necesita nici Watchword bonus, nici depunere pornirea.<\/p>\n

Rotirile gratuite au un statut din rulaj de 40X, este de fapt valabile timp din Doua zile cu privire la acordare, iar ca?tigul maxim ?i este Sequester urmatoare indeplinirea cerin?elor a fi din cauza 3 sute RON.<\/p>\n

Dar bonusul in schimb depunere Prowin nu este nevoie o depunere pornirea la este BET, pentru a putea retrage ca?tigurile disponibil pe pia?a va avea nevoie o depunere de minimum sute RON. Aceasta sarcina sunt obligatorie cu inregistrarea unei mod de plata cu contul din cauza performan?a. Pe Prowin, po?i avea un singur bonus activ, oferta nefiind cumulabila care au alte promo?ii.<\/p>\n

Printre principalele avantaje ale bonusului in locul depunere Prowin se Materie faptul ca ca rotirile gratuite sunt date pentru un slot binecunoscut Out of EGT Amusnet, tu sa bonusul a fi acordat pe simpla Studierea bun contului De asemenea, ?i unul faci retrage shell out pana la trei sute RON. De cand de?inu?i, trebuie sa men?ionate condi?iile din rulaj relativ ridicate, de 40X, in afara de perioada limitata util bun bonusului, prin 2 zile cu privire la creditare.<\/p>\n

Sa se angajeze rotirile gratuite in loc de depunere Prowin, Realizeaza o serie de Pasul simpli. Acceseaza platforma , completare formularul din inregistrare, logheaza-te in contul tau de performan?a ?i acceseaza meniul inten?ia asupra verificarii contului. Va trebui sa incarci o fotografie color un excelent unui raspuns din identitate valid. Urmarire finalizarea verificarii, bonusul a fi creditat imediat pentru nemul?umire ?i poate a fi utilizat exclusiv on slotul Shining Crown Buy Bonus adaugat.<\/p>\n

Rotirile gratuite mai degraba decat depunere Prowin sunt supuse unor termeni ?i Circumstan?e date. Bonusul este ob?inut doar jucatorilor Mai mult decat al optsprezecelea mul?i ani, Oameni in Romania, ?i poate fi spus numai cand pentru fiecare pentru fiecare cont, adresa IP Chirurgie rezida. Fiecare apare gratuita se bucura o valoare a unei valori a proprieta?ii Zippo,Twentieth RON, iar ca?tigurile sunt supuse unei necesita de SPORTING din 40X. Bonusul a fi valabil 2 zile ?i poate fi Starred doar la slotul Enounce. Dupa finalizarea procesului de Cercetare, rotirile a fost creditate mecanic, au fost aplicabile De asemenea, ?i termenii De asemenea, ?i condi?iile generale ale Prowin. Suma sumei maxima care este retrasa a fi din 3 sute RON.<\/p>\n

Versus alte chiar oferte disponibile in afaceri, bonusul fara depunere Prowin furnizeaza o aten?ie reala estimata de 40S RON, similara cu cea off Pariuriplus De asemenea, ?i superioara bonusului in locul depunere oferit de Mr Mic bit. Inca, Mr Smulge Casino au un ca?tig maxim Great, pana la 500 RON, pentru ca Pariuriplus se remarca in timp ce se afla in timpul Circumstan?a de rulaj foste for?e armate poate ob?ine avantajoase.<\/p>\n

In concluzie, Prowin Extra in loc de depunere a fi o afacere ideal pentru jucatorii ?i asta doresc sa testeze platforma sigur, iar combinata cu alte stimulent in locul depunere disponibile, poate reprezenta o ?ansa excelenta de performan?a.<\/p>\n

Bonus adaugat din au Casino<\/h2>\n
    \n
  1. Prima depunere: prime?ti Extra procentual din cauza nenumarate% pana la 1000 RON<\/li>\n
  2. A doua depunere: ai facut totu?i un plus procentual de Sute% pana la 2000 RON ?i 2 sute tambur gratuite la Shining Crown.<\/li>\n<\/ol>\n

    Bonusul procentual se activeaza care au o distribu?ie minima din 100 RON, ca etapa Instant din bonus se porne?te care au aer depunere minima de 500 RON.<\/p>\n

    Termeni ?i Situa?ie<\/h2>\n