Merge remote-tracking branch 'origin/7.0.0' into 7.0.0
This commit is contained in:
1
src/Umbraco.Web.UI.Client/lib/jquery/jquery.upload/js/load-image.min.js
vendored
Normal file
1
src/Umbraco.Web.UI.Client/lib/jquery/jquery.upload/js/load-image.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -33,13 +33,14 @@ angular.module("umbraco.directives")
|
||||
scope.opts.nested= cfg.nested || true,
|
||||
scope.opts.drop= cfg.drop || true,
|
||||
scope.opts.drag= cfg.drag || true,
|
||||
/*
|
||||
scope.opts.isValidTarget = function(item, container) {
|
||||
if(container.el.is(".umb-" + scope.opts.group + "-container")){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
*/
|
||||
|
||||
element.addClass("umb-sort");
|
||||
element.addClass("umb-" + cfg.group + "-container");
|
||||
@@ -53,47 +54,66 @@ angular.module("umbraco.directives")
|
||||
|
||||
|
||||
scope.opts.onDrop = function (item, targetContainer, _super) {
|
||||
var children = $("li", targetContainer.el);
|
||||
var targetScope = $(targetContainer.el[0]).scope();
|
||||
var targetIndex = children.index(item);
|
||||
|
||||
if(targetScope.opts.onDropHandler){
|
||||
var args = {
|
||||
sourceScope: umbSortContextInternal.sourceScope,
|
||||
sourceIndex: umbSortContextInternal.sourceIndex,
|
||||
sourceContainer: umbSortContextInternal.sourceContainer,
|
||||
|
||||
targetScope: targetScope,
|
||||
targetIndex: targetIndex,
|
||||
targetContainer: targetContainer
|
||||
};
|
||||
|
||||
targetScope.opts.onDropHandler.call(this, item, args);
|
||||
}
|
||||
|
||||
if(umbSortContextInternal.sourceScope.opts.onReleaseHandler){
|
||||
var _args = {
|
||||
sourceScope: umbSortContextInternal.sourceScope,
|
||||
sourceIndex: umbSortContextInternal.sourceIndex,
|
||||
sourceContainer: umbSortContextInternal.sourceContainer,
|
||||
|
||||
targetScope: targetScope,
|
||||
targetIndex: targetIndex,
|
||||
targetContainer: targetContainer
|
||||
};
|
||||
|
||||
umbSortContextInternal.sourceScope.opts.onReleaseHandler.call(this, item, _args);
|
||||
}
|
||||
|
||||
var clonedItem = $('<li/>').css({height: 0});
|
||||
item.before(clonedItem);
|
||||
item.after(clonedItem);
|
||||
clonedItem.animate({'height': item.height()});
|
||||
|
||||
item.animate(clonedItem.position(), function () {
|
||||
clonedItem.detach();
|
||||
_super(item);
|
||||
});
|
||||
|
||||
|
||||
var children = $("li", targetContainer.el);
|
||||
var targetIndex = children.index(item);
|
||||
var targetScope = $(targetContainer.el[0]).scope();
|
||||
|
||||
|
||||
if(targetScope === umbSortContextInternal.sourceScope){
|
||||
if(umbSortContextInternal.sourceScope.opts.onSortHandler){
|
||||
var _largs = {
|
||||
oldIndex: umbSortContextInternal.sourceIndex,
|
||||
newIndex: targetIndex,
|
||||
scope: umbSortContextInternal.sourceScope
|
||||
};
|
||||
|
||||
umbSortContextInternal.sourceScope.opts.onSortHandler.call(this, item, _largs);
|
||||
}
|
||||
}else{
|
||||
|
||||
|
||||
if(targetScope.opts.onDropHandler){
|
||||
var args = {
|
||||
sourceScope: umbSortContextInternal.sourceScope,
|
||||
sourceIndex: umbSortContextInternal.sourceIndex,
|
||||
sourceContainer: umbSortContextInternal.sourceContainer,
|
||||
|
||||
targetScope: targetScope,
|
||||
targetIndex: targetIndex,
|
||||
targetContainer: targetContainer
|
||||
};
|
||||
|
||||
targetScope.opts.onDropHandler.call(this, item, args);
|
||||
}
|
||||
|
||||
if(umbSortContextInternal.sourceScope.opts.onReleaseHandler){
|
||||
var _args = {
|
||||
sourceScope: umbSortContextInternal.sourceScope,
|
||||
sourceIndex: umbSortContextInternal.sourceIndex,
|
||||
sourceContainer: umbSortContextInternal.sourceContainer,
|
||||
|
||||
targetScope: targetScope,
|
||||
targetIndex: targetIndex,
|
||||
targetContainer: targetContainer
|
||||
};
|
||||
|
||||
umbSortContextInternal.sourceScope.opts.onReleaseHandler.call(this, item, _args);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
item.animate(clonedItem.position(), function () {
|
||||
clonedItem.detach();
|
||||
_super(item);
|
||||
});
|
||||
};
|
||||
|
||||
scope.changeIndex = function(from, to){
|
||||
|
||||
@@ -18,6 +18,8 @@ function sectionMocks($httpBackend, mocksUtils) {
|
||||
{ name: "Media", cssclass: "icon-umb-media", alias: "media" },
|
||||
{ name: "Settings", cssclass: "icon-umb-settings", alias: "settings" },
|
||||
{ name: "Developer", cssclass: "icon-umb-developer", alias: "developer" },
|
||||
{ name: "Users", cssclass: "icon-umb-users", alias: "users" },
|
||||
{ name: "Developer", cssclass: "icon-umb-developer", alias: "developer" },
|
||||
{ name: "Users", cssclass: "icon-umb-users", alias: "users" }
|
||||
];
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
|
||||
"mediaApiBaseUrl",
|
||||
"GetByIds",
|
||||
idQuery)),
|
||||
'Failed to retreive data for media id ' + id);
|
||||
'Failed to retreive data for media ids ' + ids);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -64,8 +64,7 @@ angular.module('umbraco.services')
|
||||
|
||||
var dialog = angular.extend(defaults, options);
|
||||
var scope = options.scope || $rootScope.$new();
|
||||
delete dialog.scope;
|
||||
|
||||
|
||||
//Modal dom obj and unique id
|
||||
dialog.element = $('<div ng-swipe-left="hide()" ng-swipe-right="hide()" data-backdrop="false"></div>');
|
||||
var id = dialog.template.replace('.html', '').replace('.aspx', '').replace(/[\/|\.|:\&\?\=]/g, "-") + '-' + scope.$id;
|
||||
@@ -78,6 +77,7 @@ angular.module('umbraco.services')
|
||||
dialog.element.addClass("modal");
|
||||
dialog.element.addClass("hide");
|
||||
}
|
||||
|
||||
//set the id and add classes
|
||||
dialog.element
|
||||
.attr('id', id)
|
||||
@@ -332,8 +332,9 @@ angular.module('umbraco.services')
|
||||
* @returns {Object} modal object
|
||||
*/
|
||||
macroPicker: function (options) {
|
||||
options.template = 'views/common/dialogs/macroPicker.html';
|
||||
options.template = 'views/common/dialogs/insertmacro.html';
|
||||
options.show = true;
|
||||
options.modalClass = "span7 umb-modal";
|
||||
return openDialog(options);
|
||||
},
|
||||
|
||||
|
||||
@@ -310,9 +310,7 @@ function tinyMceService(dialogService, $log, imageHelper, assetsService, $timeou
|
||||
/** The insert macro button click event handler */
|
||||
onclick: function () {
|
||||
|
||||
dialogService.open({
|
||||
show: true,
|
||||
template: "views/common/dialogs/insertmacro.html",
|
||||
dialogService.macroPicker({
|
||||
scope: $scope,
|
||||
callback: function(data) {
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
// Core variables and mixins
|
||||
@import "fonts.less"; // Loading fonts
|
||||
@import "variables.less"; // Modify this for custom colors, font-sizes, etc
|
||||
@import "mixins.less";
|
||||
|
||||
@@ -23,7 +24,7 @@
|
||||
@import "../../lib/bootstrap/less/type.less";
|
||||
@import "../../lib/bootstrap/less/code.less";
|
||||
@import "tables.less";
|
||||
@import "colors.less";
|
||||
|
||||
|
||||
// Components: common
|
||||
//@import "../../lib/bootstrap/less/sprites.less";
|
||||
@@ -82,4 +83,4 @@
|
||||
//used for property editors
|
||||
@import "property-editors.less";
|
||||
|
||||
@import "hacks.less"; // Remove and rewrite before release
|
||||
@import "hacks.less";
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
i.red{color: #b94a48;}
|
||||
9
src/Umbraco.Web.UI.Client/src/less/fonts.less
Normal file
9
src/Umbraco.Web.UI.Client/src/less/fonts.less
Normal file
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
Open Sans
|
||||
|
||||
Normal: font-weight: 400;
|
||||
Semi-bold: font-weight: 600;
|
||||
|
||||
*/
|
||||
|
||||
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600);
|
||||
@@ -24,6 +24,12 @@ label.control-label {
|
||||
|
||||
.controls-row label{padding: 0px 10px 0px 10px; vertical-align: center}
|
||||
|
||||
|
||||
|
||||
//standard editor width
|
||||
.umb-editor{width: 460px;}
|
||||
|
||||
|
||||
//utill styll to hide child untill hover
|
||||
.hover-show{visibility: hidden;}
|
||||
*:hover > .hover-show{visibility: visible;}
|
||||
|
||||
@@ -76,6 +76,7 @@ iframe, .content-column-body {
|
||||
background-size: contain;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fileupload-processing .fileupload-loading {
|
||||
display: block;
|
||||
}
|
||||
|
||||
@@ -163,13 +163,13 @@ i.small{
|
||||
.icon-umb-deploy:before {
|
||||
content: "\e027";
|
||||
}
|
||||
.icon-umb-contour:before, .traycontent:before, {
|
||||
.icon-umb-contour:before, .traycontour:before, {
|
||||
content: "\e028";
|
||||
}
|
||||
.icon-umb-settings:before, .traysettings:before, {
|
||||
content: "\e029";
|
||||
}
|
||||
.icon-umb-users:before, .trayusers:before, {
|
||||
.icon-umb-users:before, .trayuser:before, .trayusers:before{
|
||||
content: "\e02a";
|
||||
}
|
||||
.icon-umb-media:before, .traymedia:before, {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Listview
|
||||
// -------------------------
|
||||
|
||||
.umb-listview{width: auto !important;}
|
||||
.umb-listview .dropdown-menu {
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
|
||||
@@ -147,13 +147,17 @@ div.umb-codeeditor .umb-btn-toolbar {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* FORM GRID */
|
||||
.umb-pane {
|
||||
margin: 30px 20px;
|
||||
}
|
||||
|
||||
.umb-control-group {
|
||||
border-bottom: 1px solid @grayLighter;
|
||||
padding-bottom: 30px;
|
||||
margin-bottom: 25px !important;
|
||||
}
|
||||
|
||||
.umb-control-group .umb-el-wrap {
|
||||
padding: 0
|
||||
}
|
||||
|
||||
@@ -57,7 +57,6 @@
|
||||
.umb-dialog {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.umb-dialog .umb-btn-toolbar {
|
||||
text-align: right;
|
||||
padding: 15px 20px 10px 20px;
|
||||
@@ -65,13 +64,11 @@
|
||||
clear: both;
|
||||
border-top: #efefef 1px solid
|
||||
}
|
||||
|
||||
.umb-dialog-body{
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
/* modal and umb-modal are used for right.hand dialogs */
|
||||
|
||||
.modal.fade.in{border: none !important; border-radius: none !important;}
|
||||
.umb-modal.fade {
|
||||
outline: none;
|
||||
@@ -84,6 +81,7 @@
|
||||
transition: opacity 0.3s linear, top 0.3s ease-out;
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
.umb-modal.fade.in {
|
||||
top: 0 !important;
|
||||
left: 100% !important;
|
||||
|
||||
@@ -30,9 +30,6 @@
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.umb-panel-header h1.umb-headline-editor {
|
||||
cursor: text;
|
||||
}
|
||||
.umb-headline-editor-wrapper,
|
||||
h1.headline{height: 40px; padding: 30px 0 0 20px;}
|
||||
|
||||
@@ -55,15 +52,17 @@ h1.headline{height: 40px; padding: 30px 0 0 20px;}
|
||||
}
|
||||
.umb-panel-header h1, {
|
||||
margin: 0;
|
||||
font-size: @fontSizeLarge;
|
||||
font-size: @fontSizeMedium;
|
||||
font-weight: 400;
|
||||
color: @gray;
|
||||
line-height: 22px;
|
||||
line-height: 1em;
|
||||
width: 100%;
|
||||
margin: -2px 0 0 0;
|
||||
}
|
||||
|
||||
.umb-headline-editor-wrapper input{
|
||||
display: none;
|
||||
font-size: @fontSizeMedium
|
||||
}
|
||||
|
||||
.umb-headline-editor-wrapper h1.umb-headline-editor:hover, .umb-headline-editor-wrapper input {
|
||||
@@ -71,9 +70,14 @@ h1.headline{height: 40px; padding: 30px 0 0 20px;}
|
||||
}
|
||||
|
||||
.umb-headline-editor-wrapper input:focus {
|
||||
border: 1px solid @grayLight;
|
||||
background: @white;
|
||||
width: 100%;
|
||||
background: none;
|
||||
border: none;
|
||||
width: auto;
|
||||
margin: -9px 0 0 0;
|
||||
padding: 0 0 2px 0;
|
||||
border-radius: 0;
|
||||
line-height: 1em;
|
||||
color: @black
|
||||
}
|
||||
|
||||
|
||||
@@ -95,6 +99,11 @@ h1.headline{height: 40px; padding: 30px 0 0 20px;}
|
||||
.umb-panel-footer {
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
z-index: 999;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//
|
||||
// Color picker
|
||||
// --------------------------------------------------
|
||||
|
||||
ul.color-picker li {
|
||||
padding: 2px;
|
||||
margin: 3px;
|
||||
@@ -21,3 +20,15 @@ ul.color-picker li a {
|
||||
width:30px;
|
||||
border:none;
|
||||
}
|
||||
|
||||
//
|
||||
// Media picker
|
||||
// --------------------------------------------------
|
||||
.umb-mediapicker .add-link{
|
||||
display: inline-block;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
border: 1px @grayLight dashed;
|
||||
line-height: 100px
|
||||
}
|
||||
|
||||
@@ -9,37 +9,52 @@ ul.sections {
|
||||
}
|
||||
|
||||
ul.sections li {
|
||||
border-bottom: 1px solid @grayDark;
|
||||
display: block;
|
||||
border-left: 4px @blackLight solid;
|
||||
-webkit-transition: all .3s linear;
|
||||
-moz-transition: all .3s linear;
|
||||
transition: all .3s linear;
|
||||
}
|
||||
|
||||
ul.sections li [class^="icon-"]:before, ul.sections li [class*=" icon-"]:before{
|
||||
font-size: 24px;
|
||||
ul.sections li [class^="icon-"]:before,
|
||||
ul.sections li [class*=" icon-"]:before{
|
||||
font-size: 30px;
|
||||
margin: 1px 0 0 0;
|
||||
opacity: 0.4;
|
||||
-webkit-transition: all .3s linear;
|
||||
-moz-transition: all .3s linear;
|
||||
transition: all .3s linear;
|
||||
}
|
||||
|
||||
ul.sections:hover li [class^="icon-"]:before,
|
||||
ul.sections:hover li [class*=" icon-"]:before {
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
ul.sections li a {
|
||||
display: inline-block;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
font-size: 10px;
|
||||
text-align: center;
|
||||
color: @gray;
|
||||
-webkit-transition: color .5s linear;
|
||||
-moz-transition: color .5s linear;
|
||||
transition: color .5s linear;
|
||||
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
color: @grayLight;
|
||||
padding: 20px 4px 4px 0;
|
||||
border-bottom: 1px solid @grayDark;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 0 0 -4px;
|
||||
}
|
||||
|
||||
ul.sections a span {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
line-height: 1em;
|
||||
line-height: 1.4em;
|
||||
opacity: 0;
|
||||
-webkit-transition: all .3s linear;
|
||||
-moz-transition: all .3s linear;
|
||||
transition: all .3s linear;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
ul.sections:hover li a {
|
||||
color: @grayLight;
|
||||
ul.sections:hover a span {
|
||||
opacity: 1
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +65,8 @@ ul.sections li.avatar {
|
||||
height: 69px;
|
||||
padding: 30px 0 0 0;
|
||||
text-align: center;
|
||||
margin: 0 0 0 -4px;
|
||||
border-bottom: 1px solid @grayDark;
|
||||
}
|
||||
|
||||
ul.sections li.avatar a {
|
||||
@@ -57,6 +74,7 @@ ul.sections li.avatar a {
|
||||
padding: 0;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border: none
|
||||
}
|
||||
|
||||
ul.sections li.avatar a img {
|
||||
@@ -67,27 +85,20 @@ ul.sections li.avatar a img {
|
||||
opacity: 0.4
|
||||
}
|
||||
|
||||
ul.sections li i {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
ul.sections li a {
|
||||
display: inline-block;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
ul.sections li.current {
|
||||
ul.sections li.current, ul.sections li:hover {
|
||||
border-left: 4px @orange solid;
|
||||
}
|
||||
|
||||
ul.sections li.avatar.current, ul.sections li.avatar:hover {
|
||||
border-left: 4px @blackLight solid;
|
||||
}
|
||||
|
||||
ul.sections li.current a{
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
ul.sections li.help {
|
||||
border-top: 1px solid @grayDark;
|
||||
border-bottom: none;
|
||||
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
@@ -95,3 +106,7 @@ ul.sections li.help {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
ul.sections li.help a {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
// Typography
|
||||
// -------------------------
|
||||
@sansFontFamily: "Helvetica Neue", "Open Sans", Helvetica, Arial, sans-serif;
|
||||
@sansFontFamily: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
@serifFontFamily: Georgia, "Times New Roman", Times, serif;
|
||||
@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
// Based on 14px font-size and 20px line-height
|
||||
|
||||
@fontSizeLarge: @baseFontSize * 1.25; // ~18px
|
||||
@fontSizeMedium: @baseFontSize * 1.15; // ~14px
|
||||
@fontSizeSmall: @baseFontSize * 0.85; // ~12px
|
||||
@fontSizeMini: @baseFontSize * 0.75; // ~11px
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ angular.module("umbraco")
|
||||
if(folderId > 0){
|
||||
entityResource.getAncestors(folderId, "media")
|
||||
.then(function(anc){
|
||||
anc.splice(0,1);
|
||||
// anc.splice(0,1);
|
||||
$scope.path = anc;
|
||||
});
|
||||
}else{
|
||||
@@ -55,19 +55,17 @@ angular.module("umbraco")
|
||||
$scope.gotoFolder($scope.options.formData.currentFolder);
|
||||
});
|
||||
|
||||
|
||||
$scope.selectMediaItem = function(image) {
|
||||
if (image.contentTypeAlias.toLowerCase() == 'folder') {
|
||||
$scope.options.formData.currentFolder = image.id;
|
||||
$scope.gotoFolder(image.id);
|
||||
}
|
||||
else if (image.contentTypeAlias.toLowerCase() == 'image') {
|
||||
}else if (image.contentTypeAlias.toLowerCase() == 'image') {
|
||||
|
||||
eventsService.publish("Umbraco.Dialogs.MediaPickerController.Select", image).then(function(image){
|
||||
if(dialogOptions && dialogOptions.multipicker){
|
||||
$scope.select(image);
|
||||
}else{
|
||||
$scope.submit(image);
|
||||
$scope.submit(image);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -63,28 +63,26 @@ data-file-upload="options" data-file-upload-progress="" data-ng-class="{'fileupl
|
||||
ng-click="selectMediaItem(image)"
|
||||
prevent-default>
|
||||
|
||||
<img
|
||||
ng-show="image.thumbnail"
|
||||
ng-src="{{image.thumbnail}}"
|
||||
class="image"
|
||||
alt="{{image.name}}"/>
|
||||
|
||||
<img ng-src="{{image.thumbnail}}" ng-switch-when="Image" alt="{{image.name}}"/>
|
||||
|
||||
|
||||
<div ng-switch on="!!image.thumbnail" >
|
||||
<img ng-src="{{image.thumbnail}}" class="image" ng-switch-when="true" alt="{{image.name}}"/>
|
||||
|
||||
<div ng-switch-default>
|
||||
<i class="icon-folder large"></i>
|
||||
{{image.name}}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<div ng-hide="image.thumbnail">
|
||||
<i class="icon-folder large"></i>
|
||||
{{image.name}}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="umb-panel-footer">
|
||||
<div class="umb-el-wrap umb-panel-buttons">
|
||||
<div class="pull-right umb-btn-toolbar">
|
||||
<button ng-show="dialogData.selection.length > 0" type="button" ng-click="submit(dialogData)" class="btn btn-primary">Select ({{dialogData.selection.length}})</button>
|
||||
<button ng-show="dialogData.selection.length > 0" type="button"
|
||||
ng-click="submit(dialogData)" class="btn btn-primary">Select ({{dialogData.selection.length}})</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,31 +7,26 @@
|
||||
* The controller for deleting content
|
||||
*/
|
||||
function ContentSortController($scope, contentResource, treeService) {
|
||||
|
||||
$scope.sortableModel = {
|
||||
itemsToSort: [],
|
||||
name: $scope.nav.ui.currentNode.name
|
||||
};
|
||||
|
||||
contentResource.getChildren($scope.currentNode.id).then(function (data) {
|
||||
$scope.sortableModel.itemsToSort = [];
|
||||
$scope.pagesToSort = [];
|
||||
for (var i = 0; i < data.items.length; i++) {
|
||||
$scope.sortableModel.itemsToSort.push({
|
||||
$scope.pagesToSort.push({
|
||||
id: data.items[i].id,
|
||||
column1: data.items[i].name,
|
||||
column2: data.items[i].updateDate,
|
||||
column3: data.items[i].sortOrder
|
||||
name: data.items[i].name,
|
||||
updateDate: data.items[i].updateDate,
|
||||
sortOrder: data.items[i].sortOrder
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$scope.$on("umbItemSorter.ok", function(event) {
|
||||
$scope.nav.hideDialog();
|
||||
});
|
||||
$scope.$on("umbItemSorter.cancel", function (event) {
|
||||
$scope.nav.hideDialog();
|
||||
});
|
||||
$scope.sortOptions ={
|
||||
group: "pages",
|
||||
onSortHandler: function(item, args){
|
||||
args.scope.changeIndex(args.oldIndex, args.newIndex);
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
$scope.$on("umbItemSorter.sorting", function (event, args) {
|
||||
|
||||
var sortedIds = [];
|
||||
@@ -43,8 +38,7 @@ function ContentSortController($scope, contentResource, treeService) {
|
||||
$scope.sortableModel.complete = true;
|
||||
treeService.loadNodeChildren({ node: $scope.nav.ui.currentNode, section: $scope.nav.ui.currentSection });
|
||||
});
|
||||
|
||||
});
|
||||
});*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
<div ng-controller="Umbraco.Editors.Content.SortController">
|
||||
<umb-item-sorter model="sortableModel"></umb-item-sorter>
|
||||
<div class="umb-pane" ng-controller="Umbraco.Editors.Content.SortController">
|
||||
|
||||
<ul umb-sort="sortOptions"
|
||||
ng-model="pagesToSort">
|
||||
<li ng-repeat="page in pagesToSort">
|
||||
<i class="icon-navigation handle"></i> {{page.name}}
|
||||
</li>
|
||||
</ul>
|
||||
{{ pagesToSort | json}}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<div ng-controller="Umbraco.Editors.BooleanController">
|
||||
<div class="umb-editor umb-boolean" ng-controller="Umbraco.Editors.BooleanController">
|
||||
<input type="checkbox" ng-model="renderModel.value" id="{{model.alias}" />
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div ng-controller="Umbraco.Editors.CheckboxListController">
|
||||
<div class="umb-editor umb-checkboxlist" ng-controller="Umbraco.Editors.CheckboxListController">
|
||||
|
||||
<ul class="unstyled">
|
||||
<li ng-repeat="item in selectedItems">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div ng-controller="Umbraco.Editors.ContentPickerController" class="">
|
||||
<div ng-controller="Umbraco.Editors.ContentPickerController" class="umb-editor umb-contentpicker">
|
||||
<ul class="nav nav-stacked">
|
||||
<li ng-repeat="node in renderModel">
|
||||
<a href="#" prevent-default ng-click="remove($index)">
|
||||
@@ -13,5 +13,6 @@
|
||||
<i class="icon icon-plus"></i> Add
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div ng-controller="Umbraco.Editors.DatepickerController">
|
||||
<div class="umb-editor umb-datepicker" ng-controller="Umbraco.Editors.DatepickerController">
|
||||
<div class="input-append date datepicker" id="{{model.alias}}">
|
||||
<input name="datepicker" data-format="{{model.config.format}}" type="text"
|
||||
ng-model="model.value"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<div ng-controller="Umbraco.Editors.DropdownController" ng-switch="model.config.multiple">
|
||||
|
||||
<select name="dropDownList"
|
||||
class="umb-editor umb-dropdown"
|
||||
ng-switch-default
|
||||
ng-model="model.value"
|
||||
ng-options="key as val for (key, val) in model.config.items">
|
||||
@@ -8,6 +9,7 @@
|
||||
|
||||
<!--NOTE: This ng-switch is required because ng-multiple doesn't actually support dynamic bindings with multi-select lists -->
|
||||
<select name="dropDownList"
|
||||
class="umb-editor umb-dropdown"
|
||||
ng-switch-when="1"
|
||||
multiple
|
||||
ng-model="model.value"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div ng-controller="Umbraco.Editors.FileUploadController">
|
||||
<div class="umb-editor umb-fileupload" ng-controller="Umbraco.Editors.FileUploadController">
|
||||
|
||||
<div ng-hide="clearFiles">
|
||||
<div class="file-uploader">
|
||||
|
||||
@@ -1,10 +1,29 @@
|
||||
angular.module("umbraco")
|
||||
.directive("umbUploadPreview",function($parse){
|
||||
return {
|
||||
link: function(scope, element, attr, ctrl) {
|
||||
var fn = $parse(attr.umbUploadPreview),
|
||||
file = fn(scope);
|
||||
if (file.preview) {
|
||||
element.append(file.preview);
|
||||
}
|
||||
}
|
||||
};
|
||||
})
|
||||
.controller("Umbraco.Editors.FolderBrowserController",
|
||||
function ($rootScope, $scope, assetsService, $routeParams, umbRequestHelper, mediaResource, imageHelper) {
|
||||
function ($rootScope, $scope, assetsService, $routeParams, $timeout, umbRequestHelper, mediaResource, imageHelper) {
|
||||
var dialogOptions = $scope.$parent.dialogOptions;
|
||||
|
||||
$scope.filesUploading = [];
|
||||
|
||||
$scope.options = {
|
||||
url: umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostAddFile"),
|
||||
autoUpload: true,
|
||||
disableImageResize: /Android(?!.*Chrome)|Opera/
|
||||
.test(window.navigator.userAgent),
|
||||
previewMaxWidth: 100,
|
||||
previewMaxHeight: 100,
|
||||
previewCrop: true,
|
||||
formData:{
|
||||
currentFolder: $routeParams.id
|
||||
}
|
||||
@@ -23,7 +42,33 @@ angular.module("umbraco")
|
||||
|
||||
$scope.$on('fileuploadstop', function(event, files){
|
||||
$scope.loadChildren($scope.options.formData.currentFolder);
|
||||
$scope.queue = [];
|
||||
});
|
||||
|
||||
$scope.$on('fileuploadprocessalways', function(e,data) {
|
||||
var i;
|
||||
console.log('processing');
|
||||
|
||||
$scope.$apply(function() {
|
||||
$scope.filesUploading.push(data.files[data.index]);
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// All these sit-ups are to add dropzone area and make sure it gets removed if dragging is aborted!
|
||||
$scope.$on('fileuploaddragover', function(event, files) {
|
||||
if (!$scope.dragClearTimeout) {
|
||||
$scope.$apply(function() {
|
||||
$scope.dropping = true;
|
||||
});
|
||||
} else {
|
||||
$timeout.cancel($scope.dragClearTimeout);
|
||||
}
|
||||
$scope.dragClearTimeout = $timeout(function () {
|
||||
$scope.dropping = null;
|
||||
$scope.dragClearTimeout = null;
|
||||
}, 100);
|
||||
})
|
||||
|
||||
//init load
|
||||
$scope.loadChildren($routeParams.id);
|
||||
|
||||
@@ -1,14 +1,30 @@
|
||||
<form ng-controller="Umbraco.Editors.FolderBrowserController" id="fileupload"
|
||||
method="POST" enctype="multipart/form-data"
|
||||
data-file-upload="options" data-file-upload-progress="" data-ng-class="{'fileupload-processing': processing() || loadingFiles}">
|
||||
method="POST" enctype="multipart/form-data"
|
||||
class="umb-editor umb-folderbrowser"
|
||||
data-file-upload="options"
|
||||
data-file-upload-progress=""
|
||||
data-ng-class="{'fileupload-processing': processing() || loadingFiles}">
|
||||
|
||||
<div style="height: 10px; margin: 10px 0px 10px 0px" class="umb-loader"
|
||||
ng-hide="active() == 0"></div>
|
||||
|
||||
<div class="umb-upload-drop-zone" ng-show="dropping">DROP HERE</div>
|
||||
|
||||
<div class="umb-upload-upload-progress" ng-show="filesUploading.length">
|
||||
NOW UPLOADING...
|
||||
<ul>
|
||||
<li ng-repeat="file in filesUploading">
|
||||
<div umb-upload-preview="file"></div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="umb-thumbnails thumbnails">
|
||||
<li class="span2 folder" ng-repeat="image in images | orderBy:'contentTypeAlias' | filter:searchTerm">
|
||||
<a href="#/media/media/edit/{{image.id}}" class="thumbnail">
|
||||
<img ng-src="{{image.thumbnail}}" ng-switch-when="Image" alt="{{image.name}}"/>
|
||||
|
||||
|
||||
<div ng-switch on="!!image.thumbnail" >
|
||||
<img ng-src="{{image.thumbnail}}" class="image" ng-switch-when="true" alt="{{image.name}}"/>
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<div ng-controller="Umbraco.Editors.GoogleMapsController" class="">
|
||||
<div ng-controller="Umbraco.Editors.GoogleMapsController" class="umb-editor umb-googlemaps">
|
||||
<div class="" style="height: 400px;" id="{{model.alias}}_map"></div>
|
||||
</div>
|
||||
@@ -1,3 +1,3 @@
|
||||
<div ng-controller="Umbraco.Editors.GridController" auto-scale="10">
|
||||
<div class="umb-editor umb-grid" ng-controller="Umbraco.Editors.GridController" auto-scale="10">
|
||||
<iframe style="width: 100%; height: 100%;" src="views/propertyeditors/grid/iframe.html"></iframe>
|
||||
</div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div>
|
||||
<div class="umb-editor umb-integer">
|
||||
<input name="integerField" type="text" class="umb-textstring span7 textstring"
|
||||
ng-model="model.value"
|
||||
val-regex="^\d*$"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
<div class="umb-listview" ng-controller="Umbraco.Editors.ListViewController">
|
||||
<div class="umb-editor umb-listview" ng-controller="Umbraco.Editors.ListViewController">
|
||||
<div class="row-fluid">
|
||||
<div class="umb-sub-header">
|
||||
<div class="btn-group">
|
||||
@@ -9,8 +9,11 @@
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li ng-repeat="contentType in listViewAllowedTypes">
|
||||
<a href="#/content/content/edit/{{content.id}}?doctype={{contentType.alias}}&create=true">
|
||||
<i class="icon-{{contentType.cssClass}}"></i> {{contentType.name}}</a>
|
||||
<a
|
||||
href="#/content/content/edit/{{content.id}}?doctype={{contentType.alias}}&create=true">
|
||||
<i class="icon-{{contentType.cssClass}}"></i>
|
||||
{{contentType.name}}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -2,48 +2,53 @@
|
||||
//with a specified callback, this callback will receive an object with a selection on it
|
||||
angular.module('umbraco').controller("Umbraco.Editors.MediaPickerController",
|
||||
function($rootScope, $scope, dialogService, mediaResource, imageHelper, $log){
|
||||
//
|
||||
//$( "#draggable" ).draggable();
|
||||
|
||||
|
||||
$scope.images = [];
|
||||
$scope.ids = [];
|
||||
|
||||
if($scope.model.value){
|
||||
$scope.ids = $scope.model.value.split(',');
|
||||
|
||||
//saved value contains a list of images with their coordinates a Dot coordinates
|
||||
//this will be $scope.model.value...
|
||||
var sampleData = [
|
||||
{id: 1143, coordinates: {x:123,y:345}, center: {x:123,y:12}},
|
||||
{id: 1144, coordinates: {x:123,y:345}, center: {x:123,y:12}},
|
||||
{id: 1145, coordinates: {x:123,y:345}, center: {x:123,y:12}},
|
||||
];
|
||||
|
||||
$scope.images = sampleData;
|
||||
$($scope.images).each(function(i,img){
|
||||
mediaResource.getById(img.id).then(function(media){
|
||||
mediaResource.getByIds($scope.ids).then(function(medias){
|
||||
//img.media = media;
|
||||
|
||||
//shortcuts
|
||||
//TODO, do something better then this for searching
|
||||
img.src = imageHelper.getImagePropertyValue({imageModel: media});
|
||||
img.thumbnail = imageHelper.getThumbnailFromPath(img.src);
|
||||
$(medias).each(function(i, media){
|
||||
//shortcuts
|
||||
//TODO, do something better then this for searching
|
||||
var img = {};
|
||||
img.src = imageHelper.getImagePropertyValue({imageModel: media});
|
||||
img.thumbnail = imageHelper.getThumbnailFromPath(img.src);
|
||||
$scope.images.push(img);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//List of crops with name and size
|
||||
$scope.config = {
|
||||
crops: [
|
||||
{name: "default", x:300,y:400},
|
||||
{name: "header", x:23,y:40},
|
||||
{name: "tiny", x:10,y:10}
|
||||
]};
|
||||
$scope.remove = function(index){
|
||||
$scope.images.splice(index, 1);
|
||||
$scope.ids.splice(index, 1);
|
||||
$scope.sync();
|
||||
};
|
||||
|
||||
$scope.add = function(){
|
||||
dialogService.mediaPicker({multipicker:true, callback: function(data){
|
||||
$(data.selection).each(function(i, media){
|
||||
//shortcuts
|
||||
//TODO, do something better then this for searching
|
||||
|
||||
$scope.openMediaPicker =function(value){
|
||||
var d = dialogService.mediaPicker({scope: $scope, callback: populate});
|
||||
};
|
||||
var img = {};
|
||||
img.id = media.id;
|
||||
img.src = imageHelper.getImagePropertyValue({imageModel: media});
|
||||
img.thumbnail = imageHelper.getThumbnailFromPath(img.src);
|
||||
$scope.images.push(img);
|
||||
$scope.ids.push(img.id);
|
||||
});
|
||||
|
||||
$scope.crop = function(image){
|
||||
$scope.currentImage = image;
|
||||
};
|
||||
$scope.sync();
|
||||
}});
|
||||
};
|
||||
|
||||
function populate(data){
|
||||
$scope.model.value = data.selection;
|
||||
}
|
||||
});
|
||||
$scope.sync = function(){
|
||||
$scope.model.value = $scope.ids.join();
|
||||
};
|
||||
|
||||
});
|
||||
@@ -1,41 +1,17 @@
|
||||
<div ng-controller="Umbraco.Editors.MediaPickerController">
|
||||
<div class="umb-editor umb-mediapicker" ng-controller="Umbraco.Editors.MediaPickerController">
|
||||
|
||||
<div ng-show="currentImage" class="umb-image-crop">
|
||||
<div class="umb-image-mask">
|
||||
<i class="icon-screenshot"></i>
|
||||
<i class="icon-circle"></i>
|
||||
<img ng-src="{{currentImage.src}}" style="max-width: 600px; max-height: 400px" alt="">
|
||||
</div>
|
||||
|
||||
<div class="umb-image-controls clearfix">
|
||||
<i class="icon icon-minus"></i>
|
||||
<input class="range" type="range" min="1" max="200" step="1" value="100">
|
||||
<i class="icon icon-plus"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul ng-show="currentImage" class="thumbnails umb-crop-preview">
|
||||
<li class="umb-thumbnail" ng-repeat="crop in config.crops">
|
||||
<a href="#">
|
||||
<img src="/media/dummy/crop-preview-horizontal.png" alt="">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="thumbnails umb-crop-preview">
|
||||
<li class="umb-thumbnail" ng-repeat="image in images">
|
||||
<a href ng-click="crop(image)">
|
||||
<img ng-src="{{image.thumbnail}}" alt="">
|
||||
<ul class="thumbnails umb-thumbnails">
|
||||
<li class="umb-thumbnail thumbnail span2" ng-repeat="image in images">
|
||||
<a href ng-click="remove($index)">
|
||||
<img ng-src="{{image.src}}" alt="">
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="umb-thumbnail span4">
|
||||
<a href="#" ng-click="openMediaPicker(value)" prevent-default>
|
||||
<i class="icon icon-plus"></i>
|
||||
<li>
|
||||
<a href="#" class="add-link" ng-click="add()" prevent-default>
|
||||
<i class="icon icon-add large"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
{{images | json}}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div ng-controller="Umbraco.Editors.MultipleTextBoxController">
|
||||
<div class="umb-editor umb-multiple-textbox" ng-controller="Umbraco.Editors.MultipleTextBoxController">
|
||||
|
||||
<div class="control-group" ng-repeat="item in model.value">
|
||||
<input type="text" name="item_{{$index}}" ng-model="item.value" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div>
|
||||
<div class="umb-editor umb-radiobuttons">
|
||||
<ul class="unstyled">
|
||||
<li ng-repeat="(key, val) in model.config.items">
|
||||
<label class="radio">
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<div class="umb-label" ng-controller="Umbraco.Editors.ReadOnlyValueController">
|
||||
<div class="umb-editor umb-readonlyvalue" ng-controller="Umbraco.Editors.ReadOnlyValueController">
|
||||
{{displayvalue}}
|
||||
</div>
|
||||
@@ -1,3 +1,3 @@
|
||||
<div ng-controller="Umbraco.Editors.RTEController" class="">
|
||||
<div ng-controller="Umbraco.Editors.RTEController" class="umb-editor umb-rte">
|
||||
<textarea ng-model="model.value" rows="10" id="{{model.alias}}_rte"></textarea>
|
||||
</div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div ng-controller="Umbraco.Editors.TagsController" class="">
|
||||
<div ng-controller="Umbraco.Editors.TagsController" class="umb-editor umb-tags">
|
||||
<div ng-model="model.value" id="{{model.alias}}_tags" class="tag-list">
|
||||
|
||||
<div class="tags">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="span7">
|
||||
<div class="umb-editor umb-templatepicker">
|
||||
<h5>TODO: Implement this picker</h5>
|
||||
<div ng-model="model.value">{{model.value | json}}</div>
|
||||
</div>
|
||||
@@ -1 +1 @@
|
||||
<textarea ng-model="model.value" id="{{model.alias}}" rows="10" class="umb-textarea textstring"></textarea>
|
||||
<textarea ng-model="model.value" id="{{model.alias}}" rows="10" class="umb-editor umb-textarea textstring"></textarea>
|
||||
@@ -1 +1 @@
|
||||
<input type="text" ng-model="model.value" id="{{model.alias}}" class="umb-textstring textstring" />
|
||||
<input type="text" ng-model="model.value" id="{{model.alias}}" class="umb-editor umb-textstring textstring" />
|
||||
@@ -113,7 +113,7 @@
|
||||
UmbClientMgr.openAngularModalWindow({
|
||||
template: 'views/common/dialogs/iconpicker.html',
|
||||
callback: function(data){
|
||||
jQuery(that).next().val("." + data);
|
||||
jQuery(that).next().val(data);
|
||||
jQuery(that).find("i").attr("class", data);
|
||||
}});
|
||||
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
|
||||
|
||||
<cc1:Pane runat="server">
|
||||
<cc1:PropertyPane runat="server" text="Filename (without .xslt)">
|
||||
<asp:TextBox id="rename" Runat="server" CssClass="input-larger-type input-block-input"></asp:TextBox>
|
||||
<cc1:PropertyPanel runat="server" text="Filename (without .xslt)">
|
||||
<asp:TextBox id="rename" Runat="server" CssClass="bigInput input-large-type input-block-level"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator id="RequiredFieldValidator1" ErrorMessage="*" ControlToValidate="rename" runat="server">*</asp:RequiredFieldValidator>
|
||||
</cc1:PropertyPane>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel runat="server" Text="Template">
|
||||
<asp:ListBox id="xsltTemplate" Runat="server" Width="350" CssClass="bigInput input-large-type input-block-level" Rows="1" SelectionMode="Single">
|
||||
<asp:ListBox id="xsltTemplate" Runat="server" CssClass="bigInput input-large-type input-block-level" Rows="1" SelectionMode="Single">
|
||||
<asp:ListItem Value="clean.xslt">Clean</asp:ListItem>
|
||||
</asp:ListBox>
|
||||
</cc1:PropertyPanel>
|
||||
|
||||
<cc1:PropertyPanel runat="server" Text="Create macro">
|
||||
<cc1:PropertyPanel runat="server" Text="">
|
||||
<asp:CheckBox ID="createMacro" Runat="server" Checked="true" Text="Create Macro"></asp:CheckBox>
|
||||
</cc1:PropertyPanel>
|
||||
</cc1:Pane>
|
||||
|
||||
@@ -34,8 +34,10 @@ namespace Umbraco.Web.PropertyEditors
|
||||
/// <returns></returns>
|
||||
public override object FormatDataForEditor(object dbValue)
|
||||
{
|
||||
var parsed = MacroTagParser.FormatRichTextPersistedDataForEditor(dbValue.ToString(), new Dictionary<string, string>());
|
||||
if (dbValue == null)
|
||||
return dbValue;
|
||||
|
||||
var parsed = MacroTagParser.FormatRichTextPersistedDataForEditor(dbValue.ToString(), new Dictionary<string, string>());
|
||||
return parsed;
|
||||
}
|
||||
|
||||
@@ -47,8 +49,10 @@ namespace Umbraco.Web.PropertyEditors
|
||||
/// <returns></returns>
|
||||
public override object FormatDataForPersistence(Core.Models.Editors.ContentPropertyData editorValue, object currentValue)
|
||||
{
|
||||
var parsed = MacroTagParser.FormatRichTextContentForPersistence(editorValue.Value.ToString());
|
||||
if (editorValue.Value == null)
|
||||
return null;
|
||||
|
||||
var parsed = MacroTagParser.FormatRichTextContentForPersistence(editorValue.Value.ToString());
|
||||
return parsed;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,9 @@
|
||||
|
||||
/* App-wide file-upload helper */
|
||||
'lib/jquery/jquery.upload/js/jquery.fileupload.js',
|
||||
'lib/jquery/jquery.upload/js/load-image.min.js',
|
||||
'lib/jquery/jquery.upload/js/jquery.fileupload-process.js',
|
||||
'lib/jquery/jquery.upload/js/jquery.fileupload-image.js',
|
||||
'lib/jquery/jquery.upload/js/jquery.fileupload-angular.js',
|
||||
|
||||
'lib/bootstrap/js/bootstrap.js',
|
||||
|
||||
@@ -77,12 +77,13 @@ namespace Umbraco.Web.WebApi.Filters
|
||||
var toRemove = new List<dynamic>();
|
||||
foreach (dynamic item in items)
|
||||
{
|
||||
var hasPathAccess = UserExtensions.HasPathAccess(item.Path, user.StartContentId, Constants.System.RecycleBinContent);
|
||||
var hasPathAccess = (item != null && UserExtensions.HasPathAccess(item.Path, user.StartContentId, Constants.System.RecycleBinContent));
|
||||
if (!hasPathAccess)
|
||||
{
|
||||
toRemove.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in toRemove)
|
||||
{
|
||||
items.Remove(item);
|
||||
|
||||
@@ -429,7 +429,6 @@ namespace umbraco.controls
|
||||
txtName.Text = _contentType.GetRawText();
|
||||
txtAlias.Text = _contentType.Alias;
|
||||
description.Text = _contentType.GetRawDescription();
|
||||
|
||||
tb_icon.Value = _contentType.IconUrl;
|
||||
|
||||
if(string.IsNullOrEmpty(_contentType.IconUrl))
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace umbraco.BasePages
|
||||
public static string RefreshAdmin { get { return "setTimeout('" + GetMainWindow + ".location.reload()', {0});"; } }
|
||||
public static string ShowSpeechBubble { get { return GetMainWindow + ".UmbSpeechBubble.ShowMessage('{0}','{1}', '{2}');"; } }
|
||||
public static string ChangeContentFrameUrl(string url) {
|
||||
return string.Format("alert('sdsd'); " + ClientMgrScript + ".contentFrame('{0}');", url);
|
||||
return string.Format(ClientMgrScript + ".contentFrame('{0}');", url);
|
||||
}
|
||||
public static string ReloadContentFrameUrlIfPathLoaded(string url) {
|
||||
return string.Format(ClientMgrScript + ".reloadContentFrameUrlIfPathLoaded('{0}');", url);
|
||||
|
||||
Reference in New Issue
Block a user