Help
RSS
API
Feed
Maltego
Contact
Domain > ansibleconsulting.co.za
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-11-24
104.21.47.33
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Mon, 24 Nov 2025 17:36:01 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Location: https://ansibleconsulting.co.za/cf-cache-status: DYNAMICReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?spU4YXU%2BdEvmKUa7zdPyqj%2BsJlVgA0SiJt5rW04NBXgC%2FauoXm4WOXVhAWwWTTuxFLBf4ex7GSCK%2FAkY8nMzCFMvzosGKYucRtJHC79Yo%2FTtpI4joWg%3D%3D}}CF-RAY: 9a3aaa848fac5ebf-PDXalt-svc: h3:443; ma86400 html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>nginx/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Mon, 24 Nov 2025 17:36:02 GMTContent-Type: text/html;charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Vary: Accept-EncodingX-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINExpires: Thu, 01 Jan 1970 00:00:00 GMTCache-Control: private, no-cache, no-store, must-revalidatePragma: no-cacheLiferay-Portal: Liferay Community Edition PortalX-Cache-Status: EXPIREDReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?syTFM8g9JS2hCzxba5Hz82mib2%2B5YEZjEQGM9Nw5QDwt8H1PB2E%2BCCd7NagG8ggX9zYFNA2N0epmCtiA%2BohkNJf6vd2wNxHR4p%2FlmVoOAmJM81T%2Bfqg%3D%3D}}cf-cache-status: DYNAMICSet-Cookie: JSESSIONID78A451758A29A48DC16D5B9567D28172; HttpOnly; Path/Set-Cookie: COOKIE_SUPPORTtrue; HttpOnly; Path/; Max-Age31536000; ExpiresTue, 24 Nov 2026 17:36:01 GMTSet-Cookie: GUEST_LANGUAGE_IDen_GB; HttpOnly; Path/; Max-Age31536000; ExpiresTue, 24 Nov 2026 17:36:01 GMTCF-RAY: 9a3aaa86e9f3ff09-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html classltr dirltr langen-GB>head> title> Comprehensive Ansible Consulting and Training Services /title> meta contentinitial-scale1.0, widthdevice-width nameviewport />meta contenttext/html; charsetUTF-8 http-equivcontent-type />meta contentDiscover our comprehensive Ansible consulting and training services in South Africa. Our expert team offers tailored solutions and courses to help you master automation, configuration management, and orchestration. Partner with Ansible Consulting for expert guidance and skill development. langen-GB namedescription />meta contentAnsible consulting, Ansible training, Ansible services, Ansible courses, Ansible experts, Ansible South Africa, automation consulting, configuration management, IT consulting, IT training, Ansible certification, infrastructure automation, DevOps consulting, South Africa langen-GB namekeywords />script typeimportmap>{imports:{react-dom:/o/frontend-js-react-web/__liferay__/exports/react-dom.js,@clayui/breadcrumb:/o/frontend-taglib-clay/__liferay__/exports/@clayui$breadcrumb.js,@clayui/charts:/o/frontend-taglib-clay/__liferay__/exports/@clayui$charts.js,@clayui/empty-state:/o/frontend-taglib-clay/__liferay__/exports/@clayui$empty-state.js,react:/o/frontend-js-react-web/__liferay__/exports/react.js,react-dom-16:/o/frontend-js-react-web/__liferay__/exports/react-dom-16.js,@clayui/navigation-bar:/o/frontend-taglib-clay/__liferay__/exports/@clayui$navigation-bar.js,@clayui/icon:/o/frontend-taglib-clay/__liferay__/exports/@clayui$icon.js,@clayui/table:/o/frontend-taglib-clay/__liferay__/exports/@clayui$table.js,@clayui/slider:/o/frontend-taglib-clay/__liferay__/exports/@clayui$slider.js,@clayui/multi-select:/o/frontend-taglib-clay/__liferay__/exports/@clayui$multi-select.js,@clayui/nav:/o/frontend-taglib-clay/__liferay__/exports/@clayui$nav.js,@clayui/provider:/o/frontend-taglib-clay/__liferay__/exports/@clayui$provider.js,@clayui/panel:/o/frontend-taglib-clay/__liferay__/exports/@clayui$panel.js,@clayui/list:/o/frontend-taglib-clay/__liferay__/exports/@clayui$list.js,@clayui/date-picker:/o/frontend-taglib-clay/__liferay__/exports/@clayui$date-picker.js,@clayui/label:/o/frontend-taglib-clay/__liferay__/exports/@clayui$label.js,@liferay/frontend-js-api/data-set:/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api$data-set.js,@clayui/core:/o/frontend-taglib-clay/__liferay__/exports/@clayui$core.js,@clayui/pagination-bar:/o/frontend-taglib-clay/__liferay__/exports/@clayui$pagination-bar.js,@clayui/layout:/o/frontend-taglib-clay/__liferay__/exports/@clayui$layout.js,@clayui/multi-step-nav:/o/frontend-taglib-clay/__liferay__/exports/@clayui$multi-step-nav.js,@liferay/frontend-js-api:/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api.js,@clayui/toolbar:/o/frontend-taglib-clay/__liferay__/exports/@clayui$toolbar.js,@clayui/badge:/o/frontend-taglib-clay/__liferay__/exports/@clayui$badge.js,react-dom-18:/o/frontend-js-react-web/__liferay__/exports/react-dom-18.js,@clayui/link:/o/frontend-taglib-clay/__liferay__/exports/@clayui$link.js,@clayui/card:/o/frontend-taglib-clay/__liferay__/exports/@clayui$card.js,@clayui/tooltip:/o/frontend-taglib-clay/__liferay__/exports/@clayui$tooltip.js,@clayui/button:/o/frontend-taglib-clay/__liferay__/exports/@clayui$button.js,@clayui/tabs:/o/frontend-taglib-clay/__liferay__/exports/@clayui$tabs.js,@clayui/sticker:/o/frontend-taglib-clay/__liferay__/exports/@clayui$sticker.js,@clayui/form:/o/frontend-taglib-clay/__liferay__/exports/@clayui$form.js,@clayui/popover:/o/frontend-taglib-clay/__liferay__/exports/@clayui$popover.js,@clayui/shared:/o/frontend-taglib-clay/__liferay__/exports/@clayui$shared.js,@clayui/localized-input:/o/frontend-taglib-clay/__liferay__/exports/@clayui$localized-input.js,@clayui/modal:/o/frontend-taglib-clay/__liferay__/exports/@clayui$modal.js,@clayui/color-picker:/o/frontend-taglib-clay/__liferay__/exports/@clayui$color-picker.js,@clayui/pagination:/o/frontend-taglib-clay/__liferay__/exports/@clayui$pagination.js,@clayui/autocomplete:/o/frontend-taglib-clay/__liferay__/exports/@clayui$autocomplete.js,@clayui/management-toolbar:/o/frontend-taglib-clay/__liferay__/exports/@clayui$management-toolbar.js,@clayui/time-picker:/o/frontend-taglib-clay/__liferay__/exports/@clayui$time-picker.js,@clayui/upper-toolbar:/o/frontend-taglib-clay/__liferay__/exports/@clayui$upper-toolbar.js,@clayui/loading-indicator:/o/frontend-taglib-clay/__liferay__/exports/@clayui$loading-indicator.js,@clayui/drop-down:/o/frontend-taglib-clay/__liferay__/exports/@clayui$drop-down.js,@clayui/data-provider:/o/frontend-taglib-clay/__liferay__/exports/@clayui$data-provider.js,@liferay/language/:/o/js/language/,@clayui/css:/o/frontend-taglib-clay/__liferay__/exports/@clayui$css.js,@clayui/alert:/o/frontend-taglib-clay/__liferay__/exports/@clayui$alert.js,@clayui/progress-bar:/o/frontend-taglib-clay/__liferay__/exports/@clayui$progress-bar.js,react-16:/o/frontend-js-react-web/__liferay__/exports/react-16.js,react-18:/o/frontend-js-react-web/__liferay__/exports/react-18.js},scopes:{}}/script>script data-senna-tracktemporary>var Liferay window.Liferay || {};Liferay.Icons Liferay.Icons || {};Liferay.Icons.controlPanelSpritemap https://ansibleconsulting.co.za/o/admin-theme/images/clay/icons.svg; Liferay.Icons.spritemap https://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg;/script>script data-senna-trackpermanent typetext/javascript>window.Liferay window.Liferay || {}; window.Liferay.CSP {nonce: };/script>link data-senna-tracktemporary hrefhttps://ansibleconsulting.co.za relcanonical />link data-senna-tracktemporary hrefhttps://ansibleconsulting.co.za hreflangen-GB relalternate />link data-senna-tracktemporary hrefhttps://ansibleconsulting.co.za hreflangx-default relalternate />meta propertyog:description contentDiscover our comprehensive Ansible consulting and training services in South Africa. Our expert team offers tailored solutions and courses to help you master automation, configuration management, and orchestration. Partner with Ansible Consulting for expert guidance and skill development.>meta propertyog:locale contenten_GB>meta propertyog:locale:alternate contenten_GB>meta propertyog:site_name contentAnsible Labs>meta propertyog:title contentComprehensive Ansible Consulting and Training Services - Ansible Labs - Jumping Bean>meta propertyog:type contentwebsite>meta propertyog:url contenthttps://ansibleconsulting.co.za>meta propertyog:image contenthttps://ansibleconsulting.co.za/documents/5948512/0/yellow-arrow-led-lights-ansible-devops-consulting.jpg/abf46337-b1b1-0c7d-5936-9ddefba6d219?version1.0&t1671226734404&imagePreview1>meta propertyog:image:type contentimage/jpeg>meta propertyog:image:url contenthttps://ansibleconsulting.co.za/documents/5948512/0/yellow-arrow-led-lights-ansible-devops-consulting.jpg/abf46337-b1b1-0c7d-5936-9ddefba6d219?version1.0&t1671226734404&imagePreview1>link href/documents/20126/0/jumping-bean-logo/b456482c-2c34-d043-0613-63f91d6a7c97 relapple-touch-icon />link href/documents/20126/0/jumping-bean-logo/b456482c-2c34-d043-0613-63f91d6a7c97 relicon />link classlfr-css-file data-senna-tracktemporary hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/css/clay.css?browserIdother&themeIdjumpingbeanbasetheme_WAR_jumpingbeanbasetheme&minifierTypecss&languageIden_GB&t1762093142000 idliferayAUICSS relstylesheet typetext/css /> link href/combo?browserIdother&minifierTypecss&themeIdjumpingbeanbasetheme_WAR_jumpingbeanbasetheme&languageIden_GB&com_liferay_commerce_product_asset_categories_navigation_web_internal_portlet_CPAssetCategoriesNavigationPortlet_INSTANCE_cpAssetCategoriesNavigationPortlet_navigation_menu:%2Fo%2Fcommerce-product-asset-categories-navigation-web%2Fcss%2Fmain.css&com_liferay_cookies_banner_web_portlet_CookiesBannerPortlet:%2Fo%2Fcookies-banner-web%2Fcookies_banner%2Fcss%2Fmain.css&com_liferay_product_navigation_product_menu_web_portlet_ProductMenuPortlet:%2Fo%2Fproduct-navigation-product-menu-web%2Fcss%2Fmain.css&com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh:%2Fo%2Fsite-navigation-menu-web%2Fcss%2Fmain.css&t1762093142000 relstylesheet typetext/css data-senna-tracktemporary id77b42192 />script typetext/javascript data-senna-tracktemporary> // !CDATA var Liferay Liferay || {}; Liferay.Browser { acceptsGzip: function () { return true; }, getMajorVersion: function () { return 0; }, getRevision: function () { return ; }, getVersion: function () { return ; }, isAir: function () { return false; }, isChrome: function () { return false; }, isEdge: function () { return false; }, isFirefox: function () { return false; }, isGecko: function () { return false; }, isIe: function () { return false; }, isIphone: function () { return false; }, isLinux: function () { return false; }, isMac: function () { return false; }, isMobile: function () { return false; }, isMozilla: function () { return false; }, isOpera: function () { return false; }, isRtf: function () { return false; }, isSafari: function () { return false; }, isSun: function () { return false; }, isWebKit: function () { return false; }, isWindows: function () { return false; } }; Liferay.Data Liferay.Data || {}; Liferay.Data.ICONS_INLINE_SVG true; Liferay.Data.NAV_SELECTOR #navigation; Liferay.Data.NAV_SELECTOR_MOBILE #navigationCollapse; Liferay.Data.isCustomizationView function () { return false; }; Liferay.Data.notices ; (function () { var available {}; var direction {}; availableen_GB English\x20\x28United\x20Kingdom\x29; directionen_GB ltr; availableen_US English\x20\x28United\x20States\x29; directionen_US ltr; let _cache {}; if (Liferay && Liferay.Language && Liferay.Language._cache) { _cache Liferay.Language._cache; } Liferay.Language { _cache, available, direction, get: function(key) { let value Liferay.Language._cachekey; if (value undefined) { value key; } return value; } }; })(); var featureFlags {LPD-10964:false,LPD-37927:false,LPD-10889:false,LPS-193884:false,LPD-30371:false,LPD-36719:false,LPD-11131:true,LPS-178642:false,LPS-193005:false,LPD-31789:false,LPD-10562:false,LPD-11212:false,COMMERCE-8087:false,LPD-39304:true,LPD-13311:true,LRAC-10757:false,LPD-35941:false,LPS-180090:false,LPS-178052:false,LPD-21414:false,LPS-185892:false,LPS-186620:false,LPD-40533:true,LPD-40534:true,LPS-184404:false,LPD-40530:true,LPD-20640:false,LPS-198183:false,LPD-38869:false,LPD-35678:false,LPD-6378:false,LPS-153714:false,LPD-11848:false,LPS-170670:false,LPD-7822:false,LPS-169981:false,LPD-21926:false,LPS-177027:false,LPD-37531:false,LPD-11003:false,LPD-36446:false,LPD-39437:false,LPS-135430:false,LPD-20556:false,LPS-134060:false,LPS-164563:false,LPD-32050:false,LPS-122920:false,LPS-199086:false,LPD-35128:false,LPD-10588:false,LPD-13778:true,LPD-11313:false,LPD-6368:false,LPD-34594:false,LPS-202104:false,LPD-19955:false,LPD-35443:false,LPD-39967:false,LPD-11235:false,LPD-11232:false,LPS-196935:true,LPD-43542:false,LPS-176691:false,LPS-197909:false,LPD-29516:false,COMMERCE-8949:false,LPD-11228:true,LPS-153813:false,LPD-17809:false,COMMERCE-13024:false,LPS-165482:false,LPS-193551:false,LPS-197477:false,LPS-174816:false,LPS-186360:false,LPD-30204:false,LPD-32867:false,LPS-153332:false,LPD-35013:true,LPS-179669:false,LPS-174417:false,LPD-44091:false,LPD-31212:false,LPD-18221:false,LPS-155284:false,LRAC-15017:false,LPD-19870:false,LPS-200108:false,LPD-20131:false,LPS-159643:false,LPS-129412:false,LPS-169837:false,LPD-20379:false}; Liferay.FeatureFlags Object.keys(featureFlags).reduce( (acc, key) > ({ ...acc, key: featureFlagskey true || featureFlagskey true }), {} ); Liferay.PortletKeys { DOCUMENT_LIBRARY: com_liferay_document_library_web_portlet_DLPortlet, DYNAMIC_DATA_MAPPING: com_liferay_dynamic_data_mapping_web_portlet_DDMPortlet, ITEM_SELECTOR: com_liferay_item_selector_web_portlet_ItemSelectorPortlet }; Liferay.PropsValues { JAVASCRIPT_SINGLE_PAGE_APPLICATION_TIMEOUT: 0, UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE: 104857600 }; Liferay.ThemeDisplay { getLayoutId: function () { return 2; }, getLayoutRelativeControlPanelURL: function () { return /group/ansible-consulting-training/~/control_panel/manage; }, getLayoutRelativeURL: function () { return /consulting-training; }, getLayoutURL: function () { return https://ansibleconsulting.co.za/consulting-training; }, getParentLayoutId: function () { return 0; }, isControlPanel: function () { return false; }, isPrivateLayout: function () { return false; }, isVirtualLayout: function () { return false; }, getBCP47LanguageId: function () { return en-GB; }, getCanonicalURL: function () { return https\x3a\x2f\x2fansibleconsulting\x2eco\x2eza; }, getCDNBaseURL: function () { return https://ansibleconsulting.co.za; }, getCDNDynamicResourcesHost: function () { return ; }, getCDNHost: function () { return ; }, getCompanyGroupId: function () { return 20135; }, getCompanyId: function () { return 20099; }, getDefaultLanguageId: function () { return en_GB; }, getDoAsUserIdEncoded: function () { return ; }, getLanguageId: function () { return en_GB; }, getParentGroupId: function () { return 5948512; }, getPathContext: function () { return ; }, getPathImage: function () { return /image; }, getPathJavaScript: function () { return /o/frontend-js-web; }, getPathMain: function () { return /c; }, getPathThemeImages: function () { return https://ansibleconsulting.co.za/o/jumping-bean-base-theme/images; }, getPathThemeRoot: function () { return /o/jumping-bean-base-theme; }, getPlid: function () { return 294845; }, getPortalURL: function () { return https://ansibleconsulting.co.za; }, getRealUserId: function () { return 20103; }, getRemoteAddr: function () { return 172.17.0.1; }, getRemoteHost: function () { return 172.17.0.1; }, getScopeGroupId: function () { return 5948512; }, getScopeGroupIdOrLiveGroupId: function () { return 5948512; }, getSessionId: function () { return ; }, getSiteAdminURL: function () { return https://ansibleconsulting.co.za/group/ansible-consulting-training/~/control_panel/manage?p_p_lifecycle0&p_p_statemaximized&p_p_modeview; }, getSiteGroupId: function () { return 5948512; }, getTimeZone: function() { return UTC; }, getURLControlPanel: function() { return /group/control_panel?refererPlid294845; }, getURLHome: function () { return https\x3a\x2f\x2fansibleconsulting\x2eco\x2eza\x2fweb\x2fguest; }, getUserEmailAddress: function () { return ; }, getUserId: function () { return 20103; }, getUserName: function () { return ; }, isAddSessionIdToURL: function () { return false; }, isImpersonated: function () { return false; }, isSignedIn: function () { return false; }, isStagedPortlet: function () { return false; }, isStateExclusive: function () { return false; }, isStateMaximized: function () { return false; }, isStatePopUp: function () { return false; } }; var themeDisplay Liferay.ThemeDisplay; Liferay.AUI { getCombine: function () { return true; }, getComboPath: function () { return /combo/?browserIdother&minifierType&languageIden_GB&t1739913700921&; }, getDateFormat: function () { return %d/%m/%Y; }, getEditorCKEditorPath: function () { return /o/frontend-editor-ckeditor-web; }, getFilter: function () { var filter raw; filter min; return filter; }, getFilterConfig: function () { var instance this; var filterConfig null; if (!instance.getCombine()) { filterConfig { replaceStr: .js + instance.getStaticResourceURLParams(), searchExp: \\.js$ }; } return filterConfig; }, getJavaScriptRootPath: function () { return /o/frontend-js-web; }, getPortletRootPath: function () { return /html/portlet; }, getStaticResourceURLParams: function () { return ?browserIdother&minifierType&languageIden_GB&t1739913700921; } }; Liferay.authToken 4ioxw9c3; Liferay.currentURL \x2f; Liferay.currentURLEncoded \x252F; // >/script>script data-senna-tracktemporary typetext/javascript>window.__CONFIG__ {basePath: ,combine: true, defaultURLParams: null, explainResolutions: false, exposeGlobal: false, logLevel: warn, moduleType: module, namespace:Liferay, nonce: , reportMismatchedAnonymousModules: warn, resolvePath: /o/js_resolve_modules, url: /combo/?browserIdother&minifierTypejs&languageIden_GB&t1739913700921&, waitTimeout: 60000};/script>script data-senna-trackpermanent src/o/frontend-js-loader-modules-extender/loader.js?&mac9WaMmhziBCkScHZwrrVcOR7VZF4&browserIdother&languageIden_GB&minifierTypejs typetext/javascript>/script>script data-senna-trackpermanent src/combo?browserIdother&minifierTypejs&languageIden_GB&t1739913700921&/o/frontend-js-aui-web/aui/aui/aui-min.js&/o/frontend-js-aui-web/liferay/modules.js&/o/frontend-js-aui-web/liferay/aui_sandbox.js&/o/frontend-js-aui-web/aui/attribute-base/attribute-base-min.js&/o/frontend-js-aui-web/aui/attribute-complex/attribute-complex-min.js&/o/frontend-js-aui-web/aui/attribute-core/attribute-core-min.js&/o/frontend-js-aui-web/aui/attribute-observable/attribute-observable-min.js&/o/frontend-js-aui-web/aui/attribute-extras/attribute-extras-min.js&/o/frontend-js-aui-web/aui/event-custom-base/event-custom-base-min.js&/o/frontend-js-aui-web/aui/event-custom-complex/event-custom-complex-min.js&/o/frontend-js-aui-web/aui/oop/oop-min.js&/o/frontend-js-aui-web/aui/aui-base-lang/aui-base-lang-min.js&/o/frontend-js-aui-web/liferay/dependency.js&/o/frontend-js-aui-web/liferay/util.js&/o/frontend-js-web/liferay/dom_task_runner.js&/o/frontend-js-web/liferay/events.js&/o/frontend-js-web/liferay/lazy_load.js&/o/frontend-js-web/liferay/liferay.js&/o/frontend-js-web/liferay/global.bundle.js&/o/frontend-js-web/liferay/portlet.js&/o/frontend-js-web/liferay/workflow.js&/o/oauth2-provider-web/js/liferay.js typetext/javascript>/script>script data-senna-tracktemporary typetext/javascript>window.Liferay Liferay || {}; window.Liferay.OAuth2 {getAuthorizeURL: function() {return https://ansibleconsulting.co.za/o/oauth2/authorize;}, getBuiltInRedirectURL: function() {return https://ansibleconsulting.co.za/o/oauth2/redirect;}, getIntrospectURL: function() { return https://ansibleconsulting.co.za/o/oauth2/introspect;}, getTokenURL: function() {return https://ansibleconsulting.co.za/o/oauth2/token;}, getUserAgentApplication: function(externalReferenceCode) {return Liferay.OAuth2._userAgentApplicationsexternalReferenceCode;}, _userAgentApplications: {}}/script>script data-senna-tracktemporary typetext/javascript>try {var MODULE_MAINdynamic-data-mapping-web@5.0.115/index;var MODULE_PATH/o/dynamic-data-mapping-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { const LiferayAUI Liferay.AUI; AUI().applyConfig({ groups: { ddm: { base: MODULE_PATH + /js/legacy/, combine: Liferay.AUI.getCombine(), filter: LiferayAUI.getFilterConfig(), modules: { liferay-ddm-form: { path: ddm_form.js, requires: aui-base, aui-datatable, aui-datatype, aui-image-viewer, aui-parse-content, aui-set, aui-sortable-list, json, liferay-form, liferay-map-base, liferay-translation-manager, liferay-util-window, , }, liferay-portlet-dynamic-data-mapping: { condition: { trigger: liferay-document-library, }, path: main.js, requires: arraysort, aui-form-builder-deprecated, aui-form-validator, aui-map, aui-text-unicode, json, liferay-menu, liferay-translation-manager, liferay-util-window, text, , }, liferay-portlet-dynamic-data-mapping-custom-fields: { condition: { trigger: liferay-document-library, }, path: custom_fields.js, requires: liferay-portlet-dynamic-data-mapping, }, }, root: MODULE_PATH + /js/legacy/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAINfrontend-editor-alloyeditor-web@5.0.56/index;var MODULE_PATH/o/frontend-editor-alloyeditor-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { alloyeditor: { base: MODULE_PATH + /js/legacy/, combine: Liferay.AUI.getCombine(), filter: Liferay.AUI.getFilterConfig(), modules: { liferay-alloy-editor: { path: alloyeditor.js, requires: aui-component, liferay-portlet-base, timers, , }, liferay-alloy-editor-source: { path: alloyeditor_source.js, requires: aui-debounce, liferay-fullscreen-source-editor, liferay-source-editor, plugin, , }, }, root: MODULE_PATH + /js/legacy/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAINexportimport-web@5.0.100/index;var MODULE_PATH/o/exportimport-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { exportimportweb: { base: MODULE_PATH + /js/legacy/, combine: Liferay.AUI.getCombine(), filter: Liferay.AUI.getFilterConfig(), modules: { liferay-export-import-export-import: { path: main.js, requires: aui-datatype, aui-dialog-iframe-deprecated, aui-modal, aui-parse-content, aui-toggler, liferay-portlet-base, liferay-util-window, , }, }, root: MODULE_PATH + /js/legacy/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAINstaging-processes-web@5.0.65/index;var MODULE_PATH/o/staging-processes-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { stagingprocessesweb: { base: MODULE_PATH + /js/legacy/, combine: Liferay.AUI.getCombine(), filter: Liferay.AUI.getFilterConfig(), modules: { liferay-staging-processes-export-import: { path: main.js, requires: aui-datatype, aui-dialog-iframe-deprecated, aui-modal, aui-parse-content, aui-toggler, liferay-portlet-base, liferay-util-window, , }, }, root: MODULE_PATH + /js/legacy/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAIN@liferay/document-library-web@6.0.198/index;var MODULE_PATH/o/document-library-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { dl: { base: MODULE_PATH + /js/legacy/, combine: Liferay.AUI.getCombine(), filter: Liferay.AUI.getFilterConfig(), modules: { document-library-upload-component: { path: DocumentLibraryUpload.js, requires: aui-component, aui-data-set-deprecated, aui-overlay-manager-deprecated, aui-overlay-mask-deprecated, aui-parse-content, aui-progressbar, aui-template-deprecated, liferay-search-container, querystring-parse-simple, uploader, , }, }, root: MODULE_PATH + /js/legacy/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAIN@liferay/frontend-js-react-web@5.0.54/index;var MODULE_PATH/o/frontend-js-react-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { react: { // eslint-disable-next-line mainModule: MODULE_MAIN, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAINportal-search-web@6.0.148/index;var MODULE_PATH/o/portal-search-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { search: { base: MODULE_PATH + /js/, combine: Liferay.AUI.getCombine(), filter: Liferay.AUI.getFilterConfig(), modules: { liferay-search-custom-range-facet: { path: custom_range_facet.js, requires: aui-form-validator, }, }, root: MODULE_PATH + /js/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAINcalendar-web@5.0.105/index;var MODULE_PATH/o/calendar-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { calendar: { base: MODULE_PATH + /js/legacy/, combine: Liferay.AUI.getCombine(), filter: Liferay.AUI.getFilterConfig(), modules: { liferay-calendar-a11y: { path: calendar_a11y.js, requires: calendar, }, liferay-calendar-container: { path: calendar_container.js, requires: aui-alert, aui-base, aui-component, liferay-portlet-base, , }, liferay-calendar-date-picker-sanitizer: { path: date_picker_sanitizer.js, requires: aui-base, }, liferay-calendar-interval-selector: { path: interval_selector.js, requires: aui-base, liferay-portlet-base, }, liferay-calendar-interval-selector-scheduler-event-link: { path: interval_selector_scheduler_event_link.js, requires: aui-base, liferay-portlet-base, }, liferay-calendar-list: { path: calendar_list.js, requires: aui-template-deprecated, liferay-scheduler, , }, liferay-calendar-message-util: { path: message_util.js, requires: liferay-util-window, }, liferay-calendar-recurrence-converter: { path: recurrence_converter.js, requires: , }, liferay-calendar-recurrence-dialog: { path: recurrence.js, requires: aui-base, liferay-calendar-recurrence-util, , }, liferay-calendar-recurrence-util: { path: recurrence_util.js, requires: aui-base, liferay-util-window, }, liferay-calendar-reminders: { path: calendar_reminders.js, requires: aui-base, }, liferay-calendar-remote-services: { path: remote_services.js, requires: aui-base, aui-component, liferay-calendar-util, liferay-portlet-base, , }, liferay-calendar-session-listener: { path: session_listener.js, requires: aui-base, liferay-scheduler, }, liferay-calendar-simple-color-picker: { path: simple_color_picker.js, requires: aui-base, aui-template-deprecated, }, liferay-calendar-simple-menu: { path: simple_menu.js, requires: aui-base, aui-template-deprecated, event-outside, event-touch, widget-modality, widget-position, widget-position-align, widget-position-constrain, widget-stack, widget-stdmod, , }, liferay-calendar-util: { path: calendar_util.js, requires: aui-datatype, aui-io, aui-scheduler, aui-toolbar, autocomplete, autocomplete-highlighters, , }, liferay-scheduler: { path: scheduler.js, requires: async-queue, aui-datatype, aui-scheduler, dd-plugin, liferay-calendar-a11y, liferay-calendar-message-util, liferay-calendar-recurrence-converter, liferay-calendar-recurrence-util, liferay-calendar-util, liferay-scheduler-event-recorder, liferay-scheduler-models, promise, resize-plugin, , }, liferay-scheduler-event-recorder: { path: scheduler_event_recorder.js, requires: dd-plugin, liferay-calendar-util, resize-plugin, , }, liferay-scheduler-models: { path: scheduler_models.js, requires: aui-datatype, dd-plugin, liferay-calendar-util, , }, }, root: MODULE_PATH + /js/legacy/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAIN@liferay/frontend-js-state-web@1.0.30/index;var MODULE_PATH/o/frontend-js-state-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { state: { // eslint-disable-next-line mainModule: MODULE_MAIN, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAINcontacts-web@5.0.65/index;var MODULE_PATH/o/contacts-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { contactscenter: { base: MODULE_PATH + /js/legacy/, combine: Liferay.AUI.getCombine(), filter: Liferay.AUI.getFilterConfig(), modules: { liferay-contacts-center: { path: main.js, requires: aui-io-plugin-deprecated, aui-toolbar, autocomplete-base, datasource-io, json-parse, liferay-portlet-base, liferay-util-window, , }, }, root: MODULE_PATH + /js/legacy/, }, }, });})();} catch(error) {console.error(error);}try {var MODULE_MAINfrontend-js-components-web@2.0.80/index;var MODULE_PATH/o/frontend-js-components-web;/** * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 */(function () { AUI().applyConfig({ groups: { components: { // eslint-disable-next-line mainModule: MODULE_MAIN, }, }, });})();} catch(error) {console.error(error);}/script>script typetext/javascript data-senna-tracktemporary> // !CDATA // >/script> !-- Matomo -->script> var _paq window._paq window._paq || ; /* tracker methods like setCustomDimension should be called before trackPageView */ _paq.push(trackPageView); _paq.push(enableLinkTracking); (function() { var uhttps://stats.cyberwebhosting.co.za/; _paq.push(setTrackerUrl, u+matomo.php); _paq.push(setSiteId, 38); var ddocument, gd.createElement(script), sd.getElementsByTagName(script)0; g.asynctrue; g.srcu+matomo.js; s.parentNode.insertBefore(g,s); })();/script>!-- End Matomo Code --> link classlfr-css-file data-senna-tracktemporary hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/css/main.css?browserIdother&themeIdjumpingbeanbasetheme_WAR_jumpingbeanbasetheme&minifierTypecss&languageIden_GB&t1762093142000 idliferayThemeCSS relstylesheet typetext/css /> style data-senna-tracksenna typetext/css> #jb-menu-tabs, #menu-container div ul li span,#menu-container div ul li a {color: white !important;} /style> style data-senna-tracksenna typetext/css> /style>style data-senna-tracktemporary typetext/css>/style>link data-senna-trackpermanent href/o/frontend-js-aui-web/alloy_ui.css?&macfavIEq7hPo8AEd6k+N5OVADEEls&browserIdother&languageIden_GB&minifierTypecss&themeIdjumpingbeanbasetheme_WAR_jumpingbeanbasetheme relstylesheet>/link>script typemodule>import {init} from /o/frontend-js-spa-web/__liferay__/index.js;{init({navigationExceptionSelectors::not(target\_blank\):not(data-senna-off):not(data-resource-href):not(data-cke-saved-href):not(data-cke-saved-href),cacheExpirationTime:-1,clearScreensCache:false,portletsBlacklist:com_liferay_login_web_portlet_CreateAccountPortlet,com_liferay_site_navigation_directory_web_portlet_SitesDirectoryPortlet,com_liferay_nested_portlets_web_portlet_NestedPortletsPortlet,com_liferay_questions_web_internal_portlet_QuestionsPortlet,com_liferay_account_admin_web_internal_portlet_AccountUsersRegistrationPortlet,com_liferay_login_web_portlet_ForgotPasswordPortlet,com_liferay_portal_language_override_web_internal_portlet_PLOPortlet,com_liferay_login_web_portlet_LoginPortlet,com_liferay_login_web_portlet_FastLoginPortlet,excludedTargetPortlets:com_liferay_users_admin_web_portlet_UsersAdminPortlet,com_liferay_server_admin_web_portlet_ServerAdminPortlet,validStatusCodes:221,490,494,499,491,492,493,495,220,debugEnabled:false,loginRedirect:,excludedPaths:/c/document_library,/documents,/image,preloadCSS:false,userNotification:{message:It looks like this is taking longer than expected.,title:Oops,timeout:30000},requestTimeout:0});}/script>link data-senna-tracktemporary href/o/layout-common-styles/main.css?plid294845&segmentsExperienceId6302374&t1753646784172 relstylesheet typetext/css>script typetext/javascript data-senna-tracktemporary> if (window.Analytics) { window._com_liferay_document_library_analytics_isViewFileEntry false; }/script>script typetext/javascript>Liferay.on( ddmFieldBlur, function(event) { if (window.Analytics) { Analytics.send( fieldBlurred, Form, { fieldName: event.fieldName, focusDuration: event.focusDuration, formId: event.formId, formPageTitle: event.formPageTitle, page: event.page, title: event.title } ); } });Liferay.on( ddmFieldFocus, function(event) { if (window.Analytics) { Analytics.send( fieldFocused, Form, { fieldName: event.fieldName, formId: event.formId, formPageTitle: event.formPageTitle, page: event.page, title:event.title } ); } });Liferay.on( ddmFormPageShow, function(event) { if (window.Analytics) { Analytics.send( pageViewed, Form, { formId: event.formId, formPageTitle: event.formPageTitle, page: event.page, title: event.title } ); } });Liferay.on( ddmFormSubmit, function(event) { if (window.Analytics) { Analytics.send( formSubmitted, Form, { formId: event.formId, title: event.title } ); } });Liferay.on( ddmFormView, function(event) { if (window.Analytics) { Analytics.send( formViewed, Form, { formId: event.formId, title: event.title } ); } });/script>script>/script> link relapple-touch-icon sizes57x57 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-57x57.png> link relapple-touch-icon sizes60x60 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-60x60.png> link relapple-touch-icon sizes72x72 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-72x72.png> link relapple-touch-icon sizes76x76 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-76x76.png> link relapple-touch-icon sizes114x114 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-114x114.png> link relapple-touch-icon sizes120x120 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-120x120.png> link relapple-touch-icon sizes144x144 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-144x144.png> link relapple-touch-icon sizes152x152 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-152x152.png> link relapple-touch-icon sizes180x180 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/apple-icon-180x180.png> link relicon typeimage/png sizes192x192 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images//android-icon-192x192.png> link relicon typeimage/png sizes32x32 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/favicon-32x32.png> link relicon typeimage/png sizes96x96 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/favicon-96x96.png> link relicon typeimage/png sizes16x16 HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/favicon-16x16.png> link relmanifest HREFhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/manifest.json> meta namemsapplication-TileColor content#ffffff> meta namemsapplication-TileImage contenthttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/ms-icon-144x144.png> meta nametheme-color content#ffffff> script typeapplication/ld+json>{ @context: https://schema.org, @graph: { @type: Organization, @id: https://jumpingbean.co.za#organization, name: Jumping Bean, url: https://jumpingbean.co.za, logo: { @type: ImageObject, url: https://jumpingbean.co.za/documents/d/guest/jumping-bean-logo.png, name: Jumping Bean Logo }, sameAs: https://x.com/jumpingbeansa, https://linkedin.com/company/jumping-bean, https://www.facebook.com/jumpingbean.southafrica, https://www.instagram.com/jumpingbeanza/ , contactPoint: { @type : ContactPoint, telephone : +27117818014, contactType : customer service, areaServed : ZA, email:support@support.jumpingbean.co.za, availableLanguage : en }, { @type : ContactPoint, telephone : +27210200111, contactType : customer service, areaServed : ZA, email:support@support.jumpingbean.co.za, availableLanguage : en } , hasOfferCatalog: { @type: OfferCatalog, name: Jumping Bean Services, itemListElement: { @type: Offer, itemOffered: { @type: Service, name: Training, description: Flexible, high-quality training in various formats tailored to your needs., hasCourseInstance: { @type: CourseInstance, courseMode: asynchronous, courseWorkload: Self-paced, typically 1-6 months depending on complexity and learner pace, description: Mentored, self-directed learning with flexible scheduling. }, { @type: CourseInstance, courseMode: blended, courseWorkload: Flexible, approximately 4-8 hours total, tailored to needs, description: Combines online and in-person elements for a hybrid experience. }, { @type: CourseInstance, courseMode: online, courseWorkload: Varies by course complexity, typically 3-5 days, description: Fully virtual training with live or recorded sessions. }, { @type: CourseInstance, courseMode: onsite, courseWorkload: Customized, ranging from 3-5 days based on requirements, description: In-person training at your location or ours. }, { @type: CourseInstance, courseMode: part-time, courseWorkload: Part-time over 8 weeks, approximately 2 hours per week, description: Scheduled sessions for working professionals. }, { @type: CourseInstance, courseMode: customized, courseWorkload: Duration determined by client needs and course complexity, description: Bespoke training designed for specific goals. } } }, { @type: Offer, itemOffered: { @type: Service, name: Consulting, description: Expert consulting to design and implement modern software solutions tailored to your business., offers: { @type: Offer, itemOffered: { @type: Service, name: On-Site Consulting, description: Hands-on consulting at your location, typically 1-5 days depending on project scope., serviceOutput: Customized solutions, architecture design, and implementation plans. } }, { @type: Offer, itemOffered: { @type: Service, name: Remote Consulting, description: Virtual consulting sessions, flexible duration based on project complexity., serviceOutput: Strategic advice, system optimization, and remote guidance. } } } }, { @type: Offer, itemOffered: { @type: Service, name: Support, description: Comprehensive support services for technology solutions, training, and implementation, available as ad-hoc, SLA-based, or project-scoped engagements., offers: { @type: Offer, itemOffered: { @type: Service, name: Technology Solution Support, description: Ongoing assistance for software systems, databases, and security, tailored to your infrastructure. Offered as ad-hoc support, SLA-based contracts, or project-scoped engagements., serviceType: System maintenance, troubleshooting, and optimization. } }, { @type: Offer, itemOffered: { @type: Service, name: Training Support, description: Post-training mentoring and resources to ensure skill application, available ad-hoc, under SLA, or scoped to specific projects., serviceType: Learning reinforcement, Q&A, and follow-up guidance. } }, { @type: Offer, itemOffered: { @type: Service, name: Implementation Support, description: Expert help deploying and optimizing solutions from consulting, offered as ad-hoc assistance, SLA-based support, or project-specific scope., serviceType: Deployment assistance, integration, and performance tuning. } } } } }, subOrganization: { @id: https://ansibleconsulting.co.za#training } , { @id: https://ansibleconsulting.co.za#service } }, { @type: EducationalOrganization, @id: https://ansibleconsulting.co.za#training, name: Jumping Bean Ansible Training Academy, alternateName: Jumping Bean Training, description: Jumping Bean Ansible Training Academy offers specialized training in Ansible automation. It offers flexible, expert-led courses to help IT professionals streamline infrastructure management and deployment., url: https://ansibleconsulting.co.za/w/training, logo: { @type: ImageObject, url: https://jumpingbean.co.za/documents/d/guest/jumping-bean-logo.png, name: Jumping Bean Services Logo }, parentOrganization: { @id: https://jumpingbean.co.za#organization } }, { @type: Organization, @id: https://ansibleconsulting.co.za#service, name: Jumping Bean Ansible Consulting Services, description: https://ansibleconsulting.co.za/consulting, url: Jumping Bean Ansible Consulting Services delivers expert Ansible-based solutions, including automation strategy, implementation, and support, to optimize IT operations for businesses, parentOrganization: { @id: https://jumpingbean.co.za#organization } }, { @type: LocalBusiness, @id: https://jumpingbean.co.za#localbusiness, name: Jumping Bean Randburg, description: Jumping Bean’s headquarters, offering training and services across Africa and internationally, parentOrganization: { @id: https://jumpingbean.co.za#organization }, slogan: We Build, We Support, We Train, address: { @type: PostalAddress, streetAddress: Appian Place, 373 Kent Avenue, addressLocality: Ferndale, addressRegion: Gauteng, postalCode: 2194, addressCountry: ZA }, geo: { @type: GeoCoordinates, latitude: -26.086806167352833, longitude: 28.002209996749528 }, telephone: +27117818014,+27210200111, priceRange: Contact for pricing, serviceArea: { @type: Place, name: Global Service Area, description: Serving clients on-site worldwide and virtually }, openingHoursSpecification: { @type: OpeningHoursSpecification, dayOfWeek: Monday, Tuesday, Wednesday, Thursday, Friday , opens: 09:00, closes: 17:00 } } }/script>/head>body classother controls-visible yui3-skin-sam signed-out public-page site> nav aria-labelQuick Links classbg-dark cadmin quick-access-nav text-center text-white idqxkl_quickAccessNav> a classd-block p-2 sr-only sr-only-focusable text-reset href#main-content> Skip to Main Content /a> /nav>div classd-flex flex-column min-vh-100>script> function menuItemToggle(id,collapseId,event){ event.preventDefault(); let down document.getElementById(down-+id); let up document.getElementById(right-+id); let tmp down.classList0; down.classList.remove(tmp); down.classList.add(up.classList0); up.classList.remove(down.classList0); up.classList.add(tmp); let collapseElement document.getElementById(collapseId); collapseElement.classList.toggle(show); }/script>div idjb-nav classjb-nav> nav idnavigation classjb-menu rolenavigation> div idjb-menu-tabs> div idjb-menu-tab1>We Build/div> div idjb-menu-tab2>We Support/div> div idjb-menu-tab3>We Train/div> div idjb-menu-tab4>svg classlexicon-icon lexicon-icon-bars rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#bars />/svg>/span>/div> /div> div idmenu-container> div idbuild>h2>We Build/h2> ul idnavigation_1 classmenu> li idservices_cybersecurity_build_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/cyber-security-solutions classtext-truncate relnofollow rolemenuitem > Cybersecurity /a> /li> li idservices_dev_build_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/software-development classtext-truncate relnofollow rolemenuitem > Development /a> /li> li idservices_devops_build_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/devops-pipelines classtext-truncate relnofollow rolemenuitem > DevOps /a> /li> li idservices_devops_build_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/big-data-solutions classtext-truncate relnofollow rolemenuitem > Big Data /a> /li> li idservices_cloud_build_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/cloud-solutions classtext-truncate relnofollow rolemenuitem > Cloud /a> /li> li idsoftware_dev_build_li rolepresentation classlist-group-item> a idsoftware_dev_build onclickmenuItemToggle(software_dev_build,navigation_2,event)> Software Development span idright-software_dev_build classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-software_dev_build classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_2 classcollapse content stylez-index:10;> li idjava_stacks_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/java-software-development classtext-truncate relnofollow rolemenuitem > Java Development /a> /li> li idpython_stacks_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/python-development-services classtext-truncate relnofollow rolemenuitem > Python Development /a> /li> li idphp_stacks_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/php-development-services classtext-truncate relnofollow rolemenuitem > PHP Development /a> /li> li idjavascript_stacks_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/javascript-development-services classtext-truncate relnofollow rolemenuitem > JavaScript Development /a> /li> li idstacks_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-build/software-stacks classtext-truncate relnofollow rolemenuitem > Stacks /a> /li> /ul> /li> /ul>/div> div idsupport>h2>We Support/h2> ul idnavigation_3 classmenu> li idpostgresql_support_li rolepresentation classlist-group-item> a hrefhttps://postgressupport.tech/ classtext-truncate relnofollow rolemenuitem > Postgres /a> /li> li idcyber_security_support_li rolepresentation classlist-group-item> a idcyber_security_support onclickmenuItemToggle(cyber_security_support,navigation_4,event)> Security Services span idright-cyber_security_support classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-cyber_security_support classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_4 classcollapse content stylez-index:10;> li idcloud_managed_service_provider_li rolepresentation classlist-group-item> a hrefhttps://cybersecurityservices.tech/w/managed-security-service-provider classtext-truncate relnofollow rolemenuitem > MSSP /a> /li> li idsecurity_assurance_li rolepresentation classlist-group-item> a hrefhttps://cybersecurityservices.tech/w/cybersecurity-assurance-advisory classtext-truncate relnofollow rolemenuitem > Assurance /a> /li> li idsecuirty_detection_response_li rolepresentation classlist-group-item> a hrefhttps://cybersecurityservices.tech/w/cybersecurity-incident-response-digital-forensics classtext-truncate relnofollow rolemenuitem > XDR /a> /li> li idsecuirty_virtual_ciso_li rolepresentation classlist-group-item> a hrefhttps://cybersecurityservices.tech/w/virtual-ciso-service classtext-truncate relnofollow rolemenuitem > Virtual CISO /a> /li> li idsecurity_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecurityservices.tech/w/training-5 classtext-truncate relnofollow rolemenuitem > Training /a> /li> /ul> /li> li idcloud_consulting_support_li rolepresentation classlist-group-item> a idcloud_consulting_support onclickmenuItemToggle(cloud_consulting_support,navigation_5,event)> Cloud span idright-cloud_consulting_support classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-cloud_consulting_support classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_5 classcollapse content stylez-index:10;> li idcloud_managed_service_provider_li rolepresentation classlist-group-item> a hrefhttps://cloudconsulting.africa/w/cloud-support-services classtext-truncate relnofollow rolemenuitem > Cloud MSP /a> /li> li idcloud_security_services_li rolepresentation classlist-group-item> a hrefhttps://cloudconsulting.africa/w/cloud-security classtext-truncate relnofollow rolemenuitem > Security /a> /li> li idcloud_migration_li rolepresentation classlist-group-item> a hrefhttps://cloudconsulting.africa/w/cloud-migration-support classtext-truncate relnofollow rolemenuitem > Migration /a> /li> li idgoogle_workspace_li rolepresentation classlist-group-item> a hrefhttps://googleconsulting.cloud/workspace/services classtext-truncate relnofollow rolemenuitem > Google Workspace /a> /li> li idgoogle_cloud_platform_li rolepresentation classlist-group-item> a hrefhttps://googleconsulting.cloud/gcp/services classtext-truncate relnofollow rolemenuitem > GCP /a> /li> /ul> /li> li idlinux_support_li rolepresentation classlist-group-item> a idlinux_support onclickmenuItemToggle(linux_support,navigation_6,event)> Linux span idright-linux_support classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-linux_support classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_6 classcollapse content stylez-index:10;> li idlinux_support_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-support/linux-support-services classtext-truncate relnofollow rolemenuitem > Linux Support /a> /li> li idlinux_support_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-support/linux-server-hardening-and-security-optimization-services classtext-truncate relnofollow rolemenuitem > Server Hardening /a> /li> li idlinux_support_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/w/we-support/linux-solutions-services classtext-truncate relnofollow rolemenuitem > Solutions Engineer /a> /li> /ul> /li> li iddevops_support_li rolepresentation classlist-group-item> a iddevops_support onclickmenuItemToggle(devops_support,navigation_7,event)> DevOps span idright-devops_support classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-devops_support classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_7 classcollapse content stylez-index:10;> li iddevops_support_li rolepresentation classlist-group-item> a hrefhttps://devopsconsulting.solutions/services classtext-truncate relnofollow rolemenuitem > Consulting /a> /li> li idansible_support_li rolepresentation classlist-group-item> a hrefhttps://ansibleconsulting.co.za/consulting classtext-truncate relnofollow rolemenuitem > Ansible Support /a> /li> /ul> /li> li idrabbitmq_support_li rolepresentation classlist-group-item> a hrefhttps://rabbitmq.co.za/w/rabbitmq-consulting-training classtext-truncate relnofollow rolemenuitem > RabbitMQ /a> /li> /ul>/div> div idtrain>h2>We Train/h2> ul idnavigation_8 classmenu> li idjava_training_li rolepresentation classlist-group-item> a idjava_training onclickmenuItemToggle(java_training,navigation_9,event)> Java span idright-java_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-java_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_9 classcollapse content stylez-index:10;> li idjava_fundamentals_li rolepresentation classlist-group-item> a hrefhttps://java-training.net/w/java-fundamentals-course classtext-truncate relnofollow rolemenuitem > Java Fundamentals /a> /li> li idjava_advanced_training_li rolepresentation classlist-group-item> a hrefhttps://java-training.net/w/java-se-developer-intermediate-course classtext-truncate relnofollow rolemenuitem > Java Advanced /a> /li> li idjava_ee_training_li rolepresentation classlist-group-item> a hrefhttps://java-training.net/w/java-ee-developer classtext-truncate relnofollow rolemenuitem > Java EE /a> /li> li idspring_training_li rolepresentation classlist-group-item> a idspring_training onclickmenuItemToggle(spring_training,navigation_10,event)> Spring span idright-spring_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-spring_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_10 classcollapse content stylez-index:10;> li idspring_boot_training_li rolepresentation classlist-group-item> a hrefhttps://springtraining.co.za/w/spring-boot classtext-truncate relnofollow rolemenuitem > Spring Boot /a> /li> li idspring_core_training_li rolepresentation classlist-group-item> a hrefhttps://springtraining.co.za/w/spring-core classtext-truncate relnofollow rolemenuitem > Spring Core /a> /li> /ul> /li> /ul> /li> li idlinux_training_li rolepresentation classlist-group-item> a idlinux_training onclickmenuItemToggle(linux_training,navigation_11,event)> Linux span idright-linux_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-linux_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_11 classcollapse content stylez-index:10;> li idlpi_training_li rolepresentation classlist-group-item> a idlpi_training onclickmenuItemToggle(lpi_training,navigation_12,event)> LPI span idright-lpi_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-lpi_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_12 classcollapse content stylez-index:10;> li idlpic_essentials_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/essentials/linux-essentials classtext-truncate relnofollow rolemenuitem > Linux Essentials /a> /li> li idlpic_1_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/linux-professional/lpic-1-101 classtext-truncate relnofollow rolemenuitem > LPIC-1 /a> /li> li idlpic_2_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/linux-professional/lpic-2-201 classtext-truncate relnofollow rolemenuitem > LPIC-2 /a> /li> li idlpic3_training_li rolepresentation classlist-group-item> a idlpic3_training onclickmenuItemToggle(lpic3_training,navigation_13,event)> LPIC-3 span idright-lpic3_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-lpic3_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_13 classcollapse content stylez-index:10;> li idlpic_3_303_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/linux-professional/lpic-3-303 classtext-truncate relnofollow rolemenuitem > 303 /a> /li> li idlpic_3_305_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/linux-professional/lpic-3-305 classtext-truncate relnofollow rolemenuitem > 305 /a> /li> li idlpic_3_306_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/linux-professional/lpic-3-306 classtext-truncate relnofollow rolemenuitem > 306 /a> /li> /ul> /li> /ul> /li> li idlinux_foundation_training_li rolepresentation classlist-group-item> a idlinux_foundation_training onclickmenuItemToggle(linux_foundation_training,navigation_14,event)> Linux Foundation span idright-linux_foundation_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-linux_foundation_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_14 classcollapse content stylez-index:10;> li idlfcsa_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/linux-foundation/linux-foundation-certified-system-administrator classtext-truncate relnofollow rolemenuitem > LFCS /a> /li> li idlfce_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/linux-foundation/linux-foundation-certified-engineer classtext-truncate relnofollow rolemenuitem > LFCE /a> /li> /ul> /li> li idred_hat_training_li rolepresentation classlist-group-item> a idred_hat_training onclickmenuItemToggle(red_hat_training,navigation_15,event)> Red Hat span idright-red_hat_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-red_hat_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_15 classcollapse content stylez-index:10;> li idrhcsa_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/red-hat/certified-system-administrator-rhcsa classtext-truncate relnofollow rolemenuitem > RHCSA /a> /li> li idrhce_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/red-hat/red-hat-certified-engineer classtext-truncate relnofollow rolemenuitem > RHCE /a> /li> /ul> /li> /ul> /li> li idcyber_security_li rolepresentation classlist-group-item> a idcyber_security onclickmenuItemToggle(cyber_security,navigation_16,event)> Cyber Security span idright-cyber_security classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-cyber_security classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_16 classcollapse content stylez-index:10;> li idisc2_training_li rolepresentation classlist-group-item> a idisc2_training onclickmenuItemToggle(isc2_training,navigation_17,event)> ISCsup>2/sup> span idright-isc2_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-isc2_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_17 classcollapse content stylez-index:10;> li idisc2_cissp_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/isc2/cissp classtext-truncate relnofollow rolemenuitem > CISSP /a> /li> li idisc2_ccsp_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/isc2/certified-cloud-security-professional classtext-truncate relnofollow rolemenuitem > CCSP /a> /li> /ul> /li> li ideccouncil_training_li rolepresentation classlist-group-item> a ideccouncil_training onclickmenuItemToggle(eccouncil_training,navigation_18,event)> EC-Council span idright-eccouncil_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-eccouncil_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_18 classcollapse content stylez-index:10;> li idceh_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/eccouncil/certified-ethical-hacker-ceh-training classtext-truncate relnofollow rolemenuitem > CEH /a> /li> li idforensic_investigator_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/eccouncil/certified-hacking-forensic-investigator-chfi-training classtext-truncate relnofollow rolemenuitem > CHFI /a> /li> li iddevsecops_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/eccouncil/certified-devsecops-engineer classtext-truncate relnofollow rolemenuitem > ECDE /a> /li> li idcpent_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/eccouncil/certified-penetration-tester-cpent-training classtext-truncate relnofollow rolemenuitem > CPENT /a> /li> li idcnd_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/eccouncil/certified-network-defender-cnd-training classtext-truncate relnofollow rolemenuitem > CND /a> /li> /ul> /li> li idisaca_training_li rolepresentation classlist-group-item> a idisaca_training onclickmenuItemToggle(isaca_training,navigation_19,event)> ISACA span idright-isaca_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-isaca_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_19 classcollapse content stylez-index:10;> li idcisa_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/isaca/cisa-training classtext-truncate relnofollow rolemenuitem > CISA /a> /li> li idcism_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/isaca/cism-training classtext-truncate relnofollow rolemenuitem > CISM /a> /li> li idcrisc_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/isaca/crisc-training classtext-truncate relnofollow rolemenuitem > CRISC /a> /li> li idcgeit_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/isaca/cgeit-training classtext-truncate relnofollow rolemenuitem > CGEIT /a> /li> /ul> /li> li idcomptia_training_li rolepresentation classlist-group-item> a idcomptia_training onclickmenuItemToggle(comptia_training,navigation_20,event)> CompTIA span idright-comptia_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-comptia_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_20 classcollapse content stylez-index:10;> li idsecurityplus_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/comptia/courses/security/security-plus classtext-truncate relnofollow rolemenuitem > Security+ /a> /li> li idpentestplus_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/comptia/courses/secuirty/pentest-plus classtext-truncate relnofollow rolemenuitem > PenTest+ /a> /li> li idcaspplus_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/comptia/courses/security/casp-plus classtext-truncate relnofollow rolemenuitem > CASP+ /a> /li> li idcysaplus_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/comptia/courses/security/cysa-plus classtext-truncate relnofollow rolemenuitem > CySA+ /a> /li> li idaplus_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/comptia/courses/core-skills/a-plus classtext-truncate relnofollow rolemenuitem > A+ /a> /li> li idnplus_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/comptia/courses/core-skills/n-plus classtext-truncate relnofollow rolemenuitem > N+ /a> /li> li idlinuxplus_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/comptia/courses/core-skills/linux-plus classtext-truncate relnofollow rolemenuitem > Linux+ /a> /li> /ul> /li> li idpecb_training_li rolepresentation classlist-group-item> a idpecb_training onclickmenuItemToggle(pecb_training,navigation_21,event)> PECB span idright-pecb_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-pecb_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_21 classcollapse content stylez-index:10;> li idpecb_27001_li rolepresentation classlist-group-item> a hrefhttps://pecbisocertificationtraining.com/w/iso-27001-training-courses classtext-truncate relnofollow rolemenuitem > ISO 27001 /a> /li> li idpecb_27002_li rolepresentation classlist-group-item> a hrefhttps://pecbisocertificationtraining.com/w/iso-27002-training-courses classtext-truncate relnofollow rolemenuitem > ISO 27002 /a> /li> li idpecb_31000_li rolepresentation classlist-group-item> a hrefhttps://pecbisocertificationtraining.com/w/iso-31000-risk-management-training classtext-truncate relnofollow rolemenuitem > ISO 31000 /a> /li> /ul> /li> /ul> /li> li idpostgresql_training_li rolepresentation classlist-group-item> a idpostgresql_training onclickmenuItemToggle(postgresql_training,navigation_22,event)> Postgresql span idright-postgresql_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-postgresql_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_22 classcollapse content stylez-index:10;> li idpostgresql_admin_training_li rolepresentation classlist-group-item> a hrefhttps://postgresqltraining.co.za/w/postgresql-administration classtext-truncate relnofollow rolemenuitem > Postgresql Admin /a> /li> li idpostgresql_dev_training_li rolepresentation classlist-group-item> a hrefhttps://postgresqltraining.co.za/w/postgresql-developer classtext-truncate relnofollow rolemenuitem > Postgresql Developer /a> /li> /ul> /li> li idcloud_training_li rolepresentation classlist-group-item> a idcloud_training onclickmenuItemToggle(cloud_training,navigation_23,event)> Cloud span idright-cloud_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-cloud_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_23 classcollapse content stylez-index:10;> li idaws_training_li rolepresentation classlist-group-item> a idaws_training onclickmenuItemToggle(aws_training,navigation_24,event)> AWS span idright-aws_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-aws_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_24 classcollapse content stylez-index:10;> li idaws_training_solution_achitect_associate_li rolepresentation classlist-group-item> a hrefhttps://awstraining.co.za/w/aws-solutions-architect-associate classtext-truncate relnofollow rolemenuitem > Architect Associate /a> /li> li idaws_training_solution_developer_associate_li rolepresentation classlist-group-item> a hrefhttps://awstraining.co.za/w/aws-developer-associate classtext-truncate relnofollow rolemenuitem > Developer Associate /a> /li> li idaws_training_solution_sysops_associate_li rolepresentation classlist-group-item> a hrefhttps://awstraining.co.za/w/aws-sysops-administrator-associate classtext-truncate relnofollow rolemenuitem > SysOps Associate /a> /li> li idaws_training_solution_architect_professional_li rolepresentation classlist-group-item> a hrefhttps://awstraining.co.za/w/aws-solutions-architect-professional classtext-truncate relnofollow rolemenuitem > Architect Professional /a> /li> li idaws_training_solution_devops_professional_li rolepresentation classlist-group-item> a hrefhttps://awstraining.co.za/w/aws-devops-engineer-professional classtext-truncate relnofollow rolemenuitem > DevOps Professional /a> /li> /ul> /li> li idazure_training_li rolepresentation classlist-group-item> a idazure_training onclickmenuItemToggle(azure_training,navigation_25,event)> Azure span idright-azure_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-azure_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_25 classcollapse content stylez-index:10;> li idazure_training_fundamentals_li rolepresentation classlist-group-item> a hrefhttps://azuretraining.co.za/w/microsoft-azure-fundamentals-az-900 classtext-truncate relnofollow rolemenuitem > Azure Fundamentals /a> /li> li idazure_training_administrator_li rolepresentation classlist-group-item> a hrefhttps://azuretraining.co.za/w/microsoft-azure-administrator-az-104 classtext-truncate relnofollow rolemenuitem > Azure Administrator /a> /li> /ul> /li> li idgcp_training_li rolepresentation classlist-group-item> a idgcp_training onclickmenuItemToggle(gcp_training,navigation_26,event)> Google span idright-gcp_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-gcp_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_26 classcollapse content stylez-index:10;> li idgcp_cloud_fundamentals_li rolepresentation classlist-group-item> a hrefhttps://googlecloudtraining.net/w/gcp/courses/google-cloud-digital-leader classtext-truncate relnofollow rolemenuitem > Cloud Fundamentals /a> /li> li idgcp_cloud_engineer_li rolepresentation classlist-group-item> a hrefhttps://googlecloudtraining.net/w/gcp/certifications/cloud-architect-associate classtext-truncate relnofollow rolemenuitem > Cloud Engineer /a> /li> li idgcp_cloud_architect_li rolepresentation classlist-group-item> a hrefhttps://googlecloudtraining.net/w/gcp/certifications/google-cloud-certified-professional-cloud-architect classtext-truncate relnofollow rolemenuitem > Cloud Architect /a> /li> li idgcp_data_engineer_li rolepresentation classlist-group-item> a hrefhttps://googlecloudtraining.net/w/gcp/certifications/google-cloud-certified-professional-cloud-database-engineer classtext-truncate relnofollow rolemenuitem > Data Engineer /a> /li> li idgcp_workspace_training_li rolepresentation classlist-group-item> a hrefhttps://googleconsulting.cloud/workspace/training classtext-truncate relnofollow rolemenuitem > Workspace /a> /li> /ul> /li> /ul> /li> li idessentials_li rolepresentation classlist-group-item> a idessentials onclickmenuItemToggle(essentials,navigation_27,event)> Essentials span idright-essentials classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-essentials classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_27 classcollapse content stylez-index:10;> li idweb_dev_essentials_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/essentials/web-development-essentials classtext-truncate relnofollow rolemenuitem > Web Dev Essentials /a> /li> li idsecurity_essentials_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/essentials/security-essentials classtext-truncate relnofollow rolemenuitem > Security Essentials /a> /li> li idlinux_essentials_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/essentials/linux-essentials classtext-truncate relnofollow rolemenuitem > Linux Essentials /a> /li> li idopen_source_essentials_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/essentials/open-source-essentials classtext-truncate relnofollow rolemenuitem > Open Source Essentials /a> /li> /ul> /li> li iddevops_training_li rolepresentation classlist-group-item> a iddevops_training onclickmenuItemToggle(devops_training,navigation_28,event)> DevOps span idright-devops_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-devops_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_28 classcollapse content stylez-index:10;> li iddevops_institute_training_li rolepresentation classlist-group-item> a iddevops_institute_training onclickmenuItemToggle(devops_institute_training,navigation_29,event)> DevOps Institute span idright-devops_institute_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-devops_institute_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_29 classcollapse content stylez-index:10;> li iddevops_foundation_training_li rolepresentation classlist-group-item> a hrefhttps://devopsconsulting.solutions/w/training/devops-institute/devops-foundation classtext-truncate relnofollow rolemenuitem > DevOps Foundation /a> /li> li iddevops_leader_training_li rolepresentation classlist-group-item> a hrefhttps://devopsconsulting.solutions/w/training/devops-institute/devops-leader classtext-truncate relnofollow rolemenuitem > DevOps Leader /a> /li> li idsre_training_li rolepresentation classlist-group-item> a hrefhttps://devopsconsulting.solutions/w/training/devops-insitute/site-reliabilty-engineer-foundation classtext-truncate relnofollow rolemenuitem > SRE Foundation /a> /li> li iddevsecops_training_li rolepresentation classlist-group-item> a hrefhttps://devopsconsulting.solutions/w/training/devops-institute/devsecops-foundation classtext-truncate relnofollow rolemenuitem > DevSecOps /a> /li> li idaiops_training_li rolepresentation classlist-group-item> a hrefhttps://devopsconsulting.solutions/w/training/devops-institute/aiops-foundation classtext-truncate relnofollow rolemenuitem > AIOps Foundation /a> /li> /ul> /li> li idlinux_foundation_devops_li rolepresentation classlist-group-item> a idlinux_foundation_devops onclickmenuItemToggle(linux_foundation_devops,navigation_30,event)> Linux Foundation span idright-linux_foundation_devops classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-linux_foundation_devops classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_30 classcollapse content stylez-index:10;> li idcertified_kubernetes_application_developer_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/linux-foundation/certified-kubernetes-application-developer classtext-truncate relnofollow rolemenuitem > CKAD /a> /li> li idcertified_kubernetes_administrator_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/linux-foundation/certified-kubernetes-administrator classtext-truncate relnofollow rolemenuitem > CKA /a> /li> /ul> /li> li idansible_devops_training_li rolepresentation classlist-group-item> a hrefhttps://ansibleconsulting.co.za/w/training classtext-truncate relnofollow rolemenuitem > Ansible /a> /li> li iddevsecops_devops_training_li rolepresentation classlist-group-item> a hrefhttps://cybersecuritytraining.tech/w/eccouncil/certified-devsecops-engineer classtext-truncate relnofollow rolemenuitem > DevSecOps /a> /li> li iddevops_aws_devops_training_li rolepresentation classlist-group-item> a hrefhttps://awstraining.co.za/w/aws-devops-engineer-professional classtext-truncate relnofollow rolemenuitem > AWS DevOps /a> /li> li iddevops_gkee_training_li rolepresentation classlist-group-item> a hrefhttps://googlecloudtraining.net/w/getting-started-with-google-kubernetes-engine classtext-truncate relnofollow rolemenuitem > GKE /a> /li> li iddevops_tool_engineer_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/open-technology/devops-engineer classtext-truncate relnofollow rolemenuitem > DevOps Engineer /a> /li> li iddocker_training_li rolepresentation classlist-group-item> a hrefhttps://dockertraining.co.za classtext-truncate relnofollow rolemenuitem > Docker /a> /li> li idkubernetes_training_li rolepresentation classlist-group-item> a hrefhttps://kubernetestraining.co.za/courses classtext-truncate relnofollow rolemenuitem > Kubernetes /a> /li> /ul> /li> li idpython_training_li rolepresentation classlist-group-item> a idpython_training onclickmenuItemToggle(python_training,navigation_31,event)> Python span idright-python_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-python_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_31 classcollapse content stylez-index:10;> li idpython_entry_level_training_li rolepresentation classlist-group-item> a hrefhttps://pythontraining.co.za/w/certified-entry-level-python-programmer classtext-truncate relnofollow rolemenuitem > PCEP /a> /li> li idpython_associate_level_training_li rolepresentation classlist-group-item> a hrefhttps://pythontraining.co.za/w/certified-associate-python-programming classtext-truncate relnofollow rolemenuitem > PCAP /a> /li> li idpython_proffesional_1_level_training_li rolepresentation classlist-group-item> a hrefhttps://pythontraining.co.za/w/certified-professional-python-programming-1 classtext-truncate relnofollow rolemenuitem > PCPP1 /a> /li> li idpython_professional_2_level_training_li rolepresentation classlist-group-item> a hrefhttps://pythontraining.co.za/w/certified-professional-in-python-programming-2 classtext-truncate relnofollow rolemenuitem > PCPP2 /a> /li> li idpython_data_science_training_li rolepresentation classlist-group-item> a hrefhttps://pythontraining.co.za/w/python-data-science-training classtext-truncate relnofollow rolemenuitem > Data Science /a> /li> li idpython_entry_level_data_analyst_training_li rolepresentation classlist-group-item> a hrefhttps://pythontraining.co.za/w/certified-entry-level-data-analyst-with-python classtext-truncate relnofollow rolemenuitem > PCED /a> /li> li idpython_associate_data_analyst_training_li rolepresentation classlist-group-item> a hrefhttps://pythontraining.co.za/w/certified-associate-data-analyst-with-python classtext-truncate relnofollow rolemenuitem > PCAD /a> /li> /ul> /li> li idbig_data_training_li rolepresentation classlist-group-item> a idbig_data_training onclickmenuItemToggle(big_data_training,navigation_32,event)> Big Data span idright-big_data_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-big_data_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_32 classcollapse content stylez-index:10;> li idhadoop_training_li rolepresentation classlist-group-item> a hrefhttps://bigdata.co.za/w/hadoop-training classtext-truncate relnofollow rolemenuitem > Hadoop /a> /li> li idhive_training_li rolepresentation classlist-group-item> a hrefhttps://bigdata.co.za/w/hive-training classtext-truncate relnofollow rolemenuitem > Hive /a> /li> li idkafka_training_li rolepresentation classlist-group-item> a hrefhttps://bigdata.co.za/w/kafka-training classtext-truncate relnofollow rolemenuitem > Kafka /a> /li> li idspark_training_li rolepresentation classlist-group-item> a hrefhttps://bigdata.co.za/w/spark-training classtext-truncate relnofollow rolemenuitem > Spark /a> /li> li idgcp_dataproc_li rolepresentation classlist-group-item> a hrefhttps://googlecloudtraining.net/w/gcp/courses/google-cloud-dataproc classtext-truncate relnofollow rolemenuitem > GCP Dataproc /a> /li> li idgcp_big_data_machine_learning_li rolepresentation classlist-group-item> a hrefhttps://googlecloudtraining.net/w/gcp/courses/big-data-machine-learning classtext-truncate relnofollow rolemenuitem > GCP Big Data /a> /li> li iddata_analyst_li rolepresentation classlist-group-item> a hrefhttps://bigdata.co.za/data-analyst-courses classtext-truncate relnofollow rolemenuitem > Power BI /a> /li> /ul> /li> li idphp_training_li rolepresentation classlist-group-item> a idphp_training onclickmenuItemToggle(php_training,navigation_33,event)> PHP span idright-php_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-php_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_33 classcollapse content stylez-index:10;> li idphp_fundamentals_training_li rolepresentation classlist-group-item> a hrefhttps://phptraining.tech/w/courses/php-fundamentals classtext-truncate relnofollow rolemenuitem > PHP Fundamentals /a> /li> li idphp_intermediate_training_li rolepresentation classlist-group-item> a hrefhttps://phptraining.tech/w/courses/php-intermediate classtext-truncate relnofollow rolemenuitem > PHP Intermediate /a> /li> li idphp_advanced_training_li rolepresentation classlist-group-item> a hrefhttps://phptraining.tech/w/courses/php-advanced classtext-truncate relnofollow rolemenuitem > PHP Advanced /a> /li> li idphp_laravel_training_li rolepresentation classlist-group-item> a hrefhttps://phptraining.tech/w/courses/laravel classtext-truncate relnofollow rolemenuitem > Laravel /a> /li> /ul> /li> li idjavascript_training_li rolepresentation classlist-group-item> a idjavascript_training onclickmenuItemToggle(javascript_training,navigation_34,event)> JavaScript span idright-javascript_training classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-javascript_training classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_34 classcollapse content stylez-index:10;> li idjavascript_essentials_training_li rolepresentation classlist-group-item> a hrefhttps://javascripttraining.co.za/w/javascript-essentials classtext-truncate relnofollow rolemenuitem > Essentials /a> /li> li idjavascript_client_side_training_li rolepresentation classlist-group-item> a hrefhttps://javascripttraining.co.za/w/javascript-for-browser-apis classtext-truncate relnofollow rolemenuitem > Client Side /a> /li> li idjavascript_server_side_training_li rolepresentation classlist-group-item> a hrefhttps://javascripttraining.co.za/w/server-side-javascript-with-nodejs classtext-truncate relnofollow rolemenuitem > Server Side /a> /li> li idjavascript_angular_training_li rolepresentation classlist-group-item> a hrefhttps://angulartraining.co.za/courses classtext-truncate relnofollow rolemenuitem > Angular /a> /li> li idjavascript_vue_training_li rolepresentation classlist-group-item> a hrefhttps://javascripttraining.co.za/w/vue-course classtext-truncate relnofollow rolemenuitem > Vue /a> /li> /ul> /li> li idrabbitmq_training_li rolepresentation classlist-group-item> a hrefhttps://rabbitmq.co.za/#training-course-objectives classtext-truncate relnofollow rolemenuitem > RabbitMQ /a> /li> li idfreebsd_training_li rolepresentation classlist-group-item> a hrefhttps://linuxcertification.co.za/w/lpi/open-technology/bsd-specialist classtext-truncate relnofollow rolemenuitem > BSD Specialist /a> /li> li idandroid_training_li rolepresentation classlist-group-item> a hrefhttps://androidtraining.co.za classtext-truncate relnofollow rolemenuitem > Android /a> /li> li idtraining_catalogue_li rolepresentation classlist-group-item> a hrefhttps://training.jumpingbean.info/shop classtext-truncate relnofollow rolemenuitem target_blank> Catalogue /a> /li> /ul>/div> div idother>h2>About Us/h2> ul idnavigation_35 classmenu> li idjumping_bean_about_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/about classtext-truncate relnofollow rolemenuitem > About /a> /li> li idjumping-bean-blogs_li rolepresentation classlist-group-item> a hrefhttps://blogs.jumpingbean.info classtext-truncate relnofollow rolemenuitem target_blank> Blogs /a> /li> li iddivisions_li rolepresentation classlist-group-item> a iddivisions onclickmenuItemToggle(divisions,navigation_36,event)> Divisions span idright-divisions classd-inline>svg classlexicon-icon lexicon-icon-angle-right rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-right />/svg>/span> span iddown-divisions classd-none>svg classlexicon-icon lexicon-icon-angle-down rolepresentation >use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#angle-down />/svg>/span> /a> ul idnavigation_36 classcollapse content stylez-index:10;> li idcyber_security_shop_li rolepresentation classlist-group-item> a hrefhttps://cybersecurity.supplies/shop classtext-truncate relnofollow rolemenuitem target_blank> Cyber Security Store /a> /li> li idtrainers_for_hire_li rolepresentation classlist-group-item> a hrefhttps://trainersforhire.tech classtext-truncate relnofollow rolemenuitem target_blank> Trainers for Hire /a> /li> li idtrainig_for_africa_li rolepresentation classlist-group-item> a hrefhttps://trainingfor.africa classtext-truncate relnofollow rolemenuitem target_blank> Training for Africa /a> /li> li identerprise_hardware_li rolepresentation classlist-group-item> a hrefhttps://enterprisehardware.africa classtext-truncate relnofollow rolemenuitem target_blank> Enterprise Hardware /a> /li> /ul> /li> li idcontact_us_li rolepresentation classlist-group-item> a hrefhttps://jumpingbean.co.za/contact#contactus classtext-truncate relnofollow rolemenuitem target_blank> Contact Us /a> /li> /ul>/div> /div> /nav>/div>script> function initializeMenu() { var tab1 document.querySelector(#jb-menu-tab1); var tab2 document.querySelector(#jb-menu-tab2); var tab3 document.querySelector(#jb-menu-tab3); var tab4 document.querySelector(#jb-menu-tab4); var buildmenu document.querySelector(#build); var supportmenu document.querySelector(#support); var trainmenu document.querySelector(#train); var othermenu document.querySelector(#other); var visible false; var active; var nav document.querySelector(#jb-nav); var jbmenu document.querySelector(#menu-container); // Event listener for mouse leave nav.addEventListener(mouseleave, function () { if (visible && active) { nav.classList.remove(jb-nav-show); nav.classList.add(jb-nav-hide); visible false; active ; } }); // Event listeners for touch events let touchXStart; nav.addEventListener(touchstart, function (e) { touchXStart e.changedTouches0.pageX; }); nav.addEventListener(touchend, function (e) { if (touchXStart - e.changedTouches0.pageX > 25) { nav.classList.remove(jb-nav-show); nav.classList.add(jb-nav-hide); visible false; active ; } }); // Expand menu items based on current URL // Function to toggle tabs function tabToggle(e, targetTab, menu) { nav.classList.remove(jb-nav); if (visible && active targetTab) { nav.classList.remove(jb-nav-show); nav.classList.add(jb-nav-hide); visible false; } else { removeMenus(); jbmenu.appendChild(menu); nav.classList.remove(jb-nav-hide); nav.classList.add(jb-nav-show); visible true; } active targetTab; e.stopPropagation(); } // Function to handle touch start function touchStart(e) { touchXStart e.changedTouches0.pageX; e.preventDefault(); } // Function to handle touch end function touchEnd(e, tab, menu) { if (e.changedTouches0.pageX - touchXStart > 25) { tabToggle(e, tab, menu); } } // Attach event listeners to tabs tab1.addEventListener(click, function (e) { tabToggle(e, tab1, buildmenu); }); tab1.addEventListener(touchstart, touchStart); tab1.addEventListener(touchend, function (e) { touchEnd(e, tab1, buildmenu); }); tab2.addEventListener(click, function (e) { tabToggle(e, tab2, supportmenu); }); tab2.addEventListener(touchstart, touchStart); tab2.addEventListener(touchend, function (e) { touchEnd(e, tab2, supportmenu); }); tab3.addEventListener(click, function (e) { tabToggle(e, tab3, trainmenu); }); tab3.addEventListener(touchstart, touchStart); tab3.addEventListener(touchend, function (e) { touchEnd(e, tab3, trainmenu); }); tab4.addEventListener(click, function (e) { tabToggle(e, tab4, othermenu); }); tab4.addEventListener(touchstart, touchStart); tab4.addEventListener(touchend, function (e) { touchEnd(e, tab4, othermenu); }); // Function to remove menus function removeMenus() { try { supportmenu jbmenu.removeChild(supportmenu); } catch (e) { } try { trainmenu jbmenu.removeChild(trainmenu); } catch (e) { } try { buildmenu jbmenu.removeChild(buildmenu); } catch (e) { } try { othermenu jbmenu.removeChild(othermenu); } catch (e) { } } // Clean up on beforeNavigate try { Liferay.on(beforeNavigate, function (event) { if (visible) { nav.classList.remove(jb-nav-show); visible false; } }); } catch (e) { //console.log(e); } } function expand_active_menu(){ // Expand menu items based on current URL } // Initialize menu on page load and after navigation document.addEventListener(DOMContentLoaded, function () { initializeMenu(); }); Liferay.on(allPortletsReady, function () { initializeMenu(); expand_active_menu(); }); Liferay.on(endNavigate, function () { initializeMenu(); }); /script>style>#navigation * .list-group-item { background-color: hsl(21 100% 65%);}.jb-menu { background-color: #ff5a00;}#jb-menu-tab1 { background-color: #ff5a00;}#jb-menu-tab2 { background-color: #ff5a00;}#jb-menu-tab3 { background-color: #ff5a00;}#jb-menu-tab4 { background-color: #ff5a00; }#build > ul, #train >ul, #support > ul , #other > ul{ scrollbar-color: hsl(21 100% 43%) #ff5a00!important; background-color: hsl(21 100% 65%) !important;}#build >ul > li, #train > ul > li, #support > ul > li, #other > ul > li { border: 1px solid hsl(21 100% 43%) !important;}/style> div classd-flex flex-column flex-fill position-relative idwrapper stylebackground-color: #f6be00> section idcontent> div classlayout-content portlet-layout idmain-content rolemain> div classlfr-layout-structure-item-banner lfr-layout-structure-item-e7432cb6-3f65-775d-c3f8-74a5b5a14f8e style--background-image-file-entry-id:6302410;--lfr-background-image-e7432cb6-3f65-775d-c3f8-74a5b5a14f8e: url(/documents/d/ansible-consulting-training/yellow-arrow-led-lights-ansible-devops-consulting-jpg); idodft> style>@media (max-width:300px){#odft{background-image: url(/o/adaptive-media/image/6302410/thumbnail-300x300/yellow-arrow-led-lights-ansible-devops-consulting.jpg?t1671226734404) !important;}}@media (max-width:1000px) and (min-width:300px){#odft{background-image: url(/o/adaptive-media/image/6302410/Preview-1000x0/yellow-arrow-led-lights-ansible-devops-consulting.jpg?t1671226734404) !important;}}/style> div idfragment-a067c716-a351-25c7-24d4-2bedf16f1785> div idheader rolebanner classcontent-centre> div classtext-on-image stylebackground-color: rgba(255,106,6,0.6);> h1 data-lfr-editable-idbanner-text data-lfr-editable-typetext idbanner-text-Ansible Labs>Ansible Labs/h1> /div> div classlearn-more stylemargin-bottom:15px; background-color: rgba(255,106,6,0.6);>a href#ansible-consulting-training data-lfr-editable-idbanner-link data-lfr-editable-typelink>Learn More/a> /div> div styledisplay:block;>a hrefhttps://jumpingbean.co.za target_blank> img src/documents/d/global/powered-by-jumping-bean-png?downloadtrue> /a> /div> /div> /div> style>#header { background-size: cover; background-attachment: fixed; height: 100vh; margin-top: 0px;}#header .content-centre { min-height: 300px; width: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column;}#header .text-on-image { padding-top: 0.5em; padding-bottom: 0.5em; width: 100%; text-align: center; color: whitesmoke;}#header .text-on-image h1 { margin-bottom: 0px;}.learn-more { margin-top: 20px; font-size: 2em; font-weight: bolder; text-align: center; color: whitesmoke; padding: 0.5em; border-radius: 15px 50px;}.learn-more a, .learn-more a:visited,.learn-more a:hover{ text-decoration:none; color: whitesmoke;}/style> script typemodule>const configuration {showPoweredBy:block,bannerColour:255,106,6,0.6}; const fragmentElement document.querySelector(#fragment-a067c716-a351-25c7-24d4-2bedf16f1785); const fragmentEntryLinkNamespace cpuf; const fragmentNamespace cpuf; const layoutMode view;//console.group(banner fragment);//console.log(fragmentElement, fragmentElement);//console.log(configuration, configuration);//console.groupEnd();;/script>/div>div classlfr-layout-structure-item-com-liferay-site-navigation-menu-web-portlet-sitenavigationmenuportlet lfr-layout-structure-item-24f40439-bc8b-87f1-a011-153e1d432859 style> div idfragment-78b3b116-881d-f7b2-fcb0-fdfd9a48a059> div classportlet-boundary portlet-boundary_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_ portlet-static portlet-static-end portlet-decorate portlet-navigation idp_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh_>span idp_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh>/span> section classportlet idportlet_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh> div classportlet-content> div classautofit-float autofit-row portlet-header> div classautofit-col autofit-col-expand> h2 classportlet-title-text>Menu Display/h2> /div> div classautofit-col autofit-col-end> div classautofit-section> /div> /div> /div> div class portlet-content-container> div classportlet-body> style> /* Style the navigation menu */ .topnav { position: relative; padding-left: 25px; } /* Hide the links inside the navigation menu */ .topnav #menu-links { display: none; } /* Style navigation menu links */ .topnav a { color: whitesmoke; padding: 14px 16px; text-decoration: none; font-size: 2em; font-weight: bolder; display: block; text-align: center; } /* Style the hamburger menu button */ .topnav button.icon { background: transparent; border: 0; display: block; position: relative; right: 0; top: 0; padding: 14px 16px; cursor: pointer; } .topnav button.icon .clay-icon { fill: whitesmoke; height: 20px; width: 20px; vertical-align: middle; } /* Add a grey background color on mouse-over */ .topnav a:hover { background-color: rgba(0, 0, 0, 0.1); color: black; } /* Style the ul and li elements */ .topnav ul { list-style-type: none; margin: 0; padding: 0; } /* Submenu styling */ .topnav .submenu { display: none; margin-left: 1rem; transition: opacity 0.2s ease-in-out; opacity: 0; } .topnav .submenu.active { display: block; opacity: 1; } .topnav .submenu a { font-size: 1.5em; padding: 10px 20px; text-align: left; } .topnav .has-submenu .toggle-submenu { display: none; cursor: pointer; margin-left: 5px; } .topnav .has-submenu .toggle-submenu .lexicon-icon { fill: whitesmoke; height: 16px; width: 16px; vertical-align: middle; } /* Wrapper for inline title and caret in mobile */ .topnav .nav-item-wrapper { display: flex; align-items: center; } .topnav .nav-item-wrapper .nav-link { display: inline-block; flex-grow: 1; } .topnav .nav-item-wrapper .toggle-submenu { display: inline-block; padding: 10px; } /* Desktop styles */ @media (min-width: 769px) { .topnav { display: flex; align-items: center; justify-content: center; } .topnav button.icon { display: none; } .topnav #menu-links { display: flex !important; flex-grow: 1; justify-content: center; } .topnav .nav-menu { display: flex; flex-direction: row; flex-wrap:wrap; justify-content: center; gap: 1em; } .topnav .nav-item { position: relative; } .topnav .submenu { position: absolute; top: 100%; left: 0; min-width: 200px; margin-left: 0; z-index: 1000; opacity: 0; } .topnav .nav-item.has-submenu:hover .submenu { display: block; opacity: 1; } .topnav .nav-item-wrapper .nav-link { display: block; } .topnav .nav-item-wrapper .toggle-submenu { display: none; } } /* Mobile styles */ @media (max-width: 768px) { .topnav .has-submenu .toggle-submenu { display: inline-block; } .topnav { overflow: hidden; } .topnav .submenu { margin-left: 1rem; opacity: 1; } .topnav a { font-size: 1.8em; text-align: left; } .topnav .submenu a { font-size: 1.3em; } }/style> !-- Custom macro to handle submenu items --> !-- Top Navigation Menu --> nav classtopnav idnavbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh rolenavigation aria-labelMain navigation>!-- Hamburger menu button --> button classicon hrefjavascript:void(0); aria-labelToggle menu aria-expandedfalse aria-controlsmenu-links> svg classlexicon-icon lexicon-icon-bars rolepresentation> use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#bars /> /svg> /button> !-- Navigation links (hidden by default on mobile) --> div idmenu-links> ul classnav-menu navbar-site>!-- Set href only for browsable items with a valid URL --> li classnav-item idlayout_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh_16548763 rolepresentation> div classnav-item-wrapper>a classnav-link text-truncate hrefhttps://ansibleconsulting.co.za/consulting-training> span classtext-truncate> !-- --> svg classlexicon-icon lexicon-icon-link rolepresentation> use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#link /> /svg> Home /span> /a> /div>/li> !-- Set href only for browsable items with a valid URL --> li classnav-item idlayout_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh_16548766 rolepresentation> div classnav-item-wrapper>a classnav-link text-truncate hrefhttps://ansibleconsulting.co.za/w/training> span classtext-truncate> !-- --> svg classlexicon-icon lexicon-icon-link rolepresentation> use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#link /> /svg> Training /span> /a> /div>/li> !-- Set href only for browsable items with a valid URL --> li classnav-item idlayout_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh_16548764 rolepresentation> div classnav-item-wrapper>a classnav-link text-truncate hrefhttps://ansibleconsulting.co.za/consulting> span classtext-truncate> !-- --> svg classlexicon-icon lexicon-icon-link rolepresentation> use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#link /> /svg> Consulting /span> /a> /div>/li> !-- Set href only for browsable items with a valid URL --> li classnav-item idlayout_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh_16549068 rolepresentation> div classnav-item-wrapper>a classnav-link text-truncate hrefhttps://ansibleconsulting.co.za/about> span classtext-truncate> !-- --> svg classlexicon-icon lexicon-icon-link rolepresentation> use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#link /> /svg> About /span> /a> /div>/li> !-- Set href only for browsable items with a valid URL --> li classnav-item idlayout_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh_16548862 rolepresentation> div classnav-item-wrapper>a classnav-link text-truncate hrefhttps://ansibleconsulting.co.za/contact-us> span classtext-truncate> !-- --> svg classlexicon-icon lexicon-icon-link rolepresentation> use xlink:hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#link /> /svg> Contact /span> /a> /div>/li> /ul> /div> /nav> /div> /div> /div> /section> /div> /div>/div>article classlfr-layout-structure-item-5bad29ee-19ee-147a-a02c-562134ca3cd4 lfr-layout-structure-item-container style> div classlfr-layout-structure-item-com-liferay-fragment-internal-renderer-contentobjectfragmentrenderer lfr-layout-structure-item-74148901-4b0e-8f04-4cfc-15210c1a657d style> div classjournal-content-article data-analytics-asset-id6844473 data-analytics-asset-titleAnsible Consulting & Training data-analytics-asset-typeweb-content data-analytics-web-content-resource-pk6844475> div classcontainer> div classrow> div classcol-md-12> h2 idansible-consulting-training>Accelerate DevOps Adoption with Our Comprehensive Ansible Training and Consulting Services/h2> p>Organisations are embracing DevOps practices to achieve agility, collaboration, and efficiency in their operations. Ansible, a powerful automation tool, plays a crucial role in enabling successful DevOps transformations. At Jumping Bean, we offer a comprehensive range of Ansible training and consulting services that empower businesses to adopt a DevOps approach and unlock the full potential of automation./p> h3>Ansible Training for DevOps Mastery:/h3> p>Our a hrefhttps://ansibleconsulting.co.za/training>Ansible training/a> program is specifically designed to equip individuals and teams with the skills and knowledge needed to thrive in a DevOps environment. With a comprehensive curriculum covering Ansible basics, advanced topics, and best practices, our training program ensures a solid foundation in Ansible automation. From playbooks and roles to infrastructure as code and continuous integration, our training prepares you to implement Ansible effectively within your DevOps workflows./p> h4>Key features of our Ansible training program include:/h4> ol> li>p>Hands-on Learning: We emphasize practical exercises, labs, and real-world use cases to ensure hands-on experience with Ansible automation./p>/li> li>p>Industry-Relevant Content: Our training materials are regularly updated to reflect the latest industry trends and best practices, enabling you to stay ahead in the dynamic DevOps landscape./p>/li> li>p>Experienced Instructors: Our instructors possess extensive practical experience in implementing Ansible in real-world scenarios, providing valuable insights and guidance throughout the training journey./p>/li> li>p>Supportive Learning Environment: We foster a collaborative and supportive learning environment, encouraging questions, discussions, and knowledge sharing among participants./p>/li> /ol> h3>Ansible Consulting for Seamless DevOps Integration:/h3> p>In addition to our training services, we offer expert a hrefhttps://ansibleconsulting.co.za/consulting>Ansible consulting/a> to assist organizations in seamlessly integrating Ansible into their DevOps practices. Our experienced consultants work closely with your teams to understand your unique business requirements and provide tailored solutions that align with your DevOps objectives. From initial assessments and roadmap planning to implementation and optimization, our consultants guide you through every step of the process./p> h4>Key benefits of our Ansible consulting services include:/h4> ol> li>p>DevOps Strategy Alignment: We help you align Ansible automation with your overall DevOps strategy, ensuring synergy and maximizing the benefits of automation within your organization./p>/li> li>p>Infrastructure Automation: Our consultants assist in automating infrastructure provisioning, configuration management, and deployment processes, enabling faster, more reliable releases./p>/li> li>p>Continuous Integration and Delivery (CI/CD): We guide you in implementing CI/CD pipelines using Ansible, allowing for rapid, repeatable, and consistent delivery of applications and infrastructure changes./p>/li> li>p>Collaboration and Cultural Shift: We support you in fostering a culture of collaboration and communication between development and operations teams, enabling seamless cooperation and knowledge sharing./p>/li> /ol> h3>Contact Us For Consulting & Training:/h3> p>At Jumping Bean, we are dedicated to empowering organizations on their DevOps journey through our comprehensive Ansible training and consulting services. With our training, your teams gain the skills and confidence to implement Ansible effectively within your DevOps workflows. Our consulting services provide expert guidance in integrating Ansible seamlessly into your operations, enabling infrastructure automation, CI/CD, and a collaborative DevOps culture. Partner with us to accelerate your DevOps adoption, drive efficiency, and achieve transformative results in your organization. Embrace the power of Ansible and take your DevOps practices to new heights today./p> /div> /div> /div> /div> /div>/article>div classlfr-layout-structure-item-bc6764b3-e5fe-8adb-8dac-284dc713ac0f lfr-layout-structure-item-container style--background-image-file-entry-id:6844376;--lfr-background-image-bc6764b3-e5fe-8adb-8dac-284dc713ac0f: url(/documents/d/ansible-consulting-training/contact-us-ansible-training-consulting); idwnti> style>@media (max-width:300px){#wnti{background-image: url(/o/adaptive-media/image/6844376/thumbnail-300x300/contact-us-ansible-training-consulting.jpg?t1687893062951) !important;}}@media (max-width:1000px) and (min-width:300px){#wnti{background-image: url(/o/adaptive-media/image/6844376/Preview-1000x0/contact-us-ansible-training-consulting.jpg?t1687893062951) !important;}}/style> div classlfr-layout-structure-item-com-liferay-fragment-internal-renderer-contentobjectfragmentrenderer lfr-layout-structure-item-cf7760f1-f0c6-c662-5bd5-7128c90f17d0 style> div classjournal-content-article data-analytics-asset-id171671 data-analytics-asset-titleContact Us Anchor Tag data-analytics-asset-typeweb-content data-analytics-web-content-resource-pk171673> div idcontactus styletext-align:center;> p>Please contact us for any queries via phone or our contact form. We will be happy to answer your questions./p> div> div> 3 Appian Place,373 Kent Avebr> Ferndale,br> 2194 South Africabr> Tel: +2711-781 8014 (Johannesburg)br> +2721-020-0111 (Cape Town)br> ZA /div> /div> /div> /div> /div> div classlfr-layout-structure-item-za-co-jumpingbean-liferay-contactformportlet lfr-layout-structure-item-071328b0-7e76-e656-5742-86b41207af90 style> div idfragment-28bfae92-1457-85a9-d895-19a96299f38b> link href/combo?browserIdother&minifierTypecss&themeIdjumpingbeanbasetheme_WAR_jumpingbeanbasetheme&languageIden_GB&za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy:%2Fo%2Fza.co.jumpingbean.liferay.contactform%2Fcss%2Fmain.css&t1762093142000 relstylesheet typetext/css> div classportlet-boundary portlet-boundary_za_co_jumpingbean_liferay_ContactFormPortlet_ portlet-static portlet-static-end portlet-decorate idp_p_id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_>span idp_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy>/span> section classportlet idportlet_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy> div classportlet-content> div classautofit-float autofit-row portlet-header> div classautofit-col autofit-col-expand> h2 classportlet-title-text>Contact Form/h2> /div> div classautofit-col autofit-col-end> div classautofit-section> /div> /div> /div> div class portlet-content-container> div classportlet-body> div classd-flex justify-content-center> div classcol-md-6 id> p>b>Jumping Bean Contact Form!/b>/p> form actionhttps://ansibleconsulting.co.za/consulting-training?p_p_idza_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy&p_p_lifecycle1&p_p_statenormal&p_p_modeview&_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_javax.portlet.actionlogInquiry&p_auth4ioxw9c3 classform contact-form data-fm-namespace_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_ id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_fm methodpost name_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_fm>input classfield form-control id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_formDate name_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_formDate typehidden value1764005761769> div classsheet> div classpanel-group panel-group-flush> fieldset class>legend classsr-only> Contact Form /legend> div classshow idContent rolepresentation> div classpanel-body> div classrow id> div classcol-md-12 id> div classform-group input-text-wrapper>label class control-label for_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_email> Email address span classreference-mark text-warning iduvlz____> svg aria-hiddentrue classlexicon-icon lexicon-icon-asterisk focusablefalse> use hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#asterisk /> /svg>/span> span classhide-accessible sr-only>Required/span> span classml-1 taglib-icon-help lfr-portal-tooltip tabindex0 titleThe email address to contact you on.> span classc-inner tabindex-1 idqfkd____> svg aria-hiddentrue classlexicon-icon lexicon-icon-question-circle-full focusablefalse> use hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#question-circle-full /> /svg>/span> span classtaglib-text hide-accessible sr-only>The email address to contact you on./span> /span> /label> input classfield form-control id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_email name_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_email placeholderYour email address typeemail value> /div> /div> /div> div classrow id> div classcol-md-12 id> div classform-group input-text-wrapper>label class control-label for_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_phonenumber> Contact number (optional) span classml-1 taglib-icon-help lfr-portal-tooltip tabindex0 titleYour contact number, with country and area code so we can contact you.> span classc-inner tabindex-1 idored____> svg aria-hiddentrue classlexicon-icon lexicon-icon-question-circle-full focusablefalse> use hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#question-circle-full /> /svg>/span> span classtaglib-text hide-accessible sr-only>Your contact number, with country and area code so we can contact you./span> /span> /label> input classfield form-control id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_phonenumber name_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_phonenumber placeholderYour contact number (optional) typetext value> /div> /div> /div> div classrow id> div classcol-md-12 id> div classform-group input-text-wrapper>label class control-label for_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_subject> Subject span classreference-mark text-warning idffek____> svg aria-hiddentrue classlexicon-icon lexicon-icon-asterisk focusablefalse> use hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#asterisk /> /svg>/span> span classhide-accessible sr-only>Required/span> span classml-1 taglib-icon-help lfr-portal-tooltip tabindex0 titleThe subject of your inquiry.> span classc-inner tabindex-1 idfehs____> svg aria-hiddentrue classlexicon-icon lexicon-icon-question-circle-full focusablefalse> use hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#question-circle-full /> /svg>/span> span classtaglib-text hide-accessible sr-only>The subject of your inquiry./span> /span> /label> input classfield form-control id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_subject name_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_subject placeholderA brief description of your inquiry typetext value> /div> /div> /div> div classrow id> div classcol-md-12 id> div classform-group input-text-wrapper>label class control-label for_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_message> Message span classreference-mark text-warning idjrxp____> svg aria-hiddentrue classlexicon-icon lexicon-icon-asterisk focusablefalse> use hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#asterisk /> /svg>/span> span classhide-accessible sr-only>Required/span> span classml-1 taglib-icon-help lfr-portal-tooltip tabindex0 titleLet us know what questions you have or how we may help you.> span classc-inner tabindex-1 idqcss____> svg aria-hiddentrue classlexicon-icon lexicon-icon-question-circle-full focusablefalse> use hrefhttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg#question-circle-full /> /svg>/span> span classtaglib-text hide-accessible sr-only>Let us know what questions you have or how we may help you./span> /span> /label> textarea classfield form-control id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_message name_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_message placeholderDetails of your inquiry>/textarea> /div> /div> /div> /div> /div> /fieldset> /div> /div> div stylemargin-top:1em;> script srchttps://www.google.com/recaptcha/api.js?hlen typetext/javascript>/script> label classhidden forg-recaptcha-response>Google Recaptcha/label> div classg-recaptcha data-sitekey6Lf3a5cUAAAAAI8Jxr5ivQ8F7LR-yCSbvqKVg2dd>/div> noscript> div styleheight: 525px; width: 302px;> div styleheight: 525px; position: relative; width: 302px;> div styleheight: 525px; position: absolute; width: 302px;>iframe frameborder0 scrollingno srchttps://www.google.com/recaptcha/api/fallback?k6Lf3a5cUAAAAAI8Jxr5ivQ8F7LR-yCSbvqKVg2dd styleborder-style: none; height: 525px; width: 302px;>/iframe> /div> div stylebackground: #F9F9F9; border: 1px solid #C1C1C1; border-radius: 3px; bottom: 25px; height: 60px; left: 0; margin: 0; padding: 0; position: absolute; right: 25px; width: 300px;>textarea aria-labelledby_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_g-recaptcha-response-error classg-recaptcha-response idg-recaptcha-response nameg-recaptcha-response styleborder: 1px solid #C1C1C1; height: 40px; margin: 10px 25px; padding: 0; resize: none; width: 250px;>/textarea> /div> /div> /div> /noscript> /div> div classbutton-holder >button classbtn btn-primary btn-primary id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_cogt typesubmit> span classlfr-btn-label>Submit/span> /button> /div> /form> /div> /div> /div> /div> /div> /section> /div> /div> /div>/div> /div> form action# aria-hiddentrue classhide idhrefFm methodpost namehrefFm>span>/span>button hidden typesubmit>Hidden/button>/form> /section> footer idfooter rolecontentinfo> div classcontainer> div classrow> div idfooter-one classcol-md-4>i classicon-map-marker>/i> Ansible Labsbr> 3 Appian Placebr>373 Kent Avenuebr> 2194br> Gauteng, South Africa /div> div idfooter-two classcol-md-4> a hrefhttps://jumpingbean.co.za> img stylemargin-bottom:15px; margin-top:15px; srchttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/powered-by-jumping-bean-footer.png altPowered by Jumping Bean/> /a> br> © Copyright Jumping Bean Solutions /div> div idfooter-three classcol-md-4> span>i classicon-phone>/i> JNB:+27-11-781-8014/span>br> span>i classicon-phone>/i> CPT:+27-21-020-0111/span>br> span>a hrefhttps://twitter.com/jumpingbeansa target_blank >i classicon-twitter>/i>/a>/span>br> span>a hrefhttps://www.facebook.com/jumpingbean.southafrica target_blank >i classicon-facebook>/i>/a>span>br> /div> /div> /div> /footer> /div>/div> script typetext/javascript> /script>script>/script> script typetext/javascript> function getValueByAttribute(node, attr) { return ( node.datasetattr || (node.parentElement && node.parentElement.datasetattr) ); } function sendDocumentDownloadedAnalyticsEvent(anchor) { var fileEntryId getValueByAttribute( anchor, analyticsFileEntryId ); var title getValueByAttribute( anchor, analyticsFileEntryTitle ); var version getValueByAttribute( anchor, analyticsFileEntryVersion ); if (fileEntryId) { Analytics.send(documentDownloaded, Document, { groupId: themeDisplay.getScopeGroupId(), fileEntryId, preview: !!window._com_liferay_document_library_analytics_isViewFileEntry, title, version, }); } } function handleDownloadClick(event) { if (window.Analytics) { if (event.target.nodeName.toLowerCase() a) { sendDocumentDownloadedAnalyticsEvent( event.target ); } else if ( event.target.parentNode && event.target.parentNode.nodeName.toLowerCase() a ) { sendDocumentDownloadedAnalyticsEvent( event.target.parentNode ); } else { var target event.target; var matchTextContent target.textContent && target.textContent.toLowerCase() download; var matchTitle target.title && target.title.toLowerCase() download; var matchAction target.action download; var matchLexiconIcon !!target.querySelector( .lexicon-icon-download ); var matchLexiconClassName target.classList.contains( lexicon-icon-download ); var matchParentTitle target.parentNode && target.parentNode.title && target.parentNode.title.toLowerCase() download; var matchParentLexiconClassName target.parentNode && target.parentNode.classList.contains(lexicon-icon-download); if ( matchTextContent || matchTitle || matchParentTitle || matchAction || matchLexiconIcon || matchLexiconClassName || matchParentLexiconClassName ) { var selectedFiles document.querySelectorAll( .form .custom-control-input:checked ); selectedFiles.forEach(({value}) > { var selectedFile document.querySelector( data-analytics-file-entry-id + value + ); sendDocumentDownloadedAnalyticsEvent( selectedFile ); }); } } } } Liferay.once(destroyPortlet, () > { document.body.removeEventListener( click, handleDownloadClick ); }); Liferay.once(portletReady, () > { document.body.addEventListener( click, handleDownloadClick ); });(function() {var $ AUI.$;var _ AUI._; var onShare function (data) { if (window.Analytics) { Analytics.send(shared, SocialBookmarks, { className: data.className, classPK: data.classPK, type: data.type, url: data.url, }); } }; var onDestroyPortlet function () { Liferay.detach(socialBookmarks:share, onShare); Liferay.detach(destroyPortlet, onDestroyPortlet); }; Liferay.on(socialBookmarks:share, onShare); Liferay.on(destroyPortlet, onDestroyPortlet);})();(function() {var $ AUI.$;var _ AUI._; var onVote function (event) { if (window.Analytics) { let title event.contentTitle; if (!title) { const dmNode document.querySelector( data-analytics-file-entry-id + event.classPK + ); if (dmNode) { title dmNode.dataset.analyticsFileEntryTitle; } } Analytics.send(VOTE, Ratings, { className: event.className, classPK: event.classPK, ratingType: event.ratingType, score: event.score, title, }); } }; var onDestroyPortlet function () { Liferay.detach(ratings:vote, onVote); Liferay.detach(destroyPortlet, onDestroyPortlet); }; Liferay.on(ratings:vote, onVote); Liferay.on(destroyPortlet, onDestroyPortlet);})();(function() {var $ AUI.$;var _ AUI._; var onDestroyPortlet function () { Liferay.detach(messagePosted, onMessagePosted); Liferay.detach(destroyPortlet, onDestroyPortlet); }; Liferay.on(destroyPortlet, onDestroyPortlet); var onMessagePosted function (event) { if (window.Analytics) { const eventProperties { className: event.className, classPK: event.classPK, commentId: event.commentId, text: event.text, }; const blogNode document.querySelector( data-analytics-asset-id + event.classPK + ); const dmNode document.querySelector( data-analytics-file-entry-id + event.classPK + ); if (blogNode) { eventProperties.title blogNode.dataset.analyticsAssetTitle; } else if (dmNode) { eventProperties.title dmNode.dataset.analyticsFileEntryTitle; } Analytics.send(posted, Comment, eventProperties); } }; Liferay.on(messagePosted, onMessagePosted);})();(function() {var $ AUI.$;var _ AUI._; function showDialog(uri, title) { Liferay.Util.openModal({ id: sharingDialog, iframeBodyCssClass: sharing-dialog, height: 475px, size: md, title: title, url: uri, }); } var Sharing { copyLink: function (link) { navigator.clipboard.writeText(link); Liferay.Util.openToast({ message: Copied link to the clipboard., }); }, manageCollaborators: function (classNameId, classPK) { var manageCollaboratorsParameters { classNameId: classNameId, classPK: classPK, }; var manageCollaboratorsURL Liferay.Util.PortletURL.createPortletURL( https://ansibleconsulting.co.za/group/ansible-consulting-training/~/control_panel/manage?p_p_idcom_liferay_sharing_web_portlet_ManageCollaboratorsPortlet&p_p_lifecycle0&p_p_statepop_up&p_p_authBgYw0Ur5, manageCollaboratorsParameters ); showDialog( manageCollaboratorsURL.toString(), Manage Collaborators ); }, share: function (classNameId, classPK, title) { var sharingParameters { classNameId: classNameId, classPK: classPK, }; var sharingURL Liferay.Util.PortletURL.createPortletURL( https://ansibleconsulting.co.za/group/ansible-consulting-training/~/control_panel/manage?p_p_idcom_liferay_sharing_web_portlet_SharingPortlet&p_p_lifecycle0&p_p_statepop_up&p_p_authnzgKtDdB, sharingParameters ); showDialog(sharingURL.toString(), title); }, }; Liferay.Sharing Sharing;})(); if (window.svg4everybody && Liferay.Data.ICONS_INLINE_SVG) { svg4everybody( { polyfill: true, validate: function (src, svg, use) { return !src || !src.startsWith(#); } } ); }(function() {var $ AUI.$;var _ AUI._; Liferay.Util.delegate( document, focusin, .portlet, function(event) { event.delegateTarget.closest(.portlet).classList.add(open); } ); Liferay.Util.delegate( document, focusout, .portlet, function(event) { event.delegateTarget.closest(.portlet).classList.remove(open); } );})(); // !CDATA Liferay.currentURL \x2f; Liferay.currentURLEncoded \x252F; // >(function() {var $ AUI.$;var _ AUI._; import(Liferay.ThemeDisplay.getPathContext() + /o/frontend-js-web/__liferay__/index.js).then( ({openToast}) > { AUI().use( liferay-session, function () { Liferay.Session new Liferay.SessionBase( { autoExtend: true, redirectOnExpire: false, redirectUrl: https\x3a\x2f\x2fansibleconsulting\x2eco\x2eza\x2fweb\x2fguest, sessionLength: 900, sessionTimeoutOffset: 70, warningLength: 60 } ); } ); } ) })(); Liferay.Portlet.register(za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy); Liferay.Portlet.onLoad( { canEditTitle: false, columnPos: 0, isStatic: end, namespacedId: p_p_id_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_, portletId: za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy, refreshURL: \x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d294845\x26p_p_id\x3dza_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252F, refreshURLData: {} } ); Liferay.Portlet.register(com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh); Liferay.Portlet.onLoad( { canEditTitle: false, columnPos: 0, isStatic: end, namespacedId: p_p_id_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh_, portletId: com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh, refreshURL: \x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d294845\x26p_p_id\x3dcom_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dnull\x26p_p_col_pos\x3dnull\x26p_p_col_count\x3dnull\x26p_p_static\x3d1\x26p_p_isolated\x3d1\x26currentURL\x3d\x252F, refreshURLData: {} } );/script>script typemodule>import {InfoItemActionHandler as ComponentModule} from /o/layout-taglib/__liferay__/index.js;AUI().use( liferay-menu, liferay-navigation-interaction, liferay-form,function(A) {{Liferay.component(infoItemActionComponent, new ComponentModule({executeInfoItemActionURL:https:\/\/ansibleconsulting.co.za\/c\/portal\/execute_info_item_action?p_l_modeview&plid294845,namespace:,spritemap:https:\/\/ansibleconsulting.co.za\/o\/jumping-bean-base-theme\/images\/clay\/icons.svg}), { destroyOnNavigate: true, portletId: });}(function() {var $ AUI.$;var _ AUI._; new Liferay.Menu(); var liferayNotices Liferay.Data.notices; for (var i 0; i liferayNotices.length; i++) { Liferay.Util.openToast(liferayNoticesi); }})();(function() {var $ AUI.$;var _ AUI._; Liferay.Form.register( { id: _za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_fm , fieldRules: { body: , custom: false, errorMessage: \u0054\u0068\u0065\u0020\u0053\u0075\u0062\u006a\u0065\u0063\u0074\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0069\u0073\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u002e, fieldName: _za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_subject, validatorName: required } , { body: , custom: false, errorMessage: \u0054\u0068\u0065\u0020\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0069\u0073\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u002e, fieldName: _za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_message, validatorName: required } , { body: , custom: false, errorMessage: \u0054\u0068\u0065\u0020\u0045\u006d\u0061\u0069\u006c\u0020\u0061\u0064\u0064\u0072\u0065\u0073\u0073\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0069\u0073\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u002e, fieldName: _za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_email, validatorName: required } , { body: , custom: false, errorMessage: , fieldName: _za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_email, validatorName: email } , validateOnBlur: true } ); var onDestroyPortlet function(event) { if (event.portletId za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy) { delete Liferay.Form._INSTANCES_za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_fm; } }; Liferay.on(destroyPortlet, onDestroyPortlet); Liferay.fire( _za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_formReady, { formName: _za_co_jumpingbean_liferay_ContactFormPortlet_INSTANCE_wowy_fm } );})();(function() {var $ AUI.$;var _ AUI._; // Store event listeners for cleanup var eventListeners { hamburgerClick: null, submenuClick: null, navLinkClick: null, outsideClick: null, resize: null }; // Initialize navigation function initNavigation() { console.log(Initializing navigation for navbar: #navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh at, new Date().toISOString()); // Clean up previous listeners if (eventListeners.hamburgerClick) { eventListeners.hamburgerClick.detach(); } if (eventListeners.submenuClick) { eventListeners.submenuClick.detach(); } if (eventListeners.navLinkClick) { eventListeners.navLinkClick.detach(); } if (eventListeners.outsideClick) { eventListeners.outsideClick.detach(); } if (eventListeners.resize) { A.one(window).detach(resize, eventListeners.resize); } var navigation A.one(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh); var menuLinks A.one(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh #menu-links); var hamburger A.one(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh .icon); var iconBasePath https://ansibleconsulting.co.za/o/jumping-bean-base-theme/images/clay/icons.svg || /o/icons/icons.svg; // Debug: Confirm elements exist console.log(Icon base path:, iconBasePath); console.log(Navigation:, navigation ? Found : Not found); console.log(Hamburger:, hamburger ? Found : Not found); console.log(MenuLinks:, menuLinks ? Found : Not found); // Function to toggle submenu and update icon function toggleSubmenu(submenu, toggle) { if (!submenu) return; console.log(Toggling submenu:, submenu.get(id)); var isActive submenu.hasClass(active); console.log(Submenu isActive:, isActive, Submenu ID:, submenu.get(id)); // Close all other submenus A.all(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh .submenu.active).each(function(otherSubmenu) { if (otherSubmenu ! submenu) { otherSubmenu.removeClass(active); otherSubmenu.attr(aria-expanded, false); var otherParent otherSubmenu.ancestor(.has-submenu); if (otherParent) { var otherToggle otherParent.one(.toggle-submenu); if (otherToggle) { var icon otherToggle.one(.lexicon-icon use); if (icon) { icon.attr(xlink:href, iconBasePath+#angle-down); otherToggle.attr(aria-expanded, false); } else { console.log(No lexicon-icon use found in toggle-submenu for submenu:, otherSubmenu.get(id)); } } else { console.log(No toggle-submenu found for submenu:, otherSubmenu.get(id)); } } else { console.log(No has-submenu parent found for submenu:, otherSubmenu.get(id)); } } }); // Toggle current submenu if (!isActive) { submenu.addClass(active); submenu.attr(aria-expanded, true); toggle.attr(aria-expanded, true); var icon toggle.one(.lexicon-icon use); if (icon) { icon.attr(xlink:href, iconBasePath+#angle-up); console.log(Submenu opened:, submenu.get(id)); } else { console.log(No lexicon-icon use found in toggle for submenu:, submenu.get(id)); } } else { submenu.removeClass(active); submenu.attr(aria-expanded, false); toggle.attr(aria-expanded, false); var icon toggle.one(.lexicon-icon use); if (icon) { icon.attr(xlink:href, iconBasePath+#angle-down); console.log(Submenu closed:, submenu.get(id)); } else { console.log(No lexicon-icon use found in toggle for submenu:, submenu.get(id)); } } } // Toggle main menu if (hamburger) { eventListeners.hamburgerClick hamburger.on(click, function(event) { event.preventDefault(); var menuLinks A.one(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh #menu-links); console.log(MenuLinks:, menuLinks ? Found : Not found); var isExpanded hamburger.attr(aria-expanded) true; console.log(Hamburger clicked, isExpanded:, isExpanded); hamburger.attr(aria-expanded, !isExpanded); if (menuLinks) { if (isExpanded) { console.log(setting to none...); menuLinks.setStyle(display, none); } else { console.log(setting to block...); menuLinks.setStyle(display, block); } console.log(MenuLinks display set to:, menuLinks.getStyle(display)); } }); } // Toggle submenus on mobile via toggle button if (navigation) { eventListeners.submenuClick navigation.delegate(click, function(event) { if (A.one(body).get(winWidth) 768) { var toggle event.currentTarget; event.preventDefault(); var submenu toggle.ancestor(.has-submenu).one(.submenu); console.log(Toggle button clicked, Submenu:, submenu ? Found : Not found); toggleSubmenu(submenu, toggle); } }, .has-submenu .toggle-submenu); // Toggle submenus on mobile via nav-link click for non-browsable items eventListeners.navLinkClick navigation.delegate(click, function(event) { if (A.one(body).get(winWidth) 768) { var link event.currentTarget; var href link.get(href); var hasSubmenu link.getAttribute(aria-haspopup) true; console.log(Nav link clicked, href:, href, hasSubmenu:, hasSubmenu); if (href javascript:void(0); && hasSubmenu) { event.preventDefault(); var parentItem link.ancestor(.has-submenu); var submenu parentItem.one(.submenu); var toggle parentItem.one(.toggle-submenu); console.log(Non-browsable nav link with submenu clicked, Submenu:, submenu ? Found : Not found); toggleSubmenu(submenu, toggle); } } }, .nav-link); } // Close menu and submenus when clicking outside eventListeners.outsideClick A.one(body).on(click, function(event) { if (A.one(body).get(winWidth) 768) { var navigation A.one(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh); if (!navigation.contains(event.target)) { console.log(Clicked outside navigation, closing menu and submenus); menuLinks.setStyle(display, none); hamburger.attr(aria-expanded, false); A.all(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh .submenu.active).each(function(submenu) { submenu.removeClass(active); submenu.attr(aria-expanded, false); var toggle submenu.ancestor(.has-submenu); if (toggle) { var icon toggle.one(.lexicon-icon use); if (icon) { icon.attr(xlink:href,iconBasePath+#angle-down); toggle.attr(aria-expanded, false); } } }); } } }); // Reset submenus on window resize to desktop eventListeners.resize function() { if (A.one(body).get(winWidth) > 768) { console.log(Resized to desktop, resetting submenus); A.all(#navbar_com_liferay_site_navigation_menu_web_portlet_SiteNavigationMenuPortlet_INSTANCE_nvlh .submenu.active).each(function(submenu) { submenu.removeClass(active); submenu.attr(aria-expanded, false); var toggle submenu.ancestor(.has-submenu); if (toggle) { var icon toggle.one(.lexicon-icon use); if (icon) { icon.attr(xlink:href, iconBasePath+#angle-down); toggle.attr(aria-expanded, false); } } }); if (menuLinks) { menuLinks.setStyle(display, flex); } if (hamburger) { hamburger.attr(aria-expanded, false); } } }; A.one(window).on(resize, eventListeners.resize); // Desktop navigation interaction Liferay.Data.NAV_INTERACTION_LIST_SELECTOR .navbar-site; Liferay.Data.NAV_LIST_SELECTOR .navbar-site; if (navigation) { navigation.plug(Liferay.NavigationInteraction); navigation.delegate( focus, () > { navigation.set(role, grid); }, div ); navigation.delegate( blur, () > { navigation.removeAttribute(role); }, div ); } } // Initialize on portlet load Liferay.on(allPortletsReady, function(event) { console.log(allPortletsReady fired at, new Date().toISOString(), event); initNavigation(); });})();});/script>script srchttps://ansibleconsulting.co.za/o/jumping-bean-base-theme/js/main.js?browserIdother&minifierTypejs&languageIden_GB&t1762093142000 typetext/javascript>/script>script typemodule>import {main} from /o/frontend-js-alert-support-web/__liferay__/index.js;{main();}/script>script typemodule>import {main} from /o/frontend-js-tabs-support-web/__liferay__/index.js;{main();}/script>script typemodule>import {main} from /o/frontend-js-dropdown-support-web/__liferay__/index.js;{main();}/script>script typemodule>import {main} from /o/frontend-js-tooltip-support-web/__liferay__/index.js;{main();}/script>script typemodule>import {main} from /o/frontend-js-collapse-support-web/__liferay__/index.js;{main();}/script>script typetext/javascript>Liferay.CustomDialogs {enabled: false};/script>script>/script>script typemodule>import {runThirdPartyCookiesInterval} from /o/cookies-banner-web/__liferay__/index.js;{runThirdPartyCookiesInterval();}/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]