1<!DOCTYPE html> <html class="ltr no-js" dir="ltr" lang="fi-FI"> <head> <meta content="initial-scale=1.0, width=device-width" name="viewport" /> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <title>DNA Wholesale</title>
1<script type="text/javascript" src="/ruxitagentjs_ICA7NVfhqrux_10345260810170330.js" data-dtconfig="app=6f6670dcc6516ee5|cuc=v2hgvzz1|owasp=1|mel=100000|featureHash=ICA7NVfhqrux|dpvc=1|md=mdcc1=bs.pageName,mdcc2=bs.visitorID,mdcc3=bs.campaign,mdcc4=bdocument.referrer,mdcc5=dutm_campaign,mdcc6=dutm_content|lastModification=1789986244871|tp=500,50,0|rdnt=1|uxrgce=1|srbbv=2|agentUri=/ruxitagentjs_ICA7NVfhqrux_10345260810170330.js|reportUrl=/rb_e368bf1e-8d75-4338-8f92-27cef02c669d|rid=RID_-1214197619|rpid=-1613941970|domain=dna.fi"></script>
1<link rel="preconnect" href="https://res.cloudinary.com/"> <link rel="preconnect" href="https://www.googletagmanager.com"> <link rel="preconnect" href="https://zogf71lkch-dsn.algolia.net">
1<script> 2 document.documentElement.className = document.documentElement.className.replace("no-js",""); 3 </script>
3
3<script type="importmap">{"imports":{"@clayui/breadcrumb":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$breadcrumb.js","react-dom":"/o/frontend-js-react-web/__liferay__/exports/react-dom.js","@clayui/charts":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$charts.js","@clayui/empty-state":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$empty-state.js","@clayui/navigation-bar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$navigation-bar.js","react":"/o/frontend-js-react-web/__liferay__/exports/react.js","react-dom-16":"/o/frontend-js-react-web/__liferay__/exports/react-dom-16.js","@clayui/icon":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$icon.js","@clayui/table":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$table.js","@clayui/slider":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$slider.js","@clayui/multi-select":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$multi-select.js","@clayui/nav":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$nav.js","@clayui/provider":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$provider.js","@clayui/panel":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$panel.js","@liferay/dynamic-data-mapping-form-field-type":"/o/dynamic-data-mapping-form-field-type/__liferay__/index.js","@clayui/list":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$list.js","@clayui/date-picker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$date-picker.js","@clayui/label":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$label.js","@liferay/frontend-js-api/data-set":"/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api$data-set.js","@clayui/core":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$core.js","@clayui/pagination-bar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$pagination-bar.js","@clayui/layout":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$layout.js","@clayui/multi-step-nav":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$multi-step-nav.js","@liferay/frontend-js-api":"/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api.js","@clayui/toolbar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$toolbar.js","@clayui/badge":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$badge.js","react-dom-18":"/o/frontend-js-react-web/__liferay__/exports/react-dom-18.js","@clayui/link":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$link.js","@clayui/card":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$card.js","@clayui/tooltip":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$tooltip.js","@clayui/button":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$button.js","@clayui/tabs":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$tabs.js","@clayui/sticker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$sticker.js","@clayui/form":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$form.js","@clayui/popover":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$popover.js","@clayui/shared":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$shared.js","@clayui/localized-input":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$localized-input.js","@clayui/modal":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$modal.js","@clayui/color-picker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$color-picker.js","@clayui/pagination":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$pagination.js","@clayui/autocomplete":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$autocomplete.js","@clayui/management-toolbar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$management-toolbar.js","@clayui/time-picker":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$time-picker.js","@clayui/upper-toolbar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$upper-toolbar.js","@clayui/loading-indicator":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$loading-indicator.js","@clayui/drop-down":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$drop-down.js","@clayui/data-provider":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$data-provider.js","@liferay/language/":"/o/js/language/","@clayui/css":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$css.js","@clayui/alert":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$alert.js","@clayui/progress-bar":"/o/frontend-taglib-clay/__liferay__/exports/@clayui$progress-bar.js","react-16":"/o/frontend-js-react-web/__liferay__/exports/react-16.js","react-18":"/o/frontend-js-react-web/__liferay__/exports/react-18.js"},"scopes":{}}</script>
3<script data-senna-track="temporary">var Liferay = window.Liferay || {};Liferay.Icons = Liferay.Icons || {};Liferay.Icons.controlPanelSpritemap = 'https://www.dna.fi/o/admin-theme/images/clay/icons.svg'; Liferay.Icons.spritemap = 'https://www.dna.fi/o/dna-fi-theme/images/clay/icons.svg';</script>
3
3<script data-senna-track="permanent" type="text/javascript">window.Liferay = window.Liferay || {}; window.Liferay.CSP = {nonce: ''};</script>
3
3<script data-senna-track="permanent" src="/combo?browserId=chrome&minifierType=js&languageId=fi_FI&t=1789641087222&/o/dna-fi-js-extender/jquery/jquery.min.js" type="text/javascript"></script>
3 <link id="liferayAUICSS" rel="stylesheet" />
3<script type="text/javascript" data-senna-track="temporary"> 4 // <![CDATA[ 5 var Liferay = Liferay || {}; 6 7 Liferay.Browser = { 8 acceptsGzip: function () { 9 return true; 10 }, 11 12 13 14 getMajorVersion: function () { 15 return 128.0; 16 }, 17 18 getRevision: function () { 19 return '537.36'; 20 }, 21 getVersion: function () { 22 return '128.0'; 23 }, 24 25 26 27 isAir: function () { 28 return false; 29 }, 30 isChrome: function () { 31 return true; 32 }, 33 isEdge: function () { 34 return false; 35 }, 36 isFirefox: function () { 37 return false; 38 }, 39 isGecko: function () { 40 return true; 41 }, 42 isIe: function () { 43 return false; 44 }, 45 isIphone: function () { 46 return false; 47 }, 48 isLinux: function () { 49 return false; 50 }, 51 isMac: function () { 52 return false; 53 }, 54 isMobile: function () { 55 return false; 56 }, 57 isMozilla: function () { 58 return false; 59 }, 60 isOpera: function () { 61 return false; 62 }, 63 isRtf: function () { 64 return true; 65 }, 66 isSafari: function () { 67 return true; 68 }, 69 isSun: function () { 70 return false; 71 }, 72 isWebKit: function () { 73 return true; 74 }, 75 isWindows: function () { 76 return false; 77 } 78 }; 79 80 Liferay.Data = Liferay.Data || {}; 81 82 Liferay.Data.ICONS_INLINE_SVG = true; 83 84 Liferay.Data.NAV_SELECTOR = '#navigation'; 85 86 Liferay.Data.NAV_SELECTOR_MOBILE = '#navigationCollapse'; 87 88 Liferay.Data.isCustomizationView = function () { 89 return false; 90 }; 91 92 Liferay.Data.notices = [ 93 94 ]; 95 96 (function () { 97 var available = {}; 98 99 var direction = {}; 100 101 102 103 available['fi_FI'] = 'suomi\x20\x28Suomi\x29'; 104 direction['fi_FI'] = 'ltr'; 105 106 107 108 available['sv_SE'] = 'ruotsi\x20\x28Ruotsi\x29'; 109 direction['sv_SE'] = 'ltr'; 110 111 112 113 available['en_US'] = 'englanti\x20\x28Yhdysvallat\x29'; 114 direction['en_US'] = 'ltr'; 115 116 117 118 let _cache = {}; 119 120 if (Liferay && Liferay.Language && Liferay.Language._cache) { 121 _cache = Liferay.Language._cache; 122 } 123 124 Liferay.Language = { 125 _cache, 126 available, 127 direction, 128 get: function(key) { 129 let value = Liferay.Language._cache[key]; 130 131 if (value === undefined) { 132 value = key; 133 } 134 135 return value; 136 } 137 }; 138 })(); 139 140 var featureFlags = {"LPD-10964":false,"LPD-37927":false,"LPD-10889":false,"LPS-193884":false,"LPD-30371":false,"LPD-11131":true,"LPS-178642":false,"LPS-193005":false,"LPD-31789":false,"LPD-10562":false,"LPD-11212":false,"COMMERCE-8087":false,"LPD-39304":true,"LPD-13311":true,"LRAC-10757":false,"LPD-35941":false,"LPS-180090":false,"LPS-178052":false,"LPD-21414":false,"LPS-185892":false,"LPS-186620":false,"LPD-40533":true,"LPD-40534":true,"LPS-184404":false,"LPD-40530":true,"LPD-20640":false,"LPS-198183":false,"LPD-38869":true,"LPD-35678":false,"LPD-6378":false,"LPS-153714":false,"LPD-11848":false,"LPS-170670":false,"LPD-7822":false,"LPS-169981":false,"LPD-21926":false,"LPS-177027":false,"LPD-37531":false,"LPD-11003":false,"LPD-36446":false,"LPD-39437":false,"LPS-135430":false,"LPD-20556":false,"LPD-45276":false,"LPS-134060":false,"LPS-164563":false,"LPD-32050":false,"LPS-122920":false,"LPS-199086":false,"LPD-35128":false,"LPD-10588":false,"LPD-13778":true,"LPD-11313":false,"LPD-6368":false,"LPD-34594":false,"LPS-202104":false,"LPD-19955":false,"LPD-35443":false,"LPD-39967":false,"LPD-11235":false,"LPD-11232":false,"LPS-196935":true,"LPD-43542":false,"LPS-176691":false,"LPS-197909":false,"LPD-29516":false,"COMMERCE-8949":false,"LPD-11228":false,"LPS-153813":false,"LPD-17809":false,"COMMERCE-13024":false,"LPS-165482":false,"LPS-193551":false,"LPS-197477":false,"LPS-174816":false,"LPS-186360":false,"LPD-30204":false,"LPD-32867":false,"LPS-153332":false,"LPD-35013":true,"LPS-179669":false,"LPS-174417":false,"LPD-44091":true,"LPD-31212":false,"LPD-18221":false,"LPS-155284":false,"LRAC-15017":false,"LPD-19870":false,"LPS-200108":false,"LPD-20131":false,"LPS-159643":false,"LPS-129412":false,"LPS-169837":false,"LPD-20379":false}; 141 142 Liferay.FeatureFlags = Object.keys(featureFlags).reduce( 143 (acc, key) => ({ 144 ...acc, [key]: featureFlags[key] === 'true' || featureFlags[key] === true 145 }), {} 146 ); 147 148 Liferay.PortletKeys = { 149 DOCUMENT_LIBRARY: 'com_liferay_document_library_web_portlet_DLPortlet', 150 DYNAMIC_DATA_MAPPING: 'com_liferay_dynamic_data_mapping_web_portlet_DDMPortlet', 151 ITEM_SELECTOR: 'com_liferay_item_selector_web_portlet_ItemSelectorPortlet' 152 }; 153 154 Liferay.PropsValues = { 155 JAVASCRIPT_SINGLE_PAGE_APPLICATION_TIMEOUT: 0, 156 UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE: 104857600 157 }; 158 159 Liferay.ThemeDisplay = { 160 161 162 163 164 getLayoutId: function () { 165 return '1'; 166 }, 167 168 169 170 getLayoutRelativeControlPanelURL: function () { 171 return '/group/wholesale/~/control_panel/manage'; 172 }, 173 174 getLayoutRelativeURL: function () { 175 return '/wholesale/etusivu'; 176 }, 177 getLayoutURL: function () { 178 return 'https://www.dna.fi/wholesale/etusivu'; 179 }, 180 getParentLayoutId: function () { 181 return '0'; 182 }, 183 isControlPanel: function () { 184 return false;
185 }, 186 isPrivateLayout: function () { 187 return 'false'; 188 }, 189 isVirtualLayout: function () { 190 return false; 191 }, 192 193 194 getBCP47LanguageId: function () { 195 return 'fi-FI'; 196 }, 197 getCanonicalURL: function () { 198 199 200 201 return 'https\x3a\x2f\x2fwww\x2edna\x2efi\x2fweb\x2fwholesale'; 202 }, 203 getCDNBaseURL: function () { 204 return 'https://www.dna.fi'; 205 }, 206 getCDNDynamicResourcesHost: function () { 207 return ''; 208 }, 209 getCDNHost: function () { 210 return ''; 211 }, 212 getCompanyGroupId: function () { 213 return '20152'; 214 }, 215 getCompanyId: function () { 216 return '20116'; 217 }, 218 getDefaultLanguageId: function () { 219 return 'fi_FI'; 220 }, 221 getDoAsUserIdEncoded: function () { 222 return ''; 223 }, 224 getLanguageId: function () { 225 return 'fi_FI'; 226 }, 227 getParentGroupId: function () { 228 return '10476172'; 229 }, 230 getPathContext: function () { 231 return ''; 232 }, 233 getPathImage: function () { 234 return '/image'; 235 }, 236 getPathJavaScript: function () { 237 return '/o/frontend-js-web'; 238 }, 239 getPathMain: function () { 240 return '/c'; 241 }, 242 getPathThemeImages: function () { 243 return 'https://www.dna.fi/o/dna-fi-theme/images'; 244 }, 245 getPathThemeRoot: function () { 246 return '/o/dna-fi-theme'; 247 }, 248 getPlid: function () { 249 return '9161297'; 250 }, 251 getPortalURL: function () { 252 return 'https://www.dna.fi'; 253 }, 254 getRealUserId: function () { 255 return '20120'; 256 }, 257 getRemoteAddr: function () { 258 return '10.72.143.17'; 259 }, 260 getRemoteHost: function () { 261 return '10.72.143.17'; 262 }, 263 getScopeGroupId: function () { 264 return '10476172'; 265 }, 266 getScopeGroupIdOrLiveGroupId: function () { 267 return '10476172'; 268 }, 269 getSessionId: function () { 270 return ''; 271 }, 272 getSiteAdminURL: function () { 273 return 'https://www.dna.fi/group/wholesale/~/control_panel/manage?p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view'; 274 }, 275 getSiteGroupId: function () { 276 return '10476172'; 277 }, 278 getTimeZone: function() { 279 return 'Europe/Helsinki'; 280 }, 281 getURLControlPanel: function() { 282 return '/group/control_panel?refererPlid=9161297'; 283 }, 284 getURLHome: function () { 285 return 'https\x3a\x2f\x2fwww\x2edna\x2efi\x2fweb\x2fyksityisille'; 286 }, 287 getUserEmailAddress: function () { 288 return ''; 289 }, 290 getUserId: function () { 291 return '20120'; 292 }, 293 getUserName: function () { 294 return ''; 295 }, 296 isAddSessionIdToURL: function () { 297 return false; 298 }, 299 isImpersonated: function () { 300 return false; 301 }, 302 isSignedIn: function () { 303 return false; 304 }, 305 306 isStagedPortlet: function () { 307 308 309 return false; 310 311 312 }, 313 314 isStateExclusive: function () { 315 return false; 316 }, 317 isStateMaximized: function () { 318 return false; 319 }, 320 isStatePopUp: function () { 321 return false; 322 } 323 }; 324 325 var themeDisplay = Liferay.ThemeDisplay; 326 327 Liferay.AUI = { 328 329 330 331 getCombine: function () { 332 return true; 333 }, 334 getComboPath: function () { 335 return '/combo/?browserId=chrome&minifierType=&languageId=fi_FI&t=1781554730120&'; 336 }, 337 getDateFormat: function () { 338 return '%d.%m.%Y'; 339 }, 340 getEditorCKEditorPath: function () { 341 return '/o/frontend-editor-ckeditor-web'; 342 }, 343 getFilter: function () { 344 var filter = 'raw'; 345 346 347 348 filter = 'min'; 349 350 351 352 return filter; 353 }, 354 getFilterConfig: function () { 355 var instance = this; 356 357 var filterConfig = null; 358 359 if (!instance.getCombine()) { 360 filterConfig = { 361 replaceStr: '.js' + instance.getStaticResourceURLParams(), 362 searchExp: '\\.js$' 363 }; 364 } 365 366 return filterConfig; 367 }, 368 getJavaScriptRootPath: function () { 369 return '/o/frontend-js-web'; 370 }, 371 getPortletRootPath: function () { 372 return '/html/portlet'; 373 }, 374 getStaticResourceURLParams: function () { 375 return '?browserId=chrome&minifierType=&languageId=fi_FI&t=1781554730120'; 376 } 377 }; 378 379 Liferay.authToken = 'bRdDHYcN'; 380 381 382 383 Liferay.currentURL = '\x2fweb\x2fwholesale'; 384 Liferay.currentURLEncoded = '\x252Fweb\x252Fwholesale'; 385 // ]]> 386</script>
386
386<script data-senna-track="temporary" type="text/javascript">window.__CONFIG__= {basePath: '',combine: true, defaultURLParams: null, explainResolutions: false, exposeGlobal: false, logLevel: 'warn', moduleType: 'module', namespace:'Liferay', nonce: '', reportMismatchedAnonymousModules: 'warn', resolvePath: '/o/js_resolve_modules', url: '/combo/?browserId=chrome&minifierType=js&languageId=fi_FI&t=1781554730120&', waitTimeout: 30000};</script>
386<script data-senna-track="permanent" src="/o/frontend-js-loader-modules-extender/loader.js?&mac=9WaMmhziBCkScHZwrrVcOR7VZF4=&browserId=chrome&languageId=fi_FI&minifierType=js" type="text/javascript"></script>
386<script data-senna-track="permanent" src="/combo?browserId=chrome&minifierType=js&languageId=fi_FI&t=1781554730120&/o/frontend-js-aui-web/aui/aui/aui-min.js&/o/frontend-js-aui-web/liferay/modules.js&/o/frontend-js-aui-web/liferay/aui_sandbox.js&/o/frontend-js-aui-web/aui/attribute-base/attribute-base-min.js&/o/frontend-js-aui-web/aui/attribute-complex/attribute-complex-min.js&/o/frontend-js-aui-web/aui/attribute-core/attribute-core-min.js&/o/frontend-js-aui-web/aui/attribute-observable/attribute-observable-min.js&/o/frontend-js-aui-web/aui/attribute-extras/attribute-extras-min.js&/o/frontend-js-aui-web/aui/event-custom-base/event-custom-base-min.js&/o/frontend-js-aui-web/aui/event-custom-complex/event-custom-complex-min.js&/o/frontend-js-aui-web/aui/oop/oop-min.js&/o/frontend-js-aui-web/aui/aui-base-lang/aui-base-lang-min.js&/o/frontend-js-aui-web/liferay/dependency.js&/o/frontend-js-aui-web/liferay/util.js&/o/frontend-js-web/liferay/dom_task_runner.js&/o/frontend-js-web/liferay/events.js&/o/frontend-js-web/liferay/lazy_load.js&/o/frontend-js-web/liferay/liferay.js&/o/frontend-js-web/liferay/global.bundle.js&/o/frontend-js-web/liferay/portlet.js&/o/frontend-js-web/liferay/workflow.js&/o/oauth2-provider-web/js/liferay.js" type="text/javascript"></script>
386
386<script data-senna-track="temporary" type="text/javascript">window.Liferay = Liferay || {}; window.Liferay.OAuth2 = {getAuthorizeURL: function() {return 'https://www.dna.fi/o/oauth2/authorize';}, getBuiltInRedirectURL: function() {return 'https://www.dna.fi/o/oauth2/redirect';}, getIntrospectURL: function() { return 'https://www.dna.fi/o/oauth2/introspect';}, getTokenURL: function() {return 'https://www.dna.fi/o/oauth2/token';}, getUserAgentApplication: function(externalReferenceCode) {return Liferay.OAuth2._userAgentApplications[externalReferenceCode];}, _userAgentApplications: {}}</script>
386<script data-senna-track="temporary" type="text/javascript">try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-js-components-web';/** 387 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 388 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 389 */ 390 391(function () { 392 AUI().applyConfig({ 393 groups: { 394 components: { 395 396 // eslint-disable-next-line 397 mainModule: MODULE_MAIN, 398 }, 399 }, 400 }); 401})(); 402} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/staging-processes-web';/** 403 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 404 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 405 */ 406 407(function () { 408 AUI().applyConfig({ 409 groups: { 410 stagingprocessesweb: { 411 base: MODULE_PATH + '/js/legacy/', 412 combine: Liferay.AUI.getCombine(), 413 filter: Liferay.AUI.getFilterConfig(), 414 modules: { 415 'liferay-staging-processes-export-import': { 416 path: 'main.js', 417 requires: [ 418 'aui-datatype', 419 'aui-dialog-iframe-deprecated', 420 'aui-modal', 421 'aui-parse-content', 422 'aui-toggler', 423 'liferay-portlet-base', 424 'liferay-util-window', 425 ], 426 }, 427 }, 428 root: MODULE_PATH + '/js/legacy/', 429 }, 430 }, 431 }); 432})(); 433} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-react-web';/** 434 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 435 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 436 */ 437 438(function () { 439 AUI().applyConfig({ 440 groups: { 441 react: { 442 443 // eslint-disable-next-line 444 mainModule: MODULE_MAIN, 445 }, 446 }, 447 }); 448})(); 449} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-search-web';/** 450 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 451 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 452 */ 453 454(function () { 455 AUI().applyConfig({ 456 groups: { 457 search: { 458 base: MODULE_PATH + '/js/', 459 combine: Liferay.AUI.getCombine(), 460 filter: Liferay.AUI.getFilterConfig(), 461 modules: { 462 'liferay-search-custom-range-facet': { 463 path: 'custom_range_facet.js', 464 requires: ['aui-form-validator'], 465 }, 466 }, 467 root: MODULE_PATH + '/js/', 468 }, 469 }, 470 }); 471})(); 472} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/contacts-web';/** 473 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 474 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 475 */ 476 477(function () { 478 AUI().applyConfig({ 479 groups: { 480 contactscenter: { 481 base: MODULE_PATH + '/js/legacy/', 482 combine: Liferay.AUI.getCombine(), 483 filter: Liferay.AUI.getFilterConfig(), 484 modules: { 485 'liferay-contacts-center': { 486 path: 'main.js', 487 requires: [ 488 'aui-io-plugin-deprecated', 489 'aui-toolbar', 490 'autocomplete-base', 491 'datasource-io', 492 'json-parse', 493 'liferay-portlet-base', 494 'liferay-util-window', 495 ], 496 }, 497 }, 498 root: MODULE_PATH + '/js/legacy/', 499 }, 500 }, 501 }); 502})(); 503} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/dynamic-data-mapping-web';/** 504 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 505 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 506 */ 507 508(function () { 509 const LiferayAUI = Liferay.AUI; 510 511 AUI().applyConfig({ 512 groups: { 513 ddm: { 514 base: MODULE_PATH + '/js/legacy/', 515 combine: Liferay.AUI.getCombine(), 516 filter: LiferayAUI.getFilterConfig(), 517 modules: { 518 'liferay-ddm-form': { 519 path: 'ddm_form.js', 520 requires: [ 521 'aui-base', 522 'aui-datatable', 523 'aui-datatype', 524 'aui-image-viewer', 525 'aui-parse-content', 526 'aui-set', 527 'aui-sortable-list', 528 'json', 529 'liferay-form', 530 'liferay-map-base', 531 'liferay-translation-manager', 532 'liferay-util-window', 533 ], 534 }, 535 'liferay-portlet-dynamic-data-mapping': { 536 condition: { 537 trigger: 'liferay-document-library', 538 }, 539 path: 'main.js', 540 requires: [ 541 'arraysort',
542 'aui-form-builder-deprecated', 543 'aui-form-validator', 544 'aui-map', 545 'aui-text-unicode', 546 'json', 547 'liferay-menu', 548 'liferay-translation-manager', 549 'liferay-util-window', 550 'text', 551 ], 552 }, 553 'liferay-portlet-dynamic-data-mapping-custom-fields': { 554 condition: { 555 trigger: 'liferay-document-library', 556 }, 557 path: 'custom_fields.js', 558 requires: ['liferay-portlet-dynamic-data-mapping'], 559 }, 560 }, 561 root: MODULE_PATH + '/js/legacy/', 562 }, 563 }, 564 }); 565})(); 566} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/calendar-web';/** 567 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 568 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 569 */ 570 571(function () { 572 AUI().applyConfig({ 573 groups: { 574 calendar: { 575 base: MODULE_PATH + '/js/legacy/', 576 combine: Liferay.AUI.getCombine(), 577 filter: Liferay.AUI.getFilterConfig(), 578 modules: { 579 'liferay-calendar-a11y': { 580 path: 'calendar_a11y.js', 581 requires: ['calendar'], 582 }, 583 'liferay-calendar-container': { 584 path: 'calendar_container.js', 585 requires: [ 586 'aui-alert', 587 'aui-base', 588 'aui-component', 589 'liferay-portlet-base', 590 ], 591 }, 592 'liferay-calendar-date-picker-sanitizer': { 593 path: 'date_picker_sanitizer.js', 594 requires: ['aui-base'], 595 }, 596 'liferay-calendar-interval-selector': { 597 path: 'interval_selector.js', 598 requires: ['aui-base', 'liferay-portlet-base'], 599 }, 600 'liferay-calendar-interval-selector-scheduler-event-link': { 601 path: 'interval_selector_scheduler_event_link.js', 602 requires: ['aui-base', 'liferay-portlet-base'], 603 }, 604 'liferay-calendar-list': { 605 path: 'calendar_list.js', 606 requires: [ 607 'aui-template-deprecated', 608 'liferay-scheduler', 609 ], 610 }, 611 'liferay-calendar-message-util': { 612 path: 'message_util.js', 613 requires: ['liferay-util-window'], 614 }, 615 'liferay-calendar-recurrence-converter': { 616 path: 'recurrence_converter.js', 617 requires: [], 618 }, 619 'liferay-calendar-recurrence-dialog': { 620 path: 'recurrence.js', 621 requires: [ 622 'aui-base', 623 'liferay-calendar-recurrence-util', 624 ], 625 }, 626 'liferay-calendar-recurrence-util': { 627 path: 'recurrence_util.js', 628 requires: ['aui-base', 'liferay-util-window'], 629 }, 630 'liferay-calendar-reminders': { 631 path: 'calendar_reminders.js', 632 requires: ['aui-base'], 633 }, 634 'liferay-calendar-remote-services': { 635 path: 'remote_services.js', 636 requires: [ 637 'aui-base', 638 'aui-component', 639 'liferay-calendar-util', 640 'liferay-portlet-base', 641 ], 642 }, 643 'liferay-calendar-session-listener': { 644 path: 'session_listener.js', 645 requires: ['aui-base', 'liferay-scheduler'], 646 }, 647 'liferay-calendar-simple-color-picker': { 648 path: 'simple_color_picker.js', 649 requires: ['aui-base', 'aui-template-deprecated'], 650 }, 651 'liferay-calendar-simple-menu': { 652 path: 'simple_menu.js', 653 requires: [ 654 'aui-base', 655 'aui-template-deprecated', 656 'event-outside', 657 'event-touch', 658 'widget-modality', 659 'widget-position', 660 'widget-position-align', 661 'widget-position-constrain', 662 'widget-stack', 663 'widget-stdmod', 664 ], 665 }, 666 'liferay-calendar-util': { 667 path: 'calendar_util.js', 668 requires: [ 669 'aui-datatype', 670 'aui-io', 671 'aui-scheduler', 672 'aui-toolbar', 673 'autocomplete', 674 'autocomplete-highlighters', 675 ], 676 }, 677 'liferay-scheduler': { 678 path: 'scheduler.js', 679 requires: [ 680 'async-queue', 681 'aui-datatype', 682 'aui-scheduler', 683 'dd-plugin', 684 'liferay-calendar-a11y', 685 'liferay-calendar-message-util', 686 'liferay-calendar-recurrence-converter', 687 'liferay-calendar-recurrence-util', 688 'liferay-calendar-util', 689 'liferay-scheduler-event-recorder', 690 'liferay-scheduler-models', 691 'promise', 692 'resize-plugin', 693 ], 694 }, 695 'liferay-scheduler-event-recorder': { 696 path: 'scheduler_event_recorder.js', 697 requires: [ 698 'dd-plugin', 699 'liferay-calendar-util', 700 'resize-plugin', 701 ], 702 }, 703 'liferay-scheduler-models': { 704 path: 'scheduler_models.js', 705 requires: [ 706 'aui-datatype', 707 'dd-plugin', 708 'liferay-calendar-util', 709 ], 710 }, 711 }, 712 root: MODULE_PATH + '/js/legacy/', 713 }, 714 }, 715 }); 716})(); 717} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/exportimport-web';/** 718 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 719 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 720 */ 721 722(function () { 723 AUI().applyConfig({ 724 groups: { 725 exportimportweb: { 726 base: MODULE_PATH + '/js/legacy/', 727 combine: Liferay.AUI.getCombine(), 728 filter: Liferay.AUI.getFilterConfig(), 729 modules: { 730 'liferay-export-import-export-import': { 731 path: 'main.js', 732 requires: [ 733 'aui-datatype', 734 'aui-dialog-iframe-deprecated', 735 'aui-modal', 736 'aui-parse-content', 737 'aui-toggler', 738 'liferay-portlet-base', 739 'liferay-util-window', 740 ], 741 }, 742 }, 743 root: MODULE_PATH + '/js/legacy/', 744 }, 745 }, 746 }); 747})(); 748} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-state-web';/** 749 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 750 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 751 */ 752 753(function () { 754 AUI().applyConfig({ 755 groups: { 756 state: { 757 758 // eslint-disable-next-line 759 mainModule: MODULE_MAIN, 760 }, 761 }, 762 }); 763})(); 764} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/document-library-web';/** 765 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 766 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 767 */ 768 769(function () { 770 AUI().applyConfig({ 771 groups: { 772 dl: { 773 base: MODULE_PATH + '/js/legacy/', 774 combine: Liferay.AUI.getCombine(), 775 filter: Liferay.AUI.getFilterConfig(), 776 modules: { 777 'document-library-upload-component': { 778 path: 'DocumentLibraryUpload.js', 779 requires: [ 780 'aui-component', 781 'aui-data-set-deprecated', 782 'aui-overlay-manager-deprecated', 783 'aui-overlay-mask-deprecated', 784 'aui-parse-content', 785 'aui-progressbar', 786 'aui-template-deprecated', 787 'liferay-search-container', 788 'querystring-parse-simple', 789 'uploader', 790 ], 791 }, 792 }, 793 root: MODULE_PATH + '/js/legacy/', 794 }, 795 }, 796 }); 797})(); 798} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-editor-alloyeditor-web';/** 799 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 800 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 801 */ 802 803(function () { 804 AUI().applyConfig({ 805 groups: { 806 alloyeditor: { 807 base: MODULE_PATH + '/js/legacy/', 808 combine: Liferay.AUI.getCombine(), 809 filter: Liferay.AUI.getFilterConfig(), 810 modules: { 811 'liferay-alloy-editor': { 812 path: 'alloyeditor.js', 813 requires: [ 814 'aui-component', 815 'liferay-portlet-base', 816 'timers', 817 ], 818 }, 819 'liferay-alloy-editor-source': { 820 path: 'alloyeditor_source.js', 821 requires: [ 822 'aui-debounce', 823 'liferay-fullscreen-source-editor', 824 'liferay-source-editor', 825 'plugin', 826 ], 827 }, 828 }, 829 root: MODULE_PATH + '/js/legacy/', 830 }, 831 }, 832 }); 833})(); 834} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-workflow-kaleo-designer-web';/** 835 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 836 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 837 */ 838 839(function () { 840 AUI().applyConfig({ 841 groups: { 842 'kaleo-designer': { 843 base: MODULE_PATH + '/designer/js/legacy/', 844 combine: Liferay.AUI.getCombine(), 845 filter: Liferay.AUI.getFilterConfig(), 846 modules: { 847 'liferay-kaleo-designer-autocomplete-util': { 848 path: 'autocomplete_util.js', 849 requires: ['autocomplete', 'autocomplete-highlighters'], 850 }, 851 'liferay-kaleo-designer-definition-diagram-controller': { 852 path: 'definition_diagram_controller.js', 853 requires: [ 854 'liferay-kaleo-designer-field-normalizer', 855 'liferay-kaleo-designer-utils', 856 ], 857 }, 858 'liferay-kaleo-designer-dialogs': { 859 path: 'dialogs.js', 860 requires: ['liferay-util-window'], 861 }, 862 'liferay-kaleo-designer-editors': { 863 path: 'editors.js', 864 requires: [ 865 'aui-ace-editor', 866 'aui-ace-editor-mode-xml', 867 'aui-base', 868 'aui-datatype', 869 'aui-node', 870 'liferay-kaleo-designer-autocomplete-util', 871 'liferay-kaleo-designer-utils', 872 ], 873 }, 874 'liferay-kaleo-designer-field-normalizer': { 875 path: 'field_normalizer.js', 876 requires: ['liferay-kaleo-designer-remote-services'], 877 }, 878 'liferay-kaleo-designer-nodes': { 879 path: 'nodes.js', 880 requires: [ 881 'aui-datatable', 882 'aui-datatype', 883 'aui-diagram-builder', 884 'liferay-kaleo-designer-editors', 885 'liferay-kaleo-designer-utils', 886 ], 887 }, 888 'liferay-kaleo-designer-remote-services': { 889 path: 'remote_services.js', 890 requires: ['aui-io'], 891 }, 892 'liferay-kaleo-designer-templates': { 893 path: 'templates.js', 894 requires: ['aui-tpl-snippets-deprecated'], 895 }, 896 'liferay-kaleo-designer-utils': { 897 path: 'utils.js', 898 requires: [], 899 }, 900 'liferay-kaleo-designer-xml-definition': { 901 path: 'xml_definition.js', 902 requires: [ 903 'aui-base', 904 'aui-component', 905 'dataschema-xml', 906 'datatype-xml', 907 ], 908 }, 909 'liferay-kaleo-designer-xml-definition-serializer': { 910 path: 'xml_definition_serializer.js', 911 requires: ['escape', 'liferay-kaleo-designer-xml-util'], 912 }, 913 'liferay-kaleo-designer-xml-util': { 914 path: 'xml_util.js', 915 requires: ['aui-base'], 916 }, 917 'liferay-portlet-kaleo-designer': { 918 path: 'main.js', 919 requires: [ 920 'aui-ace-editor', 921 'aui-ace-editor-mode-xml', 922 'aui-tpl-snippets-deprecated', 923 'dataschema-xml', 924 'datasource', 925 'datatype-xml', 926 'event-valuechange', 927 'io-form', 928 'liferay-kaleo-designer-autocomplete-util', 929 'liferay-kaleo-designer-editors', 930 'liferay-kaleo-designer-nodes', 931 'liferay-kaleo-designer-remote-services', 932 'liferay-kaleo-designer-utils', 933 'liferay-kaleo-designer-xml-util', 934 'liferay-util-window', 935 ], 936 }, 937 }, 938 root: MODULE_PATH + '/designer/js/legacy/', 939 }, 940 }, 941 }); 942})(); 943} catch(error) {console.error(error);}try {var MODULE_MAIN='null';var MODULE_PATH='/o/dna-fi-alloyui-javascripts-web-hook';;(function() { 944 945 var base = MODULE_PATH + '/js/'; 946 947 AUI().applyConfig( 948 { 949 groups: { 950 alloyUIExtensions: { 951 base: base, 952 combine: Liferay.AUI.getCombine(), 953 filter: Liferay.AUI.getFilterConfig(), 954 modules: { 955 'aui-form-validator-ext': { 956 path: 'aui-form-validator-ext.js', 957 condition: { 958 name: 'aui-form-validator', 959 trigger: 'aui-form-validator', 960 when: 'instead' 961 } 962 } 963 }, 964 root: base 965 } 966 } 967 } 968 ); 969})();} catch(error) {console.error(error);}try {var MODULE_MAIN='null';var MODULE_PATH='/o/ddm-field-type-web-hook';;(function() { 970 971 var base = MODULE_PATH + '/js/'; 972 973 AUI().applyConfig( 974 { 975 groups: { 976 ddmExtensionModules: { 977 base: base, 978 combine: Liferay.AUI.getCombine(), 979 filter: Liferay.AUI.getFilterConfig(), 980 modules: { 981 'liferay-portlet-dynamic-data-mapping-override': { 982 path: 'main.ext.js', 983 condition: { 984 name: 'liferay-portlet-dynamic-data-mapping-override', 985 trigger: 'liferay-portlet-dynamic-data-mapping' 986 } 987 }, 988 'liferay-portlet-dynamic-data-mapping-custom-fields-override': { 989 path: 'custom_fields.ext.js', 990 condition: { 991 name: 'liferay-portlet-dynamic-data-mapping-custom-fields-override', 992 trigger: 'liferay-portlet-dynamic-data-mapping-custom-fields' 993 } 994 }, 995 'liferay-ddm-form-ext': { 996 path: 'ddm_form.ext.js', 997 condition: { 998 name: 'liferay-ddm-form-ext', 999 trigger: 'liferay-ddm-form' 1000 } 1001 } 1002 }, 1003 root: base 1004 } 1005 } 1006 } 1007 ); 1008})();} catch(error) {console.error(error);}</script>
1008
1008<script type="text/javascript" data-senna-track="temporary"> 1009 // <![CDATA[ 1010 1011 1012 1013 1014 1015 1016 // ]]> 1017</script>
1017 <style data-senna-track="temporary" type="text/css"> 1018</style> <link data-senna-track="permanent" href="https://www.dna.fi/combo?browserId=chrome&minifierType=css&languageId=fi_FI&t=1781554760669&/o/dna-fi-main-theme-contributor/custom.css" rel="stylesheet" type = "text/css" /> <link data-senna-track="permanent" href="/o/frontend-js-aui-web/alloy_ui.css?&mac=favIEq7hPo8AEd6k+N5OVADEEls=&browserId=chrome&languageId=fi_FI&minifierType=css&themeId=dnafitheme_WAR_dnafitheme" rel="stylesheet"></link>
1018<script type="text/javascript" data-senna-track="temporary"> 1019 if (window.Analytics) { 1020 window._com_liferay_document_library_analytics_isViewFileEntry = false; 1021 } 1022</script>
1022 <link href="/combo?browserId=chrome&minifierType=css&themeId=dnafitheme_WAR_dnafitheme&languageId=fi_FI&com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth:%2Fo%2Fasset-publisher-web%2Fcss%2Fmain.css&com_liferay_journal_content_web_portlet_JournalContentPortlet:%2Fo%2Fjournal-content-web%2Fcss%2Fmain.css&com_liferay_portal_search_web_search_bar_portlet_SearchBarPortlet_INSTANCE_templateSearch:%2Fo%2Fportal-search-web%2Fcss%2Fmain.css&com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet:%2Fo%2Fsite-navigation-menu-web%2Fcss%2Fmain.css&t=1789630306000" rel="stylesheet" type="text/css" data-senna-track="temporary" id="9c3e287" /> <link class="lfr-css-file" data-senna-track="temporary" href="https://www.dna.fi/o/dna-fi-theme/css/main.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000" id="liferayThemeCSS" rel="stylesheet" type="text/css" /> <style data-senna-track="temporary" type="text/css"> 1023 /* DNADXP-9238 */ 1024.hl-icon { 1025 width: 1em; 1026 height: 1em; 1027 fill: currentColor; 1028 flex: 0 0 auto; 1029} 1030.hl-icon--black { 1031 fill: #121212; 1032} 1033.hl-icon--pink { 1034 fill: #DA0070; 1035} 1036.hl-icon--12 { 1037 width: 12px; 1038 height: 12px; 1039} 1040.hl-icon--16 { 1041 width: 16px; 1042 height: 16px; 1043} 1044.hl-icon--24 { 1045 width: 24px; 1046 height: 24px; 1047} 1048.hl-icon--32 { 1049 width: 32px; 1050 height: 32px; 1051} 1052.hl-icon--40 { 1053 width: 40px; 1054 height: 40px; 1055} 1056.hl-icon--64 { 1057 width: 64px; 1058 height: 64px; 1059} 1060.hl-icon--80 { 1061 width: 80px; 1062 height: 80px; 1063} 1064.hl-icon--120 { 1065 width: 120px; 1066 height: 120px; 1067} 1068/* DNADXP-9238 END */ 1069 1070/* DNADXP-9240 */ 1071.dna-asset-item, 1072.dna-asset-item > .dna-grid-item { 1073 height: 100%; 1074} 1075/* DNADXP-9240 END */ 1076 </style> <style data-senna-track="temporary" type="text/css"> 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086#p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth_ .portlet-content { 1087 1088} 1089[lang="fi-FI"] #portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth {display: none;} 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105#p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc_ .portlet-content { 1106 1107} 1108[lang="en-US"] #portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc {display: none;} 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 </style> <link rel="icon" href="https://www.dna.fi/o/dna-fi-theme/images/favicon.ico" sizes="32x32"> <link rel="icon" href="https://www.dna.fi/o/dna-fi-theme/images/DNA.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="https://www.dna.fi/o/dna-fi-theme/images/favicons/DNA_logo_180x180"> <meta content="DNA Wholesale tarjoaa niin kotimaisille kuin kansainvälisille tukku- ja operaattoritoimijoille laadukkaat tietoliikenneratkaisut." lang="fi-FI" name="description" /> <link data-senna-track="temporary" href="https://www.dna.fi/wholesale/etusivu" rel="canonical" /><link data-senna-track ="temporary" href="https://www.dna.fi/wholesale/etusivu" hreflang="x-default" rel="alternate" /><link data-senna-track="temporary" href="https://www.dna.fi/wholesale/front-page" hreflang="en-US" rel="alternate" /> <meta property="fb:pages" content="105523299470698" /> <meta property="og:site_name" content="DNA"/> <meta property="og:type" content="website"/> <meta property="og:title" content="DNA Wholesale | DNA"/> <meta property="og:description" content="DNA Wholesale tarjoaa niin kotimaisille kuin kansainvälisille tukku- ja operaattoritoimijoille laadukkaat tietoliikenneratkaisut."/> <meta property="og:image" content="https://res.cloudinary.com/dnaoyj/image/upload/c_fill,f_jpg,g_auto,h_630,q_auto,w_1200/v1/Assets/Wholesale/Oulun%20mastokuvat/Parannellut/DJI_0025_sRGB_V2.jpg"/> <meta property="og:image:width" content="630"/> <meta property="og:image:height" content="1200"/> <meta property="og:url" content="https://www.dna.fi/fi/wholesale"/> <meta property="og:published_time" content="2025-04-29T22:28:38.307+03:00"/> <meta property="og:locale" content="fi_FI"/> <meta property="og:locale:alternate" content="en_US"/> <meta name="application-name" content="DNA.fi"> <link rel="manifest" href="https://www.dna.fi/o/dna-fi-theme/images/favicons/manifest.json">
1194<script> 1195 window.originalLocation = 'https://www.dna.fi/wholesale'; 1196 window.dataLayer = window.dataLayer || []; 1197 window.dataLayer.push({ 1198 event: 'pageLoadData', 1199 page: { 1200 business: 'WO', 1201 category: 'undefined', 1202 environment: 'test', 1203 cms: 'liferay', 1204 language: 'fi', 1205 productSegment: 'undefined', 1206 originalLocation: 'https://www.dna.fi/wholesale' 1207 }, 1208 user: { 1209 loggedIn: 'false', 1210 id: 'anonymous' 1211 } 1212 }); 1213</script>
1213 <!-- Google Tag Manager -->
1213<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push( 1214 {'gtm.start': new Date().getTime(),event:'gtm.js'} 1215 );var f=d.getElementsByTagName(s)[0], 1216 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1217 '//www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f); 1218 })(window,document,'script','dataLayer','GTM-NBKQNL2');</script>
1218 <!-- End Google Tag Manager --> <!-- Google Tag Manager -->
1218<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push( 1219 {'gtm.start': new Date().getTime(),event:'gtm.js'} 1220 );var f=d.getElementsByTagName(s)[0], 1221 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1222 '//www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f); 1223 })(window,document,'script','dataLayer','GTM-5TCNFS9');</script>
1223 <!-- End Google Tag Manager --> <!-- Google Tag Manager -->
1223<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push( 1224 {'gtm.start': new Date().getTime(),event:'gtm.js'} 1225 );var f=d.getElementsByTagName(s)[0], 1226 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1227 '//www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f); 1228 })(window,document,'script','dataLayer','GTM-KLLH83J');</script>
1228 <!-- End Google Tag Manager --> <!-- Start VWO Async SmartCode --> <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" />
1228<script type='text/javascript' id='vwoCode'> (() => { const getCookie=o=>{const t=("; "+document.cookie).split("; "+o+"=");if(2==t.length)return t.pop().split(";").shift()}; var otValue = getCookie('OptanonConsent'), consentGiven = otValue && otValue.includes('C0002%3A1'); if(consentGiven) { window._vwo_code || (function() { var account_id=758646, version=2.0, settings_tolerance=2000, hide_element='body', hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important', /* DO NOT EDIT BELOW THIS LINE */ f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(){if(!f){f=true;var e=d.getElementById('_vis_opt_path_hides');if(e)e.parentNode.removeChild(e)}},finished:function(){return f},load:function(e){var t=this.getSettings(),n=d.createElement('script'),i=this;if(t){n.textContent=t;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);i.load(e)}}else{n.fetchPriority='high';n.src=e;n.type='text/javascript';n.onerror=function(){_vwo_code.finish()};d.getElementsByTagName('head')[0].appendChild(n)}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t=d.currentScript,n=d.createElement('style'),i=this.hide_element(),r=t&&!t.async&&i?i+this.hide_element_style():'',c=d.getElementsByTagName('head')[0];n.setAttribute('id','_vis_opt_path_hides');v&&n.setAttribute('nonce',v.nonce);n.setAttribute('type','text/css');if(n.styleSheet)n.styleSheet.cssText=r;else n.appendChild(d.createTextNode(r));c.appendChild(n);this.load('https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version)}};w._vwo_code=code;code.init();})(); } })(); </script>
1228 <!-- End VWO Async SmartCode --></head> <body class="chrome controls-visible yui3-skin-sam signed-out public-page site"> <a href="#main-content" class="skip-to-content">Suoraan sisältöön</a> <!-- Google Tag Manager -->
vendor: 62 bytes, line 1228
1228 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1228GTM-NBKQNL2
vendor: 83 bytes, line 1228
1228" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1228<!-- End Google Tag Manager --> <!-- Google Tag Manager -->
vendor: 62 bytes, line 1228
1228 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1228GTM-5TCNFS9
vendor: 83 bytes, line 1228
1228" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1228<!-- End Google Tag Manager --> <!-- Google Tag Manager -->
vendor: 62 bytes, line 1228
1228 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
1228GTM-KLLH83J
vendor: 83 bytes, line 1228
1228" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1228<!-- End Google Tag Manager --> <!-- COMMON-DNA-HEADER --> <div id="dna-mediaquery"></div> <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol viewBox="0 0 24 24" id="ArrowRight"><path fill-rule="evenodd" d="M16.227 6.285a.7.7 0 0 0-.469.228.6.6 0 0 0-.128.185.6.6 0 0 0-.062.302c0 .094.003.128.018.18a.8.8 0 0 0 .108.231c.02.027.894.908 1.943 1.957l1.908 1.908-8.467.004-8.466.004-.079.022a.73.73 0 0 0-.525.57 1 1 0 0 0 0 .248c.048.27.256.496.525.57l.079.022 8.466.004 8.467.004-1.908 1.908a227 227 0 0 0-1.943 1.957.8.8 0 0 0-.108.231.6.6 0 0 0-.018.18c0 .132.014.2.062.302a.6.6 0 0 0 .128.185.67.67 0 0 0 .532.227.7.7 0 0 0 .392-.12c.05-.033 5.083-5.058 5.157-5.15.076-.094.145-.25.145-.325 0-.012.004-.024.008-.027a.3.3 0 0 0 .008-.1q0-.096-.008-.092-.007.003-.008-.018c0-.076-.069-.231-.145-.326a696 696 0 0 0-5.157-5.15.7.7 0 0 0-.219-.098 1 1 0 0 0-.236-.023M2.003 12c0 .055.001.078.003.05a1 1 0 0 0 0-.1c-.002-.027-.003-.005-.003.05" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Cart"><path fill-rule="evenodd" d="M9 3.444a.7.7 0 0 0-.42.26c-.023.032-.642 1.107-1.376 2.39L5.871 8.43l-.833.002c-.744.003-.843.005-.914.017a2.17 2.17 0 0 0-1.209.609c-.35.35-.567.803-.62 1.3-.01.103-.01.328 0 .436.01.085 1.59 8.014 1.63 8.173.09.359.29.71.559.98.337.336.77.548 1.256.613.066.008 1.17.01 6.272.01 5.976 0 6.195 0 6.284-.014a2.15 2.15 0 0 0 1.777-1.577c.033-.13 1.615-8.06 1.628-8.157.014-.114.016-.35.003-.464a2.2 2.2 0 0 0-.463-1.128 3 3 0 0 0-.315-.319 2.2 2.2 0 0 0-1.034-.458c-.102-.017-.122-.018-.934-.02l-.83-.004-1.333-2.333a230 230 0 0 0-1.376-2.39.72.72 0 0 0-.82-.228.8.8 0 0 0-.303.223.7.7 0 0 0-.152.457c0 .103.02.193.063.283.017.036.535.947 1.151 2.025l1.12 1.96-2.239.002H9.76l-2.239-.002 1.12-1.96a245 245 0 0 0 1.152-2.025.64.64 0 0 0 .063-.283.72.72 0 0 0-.544-.709A.9.9 0 0 0 9 3.444m-4.7 6.43a.7.7 0 0 0-.512.391.7.7 0 0 0-.068.373c.004.035.364 1.849.8 4.03.64 3.195.798 3.978.818 4.03a.72.72 0 0 0 .524.432c.05.01.926.011 6.137.011 5.906 0 6.079 0 6.15-.015a.71.71 0 0 0 .514-.433c.018-.047.198-.935.817-4.027.436-2.182.796-3.996.8-4.03a.8.8 0 0 0-.021-.25.9.9 0 0 0-.122-.245.72.72 0 0 0-.44-.268c-.084-.017-15.31-.016-15.397 0" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="CartEmpty"><path fill-rule="evenodd" d="M9.265 6.289a.64.64 0 0 0-.383.236c-.021.03-.586 1.01-1.255 2.18l-1.215 2.128-.76.003c-.678.002-.769.004-.834.015a2 2 0 0 0-1.102.555c-.32.32-.517.733-.565 1.186-.01.093-.01.299 0 .398.008.077 1.449 7.306 1.485 7.452.082.327.266.648.51.893.308.307.704.5 1.146.56.06.007 1.066.009 5.72.009 5.448 0 5.648 0 5.73-.014a1.97 1.97 0 0 0 1.62-1.437c.03-.118 1.473-7.35 1.484-7.438.012-.104.014-.32.003-.423a2 2 0 0 0-.422-1.029 2.5 2.5 0 0 0-.288-.29 2 2 0 0 0-.943-.418c-.092-.016-.111-.017-.851-.019l-.756-.003-1.216-2.128a207 207 0 0 0-1.255-2.18.655.655 0 0 0-.748-.207.65.65 0 0 0-.415.62c0 .095.018.176.058.259.015.032.488.863 1.05 1.846l1.021 1.787-2.042.002c-1.123.001-2.96.001-4.084 0l-2.042-.002 1.022-1.787C9.5 8.06 9.972 7.23 9.988 7.197a.6.6 0 0 0 .057-.259.65.65 0 0 0-.496-.646.8.8 0 0 0-.284-.003M4.979 12.15a.64.64 0 0 0-.467.357.63.63 0 0 0-.062.34c.004.032.332 1.686.73 3.675.583 2.913.727 3.627.746 3.674a.66.66 0 0 0 .477.394c.047.01.845.01 5.596.01 5.385 0 5.543 0 5.608-.013a.65.65 0 0 0 .468-.395c.017-.043.182-.853.746-3.672.397-1.99.726-3.643.729-3.675a.7.7 0 0 0-.019-.228.8.8 0 0 0-.11-.224.66.66 0 0 0-.402-.244c-.077-.015-13.96-.014-14.04 0M12 2.096a.6.6 0 0 1 .6.6v1.8a.6.6 0 0 1-1.2 0v-1.8a.6.6 0 0 1 .6-.6M5.69 3.595a.59.59 0 0 1 .748.133l.057.083.897 1.572a.6.6 0 0 1-.218.813.59.59 0 0 1-.748-.133l-.058-.083-.897-1.573a.6.6 0 0 1 .218-.812m12.623 0c.283.165.38.528.218.812l-.897 1.573a.59.59 0 0 1-.714.26l-.092-.044a.6.6 0 0 1-.218-.813l.897-1.572a.59.59 0 0 1 .715-.26z" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="ChevronRight"><path fill-rule="evenodd" d="M7.773 2.008a.73.73 0 0 0-.554.52.9.9 0 0 0-.001.361.7.7 0 0 0 .095.215c.03.045.951.972 4.454 4.477L16.184 12l-4.417 4.42c-3.503 3.505-4.424 4.43-4.454 4.476a.7.7 0 0 0-.095.215.9.9 0 0 0 .001.36c.056.204.195.37.39.465.103.05.16.063.3.063.18 0 .306-.04.439-.144.024-.019 2.053-2.045 4.51-4.503l4.464-4.468.065-.099a1.4 1.4 0 0 0 0-1.571l-.065-.099-4.465-4.468A1225 1225 0 0 0 8.34 2.139a.8.8 0 0 0-.248-.122 1 1 0 0 0-.32-.009" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="File"><path fill-rule="evenodd" d="M5.405 2.005A2.15 2.15 0 0 0 3.49 3.632a2 2 0 0 0-.057.423c-.006.106-.007 2.728-.006 8.064.003 7.48.004 7.914.017 8.004.059.404.203.748.444
12281.06.074.095.277.297.375.371q.5.381 1.118.437c.123.012 13.118.012 13.24 0a2.14 2.14 0 0 0 1.119-.437c.098-.074.301-.276.375-.37a2.2 2.2 0 0 0 .418-.913c.043-.22.04.19.04-6.46 0-5.876 0-6.179-.014-6.241a.8.8 0 0 0-.098-.24c-.033-.055-.337-.362-2.595-2.62-2.024-2.024-2.568-2.564-2.613-2.592a.8.8 0 0 0-.258-.106C14.935 2 14.46 2 10.183 2c-2.61 0-4.76.002-4.778.004m.028 1.439a.73.73 0 0 0-.447.294 1 1 0 0 0-.106.242l-.019.071v15.896l.019.071c.066.263.25.452.511.527l.062.018H18.55l.063-.018a.72.72 0 0 0 .511-.522l.018-.068.002-5.406.003-5.406h-2.531c-2.76 0-2.598.003-2.723-.044a.74.74 0 0 1-.387-.352.6.6 0 0 1-.072-.256 216 216 0 0 1-.007-2.57V3.43l-3.97.001c-3.363 0-3.979.002-4.023.012m9.424 2.28V7.71h3.988l-1.988-1.988a468 468 0 0 0-1.993-1.988c-.004 0-.007.895-.007 1.988" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Globe"><path fill-rule="evenodd" d="M11.63 2.002a10 10 0 0 0-4.92 1.502A10.02 10.02 0 0 0 2.506 8.83 9.8 9.8 0 0 0 2 12c0 .477.011.713.056 1.117a10 10 0 0 0 4.06 6.979c.807.59 1.74 1.07 2.707 1.395a9.8 9.8 0 0 0 3.172.509 9 9 0 0 0 1.116-.056 9.98 9.98 0 0 0 6.817-3.85 10 10 0 0 0 1.554-2.92 9.9 9.9 0 0 0 .505-2.787c0-.05.004-.082.008-.082.006 0 .008-.11.008-.314 0-.206-.002-.31-.008-.302q-.007.013-.008-.072a10 10 0 0 0-4.112-7.71 10 10 0 0 0-2.708-1.396 9.8 9.8 0 0 0-2.523-.494 19 19 0 0 0-1.013-.015m-1.216 1.57a8.6 8.6 0 0 0-4.076 1.987 11 11 0 0 0-.9.92 8.6 8.6 0 0 0-1.981 4.774l-.003.032 2.15.002 2.15.002.004-.018.008-.074c.05-.57.177-1.37.324-2.025a16.8 16.8 0 0 1 2.29-5.454c.11-.17.105-.16.097-.16zm3.097-.004.09.138a16.8 16.8 0 0 1 2.362 5.766 17 17 0 0 1 .268 1.799l.004.018h2.146c1.18 0 2.148-.002 2.15-.004a6 6 0 0 0-.062-.569 8.6 8.6 0 0 0-1.967-4.293 9 9 0 0 0-.956-.953 8.5 8.5 0 0 0-3.86-1.875l-.162-.033q-.02-.005-.013.006m-1.626.476a15.2 15.2 0 0 0-1.714 3.203 15.3 15.3 0 0 0-.973 4.004l-.004.038h5.601l-.005-.038-.024-.214a15.36 15.36 0 0 0-2.488-6.739 7 7 0 0 0-.283-.402 2 2 0 0 0-.11.148m-9.887 7.957c0 .174.001.245.002.158.002-.087.002-.23 0-.316 0-.087-.002-.016-.002.158m1.46.718c-.004.028.02.27.045.454a8.54 8.54 0 0 0 2.915 5.338 8.2 8.2 0 0 0 1.78 1.176 8.5 8.5 0 0 0 2.282.754s-.033-.054-.075-.117a16.8 16.8 0 0 1-2.647-7.593l-.004-.018H5.606c-1.181 0-2.148.003-2.148.006m5.74.032.025.214a15.36 15.36 0 0 0 2.488 6.738c.153.228.275.4.283.4.014 0 .32-.446.495-.722a15.4 15.4 0 0 0 1.47-2.999c.4-1.105.675-2.272.807-3.417l.024-.214.005-.038H9.194zm7.033-.02-.009.074c-.069.783-.252 1.81-.469 2.625a16.8 16.8 0 0 1-2.244 5.011 8.7 8.7 0 0 0 2.891-1.085 8.6 8.6 0 0 0 1.867-1.516 8.5 8.5 0 0 0 1.78-2.898 8.4 8.4 0 0 0 .485-2.225c-.003-.002-.97-.004-2.15-.004h-2.147z" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Search"><path fill-rule="evenodd" d="M2 10.571a8.571 8.571 0 1 1 17.143 0 8.571 8.571 0 0 1-17.143 0m8.571-7.142a7.143 7.143 0 1 0 0 14.285 7.143 7.143 0 0 0 0-14.285" clip-rule="evenodd"/><path fill-rule="evenodd" d="M15.78 15.78a.714.714 0 0 1 1.01 0l5 5a.714.714 0 0 1-1.01 1.01l-5-5a.714.714 0 0 1 0-1.01" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Menu"><path fill-rule="evenodd" d="M2 4.857c0-.394.32-.714.714-.714h18.572a.714.714 0 1 1 0 1.428H2.714A.714.714 0 0 1 2 4.857M2 12c0-.395.32-.714.714-.714h18.572a.714.714 0 1 1 0 1.428H2.714A.714.714 0 0 1 2 12m0 7.143c0-.395.32-.714.714-.714h18.572a.714.714 0 1 1 0 1.428H2.714A.714.714 0 0 1 2 19.143" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Mobiilivarmenne"><path d="m14.56 8.638-2.558 2.559-2.56-2.56H8.167v.528l3.836 3.838 7.548-7.551q-.42-.484-.895-.91zM8.165 15.69h1.277v-4.38l-1.277-1.276zm7.671 0v-5.655l-1.277 1.278v4.377z"/><path d="m19.968 5.972-.909.91a8.68 8.68 0 0 1 1.668 5.105v.014c0 4.812-3.914 8.726-8.724 8.726S3.28 16.812 3.28 12.001v-.014h-.007c.008-4.805 3.918-8.712 8.723-8.712h.013c1.96 0 3.77.656 5.227 1.753l.908-.908A9.94 9.94 0 0 0 12.004 2h-.007C6.485 2 2 6.486 2 12h.006c0 5.513 4.485 10 9.997 10S22 17.514 22 12c0-2.263-.76-4.35-2.032-6.028"/></symbol> <symbol viewBox="0 0 24 24" id="Open"><path fill-rule="evenodd" d="M2.004 12c0 4.402 0 6.203.002 4.002V7.998c-.001-2.201-.002-.4-.002 4.002" clip-rule="evenodd"/>
1228<path d="M2.628 2.628a2.14 2.14 0 0 1 1.305-.619c.04-.004 1.58-.006 3.425-.006 3.217.001 3.356.002 3.401.016a.75.75 0 0 1 .51.513c.012.049.017.09.018.172a.64.64 0 0 1-.053.29.74.74 0 0 1-.501.42c-.05.012-.32.014-3.387.018-3.014.004-3.337.006-3.373.017a.76.76 0 0 0-.332.191.76.76 0 0 0-.193.344c-.017.066-.017 15.966 0 16.032a.73.73 0 0 0 .537.537c.066.017 15.972.017 16.038 0a.76.76 0 0 0 .344-.193.76.76 0 0 0 .191-.332c.012-.036.014-.36.017-3.376l.005-3.336.017-.063a.7.7 0 0 1 .192-.329.66.66 0 0 1 .515-.207c.12.001.196.017.286.059a.74.74 0 0 1 .41.527l-.004 6.776a2.14 2.14 0 0 1-1.945 1.913c-.075.006-2.309.008-8.115.006-7.66-.002-8.015-.003-8.095-.017a2.15 2.15 0 0 1-1.832-1.925c-.012-.13-.012-15.982 0-16.112.046-.498.263-.96.62-1.316"/><path d="M21.416 2.008c.205.034.469.155.58.344v5.501a.73.73 0 0 1-.51.551.75.75 0 0 1-.51-.048.72.72 0 0 1-.392-.56 82 82 0 0 1-.008-1.712v-1.64l-4.06 4.057c-2.233 2.231-4.078 4.07-4.1 4.085a.8.8 0 0 1-.218.104.6.6 0 0 1-.194.018.6.6 0 0 1-.194-.018.73.73 0 0 1-.496-.496.6.6 0 0 1-.018-.194.6.6 0 0 1 .018-.194.8.8 0 0 1 .103-.217c.016-.023 1.856-1.867 4.088-4.099l4.058-4.058h-1.64a81 81 0 0 1-1.713-.008.7.7 0 0 1-.499-.292.73.73 0 0 1-.11-.612.72.72 0 0 1 .385-.452c.144-.07-.154-.063 2.777-.066 1.825-.002 2.616 0 2.653.006"/></symbol> <symbol viewBox="0 0 24 24" id="User"><path fill-rule="evenodd" d="m11.756 2.005-.164.011A5.35 5.35 0 0 0 8.696 3.14a5.35 5.35 0 0 0-2.04 3.84c-.013.169-.013.59 0 .757a5.364 5.364 0 0 0 4.445 4.903 5.357 5.357 0 1 0 1.36-10.62 10 10 0 0 0-.705-.014m-.088 1.44a3.94 3.94 0 0 0-1.776.597 3.935 3.935 0 0 0-1.473 4.93c.194.425.441.787.769 1.123.333.342.684.595 1.102.797a3.9 3.9 0 0 0 1.872.387 3.8 3.8 0 0 0 1.548-.387 3.8 3.8 0 0 0 1.102-.797c.38-.39.655-.818.854-1.331a3.94 3.94 0 0 0 .073-2.607 3.93 3.93 0 0 0-2.975-2.652 4.2 4.2 0 0 0-1.096-.06m-.032 10.692a9.98 9.98 0 0 0-7.597 3.952 9.9 9.9 0 0 0-1.514 2.875c-.063.195-.073.243-.067.36a.71.71 0 0 0 .57.66c.07.015.324.016 8.969.016 7.986 0 8.904-.001 8.968-.012a.66.66 0 0 0 .367-.2.68.68 0 0 0 .204-.39c.022-.136.005-.235-.079-.486a9.98 9.98 0 0 0-9.821-6.775m.128 1.428a8.57 8.57 0 0 0-5.18 1.93 9.4 9.4 0 0 0-.977.937 8.6 8.6 0 0 0-1.391 2.133c0 .002 3.503.003 7.784.003s7.784-.001 7.784-.003l-.077-.161a8.6 8.6 0 0 0-1.314-1.972 10 10 0 0 0-.959-.922 8.57 8.57 0 0 0-4.885-1.93c-.18-.011-.645-.02-.785-.015" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Close"><path fill-rule="evenodd" d="m2.62 2.004-.06.013a.72.72 0 0 0-.52.457.6.6 0 0 0-.035.25.65.65 0 0 0 .121.396c.024.034 1.559 1.575 4.449 4.466L10.988 12l-4.42 4.422c-2.88 2.88-4.431 4.437-4.45 4.466a.7.7 0 0 0-.091.198.5.5 0 0 0-.022.19.6.6 0 0 0 .036.25c.071.2.234.361.433.433a.6.6 0 0 0 .25.036.65.65 0 0 0 .396-.121c.034-.024 1.575-1.559 4.466-4.449L12 13.012l4.414 4.413c2.891 2.89 4.432 4.425 4.466 4.449a.65.65 0 0 0 .396.121.64.64 0 0 0 .424-.127.72.72 0 0 0 .284-.433.4.4 0 0 1 .017-.069c.01-.02.01-.176-.001-.17q-.008.003-.008-.019a.8.8 0 0 0-.061-.203 1 1 0 0 0-.057-.094c-.024-.034-1.559-1.575-4.45-4.466L13.013 12l4.413-4.414c2.89-2.891 4.425-4.432 4.449-4.466a1 1 0 0 0 .057-.094.8.8 0 0 0 .06-.202c0-.013.005-.025.009-.028a.3.3 0 0 0 .008-.089q0-.082-.008-.079t-.008-.018a.6.6 0 0 0-.034-.143.75.75 0 0 0-.348-.39.6.6 0 0 0-.334-.072.5.5 0 0 0-.19.022.7.7 0 0 0-.198.091c-.029.019-1.586 1.57-4.466 4.45L12 10.987 7.586 6.575C4.695 3.685 3.154 2.15 3.12 2.126a.63.63 0 0 0-.38-.122 1 1 0 0 0-.12 0m-.617.712c0 .048.001.067.003.042V2.67c-.002-.023-.003-.002-.003.046m0 18.568c0 .048.001.067.003.042v-.088c-.002-.023-.003-.002-.003.046" clip-rule="evenodd"/></symbol> <symbol viewBox="0 0 24 24" id="Instagram"><path d="M12 3.8c2.672 0 2.988.013 4.04.06.976.042 1.503.206 1.855.343.464.18.8.399 1.148.746.352.352.566.684.746 1.149.137.351.3.882.344 1.855.047 1.055.058 1.371.058 4.04 0 2.671-.011 2.987-.058 4.038-.043.977-.207 1.504-.344 1.856-.18.465-.398.8-.746 1.148a3.1 3.1 0 0 1-1.148.746c-.352.137-.883.301-1.856.344-1.055.047-1.371.059-4.039.059-2.672 0-2.988-.012-4.04-.059-.976-.043-1.503-.207-1.855-.344a3.1 3.1 0 0 1-1.148-.746 3.1 3.1 0 0 1-.746-1.148c-.137-.352-.3-.883-.344-1.856-.047-1.054-.058-1.37-.058-4.039 0-2.672.011-2.988.058-4.039.043-.976.207-1.504.344-1.855.18-.465.398-.801.746-1.149a3.1 3.1 0 0 1 1.148-.746c.352-.137.883-.3 1.856-.344 1.05-.046 1.367-.058 4.039-.058M12 2c-2.715 0-3.055.012-4.121.059-1.063.046-1.793.218-2.426.464A4.9 4.9 0 0 0 3.68 3.68a4.9 4.9 0 0 0-1.157 1.77c-.246.636-.418 1.362-.464 2.425C2.012 8.945 2 9.285 2 12s.012 3.055.059 4.121c.046 1.063.218 1.793.464 2.426.258.66.598 1.219 1.157 1.773a4.9 4.9 0 0 0 1.77 1.153c.636.246 1.362.418 2.425.465 1.066.046 1.406.058 4.121.058s3.055-.012 4.121-.058c1.063-.047 1.793-.22 2.426-.465a4.9 4.9 0 0 0 1.77-1.153 4.9 4.9 0 0 0 1.152-1.77c.246-.636.418-1.363.465-2.425.047-1.066.058-1.406.058-4.121s-.
1228011-3.055-.058-4.121c-.047-1.063-.22-1.793-.465-2.426A4.7 4.7 0 0 0 20.32 3.68a4.9 4.9 0 0 0-1.77-1.153c-.636-.246-1.363-.418-2.425-.465C15.055 2.013 14.715 2 12 2"/><path d="M12 6.863A5.14 5.14 0 0 0 6.863 12a5.138 5.138 0 0 0 10.273 0c0-2.836-2.3-5.137-5.136-5.137m0 8.469a3.333 3.333 0 1 1 .001-6.665A3.333 3.333 0 0 1 12 15.332m6.54-8.672a1.2 1.2 0 1 1-2.4 0 1.2 1.2 0 0 1 2.4 0"/></symbol> <symbol viewBox="0 0 24 24" id="Facebook"><path d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.093 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.563V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.129 22 16.992 22 12"/></symbol> <symbol viewBox="0 0 24 24" id="Linkedin"><g clip-path="url(#a)"><path d="M20.52 2H3.477C2.66 2 2 2.645 2 3.441v17.114C2 21.352 2.66 22 3.477 22H20.52c.816 0 1.48-.648 1.48-1.441V3.44C22 2.645 21.336 2 20.52 2M7.934 19.043h-2.97V9.496h2.97zM6.449 8.195a1.72 1.72 0 1 1-.006-3.439 1.72 1.72 0 0 1 .006 3.44m12.594 10.848h-2.965v-4.64c0-1.106-.02-2.532-1.543-2.532-1.543 0-1.777 1.207-1.777 2.453v4.719H9.797V9.496h2.844v1.305h.039c.394-.75 1.363-1.543 2.804-1.543 3.004 0 3.559 1.976 3.559 4.547z"/></g><defs><clipPath id="a"><path d="M2 2h20v20H2z"/></clipPath></defs></symbol> <symbol viewBox="0 0 24 24" id="Tiktok"><path d="M14.56 2h-3.37v13.623c0 1.623-1.297 2.957-2.91 2.957s-2.91-1.334-2.91-2.957c0-1.594 1.268-2.898 2.824-2.956v-3.42C4.766 9.303 2 12.115 2 15.622 2 19.16 4.823 22 8.309 22s6.309-2.87 6.309-6.377V8.638a7.8 7.8 0 0 0 4.465 1.507v-3.42C16.548 6.638 14.56 4.55 14.56 2"/></symbol> <symbol viewBox="0 0 24 24" id="Youtube"><path d="M21.8 8.035s-.195-1.379-.796-1.984c-.762-.797-1.613-.801-2.004-.848C16.203 5 12.004 5 12.004 5h-.008S7.796 5 5 5.203c-.39.047-1.242.05-2.004.848-.601.605-.793 1.984-.793 1.984S2 9.656 2 11.273v1.516c0 1.617.2 3.238.2 3.238s.195 1.38.792 1.985c.762.797 1.762.77 2.207.855 1.602.152 6.801.2 6.801.2s4.203-.008 7-.208c.39-.047 1.242-.05 2.004-.847.601-.606.797-1.985.797-1.985S22 14.41 22 12.79v-1.516c0-1.617-.2-3.238-.2-3.238M9.935 14.63V9.008l5.402 2.82z"/></symbol> <symbol viewBox="0 0 24 24" id="Threads"><path d="M9.901 9.52a172 172 0 0 1-1.457-1.002c.945-1.352 2.191-1.878 3.915-1.878 1.219 0 2.254.409 2.992 1.185.739.776 1.16 1.886 1.257 3.305q.615.258 1.13.605c1.387.931 2.15 2.325 2.15 3.921 0 3.395-2.783 6.344-7.82 6.344-4.325 0-8.818-2.516-8.818-10.007C3.25 4.542 7.603 2 12.055 2c2.058 0 6.883.304 8.695 6.295l-1.7.441c-1.405-4.268-4.346-4.949-7.042-4.949-4.457 0-6.978 2.714-6.978 8.488 0 5.179 2.818 7.929 7.038 7.929 3.47 0 6.058-1.804 6.058-4.445 0-1.798-1.51-2.659-1.587-2.659-.295 1.543-1.085 4.138-4.555 4.138-2.023 0-3.767-1.398-3.767-3.228 0-2.612 2.48-3.559 4.438-3.559.732 0 1.618.05 2.079.143 0-.796-.675-2.16-2.375-2.16-1.563 0-1.958.506-2.459 1.085zm2.994 2.718c-2.55 0-2.88 1.087-2.88 1.77 0 1.097 1.304 1.46 2 1.46 1.275 0 2.584-.353 2.79-3.03a7.8 7.8 0 0 0-1.91-.2"/></symbol> </svg> <header class="ds-main-header__wrap open" id="dna-main-header"> <div v-if="showHeader || false" class="ds-main-header"> <nav class="ds-site-nav" aria-label="Sivustot"> <a href="https://www.dna.fi" class="ds-site-nav__link " >Yksityisille</a> <a href="https://www.dna.fi/yrityksille" class="ds-site-nav__link " >Yrityksille</a> <a href="https://www.dna.fi/wholesale" class="ds-site-nav__link current" aria-current="true">Wholesale</a> <a href="https://corporate.dna.fi/fi" class="ds-site-nav__link " >DNA Oyj</a> </nav> <div class="ds-main-header__navigation"> <a class="ds-main-header__area--logo" href="/wholesale" aria-label="Siirry etusivulle"> <img src="https://www.dna.fi/o/dna-fi-theme/images/DNA.svg" alt="DNA logo" height="60" width="60"/> </a> <nav class="ds-main-header__area--nav" v-bind:class="{'open' : navigationVisible, 'subview': selectedNav != ''}" aria-label="Päävalikko" :role="mobileNavigationActive ? 'dialog' : null" :aria-modal="mobileNavigationActive ? 'true' : null"> <button v-if="mobileMode" v-cloak class="ds-simple-btn ds-main-nav__close-mobile" v-on:click="toggleMobileMenu()" aria-label="Sulje päävalikko" type="button"> <svg role="img" aria-hidden="true" class="ds-icon ds-icon--24 ds-icon--pink"> <use href="#Close"></use> </svg> </button> <ul class="ds-main-nav__list--main"> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_57" v-bind:class="{'open' : isNavigationSectionOpen('57'), 'active' : isNavigationSectionActive('nav_57')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/yhteydet" id="d55e6d3d-60bf-a809-9969-414509ec3085" data-navpath="/Yhteydet" v-if="true || mobileMode" v-on:click="toggleNavigationItem('57', false, $event)" v-bind:aria-expanded="String(isNavigationSectionOpen('57'))" > <span>Yhteydet</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section ds-main-nav__section--megamenu"> <ul class="ds-main-nav__list--sub" aria-label="Yhteydet"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-2 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationItem('57', false, $event)" aria-label="Sulje alavalikko Yhteydet"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Yhteydet</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-60" data-navpath="/Yhteydet/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-61" data-navpath="/Yhteydet/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/dna-tower" id="featured-62" data-navpath="/Yhteydet/DNA Tower" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-tower')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>DNA Tower</span> </a> </section> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_2" v-bind:class="{'open' : isNavigationSubSectionOpen('2'), 'active' : isNavigationSectionActive('nav_2')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Verkkopalvelut</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/verkkopalvelut" id="6cffa7a5-789e-7f90-071a-8ce782e19748" data-navpath="/Yhteydet/Verkkopalvelut" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('2', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('2'))" > <span>Verkkopalvelut</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Verkkopalvelut"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('2', $event)" aria-label="Sulje alavalikko Verkkopalvelut"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Verkkopalvelut</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_4" v-bind:class="{'active' : isNavigationSectionActive('nav_4')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut" id="39a1b5f8-cd40-4b89-fae4-768fef43e8ba" data-navpath="/Yhteydet/Verkkopalvelut/Kaikki verkkopalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut')" > <span>Kaikki verkkopalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_5" v-bind:class="{'active' : isNavigationSectionActive('nav_5')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/ethernet-vpn" id="19e49828-2126-263a-e2d5-0beeb71cca29" data-navpath="/Yhteydet/Verkkopalvelut/Ethernet VPN" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/ethernet-vpn')" > <span>Ethernet VPN</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_6" v-bind:class="{'active' : isNavigationSectionActive('nav_6')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/ip-vpn" id="7072
122814de-605f-9bf3-67b4-3cb5b4b5cd88" data-navpath="/Yhteydet/Verkkopalvelut/IP VPN" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/ip-vpn')" > <span>IP VPN</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_7" v-bind:class="{'active' : isNavigationSectionActive('nav_7')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/internet-access" id="99e078ec-1dd3-6a03-ed38-50c773707983" data-navpath="/Yhteydet/Verkkopalvelut/Internet Access" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/internet-access')" > <span>Internet Access</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_8" v-bind:class="{'active' : isNavigationSectionActive('nav_8')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/broadband" id="ef2a1fcf-4ec0-673d-8cd8-e78923ac2875" data-navpath="/Yhteydet/Verkkopalvelut/Broadband" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/broadband')" > <span>Broadband</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_10" v-bind:class="{'active' : isNavigationSectionActive('nav_10')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/verkkopalvelut/interconnect" id="2ff1d19f-e457-43f6-9b5b-45362e1e59a4" data-navpath="/Yhteydet/Verkkopalvelut/Interconnect" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/verkkopalvelut/interconnect')" > <span>Interconnect</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_30" v-bind:class="{'open' : isNavigationSubSectionOpen('30'), 'active' : isNavigationSectionActive('nav_30')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Kapasiteetti ja infra</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra" id="3028ec83-ba9e-0784-da5d-f01365e68ff5" data-navpath="/Yhteydet/Kapasiteetti ja infra" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('30', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('30'))" > <span>Kapasiteetti ja infra</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Kapasiteetti ja infra"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('30', $event)" aria-label="Sulje alavalikko Kapasiteetti ja infra"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Kapasiteetti ja infra</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_29" v-bind:class="{'active' : isNavigationSectionActive('nav_29')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra" id="71812088-8d44-a6bb-9b51-82b9dcc42ea8" data-navpath="/Yhteydet/Kapasiteetti ja infra/Kaikki kapasiteetti- ja infrapalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra')" > <span>Kaikki kapasiteetti- ja infrapalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_31" v-bind:class="{'active' : isNavigationSectionActive('nav_31')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/aallonpituus-siirtoyhteys" id="79d37ab4-27c8-3a4d-29fb-caaa77d7f26f" data-navpath="/Yhteydet/Kapasiteetti ja infra/Aallonpituus siirtoyhteys" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/aallonpituus-siirtoyhteys')" > <span>Aallonpituus siirtoyhteys</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_32" v-bind:class="{'active' : isNavigationSectionActive('nav_32')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kiintea-kuituyhteys" id="9ca07917-b462-c9c8-5946-6f92c27f29ee" data-navpath="/Yhteydet/Kapasiteetti ja infra/Kiinteä kuituyhteys" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kiintea-kuituyhteys')" > <span>Kiinteä kuituyhteys</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_33" v-bind:class="{'active' : isNavigationSectionActive('nav_33')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kaapelinsijoitusoikeudet" id="6de65fb4-7db1-e0c4-f3dd-e320d489abfe" data-navpath="/Yhteydet/Kapasiteetti ja infra/Kaapelinsijoitusoikeudet" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/kaapelinsijoitusoikeudet')" > <span>Kaapelinsijoitusoikeudet</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_34" v-bind:class="{'active' : isNavigationSectionActive('nav_34')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/laitetilat" id="f82a75e1-cecc-4c97-4718-e0d933b1b909" data-navpath="/Yhteydet/Kapasiteetti ja infra/Laitetilat" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/laitetilat')" > <span>Laitetilat</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_35" v-bind:class="{'active' : isNavigationSectionActive('nav_35')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/kapasiteetti-ja-infra/ip-transit" id="717be16c-2b47-b783-91d5-3731313bddba" data-navpath="/Yhteydet/Kapasiteetti ja infra/IP Transit" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/kapasiteetti-ja-infra/ip-transit')" > <span>IP Transit</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_38" v-bind:class="{'open' : isNavigationSubSectionOpen('38'), 'active' : isNavigationSectionActive('nav_38')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Tietoturva</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/tietoturva" id="765e329c-aa73-0e3e-0acd-83171ae6960f" data-navpath="/Yhteydet/Tietoturva" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('38', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('38'))" > <span>Tietoturva</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Tietoturva"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('38', $event)" aria-label="Sulje alavalikko Tietoturva"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Tietoturva</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_37" v-bind:class="{'active' : isNavigationSectionActive('nav_37')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/tietoturva/ddos-protection" id="ccca480e-bd96-7b56-cee5-5ae013f46e4d" data-navpath="/Yhteydet/Tietoturva/DDoS Protection" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoturva/ddos-protection')" > <span>DDoS Protection</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="!mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-60" data-navpath="/Yhteydet/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-61" data-navpath="/Yhteydet/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/dna-tower" id="featured-62" data-navpath="/Yhteydet/DNA Tower" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-tower')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>DNA Tower</span> </a> </section> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_58" v-bind:class="{'open' : isNavigationSectionOpen('58'), 'active' : isNavigationSectionActive('nav_58')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/puhe-ja-mobiili1" id="03144987-ff22-f4ef-b36f-4d1d5cf2b473" data-navpath="/Puhe ja mobiil
1228i" v-if="true || mobileMode" v-on:click="toggleNavigationItem('58', false, $event)" v-bind:aria-expanded="String(isNavigationSectionOpen('58'))" > <span>Puhe ja mobiili</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section ds-main-nav__section--megamenu"> <ul class="ds-main-nav__list--sub" aria-label="Puhe ja mobiili"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-2 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationItem('58', false, $event)" aria-label="Sulje alavalikko Puhe ja mobiili"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Puhe ja mobiili</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-70" data-navpath="/Puhe ja mobiili/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-72" data-navpath="/Puhe ja mobiili/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/yhteenliittaminen" id="featured-27" data-navpath="/Puhe ja mobiili/Yhteenliittäminen" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/yhteenliittaminen')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Yhteenliittäminen</span> </a> </section> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_25" v-bind:class="{'open' : isNavigationSubSectionOpen('25'), 'active' : isNavigationSectionActive('nav_25')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Mobiili</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/mobiili" id="82b62d10-2c7c-b4b6-34c5-6ba1728b88a6" data-navpath="/Puhe ja mobiili/Mobiili" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('25', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('25'))" > <span>Mobiili</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Mobiili"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('25', $event)" aria-label="Sulje alavalikko Mobiili"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Mobiili</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_24" v-bind:class="{'active' : isNavigationSectionActive('nav_24')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/mobiili" id="f2fdb1ce-c46c-b41e-bec5-56b7c651ec06" data-navpath="/Puhe ja mobiili/Mobiili/Kaikki mobiilipalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/mobiili')" > <span>Kaikki mobiilipalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_26" v-bind:class="{'active' : isNavigationSectionActive('nav_26')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/mobiili/mvno" id="af9f767a-3121-f46d-c909-b85e52b99b3e" data-navpath="/Puhe ja mobiil
1228i/Mobiili/MVNO" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/mobiili/mvno')" > <span>MVNO</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_47" v-bind:class="{'active' : isNavigationSectionActive('nav_47')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/mobiili/roaming" id="dbb2cee5-d751-f30b-7928-201c80aafe10" data-navpath="/Puhe ja mobiili/Mobiili/Roaming" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/mobiili/roaming')" > <span>Roaming</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_23" v-bind:class="{'open' : isNavigationSubSectionOpen('23'), 'active' : isNavigationSectionActive('nav_23')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Viestintä</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/viestinta" id="63c503a3-35fa-e1bd-b8e6-94b75f211ff6" data-navpath="/Puhe ja mobiili/Viestintä" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('23', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('23'))" > <span>Viestintä</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Viestintä"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('23', $event)" aria-label="Sulje alavalikko Viestintä"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Viestintä</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_19" v-bind:class="{'active' : isNavigationSectionActive('nav_19')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta" id="26bf030c-4a53-2601-5cd5-8de8e5961c14" data-navpath="/Puhe ja mobiili/Viestintä/Kaikki viestintäratkaisut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta')" > <span>Kaikki viestintäratkaisut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_21" v-bind:class="{'active' : isNavigationSectionActive('nav_21')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta/sovellusviestit" id="d4fd700b-b260-e1ee-21df-4e06bb03fdca" data-navpath="/Puhe ja mobiili/Viestintä/Sovellusviestit" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta/sovellusviestit')" > <span>Sovellusviestit</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_22" v-bind:class="{'active' : isNavigationSectionActive('nav_22')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta/sms-gateway" id="597698a5-0987-eee0-9f33-057234b8d7cb" data-navpath="/Puhe ja mobiili/Viestintä/SMS Gateway" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta/sms-gateway')" > <span>SMS Gateway</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_89" v-bind:class="{'active' : isNavigationSectionActive('nav_89')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/viestinta/rcs-viestinta" id="9d43e680-1566-83de-b9ad-89d3e537a5a6" data-navpath="/Puhe ja mobiili/Viestintä/RCS for Business Messaging" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/viestinta/rcs-viestinta')" > <span>RCS for Business Messaging</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_16" v-bind:class="{'open' : isNavigationSubSectionOpen('16'), 'active' : isNavigationSectionActive('nav_16')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Numerointi</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/numerointi" id="8af84900-c3f1-e396-d1c5-429d18d7ef95" data-navpath="/Puhe ja mobiil
1228i/Numerointi" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('16', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('16'))" > <span>Numerointi</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Numerointi"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('16', $event)" aria-label="Sulje alavalikko Numerointi"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Numerointi</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_13" v-bind:class="{'active' : isNavigationSectionActive('nav_13')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi" id="cb32eea5-6391-a190-2358-f9b413be4a2f" data-navpath="/Puhe ja mobiili/Numerointi/Kaikki numerointipalvelut" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi')" > <span>Kaikki numerointipalvelut</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_18" v-bind:class="{'active' : isNavigationSectionActive('nav_18')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi/virtuaalimobiilinumerot" id="646cf960-59b5-f97c-a643-8d00f9e67765" data-navpath="/Puhe ja mobiili/Numerointi/Virtuaalimobiilinumerot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi/virtuaalimobiilinumerot')" > <span>Virtuaalimobiilinumerot</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_14" v-bind:class="{'active' : isNavigationSectionActive('nav_14')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi/sisaansoittonumerot" id="9b2edfc7-0d93-4bf8-2cca-c5f5e1278b3e" data-navpath="/Puhe ja mobiili/Numerointi/Sisäänsoittonumerot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi/sisaansoittonumerot')" > <span>Sisäänsoittonumerot</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_15" v-bind:class="{'active' : isNavigationSectionActive('nav_15')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/numerointi/ilmaisnumerot" id="5dcb7222-17c8-df34-f0a3-70e767257feb" data-navpath="/Puhe ja mobiili/Numerointi/Ilmaisnumerot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/numerointi/ilmaisnumerot')" > <span>Ilmaisnumerot</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="!mobileMode"> <section aria-label="Oikopolut"> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/ota-yhteytta" id="featured-70" data-navpath="/Puhe ja mobiili/Ota yhteyttä" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Ota yhteyttä</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="featured-72" data-navpath="/Puhe ja mobiili/Tutustu peittokarttaan" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Tutustu peittokarttaan</span> </a> <a class="ds-main-nav__featured-link ds-icon-btn" href="https://www.dna.fi/wholesale/yhteenliittaminen" id="featured-27" data-navpath="/Puhe ja mobiil
1228i/Yhteenliittäminen" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/yhteenliittaminen')" > <svg role="img" class="ds-icon ds-icon--16" aria-hidden="true"><use href="#ArrowRight"></use></svg> <span>Yhteenliittäminen</span> </a> </section> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_12" v-bind:class="{'open' : isNavigationSectionOpen('12'), 'active' : isNavigationSectionActive('nav_12')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/operaattoreille" id="9684aae4-baa5-d620-0928-3f6af93dd148" data-navpath="/Operaattoreille" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/operaattoreille')" > <span>Operaattoreille</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_90" v-bind:class="{'open' : isNavigationSectionOpen('90'), 'active' : isNavigationSectionActive('nav_90')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/datakeskustoimijoille" id="ac5fd380-0004-547f-b163-5f7605f7fa1a" data-navpath="/Datakeskustoimijoille" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/datakeskustoimijoille')" > <span>Datakeskustoimijoille</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--level-1 " id="nav_73" v-bind:class="{'open' : isNavigationSectionOpen('73'), 'active' : isNavigationSectionActive('nav_73')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-1" href="https://www.dna.fi/wholesale/tietoa-meista" id="ef44b4cd-ec43-6fbc-9ee6-3eff3fb1b580" data-navpath="/Tietoa meistä" v-if="true || mobileMode" v-on:click="toggleNavigationItem('73', false, $event)" v-bind:aria-expanded="String(isNavigationSectionOpen('73'))" > <span>Tietoa meistä</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section ds-main-nav__section--megamenu"> <ul class="ds-main-nav__list--sub" aria-label="Tietoa meistä"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-2 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationItem('73', false, $event)" aria-label="Sulje alavalikko Tietoa meistä"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Tietoa meistä</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="mobileMode"> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_39" v-bind:class="{'open' : isNavigationSubSectionOpen('39'), 'active' : isNavigationSectionActive('nav_39')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Tutustu meihin</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/tutustu-meihin" id="3186322b-a4ca-8fc6-b01c-d2de4072f024" data-navpath="/Tietoa meistä/Tutustu meihin" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('39', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('39'))" > <span>Tutustu meihin</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Tutustu meihin"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('39', $event)" aria-label="Sulje alavalikko Tutustu meihin"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Tutustu meihin</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_74" v-bind:class="{'active' : isNavigationSectionActive('nav_74')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/tutustu-meihin" id="44ffe4d7-dada-acdd-ea2e-f0229630adaa" data-navpath="/Tietoa meistä/Tutustu meihin/DNA Wholesale" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tutustu-meihin')" > <span>DNA Wholesale</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_41" v-bind:class="{'active' : isNavigationSectionActive('nav_41')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/dna-tower" id="bc24480f-0d05-2517-3d56-31760b5c963d" data-navpath="/Tietoa meistä/Tutustu meihin/DNA Tower" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-tower')" > <span>DNA Tower</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_45" v-bind:class="{'active' : isNavigationSectionActive('nav_45')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/tietoa-meista/verkot" id="15195119-802d-c48b-0ee1-5df5dc4831fb" data-navpath="/Tietoa meistä/Tutustu meihin/DNA:n verkot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/tietoa-meista/verkot')" > <span>DNA:n verkot</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_82" v-bind:class="{'active' : isNavigationSectionActive('nav_82')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/artikkelit" id="b29a8b62-f43a-67bb-3651-1e256e81f0c3" data-navpath="/Tietoa meistä/Tutustu meihin/Artikkelit" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/artikkelit')" > <span>Artikkelit</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_52" v-bind:class="{'open' : isNavigationSubSectionOpen('52'), 'active' : isNavigationSectionActive('nav_52')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Ota yhteyttä</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/ota-yhteytta" id="1f3211c1-cf11-b800-f9e2-34aa30e6f36b" data-navpath="/Tietoa meistä/Ota yhteyttä" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('52', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('52'))" > <span>Ota yhteyttä</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Ota yhteyttä"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('52', $event)" aria-label="Sulje alavalikko Ota yhteyttä"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Ota yhteyttä</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_81" v-bind:class="{'active' : isNavigationSectionActive('nav_81')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/ota-yhteytta" id="9107f987-02db-988b-732b-76150c3006b1" data-navpath="/Tietoa meistä/Ota yhteyttä/Yhteystiedot" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/ota-yhteytta')" > <span>Yhteystiedot</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-2 " id="nav_55" v-bind:class="{'open' : isNavigationSubSectionOpen('55'), 'active' : isNavigationSectionActive('nav_55')}"> <h2 class="ds-main-nav__item-text ds-main-nav__item-text--level-2" v-if="!mobileMode">Itsepalvelu</h2> <a class="ds-main-nav__item-text ds-main-nav__item-text--level-2" href="https://www.dna.fi/wholesale/itsepalvelu" id="ffc43ca6-a4fe-05a8-40cc-23fc2c4da6e6" data-navpath="/Tietoa meistä/Itsepalvelu" v-if="false || mobileMode" v-on:click.prevent="toggleNavigationSubItem('55', $event)" v-bind:aria-expanded="String(isNavigationSubSectionOpen('55'))" > <span>Itsepalvelu</span> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> <div class="ds-main-nav__section"> <ul class="ds-main-nav__list--sub" aria-label="Itsepalvelu"> <li class="ds-main-nav__item ds-main-nav__item--back"> <button class="ds-main-nav__item-text ds-main-nav__item-text--level-3 ds-main-nav__item-text--back" v-on:click.prevent="toggleNavigationSubItem('55', $event)" aria-label="Sulje alavalikko Itsepalvelu"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> <span>Itsepalvelu</span> </button> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_75" v-bind:class="{'active' : isNavigationSectionActive('nav_75')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/itsepalvelu" id="a4f0539a-1f62-91d1-6c89-5a0399d94481" data-navpath="/Tietoa meistä/Itsepalvelu/Kaikki itsepalvelukanavat" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/itsepalvelu')" > <span>Kaikki itsepalvelukanavat</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_54" v-bind:class="{'active' : isNavigationSectionActive('nav_54')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/dna-wholesale-online" id="ecc877b2-c134-9c0b-3bb5-2f7270e02249" data-navpath="/Tietoa meistä/Itsepalvelu/DNA Wholesale Online" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/dna-wholesale-online')" > <span>DNA Wholesale Online</span> </a> </li> <li class="ds-main-nav__item ds-main-nav__item--sub ds-main-nav__item--level-3" id="nav_56" v-bind:class="{'active' : isNavigationSectionActive('nav_56')}"> <a class="ds-main-nav__item-text ds-main-nav__item-text--link ds-main-nav__item-text--level-3" href="https://www.dna.fi/wholesale/yritysdna" id="75cc73c0-e4fb-1223-8527-048f0ff08705" data-navpath="/Tietoa meistä/Itsepalvelu/YritysDNA" v-on:click="onNavigationLinkClick('https://www.dna.fi/wholesale/yritysdna')" > <span>YritysDNA</span> </a> </li> </ul> </div> </li> <li class="ds-main-nav__item ds-main-nav__item--featured ds-main-nav__featured-links" v-if="!mobileMode"> </li> </ul> </div> </li> </ul> </nav> <div class="ds-main-header__area--icons"> <div class="ds-main-nav__icon" v-bind:class="{'active' : languageMenuActive}"> <button class="ds-main-nav__icon-content" v-on:click="toggleLanguageMenu()" v-bind:aria-expanded="String(languageMenuActive)"> <div class="sr-only"> <span lang="en">Change language. Current language FI</span> <span lang="fi">Vaihda kieli. Nykyinen kieli FI</span> </div> <svg class="ds-icon" role="img" alt="" aria-hidden="true"> <use href="#Globe"></use> </svg> <span aria-hidden="true">FI</span> </button> <div class="dna-language__menu ds-main-nav__dropdown" v-show="languageMenuActive"> <a href="/c/portal/update_language?p_l_id=9161297&languageId=en_US&persistState=false" data-language-id="en_US" lang="en" aria-label="EN, customer support in English"> EN </a> </div> <span class="ds-main-nav__icon-caret"></span> </div> <div class="ds-main-nav__icon" v-bind:class="{'active' : searchActive}"> <button class="ds-main-nav__icon-content" v-on:click="toggleSearch()" v-bind:aria-expanded="String(searchActive)" aria-label="Haku"> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#Search"></use> </svg> <span>Haku</span> </button> <div class="ds-main-nav__search ds-main-nav__dropdown ds-main-nav__dropdown--full" v-show="searchActive"> <div class="algolia-search algolia-quicksearch__container js-algolia-search-container"> <div id="algoliaQuickSearch" class="js-algolia-search__app"> <algolia-search-component :test-portlet="false" :result-page="false" aria-label="Pikahaku" search-result-for-query-translation="tulos haulla" search-results-for-query-translation="tulosta haulla" query="" :ranking-enabled="false" :page-size="7" :max-site-dependant-search-prop="3" language="fi" promotion-translation="Katso edullisempi DNA Asiakasetuhinta" algolia-site-index-name-prop="dna_main_index_prod_wholesale" algolia-search-index-name="dna_main_index_prod" algolia-search-api-key="40d475f3c73895ec0cf90311c9ed079d" algolia-application-id="ZOGF71LKCH" site-name="Wholesale" result-page-url="https://www.dna.fi/haku" facets="Laitteet,Palvelut,Tukisivut,Vinkit,Uutiset"> </algolia-search-component> </div> </div> </div> <span class="ds-main-nav__icon-caret"></span> </div> <!-- SSO-DNA-HEADER --> <div class="ds-main-nav__icon ds-main-nav__icon--login ds-main-nav__icon--unresolved" v-bind:class="{'active' : loginMenuActive, 'hilite' : userLoggedIn, 'ds-main-nav__icon--resolved' : loginDataFetched}" v-if="loginMenuVisible"> <button v-if="!loginDataFetched" class="ds-main-nav__icon-content ds-main-nav__login-button ds-main-nav__login-separator" aria-label="Kirjautumistietoja ladataan"> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#User"></use> </svg> <span class="ds-main-nav__icon-text--limited unresolved-hidden"> </span> </button> <template v-if="loginDataFetched && userLoggedIn"> <button class="ds-main-nav__icon-content ds-main-nav__login-button ds-main-nav__login-separator" v-on:click="toggleLoginMenuActive()" v-bind:aria-expanded="String(loginMenuActive)" v-bind:aria-label="userName + ', linkit omiin palveluihin'"> <svg role="img" class="ds-icon" aria-hidden="true"> <use href="#User"></use> </svg> <span class="ds-main-nav__icon-text--limited unresolved-hidden" v-html="userName"></span> </button> </template> <template v-else-if="loginDataFetched"> <button class="ds-btn ds-btn--primary ds-btn--small ds-main-nav__login-button" v-on:click="toggleLoginMenuActive()" v-bind:aria-expanded="String(loginMenuActive)"> Kirjaudu </button> </template> <login-component v-show="loginMenuActive" ssoaddress="https://pass.dna.fi/oauth/v2/oauth-authorize" :headermobilemode="mobileMode" @login="onLogin" @invalidloginsettings="onInvalidLoginSettings" @logindialogopencall="onLoginDialogOpenCall"></login-component> <span class="ds-main-nav__icon-caret"></span> </div> <!-- SSO-DNA-HEADER end --> <div class="ds-main-nav__icon ds-main-nav__icon--mobile" v-bind:class="{'active' : mobileNavigationActive}"> <button class="ds-main-nav__icon-content ds-main-nav__menu-button" v-on:click="toggleMobileMenu()" v-bind:aria-expanded="String(mobileNavigationActive)" v-bind:aria-label="mobileNavigationActive ? 'Sulje päävalikko' : 'Avaa päävalikko'"> <svg role="img" aria-hidden="true" class="ds-icon ds-main-nav__icon--menu"> <use href="#Menu"></use> </svg> <svg role="img" aria-hidden="true" class="ds-icon ds-main-nav__icon--close"> <use href="#Close"></use> </svg> </button> </div> </div> </div> </div> <template v-else> <login-component v-show="loginMenuActive" ssoaddress="https://pass.dna.fi/oauth/v2/oauth-authorize" :headermobilemode="mobileMode" @login="onLogin" @invalidloginsettings="onInvalidLoginSettings" @logindialogopencall="onLoginDialogOpenCall"></login-component> </template> </header>
1228<script type="text/x-template" id="algolia-template"> <div> <form @submit.prevent="moveToResultPage()" name="searchFm" :aria-label="ariaLabel"> <div v-bind:class="{'algolia-search__search-area-wrapper': resultPage,'algolia-quicksearch__search-area-wrapper': !resultPage}"> <div class="algolia-search__search-field-wrapper"> <label :for="searchFieldId" class="sr-only">Etsi sivustolta</label> <input :id="searchFieldId" v-model="currentQuery" type="search" autocorrect="off" autocapitalize="none" autocomplete="off" spellcheck="false" @keydown="handleInputKeydown" class="algolia-search__search-input js-header_search-input-algolia" placeholder='Etsi sivustolta'/> <button v-if="getMainStoreQuery() != ''" v-on:click="clearQuery()" type="reset" ref="algoliaClearRef" class="algolia-search__search-clear js-header_search-clear-algolia"> <svg role="img" aria-hidden="true" class="dna-icon algolia-search__search-clear-icon ds-icon"> <path d="M20.019 21.536l1.767-1.767L1.987-.031.22 1.739z"/><path d="M20.019-.03l1.767 1.767-19.799 19.8L.22 19.768z"/> </svg> <span class="sr-only">Tyhjennä</span> </button> <button v-if="getMainStoreQuery() === ''" v-on:click="focusInputField" class="algolia-search__search-button ds-simple-btn" type="submit" > <svg role="img" class="algolia-search__search-icon ds-icon" aria-hidden="true"> <use href="#Search"></use> </svg> <span class="sr-only">Hae</span> </button> </div> <div class="algolia-search__results" v-bind:class="{'algolia-search__results--fullpage' : resultPage, 'algolia-quicksearch__results' : !resultPage}" v-if="getMainStoreQuery() != ''" :data-insights-index="algoliaSiteIndexName" > <div v-bind:class="{'algolia-quicksearch__results-container': !resultPage,'algolia-quicksearch__results-container--noresults' : (!getMainStoreResults().length && !resultPage)}"> <div v-if="getTotalResults() > 0" v-bind:class="{'algolia-search__infotext-container': resultPage, 'algolia-quicksearch__search-results-infotext': !resultPage}"> <algolia-search-category-buttons :product-category-json='{ "Puhelimet":{ "name":"Puhelimet", "url":"https://kauppa.dna.fi/laitteet/puhelimet-ja-lisalaitteet/puhelimet" }, "MOBILE_PHONES":{ "name":"Puhelimet", "url":"https://kauppa.dna.fi/laitteet/puhelimet-ja-lisalaitteet/puhelimet" }, "Tabletit":{ "name":"Tabletit", "url":"https://kauppa.dna.fi/laitteet/tabletit-ja-lisalaitteet/tabletit" }, "TABLETS":{ "name":"Tabletit", "url":"https://kauppa.dna.fi/laitteet/tabletit-ja-lisalaitteet/tabletit" }, "LAPTOPS":{ "name":"kannettavat tietokoneet", "url":"https://kauppa.dna.fi/laitteet/tietokoneet-ja-lisalaitteet/kannettavat-tietokoneet" }, "DESKTOP_COMPUTERS":{ "name":"pöytätietokoneet", "url":"https://kauppa.dna.fi/laitteet/tietokoneet-ja-lisalaitteet/poytatietokoneet" } }' all-translation='Kaikki' :search-store-results="getMainStoreResults()"></algolia-search-category-buttons> </div> <div v-if="getQuery() != ''"> <algolia-search-facets :result-text="resultText" :result-page="resultPage" product-translation="Laitteet" content-translation="Palvelut" posts-translation="Tukisivut" blogs-translation="Vinkit" rss-translation="Uutiset" :active-facet-name="activeFacetName" @facetChange="onFacetChange" > </algolia-search-facets> </div> <div v-else-if="resultPage" class="algolia-search__infotext-container"> <h2>Hakuasi vastaavia tuloksia ei löytynyt</h2> <p>Kokeile muokata hakusanojasi ja tee uusi haku</p> </div> <div v-else class="algolia-quicksearch__search-results-infotext"> Ei tuloksia </div> <template v-if="searchStore.lastResults?._rawResults?.length > 0"> <template v-for="(result, index) in results" :key="result.objectID"> <a @click.prevent="pushEvent(result, index, 'clickedObjectIDsAfterSearch')" :href="result.url" :data-insights-object-id="result.objectID" :data-insights-position="index + 1" :data-insights-query-id="searchStore.lastResults._rawResults[0].queryID" :data-objectid="result.objectID" :data-position="index + 1" :target="isVideo(result) ? '_blank' : '_self'" class="algolia-search-result" v-if="(promotionalResult && promotionalResult.length == 0) || (promotionalResult && promotionalResult.length > 0 && result.objectID != promotionalResult[0].objectID) || index == 0"> <algolia-search-result-image :og-image='result.ogImage' :entry-type='result.entryType' default-icon-url='#File' :use-default-icon-for-websites='true'></algolia-search-result-image> <div class="algolia-search-result__content"> <h3 class="algolia-search-result__title h4" v-html="getTitle(result)"></h3> <div class="algolia-search-result__ingresstext" v-html="getIngressText(result)"></div> <div class="algolia-search-result__prices"> <h4 class="algolia-search-result__productprice" v-if="isProduct(result)" v-html="getDisplayPrice(result)"></h4> <div class="algolia-search-result__productprice algolia-search-result__productprice--loyalty" v-if="isProduct(result) && result.customerLoyaltyPrice" v-html="getCustomerLoyaltyPrice(result)"></div> </div> </div> </a> </template> </template> </div> <div class="algolia-search__show-all-footer" v-if="getTotalResults() > 0 && !resultPage"> <button type="submit" class="ds-btn ds-btn--primary ds-btn--full"><span>Näytä kaikki hakutulokset (<span v-html="totalResultsText"></span>)</span></button> </div> <div v-if="results && results.length < getMainStoreTotalResultsCount() && resultPage" class="algolia-search__more-results"> <a v-on:click.stop.prevent="loadMoreResults()" href="#" class="dlsg-btn algolia-search__more-results-btn"> <span>Näytä lisää</span> </a> </div> </div> </div> </form> </div> </script>
1228 <!-- SSO-DNA-HEADER -->
1228<script type="text/x-template" id="login-template"> <div class="dna-login__root"> <div v-if="showHeader" class="dna-login__menu ds-main-nav__dropdown ds-main-nav__dropdown--left"> <template v-if="loggedIn"> <div class="dna-login__username"> <span v-html="userInfo.givenname" class="dna-login__givenname"></span> <span v-html="userInfo.surname" class="dna-login__surnname"></span> </div> <div v-if="b2cLinksVisible" class="dna-login__links dna-login__links--b2c"> <a class="dna-login__link" v-for="link in navigation" v-bind:href="link.url"> <span v-html="link.title"></span> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> </div> <div v-if="b2bLinksVisible" class="dna-login__links dna-login__links--b2b"> <a class="dna-login__link" v-for="link in userInfo.businessServiceSet" v-bind:href="link.url" target="_blank"> <span v-html="link.title"></span> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> </div> <button v-on:click="logout()" class="ds-btn ds-btn--small ds-btn--full"> <span>Kirjaudu ulos</span> </button> <button v-if="userHasBothRoles && b2bLinksVisible" class="ds-btn ds-btn--small ds-btn--full" v-on:click="switchLinkList = !switchLinkList"> <span>Henkilöasiakkaan palvelut</span> </button> <button v-if="userHasBothRoles && b2cLinksVisible" class="ds-btn ds-btn--small ds-btn--full" v-on:click="switchLinkList = !switchLinkList"> <span>Siirry yrityspalveluihin</span> </button> <p class="dna-login__switchtext" v-if="!userHasBothRoles && isB2cPage && userInfo.isBusinessUser">Halutessasi voit siirtyä henkilöasiakkaan Minun palveluuni, jossa voit hallita omia palveluitasi. Kirjaudu ensin ulos.</p> <p class="dna-login__switchtext" v-if="!userHasBothRoles && !isB2cPage && userInfo.isPrivateUser">Jos haluat käyttää yrityspalveluita toisella tunnuksella, kirjaudu ensin ulos.</p> </template> <template v-else> <template v-if="currentSite === 'private'"> <button class="ds-btn ds-btn--primary ds-btn--full" v-on:click="openLogin()"><span>Kirjaudu sisään</span></button> <div class="dna-login__links"> <a class="dna-login__link" v-for="link in navigation" v-bind:href="link.url" v-on:click.prevent="openLoginToPage(link.title, link.url)"> <span v-html="link.title"></span> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="#ChevronRight"></use> </svg> </a> </div> <a class="ds-btn ds-btn--small ds-btn--full" href="http://m.prepaid.dna.fi/"><span>Prepaid-asiakkaan itsepalvelu</span></a> <a class="ds-btn ds-btn--small ds-btn--full" href="https://www.dna.fi/yrittajat#itsepalvelu"><span>Yrittäjänä asiointi</span></a> </template> <template v-if="currentSite === 'business'"> <a class="ds-btn ds-btn--primary ds-btn--full" href="https://yritysdna.dna.fi"><span>Kirjaudu YritysDNA:han</span></a> <a class="ds-btn ds-btn--secondary ds-btn--small ds-btn--full" href="https://www.dna.fi/yrityksille/itsepalvelu/yritysdna"><span>Hae tunnuksia</span></a> <div class="dna-login__explanation"><ul><li>Hallinnoi ja tilaa tuotteita ja palveluita</li><li>Suosittelemme YritysDNA:n käyttöä <b>tietokoneen selaimella</b></li></ul></div> <hr style="margin: 0;border: 0; border-top: 1px solid #D4D2CE;"> <a class="ds-btn ds-btn--small ds-btn--full" href="https://vaihde.dna.fi"><span>Kirjaudu Vaihdepalveluun</span></a> <a class="ds-btn ds-btn--small ds-btn--full" href="https://yrityspalvelut.dna.fi"><span>Muut itsepalvelukanavat</span></a> </template> <template v-if="currentSite === 'wholesale'"> <a class="ds-btn ds-btn--primary ds-btn--full" href="https://yritysdna.dna.fi/"><span>Kirjaudu YritysDNA:han</span></a> <div class="dna-login__explanation"><p><b>Yrityspalveluissa voit esimerkiksi:</b></p><ul><li>
1228Tarkastella nykyisiä palveluita, tehdä palvelupyyntöjä sekä hallinnoida käyttäjiä</li><li>Tarkastella laskuja ja raportteja sekä ottaa yhteyttä asiakaspalveluun</li><li>Kirjautua muihin DNA:n verkkopalveluihin</li></ul></div> <a class="ds-btn ds-btn--small ds-btn--full" href="https://uutiskirje.dna.fi/webApp/YLT_ydnatunnuslomake_tukku"><span>Hae tunnuksia</span></a> </template> <!-- Login options modal --> <dialog class="ds-modal ds-modal--dialog ds-modal--medium ds-modal--login" ref="loginOptionsDialog" aria-labelledby="login-options-title"> <div class="ds-modal__container"> <button class="ds-modal__close" v-on:click="$emit('close')" aria-label="translations['dialog.close.aria.label']"> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Close"></use> </svg> </button> <div class="ds-modal__content basic-web-content"> <div class="bank-login__wrap--narrow"> <h3 class="bank-login__title" id="login-options-title">Valitse kirjautumistapa</h3> <p>Sinut ohjataan pankkisi kirjautumissivulle tai Mobiilivarmenteen kirjautumisnäkymään. <a href="https://www.dna.fi/tuki/asiakkuus/kirjautuminen">Lue lisää kirjautumisesta.</a></p><p class="basic-web-content">Tarkistamme ostosten yhteydessä asiakkaan osoite- ja luottotiedot Digi- ja väestötietoviraston järjestelmästä sekä Intrum Luottotietopalvelusta. Pankkitunnuksiasi ei luovuteta DNA:lle eikä pankkitiliäsi veloiteta. Kirjautumisen yhteydessä tarkistuksia ei tehdä.</p> <p class="ds-text--small"></p> <div class="bank-login__grid"> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-op-1&prompt=login')" aria-label="Kirjaudu sisään Osuuspankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/op-0923.png" alt="Osuuspankki logo"> <span>Osuuspankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-nordea-1&prompt=login')" aria-label="Kirjaudu sisään Nordea tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/nordea-0923.png" alt="Nordea logo"> <span>Nordea</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-danskebank-1&prompt=login')" aria-label="Kirjaudu sisään Danske Bank tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/danskebank-0923.png" alt="Danske Bank logo"> <span>Danske Bank</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-spankki-1&prompt=login')" aria-label="Kirjaudu sisään S-Pankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/spankki-0923.png" alt="S-Pankki logo"> <span>S-Pankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-sp-1&prompt=login')" aria-label="Kirjaudu sisään Säästöpankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/saastopankki-0923.png" alt="Säästöpankki logo"> <span>Säästöpankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-pop-1&prompt=login')" aria-label="Kirjaudu sisään Pop Pankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/poppankki-0923.png" alt="Pop Pankki logo"> <span>Pop Pankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-omasp-1&prompt=login')" aria-label="Kirjaudu sisään Oma Säästöpankki tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/omasp-0923.png" alt="Oma Säästöpankki logo"> <span>Oma Säästöpankki</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-aktia-1&prompt=login')" aria-label="Kirjaudu sisään Aktia tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/aktia-0923.png" alt="Aktia logo"> <span>Aktia</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-alandsbanken-1&prompt=login')" aria-label="Kirjaudu sisään Ã
landsbanken tunnuksilla"> <img aria-hidden="true" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fit,h_40,w_112,f_auto,q_auto,dpr_2/v1618875243/Assets/Icons%20and%20logos/Other%20logos/bank_logos/alandsbanken-0923.png" alt="Ã
landsbanken logo"> <span>Ã
landsbanken</span> </a> <a class="bank-login__item" v-bind:href="getLoginUrl('&acr_values=urn:se:curity:authentication:oidc:oidc-ftn-mobileid-1&prompt=login')" aria-label="Kirjaudu sisään Mobiilivarmenne tunnuksilla"> <svg role="img" aria-hidden="true" class="ds-icon ds-icon--black"><use href="#Mobiilivarmenne"></use></svg> <span>Mobiilivarmenne</span> </a> </div> </div> </div> </div> </dialog> </template> </div> <dialog id="inactivityWarning" class="ds-modal ds-modal--dialog ds-modal--medium" style="min-height: unset;" ref="dialog"> <div class="ds-modal__container"> <div class="ds-modal__title"> <h2 id="ds-modal-title">Haluatko jatkaa asiointia?</h2> </div> <div class="ds-modal__content basic-web-content"> Jos et halua jatkaa asiointia dna.fi -palvelussa, sinut kirjataan ulos automaattisesti <span style="font-weight: 700;">2 minuutin</span> kuluttua. </div> </div> <div class="ds-modal__bottom-bar"> <div class="ds-btn-group ds-btn-group--confirm"> <button class="ds-btn ds-btn--secondary" v-on:click="logout()">Kirjaudu ulos</button> <button class="ds-btn ds-btn--primary" v-on:click="closeInactivityWarning()">Jatka asiointia</button> </div> </div> </dialog> </div> </script>
1228 <!-- SSO-DNA-HEADER end -->
1228<script type="text/x-template" id="cart-price"> <p v-if="discountInfo != ''" class="ds-minicart-item__discount-info">{{ discountInfo }}</p> <p class="ds-minicart-item__price" :class="{'ds-minicart-item__price--discount': hasDiscount}"> {{price}} <span class="ds-minicart-item__price-suffix">€<template v-if="isMonthlyPrice">/kk</template><template v-if="pricePeriodLength > 0">/{{pricePeriodLength}} kk</template></span> </p> </script>
1228
1228<script type="text/x-template" id="cart-entry"> <section class="ds-minicart-item__wrap" aria-roledescription="Tuote" :aria-labelledby="titleId"> <div class="ds-label ds-label--offer" v-if="discountLabel != 0">{{ discountLabel }}</div> <div class="ds-minicart-item"> <div class="ds-minicart-item__child" v-if="entry.parentItemId"> <svg role="img" class="ds-icon ds-icon--24 ds-icon--pink" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowBendDownRight"></use> </svg> </div> <div class="ds-minicart-item__img"> <img v-if="productImg" :src="productImg" alt="" /> </div> <div class="ds-minicart-item__content"> <component :is="productUrl ? 'a' : 'h3'" :href="productUrl ? productUrl : null" class="ds-minicart-item__title" :class="{'ds-minicart-item__link' : productUrl}" :id="titleId"> {{entry.product.name}} <span v-if="shortDescription" class="ds-minicart-item__title-details">{{shortDescription}}</span> </component> <div class="ds-minicart-item__price-section"> <cart-price :hasDiscount="hasDiscount" :discountInfo="discountInfo" :price="getSinglePriceWithDecimalsNumbersOnly(displayPrice)" :isMonthlyPrice="isMonthlyPrice" :pricePeriodLength="pricePeriodLength" /> <p v-if="afterThatPrice" class="ds-minicart-item__infotext"> jatkossa {{getSinglePriceWithDecimals(afterThatPrice)}}/kk </p> <p v-if="isMonthlyPrice && isFixedTerm" class="ds-minicart-item__infotext"> {{contractLength}} kk sopimus, yht. {{getSinglePriceWithDecimals(getContractTotalPrice)}} </p> <p v-else-if="isMonthlyPrice" class="ds-minicart-item__infotext"> Ei määräaikaa </p> <p v-if="openingFee" class="ds-minicart-item__infotext"> Avausmaksu {{getSinglePriceWithDecimals(openingFee)}} </p> <p v-if="entry.promotionText" class="ds-minicart-item__infotext"> {{entry.promotionText}} </p> </div> </div> <div class="ds-minicart-item__action"> <p class="ds-minicart-item__infotext">{{entry.quantity}} kpl</p> <button v-if="entry.quantity > 1 && itemCanBeRemovedFromSidecart" @click.stop="removeItemFromCart()" :disabled="actionInProgress" class="ds-function-btn" :aria-labelledby="ctaLabelledby" type="button"> <svg class="ds-icon" role="img" aria-hidden="true"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Minus"></use></svg> <span class="sr-only" :id="ctaId">Vähennä ostoskorista yksi</span> </button> <button v-else-if="itemCanBeRemovedFromSidecart" @click.stop="removeItemFromCart()" :disabled="actionInProgress" class="ds-function-btn" :aria-labelledby="ctaLabelledby" type="button"> <svg class="ds-icon" role="img" aria-hidden="true"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Trash"></use></svg> <span class="sr-only" :id="ctaId">Poista ostoskorista</span> </button> </div> </div> </section> </script>
1228<script type="text/x-template" id="cart-liftup" xmlns="http://www.w3.org/1999/html"> <section class="ds-minicart-liftup" aria-roledescription="Tuote" :aria-labelledby="titleId"> <div class="ds-minicart-liftup__heading"> <img class="ds-minicart-liftup__img" v-if="productImg" :src="productImg" alt="" /> <p><b>{{productDescription}}</b></p> </div> <p> <template v-if="isSecurityProduct"> <ul> <li> <a :href="productUrl" class="ds-minicart-liftup__link ds-minicart-item__link" :id="titleId">{{entry.description}}</a> </li> <li>{{entry.description2}}</li> </ul> </template> <template v-else> <a :href="productUrl" class="ds-minicart-liftup__link ds-minicart-item__link" :id="titleId">{{entry.name}}</a><br> </template> <span :class="{'ds-minicart-liftup__discount': isDiscounted}">{{priceDescription1}}</span> {{priceDescription2}} </p> <button class="ds-btn ds-btn--small ds-btn--full" @click.stop="addItem()" :disabled="actionInProgress" :id="ctaId" :aria-labelledby="ctaLabelledby" type="button" > Lisää ostoskoriin </button> </section> </script>
1228<script type="text/x-template" id="cart-recommendation"> <section class="ds-minicart-item ds-minicart-item--recommendation" aria-roledescription="Tuote" :aria-labelledby="titleId"> <div class="ds-minicart-item__img"> <img v-if="productImg" :src="productImg" alt="" /> </div> <div class="ds-minicart-item__content"> <a :href="productUrl" :aria-label="productName" :id="titleId" class="ds-minicart-item__title ds-minicart-item__link" data-recommendation-placement-id="side-cart-recommended-product-read-more" :data-recommendation-placement-index="index" :data-recommendation-item-id="productCode" :data-recommendation-id="extRecommendationId"> {{productName}} </a> <div class="ds-minicart-item__price-section"> <cart-price :hasDiscount="hasDiscount" :price="getSinglePriceWithDecimalsNumbersOnly(displayPrice)" :isMonthlyPrice="false" :pricePeriodLength="contractLength" /> </div> <button class="ds-minicart-item__add ds-btn ds-btn--small" @click.stop="addItem()" :disabled="actionInProgress" :id="ctaId" :aria-labelledby="ctaLabelledby" type="button" data-recommendation-placement-id="side-cart-recommended-product-add-to-cart" :data-recommendation-placement-index="index" :data-recommendation-item-id="productCode" :data-recommendation-id="extRecommendationId"> Lisää ostoskoriin </button> </div> </section> </script>
1228<script type="text/x-template" id="cart-details"> <div v-if="!cartInitialized" class="ds-sidecart__section ds-sidecart__section--empty"> <div class="ds-loading"> <div class="ds-loading__bar"></div> <div class="ds-loading__bar"></div> <div class="ds-loading__bar"></div> <div class="ds-loading__bar"></div> </div> </div> <div class="ds-sidecart__notification ds-sidecart__section-title" v-if="notificationMessage != ''"> <svg role="img" class="ds-icon ds-icon--24 ds-icon--pink" aria-hidden="true"> <use v-if="notificationMessage == 'SUCCESS'" href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Check"></use> <use v-else href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Error"></use> </svg> <div> <template v-if="notificationMessage == 'SUCCESS'"> <h3 class="h4">Tuote lisätty ostoskoriin</h3> </template> <template v-else-if="notificationMessage == 'ADD_ITEM_ERROR'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Tätä tuotetta voi tilata vain rajoitetun määrän kerrallaan. Olet jo lisännyt sallitun määrän tuotetta ostoskoriin.</p> </template> <template v-else-if="notificationMessage == 'PRODUCT_LIMIT_EXCEEDED'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Tätä tuotetta voi tilata vain rajoitetun määrän kerrallaan. Olet jo lisännyt sallitun määrän tuotetta ostoskoriin.</p> </template> <template v-else-if="notificationMessage == 'CART_PRODUCT_OUT_OF_STOCK'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Tuotetta ei valitettavasti ole varastossa haluamaasi määrää.</p> </template> <template v-else-if="notificationMessage == 'CART_PRODUCT_STOCK_LIMIT_EXCEEDED'"> <h3 class="h4">minicart.product.error.cart-out-of-stock</h3> <p>minicart.product.error.cart-out-of-stock-description</p> </template> <template v-else-if="notificationMessage == 'PRODUCT_TAG_LIMIT_EXCEEDED'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Ostoskorissa on tuotteita, joita voi tilata vain rajoitetun määrän. Vähennä kappalemäärää tai poista osa tuotteista jatkaaksesi tilausta.</p> </template> <template v-else-if="notificationMessage == 'DELETE_ITEM_ERROR'"> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Ostoskorissa on tuotteita, joita voi tilata vain rajoitetun määrän. Vähennä kappalemäärää tai poista osa tuotteista jatkaaksesi tilausta.</p> </template> <template v-else> <h3 class="h4">Tuotetta ei voitu lisätä koriin</h3> <p>Voi pahus, jokin meni pieleen. Yritä hetken kuluttua uudestaan.</p> </template> </div> </div> <div v-if="cart" class="ds-sidecart__rocket"> <section class="ds-sidecart__section ds-sidecart__section--main" aria-label="Ostoskorissa olevat tuotteet"> <template v-for="(entry, index) in visibleEntries" :key="entry.product.code"> <cart-entry :entry="entry" :allEntries="visibleEntries" :index="index" :productBaseUrl="productBaseUrl" :actionInProgress="actionInProgress" @removeitem="removeItemFromCart" /> </template> </section> <section class="ds-sidecart__section" v-if="cart.recommendedService != null" aria-label="Suositellut tuotteet"> <cart-liftup :entry="cart.recommendedService" :index="0" :productBaseUrl="productBaseUrl" :actionInProgress="actionInProgress" @additem="addItem" /> </section> <section class="ds-sidecart__section" v-if="cart.recommendedProducts && cart.recommendedProducts.length > 0" aria-label="Yhdessä ostettuja tuotteita"> <h3 class="ds-sidecart__section-title h4">Yhdessä ostettuja tuotteita</h3> <template v-for="(entry, index) in shownRecommendations" :key="entry.code"> <cart-recommendation :entry="entry" :index="index" :productBaseUrl="productBaseUrl" :actionInProgress="actionInProgress" @additem="addItem" /> </template> </section> <section class="ds-sidecart__footer ds-minicart-summary ds-minicart-summary--main" v-if="cart.status" aria-label="Yhteensä"> <div class="ds-minicart-summary__prices"> <div class="ds-minicart-summary__price"> <p>Kertamaksut</p> <div class="h3">{{getSinglePriceWithDecimalsNumbersOnly(oneTimeChargesGrossSellingPrice)}} €</div> </div> <div class="ds-minicart-summary__price"> <p>Kuukausimaksut</p> <div class="h3">{{getSinglePriceWithDecimalsNumbersOnly(cart.monthlyChargesTotal?.gross)}} €/kk</div> </div> </div> <a href="https://kauppa.dna.fi/cart" class="ds-btn ds-btn--primary ds-btn--full">Siirry tilaamaan</a> </section> </div> </script>
1228
1228<script> 1229window.sso_check_settings = { 1230host: 'https://pass.dna.fi', 1231interval: '30' 1232}; 1233</script>
1233 <!-- COMMON-DNA-HEADER end --> <svg class="responsiveImageSvgFilters" aria-hidden="true"> <filter id="svgBlurNormal"> <feGaussianBlur stdDeviation="10"></feGaussianBlur> <feComposite in2="SourceGraphic" operator="in"></feComposite> </filter> </svg> <div id="wrapper" class="page-wrapper"> <section id="content"> <style type="text/css"> 1234.master-layout-fragment .portlet-header { 1235display: none; 1236} 1237</style> <div class="dna-main-content" id="main-content" role="main"> <div class="portlet-column portlet-column-only" id="column-1"> <div class="portlet-dropzone portlet-column-content portlet-column-content-only" id="layout-column_column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_kbTpBWVBnV8L_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_kbTpBWVBnV8L"> <!-- Custom DNA imports --> <div class="" > <div class=""> <div class="journal-content-article " data-analytics-asset-id="28454087" data-analytics-asset-title="Wholesale hero - uusi" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="28454089">
1237<script type="text/javascript"> 1238window.dynamicCSS = window.dynamicCSS || {}; 1239if (!window.dynamicCSS['heroNewCSS']) { 1240window.dynamicCSS['heroNewCSS'] = true; 1241var link = document.createElement('link'); 1242link.rel = 'stylesheet'; 1243link.href = '/o/dna-fi-theme/css/dna/portlets/hero-new.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1244link.media = 'all'; 1245document.head.appendChild(link); 1246} 1247</script>
1247 <div class="ds-hero "> <div class="ds-hero__image dna-cld-container--crop"> <img class="dna-cld-responsive placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/c_fill,f_auto,g_auto,h_220,q_1,w_600/e_blur:100/v1/Assets/Wholesale/Ostetut%20kuvapankkikuvat/iStock-1302091438_sRGB" data-src="https://res.cloudinary.com/dnaoyj/image/upload/c_fill,dpr_auto,f_auto,g_auto,h_220,q_auto,w_600/v1/Assets/Wholesale/Ostetut%20kuvapankkikuvat/iStock-1302091438_sRGB" data-heights="220,460,600,800" fetchpriority="high"> </div> <div class="ds-hero__content-wrap"> <div class="ds-hero__content"> <div class="ds-hero__text basic-web-content"> <h1>DNA Wholesale</h1> <p class="ds-lead-paragraph">Hoidamme vaativat ja räätälöidyt projektit alusta loppuun asiantuntemuksella ja kokemuksella.</p> </div> <div class="ds-hero__cta-area"> <div class=" ds-btn-group"> <a href="https://www.dna.fi/wholesale/ota-yhteytta" class="ds-btn ds-btn--primary data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="148946b7-5afe-7586-91ff-6966611b8e8d" aria-label="Ota yhteyttä"> <span>Ota yhteyttä</span> </a> </div> </div> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg"> <div class=" dna-portlet-topmargin--normal dna-portlet-bottommargin--normal ds-bg--white dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid dna-grid--2-1 dna-grid--wide-gutter dna-grid--article"> <div class="portlet-column dna-grid-item dna-content-cols-2" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_DCqnjAz8wlS1_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_DCqnjAz8wlS1"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11018673" data-analytics-asset-title="Etusivu - intro" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11018675"> <h2>Keitä olemme?</h2> <p class="ds-lead-paragraph">DNA Wholesale tarjoaa niin kotimaisille kuin kansainvälisille wholesale-toimijoille laadukkaat tietoliikenneratkaisut aina yksinkertaisista toteutuksista isomman kokoluokan räätälöitäviin hankkeisiin.</p> <p>DNA on kiinteän laajakaistan markkinajohtaja ja lisäksi tarjoamme kattavan valikoiman langattomia laajakaista- ja puheratkaisuja. DNA:n oma <a href="http://www.dna.fi/wholesale/tietoa-meista/verkot">mobiili- ja kuituverkko</a> kattavat koko Suomen. Varmat ja turvalliset yhteydet ulkomaille takaavat tuplavarmistetut merikaapelit, <a href="http://www.dna.fi/wholesale/blogi/-/blogs/tuplavarmistettu-merikaapeli-takaa-varmat-yhteydet">DNA Seaway</a>. </p> <h3>Nopea, rohkea ja mutkaton</h3> <p>DNA on yksi Suomen johtavia tietoliikennekonserneista, ja yrityksemme toiminnan ytimessä vaikuttavat arvomme: nopeus, rohkeus ja mutkattomuus. Osana Telenor konsernia, meidän kauttamme saat myös asiantuntevaa apua Pohjoismaissa. </p> <p>Tutustu tarjontaamme ja <a href="https://www.dna.fi/wholesale/ota-yhteytta">ota rohkeasti yhteyttä</a>!</p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-2"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__column-2"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_nSd3OQkcJI40_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_nSd3OQkcJI40"> <!-- Custom DNA imports --> <div class="" > <div class=""> <div class="journal-content-article " data-analytics-asset-id="11018781" data-analytics-asset-title="Etusivun mobiil
1247iverkko-nostokortti" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11018783">
1247<script type="text/javascript"> 1248window.dynamicCSS = window.dynamicCSS || {}; 1249if (!window.dynamicCSS['cardFreeCSS']) { 1250window.dynamicCSS['cardFreeCSS'] = true; 1251var link = document.createElement('link'); 1252link.rel = 'stylesheet'; 1253link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1254link.media = 'all'; 1255document.head.appendChild(link); 1256} 1257</script>
1257 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--plum ds-color--white ds-content--dark-bg dna-card-free--inverted dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/f_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/Kuvitukset/Kartta_mobiiliverkko_2" data-src="https://res.cloudinary.com/dnaoyj/image/upload/dpr_auto,f_auto,q_auto,w_300/v1/Assets/Wholesale/Kuvitukset/Kartta_mobiiliverkko_2" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h3>Tutustu DNA:n verkkoihin!</h3> </div> <a href="/wholesale/tietoa-meista/verkot" class="dna-card-free__full-element-link data-ga-enabled" aria-label="" dna-dxp-type="web-content" dna-dxp-cid="5c5bc560-cf35-60ff-f590-3824334709a2" ></a> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch"> <div class=" dna-portlet-topmargin--normal ds-bg--sand-01 dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_O8bBrArI7hMH_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_O8bBrArI7hMH"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11018977" data-analytics-asset-title="Etusivu - Lukujen otsikko" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11018979"> <h2 style="text-align: center;">Toimiva infra ja monipuolinen osaaminen takaavat laadun</h2> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z"> <div class=" dna-portlet-topmargin--small ds-bg--sand-01 dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid dna-grid--4 "> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_WdVaKb8Q9jjl_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_WdVaKb8Q9jjl"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11002859" data-analytics-asset-title="Tietoa meistä - avainluku 1" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11002861"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="globe" role="img"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Globe"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><strong><span style="font-size:48px;">40 000</span></strong></span><br> <span style="font-size:20px;">kilometrin kuituverkko</span></p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-2"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-2"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_4rozfw9eiKoV_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_4rozfw9eiKoV"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11002952" data-analytics-asset-title="Tietoa meistä - avainluku 3" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11002954"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="5g_sim" role="img"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Sim"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><span style="color:#da0070;"><span style="font-size:48px;"><strong>~10</strong></span></span><strong><span style="font-size:48px;"></span><span style="font-size:48px;">0%</span></strong></span><span style="font-size:22px;"></span><br> <span style="font-size:20px;">5G kattavuus suomalaisten asuinosoitteista (1/2026)</span></p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-3"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-3"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_RpEmGQwDbMvP_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_RpEmGQwDbMvP"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11030534" data-analytics-asset-title="Tietoa meistä - avainluku 4" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11030536"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="4g_sim" role="img"><use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Sim"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><strong><span style="font-size:48px;">~</span><span style="font-size:48px;">100%</span></strong></span><br> <span style="font-size:20px;">4G-väestöpeitto <span style="font-size:20px;">(1/2026)</span></span></p> </div> </div> </div> </section> </div> </div> </div> <div class="portlet-column dna-grid-item dna-content-cols-1" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-4"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__column-4"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_pqpSRK8SL73P_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_pqpSRK8SL73P"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11002920" data-analytics-asset-title="Tietoa meistä - avainluku 2" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11002922"> <p style="text-align: center;"><svg aria-hidden="true" class="hl-icon hl-icon--40" data-color="Current color" data-size="40" data-title="person" role="img">
1257<use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#User"></use></svg></p> <p style="text-align: center;"><span style="color:#da0070;"><strong><span style="font-size:48px;">1 600</span></strong></span><span style="font-size:22px;"></span><br> <span style="font-size:20px;">ammattitaitoista työntekijää</span></p> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha"> <div class=" dna-portlet-topmargin--normal dna-portlet-bottommargin--normal ds-bg--sand-01 dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-publisher " id="p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_SpQpi2O7shzk_"> <section class="portlet" id="portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_SpQpi2O7shzk"> <div class="dna-grid dna-grid--3 dna-grid--wide-gutter"> <div class="dna-grid-item dna-content-cols-1" data-analytics-position="1" data-analytics-list="grid" data-analytics-section="asset-list">
1257<script type="text/javascript"> 1258window.dynamicCSS = window.dynamicCSS || {}; 1259if (!window.dynamicCSS['cardFreeCSS']) { 1260window.dynamicCSS['cardFreeCSS'] = true; 1261var link = document.createElement('link'); 1262link.rel = 'stylesheet'; 1263link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1264link.media = 'all'; 1265document.head.appendChild(link); 1266} 1267</script>
1267 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--bordered ds-bg--white ds-color--black dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container ratio-4-3"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/Oulun%20mastokuvat/_A7A3260_vaaka_sRGB" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Wholesale/Oulun%20mastokuvat/_A7A3260_vaaka_sRGB" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h2>Ratkaisumme</h2> <p>Tarjoamme niin kotimaisille kuin kansainvälisille tietoliikennepalveluita tarjoaville yrityksille laadukkaat tuotteet ja palvelut sekä asiantuntevaa palvelua. </p> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/tutustu-meihin#ratkaisut" class="ds-btn dna-card-free__cta data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="430ed7fc-2130-b287-dc86-7f557dd9b476" aria-label="Tutustu ratkaisuihimme"> <span>Tutustu ratkaisuihimme</span> </a> </div> </div> </div> </div> </div> </div> <div class="dna-grid-item dna-content-cols-1" data-analytics-position="2" data-analytics-list="grid" data-analytics-section="asset-list">
1267<script type="text/javascript"> 1268window.dynamicCSS = window.dynamicCSS || {}; 1269if (!window.dynamicCSS['cardFreeCSS']) { 1270window.dynamicCSS['cardFreeCSS'] = true; 1271var link = document.createElement('link'); 1272link.rel = 'stylesheet'; 1273link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1274link.media = 'all'; 1275document.head.appendChild(link); 1276} 1277</script>
1277 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--bordered ds-bg--white ds-color--black dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container ratio-4-3"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Brandikuvat/DNA%20Talo/040_Dna_Aula__50A9208" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Brandikuvat/DNA%20Talo/040_Dna_Aula__50A9208" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h2>Tutustu meihin</h2> <p>DNA on yksi Suomen johtavista tietoliikenneyhtiöistä, työllistäen noin 1600 henkilöä. Vuonna 2019 DNA:sta tuli osa kansainvälistä Telenor-konsernia.</p> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/tutustu-meihin" class="ds-btn dna-card-free__cta data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="0223df2d-d438-bae5-992d-81051821688f" aria-label="Lue lisää"> <span>Lue lisää</span> </a> </div> </div> </div> </div> </div> </div> <div class="dna-grid-item dna-content-cols-1" data-analytics-position="3" data-analytics-list="grid" data-analytics-section="asset-list">
1277<script type="text/javascript"> 1278window.dynamicCSS = window.dynamicCSS || {}; 1279if (!window.dynamicCSS['cardFreeCSS']) { 1280window.dynamicCSS['cardFreeCSS'] = true; 1281var link = document.createElement('link'); 1282link.rel = 'stylesheet'; 1283link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1284link.media = 'all'; 1285document.head.appendChild(link); 1286} 1287</script>
1287 <div class="dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--bordered ds-bg--white ds-color--black dna-card-free--image-w50"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered"> <div class="dna-card-free__image-wrap dna-cld-container ratio-4-3"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Brandikuvat/Kev%C3%A4t%202024%20%28YLT%29/DNA_YLT_Kev%C3%A4t2024_012" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_4:3,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Brandikuvat/Kev%C3%A4t%202024%20%28YLT%29/DNA_YLT_Kev%C3%A4t2024_012" loading="lazy"> </div> </div> <div class="dna-card-free__item dna-card-free__text basic-web-content dna-card-free__item--padding dna-card-free__item--centered"> <h2>Ota yhteyttä</h2> <p>Asiantuntijamme auttavat mielellään oikeanlaisten ratkaisujen löytämisessä. Mikäli et löytänyt suoraan etsimääsi, ota rohkeasti yhteyttä, niin voimme kartoittaa yhdessä erilaiset mahdollisuudet.</p> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/ota-yhteytta" class="ds-btn dna-card-free__cta data-ga-enabled" dna-dxp-type="web-content" dna-dxp-cid="c65329cf-d4cf-c2f5-fe8c-615fd33b05e7" aria-label="Siirry yhteystietoihin"> <span>Siirry yhteystietoihin</span> </a> </div> </div> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk"> <div class=" dna-portlet-topmargin--normal dna-portlet-bottommargin--extrasmall ds-bg--white dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_3jpm1sqTRh4H_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet_INSTANCE_3jpm1sqTRh4H"> <!-- Custom DNA imports --> <div class="" > <div class="basic-web-content "> <div class="journal-content-article basic-web-content" data-analytics-asset-id="11019630" data-analytics-asset-title="Etusivu - Artikkelin otsikko" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="11019632"> <h2 style="text-align: center;">Artikkelit ja blogit</h2> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-publisher " id="p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc_"> <section class="portlet" id="portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_75OCc1XlFiMc"> <div class="dna-grid dna-grid--4 ">
1287<script type="text/javascript"> 1288window.dynamicCSS = window.dynamicCSS || {}; 1289if (!window.dynamicCSS['cardFreeCSS']) { 1290window.dynamicCSS['cardFreeCSS'] = true; 1291var link = document.createElement('link'); 1292link.rel = 'stylesheet'; 1293link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1294link.media = 'all'; 1295document.head.appendChild(link); 1296} 1297</script>
1297 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Artikkeli</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Portaissa istuva nainen katsoo älypuhelimensa näyttöä, yllään oranssit housut ja teerinvärinen villapaita." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Yrityksille </span> <h2 class="hyphenate h3">Vuorovaikutus sisäänrakennettuna â RCS for Business jättää sovellukset historiaan</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/vuorovaikutus-sisaanrakennettuna-rcs-for-business-jattaa-sovellukset-historiaan" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="de69a335-3336-26c6-3969-fc99693d0915" aria-label="Lue artikkeli - Vuorovaikutus sisäänrakennettuna â RCS for Business jättää sovellukset historiaan"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue artikkeli</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/vuorovaikutus-sisaanrakennettuna-rcs-for-business-jattaa-sovellukset-historiaan" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="de69a335-3336-26c6-3969-fc99693d0915" ></a> </div> </div>
1297<script type="text/javascript"> 1298window.dynamicCSS = window.dynamicCSS || {}; 1299if (!window.dynamicCSS['cardFreeCSS']) { 1300window.dynamicCSS['cardFreeCSS'] = true; 1301var link = document.createElement('link'); 1302link.rel = 'stylesheet'; 1303link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1304link.media = 'all'; 1305document.head.appendChild(link); 1306} 1307</script>
1307 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Artikkeli</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Kaksi suurta vedenalaista merikaapelia" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Yrityksille </span> <h2 class="hyphenate h3">Varmistetut merikaapeliyhteydet takaavat luotettavan tiedonsiirron ulkomaille â lisäetuna tulee helppous</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/tuplavarmistettu-merikaapeli-takaa-varmat-yhteydet" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="52a9a3ff-5de5-1182-03d5-0f9298419008" aria-label="Lue artikkeli - Varmistetut merikaapeliyhteydet takaavat luotettavan tiedonsiirron ulkomaille â lisäetuna tulee helppous"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue artikkeli</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/tuplavarmistettu-merikaapeli-takaa-varmat-yhteydet" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="52a9a3ff-5de5-1182-03d5-0f9298419008" ></a> </div> </div>
1307<script type="text/javascript"> 1308window.dynamicCSS = window.dynamicCSS || {}; 1309if (!window.dynamicCSS['cardFreeCSS']) { 1310window.dynamicCSS['cardFreeCSS'] = true; 1311var link = document.createElement('link'); 1312link.rel = 'stylesheet'; 1313link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1314link.media = 'all'; 1315document.head.appendChild(link); 1316} 1317</script>
1317 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Artikkeli</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="DNA Wholesalen johtaja Juho Hyvärinen istuu portailla ja katsoo hymyillen kameraan." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2026 DNA Yrityksille </span> <h2 class="hyphenate h3">Pohjoismainen etulyöntiasema kirittää Suomeen rakennettavien datakeskusten suunnitelmia</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/pohjoismainen-etulyontiasema-kirittaa-suomeen-rakennettavien-datakeskusten-suunnitelmia" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="80e7cca7-34b6-1ebf-9fb8-ddf13dbc1134" aria-label="Lue artikkeli - Pohjoismainen etulyöntiasema kirittää Suomeen rakennettavien datakeskusten suunnitelmia"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue artikkeli</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/pohjoismainen-etulyontiasema-kirittaa-suomeen-rakennettavien-datakeskusten-suunnitelmia" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="80e7cca7-34b6-1ebf-9fb8-ddf13dbc1134" ></a> </div> </div>
1317<script type="text/javascript"> 1318window.dynamicCSS = window.dynamicCSS || {}; 1319if (!window.dynamicCSS['cardFreeCSS']) { 1320window.dynamicCSS['cardFreeCSS'] = true; 1321var link = document.createElement('link'); 1322link.rel = 'stylesheet'; 1323link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1324link.media = 'all'; 1325document.head.appendChild(link); 1326} 1327</script>
1327 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <span class="ds-label ds-label--align-top-left">Blogi</span> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2025 Anna-Mari Ylihurula </span> <h2 class="hyphenate h3">MWC 2025 oli tekoälyn ilotulitusta â kiskot valmiina, mutta junat harvassa</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-oli-tekoalyn-ilotulitusta-kiskot-valmiina-mutta-junat-harvassa" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="2b98709a-f240-8617-7e96-0d177143c81a" aria-label="Lue blogi - MWC 2025 oli tekoälyn ilotulitusta â kiskot valmiina, mutta junat harvassa"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Lue blogi</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-oli-tekoalyn-ilotulitusta-kiskot-valmiina-mutta-junat-harvassa" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="2b98709a-f240-8617-7e96-0d177143c81a" ></a> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_ portlet-static portlet-static-end portlet-barebone portlet-nested-portlets " id="p_p_id_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC_"> <section class="portlet" id="portlet_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC"> <div class=" dna-portlet-bottommargin--normal ds-bg--white dna-layout-bg-color" > <div class="dna-content-wrap--content"> <div class="dna-grid--1"> <div class="portlet-column dna-grid-item dna-content-cols-4" id="_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC__column-1"> <div class="portlet-dropzone portlet-column-content" id="layout-column__com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC__column-1"> <div class="portlet-boundary portlet-boundary_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_ portlet-static portlet-static-end portlet-barebone portlet-asset-publisher " id="p_p_id_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth_"> <section class="portlet" id="portlet_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_3nbTH8l1MCth"> <div class="dna-grid dna-grid--4 ">
1327<script type="text/javascript"> 1328window.dynamicCSS = window.dynamicCSS || {}; 1329if (!window.dynamicCSS['cardFreeCSS']) { 1330window.dynamicCSS['cardFreeCSS'] = true; 1331var link = document.createElement('link'); 1332link.rel = 'stylesheet'; 1333link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1334link.media = 'all'; 1335document.head.appendChild(link); 1336} 1337</script>
1337 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Portaissa istuva nainen katsoo älypuhelimensa näyttöä, yllään oranssit housut ja teerinvärinen villapaita." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/Wholesale/artikkeli_wholesale_Vuorovaikutus_sisaanrakennettuna_RCS.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Business </span> <h2 class="hyphenate h3">Interactive by default â RCS for Business Messaging pushes apps into the past</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/interactive-by-default-rcs-for-business-messaging-pushes-apps-into-the-past" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="863e6148-833a-f4bb-62df-685393b7abf1" aria-label="Read article - Interactive by default â RCS for Business Messaging pushes apps into the past"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read article</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/interactive-by-default-rcs-for-business-messaging-pushes-apps-into-the-past" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="863e6148-833a-f4bb-62df-685393b7abf1" ></a> </div> </div>
1337<script type="text/javascript"> 1338window.dynamicCSS = window.dynamicCSS || {}; 1339if (!window.dynamicCSS['cardFreeCSS']) { 1340window.dynamicCSS['cardFreeCSS'] = true; 1341var link = document.createElement('link'); 1342link.rel = 'stylesheet'; 1343link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1344link.media = 'all'; 1345document.head.appendChild(link); 1346} 1347</script>
1347 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="Kaksi suurta vedenalaista merikaapelia" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/Taktiset%20artikkelit%20ja%20blogit/artikkeli_Varmistetut_merikaapeliyhteydet_takaavat_luotettavan_tiedonsiirron_ulkomaille_lisaetuna_tulee_helppous.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 5/2026 DNA Business </span> <h2 class="hyphenate h3">Redundant subsea cable connections ensure safe and secure data transfer abroad</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/redundant-subsea-cables-ensure-safe-and-secure-connections-abroad" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="e789c0e4-5c98-b178-4492-5ddfc8f7a869" aria-label="Read article - Redundant subsea cable connections ensure safe and secure data transfer abroad"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read article</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/redundant-subsea-cables-ensure-safe-and-secure-connections-abroad" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="e789c0e4-5c98-b178-4492-5ddfc8f7a869" ></a> </div> </div>
1347<script type="text/javascript"> 1348window.dynamicCSS = window.dynamicCSS || {}; 1349if (!window.dynamicCSS['cardFreeCSS']) { 1350window.dynamicCSS['cardFreeCSS'] = true; 1351var link = document.createElement('link'); 1352link.rel = 'stylesheet'; 1353link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1354link.media = 'all'; 1355document.head.appendChild(link); 1356} 1357</script>
1357 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="DNA Wholesalen johtaja Juho Hyvärinen istuu portailla ja katsoo hymyillen kameraan." src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Artikkelit/DNA_2026_Q2_Natiivi_Pohjoismainen-etulyontiasema-kirittaa-Suomeen-rakennettavien-datakeskusten-suunnitelmia_Juho-Hyvarinen.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2026 DNA Business </span> <h2 class="hyphenate h3">Finlandâs data centre viability strengthened by the Nordic edge</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/finlands-data-centre-viability-strengthened-by-the-nordic-edge" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="df4db665-bd62-334f-ea64-69ac7831977a" aria-label="Read more - Finlandâs data centre viability strengthened by the Nordic edge"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read more</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/finlands-data-centre-viability-strengthened-by-the-nordic-edge" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="df4db665-bd62-334f-ea64-69ac7831977a" ></a> </div> </div>
1357<script type="text/javascript"> 1358window.dynamicCSS = window.dynamicCSS || {}; 1359if (!window.dynamicCSS['cardFreeCSS']) { 1360window.dynamicCSS['cardFreeCSS'] = true; 1361var link = document.createElement('link'); 1362link.rel = 'stylesheet'; 1363link.href = '/o/dna-fi-theme/css/dna/portlets/card-free.css?browserId=chrome&themeId=dnafitheme_WAR_dnafitheme&minifierType=css&languageId=fi_FI&t=1789630306000'; 1364link.media = 'all'; 1365document.head.appendChild(link); 1366} 1367</script>
1367 <div class="dna-grid-item dna-content-cols-1 dna-card-free__outside-wrap"> <div class="dna-card-free dna-card-free--shadow ds-bg--white dna-card-free--image-w33 dna-cld--cover-container dna-card-free--verticalmode"> <div class="dna-card-free__item dna-card-free__image dna-card-free__item--v-centered cover-height"> <div class="dna-card-free__image-wrap dna-cld-container ratio-16-9"> <img class="dna-cld-responsive dna-cld-responsive--full placeholder" alt="" src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,f_auto,g_auto,q_1,w_300/e_blur:100/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-src="https://res.cloudinary.com/dnaoyj/image/upload/ar_16:9,c_fill,dpr_auto,f_auto,g_auto,q_auto,w_300/v1/Assets/YLT/Uusi%20ty%C3%B6/Blogit%20ja%20taktiset%20sis%C3%A4ll%C3%B6t/KL%20TekTal%20ja%20Tivi%20blogit/KL_blogi_Ylihurula_MWC2025.jpg" data-heights="200,300,400,500,600,800,1000" loading="lazy" > </div> </div> <div class="dna-card-free__item dna-card-free__text dna-card-free__item--padding dna-card-free__item--v-centered basic-web-content"> <span class="dna-card-free__author dna-card-free__author--two-lines"> 3/2025 Anna-Mari Ylihurula </span> <h2 class="hyphenate h3">MWC 2025 was a fireworks display of AI â the tracks are laid, but we're lacking trains</h2> <div class="dna-card-free__align-bottom"></div> <div class="dna-card-free__cta-area"> <div class="dna-card-free__cta-wrapper ds-btn-group"> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-was-a-fireworks-display-of-ai-the-tracks-are-laid-but-were-lacking-trains" class="ds-icon-btn data-ga-enabled" dna-dxp-type="blog" dna-dxp-cid="fe4b153b-8d3b-bacc-e625-5d7b0b816bb3" aria-label="Read more - MWC 2025 was a fireworks display of AI â the tracks are laid, but we're lacking trains"> <svg class="ds-icon" role="img" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#ArrowRight"></use> </svg> <span>Read more</span> </a> </div> </div> </div> <a href="https://www.dna.fi/wholesale/blogi/-/blogs/mwc-2025-was-a-fireworks-display-of-ai-the-tracks-are-laid-but-were-lacking-trains" class="dna-card-free__full-element-link data-ga-enabled" tabindex="-1" aria-hidden="true" dna-dxp-type="blog" dna-dxp-cid="fe4b153b-8d3b-bacc-e625-5d7b0b816bb3" ></a> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> </div> </div> </div> <form action="#" aria-hidden="true" class="hide" id="hrefFm" method="post" name="hrefFm"><span></span><button hidden type="submit">Piilotettu</button></form> </section> </div> <!-- COMMON-DNA-FOOTER --> <footer id="dna-footer"> <div class="portlet-boundary portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_ portlet-static portlet-static-end portlet-barebone portlet-journal-content " id="p_p_id_com_liferay_journal_content_web_portlet_JournalContentPortlet_"> <section class="portlet" id="portlet_com_liferay_journal_content_web_portlet_JournalContentPortlet"> <!-- Custom DNA imports --> <div class="" > <div class=""> <div class="journal-content-article " data-analytics-asset-id="10925274" data-analytics-asset-title="Wholesale-footter" data-analytics-asset-type="web-content" data-analytics-web-content-resource-pk="10925276"> <nav class="ds-footer" id="dna-footer-app" aria-label="Footer linkit"> <div class="ds-footer__section ds-footer__section--top"> <div class="ds-footer__layout-width ds-footer__grid"> <div class="ds-footer__grid-item"> <svg role="img" aria-hidden="true" class="ds-footer__section-icon"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#OfficeBuilding"></use> </svg> <h2 class="h4">Tutustu meihin</h2> <ul class="ds-footer__links"> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/tutustu-meihin"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA Wholesale </a> </li> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/dna-tower"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA Tower </a> </li> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/tietoa-meista/verkot"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA:n verkot </a> </li> </ul> </div> <div class="ds-footer__grid-item"> <svg role="img" aria-hidden="true" class="ds-footer__section-icon"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Headset"></use> </svg> <h2 class="h4">Ota yhteyttä</h2> <ul class="ds-footer__links"> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/ota-yhteytta"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> Yhteystiedot </a> </li> </ul> </div> <div class="ds-footer__grid-item"> <svg role="img" aria-hidden="true" class="ds-footer__section-icon">
1367 <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#User"></use> </svg> <h2 class="h4">Itsepalvelu</h2> <ul class="ds-footer__links"> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/dna-wholesale-online"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> DNA Wholesale Online </a> </li> <li> <a class="ds-icon-btn ds-icon-btn--dark-bg" href="https://www.dna.fi/wholesale/yritysdna"> <svg class="ds-icon" aria-hidden="true"><use href="#ArrowRight"></use></svg> YritysDNA </a> </li> </ul> </div> </div> </div> <div class="ds-footer__section ds-footer__section--links"> <div class="ds-footer__layout-width ds-footer__grid"> <div class="ds-footer__grid-item"> <button v-bind:aria-expanded="String(showSection('0'))" aria-controls="footer-link-section-0" v-on:click="toggleSection('0')"> <h2 class="h4">Yhteydet</h2> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="#ChevronRight"/> </svg> </button> <ul class="ds-footer__links ds-footer__collapsible-items" id="footer-link-section-0" v-bind:class="{'open' : showSection('0')}"> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/ethernet-vpn">Ethernet VPN</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/ip-vpn">IP VPN</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/internet-access">Internet Access</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/broadband">Broadband</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/wireless-access-component">Wireless Access Component</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/verkottaminen/interconnect">Interconnect</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/aallonpituus-siirtoyhteys">Aallonpituus siirtoyhteys</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/kiintea-kuituyhteys">Kiinteä kuituyhteys</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/kaapelinsijoitusoikeudet">Kaapelinsijoitusoikeudet</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/laitetilat">Laitetilat</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/kapasiteetti-ja-infra/ip-transit">IP Transit</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="/wholesale/internetpalvelut/ddos-protection">DDos Protection</a> </li> </ul> </div> <div class="ds-footer__grid-item"> <button v-bind:aria-expanded="String(showSection('1'))" aria-controls="footer-link-section-1" v-on:click="toggleSection('1')"> <h2 class="h4">Puhe ja mobiili</h2> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="#ChevronRight"/> </svg> </button> <ul class="ds-footer__links ds-footer__collapsible-items" id="footer-link-section-1" v-bind:class="{'open' : showSection('1')}"> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/mobiili/mvno">MVNO</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/viestinta/sovellusviestit">Sovellusviestit</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/viestinta/sms-gateway">SMS Gateway</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/numerointi/virtuaalimobiilinumerot">Virtuaalimobiilinumerot</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/numerointi/sisaansoittonumerot">Sisäänsoittonumerot</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/numerointi/ilmaisnumerot">Ilmaisnumerot</a> </li> </ul> </div> <div class="ds-footer__grid-item"> <button v-bind:aria-expanded="String(showSection('2'))" aria-controls="footer-link-section-2" v-on:click="toggleSection('2')"> <h2 class="h4">Operaattoreille</h2> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="#ChevronRight"/> </svg> </button>
1367 <ul class="ds-footer__links ds-footer__collapsible-items" id="footer-link-section-2" v-bind:class="{'open' : showSection('2')}"> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#metro-ethernet">Metro Ethernet</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#operaattorilaajakaista">Operaattorilaajakaista</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#laitetilat-ja-mastopaikat">Laitetilat ja mastopaikat</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#tilaajayhteydet">Tilaajayhteydet</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#monipalvelunielut">Monipalvelunielut</a> </li> <li> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/wholesale/operaattoreille#kaapelin-sijoitusoikeudet">Kaapelinsijoitusoikeudet</a> </li> </ul> </div> </div> </div> <div class="ds-footer__section ds-footer__section--bottom"> <div class="ds-footer__layout-width ds-footer__bottom-grid"> <div class="ds-footer__bottom--center"> <section class="ds-footer__social-media-links" aria-label="Sosiaalisen median linkit"> <ul class="ds-footer__links"> <li> <a class="ds-footer__link ds-footer__link--plain" href="https://www.facebook.com/dnabusiness.fi/" aria-label="DNA Facebookissa"> <svg class="ds-icon ds-icon--24" aria-hidden="true"><use href="#Facebook"></use></svg> </a> </li> <li> <a class="ds-footer__link ds-footer__link--plain" href="https://www.linkedin.com/company/dna-ltd/" aria-label="DNA LinkedInissä"> <svg class="ds-icon ds-icon--24" aria-hidden="true"><use href="#Linkedin"></use></svg> </a> </li> <li> <a class="ds-footer__link ds-footer__link--plain" href="https://www.youtube.com/user/DNABusinesspalvelut" aria-label="DNA Youtubessa"> <svg class="ds-icon ds-icon--24" aria-hidden="true"><use href="#Youtube"></use></svg> </a> </li> </ul> </section> <div class="ds-site-nav"> <a href="https://www.dna.fi" class="ds-site-nav__link " >Yksityisille</a> <a href="https://www.dna.fi/yrityksille" class="ds-site-nav__link " >Yrityksille</a> <a href="https://www.dna.fi/wholesale" class="ds-site-nav__link current" aria-current="true">Wholesale</a> <a href="https://corporate.dna.fi/fi" class="ds-site-nav__link " >DNA Oyj</a> </div> <!-- Dynamic mandatory links --> <div class="ds-footer__mandatory-links"> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/dna-oyjn-asiakasrekisterin-rekisteriseloste">Tietosuoja ja rekisteriselosteet</a> <span aria-hidden="true"> | </span> <a class="ds-footer__link ds-footer__link--text ot-sdk-show-settings" href="#" onclick="return false;">Evästeasetukset</a> <span aria-hidden="true"> | </span> <a class="ds-footer__link ds-footer__link--text" href="https://www.dna.fi/tuki-tilaaminen-verkkokaupasta">Tilaus- ja toimistusehdot</a> <span aria-hidden="true"> | </span> <span>DNA 2026</span> </div> </div> <div class="ds-footer__bottom--right ds-footer__app"> </div> </div> </div> </nav> </div> </div> </div> </section> </div> </footer> <div class="dna-navigation-overlay" id="dna-navigation-overlay"></div> <!-- COMMON-DNA-FOOTER end --> <div class="dna-navigation-overlay dna-navigation-overlay--with-secondary" id="dna-navigation-overlay-secondary-nav"></div> <template id="modal-dialog-template"> <dialog class="ds-modal ds-modal--dialog ds-modal--medium"> <div class="ds-modal__container"> <button class="ds-modal__close" aria-label="Sulje dialogi"> <svg class="ds-icon ds-icon--24" aria-hidden="true"> <use href="/o/dna-fi-theme/images/sl-icons/spritesheet.svg#Close"></use> </svg> </button> <div class="ds-modal__content"></div> </div> </dialog> </template>
1367<script type="text/javascript"> 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379</script>
1379<script> 1380 1381</script>
1381
1381<script type="text/javascript"> 1382(function() {var $ = AUI.$;var _ = AUI._; 1383 var onShare = function (data) { 1384 if (window.Analytics) { 1385 Analytics.send('shared', 'SocialBookmarks', { 1386 className: data.className, 1387 classPK: data.classPK, 1388 type: data.type, 1389 url: data.url, 1390 }); 1391 } 1392 }; 1393 1394 var onDestroyPortlet = function () { 1395 Liferay.detach('socialBookmarks:share', onShare); 1396 Liferay.detach('destroyPortlet', onDestroyPortlet); 1397 }; 1398 1399 Liferay.on('socialBookmarks:share', onShare); 1400 Liferay.on('destroyPortlet', onDestroyPortlet); 1401})(); 1402(function() {var $ = AUI.$;var _ = AUI._; 1403 var onVote = function (event) { 1404 if (window.Analytics) { 1405 let title = event.contentTitle; 1406 1407 if (!title) { 1408 const dmNode = document.querySelector( 1409 '[data-analytics-file-entry-id="' + event.classPK + '"]' 1410 ); 1411 1412 if (dmNode) { 1413 title = dmNode.dataset.analyticsFileEntryTitle; 1414 } 1415 } 1416 1417 Analytics.send('VOTE', 'Ratings', { 1418 className: event.className, 1419 classPK: event.classPK, 1420 ratingType: event.ratingType, 1421 score: event.score, 1422 title, 1423 }); 1424 } 1425 }; 1426 1427 var onDestroyPortlet = function () { 1428 Liferay.detach('ratings:vote', onVote); 1429 Liferay.detach('destroyPortlet', onDestroyPortlet); 1430 }; 1431 1432 Liferay.on('ratings:vote', onVote); 1433 Liferay.on('destroyPortlet', onDestroyPortlet); 1434})(); 1435 1436 function getValueByAttribute(node, attr) { 1437 return ( 1438 node.dataset[attr] || 1439 (node.parentElement && node.parentElement.dataset[attr]) 1440 ); 1441 } 1442 1443 function sendDocumentDownloadedAnalyticsEvent(anchor) { 1444 var fileEntryId = getValueByAttribute( 1445 anchor, 1446 'analyticsFileEntryId' 1447 ); 1448 var title = getValueByAttribute( 1449 anchor, 1450 'analyticsFileEntryTitle' 1451 ); 1452 var version = getValueByAttribute( 1453 anchor, 1454 'analyticsFileEntryVersion' 1455 ); 1456 1457 if (fileEntryId) { 1458 Analytics.send('documentDownloaded', 'Document', { 1459 groupId: themeDisplay.getScopeGroupId(), 1460 fileEntryId, 1461 preview: 1462 !!window._com_liferay_document_library_analytics_isViewFileEntry, 1463 title, 1464 version, 1465 }); 1466 } 1467 } 1468 1469 function handleDownloadClick(event) { 1470 if (window.Analytics) { 1471 if (event.target.nodeName.toLowerCase() === 'a') { 1472 sendDocumentDownloadedAnalyticsEvent( 1473 event.target 1474 ); 1475 } 1476 else if ( 1477 event.target.parentNode && 1478 event.target.parentNode.nodeName.toLowerCase() === 'a' 1479 ) { 1480 sendDocumentDownloadedAnalyticsEvent( 1481 event.target.parentNode 1482 ); 1483 } 1484 else { 1485 var target = event.target; 1486 var matchTextContent = 1487 target.textContent && 1488 target.textContent.toLowerCase() === 1489 'lataa'; 1490 var matchTitle = 1491 target.title && target.title.toLowerCase() === 'download'; 1492 var matchAction = target.action === 'download'; 1493 var matchLexiconIcon = !!target.querySelector( 1494 '.lexicon-icon-download' 1495 ); 1496 var matchLexiconClassName = target.classList.contains( 1497 'lexicon-icon-download' 1498 ); 1499 var matchParentTitle = 1500 target.parentNode && 1501 target.parentNode.title && 1502 target.parentNode.title.toLowerCase() === 'download'; 1503 var matchParentLexiconClassName = 1504 target.parentNode && 1505 target.parentNode.classList.contains('lexicon-icon-download'); 1506 1507 if ( 1508 matchTextContent || 1509 matchTitle || 1510 matchParentTitle || 1511 matchAction || 1512 matchLexiconIcon || 1513 matchLexiconClassName || 1514 matchParentLexiconClassName 1515 ) { 1516 var selectedFiles = document.querySelectorAll( 1517 '.form .custom-control-input:checked' 1518 ); 1519 1520 selectedFiles.forEach(({value}) => { 1521 var selectedFile = document.querySelector( 1522 '[data-analytics-file-entry-id="' + value + '"]' 1523 ); 1524 1525 sendDocumentDownloadedAnalyticsEvent( 1526 selectedFile 1527 ); 1528 }); 1529 } 1530 } 1531 } 1532 } 1533 1534 Liferay.once('destroyPortlet', () => { 1535 document.body.removeEventListener( 1536 'click', 1537 handleDownloadClick 1538 ); 1539 }); 1540 1541 Liferay.once('portletReady', () => { 1542 document.body.addEventListener( 1543 'click', 1544 handleDownloadClick 1545 ); 1546 }); 1547 1548(function() {var $ = AUI.$;var _ = AUI._; 1549 var onDestroyPortlet = function () { 1550 Liferay.detach('messagePosted', onMessagePosted); 1551 Liferay.detach('destroyPortlet', onDestroyPortlet); 1552 }; 1553 1554 Liferay.on('destroyPortlet', onDestroyPortlet); 1555 1556 var onMessagePosted = function (event) { 1557 if (window.Analytics) { 1558 const eventProperties = { 1559 className: event.className, 1560 classPK: event.classPK, 1561 commentId: event.commentId, 1562 text: event.text, 1563 }; 1564 1565 const blogNode = document.querySelector( 1566 '[data-analytics-asset-id="' + event.classPK + '"]' 1567 ); 1568 1569 const dmNode = document.querySelector( 1570 '[data-analytics-file-entry-id="' + event.classPK + '"]' 1571 ); 1572 1573 if (blogNode) { 1574 eventProperties.title = blogNode.dataset.analyticsAssetTitle; 1575 } 1576 else if (dmNode) { 1577 eventProperties.title = dmNode.dataset.analyticsFileEntryTitle; 1578 } 1579 1580 Analytics.send('posted', 'Comment', eventProperties); 1581 } 1582 }; 1583 1584 Liferay.on('messagePosted', onMessagePosted); 1585})(); 1586 1587 if (window.svg4everybody && Liferay.Data.ICONS_INLINE_SVG) { 1588 svg4everybody( 1589 { 1590 polyfill: true, 1591 validate: function (src, svg, use) { 1592 return !src || !src.startsWith('#'); 1593 } 1594 } 1595 ); 1596 } 1597 1598(function() {var $ = AUI.$;var _ = AUI._; 1599 Liferay.Util.delegate( 1600 document, 1601 'focusin', 1602 '.portlet', 1603 function(event) { 1604 event.delegateTarget.closest('.portlet').classList.add('open'); 1605 } 1606 ); 1607 1608 Liferay.Util.delegate( 1609 document, 1610 'focusout', 1611 '.portlet', 1612 function(event) { 1613 event.delegateTarget.closest('.portlet').classList.remove('open'); 1614 } 1615 ); 1616})(); 1617 1618 // <![CDATA[ 1619 1620 1621 1622 Liferay.currentURL = '\x2fweb\x2fwholesale'; 1623 Liferay.currentURLEncoded = '\x252Fweb\x252Fwholesale'; 1624 1625 // ]]> 1626 1627(function() {var $ = AUI.$;var _ = AUI._; 1628 import(Liferay.ThemeDisplay.getPathContext() + '/o/frontend-js-web/__liferay__/index.js').then( 1629 ({openToast}) => { 1630 AUI().use( 1631 'liferay-session', 1632 function() { 1633 Liferay.Session = new Liferay.SessionBase( 1634 { 1635 autoExtend: true, 1636 redirectOnExpire: false, 1637 redirectUrl: 'https\x3a\x2f\x2fwww\x2edna\x2efi\x2fweb\x2fyksityisille', 1638 sessionLength: 54000, 1639 sessionTimeoutOffset: 70, 1640 warningLength: 60 1641 } 1642 ); 1643 1644 1645 } 1646 ); 1647 } 1648 ) 1649 })(); 1650(function() {var $ = AUI.$;var _ = AUI._; 1651 var assetEntryId = ''; 1652 1653 if (assetEntryId) { 1654 window.location.hash = assetEntryId; 1655 } 1656})(); 1657(function() {var $ = AUI.$;var _ = AUI._; 1658 var assetEntryId = ''; 1659 1660 if (assetEntryId) { 1661 window.location.hash = assetEntryId; 1662 } 1663})(); 1664 1665 var nestedPortlet = document.getElementById( 1666 '_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_WpkLI9U8E0ha__main-content' 1667 ); 1668 1669 if (nestedPortlet != null) { 1670 nestedPortlet.removeAttribute('role'); 1671 } 1672 1673(function() {var $ = AUI.$;var _ = AUI._; 1674 var assetEntryId = ''; 1675 1676 if (assetEntryId) { 1677 window.location.hash = assetEntryId; 1678 } 1679})(); 1680 1681 var nestedPortlet = document.getElementById( 1682 '_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_Nvsr01YwxFHC__main-content' 1683 ); 1684 1685 if (nestedPortlet != null) { 1686 nestedPortlet.removeAttribute('role'); 1687 } 1688 1689 1690 var nestedPortlet = document.getElementById( 1691 '_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_qbYDLkNfxl5z__main-content' 1692 ); 1693 1694 if (nestedPortlet != null) { 1695 nestedPortlet.removeAttribute('role'); 1696 } 1697 1698 1699 var nestedPortlet = document.getElementById( 1700 '_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_k2wYlmr7dnVk__main-content' 1701 ); 1702 1703 if (nestedPortlet != null) { 1704 nestedPortlet.removeAttribute('role'); 1705 } 1706 1707 1708 var nestedPortlet = document.getElementById( 1709 '_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_hrpoQGjDY5Ch__main-content' 1710 ); 1711 1712 if (nestedPortlet != null) { 1713 nestedPortlet.removeAttribute('role'); 1714 } 1715 1716 1717 var nestedPortlet = document.getElementById( 1718 '_com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet_INSTANCE_YxyfKQRVAwGg__main-content' 1719 ); 1720 1721 if (nestedPortlet != null) { 1722 nestedPortlet.removeAttribute('role'); 1723 } 1724 1725 1726</script>
1726<script type="module"> 1727import {InfoItemActionHandler as ComponentModule} from '/o/layout-taglib/__liferay__/index.js'; 1728AUI().use( 1729 'liferay-menu', 1730function(A) { 1731{ 1732Liferay.component('infoItemActionComponent', new ComponentModule({"executeInfoItemActionURL":"https:\/\/www.dna.fi\/c\/portal\/execute_info_item_action?p_l_mode=view&plid=9161297","namespace":"","spritemap":"https:\/\/www.dna.fi\/o\/dna-fi-theme\/images\/clay\/icons.svg"}), { destroyOnNavigate: true, portletId: ''}); 1733} 1734(function() { 1735var $ = AUI.$;var _ = AUI._; 1736 new Liferay.Menu(); 1737 1738 var liferayNotices = Liferay.Data.notices; 1739 1740 for (var i = 0; i < liferayNotices.length; i++) { 1741 Liferay.Util.openToast(liferayNotices[i]); 1742 } 1743 1744})(); 1745}); 1746 1747</script>
1747
1747<script src="https://www.dna.fi/o/dna-fi-theme/js/main.js?browserId=chrome&minifierType=js&languageId=fi_FI&t=1789630306000" type="text/javascript"></script>
1747
1747<script type="module"> 1748import {main} from '/o/frontend-js-alert-support-web/__liferay__/index.js'; 1749{ 1750main(); 1751} 1752 1753</script>
1753<script type="module"> 1754import {main} from '/o/frontend-js-collapse-support-web/__liferay__/index.js'; 1755{ 1756main(); 1757} 1758 1759</script>
1759<script type="module"> 1760import {main} from '/o/frontend-js-dropdown-support-web/__liferay__/index.js'; 1761{ 1762main(); 1763} 1764 1765</script>
1765<script type="module"> 1766import {main} from '/o/frontend-js-tooltip-support-web/__liferay__/index.js'; 1767{ 1768main(); 1769} 1770 1771</script>
1771<script type="module"> 1772import {main} from '/o/frontend-js-tabs-support-web/__liferay__/index.js'; 1773{ 1774main(); 1775} 1776 1777</script>
1777<script type="module"> 1778import {runThirdPartyCookiesInterval} from '/o/cookies-banner-web/__liferay__/index.js'; 1779{ 1780runThirdPartyCookiesInterval(); 1781} 1782 1783</script>
1783<script type="text/javascript"> 1784Liferay.CustomDialogs = {enabled: false}; 1785 1786</script>
1786<script> 1787 1788</script>
1788 <div class="node-status" style="display:none;"> app1.lrdxp-prod.dna.fi </div>
1788<script> 1789 window.dxp_login_settings = { 1790 site: 'wholesale', 1791 restUrl: 'https://www.dna.fi/o/rest', 1792 redirectUrl: 'https://www.dna.fi/o/sso-redirect', 1793 clientId: 'db-liferay-b2c', 1794 scopeIds: 'openid profile ssn b2c-sso', 1795 languageId: 'fi_FI', 1796 accessTokenCookieName: 'DXP_access_token', 1797 listenToIDMPostMessages: true, 1798 ssoSessionManagementEnabled: false, 1799 maxInactivityBeforeWarning: 780000, 1800 logoutUrl: "/o/rest/auth/logout", 1801 showHeader: true 1802 }; 1803 </script>
1803 <!-- inject:js --> <!-- endinject -->
1803<script> 1804 Liferay.Loader.require('[email protected]/js/common/analyticsUtil.es'); 1805 </script>
1805 </body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.