WBCE CMS – Way Better Content Editing.
You are not logged in.
Hallo,
ich habe mal bei Ruud auf der Seite herum gestöbert und bin bei dem Modul Jobs hängengeblieben.
Danke Ruud
Ich habe das Modul ohne Probleme installiert, unter anderem habe ich dann dem Modul die deutsche Sprache spendiert und die Templates view_detail.htt und overview_item.htt sowie frondend.css ein wenig angepasst.
Ich lasse das mal hier, wenn jemand interresse hat.
DE.php
[== PHP ==]
<?php
/**
*
* @category page
* @package Jobs Module
* @author Reneesh, Ruud Eisinga - www.dev4me.nl
* @link http://www.dev4me.nl/
* @license http://www.gnu.org/licenses/gpl.html
* @platform WebsiteBaker 2.7.x
* @version 2.0
* @lastmodified May 22, 2012
*
* @translate DE Slugger
* @lastmodified November 28, 2024
*
*/
global $JT;
$JT['F_TITLE'] = 'Suchen Sie Ihren neuen Job';
$JT['F_COUNTRY'] = 'Land';
$JT['F_LOCATION'] = 'Standort';
$JT['F_CATEGORY'] = 'Kategorie';
$JT['F_COMPANY'] = 'Unternehmen';
$JT['F_FILTER'] = 'Ergebnisse Filtern';
$JT['F_ALL_COUNTRY'] = '-- Filter nach Land --';
$JT['F_ALL_COMPANY'] = '-- Filter nach Unternehmen--';
$JT['F_ALL_LOCATION'] = '-- Filter nach Standort --';
$JT['F_ALL_CATEGORY'] = '-- Filter nach Kategorie --';
$JT['F_RESET'] = 'Alle Anzeigen';
$JT['O_TITLE'] = 'Stellenangebote';
$JT['O_LINK'] = 'Aktion';
$JT['O_DETAILS'] = 'Details';
$JT['S_TITLE'] = 'Bewerbunsanfragen';
$JT['_JOB_ID'] = 'Job-ID';
$JT['_ACTIVE'] = 'Aktiv';
$JT['_VISIBLE'] = 'Details sichtbar halten, wenn nicht aktiv';
$JT['_VIS'] = 'Sichtbar';
$JT['_CATEGORY'] = 'Kategorie';
$JT['_COMPANY'] = 'Unternehmen';
$JT['_SHORT_DESC'] = 'Titel';
$JT['_FULL_DESC'] = 'Vollständige Beschreibung';
$JT['_LOCATION'] = 'Standort';
$JT['_COUNTRY'] = 'Land';
$JT['_EDUCATION'] = 'Erforderliche Ausbildung';
$JT['_RESOURCE_MANAGER'] = 'Kontakt';
$JT['_NOTIFICATION_ADDRESS'] = 'Benachrichtungsadresse';
$JT['_START_DATE'] = 'Stellenantritt';
$JT['_HOURS'] = 'Wochenarbeitszeit';
$JT['_TIMESTAMP'] = 'Erstellt';
$JT['_LAST_UPDATE'] = 'Letzte Änderung';
$JT['_APPLY'] = 'Klicken Sie hier, um sich für diese Stelle zu bewerben';
$JT['_REQUIRED'] = '<font color="red">* Pflichtfelder</font>';
$JT['_NAME'] = 'Name';
$JT['_EMAIL'] = 'Email-Addresse';
$JT['_HOME_PHONE'] = 'Telefon';
$JT['_CELL_PHONE'] = 'Mobiltelefon';
$JT['_CITY'] = 'Stadt';
$JT['_ZIP'] = 'Postleitzahl';
$JT['_COUNTRY'] = 'Land';
$JT['_STATE'] = 'Bundesland';
$JT['_ATTACHEMENT'] = 'Lebenslauf hochladen';
$JT['_COMMENT'] = 'Bewerbungsschreiben';
$JT['_SUBMISSION_DATE'] = '<strong>Bewerbungsschreiben erhalten</strong>';
$JT['_NO_RESULTS'] = 'Keine Ergebnisse für die aktuelle Seite';
$JT['_SUBMISSIONS'] = 'Einreichungen';
$JT['_EDIT'] = 'Bearbeiten';
$JT['_DELETE'] = 'Löschen';
$JT['_SUBMIT'] = 'Formular senden';
$JT['_RESET'] = 'Formular zurücksetzen';
$JT['_RETURN'] = 'Zur Liste zurückkehren';
$JT['_UPDATE'] = 'Details aktualisieren';
$JT['_ADD_NEW'] = 'Neue Stellenbeschreibungen hinzufügen';
$JT['_JOB_DETAILS'] = 'Stellendetails bearbeiten';
$JT['R_SUCCES'] = 'Vielen Dank für die Übermittlung Ihrer Angaben. Wir werden Sie so bald wie möglich kontaktieren.';
$JT['R_ERROR_1'] = 'Lebenslauf nicht hochgeladen. Bitte versuchen Sie es später erneut.';
$JT['R_ERROR_2'] = 'Zulässige Dateiformate für Lebensläufe sind .pdf, .doc und .txt.';
$JT['R_ERROR_3'] = 'Lebenslauf ist zu groß zum Hochladen. Die zulässige Größe für Lebensläufe beträgt 6 MB.';
$JT['R_NOT_ALL'] = 'Bitte füllen Sie alle erforderlichen Felder aus.';
$JT['SURE'] = "Möchten Sie diesen Datensatz wirklich löschen?";
$JT['NO'] = "<span style='background:#F00;color:#fff;padding:0 10px;'>Nein</span>";
$JT['YES'] = "<span style='background:#070;color:#fff;padding:0 10px;'>Ja</span>";
$JT['_MAIL_SUBJECT'] = 'Stellenausschreibung einreichen';
$JT['_MAIL_DETAIL'] = 'Stellendetails';
$JT['_MAIL_CANDIDATE'] = 'Kandidatendetails';
?>
view_detail.htt
[== HTML ==]
<h3 style="float:right"><a href="{RETURN}">{_RETURN}</a></h3>
<div class="jobstable">
<div class="jobstr">
<div class="jobstd"><img src="../media/logo200x200.png" alt="Logo" width="100" height="100"></div>
<div class="jobstd"><h1>{SHORT_DESC}</h1></div>
</div>
<div class="jobstr">
<div class="jobstd"><strong>{_TIMESTAMP}:</strong> {TIMESTAMP_DATE} ({TIMESTAMP_TIME})</div>
<div class="jobstd"><strong>{_LAST_UPDATE}:</strong> {LAST_UPDATE_DATE} ({LAST_UPDATE_TIME})</div>
</div>
<div class="jobstr">
<div class="jobstd"><strong>{_JOB_ID}:</strong> {JOB_ID}</div>
<div class="jobstd"><strong>{_CATEGORY}:</strong> {CATEGORY}</div>
</div>
<div class="jobstr">
<div class="jobstd"><strong>{_COMPANY}:</strong> {COMPANY}</div>
<div class="jobstd"><strong>{_LOCATION}:</strong> {LOCATION}</div>
</div>
<div class="jobstr">
<div class="jobstd"><strong>{_COUNTRY}:</strong> {COUNTRY}</div>
<div class="jobstd"><strong>{_EDUCATION}:</strong> {EDUCATION}</div>
</div>
<div class="jobstr">
<div class="jobstd"><strong>{_START_DATE}:</strong> {START_DATE}</div>
<div class="jobstd"><strong>{_HOURS}:</strong> {HOURS}</div>
</div>
<div class="jobstr">
<div class="jobstd"><strong>{_RESOURCE_MANAGER}:</strong> {RESOURCE_MANAGER}</div>
</div>
</div>
<hr/>
<div><h3>{_FULL_DESC}:</h3><br/>
<div style="padding:5px;">
{FULL_DESC}
</div>
</div>
<hr/>
<br/>
<h3 style="float:left;">
<a href="#" style="{STYLE_LINK}" onclick="document.getElementById('response').style.display = 'block'; this.style.display = 'none'; return false;">{_APPLY}</a>
</h3>
<div id="response" style="clear: both; {STYLE_FORM}">
<div style="{STYLE_SUCCESS}">{MESSAGE}</div>
<form name="add" action="{URL}#response" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="{ID}">
<input type="hidden" name="job_id" value="{JOB_ID}">
<table class="mod_jobs_table_b" cellpadding="3" cellspacing="5" border="0" width="100%">
<tr>
<td colspan="2">{_REQUIRED}</td>
</tr>
<tr>
<td><strong>{_NAME}:</strong> <font color='red'>*</font></td>
<td><input style="width:300px;" type="text" name="contact_name" value="{R_CONTACT_NAME}"></td>
</tr>
<tr>
<td><strong>{_EMAIL}:</strong> <font color='red'>*</font></td>
<td><input style="width:300px;" type="text" name="email" value="{R_EMAIL}"></td>
</tr>
<tr>
<td><strong>{_HOME_PHONE}:</strong> <font color='red'>*</font></td>
<td><input style="width:300px;" type="text" name="home_phone" value="{R_HOME_PHONE}"></td>
</tr>
<tr>
<td><strong>{_CELL_PHONE}:</strong></td>
<td><input style="width:300px;" type="text" name="cell_phone" value="{R_CELL_PHONE}"></td>
</tr>
<tr>
<td><strong>{_CITY}:</strong></td>
<td><input style="width:300px;" type="text" name="city" value="{R_CITY}"></td>
</tr>
<tr>
<td><strong>{_ZIP}:</strong></td>
<td><input style="width:300px;" type="text" name="zip" value="{R_ZIP}"></td>
</tr>
<tr>
<td><strong>{_STATE}:</strong></td>
<td><input style="width:300px;" type="text" name="state" value="{R_STATE}"></td>
</tr>
<tr>
<td><strong>{_COUNTRY}:</strong> <font color='red'>*</font></td>
<td><input style="width:300px;" type="text" name="country" value="{R_COUNTRY}"></td>
</tr>
<tr>
<td><strong>{_ATTACHEMENT}:</strong> <font color='red'>*</font></td>
<td><input type="file" name="resume"></td>
</tr>
<tr>
<td><strong>{_COMMENT}:</strong> <font color='red'>*</font></td>
<td><textarea style="width:300px;" name="comment" rows="5" cols="40">{R_COMMENT}</textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="Save" value="{_SUBMIT}"></td>
</tr>
</table>
</form>
</div>
<h3 style="float:right">
<a href="{RETURN}">{_RETURN}</a>
</h3>
Hier habe ich die Information im Kopf ein zwei Spalten verteilt damit es etwas übersichtlicher wird.
overview_item.htt
[== HTML ==]
<tr onclick="location.href='?j={ENCID}';">
<td>{JOB_ID}</td>
<td>{TIMESTAMP_DATE}</td>
<td>{CATEGORY}</td>
<td>{SHORT_DESC}</td>
<td>{COMPANY}</td>
<td>{LOCATION}</td>
<td>{COUNTRY}</td>
<td><a href="?j={ENCID}">{O_DETAILS}</a></td>
</tr>
Hier habe ich ein onclick für die Tabellenzeile ergänzt
frondend.css
[== HTML ==]
/* Code for view_detail.htt */
.jobstable {
display: table;
width: calc(100% - 1em);
padding: 5px;
.jobstr {
display:table-row;
}
.jobstd {
display: table-cell;
width: auto;
padding: 5px;
}
Ein paar Fragen habe ich bereits:
Wie und Wo bekommt man es hin, das der Prüfcode (Spam-Schutz) funktioniert, wenn man seine Bewerbung abschickt?
Wie bekomme ich die Zeile <tr> mit dem onklick anders dargestellt wenn dort eine Verlinkung ist
Die Benachrichtigung per Email scheint nicht zugehen, es kommen dazu keine Fehlermeldungen.
Last edited by Slugger (30.11.2024 17:40:34)
Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.5.4 • BE: 2.1.0 • PHP: 8.1.16 * 1. Projekt: FE: Simple responsive • BE: Argos * 2. Projekt: FE: hortal • BE: Argos * 3. Projekt: FE: WBCEZon • BE: Argos * 4. Projekt: FE: WBCETik • BE: Argos
Status Projekt 1-4: OK
Offline
Danke, aber mit PHP 8.3 / MariaDB 10.6.20 funktioniert das Modul (vermutlich mangels Backticks um die Tabellennamen) nicht mehr, d.h. das Speichern von Jobangeboten (die "update.php" des Moduls) läuft in eine Exception (leere Seite ohne Einträge im Errorlog).
Das Modul ist von 2012/2014, da müsste sicherlich einiges dran gemacht werden...
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Vielen Dank Florian für deine Rückmeldung.
Ich habe die Installation unter noch unter PHP 8.2 vorgenommen. Werde es aber im Hinterkopf behalten.
Die Backticks schaue ich mir mal an, das könnte bereits ein Hinweis sein was ich beobachten konnte.
Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.5.4 • BE: 2.1.0 • PHP: 8.1.16 * 1. Projekt: FE: Simple responsive • BE: Argos * 2. Projekt: FE: hortal • BE: Argos * 3. Projekt: FE: WBCEZon • BE: Argos * 4. Projekt: FE: WBCETik • BE: Argos
Status Projekt 1-4: OK
Offline
Also das mit den Backtics war falsch, das Problem ist/war wieder meine übliche Testkonstellation, in der WBCE in einem Unterverzeichnis der Domain läuft. Deshalb hatte der require-Link zur config.php in der update.php nicht gestimmt. Mit
require('../../config.php');
geht's.
Das Versenden des Formulars funktioniert prinzipiell auch. Allerdings wird da die Adresse des Einreichers als Absenderadresse genommen, und das mögen weder versendende noch empfangene Mailserver, wenn als sender "irgendwer@einedomain.tld" steht, der Versand aber tatsächlich über den Mailserver von "ganzwoanders.tld" läuft und der Empfänger am Ende noch "irgendwer@nochwasanderes.tld" ist. Deshallb ist es vom Goodwill des Mailservers abhängig, ob was ankommt.
Weiterhin müsste man sich mit dem Upload des Lebenslaufs was überlegen, weil die Dokumente aktuell ungeschützt auf dem Server liegen und deren Dateinamen leicht erratbar sind.
Ganz ehrlich, ich würde mir da eher was mit Items oder Oneforall zur Darstellung der Jobangebote und Miniform/MPForm fürs Bewerbungsformular überlegen.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Hi Florian,
nochmals danke für deine Bemühungen und Rückmeldung.
Also wenn das Formular für die Bewerbung abgeschickt wird, läuft es über die Einstellungen welche im WBCE bei den E-Mail Einstellungen vorgenommen wurden?
Und wegen dem Ordner wo die Bewerbungsschreiben liegen müsste doch eigentlich eine .htaccess reichen?
Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.5.4 • BE: 2.1.0 • PHP: 8.1.16 * 1. Projekt: FE: Simple responsive • BE: Argos * 2. Projekt: FE: hortal • BE: Argos * 3. Projekt: FE: WBCEZon • BE: Argos * 4. Projekt: FE: WBCETik • BE: Argos
Status Projekt 1-4: OK
Offline
Ja, es wird die Mail-Funktion von WBCE verwendet.
Man müsste es so wie bei Miniform umsetzen, d.h. die tatsächliche Absenderadresse als Einstellmöglichkeit im Backend und die Mailadresse des Einsenders dann als Reply-To übergeben.
Wegen der Dateianhänge - die ließen sich schon mit htaccess schützen, aber dann wird es umständlich da heran zu kommen, weil sie nicht mit der generierten Mail mitgesendet werden, und der Aufruf des Links erzeugt dann einen 403. Das heißt, man müsste entweder die Dateien (so wie beim Backup-Modul) immer mit einem nicht zu erratenden Zufallstring erweitern oder aber sie in einem htaccess-geschützten Unterverzeichnis unter /media speichern, damit sie wenigstens über die Medienverwaltung abrufbar sind (was allerdings auch erst zu testen wäre).
Ist alles keine Raketentechnologie, aber halt Fummelkram.
Die (dringend notwendige) Implementierung des Captchas ist nicht ohne. Ist auch leider besch... dokumentiert.
Das heißt, man müsste da nochmal einiges an Zeit rein investieren.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Pages: 1