Kathöfer. größer schneller effizienter

Über uns

Familienunternehmen seit über 30 Jahren

Die Grundlage für unseren Erfolg sind unsere hochmotivierten Mitarbeiter, die über eine erstklassige Ausbildung und jahrelange Berufserfahrung verfügen. Ein gutes Betriebsklima und ein familiäres Miteinander sind uns dabei sehr wichtig. Darüber hinaus sorgen wir dafür, dass unsere Mitarbeiter mit allen notwendigen fachspezifischen Zusatzqualifikationen ausgerüstet werden. So ermöglichen wir die reibungslose Abwicklung eines jeden Auftrages – so komplex dieser auch sein mag.

Das von uns abgedeckte Leistungsspektrum erfordert einen modernen wie umfangreichen Maschinen- und Fuhrpark. Vom Minibagger bis zum 45-Tonnen Kettenbagger – wir verfügen über das optimale Gerät für nahezu jeden Einsatz. Derzeit beschäftigt unser Unternehmen über 140 qualifizierte Arbeitnehmer. Der gute Ruf der Hermann Kathöfer GmbH hat sich mittlerweile weit über die Stadtgrenzen Rietbergs hinaus herumgesprochen.

Durch Schnelligkeit und Flexibilität sind wir in der Vergangenheit für unsere Kunden ein Partner geworden, der die Bedürfnisse kennt, Anforderungen versteht und dort Hilft, wo er gebraucht wird. Immer getreu dem Motto: „Das Geschäft muss so gut sein, dass beide Parteien Spaß daran haben“.

Hermann Kathöfer

GEschäftsführer

ZUFRIEDENHEIT

0 %

ZUFRIEDENE KUNDEN

KUNDEN

0 +

die uns vertrauen.

PROJEKTE

0 +

fertiggestellte Projekte

MITARBEITER

0 +

unsere Stärke.

Kathöfer Wertstoff GmbH in Rietberg.

Entsorgung & Recycling

Wir bieten maßgeschneiderte Lösungen für Privat- und Gewerbekunden. Wählen Sie unten Ihren Bereich aus, um mehr über unsere Dienstleistungen zu erfahren.

) | Bedingung: Gesamte Website * * Erwartete Struktur: * Button-Widget -> Erweitert > CSS-Klassen: bewerbungsformular * -> Erweitert > Attribute: data-stelle|Schlepperfahrer / Maschinist * Formular -> Hidden Field mit ID: stelle (=> input#form-field-stelle) */ (function () { 'use strict'; var TRIGGER_SELECTOR = '.bewerbungsformular'; var DATA_ATTRIBUTE = 'data-stelle'; var FIELD_ID = 'form-field-stelle'; var FIELD_NAME = 'form_fields[stelle]'; var DEBUG = false; // auf true setzen zum Testen (Konsole) var currentStelle = ''; var retryTimer = null; function log() { if (DEBUG && window.console) { console.log.apply(console, ['[Bewerbung]'].concat([].slice.call(arguments))); } } /** Alle Instanzen des Hidden Fields einsammeln (Popup kann mehrfach im DOM liegen). */ function getFields() { var list = []; var byName = document.querySelectorAll('input[name="' + FIELD_NAME + '"]'); var byId = document.querySelectorAll('#' + FIELD_ID + ', [id^="' + FIELD_ID + '"]'); [].forEach.call(byName, function (el) { if (list.indexOf(el) === -1) { list.push(el); } }); [].forEach.call(byId, function (el) { if (el.tagName === 'INPUT' && list.indexOf(el) === -1) { list.push(el); } }); return list; } /** Wert in alle gefundenen Felder schreiben. Gibt true zurück, wenn mindestens eins befüllt wurde. */ function fillFields(value) { if (!value) { return false; } var fields = getFields(); if (!fields.length) { return false; } fields.forEach(function (field) { if (field.value !== value) { field.value = value; field.dispatchEvent(new Event('input', { bubbles: true })); field.dispatchEvent(new Event('change', { bubbles: true })); } }); log('Feld befüllt:', value, '(' + fields.length + 'x)'); return true; } /** * Elementor rendert das Popup erst beim Öffnen bzw. per AJAX. * Deshalb wird nach dem Klick bis zu 6 Sekunden lang wiederholt versucht zu befüllen. */ function fillWithRetry(value) { if (retryTimer) { clearInterval(retryTimer); retryTimer = null; } if (!value) { return; } if (fillFields(value)) { return; } var attempts = 0; retryTimer = setInterval(function () { attempts++; if (fillFields(value) || attempts > 60) { // 60 x 100ms = 6s clearInterval(retryTimer); retryTimer = null; } }, 100); } /** Wert des geklickten Buttons ermitteln – Attribut kann am Wrapper oder am inneren Element sitzen. */ function resolveStelle(target) { if (!target || !target.closest) { return ''; } var holder = target.closest('[' + DATA_ATTRIBUTE + ']'); if (holder) { return holder.getAttribute(DATA_ATTRIBUTE) || ''; } var trigger = target.closest(TRIGGER_SELECTOR); if (trigger) { var inner = trigger.querySelector('[' + DATA_ATTRIBUTE + ']'); if (inner) { return inner.getAttribute(DATA_ATTRIBUTE) || ''; } } return ''; } /* 1. Klick auf den Bewerbungs-Button (Capture-Phase) */ document.addEventListener('click', function (e) { var target = e.target; if (!target || !target.closest) { return; } if (!target.closest(TRIGGER_SELECTOR)) { return; } var value = resolveStelle(target); if (!value) { log('Kein ' + DATA_ATTRIBUTE + '-Wert am geklickten Button gefunden.'); return; } currentStelle = value; log('Klick erkannt, Stelle =', currentStelle); fillWithRetry(currentStelle); }, true); /* 2. Offizielles Elementor-Pro-Popup-Event (seit Pro 2.7) */ function bindPopupEvents($) { $(document).on('elementor/popup/show', function () { log('elementor/popup/show'); fillFields(currentStelle); setTimeout(function () { fillFields(currentStelle); }, 150); setTimeout(function () { fillFields(currentStelle); }, 600); }); // Nach erfolgreichem Absenden setzt Elementor das Formular zurück -> Wert neu setzen $(document).on('submit_success', function () { setTimeout(function () { fillFields(currentStelle); }, 300); }); } if (window.jQuery) { bindPopupEvents(window.jQuery); } else { document.addEventListener('DOMContentLoaded', function () { if (window.jQuery) { bindPopupEvents(window.jQuery); } }); } /* 3. Sicherheitsnetz: Popup-Markup wird nachträglich ins DOM geschoben. */ if (window.MutationObserver) { var observer = new MutationObserver(function (mutations) { if (!currentStelle) { return; } for (var i = 0; i < mutations.length; i++) { if (mutations[i].addedNodes && mutations[i].addedNodes.length) { fillFields(currentStelle); break; } } }); observer.observe(document.documentElement, { childList: true, subtree: true }); } })();