WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 30.11.2024 17:36:55

Slugger
Member

Modul Jobs by Dev4me

Hallo,
ich habe mal bei Ruud auf der Seite herum gestöbert und bin bei dem Modul Jobs hängengeblieben.

Danke Ruud thumb_up

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:

  1. Wie und Wo bekommt man es hin, das der Prüfcode (Spam-Schutz) funktioniert, wenn man seine Bewerbung abschickt?

  2. Wie bekomme ich die Zeile <tr>  mit dem onklick anders dargestellt wenn dort eine Verlinkung ist

  3. 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

#2 02.12.2024 08:50:38

florian
Administrator

Re: Modul Jobs by Dev4me

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

#3 02.12.2024 11:46:04

Slugger
Member

Re: Modul Jobs by Dev4me

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

#4 02.12.2024 17:22:59

florian
Administrator

Re: Modul Jobs by Dev4me

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

#5 02.12.2024 17:58:00

Slugger
Member

Re: Modul Jobs by Dev4me

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

#6 03.12.2024 19:26:28

florian
Administrator

Re: Modul Jobs by Dev4me

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

Board footer

up