diff --git a/.drone.yml b/.drone.yml
index 12e3e7e0..00f9fc1a 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -35,10 +35,12 @@ image_pull_secrets:
- dockerconfig
trigger:
+ branch:
+ - main
event:
- pull_request
---
kind: signature
-hmac: 3d449ffbe5bc5b272406e3869524c8642ea7404eb620b8655dc470235fabede8
+hmac: a7c0aeda778717207ec641e7af90a358376eb3bfb22beeb67217b6d201e9e675
...
diff --git a/.gitignore b/.gitignore
index 165e06f6..b9e885ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ temp/
.DS_Store
.AppleDouble
.LSOverride
+.nova
# Icon must end with two \r
Icon
@@ -85,3 +86,13 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
+
+### Python ###
+# Compiled python
+*.pyc
+
+# Virtaul environments
+.env
+.venv
+env
+venv
diff --git a/assets/css/style.css b/assets/css/style.css
index 2020fd07..bce22454 100644
--- a/assets/css/style.css
+++ b/assets/css/style.css
@@ -31,6 +31,10 @@
--wtf-light-grey: #edefeb;
--wtf-lila: #6600ff;
+ /* misc colors */
+ --dark-red: #dc0000;
+ --dark-green: #007000;
+
--column-count: 3;
}
@@ -225,6 +229,12 @@ header {
grid-row: 1 / span 1;
}
+.header__homelink {
+ display: inline-block;
+ position: relative;
+ z-index: 1;
+}
+
.header__button,
.content__button,
.claim__button,
@@ -876,6 +886,47 @@ hr.-even {
flex-direction: column;
justify-content: flex-start;
}
+
+.contact_form--required,
+.--error {
+ color: var(--dark-red)
+}
+
+.--success {
+ color: var(--dark-green);
+}
+
+.contact_form__textarea,
+.contact_form__text_input,
+.contact_form__captcha {
+ display: flex;
+ flex-direction: column;
+}
+
+.contact_form__message {
+ height: 12em;
+}
+
+.contact_form__subject,
+.contact_form__message,
+.contact_form__name,
+.contact_form__email,
+.contact_form__captcha {
+ font-family: 'Lato', sans-serif;
+ line-height: 1.3rem;
+ font-size: 1rem;
+}
+
+.contact_form__submit_button {
+ font-size: 1rem;
+ padding: 0 0.25rem;
+}
+
+/* Hide captcha field as part of spam protection.
+ We got no real captcha. */
+.contact_form__captcha {
+ display: none;
+}
/* main - Ende */
/* footer - Start */
@@ -1244,7 +1295,7 @@ footer {
}
.slim_box__top_bar_left {
- margin: 1rem 0.5rem 0 0;
+ margin: 0 0.5rem 0 0;
height: 1.125rem;
background-image: url("../images/slim_header_top_triangles.svg");
background-position: right;
@@ -1289,14 +1340,23 @@ footer {
display: auto;
}
+ .header__primary_nav {
+ height: 2.5rem;
+ }
+
.secondary_nav__navlist {
margin-right: 1rem;
}
.primary_nav__navlist {
+ display: flex !important;
margin-right: 1.5rem;
}
+ .primary_nav__navlist > li:hover > .primary_nav__sub_navlist {
+ margin: 2.2rem 0 0 -0.5rem;
+ }
+
.primary_nav__members, .primary_nav__lang_switch {
display: none;
}
@@ -1305,10 +1365,6 @@ footer {
display: none;
}
- .primary_nav__navlist {
- display: flex !important;
- }
-
.content__inner_box.-logo_header {
margin: -0.5rem 1.5rem 0 1.5rem;
}
@@ -1478,6 +1534,7 @@ footer {
background-image: none;
margin: 0;
padding: 0;
+ z-index: 40;
}
.slim_box__top_bar_left {
@@ -1517,7 +1574,6 @@ footer {
position: absolute;
top: 6.5rem;
right: 0;
- z-index: 30;
border-top: 2px solid var(--wtf-nearly-black);
border-left: 2px solid var(--wtf-nearly-black);
border-bottom: 2px solid var(--wtf-nearly-black);
diff --git a/assets/dokumente/wtf-satzung.pdf b/assets/dokumente/wtf-satzung.pdf
index 9e08075d..224fd960 100644
--- a/assets/dokumente/wtf-satzung.pdf
+++ b/assets/dokumente/wtf-satzung.pdf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:557750f1ebcfec1772164f29944961919cd2a88549f2ece09f402e6c9ee476a9
-size 775249
+oid sha256:4f505f32110236b2bc3864c026e4bf158936b96680373a4546b491a5c3e71348
+size 54414
diff --git a/assets/js/contact_form.js b/assets/js/contact_form.js
new file mode 100644
index 00000000..43681f61
--- /dev/null
+++ b/assets/js/contact_form.js
@@ -0,0 +1,95 @@
+const contactFormAjaxUrl = '/php/contact_form.php';
+
+window.addEventListener('DOMContentLoaded', function() {
+ const contact_form = document.getElementsByClassName('content__contact_form')[0];
+ if (contact_form) {
+ contact_form.addEventListener('submit', wtf_submitContactForm, false);
+ wtf_startContactFormSession();
+ }
+});
+
+function wtf_startContactFormSession() {
+ let formData = new FormData();
+ formData.append('action', 'start_session');
+ fetch(contactFormAjaxUrl, {
+ method: 'POST',
+ mode: 'same-origin',
+ body: formData,
+ })
+ .then(response => {
+ if (!response.ok) {
+ throw new Error('Response was not OK');
+ }
+
+ return response.json();
+ })
+ .then(json => {
+ console.log(json);
+ })
+ .catch(error => {
+ console.error('Could not start the session:', error);
+ });
+}
+
+function wtf_submitContactForm(event) {
+ event.preventDefault();
+
+ const subject = document.getElementsByClassName('contact_form__subject')[0];
+ const message = document.getElementsByClassName('contact_form__message')[0];
+ const name = document.getElementsByClassName('contact_form__name')[0];
+ const email = document.getElementsByClassName('contact_form__email')[0];
+ const captcha = document.getElementsByClassName('contact_form__captcha')[0];
+
+ let formData = new FormData();
+ formData.append('action', 'handle_form');
+ formData.append('subject', subject.value);
+ formData.append('message', message.value);
+ formData.append('name', name.value);
+ formData.append('email', email.value);
+
+ // If some bot entered some value, return.
+ if (typeof captcha.value == 'undefined') {
+ formData.append('captcha', 'Nudelsuppe');
+ } else {
+ console.log('bot detected');
+ return;
+ }
+
+ fetch(contactFormAjaxUrl, {
+ method: 'POST',
+ mode: 'same-origin',
+ body: formData,
+ })
+ .then(response => response.json())
+ .then(json => {
+ const feedback = document.getElementsByClassName('contact_form__feedback')[0];
+ console.log(json);
+ if (json.errors) {
+ feedback.classList.remove('--success');
+ feedback.classList.add('--error');
+ // Über errors iterieren und diese ausgeben (evtl. nur ersten Fehler ausgeben?)
+ let error_message = '';
+ json.errors.forEach(function(error){
+ /**
+ * Nur Zeilenumbrüche wenn mehrer Fehlermeldungen existieren,
+ * aber bei der letzten nicht.
+ */
+ if (json.errors.length > 1) {
+ if (error == json.errors[json.errors.length - 1]) {
+ error_message = error_message + error;
+ } else {
+ error_message = error_message + error + '
';
+ }
+ } else {
+ error_message = error_message + error;
+ }
+ })
+ feedback.innerHTML = error_message;
+ } else if (json.status == 'ok') {
+ feedback.classList.remove('--error');
+ feedback.classList.add('--success');
+ feedback.textContent = "Ihre Nachricht wurde erfolgreich ans Office geschickt.";
+ }
+ })
+ .catch(error => console.log(error));
+}
diff --git a/assets/js/contact_form_toggle.js b/assets/js/contact_form_toggle.js
new file mode 100644
index 00000000..00ca58c5
--- /dev/null
+++ b/assets/js/contact_form_toggle.js
@@ -0,0 +1,7 @@
+/* Unhide contact form if JS is enabled */
+window.addEventListener('DOMContentLoaded', (event) => {
+ const contact_form_wrapper = document.getElementsByClassName('content__contact_form_wrapper')[0];
+ if (contact_form_wrapper) {
+ contact_form_wrapper.style.setProperty('display', 'block');
+ }
+});
diff --git a/assets/manifest.json b/assets/manifest.json
index 844121f9..7f70b548 100644
--- a/assets/manifest.json
+++ b/assets/manifest.json
@@ -6,6 +6,6 @@
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
- },
+ }
]
}
\ No newline at end of file
diff --git a/assets/php/contact_form.php b/assets/php/contact_form.php
new file mode 100644
index 00000000..d6b93a66
--- /dev/null
+++ b/assets/php/contact_form.php
@@ -0,0 +1,139 @@
+ FILTER_SANITIZE_SPECIAL_CHARS,
+ 'email' => FILTER_SANITIZE_EMAIL,
+ );
+ $text = filter_var(trim($_POST[$name]), $filters[$type]);
+ $text = stripslashes($text);
+
+ return $text;
+}
+
+function prepare_message_body(string $message, string $name) {
+ // Replace HTML-Entities with actual carriage returns and line feeds
+ $message = str_replace("
", "\r", $message);
+ $message = str_replace("
", "\n", $message);
+
+ // Ensure line breaks via carriage return + line feed
+ $message = str_replace("\r\n", "\n", $message);
+ $message = str_replace("\n", "\r\n", $message);
+
+ $message = "Nachricht von: $name\r\n\r\n" . $message;
+ $message = base64_encode($message);
+
+ return $message;
+}
+
+/**
+ * Sending email
+ *
+ * mail(): Braucht auf dem Server einen korrekt konfigurierten Mailserver
+ * phpmailer: Bibliothek, der per Composer installiert wird. Tut ganz gut mit SMTP.
+ */
+function send_message_to_office(string $subject, string $message, string $name, string $email) {
+ $returnPath = filter_var(getenv('WTF_RETURN_PATH'), FILTER_VALIDATE_EMAIL);
+ $to = filter_var(getenv('WTF_CONTACT_TO'), FILTER_VALIDATE_EMAIL);
+
+ if (!$returnPath || !$to) {
+ error_log('Address for "To" or "Return-Path" is invalid');
+ return false;
+ }
+
+ return mail(
+ $to,
+ "=?UTF-8?B?" . base64_encode($subject) . "?=",
+ prepare_message_body($message, $name),
+ array(
+ "From" => getenv('WTF_CONTACT_FROM'),
+ "Reply-To" => $email,
+ "Content-Type" => "text/plain; charset=utf-8",
+ "Content-Transfer-Encoding" => "base64",
+ ),
+ "-f $returnPath"
+ );
+}
+
+function send_response(array $response_data) {
+ $json = json_encode($response_data);
+ if ($json === false) {
+ // Avoid echo of empty string (which is invalid JSON), and
+ // JSONify the error message instead:
+ $json = json_encode(["jsonError" => json_last_error_msg()]);
+ if ($json === false) {
+ // This should not happen, but …
+ $json = '{"jsonError":"unknown"}';
+ }
+ // Set HTTP response status code to: 500 - Internal Server Error
+ http_response_code(500);
+ }
+ header('Content-type: application/json');
+ echo $json;
+}
+
+function prepare_response() {
+ $response = array();
+
+ if (empty($_POST['message'])) {
+ $response['errors'][] = 'Sieh haben keine Nachricht eingegeben.';
+ }
+ if (empty($_POST['email'])) {
+ $response['errors'][] = 'Sie haben keine E-Mail-Adresse eingegeben.';
+ }
+ if (empty($_POST['name'])) {
+ $response['errors'][] = 'Sie haben keinen Namen eingegeben.';
+ }
+ if (empty($_POST['subject'])) {
+ $response['errors'][] = 'Sie haben keinen Betreff eingegeben.';
+ }
+ /**
+ * Idee zur Bot-Erkennung:
+ * 1. Ein Bot hat das Pseudocaptcha entweder leer abgeschickt, oder sich selbst etwas ausgedacht.
+ * 2. Ein Bot schickt die Daten in unter 5s ab.
+ * 3. Ein Mensch braucht nicht länger als 60min.
+ */
+ if (
+ $_POST['captcha'] != 'Nudelsuppe' or
+ time() - $_SESSION['start_time'] < 5 or
+ time() - $_SESSION['start_time'] > 3600
+ ) {
+ $response['errors'][] = 'Wir glauben Sie sind ein Bot.';
+ }
+ if (!array_key_exists('errors', $response)) {
+ $subject = sanitize_text('subject', 'text');
+ $message = sanitize_text('message', 'text');
+ $name = sanitize_text('name', 'text');
+ $email = sanitize_text('email', 'email');
+
+ if (!send_message_to_office($subject, $message, $name, $email)) {
+ $response['errors'][] = 'Ihre Nachricht konnte nicht übermittelt werden.';
+ } else {
+ $response['status'] = 'ok';
+ }
+ }
+ return $response;
+}
+
+if ($_SERVER["REQUEST_METHOD"] == "POST") {
+ $response = array();
+
+ if (empty($_POST['action'])){
+ $response['errors'][] = 'Kann eigentlich nicht passieren :/';
+ } else {
+ if ($_POST['action'] == 'start_session') {
+ $_SESSION['start_time'] = time();
+ // $response['session_start_time'] = $_SESSION['start_time'];
+ // $response['session_id_before'] = session_id();
+ } elseif ($_POST['action'] == 'handle_form') {
+ $response = prepare_response();
+ session_destroy();
+ } else {
+ $response['errors'][] = 'Kann eigentlich auch nicht passieren :/';
+ }
+ }
+ send_response($response);
+} else {
+ http_response_code(404);
+}
diff --git a/content/blog/Blogversion-des-Newsletters-vom-Juni-2022/contents.lr b/content/blog/Blogversion-des-Newsletters-vom-Juni-2022/contents.lr
new file mode 100644
index 00000000..9ddab971
--- /dev/null
+++ b/content/blog/Blogversion-des-Newsletters-vom-Juni-2022/contents.lr
@@ -0,0 +1,51 @@
+title: Was geht ab? (Juli 2022)
+---
+author: WTF Vorstand
+---
+body:
+
+Hallo Genoss*in!
+
+Anderthalb Jahre nach Genossenschaftsgründung haben sich am 18.06.2022 unsere Gründungsmitglieder, Vorstand und Aufsichtsrat erstmalig live und in Farbe zur gleichen Zeit am gleichen Ort getroffen – natürlich stilecht in Hamburg!
+
+Dort haben wir den aktuellen Stand der Genossenschaft sowie weitere Zukunftspläne und Ideen für neue Geschäftsfelder besprochen. Ein weiterer, für alle interessierten Mitglieder offener, Hybrid-Workshop soll am 24.-25.09.2022 folgen. Mehr Infos im Forum: https://forum.wtf-eg.de/t/interressiert-an-unserer-zukunft-bitte-den-24-25-september-blocken/716)
+
+### Fazit Generalversammlung
+
+Direkt am Wochenende darauf fand auch unsere Generalversammlung statt, die von unseren Mitgliedern genutzt wurde, sich über den Werdegang der WTF Kooperative eG zu informieren und einige bürokratische To Dos abzuhaken. Das Protokoll zu dieser Veranstaltung ist in Arbeit und wird allen Mitgliedern nach Fertigstellung zur Verfügung gestellt, sodass auch die nicht anwesenden Personen sich informiert halten können.
+
+Es gab berechtigte Anmerkungen, dass die Terminplanung für diese Generalversammlung relativ kurzfristig war, sodass nicht alle, die gerne gewollt hätten, auch teilnehmen konnten. Daher schonmal als Ankündigung: Am 20.11.2022 wird voraussichtlich die nächste Generalversammlung zur (Neu- bzw. Wieder-) Wahl der Vorstände (und ihrer Stellvertreter) stattfinden.
+
+### Kommunikationsgrund-sätze für das Forum
+
+Um die Kommunikation untereinander angenehmer zu gestalten, haben wir eine Nutzungsregelung für das Forum veröffentlicht. Du findest sie hier: https://forum.wtf-eg.de/t/wir-stellen-vor-eine-nutzungsregelung-fuer-dieses-forum/681 und wir würden uns freuen, wenn alle sich Mühe geben, dass das Miteinander in der digitalen Kommunikation konstruktiv und zielführend bleibt.
+
+### AGO-Treffen am 02.08.2022 um 20 Uhr
+
+Auch in Sachen AGO geht es voran. Wir treffen uns am 02.08.2022 um 20 Uhr im Jitsi, um den ersten Entwurf (https://git.wtf-eg.de/wtf-eg/allgemeine_geschaeftsordnung/src/branch/main/AGO.md) weiter zu verfeinern.
+
+Du bist herzlich eingeladen, dich an der Entwicklung unserer AGO zu beteiligen. Das Dokument regelt grundlegende Themen wie: Aufnahmeprozedere der Mitglieder, Überschussverteilung und Mitarbeiterbeteiligung, Übertragungen von Geschäftsanteilen, Grundlagen u.v.m. und kann auch auf Themen wie "Ethische Grundsätze der Genossenschaft" ausgeweitet werden. See you there!
+
+### Barcamp local-it.org
+
+Die Menschen des Local-IT e.V. veranstalten vom 11.-14.08.2022 ein Barcamp in 23909 Mechow (nahe Ratzeburg, ca. 1 h von Hamburg entfernt) und haben uns bzw. unsere Mitglieder zum gemeinsamen Werkeln und Ideen schmieden eingeladen.
+
+Der Verein hat sich “Demokratie stärken, mit digitaler Souveränität und freier Software” auf die Fahne geschrieben. Wenn Du Interesse hast, vorbeizuschauen, findest Du mehr Infos dazu im Forum https://forum.wtf-eg.de/t/hamburg-barcamp-des-local-it-e-v-am-11-14-08-2022-in-mechow-externe-veranstaltung/721 bzw. auf der Website des Vereins https://local-it.org/do-it-local-barcamp/.
+
+### BahnCard 100 zum Aktionspreis für alle unter 27 Jahren
+
+Um die Anreise zu sommerlichen Veranstaltungen noch komfortabler zu gestalten, bietet die Deutsche Bahn für alle Menschen unter 27 Jahren die Möglichkeit, bis zum 30.09.2022 eine BahnCard 100 zu einem reduzierten Preis zu erwerben. Damit zahlst Du für 12 Monate 2.664 € (also 222 € pro Monat) statt 4.144 € und hast den Bahnverkehr innerhalb Deutschlands, sowie ÖPNV in über 130 Städten unkompliziert inclusive.
+
+Eine Bestellung über die Genossenschaft kann nach Absprache erfolgen, Du kannst das Aktionsangebot aber auch unabhängig von der WTF Kooperative eG als Privatperson nutzen. Mehr Infos gibt es hier: https://www.bahn.de/angebot/bahncard/junge-reisende/bahncard100-aktion-u27
+
+Ansonsten bleibt uns nur zu sagen: Genieß' den Sommer, bleib' schön gesund und immer eine kalte Mate bereithalten für die kommende Hitzewelle!
+
+Genossenschaftliche Grüße
+
+Deine WTF Kooperative eG
+
+PS: Wenn Du keine Termine der WTF eG verpassen möchtest, abonniere doch unseren "WTF eG Interne Termine" Kalender https://work.wtf-eg.de/remote.php/dav/calendars/5468a190-1872-103b-8292-73b365a1b398/wtf-interne-termine_shared_by_wtf/
+---
+meta_description: Blogversion des Newsletters vom Juni 2022 mit einem Fazit zur Generalversammlung, Kommunikationsgrundsätze für das Forum, einem AGO-Treffen, einem Hinweis aufs Bar-Camp und ein Angebot für eine BahnCard 100 für Menschen unter 27
+---
+pub_date: 2022-07-19
diff --git a/content/dokumente/contents.lr b/content/dokumente/contents.lr
index f21cf336..338fa6fd 100644
--- a/content/dokumente/contents.lr
+++ b/content/dokumente/contents.lr
@@ -8,9 +8,9 @@ body:
| | | |
| --: | -- | -- |
-| **Satzung:** | | [wtf-satzung.pdf](/dokumente/wtf-satzung.pdf) |
-| **Beitragsordnung:** | | [wtf-beitragsordnung.pdf](/dokumente/wtf-beitragsordnung.pdf) |
-| **Beitrittserklärung:**| | [onboarding.wtf-eg.de](https://onboarding.wtf-eg.de) |
+| **Satzung:** | | [wtf-satzung.pdf](/dokumente/wtf-satzung.pdf) |
+| **Beitragsordnung:** | | [wtf-beitragsordnung.pdf](/dokumente/wtf-beitragsordnung.pdf) |
+| **Beitrittserklärung:**| | [onboarding.wtf-eg.de](https://onboarding.wtf-eg.de) |
diff --git a/content/kontakt/contents.lr b/content/kontakt/contents.lr
index 149dd421..9094eac6 100644
--- a/content/kontakt/contents.lr
+++ b/content/kontakt/contents.lr
@@ -1,4 +1,4 @@
-_model: page
+_model: contact_page
---
title: Kontakt
---
diff --git a/content/mitglieder/satzung/contents.lr b/content/mitglieder/satzung/contents.lr
index e8de485c..30231e7b 100644
--- a/content/mitglieder/satzung/contents.lr
+++ b/content/mitglieder/satzung/contents.lr
@@ -5,13 +5,13 @@ title: Satzung
body:
## WTF Kooperative eG
-05. Dezember 2020
+2022-06-26
## § 1 Name, Sitz, Zweck, Gegenstand
(1) Der Name der Genossenschaft lautet: WTF Kooperative eG. Der Sitz der Genossenschaft ist Hamburg.
(2) Der Zweck der Genossenschaft ist die wirtschaftliche Förderung und Betreuung der Mitglieder.
-(3) Gegenstand des Unternehmens sind Dienstleistungen, Werktätigkeiten und Handel mit Bezug zu Informationstechnologien. Durch deren gemeinsame genossenschaftliche Vermarktung sowie Abwicklung einschlägiger kaufmännischer Dienstleistungen für die Mitglieder wird die Wirtschaft der Mitglieder im Sinne von § 1 Abs. 1 GenG durch Synergieeffekte gefördert.
-(4) Die Genossenschaft ist berechtigt, alle Maßnahmen zu treffen, die geeignet sind den Gesellschaftszweck zu fördern. Sie darf hierzu andere Unternehmen errichten und erwerben sowie sich an anderen Unternehmen beteiligen. Sie ist ferner berechtigt, Zweigniederlassungen zu errichten.
+(3) Gegenstand des Unternehmens sind Dienstleistungen, Werktätigkeiten und Handel mit Bezug zu Informationstechnologien. Durch deren gemeinsame genossenschaftliche Vermarktung sowie Abwicklung einschlägiger kaufmännischer Dienstleistungen für die Mitglieder wird die Wirtschaft der Mitglieder im Sinne von § 1 Abs. 1 GenG durch Synergieeffekte gefördert.
+(4) Die Genossenschaft ist berechtigt, alle Maßnahmen zu treffen, die geeignet sind den Gesellschaftszweck zu fördern. Sie darf hierzu andere Unternehmen errichten und erwerben sowie sich an anderen Unternehmen beteiligen. Sie ist ferner berechtigt, Zweigniederlassungen zu errichten.
(5) Zur Erfüllung der genossenschaftlichen Aufgaben kann sie sich der Hilfe sachverständiger Dritter bedienen.
(6) Geschäfte mit Nichtmitgliedern sind zulässig.
@@ -19,7 +19,7 @@ body:
(1) Zum Erwerb der Mitgliedschaft bedarf es einer unbedingten schriftlichen Beitrittserklärung. Die Mitgliedschaft können erwerben:
- a) natürliche Personen,
- b) Personengesellschaften,
-- c) juristische Personen des privaten oder öffentlichen Rechts.
+- c) juristische Personen des privaten oder öffentlichen Rechts.
(2) Über die Aufnahme in die Genossenschaft entscheidet der Vorstand.
(3) Die Mitgliedschaft endet durch
@@ -27,14 +27,14 @@ body:
- b) Übertragung des gesamten Geschäftsguthabens,
- c) Tod eines Mitglieds,
- d) Insolvenz eines Mitglieds,
-- e) Auflösung einer juristischen Person oder einer Personengesellschaft,
+- e) Auflösung einer juristischen Person oder einer Personengesellschaft,
- f) Ausschluss.
(4) Jedes Mitglied hat die Pflicht, das genossenschaftliche Unternehmen nach Kräften zu
unterstützen und die Interessen der Genossenschaft zu wahren. Ebenso ist jedes Mitglied
verpflichtet, Adressenänderungen innerhalb von drei Wochen dem Vorstand mitzuteilen.
-## § 3 Geschäftsanteil, Zahlungen, Rücklagen, Nachschusspflicht, Rückvergütung, Verjährung, Mindestkapital
+## § 3 Geschäftsanteil, Zahlungen, Rücklagen, Nachschusspflicht, Rückvergütung, Verjährung, Mindestkapital
(1) Ein Geschäftsanteil beträgt 100,- €. Er ist unverzüglich in voller Höhe einzuzahlen.
(2) Ein Mitglied kann mehrere Geschäftsanteile übernehmen. Die Gesamtzahl der Geschäftsanteile je Mitglied soll 100 Anteile nicht überschreiten.
(3) Mit Beitritt ist ein Eintrittsgeld/Agio zu leisten, welches den Rücklagen zuzuführen ist. Höhe und Fälligkeit beschließt die Generalversammlung.
@@ -53,7 +53,7 @@ verpflichtet, Adressenänderungen innerhalb von drei Wochen dem Vorstand mitzute
(9) Beschlüsse werden gem. § 47 GenG protokolliert.
## § 5 Aufsichtsrat
-(1) Sofern ein Aufsichtsrat bestellt wird, besteht dieser aus zumindest drei Mitgliedern; er überwacht die Geschäftsführung des Vorstands und ist verpflichtet, sich zu diesem Zweck über die Angelegenheiten der Genossenschaft zu unterrichten. Er kann jederzeit hierüber Berichterstattung vom Vorstand verlangen. Auch ein einzelnes Mitglied des Aufsichtsrats kann Auskünfte, jedoch nur an den Aufsichtsrat insgesamt, verlangen.
+(1) Sofern ein Aufsichtsrat bestellt wird, besteht dieser aus zumindest drei Mitgliedern; er überwacht die Geschäftsführung des Vorstands und ist verpflichtet, sich zu diesem Zweck über die Angelegenheiten der Genossenschaft zu unterrichten. Er kann jederzeit hierüber Berichterstattung vom Vorstand verlangen. Auch ein einzelnes Mitglied des Aufsichtsrats kann Auskünfte, jedoch nur an den Aufsichtsrat insgesamt, verlangen.
(2) Der Aufsichtsrat prüft den Jahresabschluss, den Lagebericht, soweit dieser gesetzlich erforderlich ist, und den Vorschlag des Vorstands für die Verwendung eines Jahresüberschusses oder für die Deckung eines Jahresfehlbetrags. Er hat sich darüber zu äußern und der Generalversammlung vor Feststellung des Jahresabschlusses Bericht zu erstatten. Jedes Mitglied des Aufsichtsrates hat den Inhalt des Prüfungsberichts zur Kenntnis zu nehmen.
(3) Einzelheiten über die Erfüllung der dem Aufsichtsrat obliegenden Pflichten regelt die vom Aufsichtsrat aufzustellende Geschäftsordnung. Ein Exemplar der Geschäftsordnung ist jedem Mitglied des Aufsichtsrats gegen Empfangsbestätigung auszuhändigen.
(4) Über eine größere Mitgliederzahl des Aufsichtsrats entscheidet die Generalversammlung. Der Aufsichtsrat ist beschlussfähig, wenn die Mehrheit seiner Mitglieder an der Abstimmung teilnimmt. Der Aufsichtsrat kann schriftlich, in Textform, telefonisch und auf elektronischem Wege Beschlüsse fassen.
@@ -61,20 +61,20 @@ verpflichtet, Adressenänderungen innerhalb von drei Wochen dem Vorstand mitzute
(6) Der Aufsichtsrat kann jederzeit Mitglieder des Vorstandes mit einfacher Mehrheit abwählen.
## § 6 Vorstand
-(1) Der Vorstand besteht aus mindestens zwei Mitgliedern; er leitet die Genossenschaft in eigener Verantwortung. Der Aufsichtsrat wählt die Mitglieder des Vorstands und gegebenenfalls deren Stellvertreter und bestimmt ihre Amtszeit. Wenn kein Aufsichtsrat bestellt ist, übernimmt die Generalversammlung dies.
+(1) Der Vorstand besteht aus mindestens zwei Mitgliedern. Der Vorstand leitet die Genossenschaft in eigener Verantwortung. Der Aufsichtsrat wählt im Falle des Ausscheidens eines aktiven Vorstandsmitgliedes einen neuen Vorstand aus den von der Generalversammlung gewählten Stellvertretern. Wenn kein Aufsichtsrat bestellt ist, übernimmt die Generalversammlung dies.
(2) Der Vorstand führt die Geschäfte der Genossenschaft gemäß den Vorschriften der Gesetze, insbesondere des Genossenschaftsgesetzes, der Satzung und der Allgemeinen Geschäftsordnung.
(3) Der Vorstand vertritt die Genossenschaft gerichtlich und außergerichtlich. Die Mitglieder des Vorstands sind einzeln zur Vertretung berechtigt.
(4) Der Vorstand kann schriftlich, in Textform, telefonisch und auf elektronischem Wege Beschlüsse fassen.
(5) Dienstverträge mit Vorstandsmitgliedern werden vom Aufsichtsrat im Rahmen der Richtlinien der Generalversammlung und der Allgemeinen Geschäftsordnung abgeschlossen.
-## § 7 Pflichten, Kündigung, Ausschluss, Auseinandersetzung
-(1) Die Mitglieder sind verpflichtet, der Genossenschaft ihre Anschrift mitzuteilen.
+## § 7 Pflichten, Kündigung, Ausschluss, Auseinandersetzung
+(1) Die Mitglieder sind verpflichtet, der Genossenschaft ihre Anschrift mitzuteilen.
(2) Jedes Mitglied kann seine Mitgliedschaft zum Schluss eines Geschäftsjahres unter Einhaltung einer Frist von drei Monaten schriftlich kündigen.
-(3) Soweit ein Mitglied mit mehreren Geschäftsanteilen beteiligt ist, ohne hierzu durch die Satzung, die Allgemeine Geschäftsordnung oder eine Vereinbarung mit der Genossenschaft verpflichtet zu sein, kann es schriftlich einen oder mehrere Geschäftsanteile seiner zusätzlichen Beteiligung zum Schluss eines Geschäftsjahres unter Einhaltung einer Frist von drei Monaten kündigen.
+(3) Soweit ein Mitglied mit mehreren Geschäftsanteilen beteiligt ist, ohne hierzu durch die Satzung, die Allgemeine Geschäftsordnung oder eine Vereinbarung mit der Genossenschaft verpflichtet zu sein, kann es schriftlich einen oder mehrere Geschäftsanteile seiner zusätzlichen Beteiligung zum Schluss eines Geschäftsjahres unter Einhaltung einer Frist von drei Monaten kündigen.
(4) Die Übertragung des Geschäftsguthabens bedarf außer in den Fällen § 76 Abs. 2 GenG der Zustimmung des Vorstands.
(5) Mitglieder, deren Verhalten mit den Belangen oder Interessen der Genossenschaft nicht vereinbar ist, können ausgeschlossen werden. Dies gilt insbesondere, wenn
- a) das Mitglied durch Nichterfüllung seiner Verpflichtungen gegenüber der Genossenschaft diese schädigt oder geschädigt hat;
-- b) es trotz schriftlicher Aufforderung unter Androhung des Ausschlusses den satzungsmäßigen oder sonstigen der Genossenschaft gegenüber bestehenden Verpfichtungen nicht nachkommt;
+- b) es trotz schriftlicher Aufforderung unter Androhung des Ausschlusses den satzungsmäßigen oder sonstigen der Genossenschaft gegenüber bestehenden Verpflichtungen nicht nachkommt;
- c) es unrichtige Jahresabschlüsse oder Vermögensübersichten einreicht oder sonst unrichtige oder unvollständige Erklärungen über seine rechtlichen und/oder wirtschaftlichen Verhältnisse abgibt;
- d) es zahlungsunfähig geworden oder überschuldet ist oder wenn über sein Vermögen ein Antrag auf Eröffnung eines Insolvenzverfahrens gestellt wurde.
- e) es seinen Geschäftsbetrieb, Sitz oder Wohnsitz verlegt, ohne den Vorstand über die geänderte Anschrift zu informieren, oder wenn sein dauernder Aufenthaltsort unbekannt ist;
@@ -103,4 +103,3 @@ verpflichtet, Adressenänderungen innerhalb von drei Wochen dem Vorstand mitzute
## § 10 Bekanntmachungen
Bekanntmachungen der Genossenschaft erfolgen auf deren Internetseite und in den GenoNachrichten als unabhängiger Informationsplattform für das Genossenschaftswesen.
-Hamburg, 05.12.2020
diff --git a/content/podcast/wtf-s02-e06/contents.lr b/content/podcast/wtf-s02-e06/contents.lr
index f9736017..57ca8c49 100644
--- a/content/podcast/wtf-s02-e06/contents.lr
+++ b/content/podcast/wtf-s02-e06/contents.lr
@@ -10,7 +10,7 @@ season: 2
---
title: WTF eG Podcast S02E06
---
-pocastogg: wtf-s02e06.ogg
+podcastogg: wtf-s02e06.ogg
---
mp3leng: 23354534
---
@@ -58,5 +58,3 @@ Herzlich Willkommen!
Achja: Historisches zum Projekt auf media.ccc.de unter dem Stichwort "Hacker eG"
---
authors: ajuvo/fuchsstein/LittleAlex
----
-podcastogg: wtf-s02e06.ogg
diff --git a/content/podcast/wtf-s03-e01/WTF_S03E01.mp3 b/content/podcast/wtf-s03-e01/WTF_S03E01.mp3
new file mode 100644
index 00000000..0d685f58
--- /dev/null
+++ b/content/podcast/wtf-s03-e01/WTF_S03E01.mp3
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7def1a9ce5f965532fd8c13b316c24a7af181de4eb980e20ca210e973affafdc
+size 16456030
diff --git a/content/podcast/wtf-s03-e01/WTF_S03E01.ogg b/content/podcast/wtf-s03-e01/WTF_S03E01.ogg
new file mode 100644
index 00000000..249bc235
--- /dev/null
+++ b/content/podcast/wtf-s03-e01/WTF_S03E01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03fad3814e26a57fad218302799890ad7ed8f5e8c69b126a690f98f5aa0b33a2
+size 16820322
diff --git a/content/podcast/wtf-s03-e01/contents.lr b/content/podcast/wtf-s03-e01/contents.lr
new file mode 100644
index 00000000..b21de2fb
--- /dev/null
+++ b/content/podcast/wtf-s03-e01/contents.lr
@@ -0,0 +1,48 @@
+authors: Nathan, Vollkorn
+---
+feed_shownotes:
+
WTF? Hallo und herzlich willkommen zur dritten Staffel vom WTF-Podcast. Mit der dritten Staffel möchten wir wegkommen vom Rundbrief für Genoss*innen und hin zu einem richtigen Podcast.
+Wir wollen uns nach außen öffnen. Projekte vorstellen. Zeigen, was geht. Und wir wollen uns auch verkaufen. Kund*innen gewinnen. Wie das geht? Keine Ahnung, aber versuchen wir es so: Wir zeigen, was wir können und ihr denkt vor Projekten an uns. Kommt auf uns zu. Sprecht uns an. Gemeinsam finden wir zusammen. Deal?
+In dieser Folge geht es um Vollkorn — so sein Spitzname. Er hat irgendwann mal Informatik studiert, ist beim CCC aktiv und macht auch beruflich irgendwas mit IT. Er wollte aber neben seinem Hauptjob auch mal eine Mark fuffzig nebenbei verdienen. Als ART OFF Hamburg, eine Initiative freier Kunstorte in Hamburg, ihn anfragte, ob er nicht mal eben eine neue, kleine, statische Webseite bauen könnte, hatte er zwar Lust auf das Projekt, aber eben nicht auf den Papierkram.
+Und da kam die WTF ins Spiel: Die Genossenschaft schrieb Angebot und Rechnung, Vollkorn baute die Webseite mit Hugo, die Künstler*innen bekamen ihre Webseite. Alle glücklich, alle zufrieden.
+Mitglieder der WTF erreichen Vollkorn über das Kompetenzinventar und das Forum. Er ist als @vollkorn1982 auf Twitter und @vollkorn@chaos.social.
+Vielen Dank für das Interesse und eure Zeit! Für Fragen und Feedback zum Podcast schickt gerne eine E-Mail an podcast@wtf-eg.de. Nathan erreicht ihr als @zeitschlag auf Twitter oder als @zeitschlag@chaos.social auf Mastodon Alle weiteren Informationen zur Genossenschaft gibt es im Internet unter wtf-eg.de.
+ + +--- +podcast_shownotes: + +WTF? Hallo und herzlich willkommen zur dritten Staffel vom WTF-Podcast. Mit der dritten Staffel möchten wir wegkommen vom Rundbrief für Genoss\*innen und hin zu einem richtigen Podcast. + +Wir wollen uns nach außen öffnen. Projekte vorstellen. Zeigen, was geht. Und wir wollen uns auch verkaufen. Kund\*innen gewinnen. Wie das geht? Keine Ahnung, aber versuchen wir es so: Wir zeigen, was wir können und ihr denkt vor Projekten an uns. Kommt auf uns zu. Sprecht uns an. Gemeinsam finden wir zusammen. Deal? + +In dieser Folge geht es um Vollkorn — so sein Spitzname. Er hat irgendwann mal Informatik studiert, ist beim CCC aktiv und macht auch beruflich irgendwas mit IT. Er wollte aber neben seinem Hauptjob auch mal eine Mark fuffzig nebenbei verdienen. Als [ART OFF Hamburg](https://art-off-hamburg.de/), eine Initiative freier Kunstorte in Hamburg, ihn anfragte, ob er nicht mal eben eine neue, kleine, statische Webseite bauen könnte, hatte er zwar Lust auf das Projekt, aber eben nicht auf den Papierkram. + +Und da kam die WTF ins Spiel: Die Genossenschaft schrieb Angebot und Rechnung, Vollkorn baute die Webseite mit [Hugo](https://gohugo.io/), die Künstler\*innen bekamen ihre Webseite. Alle glücklich, alle zufrieden. + +Mitglieder der WTF erreichen Vollkorn über das [Kompetenzinventar](https://ki.wtf-eg.de) und das [Forum](https://forum.wtf-eg.de). Er ist als [@vollkorn1982 auf Twitter](https://twitter.com/vollkorn1982) und [@vollkorn@chaos.social](https://chaos.social/@vollkorn). + +Vielen Dank für das Interesse und eure Zeit! Für Fragen und Feedback zum Podcast schickt gerne eine E-Mail an [podcast@wtf-eg.de](mailto:podcast@wtf-eg.de). Nathan erreicht ihr als [@zeitschlag auf Twitter](https://twitter.com/zeitschlag) oder als [@zeitschlag@chaos.social auf Mastodon](https://chaos.social/@zeitschlag) Alle weiteren Informationen zur Genossenschaft gibt es im Internet unter [wtf-eg.de](https://wtf-eg.de). +--- +podcast_teaser: In der ersten Folge der dritten Staffel spricht Nathan mit Vollkorn über die statische Webseite für eine Künstler*innen-Initiative und wie das gelaufen ist. +--- +pub_date: 2022-08-24 +--- +title: S03E01 — Vollkorn über ART OFF Hamburg +--- +podcasttitle: S03E01 — Vollkorn über ART OFF Hamburg +--- +season: 3 +--- +episode: 1 +--- +duration: 1026 +--- +mp3leng: 16456030 +--- +podcastmp3: WTF_S03E01.mp3 +--- +oggleng: 16820322 +--- +podcastogg: WTF_S03E01.ogg diff --git a/models/contact_page.ini b/models/contact_page.ini new file mode 100644 index 00000000..1ad4298d --- /dev/null +++ b/models/contact_page.ini @@ -0,0 +1,4 @@ +[model] +name = Contact Page +label = {{ this.title }} +inherits = page diff --git a/templates/aggregator_page.html b/templates/aggregator_page.html index cbf6d092..cf03d973 100644 --- a/templates/aggregator_page.html +++ b/templates/aggregator_page.html @@ -51,7 +51,7 @@- geschrieben von {{ episode.authors }} am {{ episode.pub_date }} + aufgenommen von {{ episode.authors }}, veröffentlicht am {{ episode.pub_date }}
{{ episode.podcast_teaser }} diff --git a/templates/contact_page.html b/templates/contact_page.html new file mode 100644 index 00000000..f90a6826 --- /dev/null +++ b/templates/contact_page.html @@ -0,0 +1,56 @@ +{% extends "header_slim.html" %} +{%- block title -%}{{ this.title }}{%- endblock -%} +{%- block meta_description -%} + {%- if this.meta_description is defined and this.meta_description != "" -%} + {{ this.meta_description }} + {%- else -%} + Werkkooperative der Technikfreundinnen eG + {%- endif -%} +{%- endblock -%} +{% block body %} +