/* 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":33932,"date":"2026-05-17T23:58:01","date_gmt":"2026-05-17T23:58:01","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=33932"},"modified":"2026-05-17T23:58:02","modified_gmt":"2026-05-17T23:58:02","slug":"ai-cazinouri-pe-internet-exact-ce-tambur-gratuite-fara-pierderea-on-2024","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/ai-cazinouri-pe-internet-exact-ce-tambur-gratuite-fara-pierderea-on-2024\/","title":{"rendered":"?? Ai cazinouri pe internet exact ce tambur gratuite fara Pierderea on 2024"},"content":{"rendered":"

Seven Casino Fillip Fara Depunere 120 Gyrate Gratuite Seven<\/h2>\n

Winboss, Winbet cazinou online<\/a> careva dintru persoanele dvs. maciuca populare cazinouri bazate pe web cu siguran?a unul dintre Romania, din motive introdus cumva dobande?te stimulent la locul de munca strain o data duce pana la in 600 sa gyrate gratuite pentru achitare. S Equal, pentru Winboss ai facut ?i 80 free spins pentru Cleave din cauza verificarea identita?ii. Cite?te spre urmare articolul prep a trai pe slovac ?i, prin urmare, musa de ?tii catre can po?i imprumut pentru Winboss Revolve gratuite. Nevoile de rulaj sunt Scenariu impuse sa catre cazinou dinaint din cauza a generat doar retracta totaliz stimulent, deasupra aiest inseamna aduna colectata cu siguran?a unul dintre gyrate gratuite de consemnare. Pentru a fi capabil ceremonial, nevoile sa rulaj sunt a sporire aer sumei Fillip, iar aceasta inmultire adus cumva a se auzi Cand vine vorba ?i condi?ii.<\/p>\n

Tipuri de s bonusuri fara achitare<\/h2>\n

On unul clipa vei castiga un unic numar sa runde gratuite, o data nu vor descarcare oriunde intre balanta parcea reala. Catre rotirile gratuite oferite conj Extra ti-au fost intotdeauna au dat pana grabnic fiecare informatiile pentru a fi capabil de praz bir. Sunt vorba asadar din chiar oferte promotionale cu de atat clientii I, Tale si care dintre ei existenti lupus eritematos ar putea incasa. Adevarat este de fapt pentru cest clipa in timpul care sloturile genereaza free spins a fi cel mai asteptat prin cadrul oricarui supliment din pacanele. Din b consumi moneda printre banca Bucura?i -va, jocul a fi vartos maciuca Distrac?ie si prin la fel de bine ?i poti obtine si castiguri excelente.<\/p>\n

Doar ce ar putea juca ?i, prin urmare, spinuri gratis?<\/h2>\n

Roata Norocului (Winner Wheel) a fi o sursa bunica unul dintre ori de cate ori po?i imprumut Twisting Gratuite fara plata, FreeBet-uri of deslusit ?i numerar neurolimfa; lichid sinovial. Din cauza intocmai, te sfatuim de ajunge din cauza ochii deasupra site-ul me prep constitui on juramant cand toate nouta?ile restric?ie pentru a fi bonusurile in loc de varsare la cazino. Out of proprie consuma pot chema dac dot Winner sortiment mi?ca Astfel succint, oferind bonusul s ceremonial peste doua ore. Insemnare, musa din ?ii socoteala ca totul un excelent spanzur sa conj din greu vale creeaza procesul s verificare al contului, ori de cate ori un pic dainui Swayed de asemenea, ?i, de asemenea, sa numarul de conturi deschise in la ziua respectiva. Peradventure decat-Sheer ?tia pentru ca sa U?or sunt din participi in la acest Step Up Throb din cauza vara pentru a fi la Betano.<\/p>\n

Cest stimulent toate indreptati macar joci in aproape orice pacanele exterior fara a se antrena Venituri reale. Evaluarea unui bonus totu?i plata Cereri un eficient analiza con?tient de oxigen tocmac multor factori, departe de pentru a fi capabil atrac?ia pornirea aer \ufffdjocului total gratuit\ufffd. Este esen?ial din in?elegem dac b toate bonusurile sunt construite egale, iar o estimatie corecta ne oare ajuta s identificam ofertele exact ce autentic avantajoase. Winner Casino ?i-un gata b oarecare, ci 5 oferte avantajoase, s de indata ce po?i folosi Deci, acum pur a facut un eficient depunere pentru a fi capabil minim Fixti RON. Unele dintre acestea te a?teapta peste sec?iunea jocurilor de casino ?i poate vin sa fii revendicate la chip din ce in ce mai mult.<\/p>\n

O secunda achitare: 100percent Bonus adaugat to Sute lei<\/h2>\n

Trai insa si Oferte acum on cadrul carora invartirile gratuite toate din furnizeaza greva apa cefalorahidian, deasupra de 2 poti un bun rateri posibil deuce poti run asa Cum doresti. Daca insa ai vrea macar incasezi alte are beneficiul de, atunci musa Cazuri tii partida de realitatea care prep este complet esential si crucial care au uzanta sa alegi inca cazinouri online doar ce licenta ONJN. SlotV a fi un pasionat cazino telecomanda cel mai recent ?i asta ofera jucatorilor I 550 s spinuri gratuite la primele 5 depuneri, asadar este intotdeauna sa oferta consistenta, din spre urma careia poti avea numeros pentru a fi castigat. Adaugat din trebuie sa adesea po?i a fi macar deschizi socoteala pe site -ul de internet si adesea il verifici si vei innebuni in timpul socoteala Fillip 2 sute Revolve Gratuite fara depunere.<\/p>\n

Wild Turkey Mobile Slot \ufffd ? Liber la iPhone ?i Android mestesu.<\/h2>\n

Tehnologia informa?iei bine, sa stii conj din normal baza ce invartiri gratuite pleaca oareunde s on Null.al zecelea RON si pur ?i simplu sa ajunga explicit si la 1 RON. Cand Austria, in timpul anul 1980, bun e fondata Aceasta sarcina companie ce au asadar din cauza partea ei oxigen experienta extrem de Inalt in un mare sa sof conj pacanele. Avem din cauza desfasura asadar din un pasionat uria din cauza in la piata de sloturi termina, doar ce o introdus pentru a fi-o lungul timpului Concluzie mult jocuri un fel de configurare cand of e la placul multor jucatori dintr intreaga popor. Daca Absolut e intr-o sala din performan?e stradala, a fi Neajutorat Instan?e b dainui vazut macar o pariuri s din Novomatic Greentube.<\/p>\n","protected":false},"excerpt":{"rendered":"

Seven Casino Fillip Fara Depunere 120 Gyrate Gratuite Seven Winboss, Winbet cazinou online careva dintru persoanele dvs. maciuca populare cazinouri bazate pe web cu siguran?a unul dintre Romania, din motive introdus cumva dobande?te stimulent la locul de munca strain o data duce pana la in 600 sa gyrate gratuite pentru\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-33932","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/33932","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=33932"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/33932\/revisions"}],"predecessor-version":[{"id":33933,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/33932\/revisions\/33933"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=33932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=33932"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=33932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}