diff --git a/bin/Editor.js b/bin/Editor.js
index 3a72e095a3d02b833e8f0d68a969cae7d049ab13..7be6e0a0458f49fb93ed2d4763f1d04cc5425eec 100644
--- a/bin/Editor.js
+++ b/bin/Editor.js
@@ -98,6 +98,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
 
                     Editor.$imageDialog(ev);
                     Editor.$linkDialog(ev);
+                    Editor.$html5AudioDialog(ev);
+                    Editor.$html5VideoDialog(ev);
                 });
 
                 self.$loadInstance(data);
@@ -219,13 +221,20 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
 
 
             Settings.getConfig().then(function (config) {
-                var plugins    = config.plugins;
-                var pluginPath = config.pluginPath;
+                var plugins = config.plugins;
 
                 console.log(config);
+                console.log(plugins);
+
+
+                plugins = self.$parseToolbarToPlugins(toolbar).concat(plugins);
+                plugins = plugins.unique();
+
+                var pluginPath = config.pluginPath;
 
                 var extraPlugins = plugins.join(",");
 
+                console.log(extraPlugins);
 
                 for (var i = 0, len = plugins.length; i < len; i++) {
                     var pluginName = plugins[i];
@@ -243,7 +252,7 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
                     basePath                 : URL_DIR,
                     height                   : height,
                     width                    : width,
-                    toolbar                  : toolbar,
+                    //toolbar                  : toolbar,
                     allowedContent           : true,
                     extraAllowedContent      : 'div(*)[*]{*}; iframe(*)[*]{*}; img(*)[*]{*}; script(*)[*]{*}',
                     stylesSet                : styles,
@@ -253,9 +262,10 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
                     baseFloatZIndex          : zIndex,
                     extraPlugins             : extraPlugins,
                     //removePlugins            : 'scayt',
-                    disableNativeSpellChecker: false
+                    disableNativeSpellChecker: config.disableNativeSpellChecker
                 });
 
+
             });
 
         },
@@ -457,6 +467,105 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
             }
         },
 
+        /**
+         * Generate the extra plugins option in dependence of the toolbar
+         * @param toolbar
+         *
+         * @return Array
+         */
+        $parseToolbarToPlugins: function (toolbar) {
+            var extra      = [],
+                buttonList = [];
+
+            if (typeOf(toolbar) == 'array') {
+                buttonList = toolbar.flatten();
+            }
+
+            for (var i = 0, len = buttonList.length; i < len; i++) {
+                switch (buttonList[i]) {
+                    case 'Templates':
+                        extra.push('templates');
+                        break;
+
+                    case 'Find':
+                    case 'Replace':
+                        extra.push('find');
+                        break;
+
+                    case 'SelectAll':
+                        extra.push('selectall');
+                        break;
+
+                    case 'Form':
+                    case 'Checkbox':
+                    case 'Radio':
+                    case 'TextField':
+                    case 'Textarea':
+                    case 'Select':
+                    case 'Button':
+                    case 'ImageButton':
+                    case 'HiddenField':
+                        extra.push('forms');
+                        break;
+
+                    case 'CreateDiv':
+                        extra.push('div');
+                        break;
+
+                    case 'JustifyLeft':
+                    case 'JustifyCenter':
+                    case 'JustifyRight':
+                    case 'JustifyBlock':
+                        extra.push('justify');
+                        break;
+
+                    case 'BidiLtr':
+                    case 'BidiRtl':
+                        extra.push('bidi');
+                        break;
+
+                    case 'Language':
+                        extra.push('language');
+                        break;
+
+                    case 'Link':
+                    case 'Unlink':
+                    case 'Anchor':
+                        extra.push('link');
+                        break;
+
+                    case 'Flash':
+                        extra.push('flash');
+                        break;
+
+                    case 'Smiley':
+                        extra.push('smiley');
+                        break;
+
+                    case 'PageBreak':
+                        extra.push('pagebreak');
+                        break;
+
+                    case 'Iframe':
+                        extra.push('iframe');
+                        break;
+
+                    case 'Font':
+                    case 'FontSize':
+                        extra.push('font');
+                        break;
+
+                    case 'BGColor':
+                    case 'TextColor':
+                        extra.push('colorbutton');
+                        break;
+                }
+            }
+
+            return extra;
+        },
+
+
         /**
          * edit the image dialog
          *
@@ -464,11 +573,14 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
          * @return {DOMEvent} ev (CKEvent)
          */
         $imageDialog: function (ev) {
+
             // Take the dialog name and its definition from the event data.
             var self             = this,
                 dialogName       = ev.data.name,
                 dialogDefinition = ev.data.definition;
 
+
+            console.log(dialogName);
             /**
              * Image dialog
              */
@@ -476,6 +588,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
                 return ev;
             }
 
+            console.log(this);
+
             var oldOnShow = dialogDefinition.onShow;
 
             // Get a reference to the "Link Info" tab.
@@ -580,6 +694,7 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
                     }
                 }).inject(LinkGroup);
 
+
                 var Prev = Button.getPrevious();
 
                 Prev.setStyles({
@@ -636,6 +751,8 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
             var self      = this,
                 oldOnShow = dialogDefinition.onShow;
 
+            console.log(self);
+
             // Get a reference to the "Link Info" tab.
             dialogDefinition.onShow = function () {
                 oldOnShow.bind(this)();
@@ -696,7 +813,131 @@ define('package/quiqqer/ckeditor4/bin/Editor', [
                 }).inject(Links, 'after');
             };
 
+            return ev;
+        },
+
+        /**
+         * Extends the Html5Audio Dialog
+         *
+         * @param {DOMEvent} ev - CKEvent
+         * @return {DOMEvent} ev - CKEvent
+         */
+        $html5AudioDialog: function (ev) {
+
+            var dialogname       = ev.data.name,
+                dialogDefinition = ev.data.definition,
+                Button           = null;
+
+            if (dialogname !== "html5audio") {
+                return ev;
+            }
+
+            var self = this;
+
+            var oldOnShow = dialogDefinition.onShow || function () {
+                };
+
+            dialogDefinition.onShow = function () {
+                oldOnShow.bind(this)();
+
+                var UrlGroup = this.getContentElement("info", "url").getElement().$;
+
+                if (UrlGroup.getElement('.qui-button')) {
+                    return;
+                }
+
+                var UrlInput = UrlGroup.getElement('input[type="text"]');
+
+
+                Button = new Element('button', {
+                    'class': 'qui-button',
+                    html   : '<span class="fa fa-picture-o"></span>',
+                    events : {
+                        click: function () {
+                            self.openMedia({
+                                events: {
+                                    onSubmit: function (Win, data) {
+                                        UrlInput.value = data.url;
+                                    }
+                                }
+                            });
+                        }
+                    },
+                    style  : {
+                        float: "left"
+                    }
+                }).inject(UrlGroup);
+
+
+                var Label = UrlGroup.getElement("label");
+                console.log(Label);
+                Label.setStyles({
+                    width  : "100%",
+                    display: "block"
+                });
+
+                Button.getPrevious().setStyles({
+                    'width': '85%',
+                    float  : "left"
+                });
+            };
+
+            return ev;
+        },
+
+
+        $html5VideoDialog: function (ev) {
+            var dialogname       = ev.data.name,
+                dialogDefinition = ev.data.definition,
+                Button           = null;
+
+
+            if (dialogname !== "html5video") {
+                return ev;
+            }
+
+            var self = this;
+
+            var oldOnShow = dialogDefinition.onShow || function () {
+                };
+
+            dialogDefinition.onShow = function () {
+                oldOnShow.bind(this)();
+
+                var UrlGroup = this.getContentElement("info", "url").getElement().$;
+
+                if (UrlGroup.getElement('.qui-button')) {
+                    return;
+                }
+
+                var UrlInput = UrlGroup.getElement('input[type="text"]');
+
+
+                Button = new Element('button', {
+                    'class': 'qui-button',
+                    html   : '<span class="fa fa-picture-o"></span>',
+                    events : {
+                        click: function () {
+                            self.openMedia({
+                                events: {
+                                    onSubmit: function (Win, data) {
+                                        UrlInput.value = data.url;
+                                    }
+                                }
+                            });
+                        }
+                    }
+                }).inject(UrlGroup);
+
+
+                Button.getPrevious().setStyles({
+                    'width': '85%',
+                    'float': 'left'
+                });
+            };
+
             return ev;
         }
+
     });
 });