Skip to main content

Het DPM-lidmaatschap

Of je nu projectmanager bent bij een bureau, zelfstandig werkt, een team leidt of verantwoordelijk bent voor operationeel management—dit is voor jou. 

Sluit je aan bij de collectieve community om je carrière naar een hoger niveau te tillen met certificeringen, een community en een verzameling hulpmiddelen.

  • Actieve en ondersteunende Slack-community
  • Liveleersessies om de twee weken
  • 60+ minicursussen en opgenomen webinars
  • 100+ sjablonen en hulpmiddelen
  • Mastermindgroepen voor mentoring door peers
  • 25% korting op ons door PMI goedgekeurde certificeringsprogramma

Dit alles voor slechts $216/jaar USD voor individuen.
Vraag naar team- of bureauprijzen.

.page-id-92314 { background-color: var(--color-background-light) !important; } .page-id-92314 .mp_wrapper { margin: 0 !important; padding: 0 !important; } .page-id-92314 .mepr-form { margin: 0 !important; } .page-id-92314 .special-title { font-size: var(--font-size-heading-small) !important; font-weight: var(--font-weight-semibold) !important; } .page-id-92314 .price-highlight { margin-top: 20px !important; font-size: 16px !important; display: flex; justify-content: space-between; gap: var(--spacer-20); padding: var(--spacer-20) !important; background: var(--color-white); border-radius: var(--border-radius-media); } .page-id-92314 .mepr-transaction-invoice-wrapper { padding-top: 0 !important; } .page-id-92314 .special-form .wp-block-list { padding-left: 24px !important; } @media (min-width: 768px) { .page-id-92314 .special-form .wp-block-list { padding-left: 4px !important; } } .page-id-92314 .site-header__search-wrap, .page-id-92314 .site-header__button, .page-id-92314 .site-header__navigation-wrap, .page-id-92314 .site-header__utility-nav, .page-id-92314 .membership-navigation, .page-id-92314 .site-header__scroll-nav-cta-wrapper, .page-id-92314 footer { display: none !important; } .page-id-92314 .site-header__logo-wrap { padding-top: 0; } .page-id-92314 [data-js=site-wrap] { margin-top: 0 !important; } @media (min-width: 768px) { .page-id-92314 .special-title { font-size: 24px !important; font-weight: var(--font-weight-semibold) !important; margin-bottom: var(--spacer-30) !important; } .page-id-92314 .special-form p, .page-id-92314 .special-form li { font-size: 16px; margin-bottom: var(--spacer-20); } .page-id-92314 .special-form ul { margin-top: var(--spacer-20); margin-bottom: var(--spacer-20); } .page-id-92314 .special-form li { margin-left: var(--spacer-20); } .page-id-92314 .site-header__logo-wrap { padding-top: 15px !important; } .page-id-92314 .l-sink>.wp-block-group { padding-top: 90px !important; padding-bottom: 90px !important; } } @media (min-width: 1200px) { .page-id-92314.scroll-down .site-header { padding-top: 0 !important; padding-bottom: 0 !important; } } .mp_wrapper { padding: 0 !important; margin: 0 !important; } @media (min-width: 960px) { .b-columns__grid--2-cols { grid-template-columns: 0.43fr 0.57fr !important; grid-column-gap: var(--spacer-70) !important; } } .form-steps-nav { margin-bottom: 48px; } .form-steps-nav ul { display: flex; justify-content: space-evenly; align-items: start; list-style: none; padding: 0; margin: 0; gap: 0; position: relative; padding-left: 0 !important; } /* Lijn tussen stappen */ .form-steps-nav ul::before { content: ''; position: absolute; top: 15px; /* Uitlijnen met het midden van de cirkels */ left: 50%; transform: translateX(-50%); width: 100%; height: 1px; background: #E5E7EB; z-index: 0; } .form-steps-nav li { display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--color-neutral-90); font-size: 14px; font-weight: 500; z-index: 1; width: 120px; /* Vaste breedte voor gelijkmatige tussenruimte */ text-align: center; } /* Cirkels met nummers */ .form-steps-nav li::before { content: attr(data-step); width: 30px; height: 30px; border-radius: 8px; background: #fff; border: 2px solid var(--color-neutral-90); display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 16px; margin-bottom: 4px; } /* Actieve status */ .form-steps-nav li.active::before { background: var(--color-primary); border-color: var(--color-primary); color: white; } .form-steps-nav li.active { color: var(--color-neutral-90); font-weight: 700; } /* Responsieve aanpassingen */ @media (max-width: 768px) { .step-1, .step-2 .mp-form-row:has([type="password"]) { grid-template-columns: 1fr; } .form-steps-nav ul { } .form-steps-nav ul::before { top: 22px; } .form-steps-nav li { font-size: 12px; padding: 6px 12px; } } /* Klassen voor essentiële stapfunctionaliteit */ .form-steps-wrapper { position: relative; min-height: 300px; } .form-step { display: none; opacity: 0; transition: opacity 0.3s ease; width:100%; margin: 0 auto; } .form-step.active { display: block; opacity: 1; } .form-steps-navigation { margin-top: 40px; } .nav-buttons { display: flex; justify-content: space-between; gap: 16px; } .prev-btn, .next-btn, input[type="submit"] { padding: 12px 32px; border: none; border-radius: 24px; cursor: pointer; font-weight: 500; font-size: 16px; transition: all 0.2s ease; } .prev-btn { background: transparent; border: 1px solid var(--color-primary); color: var(--color-primary); } .next-btn, input[type="submit"] { background: var(--color-primary); color: white; margin-left: auto; } .prev-btn:hover, .next-btn:hover, input[type="submit"]:hover { opacity: 0.9; transform: translateY(-1px); } /* Stijlen voor formuliervelden */ .mp-form-row { margin-bottom: 24px; } .mp-form-label { display: block; margin-bottom: 8px; font-weight: 500; } .mepr-form-input { width: 100%; padding: 12px; border: 1px solid #e1e1e1; border-radius: 8px; font-size: 16px; } input.invalid { border-color: #ff3d5b !important; } .validation-error { color: #ff3d5b; font-size: 14px; margin-top: 4px; } /* Stijlen voor kortingsbonlink */ .have-coupon-link { color: var(--color-primary); text-decoration: none; font-weight: 500; display: inline-block; margin-top: 16px; } /* Indeling met twee kolommen voor de eerste stap */ .step-1.active { display: grid; grid-template-columns: 1fr; gap: 24px; row-gap: 0; @media (min-width: 960px) { grid-template-columns: 1fr 1fr; } } .mp_invoice .mp-table thead { display: none !important; } .mp_invoice { background: var(--color-neutral-0); padding: 16px !important; border-radius: 8px; overflow: hidden; } .mp_invoice .mp-table, .mp_invoice .mp-table * { background: var(--color-neutral-0); border: 0 !important; font-size: 16px !important; } .mp_invoice .mp-table { padding: 0 !important; margin: 0 !important; } .price-highlight .mepr-invoice-loader { display: none !important; } document.addEventListener('DOMContentLoaded', function() { // Wacht tot zowel de DOM als Stripe gereed zijn const waitForStripe = new Promise((resolve) => { if (window.MeprStripeGateway) { resolve(); } else { // Wacht tot Stripe is geïnitialiseerd const stripeCheck = setInterval(() => { if (window.MeprStripeGateway) { clearInterval(stripeCheck); resolve(); } }, 100); } }); waitForStripe.then(() => { initializeMultiStepForm(); }); function initializeMultiStepForm() { const form = document.querySelector('.mepr-signup-form'); if (!form) return; // Verberg het formulier aanvankelijk tijdens de configuratie form.style.display = 'none'; // Sla de oorspronkelijke verzendknop op voordat er wijzigingen worden aangebracht const originalSubmitBtn = form.querySelector('input[type="submit"]'); const submitBtnValue = originalSubmitBtn ? originalSubmitBtn.value : 'Verzenden'; const submitBtnClasses = originalSubmitBtn ? originalSubmitBtn.className : ''; // Verwijder bestaande navigatie const existingNav = document.querySelector('.form-steps-nav'); if (existingNav) existingNav.remove(); // Maak de stappennavigatie const stepsNav = document.createElement('div'); stepsNav.className = 'form-steps-nav'; stepsNav.innerHTML = `
  • Persoonlijke gegevens
  • Inloggegevens
  • Betaling
`; form.parentNode.insertBefore(stepsNav, form); // Maak containers voor elke stap const formSteps = document.createElement('div'); formSteps.className = 'form-steps-wrapper'; const step1 = document.createElement('div'); step1.className = 'form-step step-1 active'; const step2 = document.createElement('div'); step2.className = 'form-step step-2'; const step3 = document.createElement('div'); step3.className = 'form-step step-3'; // Maak een nieuwe verzendknop met de oorspronkelijke eigenschappen const submitBtn = document.createElement('input'); submitBtn.type = 'submit'; submitBtn.value = submitBtnValue; submitBtn.className = submitBtnClasses + ' next-btn'; submitBtn.style.display = 'none'; // Sla verwijzingen naar de e-mail- en gebruikersnaamvelden op voordat ze worden verplaatst const emailInput = form.querySelector('[name="user_email"]'); const usernameInput = form.querySelector('[name="user_login"]'); // Verplaats de synchronisatielogica voor e-mail en gebruikersnaam naar boven, voordat de velden worden verplaatst if (emailInput && usernameInput) { // Verberg de volledige gebruikersnaamcontainer const usernameContainer = usernameInput.closest('.mp-form-row'); if (usernameContainer) { usernameContainer.style.display = 'none'; } // Werk de gebruikersnaam bij wanneer het e-mailadres verandert (bij invoer en bij het verlaten van het veld) emailInput.addEventListener('input', (e) => { usernameInput.value = e.target.value; }); emailInput.addEventListener('blur', (e) => { usernameInput.value = e.target.value; }); } // Verplaats velden naar hun respectieve containers const personalFields = form.querySelectorAll([ '[id*="user_first_name"]', '[id*="user_last_name"]', '[id*="mepr-address-one"]', '[id*="mepr-address-two"]', '[id*="mepr-address-city"]', '[id*="mepr-address-country"]', '[id*="mepr-address-state"]', '[id*="mepr-address-zip"]' ].join(',')); const paymentFields = form.querySelectorAll([ '.mepr-transaction-invoice-wrapper', '.mepr-payment-methods-wrapper', '.have-coupon-link', '.mp-form-row.mepr_coupon', '.mp-form-row.mepr_tos' ].join(',')); const accountFields = form.querySelectorAll([ '[name="user_email"]', '[name="mepr_user_password"]', '[name="mepr_user_password_confirm"]', '[name="user_login"]' ].join(',')); // Verplaats velden naar hun respectieve containers personalFields.forEach(field => { const row = field.closest('.mp-form-row'); if (row) step1.appendChild(row); }); accountFields.forEach(field => { const row = field.closest('.mp-form-row'); if (row) step2.appendChild(row); }); paymentFields.forEach(field => { step3.appendChild(field); }); // Verberg de prijstabel const pricingNewPosition = document.querySelector('.price-highlight'); const pricingTable = step3.querySelector('.mepr-transaction-invoice-wrapper'); console.log(pricingTable); if (pricingTable) { const clonedPricingTable = pricingTable.cloneNode(true); pricingNewPosition.appendChild(clonedPricingTable); pricingTable.style.display = 'none'; const observer = new MutationObserver(() => { clonedPricingTable.innerHTML = pricingTable.innerHTML; }); observer.observe(pricingTable, { childList: true, // Observeer wijzigingen in onderliggende elementen subtree: true, // Observeer diepere wijzigingen in de DOM-structuur attributes: true, // Observeer wijzigingen in attributen }); } // Voeg stappen in de juiste volgorde toe aan het formulier formSteps.appendChild(step1); // Persoonlijke gegevens formSteps.appendChild(step2); // Inloggegevens formSteps.appendChild(step3); // Betaling // Wis de oorspronkelijke formulierinhoud, behalve verborgen velden const hiddenFields = Array.from(form.querySelectorAll('input[type="hidden"]')); form.innerHTML = ''; hiddenFields.forEach(field => form.appendChild(field)); form.appendChild(formSteps); // Maak navigatieknoppen const navigation = document.createElement('div'); navigation.className = 'form-steps-navigation'; const navButtons = document.createElement('div'); navButtons.className = 'nav-buttons'; navButtons.innerHTML = ` `; navButtons.appendChild(submitBtn); navigation.appendChild(navButtons); form.appendChild(navigation); // Navigatiefunctionaliteit let currentStep = 1; const prevBtn = navigation.querySelector('.prev-btn'); const nextBtn = navigation.querySelector('.next-btn'); function validateStep(step) { const currentStepElement = form.querySelector(`.step-${step}`); const requiredFields = currentStepElement.querySelectorAll('.mepr-form-input:required, .mp-form-row.required input:not([type="hidden"]), .mp-form-row.required select'); let isValid = true; requiredFields.forEach(field => { if (!field.value.trim()) { isValid = false; field.classList.add('invalid'); const row = field.closest('.mp-form-row'); if (row && !row.querySelector('.validation-error')) { const error = document.createElement('div'); error.className = 'validation-error'; error.textContent = 'Dit veld is verplicht'; row.appendChild(error); } } else { field.classList.remove('invalid'); const row = field.closest('.mp-form-row'); const error = row?.querySelector('.validation-error'); if (error) error.remove(); } }); return isValid; } function updateNavigation() { prevBtn.style.display = currentStep === 1 ? 'none' : 'block'; const submitBtn = navigation.querySelector('input[type="submit"]'); // Verberg op de laatste stap de knop Volgende en toon de verzendknop if (currentStep === 3) { nextBtn.style.display = 'none'; if (submitBtn) { submitBtn.style.display = 'inline-block'; } } else { nextBtn.style.display = 'block'; if (submitBtn) { submitBtn.style.display = 'none'; } } document.querySelector('#register').scrollIntoView(); // Werk de stappennavigatie bij document.querySelectorAll('.form-steps-nav li').forEach(li => { li.classList.remove('active'); if (parseInt(li.dataset.step) === currentStep) { li.classList.add('active'); } }); } function showStep(step) { document.querySelectorAll('.form-step').forEach(s => { s.classList.remove('active'); }); document.querySelector(`.step-${step}`).classList.add('active'); currentStep = step; updateNavigation(); } prevBtn.addEventListener('click', () => { if (currentStep > 1) { showStep(currentStep - 1); } }); nextBtn.addEventListener('click', () => { if (validateStep(currentStep)) { if (currentStep < 3) { showStep(currentStep + 1); } } }); // Toon het formulier nadat de configuratie is voltooid form.style.display = 'block'; // Voeg dit toe nadat het formulier is geïnitialiseerd form.addEventListener('keypress', function(e) { if (e.key === 'Enter') { e.preventDefault(); return false; } }); } });