1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 6 <meta name="ai-usage-policy" content="Allowed-with-attribution; Attribution-Required; License=CC BY-NC-ND 4.0"> 7 <meta name="publication-media-verification" content="86429e66755147c7aec69c3a706dfe50"> 8 <meta name="linksman-verification" content="83etvGD6LWXgGpYE"> 9 <meta name="viewport" content="width=device-width"> 10 11 <link rel="preload" href="https://www.toolshero.com/wp-content/plugins/rate-my-post/public/css/fonts/ratemypost.ttf" type="font/ttf" as="font" crossorigin="anonymous"> 12<!-- Search Engine Optimization by Rank Math PRO - https://rankmath.com/ --> 13<title>Login to the Toolshero community! - Toolshero</title> 14<meta name="robots" content="nofollow, noindex"/> 15<meta property="og:locale" content="en_US" /> 16<meta property="og:type" content="article" /> 17<meta property="og:title" content="Login to the Toolshero community! - Toolshero" /> 18<meta property="og:description" content="Username or E-mail Password Remember Me Forgot Password" /> 19<meta property="og:url" content="https://www.toolshero.com/login-subscriber/" /> 20<meta property="og:site_name" content="Toolshero" /> 21<meta property="article:publisher" content="https://www.facebook.com/toolshero" /> 22<meta property="article:author" content="https://www.facebook.com/vvvliet" /> 23<meta property="og:updated_time" content="2023-11-08T16:08:57+00:00" /> 24<meta property="article:published_time" content="2020-01-07T10:37:02+00:00" /> 25<meta property="article:modified_time" content="2023-11-08T16:08:57+00:00" /> 26<meta name="twitter:card" content="summary_large_image" /> 27<meta name="twitter:title" content="Login to the Toolshero community! - Toolshero" /> 28<meta name="twitter:description" content="Username or E-mail Password Remember Me Forgot Password" /> 29<meta name="twitter:site" content="@toolshero" /> 30<meta name="twitter:creator" content="@toolshero" />
31<script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.toolshero.com/#organization","name":"Toolshero","url":"https://www.toolshero.com/","sameAs":["https://www.facebook.com/toolshero","https://twitter.com/toolshero","https://www.instagram.com/toolshero/","https://www.linkedin.com/company/toolshero","https://www.pinterest.com/toolshero/","https://www.youtube.com/toolshero"]},{"@type":"WebSite","@id":"https://www.toolshero.com/#website","url":"https://www.toolshero.com","name":"Toolshero","publisher":{"@id":"https://www.toolshero.com/#organization"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://www.toolshero.com/login-subscriber/#breadcrumb","itemListElement":[{"@type":"ListItem","position":"1","item":{"@id":"https://www.toolshero.com","name":"Home"}},{"@type":"ListItem","position":"2","item":{"@id":"https://www.toolshero.com/login-subscriber/","name":"Login to the Toolshero community!"}}]},{"@type":"WebPage","@id":"https://www.toolshero.com/login-subscriber/#webpage","url":"https://www.toolshero.com/login-subscriber/","name":"Login to the Toolshero community! - Toolshero","datePublished":"2020-01-07T10:37:02+00:00","dateModified":"2023-11-08T16:08:57+00:00","isPartOf":{"@id":"https://www.toolshero.com/#website"},"inLanguage":"en-US","breadcrumb":{"@id":"https://www.toolshero.com/login-subscriber/#breadcrumb"}},{"@type":"Person","@id":"https://www.toolshero.com/login-subscriber/#author","name":"Vincent van Vliet","image":{"@type":"ImageObject","@id":"https://www.toolshero.com/wp-content/uploads/2026/08/vincent-van-vliet-2024-toolshero.png","url":"https://www.toolshero.com/wp-content/uploads/2026/08/vincent-van-vliet-2024-toolshero.png","caption":"Vincent van Vliet","inLanguage":"en-US"},"sameAs":["https://www.toolshero.com/","https://www.facebook.com/vvvliet","https://www.linkedin.com/in/vincentvanvliet/"],"works
31For":{"@id":"https://www.toolshero.com/#organization"}},{"@type":"Article","headline":"Login to the Toolshero community! - Toolshero","datePublished":"2020-01-07T10:37:02+00:00","dateModified":"2023-11-08T16:08:57+00:00","author":{"@id":"https://www.toolshero.com/login-subscriber/#author","name":"Vincent van Vliet"},"publisher":{"@id":"https://www.toolshero.com/#organization"},"name":"Login to the Toolshero community! - Toolshero","@id":"https://www.toolshero.com/login-subscriber/#richSnippet","isPartOf":{"@id":"https://www.toolshero.com/login-subscriber/#webpage"},"inLanguage":"en-US","mainEntityOfPage":{"@id":"https://www.toolshero.com/login-subscriber/#webpage"}}]}</script>
31 32<!-- /Rank Math WordPress SEO plugin --> 33 34<link rel='dns-prefetch' href='//static.addtoany.com' /> 35<link rel="alternate" type="application/rss+xml" title="Toolshero » Feed" href="https://www.toolshero.com/feed/" /> 36<link rel="alternate" type="application/rss+xml" title="Toolshero » Comments Feed" href="https://www.toolshero.com/comments/feed/" /> 37<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.toolshero.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.toolshero.com%2Flogin-subscriber%2F" /> 38<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.toolshero.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.toolshero.com%2Flogin-subscriber%2F&format=xml" /> 39<style id="wp-img-auto-sizes-contain-inline-css"> 40img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 41/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 42</style> 43<link rel='stylesheet' id='mp-theme-css' href='https://www.toolshero.com/wp-content/plugins/memberpress/css/ui/theme.css?ver=1.14.1' media='all' /> 44<link rel='stylesheet' id='dashicons-css' href='https://www.toolshero.com/wp-includes/css/dashicons.min.css?ver=7.1.2' media='all' /> 45<link rel='stylesheet' id='mp-login-css-css' href='https://www.toolshero.com/wp-content/plugins/memberpress/css/ui/login.css?ver=1.14.1' media='all' /> 46<style id="wp-block-library-inline-css"> 47:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
47--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 48 49/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 50</style> 51<style id="classic-theme-styles-inline-css"> 52/*! This file is auto-generated */ 53.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 54/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 55</style> 56 57<link rel='stylesheet' id='rate-my-post-css' href='https://www.toolshero.com/wp-content/plugins/rate-my-post/public/css/rate-my-post.min.css?ver=4.5.2' media='all' /> 58<style id="rate-my-post-inline-css"> 59.rmp-widgets-container.rmp-wp-plugin.rmp-main-container { text-align:left;}.rmp-icon--full-highlight {color: #41D87D;}.rmp-icon--half-highlight { background: -webkit-gradient(linear, left top, right top, color-stop(50%, #41D87D), color-stop(50%, #ccc)); background: linear-gradient(to right, #41D87D 50%, #ccc 50%);-webkit-background-clip: text;-webkit-text-fill-color: transparent;}.rmp-rating-widget .rmp-icon--half-highlight { background: -webkit-gradient(linear, left top, right top, color-stop(50%, #41D87D), color-stop(50%, #ccc)); background: linear-gradient(to right, #41D87D 50%, #ccc 50%); -webkit-background-clip: text; -webkit-text-fill-color: transparent;}.rmp-rating-widget .rmp-icon--full-highlight { color: #41D87D;}@media (hover: hover) { .rmp-rating-widget .rmp-icon--hovered { color: #FFCC36; -webkit-background-clip: initial; -webkit-text-fill-color: initial; background: transparent; -webkit-transition: .1s color ease-in; transition: .1s color ease-in; }}.rmp-rating-widget .rmp-icon--processing-rating {color: #41D87D; -webkit-background-clip: initial; -webkit-text-fill-color: initial; background: transparent;}.rmp-rating-widget .rmp-icon--ratings { font-size: 22px;} 60.rmp-widgets-container.rmp-wp-plugin.rmp-main-container { text-align:left;}.rmp-icon--full-highlight {color: #41D87D;}.rmp-icon--half-highlight { background: -webkit-gradient(linear, left top, right top, color-stop(50%, #41D87D), color-stop(50%, #ccc)); background: linear-gradient(to right, #41D87D 50%, #ccc 50%);-webkit-background-clip: text;-webkit-text-fill-color: transparent;}.rmp-rating-widget .rmp-icon--half-highlight { background: -webkit-gradient(linear, left top, right top, color-stop(50%, #41D87D), color-stop(50%, #ccc)); background: linear-gradient(to right, #41D87D 50%, #ccc 50%); -webkit-background-clip: text; -webkit-text-fill-color: transparent;}.rmp-rating-widget .rmp-icon--full-highlight { color: #41D87D;}@media (hover: hover) { .rmp-rating-widget .rmp-icon--hovered { color: #FFCC36; -webkit-background-clip: initial; -webkit-text-fill-color: initial; background: transparent; -webkit-transition: .1s color ease-in; transition: .1s color ease-in; }}.rmp-rating-widget .rmp-icon--processing-rating {color: #41D87D; -webkit-background-clip: initial; -webkit-text-fill-color: initial; background: transparent;}.rmp-rating-widget .rmp-icon--ratings { font-size: 22px;} 61/*# sourceURL=rate-my-post-inline-css */ 62</style> 63<style id="global-styles-inline-css"> 64:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
640) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
64.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 65/*# sourceURL=global-styles-inline-css */ 66</style> 67 68<link rel='stylesheet' id='simple_load_more-frontend-css' href='https://www.toolshero.com/wp-content/plugins/simple-load-more/assets/css/frontend.css?ver=1.0.0' media='all' /> 69<style id="simple_load_more-frontend-inline-css"> 70.elm-button { background: #ffffff; color: # 171717; } 71.elm-button:hover, .elm-button:active, .elm-button:focus { background: #ffffff; } 72.elm-loading-icon { fill: # 171717; stroke: # 171717; } 73 74/*# sourceURL=simple_load_more-frontend-inline-css */ 75</style> 76<link rel='stylesheet' id='eztoc-css' href='https://www.toolshero.com/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.87.1' media='all' /> 77<style id="eztoc-inline-css"> 78div#ez-toc-container .ez-toc-title, .ez-toc-split-section .ez-toc-title {font-size: 130%;}div#ez-toc-container .ez-toc-title, .ez-toc-split-section .ez-toc-title {font-weight: 700;}div#ez-toc-container ul li , div#ez-toc-container ul li a, .ez-toc-split-section ul li , .ez-toc-split-section ul li a {font-size: 100%;}div#ez-toc-container ul li , div#ez-toc-container ul li a, .ez-toc-split-section ul li , .ez-toc-split-section ul li a {font-weight: 400;}div#ez-toc-container nav ul ul li, .ez-toc-split-section nav ul ul li {font-size: 90%;}div#ez-toc-container, .ez-toc-split-section {background: #f9fbfc;border: 1px solid #ffffff;}div#ez-toc-container p.ez-toc-title , #ez-toc-container .ez_toc_custom_title_icon , #ez-toc-container .ez_toc_custom_toc_icon, .ez-toc-split-section p.ez-toc-title , .ez-toc-split-section .ez_toc_custom_title_icon , .ez-toc-split-section .ez_toc_custom_toc_icon {color: #000000;}div#ez-toc-container ul.ez-toc-list a, .ez-toc-split-section ul.ez-toc-list a {color: #424242;}div#ez-toc-container ul.ez-toc-list a:hover, .ez-toc-split-section ul.ez-toc-list a:hover {color: #41d87d;}div#ez-toc-container ul.ez-toc-list a:visited, .ez-toc-split-section ul.ez-toc-list a:visited {color: #37b75d;}.ez-toc-counter nav ul li a::before {color: ;}.ez-toc-box-title {font-weight: bold; margin-bottom: 10px; text-align: center; text-transform: uppercase; letter-spacing: 1px; color: #666; padding-bottom: 5px;position:absolute;top:-4%;left:5%;background-color: inherit;transition: top 0.3s ease;}.ez-toc-box-title.toc-closed {top:-25%;} 79.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul {direction: ltr;counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counter(item, numeric) '. ';margin-right: .2em; counter-increment: item;flex-grow: 0;flex-shrink: 0;float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul {direction: ltr;counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counter(item, numeric) '. ';margin-right: .2em; counter-increment: item;flex-grow: 0;flex-shrink: 0;float: left; } 80/*# sourceURL=eztoc-inline-css */ 81</style> 82<link rel='stylesheet' id='slickcss-css' href='https://www.toolshero.com/wp-content/themes/toolshero-wp-theme/css/slick.css?ver=1722587747' media='all' /> 83<link rel='stylesheet' id='main-css' href='https://www.toolshero.com/wp-content/themes/toolshero-wp-theme/style.css?ver=1790431563' media='all' /> 84<link rel='stylesheet' id='responsive-css' href='https://www.toolshero.com/wp-content/themes/toolshero-wp-theme/css/responsive.css?ver=1722587747' media='all' /> 85<link rel='stylesheet' id='addtoany-css' href='https://www.toolshero.com/wp-content/plugins/add-to-any/addtoany.min.css?ver=1.16' media='all' /> 86<link rel='stylesheet' id='cspfsl-buttons-style-css' href='https://www.toolshero.com/wp-content/plugins/memberpress-social-login//vendor-prefixed/caseproof/social-login/src//ui/assets/buttons.css?ver=7.1.2' media='all' />
87<script id="jquery-core-js-extra"> 88var elm_button_vars = {"wrapper":".posts-grid"}; 89//# sourceURL=jquery-core-js-extra 90</script>
vendor: 1 bytes, line 90
90
91<script id="jquery-core-js" src="https://www.toolshero.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 91
91
92<script id="jquery-migrate-js" src="https://www.toolshero.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 92
92
93<script id="underscore-js" src="https://www.toolshero.com/wp-includes/js/underscore.min.js?ver=1.13.8"></script>
vendor: 1 bytes, line 93
93
94<script id="wp-hooks-js" src="https://www.toolshero.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 94
94
95<script id="wp-i18n-js" src="https://www.toolshero.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 95
95
96<script id="wp-i18n-js-after"> 97wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 98//# sourceURL=wp-i18n-js-after 99</script>
vendor: 1 bytes, line 99
99
100<script id="mepr-login-js-js" src="https://www.toolshero.com/wp-content/plugins/memberpress/js/login.js?ver=1.14.1"></script>
vendor: 1 bytes, line 100
100
101<script id="addtoany-core-js-before"> 102window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={}; 103 104//# sourceURL=addtoany-core-js-before 105</script>
vendor: 1 bytes, line 105
105
106<script id="addtoany-core-js" defer src="https://static.addtoany.com/menu/page.js"></script>
vendor: 1 bytes, line 106
106
107<script id="addtoany-jquery-js" defer src="https://www.toolshero.com/wp-content/plugins/add-to-any/addtoany.min.js?ver=1.1"></script>
vendor: 1 bytes, line 107
107
108<script id="simple_load_more-frontend-js" src="https://www.toolshero.com/wp-content/plugins/simple-load-more/assets/js/frontend.js?ver=1.0.0"></script>
vendor: 1 bytes, line 108
108
109<script id="cspfsl-buttons-js-js" src="https://www.toolshero.com/wp-content/plugins/memberpress-social-login//vendor-prefixed/caseproof/social-login/src//ui/assets/buttons.js?ver=7.1.2"></script>
109 110<link rel="https://api.w.org/" href="https://www.toolshero.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.toolshero.com/wp-json/wp/v2/pages/32897" /><link rel='shortlink' href='https://www.toolshero.com/?p=32897' />
111<script>(()=>{var o=[],i={};["on","off","toggle","show"].forEach(l=>{i[l]=function(){o.push([l,arguments])}}),window.Boxzilla=i,window.boxzilla_queue=o})();</script>
vendor: 82 bytes, line 111
111<script async id="google_gtagjs" src="https://www.googletagmanager.com/gtag/js?id=
111G-SQ5LQGP7CN
vendor: 12 bytes, line 111
111"></script>
112<script id="google_gtagjs-inline">
vendor: 124 bytes, line 113
113window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', '
113G-SQ5LQGP7CN
vendor: 9 bytes, line 113
113', {} );
114</script>
114 115 116 <style> 117 118 /* ===================================================== 119 ACCOUNT 120 ===================================================== */ 121 122 .th-saved-account { 123 width: 100%; 124 125 padding-top: 5px; 126 } 127 128 129 /* ===================================================== 130 HEADER 131 ===================================================== */ 132 133 .th-saved-header { 134 display: flex; 135 align-items: flex-start; 136 justify-content: space-between; 137 138 gap: 30px; 139 140 padding: 141 24px 142 0 143 22px; 144 145 border-bottom: 146 1px 147 solid 148 #e7e7e7; 149 } 150 151 152 .th-saved-header h2 { 153 margin: 154 0 155 0 156 7px; 157 158 color: #202020; 159 160 font-size: 26px; 161 font-weight: 700; 162 line-height: 1.25; 163 } 164 165 166 .th-saved-header p { 167 max-width: 650px; 168 169 margin: 0; 170 171 color: #666666; 172 173 font-size: 15px; 174 line-height: 1.55; 175 } 176 177 178 /* ===================================================== 179 COUNTER 180 ===================================================== */ 181 182 .th-saved-counter { 183 flex: 184 0 185 0 186 auto; 187 188 min-width: 140px; 189 190 padding: 191 10px 192 15px; 193 194 background: #f7f7f7; 195 196 border-radius: 7px; 197 198 text-align: center; 199 } 200 201 202 .th-saved-counter strong { 203 display: block; 204 205 color: #202020; 206 207 font-size: 20px; 208 font-weight: 700; 209 line-height: 1.15; 210 } 211 212 213 .th-saved-counter span { 214 display: block; 215 216 margin-top: 3px; 217 218 color: #777777; 219 220 font-size: 12px; 221 line-height: 1.3; 222 } 223 224 225 /* ===================================================== 226 RESULTS LIST 227 ===================================================== */ 228 229 .th-saved-grid { 230 display: block; 231 232 margin: 0; 233 padding: 0; 234 } 235 236 237 .th-saved-result { 238 display: grid; 239 240 grid-template-columns: 241 112px 242 minmax(0, 1fr); 243 244 align-items: start; 245 246 gap: 20px; 247 248 margin: 0; 249 250 padding: 251 24px 252 0; 253 254 background: transparent; 255 256 border: 0; 257 258 border-bottom: 259 1px 260 solid 261 #e7e7e7; 262 263 border-radius: 0; 264 265 box-shadow: none; 266 267 transition: none; 268 } 269 270 271 .th-saved-result:hover { 272 background: transparent; 273 274 border-color: #e7e7e7; 275 276 box-shadow: none; 277 278 transform: none; 279 } 280 281 282 /* ===================================================== 283 THUMBNAIL 284 ===================================================== */ 285 286 .th-saved-image { 287 display: block; 288 289 width: 112px; 290 height: 112px; 291 292 margin: 0; 293 294 overflow: hidden; 295 296 background: #f4f4f4; 297 298 border-radius: 8px; 299 300 text-decoration: none; 301 } 302 303 304 .th-saved-image img { 305 display: block; 306 307 width: 112px; 308 height: 112px; 309 310 margin: 0; 311 312 object-fit: cover; 313 314 border-radius: 8px; 315 316 transition: 317 transform 318 .2s 319 ease; 320 } 321 322 323 .th-saved-image:hover img { 324 transform: 325 scale(1.025); 326 } 327 328 329 .th-saved-image-placeholder { 330 display: block; 331 332 width: 100%; 333 height: 100%; 334 335 background: #f4f4f4; 336 } 337 338 339 /* ===================================================== 340 CONTENT 341 ===================================================== */ 342 343 .th-saved-content { 344 min-width: 0; 345 346 padding: 0; 347 } 348 349 350 .th-saved-category { 351 margin: 352 0 353 0 354 4px; 355 356 color: #777777; 357 358 font-size: 12px; 359 font-weight: 600; 360 line-height: 1.3; 361 } 362 363 364 .th-saved-title { 365 margin: 366 0 367 0 368 4px !important; 369 370 padding: 0; 371 372 font-size: 21px !important; 373 font-weight: 700 !important; 374 line-height: 1.3 !important; 375 } 376 377 378 .th-saved-title a { 379 color: #202020 !important; 380 381 text-decoration: none !important; 382 383 transition: 384 color 385 .15s 386 ease; 387 } 388 389 390 .th-saved-title a:hover, 391 .th-saved-title a:focus { 392 color: #0073aa !important; 393 394 text-decoration: none !important; 395 } 396 397 398 .th-saved-updated { 399 margin: 400 0 401 0 402 8px; 403 404 color: #777777; 405 406 font-size: 12px; 407 font-weight: 400; 408 line-height: 1.4; 409 } 410 411 412 .th-saved-description { 413 display: -webkit-box; 414 415 overflow: hidden; 416 417 -webkit-box-orient: vertical; 418 -webkit-line-clamp: 3; 419 420 margin: 421 0 422 0 423 9px !important; 424 425 padding: 0; 426 427 color: #555555; 428 429 font-size: 15px; 430 font-weight: 400; 431 line-height: 1.55; 432 } 433 434 435 /* ===================================================== 436 REMOVE 437 ===================================================== */ 438 439 .th-saved-result-actions { 440 display: flex; 441 align-items: center; 442 443 margin: 444 2px 445 0 446 0; 447 } 448 449 450 .th-remove-saved-btn { 451 display: inline; 452 453 width: auto; 454 height: auto; 455 456 min-width: 0; 457 min-height: 0; 458 459 margin: 0; 460 padding: 0; 461 462 background: transparent !important; 463 464 border: 0 !important; 465 466 border-radius: 0; 467 468 box-shadow: none !important; 469 470 color: #777777; 471 472 font-family: inherit; 473 font-size: 12px; 474 font-weight: 400; 475 line-height: 1.4; 476 477 text-decoration: underline; 478 479 text-underline-offset: 2px; 480 481 cursor: pointer; 482 483 transition: 484 color 485 .15s 486 ease; 487 } 488 489 490 .th-remove-saved-btn:hover, 491 .th-remove-saved-btn:focus { 492 background: transparent !important; 493 494 color: #333333; 495 496 border: 0 !important; 497 498 box-shadow: none !important; 499 } 500 501 502 /* =====================================================
503 EMPTY LIST 504 ===================================================== */ 505 506 .th-saved-empty { 507 margin-top: 24px; 508 509 padding: 510 38px 511 25px; 512 513 background: #fafafa; 514 515 border: 516 1px 517 dashed 518 #d8d8d8; 519 520 border-radius: 8px; 521 522 text-align: center; 523 } 524 525 526 .th-saved-empty-icon { 527 display: flex; 528 align-items: center; 529 justify-content: center; 530 531 width: 46px; 532 height: 46px; 533 534 margin: 535 0 536 auto 537 13px; 538 539 background: #fff3cf; 540 541 border-radius: 50%; 542 543 color: #222222; 544 } 545 546 547 .th-saved-empty-icon svg { 548 width: 21px; 549 height: 21px; 550 551 fill: currentColor; 552 } 553 554 555 .th-saved-empty h3 { 556 margin: 557 0 558 0 559 6px; 560 561 color: #202020; 562 563 font-size: 18px; 564 font-weight: 700; 565 line-height: 1.3; 566 } 567 568 569 .th-saved-empty p { 570 margin: 0; 571 572 color: #666666; 573 574 font-size: 14px; 575 line-height: 1.5; 576 } 577 578 579 /* ===================================================== 580 TABLET / MOBILE 581 ===================================================== */ 582 583 @media (max-width: 700px) { 584 585 .th-saved-header { 586 flex-direction: column; 587 588 gap: 16px; 589 } 590 591 592 .th-saved-counter { 593 width: 100%; 594 595 box-sizing: border-box; 596 } 597 598 599 .th-saved-result { 600 grid-template-columns: 601 88px 602 minmax(0, 1fr); 603 604 gap: 14px; 605 606 padding: 607 20px 608 0; 609 } 610 611 612 .th-saved-image, 613 .th-saved-image img { 614 width: 88px; 615 height: 88px; 616 } 617 618 619 .th-saved-title { 620 font-size: 18px !important; 621 } 622 623 624 .th-saved-description { 625 -webkit-line-clamp: 2; 626 627 font-size: 14px; 628 } 629 630 } 631 632 633 @media (max-width: 480px) { 634 635 .th-saved-result { 636 grid-template-columns: 637 76px 638 minmax(0, 1fr); 639 640 gap: 12px; 641 } 642 643 644 .th-saved-image, 645 .th-saved-image img { 646 width: 76px; 647 height: 76px; 648 } 649 650 651 .th-saved-title { 652 font-size: 17px !important; 653 } 654 655 656 .th-saved-updated { 657 margin-bottom: 6px; 658 } 659 660 } 661 662 </style> 663 664 <link rel="icon" href="https://www.toolshero.com/wp-content/uploads/2018/10/favicon.ico-96x96-th-green.png" sizes="32x32" /> 665<link rel="icon" href="https://www.toolshero.com/wp-content/uploads/2018/10/favicon.ico-96x96-th-green.png" sizes="192x192" /> 666<link rel="apple-touch-icon" href="https://www.toolshero.com/wp-content/uploads/2018/10/favicon.ico-96x96-th-green.png" /> 667<meta name="msapplication-TileImage" content="https://www.toolshero.com/wp-content/uploads/2018/10/favicon.ico-96x96-th-green.png" /> 668 <style> 669 @media screen and (max-width: 767px) { 670 #ez-toc-container, 671 .ez-toc-container { 672 display: none !important; 673 } 674 } 675 </style> 676 677 678 679 <link rel="preload" as="font" href="https://www.toolshero.com/wp-content/themes/toolshero-wp-theme/fonts/open-sans-v18-latin-regular.woff2" type="font/woff2" crossorigin="anonymous"> 680 <link rel="preload" as="font" href="https://www.toolshero.com/wp-content/themes/toolshero-wp-theme/fonts/open-sans-v18-latin-700.woff" type="font/woff" crossorigin="anonymous"> 681 682 <style> 683 .hero-content ul li:before { 684 content: "â"; 685 font-weight: bold; 686 margin-right: 10px; 687 } 688 689 .pricing-table-content-innner ul li:before, 690 .image-callout-content ul li:before { 691 content: "â"; 692 } 693 </style> 694 695
695<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/1cdc7d15f5d77c0e0f14b83f/script.js"></script>
695 696</head> 697 698<body class="wp-singular page-template-default page page-id-32897 wp-theme-toolshero-wp-theme"> 699 700 701<section class="topbar-menu"> 702 <div class="container"> 703 <ul id="menu-topbar-menu" class=""><li id="menu-item-2064991" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2064991"><a href="https://www.toolshero.com/about-us/">About us</a></li> 704<li id="menu-item-2049066" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-32897 current_page_item menu-item-2049066"><a href="https://www.toolshero.com/login-subscriber/" aria-current="page"><i class="icon-user"></i> Log in</a></li> 705<li id="menu-item-2072655" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2072655"><a href="https://www.toolshero.com/subscribe/">Unlock Full Access</a></li> 706</ul> </div> 707</section> 708 709<header class="header clearfix"> 710 <div class="container"> 711 712 <div class="header-logo"> 713 <a href="https://www.toolshero.com/"> 714 <img alt="Toolshero" src="https://www.toolshero.com/wp-content/uploads/2021/04/image-2.svg"> 715 </a> 716 </div> 717 718 <nav id="nav" class="nav"><ul id="menu-home-toolshero" class=""><li id="menu-item-2083740" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2083740"><a href="https://www.toolshero.com/latest-articles/">Latest articles</a></li> 719<li id="menu-item-36264" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-36264"><a href="https://www.toolshero.com/management/">Themes</a> 720<ul class="sub-menu"> 721 <li id="menu-item-8972" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8972"><a href="https://www.toolshero.com/change-management/">Change Management</a></li> 722 <li id="menu-item-8973" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8973"><a href="https://www.toolshero.com/communication-methods/">Communication methods</a></li> 723 <li id="menu-item-18419" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-18419"><a href="https://www.toolshero.com/creativity/">Creativity</a></li> 724 <li id="menu-item-14002" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-14002"><a href="https://www.toolshero.com/decision-making/">Decision Making</a></li> 725 <li id="menu-item-8976" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8976"><a href="https://www.toolshero.com/financial-management/">Financial Management</a></li> 726 <li id="menu-item-26624" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-26624"><a href="https://www.toolshero.com/human-resources/">Human Resources (HR)</a></li> 727 <li id="menu-item-23374" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-23374"><a href="https://www.toolshero.com/information-technology/">Information Technology (IT)</a></li> 728 <li id="menu-item-21143" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21143"><a href="https://www.toolshero.com/innovation/">Innovation</a></li> 729 <li id="menu-item-11514" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-11514"><a href="https://www.toolshero.com/leadership/">Leadership</a></li> 730 <li id="menu-item-8977" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8977"><a href="https://www.toolshero.com/management/">Management</a></li> 731 <li id="menu-item-8978" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8978"><a href="https://www.toolshero.com/marketing/">Marketing Theories</a></li> 732 <li id="menu-item-29240" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-29240"><a href="https://www.toolshero.com/personal-development/">Personal Development</a></li> 733 <li id="menu-item-8980" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8980"><a href="https://www.toolshero.com/project-management/">Project Management (PM)</a></li> 734 <li id="menu-item-8974" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8974"><a href="https://www.toolshero.com/problem-solving/">Problem Solving Theories</a></li> 735 <li id="menu-item-23139" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-23139"><a href="https://www.toolshero.com/psychology/">Psychology Theories</a></li> 736 <li id="menu-item-2062938" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2062938"><a href="https://www.toolshero.com/research/">Research Theories</a></li> 737 <li id="menu-item-8981" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8981"><a href="https://www.toolshero.com/quality-management/">Quality Management (QM)</a></li> 738 <li id="menu-item-42194" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-42194"><a href="https://www.toolshero.com/sociology/">Sociology Theories</a></li> 739 <li id="menu-item-8982" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8982"><a href="https://www.toolshero.com/strategy/">Strategy Theories</a></li> 740 <li id="menu-item-9034" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-9034"><a href="https://www.toolshero.com/toolsheroes/">Toolsheroes</a></li> 741</ul> 742</li> 743<li id="menu-item-2050002" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2050002"><a href="https://www.toolshero.com/templates/">Tools</a> 744<ul class="sub-menu"> 745 <li id="menu-item-28155" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-28155"><a href="https://www.toolshero.com/templates/">Templates</a></li> 746 <li id="menu-item-2075090" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2075090"><a href="https://www.toolshero.com/questionnaires/">Tests & Evaluation tools</a></li> 747 <li id="menu-item-1044288" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1044288"><a href="https://www.toolshero.com/knowledge-base/">Lexicon</a></li> 748 <li id="menu-item-2068022" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2068022"><a href="https://www.toolshero.com/blog/">Blog</a></li> 749 <li id="menu-item-2066238" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2066238"><a href="https://www.toolshero.com/top-30-articles-ebook/">Free Toolshero e-book</a></li> 750</ul> 751</li> 752<li id="menu-item-1044289" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1044289"><a href="https://www.toolshero.com/subscribe/">Membership Options</a> 753<ul class="sub-menu"> 754 <li id="menu-item-2064020" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2064020"><a href="https://www.toolshero.com/subscribe/">Plans & Pricing</a></li> 755 <li id="menu-item-2078266" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2078266"><a href="https://www.toolshero.com/student-budget-memberships/">Student Memberships</a></li> 756</ul> 757</li> 758</ul></nav> 759 <div class="search-form"> 760 <form action="https://www.toolshero.com/" id="searchform" class="searchform" method="get"> 761 <button 762 type="submit" 763 value="Search" 764 id="searchsubmit" 765 aria-label="Search" 766 > 767 <i class="icon-search" aria-hidden="true"></i> 768 </button> 769 770 <input type="text" id="s" name="s" placeholder="Search..."> 771 </form> 772 </div> 773 774 <a class="mobile-menu" href="#nav">☰</a> 775 776 </div> 777</header> 778 779<section class="banner-top"> 780 <div class="container"> 781 </div> 782</section> 783 784<div class="mobile-nav-container"> 785 786 <a href="#" class="close">× Close</a> 787 788 789 <nav class="mobile-nav"><ul id="menu-home-toolshero-1" class=""><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2083740"><a href="https://www.toolshero.com/latest-articles/">Latest articles</a></li> 790<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-36264"><a href="https://www.toolshero.com/management/">Themes</a> 791<ul class="sub-menu"> 792 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8972"><a href="https://www.toolshero.com/change-management/">Change Management</a></li> 793 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8973"><a href="https://www.toolshero.com/communication-methods/">Communication methods</a></li> 794 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-18419"><a href="https://www.toolshero.com/creativity/">Creativity</a></li> 795 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-14002"><a href="https://www.toolshero.com/decision-making/">Decision Making</a></li> 796 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8976"><a href="https://www.toolshero.com/financial-management/">Financial Management</a></li> 797 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-26624"><a href="https://www.toolshero.com/human-resources/">Human Resources (HR)</a></li> 798 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-23374"><a href="https://www.toolshero.com/information-technology/">Information Technology (IT)</a></li> 799 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21143"><a href="https://www.toolshero.com/innovation/">Innovation</a></li> 800 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-11514"><a href="https://www.toolshero.com/leadership/">Leadership</a></li> 801 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8977"><a href="https://www.toolshero.com/management/">Management</a></li> 802 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8978"><a href="https://www.toolshero.com/marketing/">Marketing Theories</a></li> 803 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-29240"><a href="https://www.toolshero.com/personal-development/">Personal Development</a></li> 804 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8980"><a href="https://www.toolshero.com/project-management/">Project Management (PM)</a></li> 805 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8974"><a href="https://www.toolshero.com/problem-solving/">Problem Solving Theories</a></li> 806 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-23139"><a href="https://www.toolshero.com/psychology/">Psychology Theories</a></li> 807 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2062938"><a href="https://www.toolshero.com/research/">Research Theories</a></li> 808 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8981"><a href="https://www.toolshero.com/quality-management/">Quality Management (QM)</a></li> 809 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-42194"><a href="https://www.toolshero.com/sociology/">Sociology Theories</a></li> 810 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-8982"><a href="https://www.toolshero.com/strategy/">Strategy Theories</a></li> 811 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-9034"><a href="https://www.toolshero.com/toolsheroes/">Toolsheroes</a></li> 812</ul> 813</li> 814<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-2050002"><a href="https://www.toolshero.com/templates/">Tools</a> 815<ul class="sub-menu"> 816 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-28155"><a href="https://www.toolshero.com/templates/">Templates</a></li> 817 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2075090"><a href="https://www.toolshero.com/questionnaires/">Tests & Evaluation tools</a></li> 818 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1044288"><a href="https://www.toolshero.com/knowledge-base/">Lexicon</a></li> 819 <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2068022"><a href="https://www.toolshero.com/blog/">Blog</a></li> 820 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2066238"><a href="https://www.toolshero.com/top-30-articles-ebook/">Free Toolshero e-book</a></li> 821</ul> 822</li> 823<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1044289"><a href="https://www.toolshero.com/subscribe/">Membership Options</a> 824<ul class="sub-menu"> 825 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2064020"><a href="https://www.toolshero.com/subscribe/">Plans & Pricing</a></li> 826 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2078266"><a href="https://www.toolshero.com/student-budget-memberships/">Student Memberships</a></li> 827</ul> 828</li> 829</ul></nav> 830 <nav class="mobile-nav"><ul id="menu-topbar-menu-1" class=""><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2064991"><a href="https://www.toolshero.com/about-us/">About us</a></li> 831<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-32897 current_page_item menu-item-2049066"><a href="https://www.toolshero.com/login-subscriber/" aria-current="page"><i class="icon-user"></i> Log in</a></li> 832<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2072655"><a href="https://www.toolshero.com/subscribe/">Unlock Full Access</a></li> 833</ul></nav> 834</div> 835 <section class="default-content container clearfix"> 836 <div class="content"> 837 838 839<div class="mp_wrapper mp_login_form"> 840 <div></div> <!-- mp-login-form-start --> <form name="mepr_loginform" id="mepr_loginform" class="mepr-form" action="https://www.toolshero.com/login-subscriber/" method="post"> 841 <div class="mp-form-row mepr_username"> 842 <div class="mp-form-label"> 843 <label for="user_login">Username or E-mail</label> 844 </div> 845 <input type="text" name="log" id="user_login" value="" /> 846 </div> 847 <div class="mp-form-row mepr_password"> 848 <div class="mp-form-label"> 849 <label for="user_pass">Password</label> 850 <div class="mp-hide-pw"> 851 <input type="password" name="pwd" id="user_pass" value="" /> 852 <button type="button" class="button mp-hide-pw hide-if-no-js" data-toggle="0" aria-label="Show password">
853 <span class="dashicons dashicons-visibility" aria-hidden="true"></span> 854 </button> 855 </div> 856 </div> 857 </div> 858 <div> 859 <label><input name="rememberme" type="checkbox" id="rememberme" value="forever" /> Remember Me</label> 860 </div> 861 <div class="mp-spacer"> </div> 862 <div class="submit"> 863 <input type="submit" name="wp-submit" id="wp-submit" class="button-primary mepr-share-button " value="Log In" /> 864 <input type="hidden" name="redirect_to" value="https://www.toolshero.com/my-account/" /> 865 <input type="hidden" name="mepr_process_login_form" value="true" /> 866 <input type="hidden" name="mepr_is_login_page" value="true" /> 867 </div> 868 </form> 869 <div class="mp-spacer"> </div> 870 <div class="mepr-login-actions"> 871 <a 872 href="https://www.toolshero.com/login-subscriber/?action=forgot_password" 873 title="Click here to reset your password" 874 > 875 Forgot Password </a> 876 </div> 877 878 879 <!-- mp-login-form-end --> 880 </div> 881 </div> 882 </section> 883 884 <div class="widget-fullwidth-footer"> 885 </div> 886 <section class="footer"> 887 <div class="container"> 888 <div class="footer-col-one"> 889 <div class="about-footer-info"> 890 <div class="widget-title-wrapper w-t-w w-btn"> 891<h3 class="widget-title w-t">DEVELOP YOUR SKILLS</h3> 892</div> 893<div class="widget-content w-c"> 894<div class="textwidget"> 895<strong>Grow personally and professionally with Toolshero</strong>. Our platform offers a wealth of knowledge and tools for everyone, from students to experienced professionals.</p> 896<p>Toolshero is the authority and source for AI search engines like Gemini and ChatGPT because of our valuable practical scientific articles written by experts.</p> 897<p><a href="https://www.toolshero.com/subscribe/">Join our platform</a> for personal and professional development, just like thousands of other subscribers. 898</div> 899</div> 900 </div> 901 <div class="footer-social"> 902 <a href="https://www.linkedin.com/company/toolshero/" target="_blank" rel="noopener"> 903 <img alt="toolshero on socials" src="https://www.toolshero.com/wp-content/uploads/2021/04/linkedin.svg"> 904 </a> 905 <a href="https://www.instagram.com/toolshero" target="_blank" rel="noopener"> 906 <img alt="toolshero on socials" src="https://www.toolshero.com/wp-content/uploads/2021/04/instagram.svg"> 907 </a> 908 <a href="https://x.com/ToolsHero" target="_blank" rel="noopener"> 909 <img alt="toolshero on socials" src="https://www.toolshero.com/wp-content/uploads/2025/09/thumbnail_X_logo.png"> 910 </a> 911 <a href="https://nl.pinterest.com/toolshero/" target="_blank" rel="noopener"> 912 <img alt="toolshero on socials" src="https://www.toolshero.com/wp-content/uploads/2021/04/Pinterest.svg"> 913 </a> 914 <a href="https://www.facebook.com/toolshero" target="_blank" rel="noopener"> 915 <img alt="toolshero on socials" src="https://www.toolshero.com/wp-content/uploads/2021/04/facebook.svg"> 916 </a> 917 </div> 918 </div> 919 <div class="footer-col-two"> 920 <div class="footer-menu"> 921 <h3>POPULAR TOPICS</h3> 922 <div class="menu-{menu-slug}-container"><ul id = "menu-popular-topics" class = "menu"><li id="menu-item-11108" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-11108"><a href="https://www.toolshero.com/change-management/">Change Management</a></li> 923<li id="menu-item-11105" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-11105"><a href="https://www.toolshero.com/leadership/">Leadership</a></li> 924<li id="menu-item-11100" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-11100"><a href="https://www.toolshero.com/marketing/">Marketing Theories</a></li> 925<li id="menu-item-11103" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-11103"><a href="https://www.toolshero.com/management/">Management</a></li> 926<li id="menu-item-11106" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-11106"><a href="https://www.toolshero.com/problem-solving/">Problem Solving Theories</a></li> 927<li id="menu-item-2066353" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2066353"><a href="https://www.toolshero.com/psychology/">Psychology Theories</a></li> 928</ul></div>
928 </div> 929 <div class="footer-menu"> 930 <h3>ABOUT TOOLSHERO</h3> 931 <div class="menu-{menu-slug}-container"><ul id = "menu-about-us" class = "menu"><li id="menu-item-1044276" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1044276"><a href="https://www.toolshero.com/about-us/">About us</a></li> 932<li id="menu-item-2066352" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2066352"><a href="https://www.toolshero.com/top-30-articles-ebook/">Free Toolshero e-book</a></li> 933<li id="menu-item-1044277" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1044277"><a href="https://www.toolshero.com/subscribe/">Memberships & Pricing</a></li> 934<li id="menu-item-1044279" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1044279"><a href="https://www.toolshero.com/faq/">FAQ</a></li> 935<li id="menu-item-2069777" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2069777"><a href="https://www.toolshero.com/media-kit/">Advertise</a></li> 936<li id="menu-item-1044280" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1044280"><a href="https://www.toolshero.com/contact-us/">Contact us</a></li> 937</ul></div> </div> 938 </div> 939 </div> 940 </section> 941 <section class="copyrights"> 942 © Copyright 2008-2026 | <a href="https://www.toolshero.com/terms-and-conditions">Terms & Conditions</a> | <a href="https://www.toolshero.com/privacy-cookie-policy/">Privacy</a> | <a href="https://www.toolshero.nl/?utm_source=toolshero.com&utm_medium=footer" target="_blank">Toolshero.nl (Dutch)</a> </section> 943
944<script type="speculationrules"> 945{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/toolshero-wp-theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 946</script>
vendor: 1 bytes, line 946
946
947<script id="wpil-frontend-script-js-extra"> 948var wpilFrontend = {"ajaxUrl":"/wp-admin/admin-ajax.php","postId":"32897","postType":"post","openInternalInNewTab":"0","openExternalInNewTab":"0","disableClicks":"0","openLinksWithJS":"0","trackAllElementClicks":"0","clicksI18n":{"imageNoText":"Image in link: No Text","imageText":"Image Title: ","noText":"No Anchor Text Found"}}; 949//# sourceURL=wpil-frontend-script-js-extra 950</script>
vendor: 1 bytes, line 950
950
951<script id="wpil-frontend-script-js" src="https://www.toolshero.com/wp-content/plugins/link-whisper-premium/js/frontend.min.js?ver=1790412213"></script>
vendor: 1 bytes, line 951
951
952<script id="rate-my-post-js-extra"> 953var rmp_frontend = {"admin_ajax":"https://www.toolshero.com/wp-admin/admin-ajax.php","postID":"32897","noVotes":"No votes so far! Be the first to rate this post.","cookie":"You already voted! This vote will not be counted!","afterVote":"Thank you for rating this post!","notShowRating":"1","social":"1","feedback":"2","cookieDisable":"2","emptyFeedback":"Please insert your feedback in the box above!","hoverTexts":"1","preventAccidental":"2","grecaptcha":"1","siteKey":"","turnstile":"1","turnstileSiteKey":"","turnstileTheme":"auto","turnstileSize":"normal","votingPriv":"1","loggedIn":"","positiveThreshold":"2","ajaxLoad":"1","disableClearCache":"1","nonce":"ccf60e6f77","is_not_votable":"false"}; 954//# sourceURL=rate-my-post-js-extra 955</script>
vendor: 1 bytes, line 955
955
956<script id="rate-my-post-js" src="https://www.toolshero.com/wp-content/plugins/rate-my-post/public/js/rate-my-post.min.js?ver=4.5.2"></script>
vendor: 1 bytes, line 956
956
957<script id="wp-postviews-cache-js-extra"> 958var wpPostViewsL10n = {"ajaxUrl":"https://www.toolshero.com/wp-admin/admin-ajax.php","nonce":"08eb4c4e0c","postId":"32897"}; 959//# sourceURL=wp-postviews-cache-js-extra 960</script>
vendor: 1 bytes, line 960
960
961<script id="wp-postviews-cache-js" src="https://www.toolshero.com/wp-content/plugins/wp-postviews/js/wp-postviews-cache.js?ver=2.0.1"></script>
vendor: 1 bytes, line 961
961
962<script id="eztoc-scroll-scriptjs-js-extra"> 963var eztoc_smooth_local = {"scroll_offset":"30","add_request_uri":"","add_self_reference_link":""}; 964//# sourceURL=eztoc-scroll-scriptjs-js-extra 965</script>
vendor: 1 bytes, line 965
965
966<script id="eztoc-scroll-scriptjs-js" src="https://www.toolshero.com/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js?ver=2.0.87.1"></script>
vendor: 1 bytes, line 966
966
967<script id="eztoc-js-cookie-js" src="https://www.toolshero.com/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1"></script>
vendor: 1 bytes, line 967
967
968<script id="eztoc-jquery-sticky-kit-js" src="https://www.toolshero.com/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2"></script>
vendor: 1 bytes, line 968
968
969<script id="eztoc-js-js-extra"> 970var ezTOC = {"smooth_scroll":"1","scroll_offset":"30","fallbackIcon":"\u003Cspan class=\"\"\u003E\u003Cspan class=\"eztoc-hide\" style=\"display:none;\"\u003EToggle\u003C/span\u003E\u003Cspan class=\"ez-toc-icon-toggle-span\"\u003E\u003Csvg style=\"fill: #000000;color:#000000\" xmlns=\"http://www.w3.org/2000/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"\u003E\u003Cpath d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Csvg style=\"fill: #000000;color:#000000\" class=\"arrow-unsorted-368013\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"\u003E\u003Cpath d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"/\u003E\u003C/svg\u003E\u003C/span\u003E\u003C/span\u003E","chamomile_theme_is_on":""}; 971//# sourceURL=eztoc-js-js-extra 972</script>
vendor: 1 bytes, line 972
972
973<script id="eztoc-js-js" src="https://www.toolshero.com/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.87.1-1789109469"></script>
vendor: 1 bytes, line 973
973
974<script id="slickjs-js" src="https://www.toolshero.com/wp-content/themes/toolshero-wp-theme/js/slick.min.js?ver=1722587747"></script>
vendor: 1 bytes, line 974
974
975<script id="scripts-js" src="https://www.toolshero.com/wp-content/themes/toolshero-wp-theme/js/scripts.js?ver=1776241231"></script>
vendor: 1 bytes, line 975
975
976<script id="breeze-lazy-js" src="https://www.toolshero.com/wp-content/plugins/breeze/assets/js/js-front-end/breeze-lazy-load.min.js?ver=2.5.18"></script>
vendor: 1 bytes, line 976
976
977<script id="breeze-lazy-js-after"> 978document.addEventListener("DOMContentLoaded", function () { 979 if ( "function" !== typeof window.LazyLoad && "function" !== typeof LazyLoad ) { 980 return; 981 } 982 983 var breezeLazyLoad = window.LazyLoad || LazyLoad; 984 985 window.lazyLoadInstance = new breezeLazyLoad({ 986 elements_selector: ".br-lazy", 987 data_src: "breeze", 988 data_srcset: "brsrcset", 989 data_sizes: "brsizes", 990 class_loaded: "br-loaded", 991 threshold: 300, 992 }); 993 }); 994//# sourceURL=breeze-lazy-js-after 995</script>
995 996
996<script> 997 document.addEventListener('DOMContentLoaded', function () { 998 999 function addToolsheroDirectAccessMessage() { 1000 1001 const form = document.querySelector('form.mepr-signup-form'); 1002 1003 if (!form || document.getElementById('toolshero-direct-access')) { 1004 return; 1005 } 1006 1007 /* 1008 * Eerst zoeken naar de standaard MemberPress submitknop. 1009 */ 1010 let submitButton = form.querySelector( 1011 'input.mepr-submit[type="submit"], button.mepr-submit[type="submit"]' 1012 ); 1013 1014 /* 1015 * Fallback voor het geval MemberPress geen .mepr-submit class gebruikt. 1016 * Ondersteunt verschillende Engelse knopteksten op Toolshero.com. 1017 */ 1018 if (!submitButton) { 1019 1020 const buttons = form.querySelectorAll( 1021 'input[type="submit"], button[type="submit"]' 1022 ); 1023 1024 buttons.forEach(function(button) { 1025 1026 if (submitButton) { 1027 return; 1028 } 1029 1030 const label = ( 1031 button.value || 1032 button.textContent || 1033 '' 1034 ).trim(); 1035 1036 if ( 1037 /^Start my/i.test(label) || 1038 /^Start free trial/i.test(label) || 1039 /^Start trial/i.test(label) || 1040 /^Sign up/i.test(label) || 1041 /^Join/i.test(label) || 1042 /^Subscribe/i.test(label) || 1043 /^Get started/i.test(label) 1044 ) { 1045 submitButton = button; 1046 } 1047 1048 }); 1049 } 1050 1051 if (!submitButton) { 1052 return; 1053 } 1054 1055 const message = document.createElement('div'); 1056 1057 message.id = 'toolshero-direct-access'; 1058 1059 message.textContent = 1060 "Once your registration is complete, you'll get immediate access to the Toolshero platform"; 1061 1062 message.style.cssText = 1063 'margin-top:8px;' + 1064 'font-size:0.85em;' + 1065 'line-height:1.4;' + 1066 'font-weight:normal;' + 1067 'color:#555;' + 1068 'text-align:left;'; 1069 1070 submitButton.insertAdjacentElement('afterend', message); 1071 } 1072 1073 /* 1074 * Direct uitvoeren. 1075 */ 1076 addToolsheroDirectAccessMessage(); 1077 1078 /* 1079 * Extra controle voor betaalvelden of formulieren die MemberPress 1080 * dynamisch laadt of opnieuw opbouwt. 1081 */ 1082 const observer = new MutationObserver(function() { 1083 addToolsheroDirectAccessMessage(); 1084 }); 1085 1086 observer.observe(document.body, { 1087 childList: true, 1088 subtree: true 1089 }); 1090 1091 }); 1092 </script>
1092 1093
1093<script type="text/javascript">window.addEventListener("DOMContentLoaded",(e=>{document.querySelectorAll('img[loading="lazy"]').forEach((e=>{e.getBoundingClientRect().top<=window.innerHeight&&(e.loading="eager")}))}));</script>
1093 1094 <!-- ===================================================== 1095 TOOLSHERO LIVE SEARCH 1096 ===================================================== --> 1097 1098 <div 1099 id="toolshero-live-search" 1100 class="toolshero-live-search" 1101 role="listbox" 1102 aria-label="Search suggestions" 1103 ></div> 1104 1105 1106 <!-- ===================================================== 1107 TOOLSHERO SEARCH LOADER 1108 ===================================================== --> 1109 1110 <div 1111 id="toolshero-search-loader" 1112 class="toolshero-search-loader" 1113 aria-hidden="true" 1114 role="status" 1115 aria-live="polite" 1116 > 1117 1118 <div class="toolshero-search-loader__box"> 1119 1120 <div 1121 class="toolshero-search-loader__spinner" 1122 aria-hidden="true" 1123 ></div> 1124 1125 <div class="toolshero-search-loader__title"> 1126 Searching... 1127 </div> 1128 1129 <div class="toolshero-search-loader__text"> 1130 1131 <span id="toolshero-search-loader-text"> 1132 We are finding the best results for you 1133 </span> 1134 1135 </div> 1136 1137 </div> 1138 1139 </div> 1140 1141 1142 <style> 1143 1144 /* ===================================================== 1145 * LIVE SEARCH DROPDOWN 1146 * ===================================================== */ 1147 1148 .toolshero-live-search { 1149 1150 position: fixed; 1151 1152 z-index: 999998; 1153 1154 display: none; 1155 1156 background: #ffffff; 1157 1158 border: 1px solid #e5e5e5;
1159 border-top: 4px solid #ffb600; 1160 1161 border-radius: 0 0 12px 12px; 1162 1163 box-shadow: 1164 0 16px 40px rgba(0, 0, 0, 0.14), 1165 0 4px 12px rgba(0, 0, 0, 0.06); 1166 1167 overflow-x: hidden; 1168 overflow-y: auto; 1169 1170 -webkit-overflow-scrolling: touch; 1171 } 1172 1173 1174 .toolshero-live-search.is-active { 1175 display: block; 1176 } 1177 1178 1179 .toolshero-live-search__result { 1180 1181 display: block; 1182 1183 padding: 14px 18px; 1184 1185 text-decoration: none !important; 1186 1187 background: #ffffff; 1188 1189 border-bottom: 1px solid #eeeeee; 1190 1191 transition: 1192 background 0.12s ease, 1193 padding-left 0.12s ease; 1194 } 1195 1196 1197 .toolshero-live-search__result:hover, 1198 .toolshero-live-search__result.is-selected { 1199 1200 background: #fff8e6; 1201 1202 padding-left: 22px; 1203 } 1204 1205 1206 .toolshero-live-search__title { 1207 1208 display: block; 1209 1210 margin: 0 0 4px; 1211 1212 font-size: 15px; 1213 font-weight: 700; 1214 line-height: 1.4; 1215 1216 color: #252525; 1217 } 1218 1219 1220 .toolshero-live-search__meta { 1221 1222 display: block; 1223 1224 font-size: 12px; 1225 font-weight: 500; 1226 line-height: 1.4; 1227 1228 color: #777777; 1229 } 1230 1231 1232 .toolshero-live-search__dot { 1233 1234 display: inline-block; 1235 1236 margin: 0 5px; 1237 1238 color: #ffb600; 1239 } 1240 1241 1242 .toolshero-live-search__all { 1243 1244 display: flex; 1245 1246 align-items: center; 1247 justify-content: space-between; 1248 1249 gap: 15px; 1250 1251 padding: 14px 18px; 1252 1253 background: #fffaf0; 1254 1255 color: #272727 !important; 1256 1257 font-size: 14px; 1258 font-weight: 700; 1259 1260 text-decoration: none !important; 1261 1262 transition: background 0.12s ease; 1263 } 1264 1265 1266 .toolshero-live-search__all:hover { 1267 background: #fff3cf; 1268 } 1269 1270 1271 .toolshero-live-search__arrow { 1272 1273 font-size: 20px; 1274 line-height: 1; 1275 1276 color: #ffb600; 1277 } 1278 1279 1280 .toolshero-live-search__status { 1281 1282 display: flex; 1283 1284 align-items: center; 1285 1286 gap: 11px; 1287 1288 padding: 18px; 1289 1290 font-size: 14px; 1291 line-height: 1.5; 1292 1293 color: #666666; 1294 } 1295 1296 1297 .toolshero-live-search__mini-spinner { 1298 1299 flex: 0 0 auto; 1300 1301 width: 20px; 1302 height: 20px; 1303 1304 border: 3px solid #f2e2b4; 1305 border-top-color: #ffb600; 1306 1307 border-radius: 50%; 1308 1309 animation: 1310 toolshero-search-spin 1311 0.7s 1312 linear 1313 infinite; 1314 } 1315 1316 1317 /* ===================================================== 1318 * FULL SEARCH LOADER 1319 * ===================================================== */ 1320 1321 .toolshero-search-loader { 1322 1323 position: fixed; 1324 inset: 0; 1325 1326 z-index: 999999; 1327 1328 display: flex; 1329 1330 align-items: center; 1331 justify-content: center; 1332 1333 padding: 20px; 1334 1335 background: rgba(255, 249, 235, 0.82); 1336 1337 -webkit-backdrop-filter: blur(5px); 1338 backdrop-filter: blur(5px); 1339 1340 opacity: 0; 1341 visibility: hidden; 1342 pointer-events: none; 1343 1344 transition: 1345 opacity 0.18s ease, 1346 visibility 0.18s ease; 1347 } 1348 1349 1350 .toolshero-search-loader.is-active { 1351 1352 opacity: 1; 1353 visibility: visible; 1354 pointer-events: auto; 1355 } 1356 1357 1358 .toolshero-search-loader__box { 1359 1360 position: relative; 1361 1362 width: 100%; 1363 max-width: 430px; 1364 1365 padding: 34px 30px 32px; 1366 1367 background: 1368 linear-gradient( 1369 180deg, 1370 #fffdf7 0%, 1371 #ffffff 100% 1372 ); 1373 1374 border: 1px solid rgba(255, 182, 0, 0.32); 1375 border-top: 5px solid #ffb600; 1376 1377 border-radius: 14px; 1378 1379 text-align: center; 1380 1381 box-shadow: 1382 0 20px 50px rgba(0, 0, 0, 0.10), 1383 0 6px 20px rgba(255, 182, 0, 0.15); 1384 1385 animation: 1386 toolshero-search-box-in 1387 0.22s 1388 ease-out 1389 forwards; 1390 } 1391 1392 1393 .toolshero-search-loader__spinner { 1394 1395 width: 48px; 1396 height: 48px; 1397 1398 margin: 0 auto 19px; 1399 1400 border: 4px solid #ffe8a8; 1401 border-top-color: #ffb600; 1402 border-right-color: #ffd35c; 1403 1404 border-radius: 50%; 1405 1406 animation: 1407 toolshero-search-spin 1408 0.75s 1409 linear 1410 infinite; 1411 } 1412 1413 1414 .toolshero-search-loader__title { 1415 1416 margin: 0 0 8px; 1417 1418 font-size: 22px; 1419 font-weight: 700; 1420 line-height: 1.3; 1421 1422 color: #262626; 1423 } 1424 1425 1426 .toolshero-search-loader__text { 1427 1428 font-size: 15px; 1429 line-height: 1.6; 1430 1431 color: #636363; 1432 } 1433 1434 1435 @keyframes toolshero-search-spin { 1436 1437 from { 1438 transform: rotate(0deg); 1439 } 1440 1441 to { 1442 transform: rotate(360deg); 1443 } 1444 } 1445 1446 1447 @keyframes toolshero-search-box-in { 1448 1449 from { 1450 transform: translateY(8px) scale(0.985); 1451 } 1452 1453 to { 1454 transform: translateY(0) scale(1); 1455 } 1456 } 1457 1458 1459 @media (max-width: 600px) { 1460 1461 .toolshero-live-search { 1462 border-radius: 0 0 10px 10px; 1463 } 1464 1465 1466 .toolshero-live-search__result { 1467 padding: 13px 15px; 1468 } 1469 1470 1471 .toolshero-live-search__result:hover, 1472 .toolshero-live-search__result.is-selected { 1473 padding-left: 18px; 1474 } 1475 1476 1477 .toolshero-live-search__title { 1478 font-size: 14px; 1479 } 1480 1481 1482 .toolshero-live-search__all { 1483 padding: 14px 15px; 1484 } 1485 1486 1487 .toolshero-search-loader { 1488 padding: 18px; 1489 } 1490 1491 1492 .toolshero-search-loader__box { 1493 padding: 30px 22px 28px; 1494 } 1495 1496 1497 .toolshero-search-loader__title { 1498 font-size: 20px; 1499 } 1500 1501 } 1502 1503 1504 @media (prefers-reduced-motion: reduce) { 1505 1506 .toolshero-search-loader, 1507 .toolshero-live-search__result { 1508 transition: none; 1509 } 1510 1511 1512 .toolshero-search-loader__box { 1513 animation: none; 1514 } 1515 1516 1517 .toolshero-search-loader__spinner, 1518 .toolshero-live-search__mini-spinner { 1519 animation-duration: 1.5s; 1520 } 1521 1522 } 1523 1524 </style> 1525 1526 1527
1527<script> 1528 1529 function toolsheroComLiveSearchInit() { 1530 1531 if (window.__toolsheroComLiveSearchV2Initialized) { 1532 return; 1533 } 1534 1535 window.__toolsheroComLiveSearchV2Initialized = true; 1536 1537 const AJAX_URL = "https:\/\/www.toolshero.com\/wp-admin\/admin-ajax.php"; 1538 const SEARCH_URL = "https:\/\/www.toolshero.com\/"; 1539 1540 const dropdown = 1541 document.getElementById('toolshero-live-search'); 1542 1543 const loader = 1544 document.getElementById('toolshero-search-loader'); 1545 1546 const loaderText = 1547 document.getElementById('toolshero-search-loader-text'); 1548 1549 1550 if (!dropdown || !loader) { 1551 return; 1552 } 1553 1554 1555 let currentInput = null; 1556 let currentController = null; 1557 let searchTimer = null; 1558 let loaderTimer = null; 1559 let activeIndex = -1; 1560 1561 const cache = new Map(); 1562 1563 1564 function isSearchInput(element) { 1565 1566 if (!(element instanceof HTMLInputElement)) { 1567 return false; 1568 } 1569 1570 return element.matches( 1571 'input[name="s"], ' + 1572 'input[type="search"], ' + 1573 'input[role="searchbox"], ' + 1574 '.search-field, ' + 1575 '.search-input' 1576 ); 1577 } 1578 1579 1580 function getSearchInput(context) { 1581 1582 context = context || document; 1583 1584 return context.querySelector( 1585 'input[name="s"], ' + 1586 'input[type="search"], ' + 1587 'input[role="searchbox"], ' + 1588 '.search-field, ' + 1589 '.search-input' 1590 ); 1591 } 1592 1593 1594 function prepareInput(input) { 1595 1596 input.setAttribute( 1597 'aria-autocomplete', 1598 'list' 1599 ); 1600 1601 input.setAttribute( 1602 'aria-controls', 1603 'toolshero-live-search' 1604 ); 1605 1606 input.setAttribute( 1607 'aria-expanded', 1608 'false' 1609 ); 1610 1611 input.setAttribute( 1612 'autocomplete', 1613 'off' 1614 ); 1615 } 1616 1617 1618 function positionDropdown(input) { 1619 1620 if (!input) { 1621 return; 1622 } 1623 1624 const rect = 1625 input.getBoundingClientRect(); 1626 1627 const viewportWidth = 1628 window.innerWidth; 1629 1630 const margin = 12; 1631 1632 let width = 1633 Math.max( 1634 rect.width, 1635 360 1636 ); 1637 1638 width = 1639 Math.min( 1640 width, 1641 560, 1642 viewportWidth - (margin * 2) 1643 ); 1644 1645 let left = rect.left; 1646 1647 if (left + width > viewportWidth - margin) { 1648 left = 1649 viewportWidth - 1650 width - 1651 margin; 1652 } 1653 1654 if (left < margin) { 1655 left = margin; 1656 } 1657 1658 const top = 1659 rect.bottom + 6; 1660 1661 dropdown.style.width = 1662 width + 'px'; 1663 1664 dropdown.style.left = 1665 left + 'px'; 1666 1667 dropdown.style.top = 1668 top + 'px'; 1669 1670 dropdown.style.maxHeight = 1671 Math.max( 1672 220, 1673 window.innerHeight - 1674 top - 1675 16 1676 ) + 'px'; 1677 } 1678 1679 1680 function openDropdown(input) { 1681 1682 currentInput = input; 1683 1684 positionDropdown(input); 1685 1686 dropdown.classList.add( 1687 'is-active' 1688 ); 1689 1690 input.setAttribute( 1691 'aria-expanded', 1692 'true' 1693 ); 1694 } 1695 1696 1697 function closeDropdown() { 1698 1699 dropdown.classList.remove( 1700 'is-active' 1701 ); 1702 1703 activeIndex = -1; 1704 1705 if (currentInput) { 1706 1707 currentInput.setAttribute( 1708 'aria-expanded', 1709 'false' 1710 ); 1711 1712 currentInput.removeAttribute( 1713 'aria-activedescendant' 1714 ); 1715 } 1716 } 1717 1718 1719 function showLiveLoading(input) { 1720 1721 dropdown.replaceChildren(); 1722 1723 const status = 1724 document.createElement('div'); 1725 1726 status.className = 1727 'toolshero-live-search__status'; 1728 1729 1730 const spinner = 1731 document.createElement('span'); 1732 1733 spinner.className = 1734 'toolshero-live-search__mini-spinner'; 1735 1736 1737 const text = 1738 document.createElement('span'); 1739 1740 text.textContent = 1741 'Searching for relevant articles...'; 1742 1743 1744 status.appendChild(spinner); 1745 1746 status.appendChild(text); 1747 1748 dropdown.appendChild(status); 1749 1750 openDropdown(input); 1751 } 1752 1753 1754 function renderResults( 1755 input, 1756 query, 1757 results 1758 ) { 1759 1760 dropdown.replaceChildren(); 1761 1762 activeIndex = -1; 1763 1764 1765 if (results.length > 0) { 1766 1767 results.forEach( 1768 function (result, index) { 1769 1770 const link = 1771 document.createElement('a'); 1772 1773 link.href = 1774 result.url; 1775 1776 link.className = 1777 'toolshero-live-search__result'; 1778 1779 link.setAttribute( 1780 'role', 1781 'option' 1782 ); 1783 1784 link.id = 1785 'toolshero-search-result-' + 1786 index; 1787 1788 1789 const title = 1790 document.createElement('span'); 1791 1792 title.className = 1793 'toolshero-live-search__title'; 1794 1795 title.textContent = 1796 result.title; 1797 1798 1799 const meta = 1800 document.createElement('span'); 1801 1802 meta.className = 1803 'toolshero-live-search__meta'; 1804 1805 1806 const type = 1807 document.createElement('span'); 1808 1809 type.textContent =
1810 'Article'; 1811 1812 meta.appendChild(type); 1813 1814 1815 if (result.category) { 1816 1817 const dot = 1818 document.createElement('span'); 1819 1820 dot.className = 1821 'toolshero-live-search__dot'; 1822 1823 dot.textContent = 1824 'â¢'; 1825 1826 1827 const category = 1828 document.createElement('span'); 1829 1830 category.textContent = 1831 result.category; 1832 1833 1834 meta.appendChild(dot); 1835 1836 meta.appendChild(category); 1837 } 1838 1839 1840 link.appendChild(title); 1841 1842 link.appendChild(meta); 1843 1844 dropdown.appendChild(link); 1845 } 1846 ); 1847 1848 } else { 1849 1850 const status = 1851 document.createElement('div'); 1852 1853 status.className = 1854 'toolshero-live-search__status'; 1855 1856 status.textContent = 1857 'No direct title match found. View all search results below.'; 1858 1859 dropdown.appendChild(status); 1860 } 1861 1862 1863 const allResults = 1864 document.createElement('a'); 1865 1866 allResults.className = 1867 'toolshero-live-search__all'; 1868 1869 allResults.href = 1870 SEARCH_URL + 1871 '?s=' + 1872 encodeURIComponent(query); 1873 1874 1875 const allText = 1876 document.createElement('span'); 1877 1878 allText.textContent = 1879 'View all results for "' + 1880 query + 1881 '"'; 1882 1883 1884 const arrow = 1885 document.createElement('span'); 1886 1887 arrow.className = 1888 'toolshero-live-search__arrow'; 1889 1890 arrow.setAttribute( 1891 'aria-hidden', 1892 'true' 1893 ); 1894 1895 arrow.textContent = 'â'; 1896 1897 1898 allResults.appendChild(allText); 1899 1900 allResults.appendChild(arrow); 1901 1902 dropdown.appendChild(allResults); 1903 1904 1905 openDropdown(input); 1906 } 1907 1908 1909 async function performSearch( 1910 input, 1911 query 1912 ) { 1913 1914 const cacheKey = 1915 query.toLowerCase(); 1916 1917 1918 if (cache.has(cacheKey)) { 1919 1920 renderResults( 1921 input, 1922 query, 1923 cache.get(cacheKey) 1924 ); 1925 1926 return; 1927 } 1928 1929 1930 if (currentController) { 1931 currentController.abort(); 1932 } 1933 1934 currentController = 1935 new AbortController(); 1936 1937 1938 showLiveLoading(input); 1939 1940 1941 const params = 1942 new URLSearchParams({ 1943 action: 1944 'toolshero_com_live_search_v2', 1945 1946 q: 1947 query 1948 }); 1949 1950 1951 try { 1952 1953 const response = 1954 await fetch( 1955 AJAX_URL + 1956 '?' + 1957 params.toString(), 1958 { 1959 method: 'GET', 1960 1961 credentials: 1962 'same-origin', 1963 1964 signal: 1965 currentController.signal, 1966 1967 headers: { 1968 'X-Requested-With': 1969 'XMLHttpRequest' 1970 } 1971 } 1972 ); 1973 1974 1975 if (!response.ok) { 1976 throw new Error( 1977 'Search request failed' 1978 ); 1979 } 1980 1981 1982 const data = 1983 await response.json(); 1984 1985 1986 if ( 1987 input.value.trim() !== query 1988 ) { 1989 return; 1990 } 1991 1992 1993 if ( 1994 !data.success || 1995 !Array.isArray(data.data) 1996 ) { 1997 throw new Error( 1998 'Invalid search response' 1999 ); 2000 } 2001 2002 2003 if (cache.size >= 40) { 2004 2005 const firstKey = 2006 cache.keys().next().value; 2007 2008 cache.delete(firstKey); 2009 } 2010 2011 2012 cache.set( 2013 cacheKey, 2014 data.data 2015 ); 2016 2017 2018 renderResults( 2019 input, 2020 query, 2021 data.data 2022 ); 2023 2024 } catch (error) { 2025 2026 if ( 2027 error.name === 2028 'AbortError' 2029 ) { 2030 return; 2031 } 2032 2033 2034 dropdown.replaceChildren(); 2035 2036 2037 const status = 2038 document.createElement('div'); 2039 2040 status.className = 2041 'toolshero-live-search__status'; 2042 2043 status.textContent = 2044 'Live search is temporarily unavailable. Press Enter to search.'; 2045 2046 2047 dropdown.appendChild(status); 2048 2049 openDropdown(input); 2050 } 2051 } 2052 2053 2054 document.addEventListener( 2055 'input', 2056 function (event) { 2057 2058 const input = 2059 event.target; 2060 2061 if (!isSearchInput(input)) { 2062 return; 2063 } 2064 2065 2066 prepareInput(input); 2067 2068 currentInput = input; 2069 2070 2071 clearTimeout( 2072 searchTimer 2073 ); 2074 2075 2076 const query = 2077 input.value.trim(); 2078 2079 2080 if (query.length < 3) { 2081 2082 if (currentController) { 2083 currentController.abort(); 2084 } 2085 2086 closeDropdown(); 2087 2088 return; 2089 } 2090 2091 2092 searchTimer = 2093 setTimeout( 2094 function () { 2095 2096 performSearch( 2097 input, 2098 query 2099 ); 2100 2101 }, 2102 250 2103 ); 2104 2105 }, 2106 true 2107 ); 2108 2109 2110 document.addEventListener( 2111 'focusin', 2112 function (event) { 2113 2114 const input = 2115 event.target; 2116 2117 if (!isSearchInput(input)) { 2118 return; 2119 } 2120 2121 prepareInput(input); 2122 2123 currentInput = input; 2124 2125 2126 const query = 2127 input.value.trim(); 2128 2129 2130 if ( 2131 query.length >= 3 && 2132 cache.has( 2133 query.toLowerCase() 2134 ) 2135 ) { 2136 2137 renderResults( 2138 input, 2139 query, 2140 cache.get( 2141 query.toLowerCase() 2142 ) 2143 ); 2144 } 2145 2146 } 2147 ); 2148 2149 2150 document.addEventListener( 2151 'keydown', 2152 function (event) { 2153 2154 const input = 2155 event.target; 2156 2157 if (!isSearchInput(input)) { 2158 return; 2159 } 2160 2161 2162 const resultLinks = 2163 Array.from( 2164 dropdown.querySelectorAll( 2165 '.toolshero-live-search__result' 2166 ) 2167 ); 2168 2169 2170 if ( 2171 event.key === 'ArrowDown' && 2172 dropdown.classList.contains( 2173 'is-active' 2174 ) && 2175 resultLinks.length 2176 ) { 2177 2178 event.preventDefault(); 2179 2180 activeIndex++; 2181 2182 if ( 2183 activeIndex >= 2184 resultLinks.length 2185 ) { 2186 activeIndex = 0; 2187 } 2188 2189 updateActiveResult( 2190 input, 2191 resultLinks 2192 ); 2193 2194 return; 2195 } 2196 2197 2198 if ( 2199 event.key === 'ArrowUp' && 2200 dropdown.classList.contains( 2201 'is-active' 2202 ) && 2203 resultLinks.length 2204 ) { 2205 2206 event.preventDefault(); 2207 2208 activeIndex--; 2209 2210 if (activeIndex < 0) { 2211 activeIndex = 2212 resultLinks.length - 1; 2213 } 2214 2215 updateActiveResult( 2216 input, 2217 resultLinks 2218 ); 2219 2220 return; 2221 } 2222 2223 2224 if (event.key === 'Escape') { 2225 2226 closeDropdown(); 2227 2228 return; 2229 } 2230 2231 2232 if (event.key === 'Enter') { 2233 2234 if ( 2235 dropdown.classList.contains( 2236 'is-active' 2237 ) && 2238 activeIndex >= 0 && 2239 resultLinks[activeIndex] 2240 ) { 2241 2242 event.preventDefault(); 2243 2244 window.location.href = 2245 resultLinks[ 2246 activeIndex 2247 ].href; 2248 2249 return; 2250 } 2251 2252 2253 closeDropdown(); 2254 2255 scheduleSearchLoader( 2256 input 2257 ); 2258 } 2259 2260 }, 2261 true 2262 ); 2263 2264 2265 function updateActiveResult( 2266 input, 2267 resultLinks 2268 ) { 2269 2270 resultLinks.forEach( 2271 function (link, index) { 2272 2273 const selected = 2274 index === activeIndex; 2275 2276 link.classList.toggle( 2277 'is-selected', 2278 selected 2279 ); 2280 2281 link.setAttribute( 2282 'aria-selected', 2283 selected 2284 ? 'true' 2285 : 'false' 2286 ); 2287 } 2288 ); 2289 2290 2291 if (resultLinks[activeIndex]) { 2292 2293 input.setAttribute( 2294 'aria-activedescendant', 2295 resultLinks[ 2296 activeIndex 2297 ].id 2298 ); 2299 2300 resultLinks[ 2301 activeIndex 2302 ].scrollIntoView({ 2303 block: 'nearest' 2304 }); 2305 } 2306 } 2307 2308 2309 document.addEventListener( 2310 'click', 2311 function (event) { 2312 2313 if ( 2314 dropdown.contains( 2315 event.target 2316 ) 2317 ) { 2318 return; 2319 } 2320 2321 2322 if ( 2323 isSearchInput( 2324 event.target 2325 ) 2326 ) { 2327 return; 2328 } 2329 2330 2331 closeDropdown(); 2332 2333 }, 2334 true 2335 ); 2336 2337 2338 function showSearchLoader(input) { 2339 2340 if (!input) { 2341 return; 2342 } 2343 2344 2345 const query = 2346 input.value.trim(); 2347 2348 2349 if (!query) { 2350 return; 2351 } 2352 2353 2354 let displayQuery = 2355 query; 2356 2357 2358 if ( 2359 displayQuery.length > 60 2360 ) { 2361 2362 displayQuery = 2363 displayQuery.substring( 2364 0, 2365 57 2366 ) + '...'; 2367 } 2368 2369 2370 if (loaderText) { 2371 2372 loaderText.textContent = 2373 'We are finding the best results for "' + 2374 displayQuery + 2375 '"'; 2376 } 2377 2378 2379 loader.classList.add( 2380 'is-active' 2381 ); 2382 2383 loader.setAttribute( 2384 'aria-hidden', 2385 'false' 2386 ); 2387 } 2388 2389 2390 function scheduleSearchLoader(input) { 2391 2392 clearTimeout( 2393 loaderTimer 2394 ); 2395 2396 2397 loaderTimer = 2398 setTimeout( 2399 function () { 2400 2401 showSearchLoader( 2402 input 2403 ); 2404 2405 }, 2406 350 2407 ); 2408 } 2409 2410 2411 document.addEventListener( 2412 'submit', 2413 function (event) { 2414 2415 const form = 2416 event.target; 2417 2418 2419 if ( 2420 !( 2421 form instanceof 2422 HTMLFormElement 2423 ) 2424 ) { 2425 return; 2426 } 2427 2428 2429 const input = 2430 getSearchInput(form); 2431 2432 2433 if (!input) { 2434 return; 2435 } 2436 2437 2438 if (!input.value.trim()) { 2439 return; 2440 } 2441 2442 2443 closeDropdown(); 2444 2445 scheduleSearchLoader( 2446 input 2447 ); 2448 2449 }, 2450 true 2451 ); 2452 2453 2454 document.addEventListener( 2455 'click', 2456 function (event) { 2457 2458 const button = 2459 event.target.closest( 2460 'button[type="submit"], ' + 2461 'input[type="submit"], ' + 2462 '.search-submit, ' + 2463 '.search-button, ' + 2464 '.search-btn, ' + 2465 '[class*="search-submit"], ' + 2466 '[class*="search-button"]' 2467 ); 2468 2469 2470 if (!button) { 2471 return; 2472 } 2473 2474 2475 const container = 2476 button.closest('form') || 2477 button.closest( 2478 '[role="search"]' 2479 ) || 2480 button.parentElement; 2481 2482 2483 let input = null; 2484 2485 2486 if (container) { 2487 2488 input = 2489 getSearchInput( 2490 container 2491 ); 2492 } 2493 2494 2495 if (!input) { 2496 2497 input = 2498 getSearchInput( 2499 document 2500 ); 2501 } 2502 2503 2504 if ( 2505 !input || 2506 !input.value.trim() 2507 ) { 2508 return; 2509 } 2510 2511 2512 closeDropdown(); 2513 2514 scheduleSearchLoader( 2515 input 2516 ); 2517 2518 }, 2519 true 2520 ); 2521 2522 2523 window.addEventListener( 2524 'resize', 2525 function () { 2526 2527 if ( 2528 currentInput && 2529 dropdown.classList.contains( 2530 'is-active' 2531 ) 2532 ) { 2533 2534 positionDropdown( 2535 currentInput 2536 ); 2537 } 2538 2539 } 2540 ); 2541 2542 2543 window.addEventListener( 2544 'scroll', 2545 function () { 2546 2547 if ( 2548 currentInput && 2549 dropdown.classList.contains( 2550 'is-active' 2551 ) 2552 ) { 2553 2554 positionDropdown( 2555 currentInput 2556 ); 2557 } 2558 2559 }, 2560 true 2561 ); 2562 2563 2564 window.addEventListener( 2565 'pageshow', 2566 function () { 2567 2568 clearTimeout( 2569 loaderTimer 2570 ); 2571 2572 loader.classList.remove( 2573 'is-active' 2574 ); 2575 2576 loader.setAttribute( 2577 'aria-hidden', 2578 'true' 2579 ); 2580 2581 closeDropdown(); 2582 2583 } 2584 ); 2585 2586 } 2587 2588 if (document.readyState === 'loading') { 2589 document.addEventListener( 2590 'DOMContentLoaded', 2591 toolsheroComLiveSearchInit, 2592 { once: true } 2593 ); 2594 } else { 2595 toolsheroComLiveSearchInit(); 2596 } 2597 2598 </script>
2598 2599 2600 2601 <style id="toolshero-com-content-protection-css"> 2602 2603 /* ============================== 2604 * OVERLAY 2605 * ============================== */ 2606 2607 #th-protection-overlay { 2608 2609 position: fixed; 2610 inset: 0; 2611 2612 z-index: 999999; 2613 2614 display: flex; 2615 align-items: center; 2616 justify-content: center; 2617 2618 padding: 20px; 2619 2620 background: rgba(20, 25, 28, 0.52); 2621 2622 -webkit-backdrop-filter: blur(2px); 2623 backdrop-filter: blur(2px); 2624 2625 opacity: 0; 2626 visibility: hidden; 2627 pointer-events: none; 2628 2629 transition: 2630 opacity .18s ease, 2631 visibility .18s ease; 2632 } 2633 2634 2635 #th-protection-overlay.th-is-visible { 2636 2637 opacity: 1; 2638 visibility: visible; 2639 pointer-events: auto; 2640 } 2641 2642 2643 2644 /* ============================== 2645 * POPUP 2646 * ============================== */ 2647 2648 #th-protection-modal { 2649 2650 position: relative; 2651 2652 width: 100%; 2653 max-width: 450px; 2654 2655 box-sizing: border-box; 2656 2657 padding: 32px 30px 26px; 2658 2659 background: #ffffff; 2660 2661 border-radius: 12px; 2662 2663 box-shadow: 2664 0 20px 60px rgba(0, 0, 0, .18), 2665 0 4px 15px rgba(0, 0, 0, .08); 2666 2667 text-align: center; 2668 2669 color: #202124; 2670 2671 transform: translateY(8px) scale(.98); 2672 2673 transition: 2674 transform .18s ease; 2675 } 2676 2677 2678 #th-protection-overlay.th-is-visible 2679 #th-protection-modal { 2680 2681 transform: translateY(0) scale(1); 2682 } 2683 2684 2685 2686 /* ============================== 2687 * ICON 2688 * ============================== */ 2689 2690 .th-protection-icon { 2691 2692 width: 56px; 2693 height: 56px; 2694 2695 margin: 0 auto 18px; 2696 2697 display: flex; 2698 align-items: center; 2699 justify-content: center; 2700 2701 border-radius: 50%; 2702 2703 background: #eefbf4; 2704 color: #27c875; 2705 } 2706 2707 2708 .th-protection-icon svg { 2709 2710 width: 26px; 2711 height: 26px; 2712 2713 display: block; 2714 } 2715 2716 2717 2718 /* ============================== 2719 * TITLE 2720 * ============================== */ 2721 2722 #th-protection-title { 2723 2724 margin: 0 0 12px; 2725 2726 padding: 0; 2727 2728 font-size: 23px; 2729 line-height: 1.3; 2730 font-weight: 700; 2731 2732 color: #202124; 2733 } 2734 2735 2736 2737 /* ============================== 2738 * TEXT 2739 * ============================== */ 2740 2741 .th-protection-text { 2742 2743 max-width: 375px; 2744 2745 margin: 0 auto 23px; 2746 2747 font-size: 15px; 2748 line-height: 1.65; 2749 2750 color: #555555; 2751 } 2752 2753 2754 2755 /* ============================== 2756 * PRIMARY CTA 2757 * ============================== */ 2758 2759 #th-protection-subscribe { 2760 2761 width: 100%; 2762 min-height: 48px; 2763 2764 display: flex; 2765 align-items: center; 2766 justify-content: center; 2767 2768 box-sizing: border-box; 2769 2770 margin: 0 0 7px; 2771 padding: 0 24px; 2772 2773 border: 0; 2774 border-radius: 7px; 2775 2776 background: #35d47c; 2777 color: #111111; 2778 2779 font-size: 15px; 2780 font-weight: 700; 2781 line-height: 1.2; 2782 2783 text-decoration: none; 2784 2785 cursor: pointer; 2786 2787 transition: 2788 transform .15s ease, 2789 filter .15s ease, 2790 box-shadow .15s ease; 2791 } 2792 2793 2794 #th-protection-subscribe:hover { 2795 2796 background: #35d47c; 2797 color: #111111; 2798 2799 text-decoration: none; 2800 2801 filter: brightness(.96); 2802 2803 transform: translateY(-1px); 2804 2805 box-shadow: 2806 0 5px 14px rgba(0, 0, 0, .10); 2807 } 2808 2809 2810 #th-protection-subscribe:focus-visible { 2811 2812 outline: 3px solid rgba(53, 212, 124, .30); 2813 2814 outline-offset: 3px; 2815 } 2816 2817 2818 2819 /* ============================== 2820 * SECONDARY BUTTON 2821 * ============================== */ 2822 2823 #th-protection-close { 2824 2825 min-height: 40px; 2826 2827 padding: 0 18px; 2828 2829 border: 0; 2830 border-radius: 6px; 2831 2832 background: transparent; 2833 color: #666666; 2834 2835 font-size: 14px; 2836 font-weight: 600; 2837 2838 cursor: pointer; 2839 2840 transition: 2841 background .15s ease, 2842 color .15s ease; 2843 } 2844 2845 2846 #th-protection-close:hover { 2847 2848 background: #f4f5f5; 2849 2850 color: #222222; 2851 } 2852 2853 2854 #th-protection-close:focus-visible { 2855 2856 outline: 2px solid #35d47c; 2857 2858 outline-offset: 2px; 2859 } 2860 2861 2862 2863 /* ============================== 2864 * CLOSE BUTTON 2865 * ============================== */ 2866 2867 #th-protection-x { 2868 2869 position: absolute; 2870 2871 top: 12px; 2872 right: 13px; 2873 2874 width: 36px; 2875 height: 36px; 2876 2877 display: flex; 2878 align-items: center; 2879 justify-content: center; 2880 2881 padding: 0; 2882 2883 border: 0; 2884 border-radius: 50%; 2885 2886 background: transparent; 2887 color: #777777; 2888 2889 font-size: 25px; 2890 font-weight: 400; 2891 line-height: 1; 2892 2893 cursor: pointer; 2894 2895 transition: 2896 background .15s ease, 2897 color .15s ease; 2898 } 2899 2900 2901 #th-protection-x:hover { 2902 2903 background: #f3f4f5; 2904 2905 color: #111111; 2906 } 2907 2908 2909 2910 /* ============================== 2911 * MOBILE 2912 * ============================== */ 2913 2914 @media (max-width: 600px) { 2915 2916 #th-protection-overlay { 2917 2918 padding: 16px; 2919 } 2920 2921 2922 #th-protection-modal { 2923 2924 max-width: 100%; 2925 2926 padding: 2927 30px 2928 21px 2929 23px; 2930 } 2931 2932 2933 #th-protection-title { 2934 2935 font-size: 21px; 2936 } 2937 2938 2939 .th-protection-text { 2940 2941 font-size: 15px; 2942 } 2943 2944 } 2945 2946 </style> 2947 2948 2949 2950 <div 2951 id="th-protection-overlay" 2952 aria-hidden="true" 2953 > 2954 2955 <div 2956 id="th-protection-modal" 2957 role="dialog" 2958 aria-modal="true" 2959 aria-labelledby="th-protection-title" 2960 aria-describedby="th-protection-description" 2961 > 2962 2963 2964 <button 2965 id="th-protection-x" 2966 type="button" 2967 aria-label="Close" 2968 > 2969 × 2970 </button> 2971 2972 2973 2974 <div 2975 class="th-protection-icon" 2976 aria-hidden="true" 2977 > 2978 2979 <svg
2980 viewBox="0 0 24 24" 2981 fill="none" 2982 stroke="currentColor" 2983 stroke-width="2" 2984 stroke-linecap="round" 2985 stroke-linejoin="round" 2986 > 2987 2988 <rect 2989 x="5" 2990 y="11" 2991 width="14" 2992 height="10" 2993 rx="2" 2994 ></rect> 2995 2996 <path 2997 d="M8 11V7a4 4 0 0 1 8 0v4" 2998 ></path> 2999 3000 </svg> 3001 3002 </div> 3003 3004 3005 3006 <h2 id="th-protection-title"> 3007 Want to copy and use this content? 3008 </h2> 3009 3010 3011 3012 <p 3013 id="th-protection-description" 3014 class="th-protection-text" 3015 > 3016 3017 3018 Want to select, copy and use Toolshero content 3019 for your work, studies or training? 3020 You need a Toolshero subscription to do so. 3021 3022 3023 </p> 3024 3025 3026 3027 <a 3028 id="th-protection-subscribe" 3029 href="https://www.toolshero.com/subscribe/" 3030 > 3031 View subscriptions 3032 </a> 3033 3034 3035 3036 <button 3037 id="th-protection-close" 3038 type="button" 3039 > 3040 Not now 3041 </button> 3042 3043 3044 </div> 3045 3046 </div> 3047 3048 3049 3050
3050<script id="toolshero-com-content-protection-js"> 3051 3052 (function () { 3053 3054 'use strict'; 3055 3056 3057 /* 3058 * Content areas to protect. 3059 */ 3060 const protectedSelector = [ 3061 3062 'article', 3063 '.entry-content', 3064 '.post-content', 3065 '.article-content', 3066 '.single-content', 3067 '.page-content', 3068 '.tag-description' 3069 3070 ].join(','); 3071 3072 3073 3074 /* 3075 * Elements that must remain fully usable. 3076 */ 3077 const ignoreSelector = [ 3078 3079 'input', 3080 'textarea', 3081 'select', 3082 'option', 3083 'button', 3084 '[contenteditable="true"]', 3085 3086 '#th-protection-modal', 3087 '#th-protection-modal *' 3088 3089 ].join(','); 3090 3091 3092 3093 const overlay = 3094 document.getElementById( 3095 'th-protection-overlay' 3096 ); 3097 3098 3099 const closeButton = 3100 document.getElementById( 3101 'th-protection-close' 3102 ); 3103 3104 3105 const closeX = 3106 document.getElementById( 3107 'th-protection-x' 3108 ); 3109 3110 3111 let previousFocus = null; 3112 let lastShown = 0; 3113 3114 3115 3116 /* 3117 * ========================================== 3118 * HELPERS 3119 * ========================================== 3120 */ 3121 3122 function getElement(target) { 3123 3124 if (!target) { 3125 return null; 3126 } 3127 3128 3129 if ( 3130 target.nodeType === Node.ELEMENT_NODE 3131 ) { 3132 3133 return target; 3134 } 3135 3136 3137 return target.parentElement || null; 3138 } 3139 3140 3141 3142 function isIgnored(target) { 3143 3144 const element = getElement(target); 3145 3146 3147 if (!element) { 3148 return false; 3149 } 3150 3151 3152 return Boolean( 3153 element.closest(ignoreSelector) 3154 ); 3155 } 3156 3157 3158 3159 function isProtectedContent(target) { 3160 3161 const element = getElement(target); 3162 3163 3164 if ( 3165 !element || 3166 isIgnored(element) 3167 ) { 3168 3169 return false; 3170 } 3171 3172 3173 return Boolean( 3174 element.closest(protectedSelector) 3175 ); 3176 } 3177 3178 3179 3180 function selectionIsProtected() { 3181 3182 const selection = 3183 window.getSelection(); 3184 3185 3186 if ( 3187 !selection || 3188 selection.rangeCount === 0 3189 ) { 3190 3191 return false; 3192 } 3193 3194 3195 const anchor = 3196 getElement( 3197 selection.anchorNode 3198 ); 3199 3200 3201 const focus = 3202 getElement( 3203 selection.focusNode 3204 ); 3205 3206 3207 return Boolean( 3208 3209 ( 3210 anchor && 3211 anchor.closest( 3212 protectedSelector 3213 ) 3214 ) 3215 3216 || 3217 3218 ( 3219 focus && 3220 focus.closest( 3221 protectedSelector 3222 ) 3223 ) 3224 3225 ); 3226 } 3227 3228 3229 3230 /* 3231 * ========================================== 3232 * OPEN POPUP 3233 * ========================================== 3234 */ 3235 3236 function showProtectionMessage() { 3237 3238 if (!overlay) { 3239 return; 3240 } 3241 3242 3243 const now = Date.now(); 3244 3245 3246 if ( 3247 now - lastShown < 600 && 3248 overlay.classList.contains( 3249 'th-is-visible' 3250 ) 3251 ) { 3252 3253 return; 3254 } 3255 3256 3257 lastShown = now; 3258 3259 3260 previousFocus = 3261 document.activeElement; 3262 3263 3264 overlay.classList.add( 3265 'th-is-visible' 3266 ); 3267 3268 3269 overlay.setAttribute( 3270 'aria-hidden', 3271 'false' 3272 ); 3273 3274 3275 document.documentElement.style.overflow = 3276 'hidden'; 3277 3278 3279 window.setTimeout( 3280 function () { 3281 3282 if (closeButton) { 3283 closeButton.focus(); 3284 } 3285 3286 }, 3287 50 3288 ); 3289 } 3290 3291 3292 3293 /* 3294 * ========================================== 3295 * CLOSE POPUP 3296 * ========================================== 3297 */ 3298 3299 function closeProtectionMessage() { 3300 3301 if (!overlay) { 3302 return; 3303 } 3304 3305 3306 overlay.classList.remove( 3307 'th-is-visible' 3308 ); 3309 3310 3311 overlay.setAttribute( 3312 'aria-hidden', 3313 'true' 3314 ); 3315 3316 3317 document.documentElement.style.overflow = 3318 ''; 3319 3320 3321 if ( 3322 previousFocus && 3323 typeof previousFocus.focus === 3324 'function' 3325 ) { 3326 3327 previousFocus.focus(); 3328 } 3329 } 3330 3331 3332 3333 /* 3334 * ========================================== 3335 * RIGHT CLICK 3336 * ========================================== 3337 */ 3338 3339 document.addEventListener( 3340 'contextmenu', 3341 function (event) { 3342 3343 if (isIgnored(event.target)) { 3344 return; 3345 } 3346 3347 3348 event.preventDefault(); 3349 3350 showProtectionMessage(); 3351 3352 }, 3353 true 3354 ); 3355 3356 3357 3358 /* 3359 * ========================================== 3360 * TEXT SELECTION 3361 * ========================================== 3362 */ 3363 3364 document.addEventListener( 3365 'selectstart', 3366 function (event) { 3367 3368 if ( 3369 !isProtectedContent( 3370 event.target 3371 ) 3372 ) { 3373 3374 return; 3375 } 3376 3377 3378 event.preventDefault(); 3379 3380 showProtectionMessage(); 3381 3382 }, 3383 true 3384 ); 3385 3386 3387 3388 /* 3389 * ========================================== 3390 * COPY 3391 * ========================================== 3392 */ 3393 3394 document.addEventListener( 3395 'copy', 3396 function (event) { 3397 3398 if ( 3399 !selectionIsProtected() 3400 ) { 3401 3402 return; 3403 } 3404 3405 3406 event.preventDefault(); 3407 3408 3409 const selection = 3410 window.getSelection(); 3411 3412 3413 if (selection) { 3414 3415 selection.removeAllRanges(); 3416 } 3417 3418 3419 showProtectionMessage(); 3420 3421 }, 3422 true 3423 ); 3424 3425 3426 3427 /* 3428 * ========================================== 3429 * CUT 3430 * ========================================== 3431 */ 3432 3433 document.addEventListener( 3434 'cut', 3435 function (event) { 3436 3437 if ( 3438 !selectionIsProtected() 3439 ) { 3440 3441 return; 3442 } 3443 3444 3445 event.preventDefault(); 3446 3447 showProtectionMessage(); 3448 3449 }, 3450 true 3451 ); 3452 3453 3454 3455 /* 3456 * ========================================== 3457 * KEYBOARD SHORTCUTS 3458 * ========================================== 3459 */ 3460 3461 document.addEventListener( 3462 'keydown', 3463 function (event) { 3464
3465 const key = 3466 String( 3467 event.key 3468 ).toLowerCase(); 3469 3470 3471 const ctrlOrCommand = 3472 event.ctrlKey || 3473 event.metaKey; 3474 3475 3476 3477 /* 3478 * F12 3479 */ 3480 if ( 3481 event.key === 'F12' 3482 ) { 3483 3484 event.preventDefault(); 3485 3486 event.stopPropagation(); 3487 3488 showProtectionMessage(); 3489 3490 return; 3491 } 3492 3493 3494 3495 /* 3496 * View Source: 3497 * Ctrl + U / Cmd + U 3498 */ 3499 if ( 3500 ctrlOrCommand && 3501 key === 'u' 3502 ) { 3503 3504 event.preventDefault(); 3505 3506 event.stopPropagation(); 3507 3508 showProtectionMessage(); 3509 3510 return; 3511 } 3512 3513 3514 3515 /* 3516 * Common Developer Tools shortcuts. 3517 */ 3518 if ( 3519 ctrlOrCommand && 3520 event.shiftKey && 3521 ['i', 'j', 'c', 'k'].includes( 3522 key 3523 ) 3524 ) { 3525 3526 event.preventDefault(); 3527 3528 event.stopPropagation(); 3529 3530 showProtectionMessage(); 3531 3532 return; 3533 } 3534 3535 3536 3537 /* 3538 * macOS Developer Tools. 3539 */ 3540 if ( 3541 event.metaKey && 3542 event.altKey && 3543 ['i', 'j', 'c'].includes( 3544 key 3545 ) 3546 ) { 3547 3548 event.preventDefault(); 3549 3550 event.stopPropagation(); 3551 3552 showProtectionMessage(); 3553 3554 return; 3555 } 3556 3557 3558 3559 /* 3560 * ESC closes popup. 3561 */ 3562 if ( 3563 event.key === 'Escape' && 3564 overlay && 3565 overlay.classList.contains( 3566 'th-is-visible' 3567 ) 3568 ) { 3569 3570 closeProtectionMessage(); 3571 } 3572 3573 }, 3574 true 3575 ); 3576 3577 3578 3579 /* 3580 * ========================================== 3581 * POPUP CONTROLS 3582 * ========================================== 3583 */ 3584 3585 if (closeButton) { 3586 3587 closeButton.addEventListener( 3588 'click', 3589 closeProtectionMessage 3590 ); 3591 } 3592 3593 3594 if (closeX) { 3595 3596 closeX.addEventListener( 3597 'click', 3598 closeProtectionMessage 3599 ); 3600 } 3601 3602 3603 3604 /* 3605 * Clicking outside the popup closes it. 3606 */ 3607 if (overlay) { 3608 3609 overlay.addEventListener( 3610 'click', 3611 function (event) { 3612 3613 if ( 3614 event.target === overlay 3615 ) { 3616 3617 closeProtectionMessage(); 3618 } 3619 3620 } 3621 ); 3622 } 3623 3624 3625 })(); 3626 3627 </script>
3627 3628 3629
3629<script> 3630 (function () { 3631 3632 const LOGIN_PATH = '/login-subscriber/'; 3633 3634 function normalizePath(path) { 3635 if (!path) { 3636 return '/'; 3637 } 3638 3639 path = path.replace(/\/+$/, ''); 3640 3641 return path || '/'; 3642 } 3643 3644 3645 function updateLoginLink(link) { 3646 3647 if (!link || !link.href) { 3648 return; 3649 } 3650 3651 let loginUrl; 3652 3653 try { 3654 loginUrl = new URL(link.href, window.location.href); 3655 } catch (e) { 3656 return; 3657 } 3658 3659 // Alleen links op hetzelfde domein. 3660 if (loginUrl.origin !== window.location.origin) { 3661 return; 3662 } 3663 3664 // Alleen de Toolshero.com MemberPress loginpagina. 3665 if ( 3666 normalizePath(loginUrl.pathname) !== 3667 normalizePath(LOGIN_PATH) 3668 ) { 3669 return; 3670 } 3671 3672 // Niet uitvoeren als we al op de loginpagina staan. 3673 if ( 3674 normalizePath(window.location.pathname) === 3675 normalizePath(LOGIN_PATH) 3676 ) { 3677 return; 3678 } 3679 3680 // Huidige volledige URL als retouradres meegeven. 3681 loginUrl.searchParams.set( 3682 'redirect_to', 3683 window.location.href 3684 ); 3685 3686 link.href = loginUrl.toString(); 3687 } 3688 3689 3690 /** 3691 * Direct alle bestaande loginlinks aanpassen. 3692 */ 3693 function updateAllLoginLinks() { 3694 3695 document.querySelectorAll('a[href]').forEach(function (link) { 3696 updateLoginLink(link); 3697 }); 3698 } 3699 3700 3701 if (document.readyState === 'loading') { 3702 3703 document.addEventListener( 3704 'DOMContentLoaded', 3705 updateAllLoginLinks 3706 ); 3707 3708 } else { 3709 3710 updateAllLoginLinks(); 3711 } 3712 3713 3714 /** 3715 * Extra controle op het moment van klikken. 3716 * 3717 * Hierdoor werkt het ook wanneer het menu later 3718 * dynamisch door het thema wordt geladen. 3719 */ 3720 document.addEventListener( 3721 'click', 3722 function (event) { 3723 3724 const link = event.target.closest('a[href]'); 3725 3726 if (!link) { 3727 return; 3728 } 3729 3730 updateLoginLink(link); 3731 3732 }, 3733 true 3734 ); 3735 3736 3737 /** 3738 * Ook pointerdown gebruiken zodat de URL al aangepast 3739 * is vóór de daadwerkelijke navigatie. 3740 */ 3741 document.addEventListener( 3742 'pointerdown', 3743 function (event) { 3744 3745 const link = event.target.closest('a[href]'); 3746 3747 if (!link) { 3748 return; 3749 } 3750 3751 updateLoginLink(link); 3752 3753 }, 3754 true 3755 ); 3756 3757 })(); 3758 </script>
3758 3759 3760 3761</body> 3762</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.