diff --git a/areas/__pycache__/__init__.cpython-38.pyc b/areas/__pycache__/__init__.cpython-38.pyc
index 3ff9165..3fed716 100644
Binary files a/areas/__pycache__/__init__.cpython-38.pyc and b/areas/__pycache__/__init__.cpython-38.pyc differ
diff --git a/areas/__pycache__/admin.cpython-38.pyc b/areas/__pycache__/admin.cpython-38.pyc
index c67ec55..f4e758a 100644
Binary files a/areas/__pycache__/admin.cpython-38.pyc and b/areas/__pycache__/admin.cpython-38.pyc differ
diff --git a/areas/__pycache__/apps.cpython-38.pyc b/areas/__pycache__/apps.cpython-38.pyc
index e7a6b78..9290f60 100644
Binary files a/areas/__pycache__/apps.cpython-38.pyc and b/areas/__pycache__/apps.cpython-38.pyc differ
diff --git a/areas/__pycache__/forms.cpython-38.pyc b/areas/__pycache__/forms.cpython-38.pyc
index c9f46ac..0223429 100644
Binary files a/areas/__pycache__/forms.cpython-38.pyc and b/areas/__pycache__/forms.cpython-38.pyc differ
diff --git a/areas/__pycache__/models.cpython-38.pyc b/areas/__pycache__/models.cpython-38.pyc
index 83d08a8..38430f3 100644
Binary files a/areas/__pycache__/models.cpython-38.pyc and b/areas/__pycache__/models.cpython-38.pyc differ
diff --git a/areas/__pycache__/urls.cpython-38.pyc b/areas/__pycache__/urls.cpython-38.pyc
index ddff2d1..7683456 100644
Binary files a/areas/__pycache__/urls.cpython-38.pyc and b/areas/__pycache__/urls.cpython-38.pyc differ
diff --git a/areas/__pycache__/views.cpython-38.pyc b/areas/__pycache__/views.cpython-38.pyc
index 7b9f003..7d7193f 100644
Binary files a/areas/__pycache__/views.cpython-38.pyc and b/areas/__pycache__/views.cpython-38.pyc differ
diff --git a/areas/forms.py b/areas/forms.py
index 6032309..61151d8 100644
--- a/areas/forms.py
+++ b/areas/forms.py
@@ -12,8 +12,9 @@ class AreaAddAreaForm(forms.ModelForm):
"name" : "Bereichsname",
"color" : "Farbe",
"desc" : "Beschreibung",
- "visible": "Im Organigramm sichtbar"
+ "visible": "Im Organigramm sichtbar",
+ "areaorder": "Sortierung"
}
- fields = ['name', 'color', 'desc']
+ fields = ['name', 'color', 'desc', 'areaorder']
diff --git a/areas/models.py b/areas/models.py
index cc21492..5a6fc8c 100644
--- a/areas/models.py
+++ b/areas/models.py
@@ -27,6 +27,7 @@ class Areas(models.Model):
created_area_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_area_date = models.DateField(default=datetime.date.today, blank=True)
visible = models.BooleanField(default=True)
+ areaorder = models.IntegerField(default=0)
def __str__(self):
return f'{self.name}'
diff --git a/ckeditorplugins/youtube/LICENSE.md b/ckeditorplugins/youtube/LICENSE.md
new file mode 100644
index 0000000..77dea88
--- /dev/null
+++ b/ckeditorplugins/youtube/LICENSE.md
@@ -0,0 +1,15 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
+
diff --git a/ckeditorplugins/youtube/README.md b/ckeditorplugins/youtube/README.md
new file mode 100644
index 0000000..fb7ab64
--- /dev/null
+++ b/ckeditorplugins/youtube/README.md
@@ -0,0 +1,156 @@
+Youtube Plugin for CKEditor 4
+=============================
+
+Copyright © 2017 Jonnas Fonini .
+
+This work is free. You can redistribute it and/or modify it under the
+terms of the Do What The Fuck You Want To Public License, Version 2,
+as published by Sam Hocevar. See the LICENSE file for more details.
+
+This plugin allow you to insert Youtube videos using embed code or just the video URL.
+
+## Installation
+
+### With NPM
+
+ 1. npm install ckeditor-youtube-plugin
+
+ 2. Add the plugin to CKEditor (config.js):
+
+ ````js
+ CKEDITOR.plugins.addExternal('youtube', '../node_modules/ckeditor-youtube-plugin/youtube/');
+
+ config.extraPlugins = 'youtube';
+ ````
+
+ You may need to adjust the plugin path. The example is assuming that you have the following directory structure:
+
+ ```
+ project
+ └───ckeditor
+ │ └───config.js
+ └───node_modules
+ └───ckeditor-youtube-plugin
+ ```
+
+### Manual
+
+Follow these steps:
+
+ 1. Download the latest version of the plugin from Github.
+ 2. Extract the downloaded file into the CKEditor's **plugins** folder.
+ 3. Enable the plugin by changing or adding the extraPlugins line in your configuration (config.js):
+
+ ````js
+ config.extraPlugins = 'youtube';
+ ````
+
+## Configuration
+The default options can be overriden on config.js.
+
+Video width:
+
+```js
+config.youtube_width = '640';
+```
+
+Video height:
+
+```js
+config.youtube_height = '480';
+```
+
+Make responsive (ignore width and height, fit to width):
+
+```js
+config.youtube_responsive = true;
+```
+
+Show related videos:
+
+```js
+config.youtube_related = true;
+```
+
+Use old embed code:
+
+```js
+config.youtube_older = false;
+```
+
+Enable privacy-enhanced mode:
+
+```js
+config.youtube_privacy = false;
+```
+
+Start video automatically:
+
+```js
+config.youtube_autoplay = false;
+```
+
+Show player controls:
+
+```js
+config.youtube_controls = true;
+```
+
+Disable the change of settings. The elements on the list will be disabled (but still visible).
+See the available element list below.
+
+```js
+config.youtube_disabled_fields = ['txtEmbed', 'chkAutoplay'];
+```
+
+#### List of UI elements
+
+* txtEmbed
+* txtUrl
+* txtWidth
+* txtHeight
+* chkResponsive
+* chkNoEmbed
+* chkRelated
+* chkOlderCode
+* chkPrivacy
+* chkAutoplay
+* txtStartAt
+* chkControls
+
+
+## How to use
+If everything is ok, a Youtube icon should appear on the CKEditor toolbar. Click it,
+paste your embed code or video URL and the video will be inserted.
+
+## Translators
+Thanks to those who helped translate the plugin
+
+ * Eyed Farra (ar)
+ * N. Petkov (bg)
+ * Lukáš Říha (cs)
+ * Sven Jansen (de)
+ * Dimitris Kotsakis (el)
+ * Victor (pollin14) (es)
+ * Kevin Rudissaar (et)
+ * Asier Iturralde Sarasola (eu)
+ * Jami Pietilä (fi)
+ * BiomanRouge (fr)
+ * Moshe Simantov (he)
+ * Karmacsi Gábor (hu)
+ * Francesco Zanoni (it)
+ * Yayoshi Nobuhide (ja)
+ * MinSoo Kim (ko)
+ * Holger Lockertsen (nb, nn)
+ * Patrick van Lier (nl)
+ * Michał Zalewski, Wirek (pl)
+ * Samuel Diogo (pt-br)
+ * Alexander Ustimenko (ru)
+ * ivanbarlog (sk)
+ * Çağdaş Yiğit (tr)
+ * Mykola Pukhalskyi (uk)
+ * Vu Thao (vi)
+ * trowa (zh)
+
+
+[](http://www.wtfpl.net)
diff --git a/ckeditorplugins/youtube/bower.json b/ckeditorplugins/youtube/bower.json
new file mode 100644
index 0000000..c94d293
--- /dev/null
+++ b/ckeditorplugins/youtube/bower.json
@@ -0,0 +1,19 @@
+{
+ "name": "ckeditor-youtube-plugin",
+ "version": "2.1.13",
+ "homepage": "https://github.com/fonini/ckeditor-youtube-plugin",
+ "authors": [
+ "Jonnas Fonini"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "ckeditor": ">= 4.0.0"
+ },
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "tests"
+ ]
+}
diff --git a/ckeditorplugins/youtube/package.json b/ckeditorplugins/youtube/package.json
new file mode 100644
index 0000000..b128502
--- /dev/null
+++ b/ckeditorplugins/youtube/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "ckeditor-youtube-plugin",
+ "description": "Youtube plugin for CKEditor",
+ "version": "2.1.13",
+ "author": "fonini",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/fonini/ckeditor-youtube-plugin"
+ },
+ "keywords": [
+ "CKEditor",
+ "youtube",
+ "embed"
+ ],
+ "files": [
+ "youtube/",
+ "LICENSE.md",
+ "README.md",
+ "bower.json",
+ "package.json"
+ ]
+}
\ No newline at end of file
diff --git a/ckeditorplugins/youtube/youtube/images/icon-hdpi.png b/ckeditorplugins/youtube/youtube/images/icon-hdpi.png
new file mode 100644
index 0000000..d439185
Binary files /dev/null and b/ckeditorplugins/youtube/youtube/images/icon-hdpi.png differ
diff --git a/ckeditorplugins/youtube/youtube/images/icon.png b/ckeditorplugins/youtube/youtube/images/icon.png
new file mode 100644
index 0000000..6a08779
Binary files /dev/null and b/ckeditorplugins/youtube/youtube/images/icon.png differ
diff --git a/ckeditorplugins/youtube/youtube/lang/ar.js b/ckeditorplugins/youtube/youtube/lang/ar.js
new file mode 100644
index 0000000..7f72386
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/ar.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'ar', {
+ button : 'شيفرة تضمين اليوتيوب',
+ title : 'شيفرة تضمين اليوتيوب',
+ txtEmbed : 'الصق شيفرة التضمين هنا',
+ txtUrl : 'الصق رابط فيديو اليوتيوب',
+ txtWidth : 'العرض',
+ txtHeight : 'الطول',
+ chkRelated : 'اظهر الفيديوهات المقترحة في نهاية الفيديو',
+ txtStartAt : 'ابدأ عند (ss او mm:ss او hh:mm:ss)',
+ chkPrivacy : 'تفعيل وضع تحسين الخصوصية',
+ chkOlderCode : 'استخدم شيفرة التضمين القديمة',
+ chkAutoplay : 'Autoplay',
+ chkControls: 'إظهار عناصر التحكم بالمشغّل',
+ noCode : 'يجب عليك ادخال شيفرة التضمين او الرابط',
+ invalidEmbed : 'شيفرة التضمين التي قمت بإدخالها تبدو غير صحيحة',
+ invalidUrl : 'الرابط الذي قمت بإدخاله يبدو غير صحيح',
+ or : 'او',
+ noWidth : 'يجب عليك ادخال العرض',
+ invalidWidth : 'يجب عليك ادخال عرض صحيح',
+ noHeight : 'يجب عليك ادخال الطول',
+ invalidHeight : 'يجب عليك ادخال طول صحيح',
+ invalidTime : 'يجب عليك ادخال وقت بداية صحيح',
+ txtResponsive : 'Responsive video'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/bg.js b/ckeditorplugins/youtube/youtube/lang/bg.js
new file mode 100644
index 0000000..45315d3
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/bg.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'bg', {
+ button : 'Вмъкни YouTube видео',
+ title : 'Вграждане на YouTube видео',
+ txtEmbed : 'Въведете кода за вграждане тук',
+ txtUrl : 'Въведете YouTube видео URL',
+ txtWidth : 'Ширина',
+ txtHeight : 'Височина',
+ chkRelated : 'Показва предложени видеоклипове в края на клипа',
+ txtStartAt : 'Стартирай в (ss или mm:ss или hh:mm:ss)',
+ chkPrivacy : 'Активирай режим за поверителност',
+ chkOlderCode : 'Използвай стар код за вграждане',
+ chkAutoplay: 'Авто стартиране',
+ chkControls: 'Показва контролите на плейъра',
+ noCode : 'Трябва да въведете код за вграждане или URL адрес',
+ invalidEmbed : 'Кодът за вграждане, който сте въвели, не изглежда валиден',
+ invalidUrl : 'Въведеният URL адрес не изглежда валиден',
+ or : 'или',
+ noWidth : 'Трябва да заложите ширината',
+ invalidWidth : 'Заложете валидна ширина',
+ noHeight : 'Трябва да заложите височина',
+ invalidHeight : 'Заложете валидна височина',
+ invalidTime : 'Заложете валидно време за стартиране',
+ txtResponsive : 'Напасва по ширина (игнорира Ширина и Височина)',
+ txtNoEmbed : 'Само видео изображение и връзка'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/cs.js b/ckeditorplugins/youtube/youtube/lang/cs.js
new file mode 100644
index 0000000..d6d935d
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/cs.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'cs', {
+ button : 'Vložit video YouTube',
+ title : 'Vložit video YouTube',
+ txtEmbed : 'Zde vložte kód pro vložení',
+ txtUrl : 'Vložte adresu URL videa YouTube',
+ txtWidth : 'Šířka',
+ txtHeight : 'Výška',
+ chkRelated : 'Po dohrání videa zobrazit navrhovaná videa',
+ txtStartAt : 'Začít přehrávat v čase (ss nebo mm:ss nebo hh:mm:ss)',
+ chkPrivacy : 'Povolit režim s rozšířeným soukromím',
+ chkOlderCode : 'Použít starý kód pro vložení',
+ chkAutoplay : 'Automatické spuštění přehrávání',
+ chkControls : 'Zobrazit ovladače přehrávání',
+ noCode : 'Musíte vložit kód pro vložení nebo adresu URL',
+ invalidEmbed : 'Vložený kód pro vložení zřejmě není platný',
+ invalidUrl : 'Zadaná adresa URL zřejmě není platná',
+ or : 'nebo',
+ noWidth : 'Musíte zadat šířku',
+ invalidWidth : 'Zadejte platnou šířku',
+ noHeight : 'Musíte zadat výšku',
+ invalidHeight : 'Zadejte platnou výšku',
+ invalidTime : 'Zadejte platný počáteční čas',
+ txtResponsive : 'Responzivní design (ignorovat výšku a šířku, uzpůsobit šířce)',
+ txtNoEmbed : 'Pouze obrázek videa s odkazem'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/de.js b/ckeditorplugins/youtube/youtube/lang/de.js
new file mode 100644
index 0000000..6ad4f3c
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/de.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'de', {
+ button : 'YouTube Video einbinden',
+ title : 'YouTube Video einbinden',
+ txtEmbed : 'Embed Code hier einfügen',
+ txtUrl : 'YouTube Video URL hier einfügen',
+ txtWidth : 'Breite',
+ txtHeight : 'Höhe',
+ chkRelated : 'Vorschläge am Ende des Videos einblenden',
+ txtStartAt : 'Start bei Position (ss oder mm:ss oder hh:mm:ss)',
+ chkPrivacy : 'Erweiterten Datenschutzmodus aktivieren',
+ chkOlderCode : 'Benutze alten Embed Code',
+ chkAutoplay : 'Autoplay',
+ chkControls : 'Player-Steuerelemente anzeigen',
+ noCode : 'Sie müssen einen Embed Code oder URL angeben',
+ invalidEmbed : 'Der angegebene Embed Code scheint nicht gültig zu sein.',
+ invalidUrl : 'Die angegebene URL scheint nicht gültig zu sein.',
+ or : 'oder',
+ noWidth : 'Geben Sie eine Breite an',
+ invalidWidth : 'Geben Sie eine gültige Breite an',
+ noHeight : 'Geben Sie eine Höhe an',
+ invalidHeight : 'Geben Sie eine gültige Höhe an',
+ invalidTime : 'Geben Sie eine gültige Startzeit an',
+ txtResponsive : 'Automatische Größe (ignoriert Breite und Höhe)'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/el.js b/ckeditorplugins/youtube/youtube/lang/el.js
new file mode 100644
index 0000000..48716b4
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/el.js
@@ -0,0 +1,23 @@
+CKEDITOR.plugins.setLang('youtube', 'el', {
+ button: 'Ενσωμάτωση Youtube βίντεο',
+ title: 'Ενσωμάτωση Youtube βίντεο',
+ txtEmbed: 'Επικόλλησε τον κώδικα ενσωμάτωσης',
+ txtUrl: 'Επικόλλησε το URL του βίντεο',
+ txtWidth: 'Πλάτος',
+ txtHeight: 'Ύψος',
+ chkRelated: 'Εμφάνιση προτεινόμενων βίντεο μόλις ολοκληρωθεί',
+ txtStartAt: 'Χρόνος εκκίνησης (ss or mm:ss or hh:mm:ss)',
+ chkPrivacy: 'Ενεργοποίηση λειτουργίας ενισχυμένου απορρήτου',
+ chkOlderCode: 'Χρήση παλαιού κώδικα ενσωμάτωσης',
+ chkAutoplay: 'Αυτόματη εκκίνηση',
+ chkControls: 'Εμφάνιση στοιχείων ελέγχου προγράμματος αναπαραγωγής',
+ noCode: 'Χρειάζεται κώδικας ενσωμάτωσης ή URL',
+ invalidEmbed: 'Ο κώδικας ενσωμάτωσης που εισήγατε δεν μοιάζει σωστός',
+ invalidUrl: 'Το URL που εισήγατε δεν μοιάζει σωστό',
+ or: 'ή',
+ noWidth: 'Συμπληρώστε το πλάτος',
+ invalidWidth: 'Λανθασμένο πλάτος',
+ noHeight: 'Συμπληρώστε το ύψος',
+ invalidHeight: 'Λανθασμένο ύψος',
+ invalidTime: 'Λανθασμένος χρόνος εκκίνησης'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/en.js b/ckeditorplugins/youtube/youtube/lang/en.js
new file mode 100644
index 0000000..4b68236
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/en.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'en', {
+ button : 'Embed YouTube Video',
+ title : 'Embed YouTube Video',
+ txtEmbed : 'Paste Embed Code Here',
+ txtUrl : 'Paste YouTube Video URL',
+ txtWidth : 'Width',
+ txtHeight : 'Height',
+ chkRelated : 'Show suggested videos at the video\'s end',
+ txtStartAt : 'Start at (ss or mm:ss or hh:mm:ss)',
+ chkPrivacy : 'Enable privacy-enhanced mode',
+ chkOlderCode : 'Use old embed code',
+ chkAutoplay: 'Autoplay',
+ chkControls: 'Show player controls',
+ noCode : 'You must input an embed code or URL',
+ invalidEmbed : 'The embed code you\'ve entered doesn\'t appear to be valid',
+ invalidUrl : 'The URL you\'ve entered doesn\'t appear to be valid',
+ or : 'or',
+ noWidth : 'You must inform the width',
+ invalidWidth : 'Inform a valid width',
+ noHeight : 'You must inform the height',
+ invalidHeight : 'Inform a valid height',
+ invalidTime : 'Inform a valid start time',
+ txtResponsive : 'Make Responsive (ignore width and height, fit to width)',
+ txtNoEmbed : 'Video image and link only'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/es.js b/ckeditorplugins/youtube/youtube/lang/es.js
new file mode 100644
index 0000000..b419a3b
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/es.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'es', {
+ button : 'Embed YouTube video',
+ title : 'Embed YouTube video',
+ txtEmbed : 'Pegar el código embed',
+ txtUrl : 'Pegar la URL al video de Youtube',
+ txtWidth : 'Anchura',
+ txtHeight : 'Altura',
+ chkRelated : 'Mostrar videos sugeridos al final de este video',
+ txtStartAt : 'Comenzar en (ss or mm:ss or hh:mm:ss)',
+ chkPrivacy : 'Habilitar el modo privacy-enhanced',
+ chkOlderCode : 'Usar código embed viejo',
+ chkAutoplay: 'Autoplay',
+ chkControls: 'Mostrar controles del reproductor',
+ noCode : 'Debes de introducir un código embed o URL',
+ invalidEmbed : 'El código embed introducido parece no ser valido',
+ invalidUrl : 'La URL introducida parece no ser valida',
+ or : 'o',
+ noWidth : 'Debes de dar la anchura',
+ invalidWidth : 'Da una anchura valida',
+ noHeight : 'Debes dar una altura valida',
+ invalidHeight : 'Da una altura valida',
+ invalidTime : 'Da un tiempo de valido',
+ txtResponsive : 'Hacer responsivo (ignorar anchura y altura, ajustar a la anchura)'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/et.js b/ckeditorplugins/youtube/youtube/lang/et.js
new file mode 100644
index 0000000..c89b3ca
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/et.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'et', {
+ button : 'Lisa YouTube video',
+ title : 'YouTube video lisamine',
+ txtEmbed : 'Kleepige manustatud kood siia',
+ txtUrl : 'Kleepige YouTube video veebiaadress',
+ txtWidth : 'Laius',
+ txtHeight : 'Kõrgus',
+ chkRelated : 'Näita soovitatud videosi antud video lõppus',
+ txtStartAt : 'Alguskoht: (ss või mm:ss või hh:mm:ss)',
+ chkPrivacy : 'Aktiveerige privaatsust täiendav režiim',
+ chkOlderCode : 'Kasutage vana manuskoodi',
+ chkAutoplay: 'Automaatesitlus',
+ chkControls : 'Kuva pleieri nupud',
+ noCode : 'Te peate sisestama video manuskoodi või veebiaadressi',
+ invalidEmbed : 'Manuskood mille sisestasite ei paista olevat korrektne',
+ invalidUrl : 'Veebiaadress mille sisestasite ei paista olevat korrektne',
+ or : 'või',
+ noWidth : 'Te peate sisestama video laiuse',
+ invalidWidth : 'Sisestage korrektne laius',
+ noHeight : 'Te peate sisestama video kõrguse',
+ invalidHeight : 'Sisestage korrektne kõrgus',
+ invalidTime : 'Sisestage korrektne algusaeg',
+ txtResponsive : 'Aktiveerige ekraani laiusega ühilduv režiim'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/eu.js b/ckeditorplugins/youtube/youtube/lang/eu.js
new file mode 100644
index 0000000..d5abe81
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/eu.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'eu', {
+ button : 'Kapsulatu YouTube-ko bideoa',
+ title : 'Kapsulatu YouTube-ko bideoa',
+ txtEmbed : 'Itsatsi kapsulatzeko kodea hemen',
+ txtUrl : 'Itsatsi YouTube-ko bideoaren URLa',
+ txtWidth : 'Zabalera',
+ txtHeight : 'Altuera',
+ chkRelated : 'Erakutsi gomendatutako bideoak amaieran',
+ txtStartAt : 'Hasi hemendik (ss edo mm:ss edo hh:mm:ss)',
+ chkPrivacy : 'Gaitu pribatutasun hobetuko modua',
+ chkOlderCode : 'Erabili kapsulatzeko kode zaharra',
+ chkAutoplay: 'Erreproduzitu automatikoki',
+ chkControls: 'Erakutsi erreproduzigailuaren kontrolak',
+ noCode : 'Kapsulatzeko kode bat edo URL bat sartu behar duzu',
+ invalidEmbed : 'Sartu duzun kapsulatzeko kodea ez da baliozkoa',
+ invalidUrl : 'Sartu duzun URLa ez da baliozkoa',
+ or : 'edo',
+ noWidth : 'Zabalera sartu behar duzu',
+ invalidWidth : 'Sartu baliozko zabalera bat',
+ noHeight : 'Altuera sartu behar duzu',
+ invalidHeight : 'Sartu baliozko altuera bat',
+ invalidTime : 'Sartu baliozko hasierako denbora bat',
+ txtResponsive : 'Egin moldagarria (ez ikusia egin zabalera eta altuerari, zabalerara doitu)',
+ txtNoEmbed : 'Bideoaren irudia eta esteka soilik'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/fi.js b/ckeditorplugins/youtube/youtube/lang/fi.js
new file mode 100644
index 0000000..cd7ec48
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/fi.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'fi', {
+ button : 'Upota YouTube-video',
+ title : 'Upota YouTube-video',
+ txtEmbed : 'Syötä YouTube-videon upotuskoodi',
+ txtUrl : 'Syötä YouTube-videon www-osoite',
+ txtWidth : 'Leveys',
+ txtHeight : 'Korkeus',
+ chkRelated : 'Näytä suositukset lopussa',
+ txtStartAt : 'Aloitusaika (ss tai mm:ss tai tt:mm:ss)',
+ chkPrivacy : 'Aktivoi yksityisyyttä parantava tila',
+ chkOlderCode : 'Käytä vanhaa upotuskoodia',
+ chkAutoplay: 'Soita automaattisesti',
+ chkControls : 'Näytä soittimen ohjaimet',
+ noCode : 'Sinun täytyy syötää upotuskoodi tai www-osoite',
+ invalidEmbed : 'Upotuskoodi on virheellinen',
+ invalidUrl : 'Www-osoite on virheellinen',
+ or : 'tai',
+ noWidth : 'Syötä leveys',
+ invalidWidth : 'Leveys on virheellinen',
+ noHeight : 'Syötä korkeus',
+ invalidHeight : 'Korkeus on virheellinen',
+ invalidTime : 'Aloitusaika on virheellinen',
+ txtResponsive : 'Responsiivinen leveys (sovita leveys)'
+});
\ No newline at end of file
diff --git a/ckeditorplugins/youtube/youtube/lang/fr.js b/ckeditorplugins/youtube/youtube/lang/fr.js
new file mode 100644
index 0000000..05e1866
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/fr.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'fr', {
+ button : 'Insérer une vidéo Youtube',
+ title : 'Insérer une vidéo youtube',
+ txtEmbed : 'Coller le code embed ici',
+ txtUrl : 'Coller l\'url de la vidéo ici',
+ txtWidth : 'Largeur',
+ txtHeight : 'Hauteur',
+ chkRelated : 'Montrer les suggestions de vidéo à la fin',
+ txtStartAt : 'Commencer à (ss ou mm:ss ou hh:mm:ss)',
+ chkPrivacy : 'Activer la protection de la vie privée',
+ chkOlderCode : 'Utiliser l\'ancien code embed',
+ chkAutoplay : 'Autoplay',
+ chkControls : 'Afficher les commandes du lecteur',
+ noCode : 'Vous devez entrer un code embed ou une url',
+ invalidEmbed : 'Le code embed est invalide',
+ invalidUrl : 'L\'url est invalide',
+ or : 'ou',
+ noWidth : 'Vous devez saisir une largeur',
+ invalidWidth : 'La largeur saisie est invalide',
+ noHeight : 'Vous devez saisir une hauteur',
+ invalidHeight : 'La hauteur saisie est invalide',
+ invalidTime : 'Le temps de départ de la vidéo est invalide',
+ txtResponsive : 'Responsive video'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/he.js b/ckeditorplugins/youtube/youtube/lang/he.js
new file mode 100644
index 0000000..f73009a
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/he.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'he', {
+ button : 'שבץ וידאו של YouTube',
+ title : 'שבץ וידאו של YouTube',
+ txtEmbed : 'הדבק את קוד השיבוץ כאן',
+ txtUrl : 'הדבק כתובת וידאו YouTube',
+ txtWidth : 'אורך',
+ txtHeight : 'גובה',
+ chkRelated : 'הצג סרטונים מומלצים בסוף הודיאו',
+ txtStartAt : 'התחל ב (ss או mm:ss או hh:mm:ss)',
+ chkPrivacy : 'הפעל מצב פרטיות המשופרת',
+ chkOlderCode : 'השתמש בקוד הטמעה ישן',
+ chkAutoplay: 'הפעלה אוטומטית',
+ chkControls : 'הצג פקדי נגן',
+ noCode : 'אתה חייב להזין קוד embed כתובת וידאו אתר',
+ invalidEmbed : 'קוד ההטמעה שהוזן אינו נראה חוקי',
+ invalidUrl : 'כתובת הוידאו אינה נראת חוקית',
+ or : 'או',
+ noWidth : 'חובה להזין אורך',
+ invalidWidth : 'האורך שהוזן שגוי',
+ noHeight : 'חובה להזין גובה',
+ invalidHeight : 'הגובה שהוזן שגוי',
+ invalidTime : 'זמן התחלה שהוזן שגוי',
+ txtResponsive : 'הפוך לרספונסיבי (התעלם מרוחב וגובה, התאם לרוחב)'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/hu.js b/ckeditorplugins/youtube/youtube/lang/hu.js
new file mode 100644
index 0000000..531c20f
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/hu.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'hu', {
+ button : 'Youtube videó beillesztése',
+ title : 'Youtube videó beillesztése',
+ txtEmbed : 'Illessze be a beágyazott kódot',
+ txtUrl : 'Illessze be a Youtube videó URL-jét',
+ txtWidth : 'Szélesség',
+ txtHeight : 'Magasság',
+ txtStartAt : 'Kezdő időpont (ss vagy mm:ss vagy hh:mm:ss)',
+ chkRelated : 'Ajánlott videók megjelenítése, amikor a videó befejeződik',
+ chkPrivacy : 'Fokozott adatvédelmi mód engedélyezése',
+ chkOlderCode : 'Régi beágyazott kód használata',
+ chkAutoplay : 'Automatikus lejátszás',
+ chkControls : 'Lejátszásvezérlők mutatása',
+ noCode : 'A beágyazott kód, vagy az URL megadása kötelező',
+ invalidEmbed : 'A beágyazott kód érvénytelen',
+ invalidUrl : 'A megadott URL érvénytelen',
+ or : 'vagy',
+ noWidth : 'A szélesség megadása kötelező',
+ invalidWidth : 'Érvényes szélességet adjon meg',
+ noHeight : 'A magasság megadása kötelező',
+ invalidHeight : 'Érvényes magasságot adjon meg',
+ invalidTime : 'Érvényes kezdő időpontot adjon meg',
+ txtResponsive : 'Reszponzív videó',
+ txtNoEmbed : 'Csak kép és hivatkozás jelenjen meg'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/it.js b/ckeditorplugins/youtube/youtube/lang/it.js
new file mode 100644
index 0000000..68b37d3
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/it.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'it', {
+ button : 'Incorpora video Youtube',
+ title : 'Incorpora video Youtube',
+ txtEmbed : 'Incolla qui il codice di incorporamento',
+ txtUrl : 'Incolla l\'URL del video Youtube',
+ txtWidth : 'Larghezza',
+ txtHeight : 'Altezza',
+ chkRelated : 'Mostra i video suggeriti dopo il video',
+ txtStartAt : 'Inizia a (ss o mm:ss o hh:mm:ss)',
+ chkPrivacy : 'Abilita la protezione della privacy',
+ chkOlderCode : 'Usa il vecchio codice di incorporamento',
+ chkAutoplay : 'Autoplay',
+ chkControls : 'Mostra i controlli del player',
+ noCode : 'Devi inserire un codice di incorporamento o un URL',
+ invalidEmbed : 'Il codice di incorporamento inserito non sembra valido',
+ invalidUrl : 'L\'URL inserito non sembra valido',
+ or : 'o',
+ noWidth : 'Devi indicare la larghezza',
+ invalidWidth : 'Indica una larghezza valida',
+ noHeight : 'Devi indicare l\'altezza',
+ invalidHeight : 'Indica un\'altezza valida',
+ invalidTime : 'Indica un tempo di inizio valido',
+ txtResponsive : 'Responsive video'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/ja.js b/ckeditorplugins/youtube/youtube/lang/ja.js
new file mode 100644
index 0000000..4e2b1d1
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/ja.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'ja', {
+ button : 'Youtube動画埋め込み',
+ title : 'Youtube動画埋め込み',
+ txtEmbed : '埋め込みコードを貼り付けてください',
+ txtUrl : 'URLを貼り付けてください',
+ txtWidth : '幅',
+ txtHeight : '高さ',
+ chkRelated : '動画が終わったら関連動画を表示する',
+ txtStartAt : '開始時間(秒)',
+ chkPrivacy : 'プライバシー強化モードを有効にする',
+ chkOlderCode : '以前の埋め込みコードを使用する',
+ chkAutoplay : '自動再生',
+ chkControls: 'プレーヤーのコントロールを表示する',
+ noCode : '埋め込みコードまたはURLを入力してください',
+ invalidEmbed : '不適切な埋め込みコードが入力されました',
+ invalidUrl : '不適切なURLが入力されました',
+ or : 'または',
+ noWidth : '幅を指定してください',
+ invalidWidth : '幅指定に誤りがあります',
+ noHeight : '高さを指定してください',
+ invalidHeight : '高さ指定に誤りがあります',
+ invalidTime : '開始時間を正の整数で入力してください',
+ txtResponsive : 'レスポンシブ表示'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/ko.js b/ckeditorplugins/youtube/youtube/lang/ko.js
new file mode 100644
index 0000000..335c5a3
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/ko.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'ko', {
+ button : '유투브 비디오 삽입',
+ title : '유투브 비디오 삽입',
+ txtEmbed : '여기 embed 코드를 붙여넣으세요',
+ txtUrl : '유투브 주소(URL)를 붙여넣으세요',
+ txtWidth : '너비',
+ txtHeight : '높이',
+ chkRelated : '비디오 마지막에 추천 영상 보이기',
+ txtStartAt : '시작 시점 (ss 또는 mm:ss 또는 hh:mm:ss)',
+ chkPrivacy : '개인정보 보호 모드 활성화',
+ chkOlderCode : '옛날 embed 코드 사용',
+ chkAutoplay: '자동 재생',
+ chkControls: '플레이어 컨트롤 표시',
+ noCode : 'embed 코드 또는 URL을 입력해야 합니다',
+ invalidEmbed : '입력하신 embed 코드가 유효하지 않습니다',
+ invalidUrl : '입력하신 주소(URL)가 유효하지 않습니다',
+ or : '또는',
+ noWidth : '너비를 알려주세요',
+ invalidWidth : '너비가 유효하지 않습니다',
+ noHeight : '높이를 알려주세요',
+ invalidHeight : '높이가 유효하지 않습니다',
+ invalidTime : '시작 시점이 유효하지 않습니다',
+ txtResponsive : '반응형 너비 (입력한 너비와 높이를 무시하고 창 너비에 맞춤)',
+ txtNoEmbed : '비디오 이미지와 링크만 달기'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/nb.js b/ckeditorplugins/youtube/youtube/lang/nb.js
new file mode 100644
index 0000000..3a5afc2
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/nb.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'nb', {
+ button : 'Bygg inn YouTube-video',
+ title : 'Bygg inn YouTube-video',
+ txtEmbed : 'Lim inn embed-kode her',
+ txtUrl : 'Lim inn YouTube video-URL',
+ txtWidth : 'Bredde',
+ txtHeight : 'Høyde',
+ chkRelated : 'Vis foreslåtte videoer når videoen er ferdig',
+ txtStartAt : 'Start ved (ss eller mm:ss eller hh:mm:ss)',
+ chkPrivacy : 'Bruk personverntilpasset modus',
+ chkOlderCode : 'Bruk gammel embedkode',
+ chkAutoplay: 'Spill automatisk',
+ chkControls: 'Vis spillerkontrollene',
+ noCode : 'Du må legge inn en embed-kode eller URL',
+ invalidEmbed : 'Emded-koden du la inn ser ikke ut til å være gyldig',
+ invalidUrl : 'URLen du la inn ser ikke ut til å være gyldig',
+ or : 'eller',
+ noWidth : 'Du må legge inn bredde',
+ invalidWidth : 'Legg inn en gyldig bredde',
+ noHeight : 'Du må legge inn høyde',
+ invalidHeight : 'Legg inn en gyldig høyde',
+ invalidTime : 'Legg inn gyldig starttid',
+ txtResponsive : 'Gjør responsiv (ignorer bredde og høyde, tilpass bredde på sida)'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/nl.js b/ckeditorplugins/youtube/youtube/lang/nl.js
new file mode 100644
index 0000000..6b2c65a
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/nl.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'nl', {
+ button : 'Youtube video insluiten',
+ title : 'Youtube video insluiten',
+ txtEmbed : 'Plak embedcode hier',
+ txtUrl : 'Plak video URL',
+ txtWidth : 'Breedte',
+ txtHeight : 'Hoogte',
+ chkRelated : 'Toon gesuggereerde video aan het einde van de video',
+ txtStartAt : 'Starten op (ss of mm:ss of hh:mm:ss)',
+ chkPrivacy : 'Privacy-enhanced mode inschakelen',
+ chkOlderCode : 'Gebruik oude embedcode',
+ chkAutoplay: 'Automatisch starten',
+ chkControls: 'Afspeelbediening weergeven',
+ noCode : 'U moet een embedcode of url ingeven',
+ invalidEmbed : 'De ingegeven embedcode lijkt niet geldig',
+ invalidUrl : 'De ingegeven url lijkt niet geldig',
+ or : 'of',
+ noWidth : 'U moet een breedte ingeven',
+ invalidWidth : 'U moet een geldige breedte ingeven',
+ noHeight : 'U moet een hoogte ingeven',
+ invalidHeight : 'U moet een geldige starttijd ingeven',
+ invalidTime : 'Inform a valid start time',
+ txtResponsive : 'Responsive video',
+ txtNoEmbed : 'Alleen video afbeelding en link'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/nn.js b/ckeditorplugins/youtube/youtube/lang/nn.js
new file mode 100644
index 0000000..7efc3ba
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/nn.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'nn', {
+ button : 'Bygg inn YouTube-video',
+ title : 'Bygg inn YouTube-video',
+ txtEmbed : 'Lim inn embed-kode her',
+ txtUrl : 'Lim inn YouTube video-URL',
+ txtWidth : 'Breidde',
+ txtHeight : 'Høgde',
+ chkRelated : 'Vis foreslåtte videoar når videoen er ferdig',
+ txtStartAt : 'Start ved (ss eller mm:ss eller hh:mm:ss)',
+ chkPrivacy : 'Bruk personverntilpassa modus',
+ chkOlderCode : 'Bruk gamal embedkode',
+ chkAutoplay: 'Spel automatisk',
+ chkControls: 'Vis spillerkontrollene',
+ noCode : 'Du må leggja inn ein embed-kode eller URL',
+ invalidEmbed : 'Emded-koden du la inn ser ikkje ut til å vera gyldig',
+ invalidUrl : 'URLen du la inn ser ikkje ut til å vera gyldig',
+ or : 'eller',
+ noWidth : 'Du må leggja inn breidde',
+ invalidWidth : 'Legg inn ei gyldig breidde',
+ noHeight : 'Du må leggja inn høgde',
+ invalidHeight : 'Legg inn ei gyldig høgde',
+ invalidTime : 'Legg inn gyldig starttid',
+ txtResponsive : 'Gjer responsiv (ignorer breidde og høgde, tilpass breidda på sida)'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/pl.js b/ckeditorplugins/youtube/youtube/lang/pl.js
new file mode 100644
index 0000000..6470c21
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/pl.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'pl', {
+ button : 'Załącznik wideo z YouTube',
+ title : 'Załącznik wideo z YouTube',
+ txtEmbed : 'Wklej kod do umieszczenia',
+ txtUrl : 'Wklej adres URL do wideo z YouTube',
+ txtWidth : 'Szerokość',
+ txtHeight : 'Wysokość',
+ chkRelated : 'Pokaż sugerowane filmy po zakończeniu odtwarzania',
+ txtStartAt : 'Rozpocznij od (ss lub mm:ss lub gg:mm:ss)',
+ chkPrivacy : 'Włącz rozszerzony tryb prywatności',
+ chkOlderCode : 'Użyj starego kodu',
+ chkAutoplay: 'Autoodtwarzanie',
+ chkControls: 'Pokaż elementy sterujące odtwarzacza',
+ noCode : 'Musisz wprowadzić kod lub adres URL',
+ invalidEmbed : 'Wprowadzony kod nie jest poprawny',
+ invalidUrl : 'Wprowadzony adres URL nie jest poprawny',
+ or : 'lub',
+ noWidth : 'Musisz wpisać szerokość',
+ invalidWidth : 'Wprowadzona szerokość nie jest poprawna',
+ noHeight : 'Musisz wprowadzić wysokość',
+ invalidHeight : 'Wprowadzona wysokość nie jest poprawna',
+ invalidTime : 'Musisz wprowadzić poprawny czas rozpoczęcia',
+ txtResponsive : 'El. responsywny (ignoruj szerokość i wysokość, dopasuj do szerokości)'
+});
\ No newline at end of file
diff --git a/ckeditorplugins/youtube/youtube/lang/pt-br.js b/ckeditorplugins/youtube/youtube/lang/pt-br.js
new file mode 100644
index 0000000..52cda7c
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/pt-br.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'pt-br', {
+ button : 'Inserir Vídeo do Youtube',
+ title : 'Inserir Vídeo do Youtube',
+ txtEmbed : 'Cole aqui o código embed de um vídeo do Youtube',
+ txtUrl : 'Cole aqui uma URL de um vídeo do Youtube',
+ txtWidth : 'Largura',
+ txtHeight : 'Altura',
+ chkRelated : 'Mostrar vídeos sugeridos ao final do vídeo',
+ txtStartAt : 'Iniciar em (ss ou mm:ss ou hh:mm:ss)',
+ chkPrivacy : 'Ativar o modo de privacidade aprimorada',
+ chkOlderCode : 'Usar código de incorporação antigo',
+ chkAutoplay : 'Reproduzir automaticamente',
+ chkControls: 'Mostrar controles do player',
+ noCode : 'Você precisa informar um código embed ou uma URL',
+ invalidEmbed : 'O código informado não parece ser válido',
+ invalidUrl : 'A URL informada não parece ser válida',
+ or : 'ou',
+ noWidth : 'Você deve informar a largura do vídeo',
+ invalidWidth : 'Informe uma largura válida',
+ noHeight : 'Você deve informar a altura do vídeo',
+ invalidHeight : 'Informe uma altura válida',
+ invalidTime : 'O tempo informado é inválido',
+ txtResponsive : 'Vídeo responsivo',
+ txtNoEmbed : 'Somente imagem e link para o vídeo'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/pt.js b/ckeditorplugins/youtube/youtube/lang/pt.js
new file mode 100644
index 0000000..6043b8e
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/pt.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'pt', {
+ button : 'Inserir Vídeo do Youtube',
+ title : 'Inserir Vídeo do Youtube',
+ txtEmbed : 'Cole aqui o código embed de um vídeo do Youtube',
+ txtUrl : 'Cole aqui uma URL de um vídeo do Youtube',
+ txtWidth : 'Largura',
+ txtHeight : 'Altura',
+ chkRelated : 'Mostrar vídeos sugeridos quando o vídeo terminar',
+ txtStartAt : 'Iniciar em (ss ou mm:ss ou hh:mm:ss)',
+ chkPrivacy : 'Ativar o modo de privacidade otimizada',
+ chkOlderCode : 'Usar código de incorporação antigo',
+ chkAutoplay : 'Reproduzir automaticamente',
+ chkControls: 'Mostrar controles do player',
+ noCode : 'Você precisa informar um código embed ou uma URL',
+ invalidEmbed : 'O código informado não parece ser válido',
+ invalidUrl : 'A URL informada não parece ser válida',
+ or : 'ou',
+ noWidth : 'Você deve informar a largura do vídeo',
+ invalidWidth : 'Informe uma largura válida',
+ noHeight : 'Você deve informar a altura do vídeo',
+ invalidHeight : 'Informe uma altura válida',
+ invalidTime : 'O tempo informado é inválido',
+ txtResponsive : 'Vídeo responsivo',
+ txtNoEmbed : 'Somente imagem e link para o vídeo'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/ru.js b/ckeditorplugins/youtube/youtube/lang/ru.js
new file mode 100644
index 0000000..6637f4a
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/ru.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'ru', {
+ button : 'Вставить YouTube видео',
+ title : 'Вставить YouTube видео',
+ txtEmbed : 'Вставьте HTML-код сюда',
+ txtUrl : 'Вставьте адрес видео (URL)',
+ txtWidth : 'Ширина',
+ txtHeight : 'Высота',
+ chkRelated : 'Показать похожие видео после завершения просмотра',
+ txtStartAt : 'Начать с (сс или мм:сс или чч:мм:сс)',
+ chkPrivacy : 'Включить режим повышенной конфиденциальности',
+ chkOlderCode : 'Использовать старый код вставки',
+ chkAutoplay: 'Автозапуск',
+ chkControls: 'Показать панель управления',
+ noCode : 'Вы должны ввести HTML-код или адрес',
+ invalidEmbed : 'Ваш HTML-код не похож на правильный',
+ invalidUrl : 'Ваш адрес видео не похож на правильный',
+ or : 'или',
+ noWidth : 'Вы должны указать ширину',
+ invalidWidth : 'Укажите правильную ширину',
+ noHeight : 'Вы должны указать высоту',
+ invalidHeight : 'Укажите правильную высоту',
+ invalidTime : 'Укажите правильное время начала',
+ txtResponsive : 'Растягиваемое видео',
+ txtNoEmbed : 'Не встраивать видео (обложка-ссылка на YouTube)'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/sk.js b/ckeditorplugins/youtube/youtube/lang/sk.js
new file mode 100644
index 0000000..e7f93ad
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/sk.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'sk', {
+ button : 'Vložiť YouTube video',
+ title : 'Vložiť YouTube video',
+ txtEmbed : 'Vložiť Youtube Embed Video kódu',
+ txtUrl : 'Vložiť pomocou YouTube video URL',
+ txtWidth : 'Šírka',
+ txtHeight : 'Výška',
+ chkRelated : 'Zobraziť odporúčané videá po prehratí',
+ txtStartAt : 'Začať prehrávanie videa (ss alebo mm:ss alebo hh:mm:ss)',
+ chkPrivacy : 'Povoliť pokročilý mód súkromia',
+ chkOlderCode : 'Použiť starú metódu vkladania',
+ chkAutoplay: 'Automatické prehrávanie',
+ chkControls: 'Zobraziť ovládacie prvky prehrávača',
+ noCode : 'Musíte vložiť Youtube Embed kód alebo URL',
+ invalidEmbed : 'Vložený kód nie je valídny',
+ invalidUrl : 'Vložená URL nie je platná',
+ or : 'alebo',
+ noWidth : 'Prosím, zadajte šírku videa',
+ invalidWidth : 'Zadajte valídnu šírku videa',
+ noHeight : 'Prosím, zadajte výšku videa',
+ invalidHeight : 'Zadajte valídnu výšku videa',
+ invalidTime : 'Zadajte valídny formát začiatku prehrávania videa',
+ txtResponsive : 'Prispôsobit rozmery videa rozmerom obrazovky (ignoruje šírku a výšku, prispôsobí sa šírke obrazovky)'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/tr.js b/ckeditorplugins/youtube/youtube/lang/tr.js
new file mode 100644
index 0000000..8608691
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/tr.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'tr', {
+ button : 'Youtube Video Gömün (Embed)',
+ title : 'Youtube Video',
+ txtEmbed : 'Youtube gömülü kodu (embed) buraya yapıştırınız',
+ txtUrl : 'Youtube linkinizi buraya yapıştırınız',
+ txtWidth : 'Genişlik',
+ txtHeight : 'Yükseklik',
+ chkRelated : 'Önerilen videoları video bitiminde göster',
+ txtStartAt : 'Video başlangıç anı (ss ya da dd:ss ya da ss:dd:ss)',
+ chkPrivacy : 'Gizlilik modunu etkinleştir',
+ chkOlderCode : 'Eski gömülü kodu (embed) kullan',
+ chkAutoplay: 'Otomatik',
+ chkControls: 'Oynatıcı kontrollerini göster',
+ noCode : 'Gömülü kod (embed) veya url yapıştırmak zorundasınız',
+ invalidEmbed : 'Verdiğiniz gömülü kod (embed) ile video bulunamadı',
+ invalidUrl : 'Verdiğiniz linkte video bulunamadı',
+ or : 'ya da',
+ noWidth : 'Genişliği belirtmek zorundasınız',
+ invalidWidth : 'Bir genişlik belirtin',
+ noHeight : 'Yükseliği belirtmek zorundasınız',
+ invalidHeight : 'Yükseklik belirtin',
+ invalidTime : 'Başlangıç anını doğru girin, örneğin: 13 (13. saniye) ya da 12:25 (12. dakika 25. saniye) ya da 01.25.33 (1 saat 25 dakika 33 saniye)',
+ txtResponsive : 'Responsive video'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/uk.js b/ckeditorplugins/youtube/youtube/lang/uk.js
new file mode 100644
index 0000000..a94939c
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/uk.js
@@ -0,0 +1,25 @@
+CKEDITOR.plugins.setLang('youtube', 'uk', {
+ button : 'Вставити YouTube-відео',
+ title : 'Вставити YouTube-відео',
+ txtEmbed : 'Вставте HTML-код сюди',
+ txtUrl : 'Вставте URL-адресу сюди',
+ txtWidth : 'Ширина',
+ txtHeight : 'Висота',
+ chkRelated : 'Показати пропоновані відео в кінці',
+ txtStartAt : 'Почати з (сс або хх:сс або гг:хх:сс)',
+ chkPrivacy : 'Увімкнути режим підвищеної конфіденційності',
+ chkOlderCode : 'Використовувати старий код вставки',
+ chkAutoplay: 'Автовідтворення',
+ chkControls: 'Показувати елементи управління плеєром',
+ noCode : 'Ви повинні ввести HTML-код або URL-адресу',
+ invalidEmbed : 'Код вставки, який ви додали не вірний',
+ invalidUrl : 'URL-адреса, яку ви додали не вірна',
+ or : 'або',
+ noWidth : 'Укажіть ширину',
+ invalidWidth : 'Укажіть правильну ширину',
+ noHeight : 'Укажіть висоту',
+ invalidHeight : 'Укажіть правильну висоту',
+ invalidTime : 'Укажіть правильний час початку',
+ txtResponsive : 'Адаптивне (таке, яке розтягується) відео',
+ txtNoEmbed : 'Додати лише обкладинку та посилання на YouTube'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/vi.js b/ckeditorplugins/youtube/youtube/lang/vi.js
new file mode 100644
index 0000000..8d95d22
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/vi.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'vi', {
+ button : 'Embed Youtube Video',
+ title : 'Nhúng Video Youtube',
+ txtEmbed : 'Dãn mã nhúng Embed vào đây',
+ txtUrl : 'Dãn đường dẫn video Youtube',
+ txtWidth : 'Rộng',
+ txtHeight : 'Cao',
+ chkRelated : 'Hiển thị các video được đề xuất khi video kết thúc',
+ txtStartAt : 'Bắt đầu (ss hoặc mm:ss hoặc hh:mm:ss)',
+ chkPrivacy : 'Kích hoạt chế độ bảo mật nâng cao',
+ chkOlderCode : 'Sử dụng mã nhúng cũ',
+ chkAutoplay: 'Tự động chạy video',
+ chkControls: 'Hiển thị các điều khiển trình phát',
+ noCode : 'Bạn phải nhập mã nhúng hoặc URL',
+ invalidEmbed : 'Mã nhúng bạn đã nhập không đúng',
+ invalidUrl : 'URL bạn đã nhập không đúng',
+ or : 'hoặc',
+ noWidth : 'Bạn phải chiều rộng',
+ invalidWidth : 'Chiều rộng hợp lệ',
+ noHeight : 'Bạn phải chiều cao',
+ invalidHeight : 'Chiều cao hợp lệ',
+ invalidTime : 'Thời gian bắt đầu không đúng',
+ txtResponsive : 'Responsive video'
+});
diff --git a/ckeditorplugins/youtube/youtube/lang/zh.js b/ckeditorplugins/youtube/youtube/lang/zh.js
new file mode 100644
index 0000000..dfab8be
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/lang/zh.js
@@ -0,0 +1,24 @@
+CKEDITOR.plugins.setLang('youtube', 'zh', {
+ button: '嵌入 Youtube 影片',
+ title: '嵌入 Youtube 影片',
+ txtEmbed: '貼上嵌入碼',
+ txtUrl: '貼上 Youtube 影片 URL',
+ txtWidth: '寬',
+ txtHeight: '高',
+ txtResponsive: '使用自適應縮放模式 (忽略設定的長寬, 以寬為基準縮放)',
+ chkRelated: '影片結束時顯示建議影片',
+ txtStartAt: '開始時間 (ss or mm:ss or hh:mm:ss)',
+ chkPrivacy: '啟用加強隱私模式',
+ chkOlderCode: '使用舊的嵌入碼',
+ chkAutoplay: '自動播放',
+ chkControls: '显示播放器控件',
+ noCode: '必須輸入嵌入碼',
+ invalidEmbed: '錯誤的嵌入碼',
+ invalidUrl: '錯誤的URL',
+ or: '或',
+ noWidth: '必須設定寬',
+ invalidWidth: '寬設定錯誤',
+ noHeight: '必須設定高',
+ invalidHeight: '高設定錯誤',
+ invalidTime: '開始時間設定錯誤'
+});
diff --git a/ckeditorplugins/youtube/youtube/plugin.js b/ckeditorplugins/youtube/youtube/plugin.js
new file mode 100644
index 0000000..35f97aa
--- /dev/null
+++ b/ckeditorplugins/youtube/youtube/plugin.js
@@ -0,0 +1,449 @@
+/*
+* Youtube Embed Plugin
+*
+* @author Jonnas Fonini
+* @version 2.1.13
+*/
+(function () {
+ CKEDITOR.plugins.add('youtube', {
+ lang: [ 'en', 'bg', 'pt', 'pt-br', 'ja', 'hu', 'it', 'fr', 'tr', 'ru', 'de', 'ar', 'nl', 'pl', 'vi', 'zh', 'el', 'he', 'es', 'nb', 'nn', 'fi', 'et', 'sk', 'cs', 'ko', 'eu', 'uk'],
+ init: function (editor) {
+ editor.addCommand('youtube', new CKEDITOR.dialogCommand('youtube', {
+ allowedContent: 'div{*}(*); iframe{*}[!width,!height,!src,!frameborder,!allowfullscreen,!allow]; object param[*]; a[*]; img[*]'
+ }));
+
+ editor.ui.addButton('Youtube', {
+ label : editor.lang.youtube.button,
+ toolbar : 'insert',
+ command : 'youtube',
+ icon : this.path + 'images/icon.png'
+ });
+
+ CKEDITOR.dialog.add('youtube', function (instance) {
+ var video,
+ disabled = editor.config.youtube_disabled_fields || [];
+
+ return {
+ title : editor.lang.youtube.title,
+ minWidth : 510,
+ minHeight : 200,
+ onShow: function () {
+ for (var i = 0; i < disabled.length; i++) {
+ this.getContentElement('youtubePlugin', disabled[i]).disable();
+ }
+ },
+ contents :
+ [{
+ id : 'youtubePlugin',
+ expand : true,
+ elements :
+ [{
+ id : 'txtEmbed',
+ type : 'textarea',
+ label : editor.lang.youtube.txtEmbed,
+ onChange : function (api) {
+ handleEmbedChange(this, api);
+ },
+ onKeyUp : function (api) {
+ handleEmbedChange(this, api);
+ },
+ validate : function () {
+ if (this.isEnabled()) {
+ if (!this.getValue()) {
+ alert(editor.lang.youtube.noCode);
+ return false;
+ }
+ else
+ if (this.getValue().length === 0 || this.getValue().indexOf('//') === -1) {
+ alert(editor.lang.youtube.invalidEmbed);
+ return false;
+ }
+ }
+ }
+ },
+ {
+ type : 'html',
+ html : editor.lang.youtube.or + ' '
+ },
+ {
+ type : 'hbox',
+ widths : [ '70%', '15%', '15%' ],
+ children :
+ [
+ {
+ id : 'txtUrl',
+ type : 'text',
+ label : editor.lang.youtube.txtUrl,
+ onChange : function (api) {
+ handleLinkChange(this, api);
+ },
+ onKeyUp : function (api) {
+ handleLinkChange(this, api);
+ },
+ validate : function () {
+ if (this.isEnabled()) {
+ if (!this.getValue()) {
+ alert(editor.lang.youtube.noCode);
+ return false;
+ }
+ else{
+ video = ytVidId(this.getValue());
+
+ if (this.getValue().length === 0 || video === false)
+ {
+ alert(editor.lang.youtube.invalidUrl);
+ return false;
+ }
+ }
+ }
+ }
+ },
+ {
+ type : 'text',
+ id : 'txtWidth',
+ width : '60px',
+ label : editor.lang.youtube.txtWidth,
+ 'default' : editor.config.youtube_width != null ? editor.config.youtube_width : '640',
+ validate : function () {
+ if (this.getValue()) {
+ var width = parseInt (this.getValue()) || 0;
+
+ if (width === 0) {
+ alert(editor.lang.youtube.invalidWidth);
+ return false;
+ }
+ }
+ else {
+ alert(editor.lang.youtube.noWidth);
+ return false;
+ }
+ }
+ },
+ {
+ type : 'text',
+ id : 'txtHeight',
+ width : '60px',
+ label : editor.lang.youtube.txtHeight,
+ 'default' : editor.config.youtube_height != null ? editor.config.youtube_height : '360',
+ validate : function () {
+ if (this.getValue()) {
+ var height = parseInt(this.getValue()) || 0;
+
+ if (height === 0) {
+ alert(editor.lang.youtube.invalidHeight);
+ return false;
+ }
+ }
+ else {
+ alert(editor.lang.youtube.noHeight);
+ return false;
+ }
+ }
+ }
+ ]
+ },
+ {
+ type : 'hbox',
+ widths : [ '55%', '45%' ],
+ children :
+ [
+ {
+ id : 'chkResponsive',
+ type : 'checkbox',
+ label : editor.lang.youtube.txtResponsive,
+ 'default' : editor.config.youtube_responsive != null ? editor.config.youtube_responsive : false
+ },
+ {
+ id : 'chkNoEmbed',
+ type : 'checkbox',
+ label : editor.lang.youtube.txtNoEmbed,
+ 'default' : editor.config.youtube_noembed != null ? editor.config.youtube_noembed : false
+ }
+ ]
+ },
+ {
+ type : 'hbox',
+ widths : [ '55%', '45%' ],
+ children :
+ [
+ {
+ id : 'chkRelated',
+ type : 'checkbox',
+ 'default' : editor.config.youtube_related != null ? editor.config.youtube_related : true,
+ label : editor.lang.youtube.chkRelated
+ },
+ {
+ id : 'chkOlderCode',
+ type : 'checkbox',
+ 'default' : editor.config.youtube_older != null ? editor.config.youtube_older : false,
+ label : editor.lang.youtube.chkOlderCode
+ }
+ ]
+ },
+ {
+ type : 'hbox',
+ widths : [ '55%', '45%' ],
+ children :
+ [
+ {
+ id : 'chkPrivacy',
+ type : 'checkbox',
+ label : editor.lang.youtube.chkPrivacy,
+ 'default' : editor.config.youtube_privacy != null ? editor.config.youtube_privacy : false
+ },
+ {
+ id : 'chkAutoplay',
+ type : 'checkbox',
+ 'default' : editor.config.youtube_autoplay != null ? editor.config.youtube_autoplay : false,
+ label : editor.lang.youtube.chkAutoplay
+ }
+ ]
+ },
+ {
+ type : 'hbox',
+ widths : [ '55%', '45%'],
+ children :
+ [
+ {
+ id : 'txtStartAt',
+ type : 'text',
+ label : editor.lang.youtube.txtStartAt,
+ validate : function () {
+ if (this.getValue()) {
+ var str = this.getValue();
+
+ if (!/^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$/i.test(str)) {
+ alert(editor.lang.youtube.invalidTime);
+ return false;
+ }
+ }
+ }
+ },
+ {
+ id : 'chkControls',
+ type : 'checkbox',
+ 'default' : editor.config.youtube_controls != null ? editor.config.youtube_controls : true,
+ label : editor.lang.youtube.chkControls
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ onOk: function()
+ {
+ var content = '';
+ var responsiveStyle = '';
+
+ if (this.getContentElement('youtubePlugin', 'txtEmbed').isEnabled()) {
+ content = this.getValueOf('youtubePlugin', 'txtEmbed');
+ }
+ else {
+ var url = 'https://', params = [], startSecs, paramAutoplay='';
+ var width = this.getValueOf('youtubePlugin', 'txtWidth');
+ var height = this.getValueOf('youtubePlugin', 'txtHeight');
+
+ if (this.getContentElement('youtubePlugin', 'chkPrivacy').getValue() === true) {
+ url += 'www.youtube-nocookie.com/';
+ }
+ else {
+ url += 'www.youtube.com/';
+ }
+
+ url += 'embed/' + video;
+
+ if (this.getContentElement('youtubePlugin', 'chkRelated').getValue() === false) {
+ params.push('rel=0');
+ }
+
+ if (this.getContentElement('youtubePlugin', 'chkAutoplay').getValue() === true) {
+ params.push('autoplay=1');
+ paramAutoplay='autoplay';
+ }
+
+ if (this.getContentElement('youtubePlugin', 'chkControls').getValue() === false) {
+ params.push('controls=0');
+ }
+
+ startSecs = this.getValueOf('youtubePlugin', 'txtStartAt');
+
+ if (startSecs) {
+ var seconds = hmsToSeconds(startSecs);
+
+ params.push('start=' + seconds);
+ }
+
+ if (params.length > 0) {
+ url = url + '?' + params.join('&');
+ }
+
+ if (this.getContentElement('youtubePlugin', 'chkResponsive').getValue() === true) {
+ content += '';
+ responsiveStyle = 'style="position:absolute;top:0;left:0;width:100%;height:100%"';
+ }
+
+ if (this.getContentElement('youtubePlugin', 'chkOlderCode').getValue() === true) {
+ url = url.replace('embed/', 'v/');
+ url = url.replace(/&/g, '&');
+
+ if (url.indexOf('?') === -1) {
+ url += '?';
+ }
+ else {
+ url += '&';
+ }
+ url += 'hl=' + (this.getParentEditor().config.language ? this.getParentEditor().config.language : 'en') + '&version=3';
+
+ content += '
';
+ content += ' ';
+ content += ' ';
+ content += ' ';
+ content += ' ';
+ content += ' ';
+ }
+ else
+ if (this.getContentElement('youtubePlugin', 'chkNoEmbed').getValue() === true) {
+ var imgSrc = '//img.youtube.com/vi/' + video + '/sddefault.jpg';
+ content += '
';
+ }
+ else {
+ content += '
';
+ }
+
+ if (this.getContentElement('youtubePlugin', 'chkResponsive').getValue() === true) {
+ content += '
';
+ }
+ }
+
+ var element = CKEDITOR.dom.element.createFromHtml(content);
+ var instance = this.getParentEditor();
+ instance.insertElement(element);
+ }
+ };
+ });
+ }
+ });
+})();
+
+function handleLinkChange(el, api) {
+ var video = ytVidId(el.getValue());
+ var time = ytVidTime(el.getValue());
+
+ if (el.getValue().length > 0) {
+ el.getDialog().getContentElement('youtubePlugin', 'txtEmbed').disable();
+ }
+ else {
+ el.getDialog().getContentElement('youtubePlugin', 'txtEmbed').enable();
+ }
+
+ if (video && time) {
+ var seconds = timeParamToSeconds(time);
+ var hms = secondsToHms(seconds);
+ el.getDialog().getContentElement('youtubePlugin', 'txtStartAt').setValue(hms);
+ }
+}
+
+function handleEmbedChange(el, api) {
+ if (el.getValue().length > 0) {
+ el.getDialog().getContentElement('youtubePlugin', 'txtUrl').disable();
+ }
+ else {
+ el.getDialog().getContentElement('youtubePlugin', 'txtUrl').enable();
+ }
+}
+
+
+/**
+ * JavaScript function to match (and return) the video Id
+ * of any valid Youtube Url, given as input string.
+ * @author: Stephan Schmitz
+ * @url: http://stackoverflow.com/a/10315969/624466
+ */
+function ytVidId(url) {
+ var p = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
+ return (url.match(p)) ? RegExp.$1 : false;
+}
+
+/**
+ * Matches and returns time param in YouTube Urls.
+ */
+function ytVidTime(url) {
+ var p = /t=([0-9hms]+)/;
+ return (url.match(p)) ? RegExp.$1 : false;
+}
+
+/**
+ * Converts time in hms format to seconds only
+ */
+function hmsToSeconds(time) {
+ var arr = time.split(':'), s = 0, m = 1;
+
+ while (arr.length > 0) {
+ s += m * parseInt(arr.pop(), 10);
+ m *= 60;
+ }
+
+ return s;
+}
+
+/**
+ * Converts seconds to hms format
+ */
+function secondsToHms(seconds) {
+ var h = Math.floor(seconds / 3600);
+ var m = Math.floor((seconds / 60) % 60);
+ var s = seconds % 60;
+
+ var pad = function (n) {
+ n = String(n);
+ return n.length >= 2 ? n : "0" + n;
+ };
+
+ if (h > 0) {
+ return pad(h) + ':' + pad(m) + ':' + pad(s);
+ }
+ else {
+ return pad(m) + ':' + pad(s);
+ }
+}
+
+/**
+ * Converts time in youtube t-param format to seconds
+ */
+function timeParamToSeconds(param) {
+ var componentValue = function (si) {
+ var regex = new RegExp('(\\d+)' + si);
+ return param.match(regex) ? parseInt(RegExp.$1, 10) : 0;
+ };
+
+ return componentValue('h') * 3600
+ + componentValue('m') * 60
+ + componentValue('s');
+}
+
+/**
+ * Converts seconds into youtube t-param value, e.g. 1h4m30s
+ */
+function secondsToTimeParam(seconds) {
+ var h = Math.floor(seconds / 3600);
+ var m = Math.floor((seconds / 60) % 60);
+ var s = seconds % 60;
+ var param = '';
+
+ if (h > 0) {
+ param += h + 'h';
+ }
+
+ if (m > 0) {
+ param += m + 'm';
+ }
+
+ if (s > 0) {
+ param += s + 's';
+ }
+
+ return param;
+}
diff --git a/digitaleagentur/__pycache__/__init__.cpython-38.pyc b/digitaleagentur/__pycache__/__init__.cpython-38.pyc
index f932871..1ffa496 100644
Binary files a/digitaleagentur/__pycache__/__init__.cpython-38.pyc and b/digitaleagentur/__pycache__/__init__.cpython-38.pyc differ
diff --git a/digitaleagentur/__pycache__/settings.cpython-38.pyc b/digitaleagentur/__pycache__/settings.cpython-38.pyc
index 614210a..597dbdb 100644
Binary files a/digitaleagentur/__pycache__/settings.cpython-38.pyc and b/digitaleagentur/__pycache__/settings.cpython-38.pyc differ
diff --git a/digitaleagentur/__pycache__/urls.cpython-38.pyc b/digitaleagentur/__pycache__/urls.cpython-38.pyc
index 3f262e9..fb6bfe7 100644
Binary files a/digitaleagentur/__pycache__/urls.cpython-38.pyc and b/digitaleagentur/__pycache__/urls.cpython-38.pyc differ
diff --git a/digitaleagentur/__pycache__/views.cpython-38.pyc b/digitaleagentur/__pycache__/views.cpython-38.pyc
index ecd32fe..268c51d 100644
Binary files a/digitaleagentur/__pycache__/views.cpython-38.pyc and b/digitaleagentur/__pycache__/views.cpython-38.pyc differ
diff --git a/digitaleagentur/__pycache__/wsgi.cpython-38.pyc b/digitaleagentur/__pycache__/wsgi.cpython-38.pyc
index 3e8074e..c66704f 100644
Binary files a/digitaleagentur/__pycache__/wsgi.cpython-38.pyc and b/digitaleagentur/__pycache__/wsgi.cpython-38.pyc differ
diff --git a/digitaleagentur/settings.py b/digitaleagentur/settings.py
index eabaf9a..ea86167 100644
--- a/digitaleagentur/settings.py
+++ b/digitaleagentur/settings.py
@@ -87,6 +87,8 @@ CKEDITOR_RESTRICT_BY_USER = False
CKEDITOR_REQUIRE_STAFF=False
AWS_QUERYSTRING_AUTH = True
CKEDITOR_IMAGE_BACKEND = "pillow"
+#CKEDITOR_PLUGINS.addExternal('youtube', "../ckeditorplugins/youtube/youtube/plugin.js");
+
CKEDITOR_CONFIGS = {
'default': {
'skin': 'moono-lisa',
diff --git a/media/default.jpg b/media/default.jpg
new file mode 100644
index 0000000..8648915
Binary files /dev/null and b/media/default.jpg differ
diff --git a/media/userprofilepics/default.jpg b/media/userprofilepics/default.jpg
index 1fb7d8c..8648915 100644
Binary files a/media/userprofilepics/default.jpg and b/media/userprofilepics/default.jpg differ
diff --git a/news/__pycache__/__init__.cpython-38.pyc b/news/__pycache__/__init__.cpython-38.pyc
index fe38ad1..50d4891 100644
Binary files a/news/__pycache__/__init__.cpython-38.pyc and b/news/__pycache__/__init__.cpython-38.pyc differ
diff --git a/news/__pycache__/admin.cpython-38.pyc b/news/__pycache__/admin.cpython-38.pyc
index 144b68c..8692976 100644
Binary files a/news/__pycache__/admin.cpython-38.pyc and b/news/__pycache__/admin.cpython-38.pyc differ
diff --git a/news/__pycache__/apps.cpython-38.pyc b/news/__pycache__/apps.cpython-38.pyc
index c643216..45a5cfe 100644
Binary files a/news/__pycache__/apps.cpython-38.pyc and b/news/__pycache__/apps.cpython-38.pyc differ
diff --git a/news/__pycache__/forms.cpython-38.pyc b/news/__pycache__/forms.cpython-38.pyc
index 2903330..4f2a036 100644
Binary files a/news/__pycache__/forms.cpython-38.pyc and b/news/__pycache__/forms.cpython-38.pyc differ
diff --git a/news/__pycache__/models.cpython-38.pyc b/news/__pycache__/models.cpython-38.pyc
index b32eaa5..bd27abd 100644
Binary files a/news/__pycache__/models.cpython-38.pyc and b/news/__pycache__/models.cpython-38.pyc differ
diff --git a/news/__pycache__/urls.cpython-38.pyc b/news/__pycache__/urls.cpython-38.pyc
index 329ef64..4f0ef46 100644
Binary files a/news/__pycache__/urls.cpython-38.pyc and b/news/__pycache__/urls.cpython-38.pyc differ
diff --git a/news/__pycache__/views.cpython-38.pyc b/news/__pycache__/views.cpython-38.pyc
index 6bfbe20..5498663 100644
Binary files a/news/__pycache__/views.cpython-38.pyc and b/news/__pycache__/views.cpython-38.pyc differ
diff --git a/orga/__pycache__/__init__.cpython-38.pyc b/orga/__pycache__/__init__.cpython-38.pyc
index 496d807..5fbb46a 100644
Binary files a/orga/__pycache__/__init__.cpython-38.pyc and b/orga/__pycache__/__init__.cpython-38.pyc differ
diff --git a/orga/__pycache__/admin.cpython-38.pyc b/orga/__pycache__/admin.cpython-38.pyc
index 6513846..52eca0c 100644
Binary files a/orga/__pycache__/admin.cpython-38.pyc and b/orga/__pycache__/admin.cpython-38.pyc differ
diff --git a/orga/__pycache__/apps.cpython-38.pyc b/orga/__pycache__/apps.cpython-38.pyc
index 52f5b45..bad2d21 100644
Binary files a/orga/__pycache__/apps.cpython-38.pyc and b/orga/__pycache__/apps.cpython-38.pyc differ
diff --git a/orga/__pycache__/models.cpython-38.pyc b/orga/__pycache__/models.cpython-38.pyc
index 96f69e5..0ceedb8 100644
Binary files a/orga/__pycache__/models.cpython-38.pyc and b/orga/__pycache__/models.cpython-38.pyc differ
diff --git a/orga/__pycache__/urls.cpython-38.pyc b/orga/__pycache__/urls.cpython-38.pyc
index 442122f..dbd2557 100644
Binary files a/orga/__pycache__/urls.cpython-38.pyc and b/orga/__pycache__/urls.cpython-38.pyc differ
diff --git a/orga/__pycache__/views.cpython-38.pyc b/orga/__pycache__/views.cpython-38.pyc
index 642bcda..41827fe 100644
Binary files a/orga/__pycache__/views.cpython-38.pyc and b/orga/__pycache__/views.cpython-38.pyc differ
diff --git a/orga/templates/orga/orga_main.html b/orga/templates/orga/orga_main.html
index ef315e9..82fb7e2 100644
--- a/orga/templates/orga/orga_main.html
+++ b/orga/templates/orga/orga_main.html
@@ -102,7 +102,7 @@ function setNodeTemplate(obj, diagram) {
}
else{
image.id = obj.id + '_pic';
- image.width = 100; image.height = 100; image.style.strokeColor = 'none';
+ image.width = 75; image.height = 75; image.style.strokeColor = 'none';
image.source = obj.data.imageUrl;
}
diff --git a/orga/templates/orga/orga_main_OLD.html b/orga/templates/orga/orga_main_OLD.html
deleted file mode 100644
index c89d436..0000000
--- a/orga/templates/orga/orga_main_OLD.html
+++ /dev/null
@@ -1,167 +0,0 @@
-{% extends "users/base.html" %}
-{% block content %}
-
-
-
-
{{request.user.profile.agency.name}}
-
-
Organigramm
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{% endblock content %}
\ No newline at end of file
diff --git a/orga/templates/orga/orga_single.html b/orga/templates/orga/orga_single.html
index 49cd764..3ebc65a 100644
--- a/orga/templates/orga/orga_single.html
+++ b/orga/templates/orga/orga_single.html
@@ -19,7 +19,7 @@
E-Mail
- {{ mail }}
+ {{ mail }}
diff --git a/orga/views.py b/orga/views.py
index de617e7..a87b8fc 100644
--- a/orga/views.py
+++ b/orga/views.py
@@ -15,7 +15,7 @@ def mainorga(request):
#else:
# leader = None
- agencyuser = list(User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).order_by('-id'))
+ agencyuser = list(User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).filter(profile__visible=True).order_by('-id'))
#indoor = list(User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).filter(profile__func='indoor'))
#external = list(User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).filter(profile__func='external'))
@@ -34,9 +34,6 @@ def mainorga(request):
return render(request, 'orga/orga_main.html', context)
-
-
-
@login_required
def singleorga(request, pk):
user = User.objects.get(pk=pk)
@@ -45,7 +42,7 @@ def singleorga(request, pk):
prios = Prio.objects.filter(user__pk=pk).order_by('-prio')[::-1]
'''
prios = Prio.objects.filter(user__pk=pk).order_by('-prio')
- areas = list(Areas.objects.filter(agency__pk=request.user.profile.agency.pk))
+ areas = list(Areas.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('areaorder'))
i = 0
for area in areas:
areas[i].hex = areas[i].color
diff --git a/standards/__pycache__/__init__.cpython-38.pyc b/standards/__pycache__/__init__.cpython-38.pyc
index 3efa48c..10c9914 100644
Binary files a/standards/__pycache__/__init__.cpython-38.pyc and b/standards/__pycache__/__init__.cpython-38.pyc differ
diff --git a/standards/__pycache__/admin.cpython-38.pyc b/standards/__pycache__/admin.cpython-38.pyc
index a4a2637..636f01b 100644
Binary files a/standards/__pycache__/admin.cpython-38.pyc and b/standards/__pycache__/admin.cpython-38.pyc differ
diff --git a/standards/__pycache__/apps.cpython-38.pyc b/standards/__pycache__/apps.cpython-38.pyc
index 4552384..4506211 100644
Binary files a/standards/__pycache__/apps.cpython-38.pyc and b/standards/__pycache__/apps.cpython-38.pyc differ
diff --git a/standards/__pycache__/forms.cpython-38.pyc b/standards/__pycache__/forms.cpython-38.pyc
index 26a019c..a2f4a40 100644
Binary files a/standards/__pycache__/forms.cpython-38.pyc and b/standards/__pycache__/forms.cpython-38.pyc differ
diff --git a/standards/__pycache__/models.cpython-38.pyc b/standards/__pycache__/models.cpython-38.pyc
index 49f2123..3d9a495 100644
Binary files a/standards/__pycache__/models.cpython-38.pyc and b/standards/__pycache__/models.cpython-38.pyc differ
diff --git a/standards/__pycache__/urls.cpython-38.pyc b/standards/__pycache__/urls.cpython-38.pyc
index 29e42d3..67f12f1 100644
Binary files a/standards/__pycache__/urls.cpython-38.pyc and b/standards/__pycache__/urls.cpython-38.pyc differ
diff --git a/standards/__pycache__/views.cpython-38.pyc b/standards/__pycache__/views.cpython-38.pyc
index cf29dd0..2ab7a1b 100644
Binary files a/standards/__pycache__/views.cpython-38.pyc and b/standards/__pycache__/views.cpython-38.pyc differ
diff --git a/standards/templates/standards/standards_management.html b/standards/templates/standards/standards_management.html
index f66d0e9..ea0f4d1 100644
--- a/standards/templates/standards/standards_management.html
+++ b/standards/templates/standards/standards_management.html
@@ -76,7 +76,12 @@
diff --git a/standards/views.py b/standards/views.py
index a228398..8058c91 100644
--- a/standards/views.py
+++ b/standards/views.py
@@ -37,6 +37,7 @@ def StandardAdd(request):
if editorForm.is_valid() and normalForm.is_valid():
normalForm.agency = request.user.profile.agency
normalForm.created_standard_by = request.user
+ normalForm.created_standard_date = datetime.now()
normalForm.published_by = request.user
normalForm.last_modifed_by = request.user
normalForm.save()
@@ -46,6 +47,7 @@ def StandardAdd(request):
new_standard.created_standard_by = request.user
new_standard.published_by = request.user
new_standard.last_modified_by = request.user
+ new_standard.created_standard_date = datetime.now()
new_standard.last_modified_on = datetime.now()
new_standard.task = normalForm.cleaned_data['task']
new_standard.area = normalForm.cleaned_data['area']
diff --git a/tasks/__pycache__/__init__.cpython-38.pyc b/tasks/__pycache__/__init__.cpython-38.pyc
index 5761d3d..ba2b443 100644
Binary files a/tasks/__pycache__/__init__.cpython-38.pyc and b/tasks/__pycache__/__init__.cpython-38.pyc differ
diff --git a/tasks/__pycache__/admin.cpython-38.pyc b/tasks/__pycache__/admin.cpython-38.pyc
index 64cf5df..4785bcc 100644
Binary files a/tasks/__pycache__/admin.cpython-38.pyc and b/tasks/__pycache__/admin.cpython-38.pyc differ
diff --git a/tasks/__pycache__/apps.cpython-38.pyc b/tasks/__pycache__/apps.cpython-38.pyc
index 1b8289c..acb7215 100644
Binary files a/tasks/__pycache__/apps.cpython-38.pyc and b/tasks/__pycache__/apps.cpython-38.pyc differ
diff --git a/tasks/__pycache__/forms.cpython-38.pyc b/tasks/__pycache__/forms.cpython-38.pyc
index bfae0d8..7d05cbf 100644
Binary files a/tasks/__pycache__/forms.cpython-38.pyc and b/tasks/__pycache__/forms.cpython-38.pyc differ
diff --git a/tasks/__pycache__/models.cpython-38.pyc b/tasks/__pycache__/models.cpython-38.pyc
index 45cdb3b..d012e57 100644
Binary files a/tasks/__pycache__/models.cpython-38.pyc and b/tasks/__pycache__/models.cpython-38.pyc differ
diff --git a/tasks/__pycache__/urls.cpython-38.pyc b/tasks/__pycache__/urls.cpython-38.pyc
index fbe82ce..065fae8 100644
Binary files a/tasks/__pycache__/urls.cpython-38.pyc and b/tasks/__pycache__/urls.cpython-38.pyc differ
diff --git a/tasks/__pycache__/views.cpython-38.pyc b/tasks/__pycache__/views.cpython-38.pyc
index 518a912..8248b69 100644
Binary files a/tasks/__pycache__/views.cpython-38.pyc and b/tasks/__pycache__/views.cpython-38.pyc differ
diff --git a/users/__pycache__/__init__.cpython-38.pyc b/users/__pycache__/__init__.cpython-38.pyc
index 1988400..09287f9 100644
Binary files a/users/__pycache__/__init__.cpython-38.pyc and b/users/__pycache__/__init__.cpython-38.pyc differ
diff --git a/users/__pycache__/admin.cpython-38.pyc b/users/__pycache__/admin.cpython-38.pyc
index 407ba3c..131dcf0 100644
Binary files a/users/__pycache__/admin.cpython-38.pyc and b/users/__pycache__/admin.cpython-38.pyc differ
diff --git a/users/__pycache__/apps.cpython-38.pyc b/users/__pycache__/apps.cpython-38.pyc
index cea3da8..e12f316 100644
Binary files a/users/__pycache__/apps.cpython-38.pyc and b/users/__pycache__/apps.cpython-38.pyc differ
diff --git a/users/__pycache__/models.cpython-38.pyc b/users/__pycache__/models.cpython-38.pyc
index f9dbfd5..1986410 100644
Binary files a/users/__pycache__/models.cpython-38.pyc and b/users/__pycache__/models.cpython-38.pyc differ
diff --git a/users/__pycache__/priomodel.cpython-38.pyc b/users/__pycache__/priomodel.cpython-38.pyc
index f822ee2..e0c5566 100644
Binary files a/users/__pycache__/priomodel.cpython-38.pyc and b/users/__pycache__/priomodel.cpython-38.pyc differ
diff --git a/users/__pycache__/signals.cpython-38.pyc b/users/__pycache__/signals.cpython-38.pyc
index b6b447c..c8dc03a 100644
Binary files a/users/__pycache__/signals.cpython-38.pyc and b/users/__pycache__/signals.cpython-38.pyc differ
diff --git a/users/__pycache__/urls.cpython-38.pyc b/users/__pycache__/urls.cpython-38.pyc
index 8ed3463..25c1847 100644
Binary files a/users/__pycache__/urls.cpython-38.pyc and b/users/__pycache__/urls.cpython-38.pyc differ
diff --git a/users/__pycache__/usersforms.cpython-38.pyc b/users/__pycache__/usersforms.cpython-38.pyc
index 07a6248..7a26ac1 100644
Binary files a/users/__pycache__/usersforms.cpython-38.pyc and b/users/__pycache__/usersforms.cpython-38.pyc differ
diff --git a/users/__pycache__/views.cpython-38.pyc b/users/__pycache__/views.cpython-38.pyc
index 0ee68ac..542bba6 100644
Binary files a/users/__pycache__/views.cpython-38.pyc and b/users/__pycache__/views.cpython-38.pyc differ
diff --git a/users/models.py b/users/models.py
index aff458b..0db38ab 100644
--- a/users/models.py
+++ b/users/models.py
@@ -86,6 +86,7 @@ class Profile(models.Model):
agency = models.ForeignKey(Agency, on_delete=models.PROTECT)
image = models.ImageField(default='userprofilepics/default.jpg', upload_to='userprofilepics', blank=True)
compfunc = models.CharField(max_length=60, blank=True)
+ visible = models.BooleanField(default=True)
def __str__(self):
return f'{self.user.last_name}'
diff --git a/users/templates/users/base.html b/users/templates/users/base.html
index 1a6f85d..3295797 100644
--- a/users/templates/users/base.html
+++ b/users/templates/users/base.html
@@ -44,7 +44,7 @@
- digitale agentur
+ Digitale Agentur
diff --git a/users/templates/users/password_reset_mail.html b/users/templates/users/password_reset_mail.html
index 5f23357..00c52fc 100644
--- a/users/templates/users/password_reset_mail.html
+++ b/users/templates/users/password_reset_mail.html
@@ -11,10 +11,10 @@
Hallo {{user.first_name}} {{user.last_name}},
- Sie haben eine neues Passwort für den Zugang ihrer Agentur {{user.profile.agency.name}} angefordert. Bitte gehen Sie auf folgenden Link, um ein Passwort zu erstellen:
+ Sie haben ein neues Passwort für den Zugang ihrer Agentur {{user.profile.agency.name}} angefordert. Bitte gehen Sie auf folgenden Link, um ein Passwort zu erstellen:
{% block reset_link %}
-
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
+
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
{% endblock %}
Ihr Benutzername: {{ user.get_username }}
diff --git a/users/templates/users/register.html b/users/templates/users/register.html
index 3cf7668..7b3ff1b 100644
--- a/users/templates/users/register.html
+++ b/users/templates/users/register.html
@@ -15,9 +15,13 @@
Nach der Anmeldung erhalten Sie eine E-Mail mit einem Link zur Passwortherstellung. Anschließend können Sie sich anmelden und weitere Agenturinformationen eintragen.
{{ form|crispy }}
+
+ Agenturname
+
+
- Agentur erstellen
+ Agentur erstellen
diff --git a/users/templates/users/users_adduser.html b/users/templates/users/users_adduser.html
index 3f9ed77..82a8d15 100644
--- a/users/templates/users/users_adduser.html
+++ b/users/templates/users/users_adduser.html
@@ -7,10 +7,18 @@
+
{% endblock content %}
\ No newline at end of file
diff --git a/users/usersforms.py b/users/usersforms.py
index 87532bf..2a71f6c 100644
--- a/users/usersforms.py
+++ b/users/usersforms.py
@@ -33,9 +33,10 @@ class UsersAddProfileForm(forms.ModelForm):
"phonemobile" : "Mobil",
"func" : "Agenturfunktion",
"compfunc" : "Tätigkeit",
- "image" : "Profilbild"
+ "image" : "Profilbild",
+ "visible" : "Im Organigramm sichtbar"
}
- fields = ['phoneland','phonemobile','func', 'compfunc', 'image']
+ fields = ['phoneland','phonemobile', 'visible', 'func', 'compfunc', 'image']
# Formular zum hinzufügen neuer Agentur-Mitglieder
class AgencyUpdateForm(forms.ModelForm):
@@ -108,4 +109,4 @@ class SupportForm(forms.Form):
self.fields['mail'] = forms.EmailField(required=True, label="E-Mail", initial=user.email)
self.fields['problemconc'] = forms.CharField(required=True, label="Problemzusammenfassung")
self.fields['problem'] = forms.CharField(required=True, widget=forms.Textarea, label="Ausführliche Beschreibung")
- self.fields['image'] = forms.ImageField()
\ No newline at end of file
+ self.fields['image'] = forms.ImageField(required=False)
\ No newline at end of file
diff --git a/users/views.py b/users/views.py
index 34ed47a..b51baab 100644
--- a/users/views.py
+++ b/users/views.py
@@ -31,7 +31,6 @@ View nach erfolgreichem Login Dashboard
Templates: welcomeusers.html und base.html
'''
-
class AgencyCreateView(CreateView):
model = User
fields = ['first_name', 'last_name','username', 'email']
@@ -41,13 +40,14 @@ class AgencyCreateView(CreateView):
# Send message to the site
messages.success(self.request, f'Agentur erstellt! Es wurde eine E-Mail verschickt mit weitere Infos zur Passworterstellung.')
# SAVE OBJECTS TO SIGNALE!
- agency = Agency()
+ agency = Agency()
+ agency.name = self.request.POST.get("agency_name")
agency.save()
newuser_name = form.cleaned_data.get('first_name') + ' ' + form.cleaned_data.get('last_name')
form.instance.agency = agency
form.instance.parent = None
- msg_html = render_to_string('users/register_mail.html', {'username': newuser_name})
- # E-Mail für Passwort-Setzung!
+ msg_html = render_to_string('users/register_mail.html', {'username': newuser_name})
+ # E-Mail für Passwort-Setzung!
send_mail(
'Agenturanmeldung',
'Hallo ' + form.cleaned_data.get('first_name') + ' ' + form.cleaned_data.get('last_name') + '! Bitte setzen sie sich auf https://digitale-agentur.com/password-reset/ ein Passwort. Anschließend können Sie weitere Details Ihrer Agentur eingeben.',
@@ -55,7 +55,7 @@ class AgencyCreateView(CreateView):
[form.cleaned_data.get('email')],
html_message=msg_html,
fail_silently=False
- )
+ )
return super().form_valid(form)
@login_required
@@ -113,18 +113,18 @@ class UsersCreateUser(LoginRequiredMixin, CreateView):
messages.success(self.request, f'Benutzer angelegt!')
# SAVE OBJECTS TO SIGNALE!
form.instance.agency = self.request.user.profile.agency
- form.instance.parent = None
+ form.instance.parent = None
+ if(self.request.POST.get("sendmailnewuser")):
+ send_mail(
+ self.request.user.profile.agency.name + ' Account',
+ 'Hallo ' + form.cleaned_data.get('first_name') + ' ' + form.cleaned_data.get('last_name') + '! Bitte setzen sie sich auf https://digitale-agentur.com/password-reset/ ein Passwort.',
+ 'support@digitale-agentur.com',
+ [form.cleaned_data.get('email')],
+ html_message=msg_html,
+ fail_silently=False,
+ )
newuser_name = form.cleaned_data.get('first_name') + " " + form.cleaned_data.get('last_name')
msg_html = render_to_string('users/newusers_email.html', {'username': newuser_name})
- # E-Mail für Passwort-Setzung!
- send_mail(
- self.request.user.profile.agency.name + ' Account',
- 'Hallo ' + form.cleaned_data.get('first_name') + ' ' + form.cleaned_data.get('last_name') + '! Bitte setzen sie sich auf https://digitale-agentur.com/password-reset/ ein Passwort.',
- 'support@digitale-agentur.com',
- [form.cleaned_data.get('email')],
- html_message=msg_html,
- fail_silently=False,
- )
return super().form_valid(form)
# USER muss eingeloggt sein, um diese Seite zu sehen