/* 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":276584,"date":"2026-06-23T02:41:30","date_gmt":"2026-06-23T02:41:30","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=276584"},"modified":"2026-06-23T16:37:32","modified_gmt":"2026-06-23T16:37:32","slug":"casino-norway-2026","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/casino-norway-2026\/","title":{"rendered":"Arktisk Casino: Spill og Utbytte i Nordens Kaldste Kj\u00f8ret\u00f8yskapital"},"content":{"rendered":"

N\u00e5r det kommer til \u00e5 finne det perfekte casino-erfaringen, er det mange faktorer \u00e5 ta hensyn til. Men for norske spillere kan Arctic Casino v\u00e6re en attraktiv mulighet. Med sitt bredt utvalg av spill og veldedige bonusprogrammer, er det ingen undrende at mange s\u00f8ker etter tips p\u00e5 hvordan \u00e5 maksimere sin utbytte p\u00e5 denne plattformen. Men er det ikke noe som \u00e5 maksimere sin utbytte p\u00e5 Arctic Casino, men \u00e5 unng\u00e5 utfordringene som kommer med det. Forst\u00e5elsen av avtalen og begr\u00e6nsninger, samt spill sikkerhet, er n\u00f8kkelen til \u00e5 f\u00e5 mest mulig ut av din spilling.<\/p>\n

Spill Strategi for \u00c5 F\u00e5 Ut Av Arctic Casino<\/h2>\n

F\u00e5 Mer Ut Av Din Spilling<\/p>\n

arctic-casinono.com<\/a> kan v\u00e6re en god kilde for \u00e5 finne spill strategi og spillvalg som kan hjelpe deg \u00e5 maksimere din utbytte. Men hvordan kan du sikre at du f\u00e5r mest mulig ut av din spilling p\u00e5 Arctic Casino?<\/p>\n\n\n\n\n\n\n\n
Spill Strategi<\/th>\nBeskrivelse<\/th>\n<\/tr>\n<\/thead>\n
Spill med h\u00f8y tilf\u00f8rsel<\/td>\nSpill som krever h\u00f8y tilf\u00f8rsel av ekte penger kan gi st\u00f8rst utbytte<\/td>\n<\/tr>\n
Spill med lav tilf\u00f8rsel<\/td>\nSpill som krever lav tilf\u00f8rsel av ekte penger kan gi mindre utbytte<\/td>\n<\/tr>\n
Spill med h\u00f8y frekvens<\/td>\nSpill som krever h\u00f8ye frekvenser kan gi st\u00f8rst utbytte<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Utfordringer med Arctic Casino Bonus<\/h3>\n

Forst\u00e5 Avtalen<\/p>\n

Hvordan fungerer Arctic Casino bonus p\u00e5 riktig m\u00e5te? En kompleks avtale kan v\u00e6re vanskelig \u00e5 forst\u00e5, men det er viktig \u00e5 vite hvordan du kan f\u00e5 mest mulig ut av din bonus.<\/p>\n\n\n\n\n\n\n\n
Type Bonus<\/th>\nBetingelser<\/th>\n<\/tr>\n<\/thead>\n
Velkomstbonus<\/td>\n100% av innbetalingen<\/td>\n<\/tr>\n
Utenom bonus<\/td>\n50% av innbetalingen<\/td>\n<\/tr>\n
Fri spins<\/td>\n20 frie spins p\u00e5 et valgt spill<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Begr\u00e6nsninger og F\u00f8lsomheter<\/p>\n

Hvordan \u00e5 unng\u00e5 begrensninger og f\u00f8lsomheter i Arctic Casino bonus? En forst\u00e5else av avtalen og begr\u00e6nsninger er n\u00f8kkelen til \u00e5 unng\u00e5 disse utfordringene.<\/p>\n

\"Beste<\/p>\n\n\n\n\n\n\n\n
Begr\u00e6nsning<\/th>\nBeskrivelse<\/th>\n<\/tr>\n<\/thead>\n
Minstinsats<\/td>\nMinste innsats p\u00e5 et spill<\/td>\n<\/tr>\n
Maksutbetaling<\/td>\nMaksimal utbetaling p\u00e5 et spill<\/td>\n<\/tr>\n
Frist<\/td>\nFrist for \u00e5 bruke bonusen<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Spill Sikkerhet p\u00e5 Arctic Casino<\/h3>\n

Sikker Spilling<\/p>\n

Hvordan \u00e5 sikre at din spilling p\u00e5 Arctic Casino er trygg og sikker? En forst\u00e5else av spill sikkerhet er n\u00f8kkelen til \u00e5 sikre at du f\u00e5r mest mulig ut av din spilling.<\/p>\n\n\n\n\n\n\n\n
Sikkerhetsfaktor<\/th>\nBeskrivelse<\/th>\n<\/tr>\n<\/thead>\n
SSL-uttrykk<\/td>\nSikkerhet p\u00e5 nettstedet<\/td>\n<\/tr>\n
Verifisering<\/td>\nVerifisering av spillere<\/td>\n<\/tr>\n
Spill sikkerhet<\/td>\nSikkerhet p\u00e5 spillene<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Kontrol over Utbytte<\/p>\n

F\u00e5 mer kontrol over din utbytte p\u00e5 Arctic Casino, inkludert spill strategi og spillvalg. En forst\u00e5else av spill sikkerhet og spill strategi kan hjelpe deg \u00e5 f\u00e5 mest mulig ut av din spilling.<\/p>\n

Vanlige Sp\u00f8rsm\u00e5l<\/h2>\n
\n
\n

Hva er Arctic Casino?<\/h3>\n

Arctic Casino er en online casino-plattform som tilbyr et bredt utvalg av spill og veldedige bonusprogrammer.<\/p>\n<\/div>\n

\n

Er Arctic Casino lovlig i Norge?<\/h3>\n

Ja, Arctic Casino er en lovlig online casino-plattform i Norge og f\u00f8lger alle norske loverskrifter.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

N\u00e5r det kommer til \u00e5 finne det perfekte casino-erfaringen, er det mange faktorer \u00e5 ta hensyn til. Men for norske spillere kan Arctic Casino v\u00e6re en attraktiv mulighet. Arctic Casino.<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":276580,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[255],"tags":[257,256,258,259,260,262,261],"class_list":["post-276584","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arctic-casino","tag-arctic-bet-casino","tag-arctic-casino","tag-arctic-casino-no","tag-arctic-casino-norge","tag-casino-arctic-bet","tag-casino-spill","tag-online-casino-norge"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/276584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=276584"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/276584\/revisions"}],"predecessor-version":[{"id":276588,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/276584\/revisions\/276588"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media\/276580"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=276584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=276584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=276584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}