diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/editors/ace.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/editors/ace.directive.js
deleted file mode 100644
index d8ef422165..0000000000
--- a/src/Umbraco.Web.UI.Client/src/common/directives/editors/ace.directive.js
+++ /dev/null
@@ -1,59 +0,0 @@
-angular.module('umbraco.directives.editors').directive('ace', function(assetsService) {
- var ACE_EDITOR_CLASS = 'ace-editor';
-
- function loadAceEditor(element, mode) {
- assetsService.loadJs("lib/ace/noconflict/ace.js").then(function(){
- var editor = ace.edit($(element).find('.' + ACE_EDITOR_CLASS)[0]);
- editor.session.setMode("ace/mode/" + mode);
- editor.renderer.setShowPrintMargin(false);
- return editor;
- });
- }
-
- function valid(editor) {
- return (Object.keys(editor.getSession().getAnnotations()).length === 0);
- }
-
- return {
- restrict: 'A',
- require: '?ngModel',
- transclude: true,
- template: '
',
-
- link: function(scope, element, attrs, ngModel) {
- function read() {
- ngModel.$setViewValue(editor.getValue());
- textarea.val(editor.getValue());
- }
-
- var textarea = $(element).find('textarea');
- textarea.hide();
-
- var mode = attrs.ace;
- var editor = loadAceEditor(element, mode);
- scope.ace = editor;
-
- if (!ngModel)
- {
- return; // do nothing if no ngModel
- }
-
- ngModel.$render = function() {
- var value = ngModel.$viewValue || '';
- editor.getSession().setValue(value);
- textarea.val(value);
- };
-
- editor.getSession().on('changeAnnotation', function() {
- if (valid(editor)) {
- scope.$apply(read);
- }
- });
-
- editor.getSession().setValue(textarea.val());
-
- read();
-
- }
- };
-});
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbsinglefileupload.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/editors/umbsinglefileupload.directive.js
similarity index 96%
rename from src/Umbraco.Web.UI.Client/src/common/directives/umbsinglefileupload.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/editors/umbsinglefileupload.directive.js
index e1f6dd380f..b8123b9202 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/umbsinglefileupload.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/editors/umbsinglefileupload.directive.js
@@ -1,33 +1,33 @@
-/**
-* @ngdoc directive
-* @name umbraco.directives.directive:umbFileUpload
-* @function
-* @restrict A
-* @scope
-* @description
-* A single file upload field that will reset itself based on the object passed in for the rebuild parameter. This
-* is required because the only way to reset an upload control is to replace it's html.
-**/
-function umbSingleFileUpload($compile) {
- return {
- restrict: "E",
- scope: {
- rebuild: "="
- },
- replace: true,
- template: "",
- link: function (scope, el, attrs) {
-
- scope.$watch("rebuild", function (newVal, oldVal) {
- if (newVal && newVal !== oldVal) {
- //recompile it!
- el.html("");
- $compile(el.contents())(scope);
- }
- });
-
- }
- };
-}
-
+/**
+* @ngdoc directive
+* @name umbraco.directives.directive:umbFileUpload
+* @function
+* @restrict A
+* @scope
+* @description
+* A single file upload field that will reset itself based on the object passed in for the rebuild parameter. This
+* is required because the only way to reset an upload control is to replace it's html.
+**/
+function umbSingleFileUpload($compile) {
+ return {
+ restrict: "E",
+ scope: {
+ rebuild: "="
+ },
+ replace: true,
+ template: "",
+ link: function (scope, el, attrs) {
+
+ scope.$watch("rebuild", function (newVal, oldVal) {
+ if (newVal && newVal !== oldVal) {
+ //recompile it!
+ el.html("");
+ $compile(el.contents())(scope);
+ }
+ });
+
+ }
+ };
+}
+
angular.module('umbraco.directives').directive("umbSingleFileUpload", umbSingleFileUpload);
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/sectionicon.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/sectionicon.directive.js
similarity index 97%
rename from src/Umbraco.Web.UI.Client/src/common/directives/sectionicon.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/html/sectionicon.directive.js
index 7f8ea83215..d6a4537262 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/sectionicon.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/sectionicon.directive.js
@@ -1,30 +1,30 @@
-angular.module("umbraco.directives")
-.directive('sectionIcon', function ($compile, iconHelper) {
- return {
- restrict: 'E',
- replace: true,
-
- link: function (scope, element, attrs) {
-
- var icon = attrs.icon;
-
- if (iconHelper.isLegacyIcon(icon)) {
- //its a known legacy icon, convert to a new one
- element.html("");
- }
- else if (iconHelper.isFileBasedIcon(icon)) {
- var convert = iconHelper.convertFromLegacyImage(icon);
- if(convert){
- element.html("");
- }else{
- element.html("
");
- }
- //it's a file, normally legacy so look in the icon tray images
- }
- else {
- //it's normal
- element.html("");
- }
- }
- };
+angular.module("umbraco.directives")
+.directive('sectionIcon', function ($compile, iconHelper) {
+ return {
+ restrict: 'E',
+ replace: true,
+
+ link: function (scope, element, attrs) {
+
+ var icon = attrs.icon;
+
+ if (iconHelper.isLegacyIcon(icon)) {
+ //its a known legacy icon, convert to a new one
+ element.html("");
+ }
+ else if (iconHelper.isFileBasedIcon(icon)) {
+ var convert = iconHelper.convertFromLegacyImage(icon);
+ if(convert){
+ element.html("");
+ }else{
+ element.html("
");
+ }
+ //it's a file, normally legacy so look in the icon tray images
+ }
+ else {
+ //it's normal
+ element.html("");
+ }
+ }
+ };
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbavatar.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbavatar.directive.js
similarity index 96%
rename from src/Umbraco.Web.UI.Client/src/common/directives/umbavatar.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/html/umbavatar.directive.js
index 6779b6e1d8..0702d7207c 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/umbavatar.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbavatar.directive.js
@@ -1,27 +1,27 @@
-/**
-* @ngdoc directive
-* @name umbraco.directives.directive:umbAvatar
-* @restrict E
-**/
-function avatarDirective() {
- return {
- restrict: "E", // restrict to an element
- replace: true, // replace the html element with the template
- templateUrl: 'views/directives/umb-avatar.html',
- scope: {
- name: '@',
- email: '@',
- hash: '@'
- },
- link: function(scope, element, attr, ctrl) {
-
- scope.$watch("hash", function (val) {
- //set the gravatar url
- scope.gravatar = "http://www.gravatar.com/avatar/" + val + "?s=40";
- });
-
- }
- };
-}
-
-angular.module('umbraco.directives').directive("umbAvatar", avatarDirective);
+/**
+* @ngdoc directive
+* @name umbraco.directives.directive:umbAvatar
+* @restrict E
+**/
+function avatarDirective() {
+ return {
+ restrict: "E", // restrict to an element
+ replace: true, // replace the html element with the template
+ templateUrl: 'views/directives/umb-avatar.html',
+ scope: {
+ name: '@',
+ email: '@',
+ hash: '@'
+ },
+ link: function(scope, element, attr, ctrl) {
+
+ scope.$watch("hash", function (val) {
+ //set the gravatar url
+ scope.gravatar = "http://www.gravatar.com/avatar/" + val + "?s=40";
+ });
+
+ }
+ };
+}
+
+angular.module('umbraco.directives').directive("umbAvatar", avatarDirective);
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbheader.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbheader.directive.js
similarity index 97%
rename from src/Umbraco.Web.UI.Client/src/common/directives/umbheader.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/html/umbheader.directive.js
index cba6a05e60..b1cca01d44 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/umbheader.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbheader.directive.js
@@ -1,79 +1,79 @@
-angular.module("umbraco.directives")
-.directive('umbHeader', function($parse, $timeout){
- return {
- restrict: 'E',
- replace: true,
- transclude: 'true',
- templateUrl: 'views/directives/umb-header.html',
- //create a new isolated scope assigning a tabs property from the attribute 'tabs'
- //which is bound to the parent scope property passed in
- scope: {
- tabs: "="
- },
- link: function (scope, iElement, iAttrs) {
-
- var maxTabs = 4;
-
- function collectFromDom(activeTab){
- var $panes = $('div.tab-content');
-
- angular.forEach($panes.find('.tab-pane'), function (pane, index) {
- var $this = angular.element(pane);
-
- var id = $this.attr("rel");
- var label = $this.attr("label");
- var tab = {id: id, label: label, active: false};
- if(!activeTab){
- tab.active = true;
- activeTab = tab;
- }
-
- if ($this.attr("rel") === String(activeTab.id)) {
- $this.addClass('active');
- }
- else {
- $this.removeClass('active');
- }
-
- if(label){
- scope.visibleTabs.push(tab);
- }
-
- });
- }
-
- scope.showTabs = iAttrs.tabs ? true : false;
- scope.visibleTabs = [];
- scope.overflownTabs = [];
-
- $timeout(function () {
- collectFromDom(undefined);
- }, 500);
-
- //when the tabs change, we need to hack the planet a bit and force the first tab content to be active,
- //unfortunately twitter bootstrap tabs is not playing perfectly with angular.
- scope.$watch("tabs", function (newValue, oldValue) {
-
- angular.forEach(newValue, function(val, index){
- var tab = {id: val.id, label: val.label};
- scope.visibleTabs.push(tab);
- });
-
- //don't process if we cannot or have already done so
- if (!newValue) {return;}
- if (!newValue.length || newValue.length === 0){return;}
-
- var activeTab = _.find(newValue, function (item) {
- return item.active;
- });
-
- //we need to do a timeout here so that the current sync operation can complete
- // and update the UI, then this will fire and the UI elements will be available.
- $timeout(function () {
- collectFromDom(activeTab);
- }, 500);
-
- });
- }
- };
+angular.module("umbraco.directives")
+.directive('umbHeader', function($parse, $timeout){
+ return {
+ restrict: 'E',
+ replace: true,
+ transclude: 'true',
+ templateUrl: 'views/directives/umb-header.html',
+ //create a new isolated scope assigning a tabs property from the attribute 'tabs'
+ //which is bound to the parent scope property passed in
+ scope: {
+ tabs: "="
+ },
+ link: function (scope, iElement, iAttrs) {
+
+ var maxTabs = 4;
+
+ function collectFromDom(activeTab){
+ var $panes = $('div.tab-content');
+
+ angular.forEach($panes.find('.tab-pane'), function (pane, index) {
+ var $this = angular.element(pane);
+
+ var id = $this.attr("rel");
+ var label = $this.attr("label");
+ var tab = {id: id, label: label, active: false};
+ if(!activeTab){
+ tab.active = true;
+ activeTab = tab;
+ }
+
+ if ($this.attr("rel") === String(activeTab.id)) {
+ $this.addClass('active');
+ }
+ else {
+ $this.removeClass('active');
+ }
+
+ if(label){
+ scope.visibleTabs.push(tab);
+ }
+
+ });
+ }
+
+ scope.showTabs = iAttrs.tabs ? true : false;
+ scope.visibleTabs = [];
+ scope.overflownTabs = [];
+
+ $timeout(function () {
+ collectFromDom(undefined);
+ }, 500);
+
+ //when the tabs change, we need to hack the planet a bit and force the first tab content to be active,
+ //unfortunately twitter bootstrap tabs is not playing perfectly with angular.
+ scope.$watch("tabs", function (newValue, oldValue) {
+
+ angular.forEach(newValue, function(val, index){
+ var tab = {id: val.id, label: val.label};
+ scope.visibleTabs.push(tab);
+ });
+
+ //don't process if we cannot or have already done so
+ if (!newValue) {return;}
+ if (!newValue.length || newValue.length === 0){return;}
+
+ var activeTab = _.find(newValue, function (item) {
+ return item.active;
+ });
+
+ //we need to do a timeout here so that the current sync operation can complete
+ // and update the UI, then this will fire and the UI elements will be available.
+ $timeout(function () {
+ collectFromDom(activeTab);
+ }, 500);
+
+ });
+ }
+ };
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/html/umbpanel.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbpanel.directive.js
index 79524e06e6..5b32941fff 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/html/umbpanel.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbpanel.directive.js
@@ -9,66 +9,6 @@ angular.module("umbraco.directives.html")
restrict: 'E',
replace: true,
transclude: 'true',
- templateUrl: 'views/directives/html/umb-panel.html',
- link: function (scope, el, attrs) {
-
-
- function _setClass(bar, resize){
-
- bar = $(bar);
-
- //no need to process
- if(resize){
- bar.removeClass("umb-bottom-bar");
- }
-
- //already positioned
- if(bar.hasClass("umb-bottom-bar")){
- return;
- }
-
- var offset = bar.offset();
- if(offset){
- var bottom = bar.offset().top + bar.height();
- if(bottom > $(window).height()){
- bar.addClass("umb-bottom-bar");
- $(".tab-content .active").addClass("with-buttons");
- }else{
- bar.removeClass("umb-bottom-bar");
- $(".tab-content .active").removeClass("with-buttons");
- }
- }
- }
-
-
- //initial loading
- $timeout(function(){
- var bar = $(".tab-content .active .umb-tab-buttons")[0] || $(".tab-content .umb-tab-buttons")[0];
- var winHeight = $(window).height();
-
- scope.$watch(function () {
- if(!bar){
- bar = $(".tab-content .active .umb-tab-buttons")[0] || $(".tab-content .umb-tab-buttons")[0];
- }
-
- var bottom = bar.offsetTop + bar.offsetHeight;
- return bottom > winHeight;
- }, function(val) {
- _setClass(bar);
- });
-
-
- $(window).bind("resize", function () {
- _setClass(bar, true);
- winHeight = $(window).height();
- });
-
- $('a[data-toggle="tab"]').on('shown', function (e) {
- bar = $(".tab-content .active .umb-tab-buttons")[0];
- _setClass(bar);
- });
-
- }, 1000, false);
- }
+ templateUrl: 'views/directives/html/umb-panel.html'
};
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbtab.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtab.directive.js
similarity index 95%
rename from src/Umbraco.Web.UI.Client/src/common/directives/umbtab.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/html/umbtab.directive.js
index be26042678..3758c64179 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/umbtab.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtab.directive.js
@@ -1,14 +1,14 @@
-/**
-* @ngdoc directive
-* @name umbraco.directives.directive:umbTab
-* @restrict E
-**/
-angular.module("umbraco.directives")
-.directive('umbTab', function(){
- return {
- restrict: 'E',
- replace: true,
- transclude: 'true',
- templateUrl: 'views/directives/umb-tab.html'
- };
+/**
+* @ngdoc directive
+* @name umbraco.directives.directive:umbTab
+* @restrict E
+**/
+angular.module("umbraco.directives")
+.directive('umbTab', function(){
+ return {
+ restrict: 'E',
+ replace: true,
+ transclude: 'true',
+ templateUrl: 'views/directives/umb-tab.html'
+ };
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/umbtabview.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabview.directive.js
similarity index 95%
rename from src/Umbraco.Web.UI.Client/src/common/directives/umbtabview.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabview.directive.js
index 505acb3328..7bb4f1cb18 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/umbtabview.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/html/umbtabview.directive.js
@@ -1,14 +1,14 @@
-/**
-* @ngdoc directive
-* @name umbraco.directives.directive:umbTabView
-* @restrict E
-**/
-angular.module("umbraco.directives")
-.directive('umbTabView', function($timeout, $log){
- return {
- restrict: 'E',
- replace: true,
- transclude: 'true',
- templateUrl: 'views/directives/umb-tab-view.html'
- };
+/**
+* @ngdoc directive
+* @name umbraco.directives.directive:umbTabView
+* @restrict E
+**/
+angular.module("umbraco.directives")
+.directive('umbTabView', function($timeout, $log){
+ return {
+ restrict: 'E',
+ replace: true,
+ transclude: 'true',
+ templateUrl: 'views/directives/umb-tab-view.html'
+ };
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/autoscale.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/utill/autoscale.directive.js
similarity index 96%
rename from src/Umbraco.Web.UI.Client/src/common/directives/autoscale.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/utill/autoscale.directive.js
index daa432d5ba..11fff9639f 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/autoscale.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/utill/autoscale.directive.js
@@ -1,38 +1,38 @@
-/**
- * @ngdoc directive
- * @name umbraco.directives.directive:autoScale
- * @element div
- * @function
- *
- * @description
- * Resize div's automatically to fit to the bottom of the screen, as an optional parameter an y-axis offset can be set
- * So if you only want to scale the div to 70 pixels from the bottom you pass "70"
- *
- * @example
-
-
-
-
-
- */
-angular.module("umbraco.directives")
- .directive('autoScale', function ($window) {
- return function (scope, el, attrs) {
-
- var totalOffset = 0;
- var offsety = parseInt(attrs.autoScale, 10);
- var window = angular.element($window);
- if (offsety !== undefined){
- totalOffset += offsety;
- }
-
- setTimeout(function () {
- el.height(window.height() - (el.offset().top + totalOffset));
- }, 500);
-
- window.bind("resize", function () {
- el.height(window.height() - (el.offset().top + totalOffset));
- });
-
- };
+/**
+ * @ngdoc directive
+ * @name umbraco.directives.directive:autoScale
+ * @element div
+ * @function
+ *
+ * @description
+ * Resize div's automatically to fit to the bottom of the screen, as an optional parameter an y-axis offset can be set
+ * So if you only want to scale the div to 70 pixels from the bottom you pass "70"
+ *
+ * @example
+
+
+
+
+
+ */
+angular.module("umbraco.directives")
+ .directive('autoScale', function ($window) {
+ return function (scope, el, attrs) {
+
+ var totalOffset = 0;
+ var offsety = parseInt(attrs.autoScale, 10);
+ var window = angular.element($window);
+ if (offsety !== undefined){
+ totalOffset += offsety;
+ }
+
+ setTimeout(function () {
+ el.height(window.height() - (el.offset().top + totalOffset));
+ }, 500);
+
+ window.bind("resize", function () {
+ el.height(window.height() - (el.offset().top + totalOffset));
+ });
+
+ };
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/utill/detectfold.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/utill/detectfold.directive.js
new file mode 100644
index 0000000000..a0d1a8293b
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/utill/detectfold.directive.js
@@ -0,0 +1,49 @@
+/**
+* @ngdoc directive
+* @name umbraco.directives.directive:umbPanel
+* @restrict E
+**/
+angular.module("umbraco.directives.html")
+ .directive('detectFold', function($timeout, $log){
+ return {
+ restrict: 'A',
+ link: function (scope, el, attrs) {
+
+ var state = false,
+ parent = $(".umb-panel-body"),
+ winHeight = $(window).height(),
+ calculate = _.throttle(function(){
+ if(el && el.is(":visible") && !el.hasClass("umb-bottom-bar")){
+ //var parent = el.parent();
+ var hasOverflow = parent.innerHeight() < parent[0].scrollHeight;
+ //var belowFold = (el.offset().top + el.height()) > winHeight;
+ if(hasOverflow){
+ el.addClass("umb-bottom-bar");
+ }
+ }
+ return state;
+ }, 1000);
+
+ scope.$watch(calculate, function(newVal, oldVal) {
+ if(newVal !== oldVal){
+ if(newVal){
+ el.addClass("umb-bottom-bar");
+ }else{
+ el.removeClass("umb-bottom-bar");
+ }
+ }
+ });
+
+ $(window).bind("resize", function () {
+ winHeight = $(window).height();
+ el.removeClass("umb-bottom-bar");
+ state = false;
+ calculate();
+ });
+
+ $('a[data-toggle="tab"]').on('shown', function (e) {
+ calculate();
+ });
+ }
+ };
+ });
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/hotkey.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/utill/hotkey.directive.js
similarity index 96%
rename from src/Umbraco.Web.UI.Client/src/common/directives/hotkey.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/utill/hotkey.directive.js
index f5277e98e0..39a565b7ab 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/hotkey.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/utill/hotkey.directive.js
@@ -1,27 +1,27 @@
-/**
-* @ngdoc directive
-* @name umbraco.directives.directive:headline
-**/
-angular.module("umbraco.directives")
- .directive('hotkey', function ($window, keyboardService, $log) {
-
- return function (scope, el, attrs) {
-
- //support data binding
-
- var keyCombo = scope.$eval(attrs["hotkey"]);
- if (!keyCombo) {
- keyCombo = attrs["hotkey"];
- }
-
- keyboardService.bind(keyCombo, function() {
- var element = $(el);
- if(element.is("a,button,input[type='button'],input[type='submit']")){
- element.click();
- }else{
- element.focus();
- }
- });
-
- };
+/**
+* @ngdoc directive
+* @name umbraco.directives.directive:headline
+**/
+angular.module("umbraco.directives")
+ .directive('hotkey', function ($window, keyboardService, $log) {
+
+ return function (scope, el, attrs) {
+
+ //support data binding
+
+ var keyCombo = scope.$eval(attrs["hotkey"]);
+ if (!keyCombo) {
+ keyCombo = attrs["hotkey"];
+ }
+
+ keyboardService.bind(keyCombo, function() {
+ var element = $(el);
+ if(element.is("a,button,input[type='button'],input[type='submit']")){
+ element.click();
+ }else{
+ element.focus();
+ }
+ });
+
+ };
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/localize.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/utill/localize.directive.js
similarity index 100%
rename from src/Umbraco.Web.UI.Client/src/common/directives/localize.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/utill/localize.directive.js
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/preventdefault.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/utill/preventdefault.directive.js
similarity index 97%
rename from src/Umbraco.Web.UI.Client/src/common/directives/preventdefault.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/utill/preventdefault.directive.js
index e0747600ac..d1e279a9ac 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/preventdefault.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/utill/preventdefault.directive.js
@@ -1,29 +1,29 @@
-/**
-* @ngdoc directive
-* @name umbraco.directives.directive:preventDefault
-**/
-angular.module("umbraco.directives")
- .directive('preventDefault', function() {
- return function(scope, element, attrs) {
-
- var enabled = true;
- //check if there's a value for the attribute, if there is and it's false then we conditionally don't
- //prevent default.
- if (attrs.preventDefault) {
- attrs.$observe("preventDefault", function (newVal) {
- enabled = (newVal === "false" || newVal === 0 || newVal === false) ? false : true;
- });
- }
-
- $(element).click(function (event) {
- if (event.metaKey || event.ctrlKey) {
- return;
- }
- else {
- if (enabled === true) {
- event.preventDefault();
- }
- }
- });
- };
+/**
+* @ngdoc directive
+* @name umbraco.directives.directive:preventDefault
+**/
+angular.module("umbraco.directives")
+ .directive('preventDefault', function() {
+ return function(scope, element, attrs) {
+
+ var enabled = true;
+ //check if there's a value for the attribute, if there is and it's false then we conditionally don't
+ //prevent default.
+ if (attrs.preventDefault) {
+ attrs.$observe("preventDefault", function (newVal) {
+ enabled = (newVal === "false" || newVal === 0 || newVal === false) ? false : true;
+ });
+ }
+
+ $(element).click(function (event) {
+ if (event.metaKey || event.ctrlKey) {
+ return;
+ }
+ else {
+ if (enabled === true) {
+ event.preventDefault();
+ }
+ }
+ });
+ };
});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/resizeToContent.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/utill/resizeToContent.directive.js
similarity index 100%
rename from src/Umbraco.Web.UI.Client/src/common/directives/resizeToContent.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/utill/resizeToContent.directive.js
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/selectOnFocus.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/utill/selectOnFocus.directive.js
similarity index 100%
rename from src/Umbraco.Web.UI.Client/src/common/directives/selectOnFocus.directive.js
rename to src/Umbraco.Web.UI.Client/src/common/directives/utill/selectOnFocus.directive.js
diff --git a/src/Umbraco.Web.UI.Client/src/less/panel.less b/src/Umbraco.Web.UI.Client/src/less/panel.less
index 64e5cf7bc5..18eefc402a 100644
--- a/src/Umbraco.Web.UI.Client/src/less/panel.less
+++ b/src/Umbraco.Web.UI.Client/src/less/panel.less
@@ -166,7 +166,7 @@
}
.umb-tab-buttons{padding-left: 240px;}
-.umb-tab-pane.with-buttons{padding-bottom: 90px}
+.umb-tab-pane{padding-bottom: 90px}
.tab-content{overflow: visible; }
diff --git a/src/Umbraco.Web.UI.Client/src/views/content/edit.html b/src/Umbraco.Web.UI.Client/src/views/content/edit.html
index 3b61a9c54e..8eb1caba4c 100644
--- a/src/Umbraco.Web.UI.Client/src/views/content/edit.html
+++ b/src/Umbraco.Web.UI.Client/src/views/content/edit.html
@@ -38,8 +38,7 @@
-
-