Benutzerdefinierte Felder & API-Integration
Sie können eine unbegrenzte Anzahl an benutzerdefinierten Feldern zu einzelnen HireHop-Datensätzen (Aufträgen, Projekten, Betriebsmitteln, Prüfungen usw.) hinzufügen. Diese benutzerdefinierten Felder lassen sich nahtlos in Dokumentvorlagen einbinden. Wenn ein benutzerdefiniertes Feld in einem Datensatz vorhanden ist, wird es automatisch gefüllt; andernfalls bleibt es leer.
Derzeit werden benutzerdefinierte Felder vollständig unterstützt bei Aufträgen und Projekte unter Verwendung benutzerdefinierter JavaScript-Plugins.
Datenstruktur für benutzerdefinierte Felder
Beim Abrufen von Werten benutzerdefinierter Felder für einen aktiven Datensatz rufen Sie die Funktion _get_custom_field_value(field) auf. Sie gibt NULL zurück, wenn sie nicht festgelegt ist, einen einfachen string, oder eine strukturierte JavaScript object.
Für eine maximale Druckkontrolle in Dokumenten sollten benutzerdefinierte Felder als strukturiertes JSON-Objekt anstelle einer einfachen Zeichenkette gespeichert werden:
"field_name" :
{
"value" : "The value of the field",
"type" : "The field type, default is text, it can also be number, currency, text, date, html and array"
"format" : "For date type only, eg "ddd, dddddd tt" // = "Mon, 1 January 2017 12:00"
}
Objektschlüssel & Unterstützte Formate
| Parameter | Typ | Beschreibung |
| Wert | Beliebig | Die rohen Felddaten, gespeichert in einem beliebigen gültigen JavaScript-Format. |
| Typ | Zeichenkette | Teilt HireHop mit, wie die Daten in Dokumenten dargestellt werden sollen. Unterstützte Typen: text (Standard), number, currency, date, html und array (wird als JSON gerendert). |
| Format | Zeichenkette | Nur Datumstypen. Legt die Datums-/Uhrzeitausgabeformatierung basierend auf dem Gebietsschema des Benutzers fest. |
Regeln für die Datumsformatierung
Datumswerte müssen im Format yyyy-mm-dd hh:mm gespeichert werden. Sie können die folgenden Token und benutzerdefinierte Trennzeichen kombinieren:
dddddd– Langes Datum (z. B. 1. Januar 2026)ddddd– Kurzes Datum (z. B. 01/01/2026)dddd– Wochentag ausgeschrieben (z. B. Montag)ddd– Wochentag abgekürzt (z. B. Mo)tt– Uhrzeit (z. B. 12:36 Uhr)
Beispiel: dddd, dddddd tt ergibt “Montag, 1. Januar 2026 12:00”.
Benutzerdefinierte Felder speichern
Um aktualisierte Werte benutzerdefinierter Felder in unterstützten Bearbeitungsformularen zu speichern, verwenden Sie _save_custom_field_value(field, value).
- Stapelverarbeitung: Alle Änderungen müssen vor dem Absenden der Formularspeicherung geschrieben werden. Neue Werte werden mit bestehenden Feldern zusammengeführt; übereinstimmende Schlüsselnamen überschreiben bestehende Werte.
- Direkte API-Aufrufe: Beim direkten Aufrufen von Endpunkten wie
/php_functions.job_save.phpwird durch das Übergeben nur descustom_fieldsPOST-Parameter aktualisieren die benutzerdefinierten Felder, während alle anderen Datensatzattribute unverändert bleiben.
Benennungs- und Druckkonventionen
- Dokumenten-Zusammenführungs-Syntax: Stellen Sie in Dokumentvorlagen den Feldnamen einen einzelnen Unterstrich vorangestellt
_. Ein benutzerdefiniertes Feld mit dem Namenfield_namefür einen Auftrag wird zum Beispiel zusammengeführt alsjob:_field_name.
- Namensraum-Präfixe: Um Namenskonflikte bei verschiedenen Plugins oder Datensatztypen (z. B. gemeinsam genutzte Anlagen- und Testfelder) zu vermeiden, stellen Sie den Feldnamen einen eindeutigen Bezeichner voran (z. B. verwenden HireHop-Plugins
hh_Field Name).
- Groß-/Kleinschreibung: Dokumenten-Zusammenführungsetiketten sind nicht case-sensitive, aber JavaScript-Variablenverweise sind groß-/kleinschreibungsempfindlich.
Durchsuchbare benutzerdefinierte Felder
Das CUSTOM_INDEX Feld ist ein spezieller 45 Zeichen langer String-Wert (oder NULL) für benutzerdefinierte Suchen, Filterungen und Startseiten-Suchergebnisse reserviert.
Aktivieren der Startseiten-Suche
Um CUSTOM_INDEX in globale Suchspalten einzubeziehen, fügen Sie es an allSearchCols an und legen Sie das Label in Ihrem Plugin fest:
// Add CUSTOM_INDEX to search columns
if (allSearchCols.constructor === Array && doc_type == 0) {
allSearchCols.push("CUSTOM_INDEX");
}
// Define display label if not set in language settings
if (typeof(lang["customIndexTxt"]) == "undefined" || lang["customIndexTxt"] == "") {
lang["customIndexTxt"] = "Custom Field Name";
}
Anzeigen & Interagieren mit CUSTOM_INDEX
Blenden Sie auf Auftragsseiten das Kachelelement ein, um benutzerdefinierte Interaktionen einzubinden:
$("#job_tile_custom_index")
.show()
.click(function() {
window.open("https://www.my_external_app.com?id=" + job_data["CUSTOM_INDEX"], "newwindow");
});
Hinzufügen von CUSTOM_INDEX zum Bearbeiten von Widgets
Um Benutzern die Eingabe von CUSTOM_INDEX Werten im Auftragsbearbeitungs-Dialog zu ermöglichen, fügen Sie eine Formularzeile in das Widget ein:
if (typeof($.custom.job_edit) != "undefined") {
$.widget("custom.job_edit", $.custom.job_edit, {
_init_main: function() {
this._super(arguments);
// Inject custom field row into the edit table
var table = this.default_disc.closest("table");
var tr = $("<tr>").appendTo(table);
$("<td>", { html: lang.customIndexTxt + " :" }).appendTo(tr);
$("<input>", {
"name": "custom_index",
"class": "data_cell",
"data-field": "CUSTOM_INDEX",
"maxlength": 45
}).appendTo($("<td>").appendTo(tr));
// Adjust layout spacing
this.job_edit_memo.height(110);
}
});
}
Hinweis: Referenzieren Sie dieses Feld in Dokumenten als xxx:custom_index.
Globale benutzerdefinierte Felder
Um unternehmensweite globale Einstellungen oder Zähler zu speichern, verwenden Sie die Endpunkte für globale benutzerdefinierte Felder (/php_functions/custom_fields_global_load.php und /php_functions/custom_fields_global_save.php):
$("#saving_dialog").dialog("open");
$.ajax({
url: "/php_functions/custom_fields_global_save.php",
type: "post",
dataType: "json",
data: {
"fields": { "my_field": "any type of value" }
},
success: function(data) {
$("#saving_dialog").dialog("close");
if (typeof(data.error) !== "undefined") {
error_message(isNaN(parseInt(data.error)) ? data.error : lang.error[data.error]);
} else {
// Returns JSON object containing all global custom fields
}
},
error: function(jqXHR, textStatus, errorThrown) {
$("#saving_dialog").dialog("close");
error_message(lang.error[1] + " (" + errorThrown + ").");
}
});
Einstellungen vs. API-benutzerdefinierte Felder
Felder erstellt in Einstellungen > Benutzerdefinierte Felder teilen genau dieselbe zugrundeliegende Datenbankabfrage wie über die API eingespeiste benutzerdefinierte Felder. Das Einrichten eines Feldes in der Benutzeroberfläche stellt lediglich einen codelosen Builder bereit; das Löschen eines in der Benutzeroberfläche erstellten benutzerdefinierten Feldes löscht keine historischen Felddaten, die über die API weiterhin zugänglich bleiben.