Browse code

Add reader module and extend API service to provide job details

Benjamin Roth authored on06/02/2023 17:22:18
Showing1 changed files
... ...
@@ -87,7 +87,13 @@
87 87
                             <dt>Eintrag vom:</dt><dd>{{ job.DatumAb ? job.DatumAb|date("d.m.Y") : '' }}</dd>
88 88
                         </dl>
89 89
                     </div>
90
-                    <p class="details-link"><a href="https://alox-personal.europersonal.com/stelle/{{ job.LinkSlug }}-{{ job.StelleUuid }}">Details</a></p>
90
+                    <p class="details-link">
91
+                        {% if detailsLink is defined %}
92
+                            <a href="{{ detailsLink }}?id={{ job.StelleUuid }}">Details</a>
93
+                        {% else %}
94
+                            <a href="https://alox-personal.europersonal.com/stelle/{{ job.LinkSlug }}-{{ job.StelleUuid }}">Details</a>
95
+                        {% endif %}
96
+                    </p>
91 97
                 </li>
92 98
             {% endfor %}
93 99
             </ul>
Browse code

Implement pagination

Benjamin Roth authored on03/02/2023 10:49:12
Showing1 changed files
... ...
@@ -91,6 +91,7 @@
91 91
                 </li>
92 92
             {% endfor %}
93 93
             </ul>
94
+            {{ pagination|raw }}
94 95
         </div>
95 96
     {% endif %}
96 97
 {% endblock %}
Browse code

Remove test options of autocomplete select

Benjamin Roth authored on02/02/2023 23:56:33
Showing1 changed files
... ...
@@ -11,8 +11,6 @@
11 11
                 <input type="hidden" id="filter-city-label-{{ id }}" name="filter_city_label" value="{{ formSetFilters.filter_city_label }}">
12 12
                 <select id="filter-city-{{ id }}" name="filter_city" data-placeholder="{{ formSetFilters.filter_city_label ?? 'PLZ/Ort' }}" autocomplete="off">
13 13
                     <option value="{{ formSetFilters.filter_city ?? '' }}">{{ formSetFilters.filter_city_label ?? 'PLZ/Ort' }}</option>
14
-                    <option value="49.44780,11.06830">Nürnberg</option>
15
-                    <option value="49.55000,10.88330">Herzogenaurach</option>
16 14
                 </select>
17 15
             </div>
18 16
             <div class="widget widget-text">
Browse code

Implement ajax controller for geo data retrieval

Benjamin Roth authored on02/02/2023 23:52:47
Showing1 changed files
... ...
@@ -49,6 +49,19 @@
49 49
             new TomSelect("#filter-city-{{ id }}",{
50 50
                 allowEmptyOption: true,
51 51
                 create: false,
52
+                valueField: 'latLon',
53
+                labelField: 'name',
54
+                searchField: 'name',
55
+                load: function(query, callback) {
56
+                    var url = '_geodb/getLatLon?q=' + encodeURIComponent(query);
57
+                    fetch(url)
58
+                        .then(response => response.json())
59
+                        .then(json => {
60
+                            callback(json.items);
61
+                        }).catch(() => {
62
+                        callback();
63
+                    });
64
+                },
52 65
                 onChange: function (values) {
53 66
                     let target = document.getElementById('filter-city-label-{{ id }}');
54 67
                     if (target !== undefined && this.activeOption.innerText !== undefined)
Browse code

Append stelle uuid to detail link

Benjamin Roth authored on02/02/2023 13:23:48
Showing1 changed files
... ...
@@ -76,6 +76,7 @@
76 76
                             <dt>Eintrag vom:</dt><dd>{{ job.DatumAb ? job.DatumAb|date("d.m.Y") : '' }}</dd>
77 77
                         </dl>
78 78
                     </div>
79
+                    <p class="details-link"><a href="https://alox-personal.europersonal.com/stelle/{{ job.LinkSlug }}-{{ job.StelleUuid }}">Details</a></p>
79 80
                 </li>
80 81
             {% endfor %}
81 82
             </ul>
Browse code

Add tom select dropdown for test purposes

Benjamin Roth authored on02/02/2023 13:15:02
Showing1 changed files
... ...
@@ -7,6 +7,17 @@
7 7
             <div class="widget widget-text">
8 8
                 <input type="text" name="filter_keywords" placeholder="Jobtitel" value="{{ formSetFilters.filter_keywords ?? '' }}">
9 9
             </div>
10
+            <div class="widget widget-autocomplete">
11
+                <input type="hidden" id="filter-city-label-{{ id }}" name="filter_city_label" value="{{ formSetFilters.filter_city_label }}">
12
+                <select id="filter-city-{{ id }}" name="filter_city" data-placeholder="{{ formSetFilters.filter_city_label ?? 'PLZ/Ort' }}" autocomplete="off">
13
+                    <option value="{{ formSetFilters.filter_city ?? '' }}">{{ formSetFilters.filter_city_label ?? 'PLZ/Ort' }}</option>
14
+                    <option value="49.44780,11.06830">Nürnberg</option>
15
+                    <option value="49.55000,10.88330">Herzogenaurach</option>
16
+                </select>
17
+            </div>
18
+            <div class="widget widget-text">
19
+                <input type="text" name="filter_radius" placeholder="Suchradius in km" value="{{ formSetFilters.filter_radius ?? '' }}">
20
+            </div>
10 21
             {% if filterVertragsarten is defined %}
11 22
                 <div class="widget widget-select">
12 23
                     <select name="filter_vertragsart">
... ...
@@ -33,6 +44,22 @@
33 44
         </div>
34 45
     </form>
35 46
 
47
+    <script>
48
+        document.addEventListener('DOMContentLoaded', function () {
49
+            new TomSelect("#filter-city-{{ id }}",{
50
+                allowEmptyOption: true,
51
+                create: false,
52
+                onChange: function (values) {
53
+                    let target = document.getElementById('filter-city-label-{{ id }}');
54
+                    if (target !== undefined && this.activeOption.innerText !== undefined)
55
+                    {
56
+                        target.value = this.activeOption.innerText
57
+                    }
58
+                }
59
+            });
60
+        }, false);
61
+    </script>
62
+
36 63
     {% if jobs is not defined %}
37 64
         <p>Es wurden keine Stellenangebote gefunden!</p>
38 65
     {% else %}
Browse code

Always show filters

Benjamin Roth authored on01/02/2023 22:45:31
Showing1 changed files
... ...
@@ -1,41 +1,41 @@
1 1
 {% extends '@Contao/block_unsearchable' %}
2 2
 
3 3
 {% block content %}
4
-    {% if jobs is not defined %}
5
-        <p>Es wurden keine Stellenangebote gefunden!</p>
6
-    {% else %}
7
-        <form class="filter" method="get">
8
-            <div class="formbody">
9
-                <input type="hidden" name="FORM_SUBMIT" value="{{ formSubmit }}">
10
-                <div class="widget widget-text">
11
-                    <input type="text" name="filter_keywords" placeholder="Jobtitel" value="{{ formSetFilters.filter_keywords ?? '' }}">
4
+    <form class="filter" method="get">
5
+        <div class="formbody">
6
+            <input type="hidden" name="FORM_SUBMIT" value="{{ formSubmit }}">
7
+            <div class="widget widget-text">
8
+                <input type="text" name="filter_keywords" placeholder="Jobtitel" value="{{ formSetFilters.filter_keywords ?? '' }}">
9
+            </div>
10
+            {% if filterVertragsarten is defined %}
11
+                <div class="widget widget-select">
12
+                    <select name="filter_vertragsart">
13
+                        <option value="">Art der Anstellung</option>
14
+                        {% for vertragsart in filterVertragsarten %}
15
+                            <option value="{{ vertragsart.ObjectUuid }}"{% if formSetFilters.filter_vertragsart is defined and formSetFilters.filter_vertragsart == vertragsart.ObjectUuid %} selected{% endif %}>{{ vertragsart.Bezeichnung }}</option>
16
+                        {% endfor %}
17
+                    </select>
12 18
                 </div>
13
-                {% if filterVertragsarten is defined %}
14
-                    <div class="widget widget-select">
15
-                        <select name="filter_vertragsart">
16
-                            <option value="">Art der Anstellung</option>
17
-                            {% for vertragsart in filterVertragsarten %}
18
-                                <option value="{{ vertragsart.ObjectUuid }}"{% if formSetFilters.filter_vertragsart is defined and formSetFilters.filter_vertragsart == vertragsart.ObjectUuid %} selected{% endif %}>{{ vertragsart.Bezeichnung }}</option>
19
-                            {% endfor %}
20
-                        </select>
21
-                    </div>
22
-                {% endif %}
23
-                {% if filterAbteilung is defined %}
24
-                    <div class="widget widget-select">
25
-                        <select name="filter_abteilung">
26
-                            <option value="">Unternehmensbereich / Abteilung</option>
27
-                            {% for abteilung in filterAbteilung %}
28
-                                <option value="{{ abteilung.ObjectUuid }}"{% if formSetFilters.filter_abteilung is defined and formSetFilters.filter_abteilung == abteilung.ObjectUuid %} selected{% endif %}>{{ abteilung.Bezeichnung }}</option>
29
-                            {% endfor %}
30
-                        </select>
31
-                    </div>
32
-                {% endif %}
33
-                <div class="widget widget-submit">
34
-                    <button type="submit">Suchen</button>
19
+            {% endif %}
20
+            {% if filterAbteilung is defined %}
21
+                <div class="widget widget-select">
22
+                    <select name="filter_abteilung">
23
+                        <option value="">Unternehmensbereich / Abteilung</option>
24
+                        {% for abteilung in filterAbteilung %}
25
+                            <option value="{{ abteilung.ObjectUuid }}"{% if formSetFilters.filter_abteilung is defined and formSetFilters.filter_abteilung == abteilung.ObjectUuid %} selected{% endif %}>{{ abteilung.Bezeichnung }}</option>
26
+                        {% endfor %}
27
+                    </select>
35 28
                 </div>
29
+            {% endif %}
30
+            <div class="widget widget-submit">
31
+                <button type="submit">Suchen</button>
36 32
             </div>
37
-        </form>
33
+        </div>
34
+    </form>
38 35
 
36
+    {% if jobs is not defined %}
37
+        <p>Es wurden keine Stellenangebote gefunden!</p>
38
+    {% else %}
39 39
         <div class="jobs">
40 40
             <ul>
41 41
             {% for job in jobs %}
Browse code

First iteration of filterable joblist

Benjamin Roth authored on01/02/2023 22:36:09
Showing1 changed files
... ...
@@ -0,0 +1,57 @@
1
+{% extends '@Contao/block_unsearchable' %}
2
+
3
+{% block content %}
4
+    {% if jobs is not defined %}
5
+        <p>Es wurden keine Stellenangebote gefunden!</p>
6
+    {% else %}
7
+        <form class="filter" method="get">
8
+            <div class="formbody">
9
+                <input type="hidden" name="FORM_SUBMIT" value="{{ formSubmit }}">
10
+                <div class="widget widget-text">
11
+                    <input type="text" name="filter_keywords" placeholder="Jobtitel" value="{{ formSetFilters.filter_keywords ?? '' }}">
12
+                </div>
13
+                {% if filterVertragsarten is defined %}
14
+                    <div class="widget widget-select">
15
+                        <select name="filter_vertragsart">
16
+                            <option value="">Art der Anstellung</option>
17
+                            {% for vertragsart in filterVertragsarten %}
18
+                                <option value="{{ vertragsart.ObjectUuid }}"{% if formSetFilters.filter_vertragsart is defined and formSetFilters.filter_vertragsart == vertragsart.ObjectUuid %} selected{% endif %}>{{ vertragsart.Bezeichnung }}</option>
19
+                            {% endfor %}
20
+                        </select>
21
+                    </div>
22
+                {% endif %}
23
+                {% if filterAbteilung is defined %}
24
+                    <div class="widget widget-select">
25
+                        <select name="filter_abteilung">
26
+                            <option value="">Unternehmensbereich / Abteilung</option>
27
+                            {% for abteilung in filterAbteilung %}
28
+                                <option value="{{ abteilung.ObjectUuid }}"{% if formSetFilters.filter_abteilung is defined and formSetFilters.filter_abteilung == abteilung.ObjectUuid %} selected{% endif %}>{{ abteilung.Bezeichnung }}</option>
29
+                            {% endfor %}
30
+                        </select>
31
+                    </div>
32
+                {% endif %}
33
+                <div class="widget widget-submit">
34
+                    <button type="submit">Suchen</button>
35
+                </div>
36
+            </div>
37
+        </form>
38
+
39
+        <div class="jobs">
40
+            <ul>
41
+            {% for job in jobs %}
42
+                <li>
43
+                    <h3>{{ job.Bezeichnung }}</h3>
44
+                    <div class="meta">
45
+                        <dl>
46
+                            <dt>Einsatzort:</dt><dd>{{ job.EinsatzortPlz }} {{ job.EinsatzortOrt }}</dd>
47
+                            <dt>Vertragsart:</dt><dd>{{ job.Vertragsarten }}</dd>
48
+                            <dt>Beginn:</dt><dd>{{ job.BeginnAbSofort ? 'ab sofort' : (job.Beginn ? job.Beginn|date("d.m.Y") : '') }}</dd>
49
+                            <dt>Eintrag vom:</dt><dd>{{ job.DatumAb ? job.DatumAb|date("d.m.Y") : '' }}</dd>
50
+                        </dl>
51
+                    </div>
52
+                </li>
53
+            {% endfor %}
54
+            </ul>
55
+        </div>
56
+    {% endif %}
57
+{% endblock %}
Browse code

Add Joblist skeletton for further development

Benjamin Roth authored on31/01/2023 08:55:26
Showing1 changed files
1 1
new file mode 100644