product_detail.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. {% extends "base_generic.html" %}
  2. {% load fullurl %}
  3. {% load tags %}
  4. {% load static %}
  5. {% load compress %}
  6. {% load email_obfuscator %}
  7. {% block script %}
  8. <link href="{% static 'featherlight.min.css' %}" type="text/css" rel="stylesheet" />
  9. <script src="{% static 'featherlight.min.js' %}"></script>
  10. <link href="{% static 'featherlight.gallery.min.css' %}" type="text/css" rel="stylesheet" />
  11. <script src="{% static 'featherlight.gallery.min.js' %}"></script>
  12. <script>
  13. $(document).ready(function() {
  14. $('.gallery').featherlightGallery({
  15. previousIcon: '«',
  16. nextIcon: '»',
  17. galleryFadeIn: 250,
  18. openSpeed: 250,
  19. });
  20. });
  21. </script>
  22. <style>
  23. .image-detail {
  24. margin: 40px 60px 40px 0px;
  25. }
  26. .object-text strong {
  27. font-weight: bolder;
  28. font: "NeuzeitGro-Bla", sans-serif;
  29. }
  30. .object-text {
  31. line-height: 1.2;
  32. color: #000;
  33. }
  34. .object-text h1,
  35. h2,
  36. h3,
  37. h4,
  38. h5 {
  39. color: #469CA8;
  40. }
  41. .object-color {
  42. color: #469CA8;
  43. }
  44. .titlepro {
  45. margin-top: 40px;
  46. font-family: NeuzeitGro-Bla;
  47. }
  48. @media (min-width: 500px) {}
  49. </style>
  50. {% endblock %}
  51. {% block content %}
  52. <!-- <hr style="color: black; background-color: black; margin-top: 0px; width: 130%; display: flex; margin-left: -20px; margin-right:20px "> -->
  53. <div class="container " style="">
  54. <div class="row gemain-color object-text">
  55. <div class="col-sm-6">
  56. <h1 class="titlepro" style="">{{ object.name }}</h1>
  57. <p class="lead kur">{% if object.claim %}{{ object.claim }}{% endif %}</p>
  58. <div class="row object-color">
  59. <div class="col-sm-4">{% include "marktplatz/modal-share.html" %}</div>
  60. <div class="col-sm-4"> {% include "marktplatz/modal-sa.html" %}</div>
  61. <div class="col-sm-4">{% if object.email %} {{ object.email | obfuscate_mailto:'<i class="fas fa-envelope"></i> Email' }}{% endif %}</div>
  62. </div>
  63. <div class="">
  64. &nbsp;
  65. </div>
  66. <div class="">
  67. &nbsp;
  68. </div>
  69. <div class="">
  70. &nbsp;
  71. </div>
  72. <div class="">
  73. &nbsp;
  74. </div>
  75. <div class="">
  76. <p>
  77. <strong>Angebot</strong>:<br>
  78. {% if object.frei == 'JAJA' %}
  79. Platz frei.
  80. {% if object.kfrei %}
  81. {{ object.kfrei }}
  82. {% if object.email %}
  83. <br><br>
  84. {{ object.email | obfuscate_mailto:'<i class="fas fa-envelope"></i> Email' }}
  85. {% endif %}
  86. {% endif %}
  87. {% endif %}
  88. {% if object.frei == 'WART' %}
  89. Wir haben derzeit keinen Platz frei, aber wir melden uns, wenn etwas frei wird. Aktiviere die Benachrichtigung!
  90. {% endif %}
  91. {% if object.frei == 'NEIN' %}
  92. Wir haben derzeit keinen Platz frei und führen auch keine Warteliste, auf die du dich setzen lassen kannst.
  93. {% endif %}
  94. </p>
  95. </div>
  96. <!-- <div class="">
  97. {{ object.mitmachen }}
  98. </div> -->
  99. <p>{% if object.inseratstext %}<strong>{% field_name object 'inseratstext' %}</strong>:<br>{{ object.inseratstext }} {% if object.email %}<br><br>{{ object.email | obfuscate_mailto:'<i class="fas fa-envelope"></i> Email' }}
  100. {% endif %}{% endif %}</p>
  101. <div class="">
  102. &nbsp;
  103. </div>
  104. <div class="">{% if object.beschreibung %}<strong>{% field_name object 'beschreibung' %}</strong>:<br>{{ object.beschreibung | safe | linebreaks }}{% endif %}</div>
  105. <div class="">{% if object.learning %}<strong>{% field_name object 'learning' %}</strong>:<br>{{ object.learning | safe | linebreaks }}{% endif %}</div>
  106. <div class="">
  107. &nbsp;
  108. </div>
  109. <div class="">
  110. &nbsp;
  111. </div>
  112. {% for video in object.video_set.all %}
  113. <video autoplay style="width: 100%;height: auto;vertical-align: middle; padding-bottom: 10px" controls>
  114. <source src="{{video.image.url}}" type="video/mp4">
  115. </video>
  116. {% endfor %}
  117. {% if object.media_set %}
  118. {% for media in object.media_set.all %}
  119. {% if not forloop.first %}
  120. {% if forloop.counter < 6 %}
  121. <div class="image-detail" style="flex: {% get_ratio media %}; ">
  122. <img href="{{media.image_big.url}}" src="{{ media.image_norm.url }}?v={{ media.pk }}" class="gallery img-fluid img-responsive" alt="" style="width: 100%;height: auto;vertical-align: middle;">
  123. </div>
  124. {% endif %}
  125. {% endif %}
  126. {% endfor %}
  127. {% endif %}
  128. </div>
  129. <!-- *************************************************************** -->
  130. <div class="col-sm-6">
  131. <div class="image-detail" style="">
  132. <img href="{{object.media_set.first.image_big.url}}" src="{{ object.media_set.first.image_norm.url }}?v={{ object.media_set.first.pk }}" class="gallery img-fluid img-responsive" alt="" style="width: 100%;height: auto;vertical-align: middle;">
  133. </div>
  134. <br />
  135. <h5 class=" mediumkur">Kontakt</h5>
  136. <br />
  137. <p>{{ object.adresse }}{% if object.adresse_zusatz %}, {{ object.adresse_zusatz }}{% endif %}{% if object.plz %}, {{ object.plz }}{% endif %}{% if object.ort %}, {{ object.get_ort_display }}{% endif %}</p>
  138. <div class="row">
  139. <div class="col-sm-4">
  140. {% if object.email %}<p>{{ object.email | obfuscate_mailto:'<i class="fas fa-envelope"></i> Email' }}</p>{% endif %}
  141. </div>
  142. <div class="col-sm-8">
  143. {% if object.email %}<p><a href="mailto:{{ object.email | obfuscate }}">{{ object.email | obfuscate }}</a></p>{% endif %}
  144. </div>
  145. </div>
  146. <div class="row">
  147. <div class="col-sm-4">
  148. {% if object.website %}<p><a href="{{ object.website }}" target="_blank" rel="noopener">Webseite</a></p>{% endif %}
  149. </div>
  150. <div class="col-sm-8">
  151. {% if object.website %}<p><a href="{{ object.website }}" target="_blank" rel="noopener">{{ object.website }}</a></p>{% endif %}
  152. </div>
  153. </div>
  154. <br />
  155. <h5 class=" mediumkur">Steckbrief</h5>
  156. <br />
  157. {% block detail %}
  158. <p>{{ object.kind_of_product }}, gegründet {{ object.gruendungsjahr }}{% if object.betriebgenommen %}, in Betrieb genommen: {{ object.betriebgenommen }}{% endif %}.</p>
  159. <p><strong>Rechtsform</strong>: {{ object.rechtsform }}</p>
  160. <!-- XXX -->
  161. <p>{{ object.artmodell }}</p>
  162. <p>{% if object.orga %}<strong>{% field_name object 'orga' %}</strong>: {{ object.orga }}{% endif %}</p>
  163. <!-- XXX -->
  164. <p>{% if object.eigentum %}<strong>{% field_name object 'eigentum' %}</strong>: {{ object.get_eigentum_display }}{% endif %}</p>
  165. <!-- XXX -->
  166. <p>{% if object.gprojekte %}<strong>Gemeinschaftliche Projekte</strong>: {{ object.gprojekte }}{% endif %}</p>
  167. <p>{% if object.zielgruppen %}<strong>Besondere Zielgruppen</strong>: {{ object.zielgruppen }}{% endif %}</p>
  168. <p>{% if object.freiraumangebote %}<strong>Freiraumangebote</strong>: {{ object.freiraumangebote }}{% endif %}</p>
  169. <p>{% if object.oekologie %}<strong>{% field_name object 'oekologie' %}</strong>: {{ object.oekologie }}{% endif %}</p>
  170. <p>{% if object.schwerpunkt %}<strong>{% field_name object 'schwerpunkt' %}</strong>: {{ object.schwerpunkt }}{% endif %}</p>
  171. <br />
  172. <h5 class=" mediumkur">Kenndaten</h5>
  173. <br />
  174. <p>{% if object.altneu %}{{ object.get_altneu_display }}{% endif %}{% if object.bauweise %}, {{ object.bauweise }}{% endif %}</p>
  175. <p>{% if object.bautraeger %}<strong>{% field_name object 'bautraeger' %}:</strong>: {{ object.bautraeger }}{% endif %}</p>
  176. <p>{% if object.architektur %}<strong>{% field_name object 'architektur' %}:</strong> {{ object.architektur }}{% endif %}</p>
  177. <p>{% if object.wohnbaufoerderung %}<strong>{% field_name object 'wohnbaufoerderung' %}:</strong> {{ object.wohnbaufoerderung }}{% endif %}</p>
  178. <p>
  179. {% if object.type == 'WOHN' %}
  180. im Haus Wohnen {% if object.aerwachsene %}ca {{ object.aerwachsene }} Erwachsene{% endif %}{% if object.aerwachsene %} und {{ object.akinder }} Kinder{% endif %}.
  181. {% endif %}
  182. Anzahl der Mitglieder: {{ object.amitglieder }}
  183. </p>
  184. <p>{% if object.awohnungen %}<strong>{% field_name object 'awohnungen' %}:</strong> {{ object.awohnungen }} Wohnungen{% endif %}</p>
  185. <p>{% if object.gaestwohnungen %}<strong>{% field_name object 'gaestwohnungen' %}:</strong> {{ object.gaestwohnungen }}{% endif %}</p>
  186. <p>{% if object.wohnflaeche %}<strong>{% field_name object 'wohnflaeche' %}:</strong> {{ object.wohnflaeche }} m<sup>2</sup>{% endif %}</p>
  187. <p>{% if object.sonderwohnformen %}<strong>{% field_name object 'sonderwohnformen' %}</strong>: {{ object.sonderwohnformen }}{% endif %}</p>
  188. <p>{% if object.gewerbeflaechen %}<strong>{% field_name object 'gewerbeflaechen' %}:</strong> {{ object.gewerbeflaechen }} m<sup>2</sup>{% endif %}</p>
  189. <p>{% if object.gewerbe %}<strong>{% field_name object 'gewerbe' %}:</strong> {{ object.gewerbe }}{% endif %}</p>
  190. <p>{% if object.gemeinschaftsflaeche %}<strong>{% field_name object 'gemeinschaftsflaeche' %}:</strong> {{ object.gemeinschaftsflaeche }} m<sup>2</sup>{% endif %}</p>
  191. <p><strong>Gemeinschaftsräume</strong>:
  192. {{ object.gemeinschaftr }}{% if object.kgemeinschaftr %}, {{ object.kgemeinschaftr }}{% endif %}
  193. </p>
  194. <p>{% if object.sonstige_flaechen %}<strong>{% field_name object 'sonstige_flaechen' %}:</strong> {{ object.sonstige_flaechen }} m<sup>2</sup>{% endif %}</p>
  195. <p>{% if object.flaeche %}<strong>{% field_name object 'flaeche' %}:</strong> {{ object.flaeche }} m<sup>2</sup>{% endif %}</p>
  196. <p>{% if object.kflaechen %}<strong>{% field_name object 'kflaechen' %}:</strong> {{ object.kflaechen }} m<sup>2</sup>{% endif %}</p>
  197. <p>{% if object.parbeiten %}Im Haus arbeiten ca {{ object.parbeiten }} Personen.{% endif %}
  198. {% if object.karbeiten %}{{ object.karbeiten }}{% endif %}</p>
  199. <p>{% if object.raumangebot %}<strong>{% field_name object 'raumangebot' %}:</strong> {{ object.raumangebot }}{% if object.kraumangebot %},
  200. {{ object.kraumangebot }}
  201. {% endif %}
  202. {% endif %}</p>
  203. <!-- <p>{% if object.kraumangebot %}<strong>{% field_name object 'kraumangebot' %}:</strong> {{ object.kraumangebot }}{% endif %}</p> -->
  204. {% endblock %}
  205. <br />
  206. <h5 class="mediumkur">Siehe auch</h5>
  207. <p>Posts tagged {{ object.name|slugify }}</p>
  208. <br />
  209. <ul class="" id="blog-posts-container">
  210. <blog-post v-for="post in posts" v-bind:key="post.id" v-bind:title="post.title" v-bind:link="post.link" v-bind:excerpt="post.excerpt"></blog-post>
  211. </ul>
  212. <br />
  213. <h5 class="mediumkur">Mediacredits</h5>
  214. <br />
  215. {% for media in object.media_set.all %}
  216. {% if media.copyright %}
  217. <p class="fieldname"> {{ media.copyright }}</p>
  218. {% endif %}
  219. {% endfor %}
  220. {% for media in object.video_set.all %}
  221. {% if media.copyright %}
  222. <p class="fieldname"> {{ media.copyright }}</p>
  223. {% endif %}
  224. {% endfor %}
  225. {% if object.media_set %}
  226. {% for media in object.media_set.all %}
  227. {% if forloop.counter > 5 %}
  228. <div style="flex: {% get_ratio media %}; margin:40px 60px 40px 0px;">
  229. <img href="{{media.image_big.url}}" src="{{ media.image_norm.url }}?v={{ media.pk }}" class="gallery img-fluid img-responsive" alt="" style="width: 100%;height: auto;vertical-align: middle;">
  230. </div>
  231. {% endif %}
  232. {% endfor %}
  233. {% endif %}
  234. </div>
  235. </div>
  236. </div>
  237. <div class="container">
  238. <div class="row" style="margin-top: 10px">
  239. <div class="col-sm-6">
  240. </div>
  241. <div class="col-sm-4">
  242. {% for field, value in object %}
  243. {% if value and not field == "ID" %}
  244. <!-- <p class="fieldname"><strong class="mediumkur"> {{ field }} :</strong> {{ value }}</p> -->
  245. {% endif %}
  246. {% endfor %}
  247. </div>
  248. </div>
  249. </div>
  250. {% compress js %}
  251. <script>
  252. $(document).ready(function($) {
  253. axios.get('https://blog.gemeinschaffen.com/wp-json/wp/v2/tags?per_page=100').then(resp => {
  254. queryData(resp);
  255. });
  256. function queryData(resp) {
  257. var requests = []
  258. var projTag = jsonQuery('[*slug={{ object.name|slugify }}]', {
  259. data: resp.data
  260. });
  261. var postsTag = jsonQuery('[*slug=gemeinschaffen]', {
  262. data: resp.data
  263. });
  264. if (!projTag.value.length && !postsTag.value.length) {
  265. return;
  266. }
  267. if (projTag.value.length) {
  268. url = "https://blog.gemeinschaffen.com/wp-json/wp/v2/posts?tags=" + projTag.value[0].id ;
  269. requests.push(axios.get(url));
  270. }
  271. // general tag as gemeinschaffen deactivated.
  272. // if (postsTag.value.length) {
  273. // url = "https://blog.gemeinschaffen.com/wp-json/wp/v2/posts?tags=" + postsTag.value[0].id
  274. // requests.push(axios.get(url));
  275. // }
  276. axios.all(requests).then(axios.spread(function(...responses) {
  277. rpost = []
  278. for (index = 0; index < responses.length; index++) {
  279. rpost = rpost.concat(responses[index].data);
  280. }
  281. if (rpost.length) {
  282. generateLinks(rpost);
  283. }
  284. }));
  285. }
  286. function generateLinks(data) {
  287. Vue.component('blog-post', {
  288. props: ['title', 'link', 'excerpt'],
  289. delimiters: ['<%', '%>'],
  290. template: `
  291. <li>
  292. <a title="link-title" :href="link" target="_blank" v-html="title.rendered"></a>
  293. <p v-html="excerpt.rendered"></p>
  294. </li>`
  295. })
  296. new Vue({
  297. el: '#blog-posts-container',
  298. delimiters: ['<%', '%>'],
  299. data: {
  300. posts: data
  301. }
  302. })
  303. }
  304. }); // document ready
  305. </script>
  306. {% endcompress %}
  307. {% endblock %}