/* 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":33472,"date":"2026-05-17T23:32:18","date_gmt":"2026-05-17T23:32:18","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=33472"},"modified":"2026-05-17T23:32:19","modified_gmt":"2026-05-17T23:32:19","slug":"din-extra-din-cauza-au-prowin-3000-ron-200-fs","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/din-extra-din-cauza-au-prowin-3000-ron-200-fs\/","title":{"rendered":"Din Extra din cauza au Prowin: 3000 RON + 200 FS"},"content":{"rendered":"

Bonus adaugat de Get la Prowin Casino: la fel de mult ca 3000 RON + 200 Tambur Gratuite<\/h2>\n

Cand i?i po?i nemul?umire la ProWin, bonusul de bun venit a fi Pune?i in deuce coifure. Mai intai ca?tigi un bonus de nenumarate% pana la 1.000 RON, iar dupa aceea, pe a doua depunere, un bonus de Sute% to 2.000 RON, din care se impart Doua sute de Twisting gratuite la Shining Crown.<\/p>\n

Acorda Prowin un bonus in schimb depunere on inregistrare?<\/h2>\n

Nu, Prowin nu acorda De acum un bonus fara depunere la inregistrare. Oferta de Extra in loc de depunere try SportingBull aplica\u021bie<\/a> disponibila inainte de acum, insa s-A determinat la data de . Consuma?i po?i consulta detaliile complete ale ofertei in schimb depunere la tipul de in care try valabila la vremea respectiva. Cu siguran?a, de obicei promo?ie activa on Prowin a fi bonusul de au, pe care il faci activa pe tot parcursul oferta disponibila mai jos.<\/p>\n

Profita din cauza bonusul fara depunere Prowin, o afacere atractiva la jucatorii unitate, ?i asta i?i da 2 sute de Twisting gratuite mai degraba decat depunere cu casino. Pentru a beneficia de acest stimulent, doar tu faci un cont gratuit mai tinereasca din joc, pentru a fi finalizezi procedura de verificare ?i vei primi rotirile gratuite Hale gratuit, fara a ob?ine necesara o depunere ini?iala.<\/p>\n

Oferta Prowin Extra fara depunere sta in 200 din cauza gyrate gratuite mai degraba decat depunere, acordate la slotul Shining Crown Buy Bonus adaugat de la EGT Amusnet. Bonusul a ob?ine activat imediat dupa Vizualizare contului din Action ?i nu va Cereri nici cod bonus, nici depunere ini?iala.<\/p>\n

Rotirile gratuite au o pozi?ie din rulaj din 40X, este de fapt valabile timp din 2 zile de la acordare, iar ca?tigul Limitarea care va fi Secret dupa indeplinirea cerin?elor as din trei sute RON.<\/p>\n

Totu?i bonusul in locul depunere Prowin nu este nevoie o depunere pornirea pe a fi jucarie, pentru a fi capabil retrage ca?tigurile pe pia?a Nevoile o distribu?ie de cel pu?in Sute RON. Aceasta sarcina este obligatorie on inregistrarea unei Metode din plata pe contul de Action. On Prowin, faci avea un unitar bonus energic, oferta nefiind cumulabila care au alte promo?ii.<\/p>\n

Cu siguran?a unul dintre principalele avantaje ale bonusului in locul depunere Prowin se numara Adevarul ca unul rotirile gratuite sunt furnizate cu un slot preferat cu privire la EGT Amusnet, unul la bonusul as oferit pentru simpla Cercetare un bun contului ?i ca faci retrage shell out de pana la 3 sute RON. Ca Dezavantajele, trebuie men?ionate condi?iile de rulaj Aparent ridicate, din 40X, pe langa perioada limitata benefic un eficient bonusului, de doar 48 de ore off creditare.<\/p>\n

Sa se angajeze rotirile gratuite in schimb depunere Prowin, urmare?te o serie de Stride simpli. Acceseaza platforma , Satiat formularul din cauza inregistrare, logheaza-te in contul tau din Folosind ?i acceseaza meniul serios despre verificarii contului. Va trebui sa incarci o fotografie color un excelent unui act din identitate valid. Urmarire finalizarea verificarii, bonusul a fi creditat mecanic on Ob?ine?i ?i poate a fi utilizat total la slotul Shining Crown Buy Bonus.<\/p>\n

Rotirile gratuite in loc de depunere Prowin este de fapt supuse unor termeni De asemenea, ?i Situa?ie selectate. Bonusul poate fi gasit pur ?i simplu jucatorilor peste al optsprezecelea senesce, Oameni in la Romania, ?i poate vin sa fii raportat o singura data pentru fiecare nemul?umire, Acoperire IP altfel rezida. Toate rotirea gratuita are o valoare a unei valori a proprieta?ii Nu,Twentieth RON, iar ca?tigurile este de fapt supuse unei necesita de SPORTING din cauza 40X. Bonusul as aplicabil Doua zile ?i poate vin sa fii Spiel la slotul sa zice. Urmarire finalizarea procesului din Inva?are, rotirile IS creditate mecanic, fiind aplicabile De asemenea, ?i termenii ?i condi?iile generale ale Prowin. Suma maxima care este retrasa as din cauza 3 sute RON.<\/p>\n

Comparativ cu alte De asemenea, oferte disponibile in afaceri, bonusul mai degraba decat depunere Prowin deschis o valoare reala estimata din cauza 40S RON, similara cu cea cu privire la Pariuriplus ?i superioara bonusului fara depunere dat de Mr Al doilea. Inca, Mr Smulge Casino get un ca?tig Limitarea Inalt-pitch, pana la Cinci sute RON, ca Pariuriplus se remarca in timp ce se afla in timpul Circumstan?a din rulaj departe va primi avantajoase.<\/p>\n

La concluzie, Prowin Extra in locul depunere a fi o oferta adecvat jucatorii ?i, prin urmare, doresc sa testeze platforma sigur ?i sigur, iar combinata cu alte oferte in locul depunere disponibile, nu se poate reprezenta Oportunitatea excelenta din Action.<\/p>\n

Bonus din ob?inerea Casino<\/h2>\n
    \n
  1. Prima depunere: prime?ti Extra procentual de Sute% to 1000 RON<\/li>\n
  2. A doua depunere: ai facut totu?i un plus procentual de nenumarate% pana la 2000 RON De asemenea, ?i Doua sute Twisting gratuite la Shining Crown.<\/li>\n<\/ol>\n

    Bonusul procentual se porne?te cu o depunere minima de Sute RON, ca etapa Sec din Extra se porne?te care au aer depunere minima din 500 RON.<\/p>\n

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