Update Umbraco to 7.12.2

This commit is contained in:
2018-09-16 15:08:47 -04:00
parent 7ed7776432
commit 616ab81bad
764 changed files with 142787 additions and 66790 deletions
+54 -42
View File
@@ -1,19 +1,10 @@
@using System.Collections
@using System.Net.Http
@using System.Web.Mvc.Html
@using Umbraco.Core
@using Umbraco.Core
@using ClientDependency.Core
@using ClientDependency.Core.Mvc
@using Microsoft.Owin.Security
@using Newtonsoft.Json
@using Newtonsoft.Json.Linq
@using Umbraco.Core.IO
@using Umbraco.Web
@using Umbraco.Web.Editors
@using umbraco
@inherits System.Web.Mvc.WebViewPage
@{
var isDebug = false;
if (Request.RawUrl.IndexOf('?') >= 0)
@@ -32,9 +23,7 @@
.RequiresCss("lib/bootstrap-social/bootstrap-social.css", "Umbraco")
.RequiresCss("lib/font-awesome/css/font-awesome.min.css", "Umbraco");
}
<!DOCTYPE html>
<html lang="en">
<head>
<base href="@GlobalSettings.Path.EnsureEndsWith('/')" />
@@ -43,49 +32,55 @@
<meta name="apple-mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="robots" content="noindex, nofollow">
<meta name="pinterest" content="nopin" />
<title ng-bind="$root.locationTitle">Umbraco</title>
@Html.RenderCssHere(
new BasicPath("Umbraco", IOHelper.ResolveUrl(SystemDirectories.Umbraco)),
new BasicPath("UmbracoClient", IOHelper.ResolveUrl(SystemDirectories.UmbracoClient)))
</head>
<noscript><h5><strong>&nbsp; JavaScript is disabled. Please enable to continue!</strong></h5></noscript>
<body ng-class="{touch:touchDevice,emptySection:emptySection}" ng-controller="Umbraco.MainController" id="umbracoMainPageBody">
<div ng-hide="!authenticated" ng-cloak id="mainwrapper" class="clearfix" ng-click="closeDialogs($event)">
<body ng-class="{'touch':touchDevice, 'emptySection':emptySection, 'umb-drawer-is-visible':drawer.show}" ng-controller="Umbraco.MainController" id="umbracoMainPageBody">
<umb-navigation></umb-navigation>
<div ng-hide="!authenticated" ng-cloak>
<section id="contentwrapper">
<div id="contentcolumn" ng-view>
</div>
</section>
<!-- help dialog controller by the help button - this also forces the backoffice UI to shift 400px -->
<umb-drawer data-element="drawer" ng-if="drawer.show" model="drawer.model" view="drawer.view"></umb-drawer>
<umb-notifications></umb-notifications>
<div id="mainwrapper" class="clearfix" ng-click="closeDialogs($event)">
<umb-navigation></umb-navigation>
<section id="contentwrapper">
<div id="contentcolumn" ng-view>
<noscript>
<div>
<h3><img src="assets/img/application/logo.png" alt="Umbraco logo" style="vertical-align: text-bottom;" /> Umbraco</h3>
<p>For full functionality of Umbraco CMS it is necessary to enable JavaScript.</p>
<p>Here are the <a href="https://www.enable-javascript.com/" target="_blank" style="text-decoration: underline;">instructions how to enable JavaScript in your web browser</a>.</p>
</div>
</noscript>
</div>
</section>
<umb-tour
ng-if="tour.show"
model="tour">
</umb-tour>
<umb-notifications></umb-notifications>
</div>
</div>
@Html.BareMinimumServerVariablesScript(Url, Url.Action("ExternalLogin", "BackOffice", new { area = ViewBag.UmbracoPath }))
<script type="text/javascript">
document.angularReady = function(app) {
@Html.AngularValueExternalLoginInfoScript((IEnumerable<string>)ViewBag.ExternalSignInError)
@Html.AngularValueResetPasswordCodeInfoScript(ViewData["PasswordResetCode"])
}
</script>
@*And finally we can load in our angular app*@
<script type="text/javascript" src="lib/rgrove-lazyload/lazyload.js"></script>
<script type="text/javascript" src="@Url.GetUrlWithCacheBust("Application", "BackOffice")"></script>
@if (isDebug)
{
@Html.RenderProfiler()
}
<umb-backdrop
ng-if="backdrop.show"
backdrop-opacity="backdrop.opacity"
highlight-element="backdrop.element"
highlight-prevent-click="backdrop.elementPreventClick"
disable-events-on-click="backdrop.disableEventsOnClick">
</umb-backdrop>
<umb-overlay
ng-if="ysodOverlay.show"
@@ -94,5 +89,22 @@
view="ysodOverlay.view">
</umb-overlay>
@Html.BareMinimumServerVariablesScript(Url, ApplicationContext.Current, Url.Action("ExternalLogin", "BackOffice", new { area = ViewBag.UmbracoPath }))
<script>
document.angularReady = function(app) {
@Html.AngularValueExternalLoginInfoScript((IEnumerable<string>)ViewBag.ExternalSignInError)
@Html.AngularValueResetPasswordCodeInfoScript(ViewData["PasswordResetCode"])
}
</script>
<script src="lib/rgrove-lazyload/lazyload.js"></script>
<script src="@Url.GetUrlWithCacheBust("Application", "BackOffice")"></script>
@if (isDebug)
{
<script src="lib/jquery/jquery.min.js"></script>
@Html.RenderProfiler()
}
</body>
</html>
@@ -0,0 +1,57 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.background">
<div class="box-slider">
<div colorpicker ng-model="item.values.color"></div>
</div>
<div class="box-slider">
<div class="imagePickerPreview" ng-click="open(item.values)" style="background-image:{{ item.values.imageorpattern }}">
<i ng-if="item.values.imageorpattern == ''" class="icon icon-picture"></i>
<i ng-if="item.values.imageorpattern != ''" class="icon icon-delete" ng-click="item.values.imageorpattern = ''"></i>
</div>
</div>
</div>
<script type="text/ng-template" id="mediaPickerModal.html">
<div ng-controller="canvasdesigner.mediaPickerModal">
<div class="modal-header bodyCanvasdesignerImagePicker ng-scope">
<ul class="breadcrumb">
<li ng-if="startNodeId == -1">
<a href="" ng-click="gotoFolder()">Media</a>
</li>
<!-- ngRepeat: item in path -->
<li ng-repeat="item in currentPath" class="ng-scope">
/ <a ng-if="currentFolder.id == item.id" href="" ng-class="{disabled:currentFolder.id == item.id}">{{ item.name }}</a>
<a ng-if="currentFolder.id != item.id" ng-click="gotoFolder(item)">{{ item.name }}</a>
</li>
</ul>
</div>
<div class="modal-body bodyCanvasdesignerImagePicker">
<ul class="canvasdesignerImagePicker">
<li>
<ul class="media-items">
<li ng-repeat="child in currentFolder.children | orderBy:'isFolder':true">
<div ng-if="!child.isFolder" class="media-preview" ng-class="{selected:selectedMedia.id == child.id}" ng-click="selectMedia(child)" style="background-image: url({{ child.thumbnail }})"></div>
<div ng-if="child.isFolder" class="media-preview" ng-click="selectMedia(child)">
<i class="icon icon-folder folder"><p class="folder-name">{{child.name}}</p></i>
</div>
</li>
</ul>
</li>
</ul>
</div>
<div class="right">
<a class="btn" href="#" ng-click="cancelAndClose()">Cancel</a>
<a class="btn btn-success" href="#" ng-click="submitAndClose()">Done</a>
</div>
</div>
</script>
@@ -0,0 +1,20 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.border" class="bordereditor">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="border in borderList" class="border-{{border}}" ng-class="{selected: selectedBorder.name == border}" ng-click="setselectedBorder(border)"></li>
</ul>
</div>
<div class="box-slider" ng-repeat="border in borderList" ng-show="selectedBorder.name == border">
<div colorpicker ng-model="item.values[(border !== 'all' ? border : '') + 'bordercolor']"></div>
<select class="borderStyleSelect" ng-model="selectedBorder.type" ng-options="bordertype for bordertype in bordertypes"></select>
<!--<i ng-if="selectedBorder.color != ''" ng-click="selectedBorder.color= ''" class="icon icon-delete colorPickerDelete"></i>-->
</div>
<div class="box-slider">
<div ui-slider min="0" max="40" step="1" ng-model="selectedBorder.size"></div>
</div>
</div>
@@ -0,0 +1,4 @@
@inherits System.Web.Mvc.WebViewPage
<div class="box-slider">
<div colorpicker ng-model="item.values.color"></div>
</div>
@@ -0,0 +1,34 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.googlefontpicker">
<div class="box-slider">
<div class="fontFamilyPickerPreview" ng-click="open(item.values)" ng-style="setStyleVariant()">
<span>Aa</span>
{{ item.values.fontFamily }}
<i ng-if="item.values.fontFamily != ''" ng-click="item.values.fontFamily = ''" class="icon icon-delete fontPickerDelete"></i>
</div>
</div>
</div>
<script type="text/ng-template" id="googlefontdialog.html">
<div ng-controller="googlefontdialog.controller">
<div class="modal-header canvasdesigner-fontfamilypicker">
<select class="font-list" ng-model="selectedFont" ng-change="showFontPreview(selectedFont)" ng-options="font as font.fontFamily group by font.fontType for font in fonts"></select>
<select class="variant-list" ng-model="selectedFont.variant" ng-change="showFontPreview(selectedFont,selectedFont.variant)" ng-options="variant for variant in selectedFont.variants" />
</div>
<div class="modal-body canvasdesigner-fontfamilypicker">
<span class="show" ng-style="setStyleVariant()">Aa Bb Cc 1 2 3 4&hellip; <br />The quick brown fox jumps over the lazy dog&hellip;</span>
</div>
<div class="right">
<a class="btn" href="#" ng-click="cancelAndClose()">Cancel</a>
<a class="btn btn-success" href="#" ng-click="submitAndClose()">Done</a>
</div>
</div>
</script>
@@ -0,0 +1,8 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.gridRow">
<div class="box-slider">
<input type="checkbox" ng-model="item.values.fullsize" /><label>Full size</label>
</div>
</div>
+151
View File
@@ -0,0 +1,151 @@
@using System.Web.Mvc.Html
@inherits System.Web.Mvc.WebViewPage<Umbraco.Web.Models.ContentEditing.BackOfficePreview>
@{
var disableDevicePreview = Model.DisableDevicePreview.ToString().ToLowerInvariant();
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Umbraco Canvas Designer</title>
<link href="../assets/css/canvasdesigner.css" type="text/css" rel="stylesheet" />
<link href="../lib/spectrum/spectrum.css" type="text/css" rel="stylesheet" />
<link href="../lib/jquery-ui/jquery-ui-1.10.4.custom.min.css" type="text/css" rel="stylesheet" />
<meta name="robots" content="noindex, nofollow">
</head>
<body id="canvasdesignerPanel" ng-mouseover="outlinePositionHide()" ng-class="{ leftOpen: (showStyleEditor || showPalettePicker) && !showDevicesPreview }" ng-controller="Umbraco.canvasdesignerController">
<div class="wait" ng-show="!frameLoaded"></div>
@if (string.IsNullOrWhiteSpace(Model.PreviewExtendedHeaderView) == false)
{
@Html.Partial(Model.PreviewExtendedHeaderView)
}
<div id="demo-iframe-wrapper" ng-show="frameLoaded" class="{{previewDevice.css}}">
<iframe id="resultFrame" ng-src="{{pageUrl}}" frameborder="0" iframe-is-loaded></iframe>
</div>
<div class="canvasdesigner" ng-init="showDevicesPreview = true; showDevices = !@(disableDevicePreview); showPalettePicker = true" ng-mouseenter="positionSelectedHide()">
<div class="fix-left-menu selected">
<div class="avatar">
<img ng-src="../assets/img/application/logo.png"
ng-srcset="../assets/img/application/logo@2x.png 2x,
../assets/img/application/logo@3x.png 3x" />
</div>
<ul class="sections" ng-class="{selected: showDevicesPreview && showDevices}">
<li ng-repeat="device in devices" ng-class="{ current:previewDevice==device }" ng-click="updatePreviewDevice(device)">
<a href="#"><i class="icon {{device.icon}}" title="{{device.title}}"></i><span></span></a>
</li>
<li ng-click="closePreviewDevice()" ng-if="enableCanvasdesigner > 0">
<a href="" class="more-options">
<i></i>
<i></i>
<i></i>
</a>
</li>
<li ng-click="exitPreview()">
<a href="#" title="Exit Preview"><i class="icon icon-wrong"></i><span> </span></a>
</li>
</ul>
<ul class="sections" ng-class="{selected: !showDevicesPreview}" ng-if="enableCanvasdesigner > 0">
<li ng-click="openPreviewDevice()">
<a href="#"><i class="icon {{previewDevice.icon}}"></i><span>Preview</span></a>
</li>
<li ng-click="openPalettePicker()" ng-class=" { current:showPalettePicker }">
<a href="#"><i class="icon icon-palette"></i><span>Palette</span></a>
</li>
<li ng-click="openStyleEditor()" ng-class=" { current:showStyleEditor }">
<a href="#"><i class="icon icon-paint-roller"></i><span>UI Designer</span></a>
</li>
</ul>
</div>
<div class="main-panel" ng-class="{selected: !showDevicesPreview && ( showPalettePicker || showStyleEditor )}">
<div class="header">
<h3>Palette Style</h3>
</div>
<div class="content">
<ul class="samples">
<li ng-repeat="palette in canvasdesignerPalette">
<a href="#" ng-click="refreshCanvasdesignerByPalette(palette)">
<h4>{{palette.name}}</h4>
<ul class="samples">
<li style="background-color:{{palette.color1}}"></li>
<li style="background-color:{{palette.color2}}"></li>
<li style="background-color:{{palette.color3}}"></li>
<li style="background-color:{{palette.color4}}"></li>
<li style="background-color:{{palette.color5}}"></li>
</ul>
</a>
</li>
</ul>
</div>
<div class="btn-group">
<a class="btn btn-success" ng-click="saveStyle()">Save Style</a>
<a class="btn btn-success dropdown-toggle" ng-click="opendropdown = !opendropdown">
<span class="caret"></span>
</a>
<ul class="dropdown-menu" ng-init="opendropdown = false" ng-show="opendropdown">
<li><a ng-click="createStyle();opendropdown = false">Create Page Style</a></li>
<li><a ng-click="deleteCanvasdesigner();opendropdown = false">Reset page style</a></li>
<li><a ng-click="makePreset();opendropdown = false">Make preset</a></li>
</ul>
</div>
</div>
<div class="main-panel" ng-class="{selected: !showDevicesPreview && showStyleEditor}">
<div ng-show="!currentSelected">
<div class="header">
<h3>Select</h3>
</div>
<div class="content">
<ul class="samples">
<li ng-repeat="configItem in canvasdesignerModel.configs"
ng-mousemove="refreshOutlinePosition(configItem)"
ng-class="{hover: configItem.highlighted == true}"
ng-mouseenter="setCurrentHighlighted(configItem)"
ng-mouseleave="configItem.highlighted = false"
ng-click="setCurrentSelected(configItem)">
{{configItem.name}}
</li>
</ul>
</div>
</div>
<div ng-repeat="configItem in canvasdesignerModel.configs" ng-show="currentSelected && currentSelected.name.toLowerCase() == configItem.name.toLowerCase()
&& currentSelected.schema.toLowerCase() == configItem.schema.toLowerCase()" on-finish-render-filters>
<div class="header">
<h3><i class="icon icon-list" ng-click="outlineSelectedHide()"></i> {{configItem.name}}</h3>
</div>
<div class="content">
<div class="editor-category" ng-repeat="category in getCategories(configItem)" ng-show="hasEditor(configItem.editors, category)">
<h4 class="panel-title" ng-click="setSelectedCategory(category)">
{{category}}
<i class="icon icon-remove small right" ng-show="categoriesVisibility[category] === true"></i>
<i class="icon icon-add small right" ng-hide="categoriesVisibility[category] === true"></i>
</h4>
<div class="canvasdesigner-panel-container" ng-show="categoriesVisibility[category] === true">
<div class="canvasdesigner-panel-property" ng-repeat="item in configItem.editors" ng-show="item.category == category">
<h5>{{item.name}} <i class="icon icon-help-alt"></i></h5>
<div ng-include="'../preview/editors/' + item.type + '.html'"></div>
</div>
</div>
</div>
</div>
</div>
<div class="btn-group">
<a class="btn btn-success" ng-click="saveStyle()">Save Style</a>
<a class="btn btn-success dropdown-toggle" ng-click="opendropdown = !opendropdown">
<span class="caret"></span>
</a>
<ul class="dropdown-menu" ng-init="opendropdown = false" ng-show="opendropdown">
<li><a ng-click="createStyle();opendropdown = false">Create Page Style</a></li>
<li><a ng-click="deleteCanvasdesigner();opendropdown = false">Reset page style</a></li>
<li><a ng-click="makePreset();opendropdown = false">Make preset</a></li>
</ul>
</div>
</div>
<div class="float-panel"></div>
</div>
<div id="speechbubble">
<p>Styles saved and published</p>
</div>
<script src="../lib/rgrove-lazyload/lazyload.js"></script>
<script src="../js/canvasdesigner.loader.js"></script>
</body>
</html>
@@ -0,0 +1,10 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.layout">
<div class="box-slider">
<input type="radio" ng-model="item.values.layout" value="box"> Box
<input type="radio" ng-model="item.values.layout" value="wide"> Wide
<input type="radio" ng-model="item.values.layout" value="full"> Full
</div>
</div>
@@ -0,0 +1,14 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.margin">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="margin in marginList" class="border-{{margin}}" ng-class="{selected: selectedmargin.name == margin}" ng-click="setSelectedmargin(margin)"></li>
</ul>
</div>
<div class="box-slider">
<div ui-slider min="0" max="400" step="1" ng-model="selectedmargin.value"></div>
</div>
</div>
@@ -0,0 +1,14 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.padding">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="padding in paddingList" class="border-{{padding}}" ng-class="{selected: selectedpadding.name == padding}" ng-click="setSelectedpadding(padding)"></li>
</ul>
</div>
<div class="box-slider">
<div ui-slider min="0" max="400" step="1" ng-model="selectedpadding.value"></div>
</div>
</div>
@@ -0,0 +1,21 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.radius">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="radius in radiusList" ng-class="{selected: selectedradius.name == radius}" ng-click="setSelectedradius(radius)">
<span ng-show="radius == 'topleft' || radius == 'all'" class="radius-top-left"></span>
<span ng-show="radius == 'topright' || radius == 'all'" class="radius-top-right"></span>
<span ng-show="radius == 'bottomleft' || radius == 'all'" class="radius-bottom-left"></span>
<span ng-show="radius == 'bottomright' || radius == 'all'" class="radius-bottom-right"></span>
</li>
</ul>
</div>
<div class="box-slider">
<div ui-slider min="0" max="40" step="1" ng-model="selectedradius.value"></div>
</div>
</div>
@@ -0,0 +1,8 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.shadow">
<div class="box-slider">
<div ui-slider min="0" max="100" step="1" ng-model="item.values.shadow"></div>
</div>
</div>
@@ -0,0 +1,8 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.slider">
<div class="box-slider">
<div ui-slider min="{{item.min}}" max="{{item.max}}" step="1" ng-model="item.values.slider"></div>
</div>
</div>
+41
View File
@@ -0,0 +1,41 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
</system.web>
</configuration>
@@ -2,7 +2,8 @@
ng-controller="Umbraco.Dialogs.Content.EditController"
ng-show="loaded"
ng-submit="save()"
val-form-manager>
val-form-manager
class="umb-mini-editor">
<div class="umb-panel">
<div class="umb-panel-header">
@@ -12,15 +13,33 @@
</div>
<div class="umb-panel-body with-footer">
<div id="tab{{tab.id}}" ng-repeat="tab in content.tabs">
<div class="umb-pane" ng-if="!tab.hide">
<h5>{{tab.label}}</h5>
<umb-property property="property"
ng-repeat="property in tab.properties">
<umb-editor model="property"></umb-editor>
</umb-property>
</div>
</div>
<div class="umb-pane" ng-if="content">
<umb-tabs-nav
model="content.tabs"
id-suffix="-mini-editor">
</umb-tabs-nav>
<umb-tabs-content>
<umb-tab
id="tab{{tab.id}}-mini-editor"
ng-repeat="tab in content.tabs"
rel="{{tab.id}}-mini-editor">
<umb-property
property="property"
ng-repeat="property in tab.properties">
<umb-editor model="property"></umb-editor>
</umb-property>
</umb-tab>
</umb-tabs-content>
</div>
</div>
@@ -22,8 +22,8 @@
<ul class="unstyled list-icons">
<li>
<i class="icon icon-favorite"></i>
<a target="_blank" href="http://our.umbraco.org?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=our">
<localize key="help_goTo">go to</localize> our.umbraco.org
<a target="_blank" href="https://our.umbraco.com?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=our">
<localize key="help_goTo">go to</localize> our.umbraco.com
</a>
<small class="umb-detail">The friendliest community</small>
</li>
@@ -46,7 +46,7 @@
<ul class="unstyled list-icons">
<li>
<i class="icon icon-tv-old"></i>
<a target="_blank" href="http://umbraco.tv?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=tv">
<a target="_blank" href="https://umbraco.tv?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=tv">
<localize key="help_goTo">go to</localize> umbraco.tv
</a>
<small class="umb-detail"><localize key="help_theBestUmbracoVideoTutorials">The best Umbraco video tutorials</localize></small>
@@ -55,4 +55,4 @@
</div>
</div>
</div>
</div>
</div>
@@ -1,57 +1,57 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.IconPickerController">
<div class="umb-panel-header">
<div class="umb-el-wrap umb-panel-buttons">
<div class="form-search">
<div class="umb-panel-header">
<div class="umb-el-wrap umb-panel-buttons">
<div class="form-search">
<i class="icon-search"></i>
<input type="text"
style="width: 100%"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level"
placeholder="Filter..."
no-dirty-check>
localize="placeholder"
placeholder="@placeholders_filter"
no-dirty-check />
</div>
</div>
</div>
</div>
</div>
<div class="umb-panel-body with-footer">
<div class="umb-panel-body with-footer">
<div class="umb-control-group">
<select ng-model="color" class="input-block-level">
<option value="">Black</option>
<option value="color-green">Green</option>
<option value="color-yellow">Yellow</option>
<option value="color-orange">Orange</option>
<option value="color-blue">Blue</option>
<option value="color-red">Red</option>
</select>
<select ng-model="color" class="input-block-level">
<option value=""><localize key="colors_black">Black</localize></option>
<option value="color-green"><localize key="colors_green">Green</localize></option>
<option value="color-yellow"><localize key="colors_yellow">Yellow</localize></option>
<option value="color-orange"><localize key="colors_orange">Orange</localize></option>
<option value="color-blue"><localize key="colors_blue">Blue</localize></option>
<option value="color-red"><localize key="colors_red">Red</localize></option>
</select>
</div>
<umb-load-indicator ng-if="loading"></umb-load-indicator>
<div class="umb-control-group" ng-show="!loading">
<ul class="umb-iconpicker" ng-class="color" ng-show="icons">
<li class="umb-iconpicker-item" ng-repeat="icon in filtered = (icons | filter: searchTerm) track by $id(icon)">
<a href="#" title="{{icon}}" ng-click="submitClass(icon)" prevent-default>
<i class="{{icon}} large"></i>
</a>
</li>
</ul>
</div>
<ul class="umb-iconpicker" ng-class="color" ng-show="icons">
<li class="umb-iconpicker-item" ng-repeat="icon in filtered = (icons | filter: searchTerm) track by $id(icon)">
<a href="#" title="{{icon}}" ng-click="submitClass(icon)" prevent-default>
<i class="{{icon}} large"></i>
</a>
</li>
</ul>
</div>
<umb-empty-state
ng-if="filtered.length === 0"
position="center">
<localize key="defaultdialogs_noIconsFound">No icons were found.</localize>
</umb-empty-state>
</div>
<umb-empty-state ng-if="filtered.length === 0"
position="center">
<localize key="defaultdialogs_noIconsFound">No icons were found.</localize>
</umb-empty-state>
</div>
<div class="umb-panel-footer" >
<div class="umb-el-wrap umb-panel-buttons">
<div class="btn-toolbar umb-btn-toolbar pull-right">
<a href ng-click="close()" class="btn btn-link">
<localize key="general_cancel">Cancel</localize>
</a>
</div>
</div>
</div>
<div class="umb-panel-footer">
<div class="umb-el-wrap umb-panel-buttons">
<div class="btn-toolbar umb-btn-toolbar pull-right">
<a href ng-click="close()" class="btn btn-link">
<localize key="general_cancel">Cancel</localize>
</a>
</div>
</div>
</div>
</div>
@@ -1,4 +1,4 @@
<form novalidate name="insertMacroForm" ng-submit="submitForm()" ng-controller="Umbraco.Dialogs.InsertMacroController" val-form-manager>
<form novalidate name="insertMacroForm" ng-controller="Umbraco.Dialogs.InsertMacroController" val-form-manager>
<div class="umb-panel">
<div class="umb-panel-footer">
@@ -6,8 +6,8 @@
<a href class="btn btn-link" ng-click="close()">
<localize key="cancel" />
</a>
<button type="submit" class="btn btn-primary">
<localize key="buttons_select"/>
<button type="button" ng-click="submitForm()" class="btn btn-primary">
<localize key="buttons_select" />
</button>
</div>
</div>
@@ -3,7 +3,7 @@
<div class="umb-pane">
<p>
Are you sure you want to delete <strong>{{currentNode.name}}</strong> ?
<localize key="defaultdialogs_confirmdelete">Are you sure you want to delete</localize> <strong>{{currentNode.name}}</strong> ?
</p>
@@ -1,17 +1,29 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.LinkPickerController">
<div class="umb-panel-body no-header with-footer compact">
<umb-pane>
<umb-control-group label="@content_urls">
<input type="text"
localize="placeholder"
placeholder="@general_url"
class="umb-editor umb-textstring"
ng-model="target.url"
ng-disabled="target.id"
/>
</umb-control-group>
<umb-control-group label="@defaultdialogs_urlLinkPicker" class="umb-property--pull">
<input type="text"
localize="placeholder"
placeholder="@general_url"
class="umb-editor umb-textstring"
ng-model="target.url"
ng-disabled="target.id || target.udi" />
</umb-control-group>
<umb-control-group label="@content_nodeName">
<umb-control-group label="@defaultdialogs_anchorLinkPicker" class="umb-property--push">
<input type="text"
list="anchors"
localize="placeholder"
placeholder="@placeholders_anchor"
class="umb-editor umb-textstring"
ng-model="target.anchor" />
<datalist id="anchors">
<option value="{{a}}" ng-repeat="a in anchorValues"></option>
</datalist>
</umb-control-group>
<umb-control-group label="@defaultdialogs_nodeNameLinkPicker">
<input type="text"
localize="placeholder"
placeholder="@placeholders_entername"
@@ -22,9 +34,7 @@
<umb-control-group label="@content_target">
<select class="umb-editor umb-dropdown" ng-model="target.target">
<option value=""></option>
<option value="_blank">Opens the linked document in a new window or tab</option>
<option value="_top">Opens the linked document in the full body of the window</option>
<option value="_parent">Opens the linked document in the parent frame</option>
<option value="_blank"><localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize></option>
</select>
</umb-control-group>
</umb-pane>
@@ -62,9 +72,9 @@
<a href ng-click="close()" class="btn btn-link">
<localize key="general_cancel">Cancel</localize>
</a>
<a href ng-click="switchToMediaPicker()" class="btn">Link to file</a>
<a href ng-click="switchToMediaPicker()" class="btn">
<localize key="defaultdialogs_selectMedia">Select media</localize>
</a>
<button
class="btn btn-primary"
ng-click="submit(target)">
@@ -73,4 +83,4 @@
</div>
</div>
</div>
</div>
</div>
+237 -119
View File
@@ -1,135 +1,253 @@
<div ng-controller="Umbraco.Dialogs.LoginController">
<div ng-controller="Umbraco.Dialogs.LoginController">
<div id="login" class="umb-modalcolumn umb-dialog" ng-class="{'show-validation': loginForm.$invalid}" ng-cloak konami-code="activateKonamiMode()">
<div class="form">
<h1>{{greeting}}</h1>
<div ng-show="view == 'login'">
<div class="login-overlay__background-image" ng-if="backgroundImage" ng-style="{'background-image':'url(' + backgroundImage + ')'}"></div>
<p>
<span ng-show="dialogData.isTimedOut"><localize key="login_timeout">Log in below</localize>.</span>
<localize key="login_instruction">Log in below</localize>
<div class="login-overlay__logo">
<img ng-src="assets/img/application/logo.png" ng-srcset="assets/img/application/logo@2x.png 2x, assets/img/application/logo@3x.png 3x">
</div>
<div ng-show="invitedUser != null" class="umb-login-container">
<form name="inviteUserPasswordForm" novalidate="" ng-submit="inviteSavePassword()" val-form-manager>
<div class="form" ng-if="inviteStep === 1">
<h1 style="margin-bottom: 10px; text-align: left;">Hi, {{invitedUser.name}}</h1>
<p style="line-height: 1.6; margin-bottom: 25px;">
<localize key="user_userinviteWelcomeMessage">Welcome to Umbraco! Just need to get your password and avatar setup and then you're good to go</localize>
</p>
<div class="control-group" ng-class="{error: setPasswordForm.password.$invalid}">
<label>
<localize key="user_newPassword">New password</localize>
<small style="font-size: 13px;">{{invitedUserPasswordModel.passwordPolicyText}}</small>
</label>
<input type="password" ng-model="invitedUserPasswordModel.password" name="password" class="-full-width-input" umb-auto-focus required val-server-field="value" ng-minlength="{{invitedUserPasswordModel.passwordPolicies.minPasswordLength}}" />
<span class="help-inline" val-msg-for="password" val-toggle-msg="required"><localize key="user_passwordIsBlank">Your new password cannot be blank!</localize></span>
<span class="help-inline" val-msg-for="password" val-toggle-msg="minlength">Minimum {{invitedUserPasswordModel.passwordPolicies.minPasswordLength}} characters</span>
<span class="help-inline" val-msg-for="password" val-toggle-msg="valServerField"></span>
</div>
<div class="control-group" ng-class="{error: setPasswordForm.confirmPassword.$invalid}">
<label><localize key="user_confirmNewPassword">Confirm new password</localize></label>
<input type="password" ng-model="invitedUserPasswordModel.confirmPassword" name="confirmPassword" class="-full-width-input" required val-compare="password" />
<span class="help-inline" val-msg-for="confirmPassword" val-toggle-msg="required"><localize key="general_required">Required</localize></span>
<span class="help-inline" val-msg-for="confirmPassword" val-toggle-msg="valCompare"><localize key="user_passwordMismatch">The confirmed password doesn't match the new password!</localize></span>
</div>
<div class="flex justify-between items-center">
<umb-button type="submit"
button-style="success"
state="invitedUserPasswordModel.buttonState"
label="Save password">
</umb-button>
</div>
</div>
</form>
<div class="form" ng-if="inviteStep === 2">
<div class="flex justify-center items-center">
<ng-form name="avatarForm">
<umb-progress-bar style="max-width: 100px; margin-bottom: 5px;"
ng-show="avatarFile.uploadStatus === 'uploading'"
progress="{{ avatarFile.uploadProgress }}"
size="s">
</umb-progress-bar>
<div class="umb-info-local-item text-error mt3" ng-if="avatarFile.uploadStatus === 'error'">
{{ avatarFile.serverErrorMessage }}
</div>
<a class="umb-avatar-btn"
ngf-select
ng-model="avatarFile.filesHolder"
ngf-change="changeAvatar($files, $event)"
ngf-multiple="false"
ngf-pattern="{{avatarFile.acceptedFileTypes}}"
ngf-max-size="{{ avatarFile.maxFileSize }}">
<umb-avatar color="gray"
size="xl"
unknown-char="+"
img-src="{{invitedUser.avatars[3]}}"
img-srcset="{{invitedUser.avatars[4]}} 2x, {{invitedUser.avatars[4]}} 3x">
</umb-avatar>
</a>
</ng-form>
</div>
<h1 style="margin-bottom: 10px;">Upload a photo</h1>
<p style="text-align: center; margin-bottom: 25px; line-height: 1.6em;">
<localize key="user_userinviteAvatarMessage"></localize>
</p>
<div class="flex justify-center items-center">
<umb-button type="button"
button-style="success"
label="Get started"
action="getStarted()">
</umb-button>
<umb-button ng-if="!avatarFile.uploaded"
type="button"
button-style="link"
label="Skip"
action="getStarted()">
</umb-button>
</div>
</div>
<div class="external-logins" ng-if="externalLoginProviders.length > 0">
</div>
<div class="text-error" ng-repeat="error in externalLoginInfo.errors">
<div ng-show="invitedUser == null" class="umb-login-container">
<div class="form">
<h1>{{greeting}}</h1>
<div ng-show="view == 'login'">
<p>
<span ng-show="dialogData.isTimedOut"><localize key="login_timeout">Log in below</localize>.</span>
</p>
<div class="external-logins" ng-if="externalLoginProviders.length > 0">
<div class="text-error" ng-repeat="error in externalLoginInfo.errors">
<span>{{error}}</span>
</div>
<form method="POST" name="externalLoginForm" action="{{externalLoginFormAction}}">
<div ng-repeat="login in externalLoginProviders">
<button type="submit" class="btn btn-block btn-social"
ng-class="login.properties.SocialStyle"
id="{{login.authType}}" name="provider" value="{{login.authType}}"
title="Log in using your {{login.caption}} account">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
<localize key="login_signInWith">Sign in with</localize> {{login.caption}}
</button>
</div>
</form>
</div>
<form method="POST" name="loginForm" ng-submit="loginSubmit(login, password)">
<div class="control-group" ng-show="loginForm.$invalid">
<div class="text-error">{{errorMsg}}</div>
</div>
<div class="control-group" ng-class="{error: loginForm.username.$invalid}">
<label><localize key="general_username">Username</localize></label>
<input type="text" ng-model="login" name="username" class="-full-width-input" localize="placeholder" placeholder="@placeholders_usernameHint" />
</div>
<div class="control-group" ng-class="{error: loginForm.password.$invalid}">
<label><localize key="general_password">Password</localize></label>
<input type="password" ng-model="password" name="password" class="-full-width-input" localize="placeholder" placeholder="@placeholders_password" />
<div class="password-toggle">
<a href="#" prevent-default ng-click="togglePassword()">
<span class="password-text show"><localize key="login_showPassword">Show password</localize></span>
<span class="password-text hide"><localize key="login_hidePassword">Hide password</localize></span>
</a>
</div>
</div>
<div class="flex justify-between items-center">
<umb-button button-style="success"
size="m"
label-key="general_login"
state="loginStates.submitButton"
type="submit">
</umb-button>
<div ng-show="allowPasswordReset">
<a class="muted" style="text-decoration: underline;" href="#" prevent-default ng-click="showRequestPasswordReset()"><localize key="login_forgottenPassword">Forgotten password?</localize></a>
</div>
</div>
</form>
</div>
<div ng-show="view == 'request-password-reset'">
<p>
<localize key="login_forgottenPasswordInstruction">An email will be sent to the address specified with a link to reset your password</localize>
</p>
<form method="POST" name="requestPasswordResetForm" ng-submit="requestPasswordResetSubmit(email)">
<div class="control-group" ng-class="{error: requestPasswordResetForm.email.$invalid}">
<label><localize key="general_email">Email</localize></label>
<input type="email" val-email ng-model="email" name="email" class="-full-width-input" localize="placeholder" placeholder="@placeholders_email" />
</div>
<div class="control-group" ng-show="requestPasswordResetForm.$invalid">
<div class="text-error">{{errorMsg}}</div>
</div>
<div class="control-group" ng-show="showEmailResetConfirmation">
<div class="text-info">
<localize key="login_requestPasswordResetConfirmation">An email with password reset instructions will be sent to the specified address if it matched our records</localize>
</div>
</div>
<div class="flex justify-between items-center">
<button type="submit" class="btn btn-success" val-trigger-change="#login .form input"><localize key="general_submit">Submit</localize></button>
<a class="muted" href="#" prevent-default ng-click="showLogin()" style="text-decoration: underline;"><localize key="login_returnToLogin">Return to login form</localize></a>
</div>
</form>
</div>
<div ng-show="view == 'set-password'">
<p ng-hide="resetComplete">
<localize key="login_setPasswordInstruction">Please provide a new password.</localize>
</p>
<form method="POST" name="setPasswordForm" ng-submit="setPasswordSubmit(password, confirmPassword)">
<div ng-hide="resetComplete" class="control-group" ng-class="{error: setPasswordForm.password.$invalid}">
<label><localize key="user_newPassword">New password</localize></label>
<input type="password" ng-model="password" name="password" class="-full-width-input" localize="placeholder" placeholder="@placeholders_password" />
</div>
<div ng-hide="resetComplete" class="control-group" ng-class="{error: setPasswordForm.confirmPassword.$invalid}">
<label><localize key="user_confirmNewPassword">Confirm new password</localize></label>
<input type="password" ng-model="confirmPassword" name="confirmPassword" class="-full-width-input" localize="placeholder" placeholder="@placeholders_confirmPassword" />
</div>
<div ng-hide="resetComplete" class="control-group" ng-show="setPasswordForm.$invalid">
<div class="text-error">{{errorMsg}}</div>
</div>
<div class="control-group" ng-show="showSetPasswordConfirmation">
<div class="text-info">
<localize key="login_setPasswordConfirmation">Your new password has been set and you may now use it to log in.</localize>
</div>
</div>
<div class="flex justify-between items-center">
<button ng-hide="resetComplete" type="submit" class="btn btn-success" val-trigger-change="#login .form input"><localize key="general_submit">Submit</localize></button>
<a class="muted" href="#" prevent-default ng-click="showLogin()"><localize key="login_returnToLogin">Return to login form</localize></a>
</div>
</form>
</div>
<div ng-show="view == 'password-reset-code-expired'">
<div class="text-error" ng-repeat="error in resetPasswordCodeInfo.errors">
<span>{{error}}</span>
</div>
<form method="POST" name="externalLoginForm" action="{{externalLoginFormAction}}">
<div ng-repeat="login in externalLoginProviders">
<button type="submit" class="btn btn-block btn-social"
ng-class="login.properties.SocialStyle"
id="{{login.authType}}" name="provider" value="{{login.authType}}"
title="Log in using your {{login.caption}} account">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
<localize key="login_signInWith">Sign in with</localize> {{login.caption}}
</button>
</div>
</form>
<div id="hrOr">
<hr />
<div><localize key="general_or">or</localize></div>
</div>
</div>
<form method="POST" name="loginForm" ng-submit="loginSubmit(login, password)">
<div class="control-group" ng-class="{error: loginForm.username.$invalid}">
<input type="text" ng-model="login" name="username" class="input-xlarge" localize="placeholder" placeholder="@placeholders_username" />
</div>
<div class="control-group" ng-class="{error: loginForm.password.$invalid}">
<input type="password" ng-model="password" name="password" class="input-xlarge" localize="placeholder" placeholder="@placeholders_password" autocomplete="off" />
</div>
<div class="control-group" ng-show="loginForm.$invalid">
<div class="text-error">{{errorMsg}}</div>
</div>
<button type="submit" class="btn" val-trigger-change="#login .form input"><localize key="general_login">Login</localize></button>
<div class="switch-view" ng-show="allowPasswordReset">
<a class="muted" href="#" prevent-default ng-click="showRequestPasswordReset()"><localize key="login_forgottenPassword">Forgotten password?</localize></a>
</div>
</form>
</div>
<div ng-show="view == 'request-password-reset'">
<p>
<localize key="login_forgottenPasswordInstruction">An email will be sent to the address specified with a link to reset your password</localize>
</p>
<form method="POST" name="requestPasswordResetForm" ng-submit="requestPasswordResetSubmit(email)">
<div class="control-group" ng-class="{error: requestPasswordResetForm.email.$invalid}">
<input type="text" ng-model="email" name="email" class="input-xlarge" localize="placeholder" placeholder="@placeholders_email" />
</div>
<div class="control-group" ng-show="requestPasswordResetForm.$invalid">
<div class="text-error">{{errorMsg}}</div>
</div>
<div class="control-group" ng-show="showEmailResetConfirmation">
<div class="text-info">
<localize key="login_requestPasswordResetConfirmation">An email with password reset instructions will be sent to the specified address if it matched our records</localize>
</div>
</div>
<button type="submit" class="btn" val-trigger-change="#login .form input"><localize key="general_submit">Submit</localize></button>
<div class="switch-view">
<a class="muted" href="#" prevent-default ng-click="showLogin()"><localize key="login_returnToLogin">Return to login form</localize></a>
</div>
</form>
</div>
<div ng-show="view == 'set-password'">
<p ng-hide="resetComplete">
<localize key="login_setPasswordInstruction">Please provide a new password.</localize>
</p>
<form method="POST" name="setPasswordForm" ng-submit="setPasswordSubmit(password, confirmPassword)">
<div ng-hide="resetComplete" class="control-group" ng-class="{error: setPasswordForm.password.$invalid}">
<input type="password" ng-model="password" name="password" class="input-xlarge" localize="placeholder" placeholder="@placeholders_password" />
</div>
<div ng-hide="resetComplete" class="control-group" ng-class="{error: setPasswordForm.confirmPassword.$invalid}">
<input type="password" ng-model="confirmPassword" name="confirmPassword" class="input-xlarge" localize="placeholder" placeholder="@placeholders_confirmPassword" />
</div>
<div ng-hide="resetComplete" class="control-group" ng-show="setPasswordForm.$invalid">
<div class="text-error">{{errorMsg}}</div>
</div>
<div class="control-group" ng-show="showSetPasswordConfirmation">
<div class="text-info">
<localize key="login_setPasswordConfirmation">Your new password has been set and you may now use it to log in.</localize>
</div>
</div>
<button ng-hide="resetComplete" type="submit" class="btn" val-trigger-change="#login .form input"><localize key="general_submit">Submit</localize></button>
<div class="switch-view">
<a class="muted" href="#" prevent-default ng-click="showLogin()"><localize key="login_returnToLogin">Return to login form</localize></a>
</div>
</form>
</div>
<div ng-show="view == 'password-reset-code-expired'">
<div class="text-error" ng-repeat="error in resetPasswordCodeInfo.errors">
<span>{{error}}</span>
</div>
<div class="switch-view">
<a class="muted" href="#" prevent-default ng-click="showLogin()"><localize key="login_returnToLogin">Return to login form</localize></a>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -61,21 +61,23 @@
<div class="umb-panel umb-dialogs-mediapicker browser"
on-drag-leave="dragLeave()"
on-drag-end="dragLeave()"
on-drag-enter="dragEnter()"
ng-hide="target">
on-drag-leave="dragLeave()"
on-drag-end="dragLeave()"
on-drag-enter="dragEnter()"
ng-hide="target">
<div class="umb-panel-header">
<div class="umb-el-wrap umb-panel-buttons umb-mediapicker-upload">
<div class="form-search">
<i class="icon-search"></i>
<input type="text"
ng-model="searchTerm"
class="umb-search-field search-query"
placeholder="Filter...">
<div class="form-search">
<i class="icon-search"></i>
<input type="text"
ng-model="searchTerm"
class="umb-search-field search-query"
localize="placeholder"
placeholder="@placeholders_filter"
no-dirty-check />
</div>
<div class="upload-button">
@@ -96,7 +98,7 @@
<li ng-repeat="item in path">
<a href ng-click="gotoFolder(item)" prevent-default>{{item.name}}</a> /
</li>
<li>
<a href ng-hide="showFolderInput" ng-click="showFolderInput = true">
<i class="icon icon-add small"></i>
@@ -113,28 +115,26 @@
</ul>
</div>
</div>
<div class="umb-panel-body with-footer">
<umb-file-dropzone
ng-if="acceptedMediatypes.length > 0"
accepted-mediatypes="acceptedMediatypes"
hide-dropzone="{{!activeDrag && images.length > 0}}"
parent-id="{{currentFolder.id}}"
files-uploaded="onUploadComplete"
files-queued="onFilesQueue">
<umb-file-dropzone ng-if="acceptedMediatypes.length > 0"
accepted-mediatypes="acceptedMediatypes"
hide-dropzone="{{!activeDrag && images.length > 0}}"
parent-id="{{currentFolder.id}}"
files-uploaded="onUploadComplete"
files-queued="onFilesQueue">
</umb-file-dropzone>
<umb-photo-folder
min-height="105"
min-width="150"
max-height="250"
ideal-items-per-row="3"
on-click="clickHandler"
ng-model="images"
images-only="{{onlyImages}}"
filter-by="searchTerm" />
<umb-photo-folder min-height="105"
min-width="150"
max-height="250"
ideal-items-per-row="3"
on-click="clickHandler"
ng-model="images"
images-only="{{onlyImages}}"
filter-by="searchTerm" />
</div>
@@ -158,4 +158,4 @@
</div>
</div>
</form>
@@ -1,7 +1,7 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.MemberGroupPickerController">
<div class="umb-panel-body with-footer no-header">
<div>
<umb-tree section="member"
treealias="memberGroups"
@@ -14,21 +14,21 @@
</div>
</div>
<div class="umb-panel-footer" >
<div class="umb-el-wrap umb-panel-buttons">
<div class="btn-toolbar umb-btn-toolbar pull-right">
<div class="umb-panel-footer">
<div class="umb-el-wrap umb-panel-buttons">
<div class="btn-toolbar umb-btn-toolbar pull-right">
<a href ng-click="close()" class="btn btn-link">
<localize key="general_cancel">Cancel</localize>
</a>
<a href ng-click="close()" class="btn btn-link">
<localize key="general_cancel">Cancel</localize>
</a>
<button class="btn btn-primary"
ng-click="submit(dialogData.selection)">
<localize key="buttons_select">Select</localize>
({{dialogData.selection.length}})
</button>
<button class="btn btn-primary"
ng-click="submit(dialogData.selection)">
<localize key="buttons_select">Select</localize>
({{dialogData.selection.length}})
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -1,17 +1,17 @@
<form ng-controller="Umbraco.Dialogs.RteEmbedController" val-form-manager>
<form ng-controller="Umbraco.Dialogs.RteEmbedController" val-form-manager>
<div class="umb-panel">
<div class="umb-panel-body no-header with-footer">
<umb-pane>
<umb-control-group label="Url">
<umb-control-group label="@general_url">
<input id="url" class="umb-editor input-block-level" type="text" ng-model="form.url" ng-keyup="$event.keyCode == 13 ? showPreview() : null" required />
<input type="button" ng-click="showPreview()" class="btn" value="Retrieve" />
<input type="button" ng-click="showPreview()" class="btn" localize="value" value="@general_retrieve" />
</umb-control-group>
<div ng-show="form.supportsDimensions">
<umb-control-group label="Size">
<umb-control-group label="@general_size">
<input type="text" ng-model="form.width" on-blur="changeSize('width')" style="width:50px"/> x <input type="text" ng-model="form.height" on-blur="changeSize('height')" style="width:50px"/>
<label for="constrain" style="display:inline">Constrain:</label>
<label for="constrain" style="display:inline"><localize key="general_constrain">Constrain</localize>:</label>
<input id="constrain" type="checkbox" ng-model="form.constrain" style="margin-bottom: 10px;"/>
</umb-control-group>
</div>
@@ -17,7 +17,7 @@
<div class="umb-panel">
<div class="umb-panel-header">
<h1 class="headline" style="margin: 10px 0 0 0">Build a query</h1>
<h1 class="headline" style="margin: 10px 0 0 0"><localize key="template_buildQuery">Build a query</localize></h1>
</div>
<div class="umb-panel-body with-footer umb-querybuilder">
@@ -149,10 +149,10 @@
<localize key="general_close">Close</localize>
</a>
<a href ng-click="submit(result.queryExpression)" class="btn btn-primary">Insert</a>
<a href ng-click="submit(result.queryExpression)" class="btn btn-primary"><localize key="general_insert">Insert</localize></a>
</div>
</div>
</div>
</div>
</div>
</form>
</form>
@@ -29,7 +29,7 @@
<a href ng-click="close()" class="btn btn-link">
<localize key="general_close">Close</localize>
</a>
<a href ng-click="submit(section)" class="btn btn-primary">Insert</a>
<a href ng-click="submit(section)" class="btn btn-primary"><localize key="general_insert">Insert</localize></a>
</div>
</div>
</div>
@@ -24,7 +24,7 @@
<h5><localize key="user_yourProfile" /></h5>
<a href="#/users/framed/%252Fumbraco%252Fusers%252Fedituser.aspx%253Fid%253D{{user.id}}"
<a href="#/users/users/user/{{user.id}}"
class="btn btn-primary"
ng-click="close()"
ng-if="canEditProfile">
@@ -42,7 +42,7 @@
<div class="umb-pane external-logins" ng-if="externalLoginProviders.length > 0 && !showPasswordFields">
<h5>External login providers</h5>
<h5><localize key="defaultdialogs_externalLoginProviders">External login providers</localize></h5>
<div ng-repeat="login in externalLoginProviders">
@@ -55,7 +55,7 @@
onclick="document.forms.oauthloginform.submit();">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
Link your {{login.caption}} account
<localize key="defaultdialogs_linkYour">Link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
</button>
</form>
@@ -67,7 +67,7 @@
name="provider"
value="{{login.authType}}">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
Un-link your {{login.caption}} account
<localize key="defaultdialogs_unLinkYour">Un-link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
</button>
</div>
@@ -1,4 +1,4 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.YsodController">
<div class="umb-panel" ng-controller="Umbraco.Dialogs.YsodController">
<div class="umb-panel-body with-footer no-header">
@@ -0,0 +1,131 @@
<umb-drawer-view ng-controller="Umbraco.Drawers.Help as vm">
<umb-drawer-header
title="{{ vm.title }}"
description="{{ vm.subtitle }}">
</umb-drawer-header>
<umb-drawer-content>
<!-- Tours -->
<div class="umb-help-section" ng-if="vm.tours" data-element="help-tours">
<h5 class="umb-help-section__title">Tours</h5>
<div ng-repeat="tourGroup in vm.tours | orderBy:'groupOrder'">
<div class="umb-help-list">
<a href="" class="umb-help-list-item umb-help-list-item__content flex items-center justify-between" ng-click="tourGroup.open = !tourGroup.open">
<h5 class="umb-help-list-item__group-title">
<i ng-class="{'icon-navigation-right': !tourGroup.open, 'icon-navigation-down': tourGroup.open}"></i>
<span ng-if="tourGroup.group !== 'undefined'">{{tourGroup.group}}</span>
<span ng-if="tourGroup.group === 'undefined'">Other</span>
</h5>
<umb-progress-circle
percentage="{{tourGroup.completedPercentage}}"
size="40">
</umb-progress-circle>
</a>
<div ng-if="tourGroup.open">
<div data-element="tour-{{tour.alias}}" class="umb-help-list-item" ng-repeat="tour in tourGroup.tours">
<div class="umb-help-list-item__content justify-between">
<div class="flex items-center">
<div ng-if="!tour.completed" class="umb-number-badge umb-number-badge--xs umb-help-list-item__icon">{{ $index + 1 }}</div>
<umb-checkmark ng-if="tour.completed" size="xs" checked="tour.completed" class="umb-help-list-item__icon"></umb-checkmark>
<span ng-class="{'strike': tour.completed}" class="umb-help-list-item__title">{{ tour.name }}</span>
</div>
<div>
<umb-button ng-if="!tour.completed && vm.showTourButton($index, tourGroup)" button-style="primary" size="xxs" type="button" label="Start" action="vm.startTour(tour)"></umb-button>
<umb-button ng-if="tour.completed" size="xxs" type="button" label="Rerun" action="vm.startTour(tour)"></umb-button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Show in custom help dashboard -->
<div class="umb-help-section" data-element="help-custom-dashboard" ng-if="vm.customDashboard.length > 0">
<div ng-repeat="tab in vm.customDashboard">
<div ng-repeat="property in tab.properties">
<div>
<h5 ng-if="property.caption">{{property.caption}}</h5>
<div ng-include="property.path"></div>
</div>
</div>
</div>
</div>
<!-- Help Content -->
<div class="umb-help-section" data-element="help-articles" ng-if="vm.topics.length > 0">
<h5 class="umb-help-section__title">Articles</h5>
<ul class="umb-help-list">
<li class="umb-help-list-item" ng-repeat="topic in vm.topics track by $index">
<a class="umb-help-list-item__content" data-element="help-article-{{topic.name}}" target="_blank" ng-href="{{topic.url}}?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=tv">
<span>
<span class="umb-help-list-item__title">
<span class="bold">{{topic.name}}</span>
<span class="umb-help-list-item__open-icon icon-out"></span>
</span>
<span class="umb-help-list-item__description">{{topic.description}}</span>
</span>
</a>
</li>
</ul>
</div>
<!-- Umbraco tv content -->
<div class="umb-help-section" data-element="help-videos" ng-if="vm.hasAccessToSettings">
<h5 class="umb-help-section__title" ng-if="vm.videos.length > 0">Videos</h5>
<ul class="umb-help-list">
<li class="umb-help-list-item" ng-repeat="video in vm.videos track by $index">
<a class="umb-help-list-item__content" data-element="help-article-{{video.title}}" target="_blank" ng-href="{{video.link}}?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=tv">
<i class="umb-help-list-item__icon icon-tv-old"></i>
<span class="umb-help-list-item__title">{{video.title}}</span>
<i class="umb-help-list-item__open-icon icon-out"></i>
</a>
</li>
</ul>
</div>
<!-- Links -->
<div class="umb-help-section" data-element="help-links" ng-if="vm.hasAccessToSettings">
<a data-element="help-link-umbraco-tv" class="umb-help-badge" target="_blank" href="https://umbraco.tv?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=tv">
<i class="umb-help-badge__icon icon-tv-old"></i>
<div class="umb-help-badge__title">Visit umbraco.tv</div>
<small>
<localize key="help_theBestUmbracoVideoTutorials">The best Umbraco video tutorials</localize>
</small>
</a>
<a data-element="help-link-our-umbraco" class="umb-help-badge" target="_blank" href="https://our.umbraco.com?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=our">
<i class="umb-help-badge__icon icon-favorite"></i>
<div class="umb-help-badge__title">Visit our.umbraco.com</div>
<small>
<localize key="defaultdialogs_theFriendliestCommunity">The friendliest community</localize>
</small>
</a>
</div>
</umb-drawer-content>
<umb-drawer-footer>
<div class="flex justify-end">
<umb-button
alias="close"
type="button"
button-style="link"
label="Close"
action="vm.closeDrawer()">
</umb-button>
</div>
</umb-drawer-footer>
</umb-drawer-view>
+1 -1
View File
@@ -1,3 +1,3 @@
<div ng-controller="Umbraco.LoginController">
<div ng-controller="Umbraco.LoginController">
</div>
@@ -2,6 +2,6 @@
<h4><localize key="prompt_unsavedChanges">You have unsaved changes</localize></h4>
<p><localize key="prompt_unsavedChangesWarning">Are you sure you want to navigate away from this page? - you have unsaved changes</localize></p>
<button class="btn btn-warning" ng-click="discard(notification)"><localize key="prompt_discardChanges">Discard changes</localize></button>
<button class="btn" ng-click="stay(notification)" umb-auto-focus><localize key="prompt_stay">Stay</localize></button>
</div>
<button class="btn" ng-click="discard(notification)"><localize key="prompt_discardChanges">Discard changes</localize></button>
<button class="btn btn-success" ng-click="stay(notification)" umb-auto-focus><localize key="prompt_stay">Stay</localize></button>
</div>
@@ -0,0 +1,6 @@
<div ng-controller="Umbraco.Notifications.ConfirmUnpublishController">
<h4><localize key="general_areyousure">Are you sure?</localize></h4>
<p><localize key="prompt_confirmUnpublish">Unpublishing will remove this page and all its descendants from the site</localize></p>
<button class="btn btn-warning" ng-click="confirm(notification, true)"><localize key="actions_unpublish">Unpublish</localize></button>
<button class="btn btn-default" ng-click="confirm(notification, false)" umb-auto-focus><localize key="general_cancel">Cancel</localize></button>
</div>
@@ -1,34 +1,48 @@
<div ng-controller="Umbraco.Overlays.TreePickerController" ng-init="init('content')">
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="content">
</umb-tree-search-box>
</div>
<div ng-hide="miniListView">
<umb-tree-search-results
ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="content">
</umb-tree-search-box>
</div>
<div ng-hide="searchInfo.showSearch" ng-animate="'tree-fade-out'">
<umb-tree
section="content"
treealias="content"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
<umb-tree-search-results
ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
</div>
<div ng-hide="searchInfo.showSearch" ng-animate="'tree-fade-out'">
<umb-tree
section="content"
treealias="content"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablelistviewexpand="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
</div>
<umb-mini-list-view
ng-if="miniListView"
node="miniListView"
entity-type="{{entityType}}"
start-node-id="model.startNodeId"
on-select="selectListViewNode(node)"
on-close="closeMiniListView()">
</umb-mini-list-view>
</div>
@@ -7,30 +7,33 @@
style="width: 100%"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus>
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
no-dirty-check />
</div>
</div>
<div class="umb-control-group">
<small><localize key="contentTypeEditor_compositionsDescription"></localize></small>
<localize key="contentTypeEditor_compositionsDescription"></localize>
</div>
<umb-empty-state
ng-if="model.availableCompositeContentTypes.length === 0 && model.totalContentTypes <= 1"
position="center">
<localize key="contentTypeEditor_noAvailableCompositions"></localize>
<umb-empty-state ng-if="model.availableCompositeContentTypes.length === 0 && model.totalContentTypes <= 1"
position="center">
<localize key="contentTypeEditor_noAvailableCompositions"></localize>
</umb-empty-state>
<umb-empty-state
ng-if="model.availableCompositeContentTypes.length === 0 && model.totalContentTypes > 1"
position="center">
<localize key="contentTypeEditor_compositionInUse"></localize>
<umb-empty-state ng-if="model.availableCompositeContentTypes.length === 0 && model.totalContentTypes > 1">
<localize key="contentTypeEditor_compositionInUse"></localize>
</umb-empty-state>
<div ng-if="model.availableCompositeContentTypes.length === 0 && model.totalContentTypes > 1 && model.whereCompositionUsed.length > 0">
<h5><localize key="contentTypeEditor_compositionUsageHeading"></localize></h5>
<p><localize key="contentTypeEditor_compositionUsageSpecification"></localize></p>
<ul class="umb-checkbox-list">
<li class="umb-checkbox-list__item" ng-repeat="contentTypeEntity in model.whereCompositionUsed"><a ng-click="vm.openContentType(contentTypeEntity.contentType, model.section)"><i class="{{contentTypeEntity.contentType.icon}}"></i>&nbsp;{{contentTypeEntity.contentType.name}}</a></li>
</ul>
</div>
<ul class="umb-checkbox-list">
<li class="umb-checkbox-list__item"
ng-repeat="compositeContentType in model.availableCompositeContentTypes | filter:searchTerm"
ng-class="{'-disabled': compositeContentType.allowed===false || compositeContentType.inherited, '-selected': vm.isSelected(compositeContentType.contentType.alias)}">
@@ -41,7 +44,7 @@
checklist-model="model.compositeContentTypes"
checklist-value="compositeContentType.contentType.alias"
ng-change="model.selectCompositeContentType(compositeContentType.contentType)"
ng-disabled="compositeContentType.allowed===false || compositeContentType.inherited"/>
ng-disabled="compositeContentType.allowed===false || compositeContentType.inherited" />
</div>
<label for="umb-overlay-comp-{{compositeContentType.contentType.key}}" class="umb-checkbox-list__item-text" ng-class="{'-faded': compositeContentType.allowed===false}">
@@ -52,4 +55,4 @@
</li>
</ul>
</div>
</div>
@@ -1,117 +1,103 @@
<div class="umb-overlay-body" ng-controller="Umbraco.Overlays.EditorPickerOverlay as vm">
<!-- FILTER -->
<div class="umb-control-group -no-border">
<div class="form-search">
<i class="icon-search"></i>
<input type="text"
style="width: 100%"
ng-change="vm.filterItems()"
ng-model="vm.searchTerm"
class="umb-search-field search-query search-input input-block-level"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus>
</div>
</div>
<umb-load-indicator ng-if="vm.loading"></umb-load-indicator>
<!-- TABS -->
<div ng-if="vm.showTabs">
<umb-tabs-nav model="vm.tabs"></umb-tabs-nav>
<umb-tabs-content>
<umb-tab id="tab{{tab.id}}" ng-repeat="tab in vm.tabs" rel="{{tab.id}}">
<div ng-if="tab.alias==='Default'">
<div ng-repeat="(key,value) in tab.typesAndEditors">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="systemDataType in value | orderBy:'name'"
ng-mouseover="vm.showDetailsOverlay(systemDataType)"
ng-click="vm.pickEditor(systemDataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ systemDataType.name }}">
<i class="{{ systemDataType.icon }}" ng-class="{'icon-autofill': systemDataType.icon == null}"></i>
{{ systemDataType.name }}
</a>
</li>
</ul>
</div>
</div>
<div ng-if="tab.alias==='Reuse'">
<div ng-repeat="(key,value) in tab.userConfigured">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="dataType in value | orderBy:'name'"
ng-mouseover="vm.showDetailsOverlay(dataType)"
ng-click="vm.pickDataType(dataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ dataType.name }}">
<i class="{{ dataType.icon }}" ng-class="{'icon-autofill': dataType.icon == null}"></i>
{{ dataType.name }}
</a>
</li>
</ul>
</div>
</div>
</umb-tab>
</umb-tabs-content>
</div>
<!-- FILTER RESULTS -->
<div ng-if="vm.showFilterResult">
<h5 class="-border-bottom -black"><localize key="contentTypeEditor_reuse"></localize></h5>
<div ng-repeat="(key,value) in vm.userConfigured">
<div ng-if="(value | filter:vm.searchTerm).length > 0">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="dataType in value | orderBy:'name' | filter: vm.searchTerm"
ng-mouseover="vm.showDetailsOverlay(dataType)"
ng-click="vm.pickDataType(dataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ dataType.name }}">
<i class="{{ dataType.icon }}" ng-class="{'icon-autofill': dataType.icon == null}"></i>
{{ dataType.name }}
</a>
</li>
</ul>
</div>
</div>
<h5 class="-border-bottom -black"><localize key="contentTypeEditor_availableEditors"></localize></h5>
<div ng-repeat="(key,value) in vm.typesAndEditors">
<div ng-if="(value | filter:vm.searchTerm).length > 0">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="systemDataType in value | orderBy:'name' | filter: vm.searchTerm"
ng-mouseover="vm.showDetailsOverlay(systemDataType)"
ng-click="vm.pickEditor(systemDataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ systemDataType.name }}">
<i class="{{ systemDataType.icon }}" ng-class="{'icon-autofill': systemDataType.icon == null}"></i>
{{ systemDataType.name }}
</a>
</li>
</ul>
</div>
</div>
</div>
<umb-overlay
ng-if="vm.editorSettingsOverlay.show"
model="vm.editorSettingsOverlay"
position="right"
view="vm.editorSettingsOverlay.view">
</umb-overlay>
<!-- FILTER -->
<div class="umb-control-group -no-border">
<div class="form-search">
<i class="icon-search"></i>
<input type="text"
style="width: 100%"
ng-change="vm.filterItems()"
ng-model="vm.searchTerm"
class="umb-search-field search-query search-input input-block-level"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
no-dirty-check />
</div>
</div>
<umb-load-indicator ng-if="vm.loading"></umb-load-indicator>
<!-- TABS -->
<div ng-if="vm.showTabs">
<umb-tabs-nav model="vm.tabs"></umb-tabs-nav>
<umb-tabs-content>
<umb-tab id="tab{{tab.id}}" ng-repeat="tab in vm.tabs" rel="{{tab.id}}">
<div ng-if="tab.alias==='Default'">
<div ng-repeat="(key,value) in tab.typesAndEditors">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="systemDataType in value | orderBy:'name'"
data-element="editor-{{systemDataType.name}}"
ng-mouseover="vm.showDetailsOverlay(systemDataType)"
ng-click="vm.pickEditor(systemDataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ systemDataType.name }}">
<i class="{{ systemDataType.icon }}" ng-class="{'icon-autofill': systemDataType.icon == null}"></i>
{{ systemDataType.name }}
</a>
</li>
</ul>
</div>
</div>
<div ng-if="tab.alias==='Reuse'">
<div ng-repeat="(key,value) in tab.userConfigured">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="dataType in value | orderBy:'name'"
data-element="editor-{{dataType.name}}"
ng-mouseover="vm.showDetailsOverlay(dataType)"
ng-click="vm.pickDataType(dataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ dataType.name }}">
<i class="{{ dataType.icon }}" ng-class="{'icon-autofill': dataType.icon == null}"></i>
{{ dataType.name }}
</a>
</li>
</ul>
</div>
</div>
</umb-tab>
</umb-tabs-content>
</div>
<!-- FILTER RESULTS -->
<div ng-if="vm.showFilterResult">
<h5 class="-border-bottom -black"><localize key="contentTypeEditor_reuse"></localize></h5>
<div ng-repeat="(key,value) in vm.userConfigured">
<div ng-if="(value | filter:vm.searchTerm).length > 0">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="dataType in value | orderBy:'name' | filter: vm.searchTerm"
ng-mouseover="vm.showDetailsOverlay(dataType)"
ng-click="vm.pickDataType(dataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ dataType.name }}">
<i class="{{ dataType.icon }}" ng-class="{'icon-autofill': dataType.icon == null}"></i>
{{ dataType.name }}
</a>
</li>
</ul>
</div>
</div>
<h5 class="-border-bottom -black"><localize key="contentTypeEditor_availableEditors"></localize></h5>
<div ng-repeat="(key,value) in vm.typesAndEditors">
<div ng-if="(value | filter:vm.searchTerm).length > 0">
<h5>{{key}}</h5>
<ul class="umb-card-grid" ng-mouseleave="vm.hideDetailsOverlay()">
<li ng-repeat="systemDataType in value | orderBy:'name' | filter: vm.searchTerm"
ng-mouseover="vm.showDetailsOverlay(systemDataType)"
ng-click="vm.pickEditor(systemDataType)"
class="-four-in-row">
<a class="umb-card-grid-item" href="" title="{{ systemDataType.name }}">
<i class="{{ systemDataType.icon }}" ng-class="{'icon-autofill': systemDataType.icon == null}"></i>
{{ systemDataType.name }}
</a>
</li>
</ul>
</div>
</div>
</div>
<umb-overlay ng-if="vm.editorSettingsOverlay.show"
data-element="overlay-editor-settings"
model="vm.editorSettingsOverlay"
position="right"
view="vm.editorSettingsOverlay.view">
</umb-overlay>
</div>
@@ -1,21 +1,22 @@
<div class="umb-control-group" ng-if="model.dataType.id !== 0">
<i class="icon-alert red"></i>
<strong class="red"><localize key="contentTypeEditor_allDocumentTypes"></localize></strong> using this editor will get updated with the new settings.
<div>
<div class="umb-control-group" ng-if="model.dataType.id !== 0">
<i class="icon-alert red"></i>
<strong class="red"><localize key="contentTypeEditor_allDocumentTypes"></localize></strong> using this editor will get updated with the new settings.
</div>
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<div class="controls">
<input type="text" ng-model="model.dataType.name" class="umb-editor" umb-auto-focus focus-on-filled="true" required />
</div>
</div>
</div>
<h5><localize key="contentTypeEditor_configuration"></localize></h5>
<umb-property property="preValue" ng-repeat="preValue in model.dataType.preValues">
<umb-editor model="preValue" is-pre-value="true"></umb-editor>
</umb-property>
</div>
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<label class="control-label" for="dataTypeName">
<localize key="name"></localize>
</label>
<div class="controls">
<input type="text" ng-model="model.dataType.name" class="umb-editor" umb-auto-focus focus-on-filled="true" required />
</div>
</div>
</div>
<h5><localize key="contentTypeEditor_configuration"></localize></h5>
<umb-property property="preValue" ng-repeat="preValue in model.dataType.preValues">
<umb-editor model="preValue" is-pre-value="true"></umb-editor>
</umb-property>
@@ -1,8 +1,9 @@
<div class="content-type-editor-dialog edit-property-settings" ng-controller="Umbraco.Overlay.PropertySettingsOverlay as vm">
<div class="umb-control-group">
<div class="umb-control-group" ng-if="!model.property.locked">
<div class="control-group">
<textarea class="editor-label"
data-element="property-name"
name="propertyLabel"
ng-model="model.property.label"
localize="placeholder"
@@ -22,6 +23,7 @@
<div class="umb-control-group control-group">
<textarea
data-element="property-description"
class="editor-description"
ng-model="model.property.description"
localize="placeholder"
@@ -31,9 +33,9 @@
</textarea>
</div>
<div class="editor-wrapper umb-control-group control-group" ng-model="model.property.editor" val-require-component>
<div class="editor-wrapper umb-control-group control-group" ng-model="model.property.editor" val-require-component ng-if="!model.property.locked">
<a href="" ng-if="!model.property.editor" class="editor-placeholder" hotkey="alt+shift+e" ng-click="vm.openEditorPickerOverlay(model.property)">
<a data-element="editor-add" href="" ng-if="!model.property.editor" class="editor-placeholder" hotkey="alt+shift+e" ng-click="vm.openEditorPickerOverlay(model.property)">
<localize key="shortcuts_addEditor"></localize>
</a>
@@ -59,7 +61,7 @@
</div>
<div class="umb-control-group clearfix">
<div class="umb-control-group clearfix" ng-if="!model.property.locked">
<h5><localize key="validation_validation"></localize></h5>
@@ -69,12 +71,13 @@
</label>
<select class="umb-dropdown" ng-options="validationType.name for validationType in vm.validationTypes" ng-model="vm.selectedValidationType" ng-change="vm.changeValidationType(vm.selectedValidationType)">
<option value="">Validation</option>
<option value=""><localize key="validation_validation">Validation</localize></option>
</select>
<textarea
class="editor-validation-pattern"
placeholder="Enter a regular expression"
localize="placeholder"
placeholder="@validation_validationRegExp"
ng-model="model.property.validation.pattern"
ng-change="vm.changeValidationPattern()"
ng-if="vm.showValidationPattern"
@@ -87,21 +90,30 @@
<div class="umb-control-group clearfix" ng-if="model.contentType === 'memberType'">
<h5><localize key="general_rights"></localize></h5>
<h5><localize key="general_options"></localize></h5>
<label class="checkbox no-indent">
<input type="checkbox" ng-model="model.property.showOnMemberProfile">
<localize key="contentTypeEditor_showOnMemberProfile"></localize>
<input type="checkbox" ng-model="model.property.showOnMemberProfile">
<localize key="contentTypeEditor_showOnMemberProfile"></localize>
<small><localize key="contentTypeEditor_showOnMemberProfileDescription"></localize></small>
</label>
<label class="checkbox no-indent">
<input type="checkbox" ng-model="model.property.memberCanEdit">
<localize key="contentTypeEditor_memberCanEdit"></localize>
</label>
<label class="checkbox no-indent">
<input type="checkbox" ng-model="model.property.memberCanEdit">
<localize key="contentTypeEditor_memberCanEdit"></localize>
<small><localize key="contentTypeEditor_memberCanEditDescription"></localize></small>
</label>
<label ng-if="vm.showSensitiveData" class="checkbox no-indent">
<input type="checkbox" ng-model="model.property.isSensitiveData">
<localize key="contentTypeEditor_isSensitiveData"></localize>
<small><localize key="contentTypeEditor_isSensitiveDataDescription"></localize></small>
</label>
</div>
<umb-overlay
data-element="overlay-editor-picker"
ng-if="vm.editorPickerOverlay.show"
model="vm.editorPickerOverlay"
position="right"
@@ -109,6 +121,7 @@
</umb-overlay>
<umb-overlay
data-element="overlay-editor-settings"
ng-if="vm.editorSettingsOverlay.show"
model="vm.editorSettingsOverlay"
position="right"
@@ -1,34 +1,47 @@
<div ng-controller="Umbraco.Overlays.CopyOverlay as vm">
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="vm.hideSearch"
search-callback="vm.onSearchResults"
search-from-id="{{vm.searchInfo.searchFromId}}"
search-from-name="{{vm.searchInfo.searchFromName}}"
show-search="{{vm.searchInfo.showSearch}}"
section="{{model.section}}">
</umb-tree-search-box>
</div>
<div ng-hide="miniListView">
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="vm.hideSearch"
search-callback="vm.onSearchResults"
search-from-id="{{vm.searchInfo.searchFromId}}"
search-from-name="{{vm.searchInfo.searchFromName}}"
show-search="{{vm.searchInfo.showSearch}}"
section="{{model.section}}">
</umb-tree-search-box>
</div>
<div class="umb-control-group" ng-show="vm.searchInfo.showSearch">
<umb-tree-search-results
ng-if="vm.searchInfo.showSearch"
results="vm.searchInfo.results"
select-result-callback="vm.selectResult">
</umb-tree-search-results>
</div>
<div class="umb-control-group" ng-show="vm.searchInfo.showSearch">
<umb-tree-search-results
ng-if="vm.searchInfo.showSearch"
results="vm.searchInfo.results"
select-result-callback="vm.selectResult">
</umb-tree-search-results>
</div>
<div class="umb-control-group -no-border" ng-hide="vm.searchInfo.showSearch">
<umb-tree
section="{{model.section}}"
hideheader="false"
hideoptions="true"
isdialog="true"
eventhandler="dialogTreeEventHandler"
enablelistviewexpand="true"
enablecheckboxes="true">
</umb-tree>
</div>
<div class="umb-control-group -no-border" ng-hide="vm.searchInfo.showSearch">
<umb-tree
section="{{model.section}}"
hideheader="false"
hideoptions="true"
isdialog="true"
eventhandler="dialogTreeEventHandler"
enablecheckboxes="true">
</umb-tree>
</div>
<div ng-if="miniListView" class="umb-control-group">
<umb-mini-list-view
node="miniListView"
entity-type="{{entityType}}"
on-select="selectListViewNode(node)"
on-close="closeMiniListView()">
</umb-mini-list-view>
</div>
<div class="umb-control-group -no-border">
<label>
@@ -1,8 +1,8 @@
<form ng-controller="Umbraco.Overlays.EmbedOverlay as vm">
<umb-control-group label="Url">
<umb-control-group label="@general_url">
<input id="url" class="umb-editor input-block-level" type="text" style="margin-bottom: 10px;" ng-model="model.embed.url" ng-keyup="$event.keyCode == 13 ? vm.showPreview() : null" required />
<input type="button" ng-click="vm.showPreview()" class="btn" value="Retrieve" />
<input type="button" ng-click="vm.showPreview()" class="btn" value="@general_retrieve" localize="value" />
</umb-control-group>
<umb-control-group>
@@ -11,16 +11,16 @@
</umb-control-group>
<div ng-show="model.embed.supportsDimensions">
<umb-control-group label="Width">
<input type="text" ng-model="model.embed.width" on-blur="vm.changeSize('width')" />
<umb-control-group label="@general_width">
<input type="number" pattern="[0-9]*" min="0" ng-model="model.embed.width" on-blur="vm.changeSize('width')" />
</umb-control-group>
<umb-control-group label="Height">
<input type="text" ng-model="model.embed.height" on-blur="vm.changeSize('height')" />
<umb-control-group label="@general_height">
<input type="number" pattern="[0-9]*" min="0" ng-model="model.embed.height" on-blur="vm.changeSize('height')" />
</umb-control-group>
<umb-control-group label="Constrain:">
<input id="constrain" type="checkbox" ng-model="model.embed.constrain" />
<umb-control-group label="@general_constrain">
<input id="constrain" type="checkbox" ng-model="model.embed.constrain" />
</umb-control-group>
</div>
@@ -15,8 +15,8 @@
<ul class="unstyled list-icons">
<li>
<i class="icon icon-favorite"></i>
<a target="_blank" href="http://our.umbraco.org?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=our">
<localize key="help_goTo">go to</localize> our.umbraco.org
<a target="_blank" href="https://our.umbraco.com?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=our">
<localize key="help_goTo">go to</localize> our.umbraco.com
</a>
<small class="umb-detail">
<localize key="defaultdialogs_theFriendliestCommunity">The friendliest community</localize>
@@ -1,3 +1,5 @@
<div ng-controller="Umbraco.Overlays.IconPickerOverlay">
<div class="umb-control-group">
@@ -10,38 +12,19 @@
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
no-dirty-check>
no-dirty-check />
</div>
</div>
<div class="umb-control-group">
<select ng-model="color" class="input-block-level">
<option value="">
<localize key="color_black">Black</localize>
</option>
<option value="color-green">
<localize key="color_green">Green</localize>
</option>
<option value="color-yellow">
<localize key="color_yellow">Yellow</localize>
</option>
<option value="color-orange">
<localize key="color_orange">Orange</localize>
</option>
<option value="color-blue">
<localize key="color_blue">Blue</localize>
</option>
<option value="color-red">
<localize key="color_red">Red</localize>
</option>
</select>
<umb-color-swatches colors="colors" selected-color="color" size="s"></umb-color-swatches>
</div>
<umb-load-indicator ng-if="loading"></umb-load-indicator>
<div class="umb-control-group" ng-show="!loading && filtered.length > 0 ">
<ul class="umb-iconpicker" ng-class="color" ng-show="icons">
<li class="umb-iconpicker-item" ng-repeat="icon in filtered = (icons | filter: searchTerm) track by $id(icon)">
<li class="umb-iconpicker-item" ng-class="{'-selected': icon == model.icon}" ng-repeat="icon in filtered = (icons | filter: searchTerm) track by $id(icon)">
<a href="#" title="{{icon}}" ng-click="selectIcon(icon, color)" prevent-default>
<i class="{{icon}} large"></i>
</a>
@@ -0,0 +1,46 @@
<div ng-controller="Umbraco.Overlays.InsertOverlay as vm">
<div class="umb-insert-code-boxes">
<div ng-if="model.allowedTypes.umbracoField" class="umb-insert-code-box" ng-click="vm.openPageFieldOverlay()">
<div class="umb-insert-code-box__title"><localize key="template_insertPageField" /></div>
<div class="umb-insert-code-box__description"><localize key="template_insertPageFieldDesc" /></div>
</div>
<div ng-if="model.allowedTypes.partial" class="umb-insert-code-box" ng-click="vm.openPartialOverlay()">
<div class="umb-insert-code-box__title"><localize key="template_insertPartialView" /></div>
<div class="umb-insert-code-box__description">
<localize key="template_insertPartialViewDesc" />
</div>
</div>
<div ng-if="model.allowedTypes.macro" class="umb-insert-code-box" ng-click="vm.openMacroPicker()">
<div class="umb-insert-code-box__title"><localize key="template_insertMacro" /></div>
<div class="umb-insert-code-box__description">
<localize key="template_insertMacroDesc" />
</div>
</div>
<div ng-if="model.allowedTypes.dictionary" class="umb-insert-code-box" ng-click="vm.openDictionaryItemOverlay()">
<div class="umb-insert-code-box__title"><localize key="template_insertDictionaryItem" /></div>
<div class="umb-insert-code-box__description"><localize key="template_insertDictionaryItemDesc" /></div>
</div>
</div>
<umb-overlay ng-if="vm.macroPickerOverlay.show"
model="vm.macroPickerOverlay"
view="vm.macroPickerOverlay.view"
position="right">
</umb-overlay>
<umb-overlay ng-if="vm.pageFieldOverlay.show"
model="vm.pageFieldOverlay"
position="right"
view="vm.pageFieldOverlay.view">
</umb-overlay>
<umb-overlay ng-if="vm.dictionaryItemOverlay.show"
model="vm.dictionaryItemOverlay"
position="right"
view="vm.dictionaryItemOverlay.view">
</umb-overlay>
<umb-overlay ng-if="vm.partialItemOverlay.show"
model="vm.partialItemOverlay"
view="vm.partialItemOverlay.view"
position="right">
</umb-overlay>
</div>
@@ -0,0 +1,184 @@
<div ng-controller="Umbraco.Overlays.InsertFieldController as vm">
<!-- select field -->
<div class="control-group umb-control-group -no-border">
<div class="umb-el-wrap">
<label class="control-label" for="chooseField"><localize key="templateEditor_chooseField">Choose field</localize></label>
<div class="controls">
<select ng-model="vm.field">
<optgroup localize="label" label="@templateEditor_customFields">
<option ng-repeat="(key, value) in vm.properties" value="{{value}}">{{value}}</option>
</optgroup>
<optgroup localize="label" label="@templateEditor_standardFields">
<option ng-repeat="(key, value) in vm.standardFields" value="{{value}}">{{value}}</option>
</optgroup>
</select>
</div>
</div>
</div>
<div class="advanced" style="position:relative">
<!-- Overlay -->
<div class="hideAdvanced" style="position:absolute;height:100%;width:100%;background-color:white;opacity:.7;" ng-hide="vm.field"></div>
<!-- Fallback field -->
<div>
<i class="icon icon-add blue" ng-hide="vm.showAltField"></i>
<a href="" ng-click="vm.showAltField=true" ng-hide="vm.showAltField"><localize key="templateEditor_addFallbackField">Add fallback field</localize></a>
<div class="control-group umb-control-group -no-border" ng-hide="!vm.showAltField">
<div class="umb-el-wrap">
<label class="control-label" for="altField"><localize key="templateEditor_fallbackField">Fallback field</localize></label>
<div class="controls">
<select ng-model="vm.altField" id="altField">
<optgroup localize="label" label="@templateEditor_customFields">
<option ng-repeat="(key, value) in vm.properties" value="{{value}}">{{value}}</option>
</optgroup>
<optgroup localize="label" label="@templateEditor_standardFields">
<option ng-repeat="(key, value) in vm.standardFields" value="{{value}}">{{value}}</option>
</optgroup>
</select>
</div>
</div>
</div>
</div>
</div>
<!-- Default value -->
<div>
<div style="margin-bottom: 20px;">
<i class="icon icon-add blue" ng-hide="vm.showAltText"></i>
<a href="" ng-click="vm.showAltText=true" ng-hide="vm.showAltText"><localize key="templateEditor_addDefaultValue">Add default value</localize></a>
</div>
<div class="control-group umb-control-group -no-border" ng-hide="!vm.showAltText">
<div class="umb-el-wrap">
<label class="control-label" for="altText"><localize key="templateEditor_defaultValue">Default value</localize></label>
<div class="controls">
<input type="text" id="altText" name="altText" ng-model="vm.altText" umb-auto-focus>
</div>
</div>
</div>
</div>
<!-- Recursive -->
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<div class="controls">
<label>
<localize key="templateEditor_recursive">Recursive</localize>
<input id="recursive" type="checkbox" name="recursive" ng-model="vm.recursive">
<localize key="templateEditor_recursiveDescr">Yes, make it recursive</localize>
</label>
</div>
</div>
</div>
<h5><localize key="templateEditor_formatAndEncoding">Format and encoding</localize></h5>
<!-- Format as date -->
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<div class="controls">
<div>
<label class="control-label">
<localize key="templateEditor_formatAsDate">Format as date</localize>
<small><localize key="templateEditor_formatAsDateDescr">Format the value as a date, or a date with time, accoring to the active culture</localize>.</small>
</label>
</div>
<a href ng-click="vm.setDateOption('date')" class="btn"><i class="icon icon-check" ng-if="vm.date"></i> <localize key="templateEditor_dateOnly">Date only</localize></a>
<a href ng-click="vm.setDateOption('dateWithTime')" class="btn"><i class="icon icon-check" ng-if="vm.dateTime"></i> <localize key="templateEditor_withTime">Date and time</localize></a>
<input type="text" ng-model="vm.dateTimeSeparator" ng-hide="!vm.dateTime" localize="placeholder" placeholder="@templateEditor_separator">
</div>
</div>
</div>
<!-- Format casing -->
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<div class="controls">
<div>
<label class="control-label">
<localize key="templateEditor_casing">Casing</localize>
</label>
</div>
<a href ng-click="vm.setCasingOption('uppercase')" class="btn" style="text-transform: uppercase;"><i class="icon icon-check" ng-if="vm.casingUpper"></i> <localize key="templateEditor_uppercase">Uppercase</localize></a>
<a href ng-click="vm.setCasingOption('lowercase')" class="btn"style="text-transform: lowercase;"><i class="icon icon-check" ng-if="vm.casingLower"></i> <localize key="templateEditor_lowercase">Lowercase</localize></a>
</div>
</div>
</div>
<!-- Format encoding -->
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<div class="controls">
<div>
<label class="control-label">
<localize key="templateEditor_encoding">Encoding</localize>
<small><localize key="templateEditor_urlEncodeHelp">Will format special characters in URLs</localize></small>
</label>
</div>
<a href ng-click="vm.setEncodingOption('html')" class="btn"><i class="icon icon-check" ng-if="vm.encodeHtml"></i> HTML</a>
<a href ng-click="vm.setEncodingOption('url')" class="btn"><i class="icon icon-check" ng-if="vm.encodeUrl"></i> URL</a>
</div>
</div>
</div>
<h5><localize key="templateEditor_modifyOutput">Modify output</localize></h5>
<!-- Insert Before -->
<div class="control-group umb-control-group -no-border ng-scope">
<div class="umb-el-wrap">
<label class="control-label" for="insertBefore">
<localize key="templateEditor_preContent">Insert before field</localize>
<small><localize key="templateEditor_insertedBefore">Will be inserted before the field value</localize></small>
</label>
<div class="controls">
<input type="text" id="insertBefore" name="insertBefore" class="-full-width-input" ng-model="vm.insertBefore">
</div>
</div>
</div>
<!-- Insert after -->
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<label class="control-label" for="insertAfter">
<localize key="templateEditor_postContent">Insert after field</localize>
<small><localize key="templateEditor_insertedAfter">Will be inserted after the field value</localize></small>
</label>
<div class="controls">
<input type="text" id="insertAfter" name="insertAfter" class="-full-width-input" ng-model="vm.insertAfter">
</div>
</div>
</div>
<!-- Line breaks -->
<div class="control-group umb-control-group">
<div class="umb-el-wrap">
<div class="controls">
<label>
<span class="control-label">
<localize key="templateEditor_convertLineBreaks">Convert line breaks</localize>
<small><localize key="templateEditor_convertLineBreaksHelp">Replaces line breaks with break html tag</localize></small>
</span>
<input type="checkbox" id="linebreaks" name="linebreaks" ng-model="vm.convertLinebreaks">
<localize key="templateEditor_convertLineBreaksDescription">Yes, convert line breaks</localize>
</label>
</div>
</div>
</div>
<!-- Output -->
<div class="control-group umb-control-group -no-border">
<div class="umb-el-wrap">
<div class="controls">
<label class="control-label"><localize key="templateEditor_outputSample">Output sample</localize></label>
<pre>{{ vm.generateOutputSample() }}</pre>
</div>
</div>
</div>
</div>
</div>
@@ -1,26 +1,25 @@
<div ng-controller="Umbraco.Overlays.ItemPickerOverlay">
<div class="form-search" ng-hide="model.filter === false">
<i class="icon-search"></i>
<input type="text"
style="width: 100%"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus />
<div class="form-search" ng-hide="model.filter === false" style="margin-bottom: 15px;">
<i class="icon-search"></i>
<input type="text"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level -full-width-input"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
no-dirty-check />
</div>
<ul class="umb-card-grid">
<li
ng-repeat="availableItem in model.availableItems | compareArrays:model.selectedItems:'alias' | orderBy:'name' | filter:searchTerm"
ng-click="selectItem(availableItem)"
class="-three-in-row">
<a class="umb-card-grid-item" href="" title="{{ availableItem.name }}">
<i class="{{ availableItem.icon }}"></i>
{{ availableItem.name }}
</a>
</li>
<li ng-repeat="availableItem in model.availableItems | compareArrays:model.selectedItems:'alias' | orderBy:'name' | filter:searchTerm"
ng-click="selectItem(availableItem)"
class="-three-in-row">
<a class="umb-card-grid-item" href="" title="{{ availableItem.name }}">
<i class="{{ availableItem.icon }}"></i>
{{ availableItem.name }}
</a>
</li>
</ul>
</div>
@@ -1,25 +1,41 @@
<div ng-controller="Umbraco.Overlays.LinkPickerController">
<umb-control-group label="@content_urls">
<umb-control-group label="@defaultdialogs_urlLinkPicker" class="umb-property--pull">
<input type="text"
localize="placeholder"
placeholder="@general_url"
class="umb-editor umb-textstring"
ng-model="model.target.url"
ng-disabled="model.target.id"/>
localize="placeholder"
placeholder="@general_url"
class="umb-editor umb-textstring"
ng-model="model.target.url"
ng-disabled="model.target.id || model.target.udi" />
</umb-control-group>
<umb-control-group label="@content_nodeName">
<umb-control-group label="@defaultdialogs_anchorLinkPicker" class="umb-property--push">
<input type="text"
localize="placeholder"
placeholder="@placeholders_entername"
class="umb-editor umb-textstring"
ng-model="model.target.name" />
list="anchors"
localize="placeholder"
placeholder="@placeholders_anchor"
class="umb-editor umb-textstring"
ng-model="model.target.anchor" />
<datalist id="anchors">
<option value="{{a}}" ng-repeat="a in anchorValues"></option>
</datalist>
</umb-control-group>
<umb-control-group label="@content_target">
<umb-control-group label="@defaultdialogs_nodeNameLinkPicker">
<input type="text"
localize="placeholder"
placeholder="@placeholders_entername"
class="umb-editor umb-textstring"
ng-model="model.target.name" />
</umb-control-group>
<umb-control-group ng-if="showTarget" label="@content_target">
<label class="checkbox no-indent">
<input type="checkbox" ng-model="model.target.target" ng-true-value="_blank" ng-false-value="" /> <localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize>
<input type="checkbox"
ng-model="model.target.target"
ng-true-value="_blank"
ng-false-value="" /> <localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize>
</label>
</umb-control-group>
@@ -28,34 +44,41 @@
<localize key="defaultdialogs_linkToPage">Link to page</localize>
</h5>
<umb-tree-search-box
hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="{{section}}">
</umb-tree-search-box>
<div ng-hide="miniListView">
<umb-tree-search-box hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="{{section}}">
</umb-tree-search-box>
<br/>
<br />
<umb-tree-search-results
ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
<umb-tree-search-results ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
<div ng-hide="searchInfo.showSearch">
<umb-tree
section="content"
hideheader="true"
hideoptions="true"
eventhandler="dialogTreeEventHandler"
isdialog="true"
enablecheckboxes="true">
</umb-tree>
<div ng-hide="searchInfo.showSearch">
<umb-tree section="content"
hideheader="true"
hideoptions="true"
eventhandler="dialogTreeEventHandler"
enablelistviewexpand="true"
isdialog="true"
enablecheckboxes="true">
</umb-tree>
</div>
</div>
<umb-mini-list-view ng-if="miniListView"
node="miniListView"
entity-type="Document"
on-select="selectListViewNode(node)"
on-close="closeMiniListView()">
</umb-mini-list-view>
</div>
<div class="umb-control-group">
@@ -67,11 +90,10 @@
</a>
</div>
<umb-overlay
ng-if="mediaPickerOverlay.show"
model="mediaPickerOverlay"
view="mediaPickerOverlay.view"
position="right">
<umb-overlay ng-if="mediaPickerOverlay.show"
model="mediaPickerOverlay"
view="mediaPickerOverlay.view"
position="right">
</umb-overlay>
</div>
@@ -2,17 +2,39 @@
<div ng-switch="wizardStep">
<umb-control-group label="Choose a macro" ng-switch-when="macroSelect">
<select class="umb-editor" ng-change="changeMacro()"
name="selectedMacro"
ng-model="model.selectedMacro"
ng-options="m as m.name for m in macros"
required>
<option value=""><localize key="choose" />...</option>
</select>
<span class="help-inline" val-msg-for="selectedMacro" val-toggle-msg="required"><localize key="required" /></span>
</umb-control-group>
<div ng-switch-when="macroSelect">
<div class="form-search">
<i class="icon-search"></i>
<input type="text"
style="width: 100%"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
no-dirty-check />
</div>
<ul class="umb-card-grid">
<li ng-repeat="availableItem in macros | orderBy:'name' | filter:searchTerm"
ng-click="selectMacro(availableItem)"
class="-three-in-row">
<a class="umb-card-grid-item" href="" title="{{ availableItem.name }}">
<i class="icon-settings-alt"></i>
{{ availableItem.name }}
</a>
</li>
</ul>
<umb-empty-state ng-if="nomacros"
position="center">
<localize key="defaultdialogs_noMacros">
There are no macros available to insert
</localize>
</umb-empty-state>
</div>
<div ng-switch-when="paramSelect">
@@ -30,9 +52,8 @@
</li>
</ul>
<umb-empty-state
ng-if="noMacroParams"
position="center">
<umb-empty-state ng-if="noMacroParams"
position="center">
<localize key="defaultdialogs_noMacroParams">There are no parameters for this macro</localize>
</umb-empty-state>
@@ -3,140 +3,149 @@
enctype="multipart/form-data"
umb-image-upload="options">
<div
on-drag-leave="dragLeave()"
on-drag-end="dragLeave()"
on-drag-enter="dragEnter()">
<div on-drag-leave="dragLeave()"
on-drag-end="dragLeave()"
on-drag-enter="dragEnter()">
<div class="umb-control-group umb-mediapicker-upload">
<div class="umb-control-group umb-mediapicker-upload">
<div class="form-search">
<i class="icon-search"></i>
<input
class="umb-search-field search-query"
ng-model="searchTerm"
localize="placeholder"
placeholder="@placeholders_filter"
type="text">
</div>
<umb-load-indicator ng-if="loading">
</umb-load-indicator>
<div class="upload-button">
<umb-button
type="button"
key="general_upload"
label="Upload"
action="upload()"
disabled="disabled">
</umb-button>
</div>
<div class="form-search">
<i class="icon-search"></i>
<input class="umb-search-field search-query -full-width-input"
ng-model="searchOptions.filter"
localize="placeholder"
placeholder="@placeholders_search"
ng-change="changeSearch()"
type="text"
no-dirty-check />
</div>
</div>
<div class="upload-button">
<umb-button type="button"
label-key="general_upload"
action="upload()"
disabled="lockedFolder"
button-style="info"
ng-if="acceptedMediatypes.length > 0">
</umb-button>
</div>
<div class="row umb-control-group">
<ul class="umb-breadcrumbs">
<li ng-hide="startNodeId != -1" class="umb-breadcrumbs__ancestor">
<a href ng-click="gotoFolder()" prevent-default>Media</a>
<span class="umb-breadcrumbs__seperator">&#47;</span>
</li>
</div>
<li ng-repeat="item in path" class="umb-breadcrumbs__ancestor">
<a href ng-click="gotoFolder(item)" prevent-default>{{item.name}}</a>
<span class="umb-breadcrumbs__seperator">&#47;</span>
</li>
<div class="row umb-control-group" ng-show="!searchOptions.filter">
<ul class="umb-breadcrumbs">
<li ng-hide="startNodeId != -1" class="umb-breadcrumbs__ancestor">
<a href ng-click="gotoFolder()" prevent-default>Media</a>
<span class="umb-breadcrumbs__seperator">&#47;</span>
</li>
<li class="umb-breadcrumbs__ancestor">
<a href ng-hide="showFolderInput" ng-click="showFolderInput = true">
<i class="icon icon-add small"></i>
</a>
<li ng-repeat="item in path" class="umb-breadcrumbs__ancestor">
<a href ng-click="gotoFolder(item)" prevent-default>{{item.name}}</a>
<span class="umb-breadcrumbs__seperator">&#47;</span>
</li>
<input
type="text"
class="input-foldername input-mini inline"
ng-show="showFolderInput"
ng-model="newFolderName"
ng-keydown="enterSubmitFolder($event)"
on-blur="submitFolder()"
focus-when="{{showFolderInput}}" />
</li>
</ul>
<li class="umb-breadcrumbs__ancestor" ng-show="!lockedFolder">
<a href ng-hide="showFolderInput" ng-click="showFolderInput = true">
<i class="icon icon-add small"></i>
</a>
</div>
<input type="text"
class="umb-breadcrumbs__add-ancestor"
ng-show="showFolderInput"
ng-model="newFolderName"
ng-keydown="enterSubmitFolder($event)"
on-blur="submitFolder()"
focus-when="{{showFolderInput}}" />
</li>
</ul>
<div class="umb-loader" ng-if="creatingFolder"></div>
</div>
<umb-file-dropzone
ng-if="acceptedMediatypes.length > 0"
accepted-mediatypes="acceptedMediatypes"
parent-id="{{currentFolder.id}}"
files-uploaded="onUploadComplete"
files-queued="onFilesQueue"
accept="{{acceptedFileTypes}}"
max-file-size="{{maxFileSize}}"
hide-dropzone="{{!activeDrag && images.length > 0 }}"
compact="{{ images.length > 0 }}">
</umb-file-dropzone>
<umb-file-dropzone ng-if="acceptedMediatypes.length > 0 && !loading && !lockedFolder"
accepted-mediatypes="acceptedMediatypes"
parent-id="{{currentFolder.id}}"
files-uploaded="onUploadComplete"
files-queued="onFilesQueue"
accept="{{acceptedFileTypes}}"
max-file-size="{{maxFileSize}}"
hide-dropzone="{{!activeDrag && images.length > 0 || searchOptions.filter }}"
compact="{{ images.length > 0 }}">
</umb-file-dropzone>
<umb-media-grid
items="images"
filter-by="searchTerm"
on-click="clickHandler"
on-click-name="clickItemName"
item-max-width="150"
item-max-height="150"
item-min-width="100"
item-min-height="100"
only-images={{onlyImages}}>
</umb-media-grid>
<umb-media-grid ng-if="!loading"
items="images"
on-click="clickHandler"
on-click-name="clickItemName"
item-max-width="150"
item-max-height="150"
item-min-width="100"
item-min-height="100"
only-images={{onlyImages}}>
</umb-media-grid>
</div>
<div class="flex justify-center">
<umb-pagination ng-if="searchOptions.totalPages > 0 && !loading"
page-number="searchOptions.pageNumber"
total-pages="searchOptions.totalPages"
on-change="changePagination(pageNumber)">
</umb-pagination>
</div>
<umb-overlay
ng-if="mediaPickerDetailsOverlay.show"
model="mediaPickerDetailsOverlay"
position="right">
<umb-empty-state ng-if="searchOptions.filter && images.length === 0 && !loading"
position="center">
<localize key="general_searchNoResult"></localize>
</umb-empty-state>
<div class="umb-control-group">
</div>
<div ng-if="target.url">
<umb-image-gravity
src="target.url"
center="target.focalPoint">
</umb-image-gravity>
</div>
<umb-overlay ng-if="mediaPickerDetailsOverlay.show"
model="mediaPickerDetailsOverlay"
position="right">
<div ng-if="cropSize">
<div class="umb-control-group">
<h5>
<localize key="general_preview">Preview</localize>
</h5>
<div ng-if="target.url">
<umb-image-gravity src="target.url"
center="target.focalPoint">
</umb-image-gravity>
</div>
<umb-image-thumbnail
center="target.focalPoint"
src="target.url"
height="{{cropSize.height}}"
width="{{cropSize.width}}"
max-size="400">
</umb-image-thumbnail>
<div ng-if="cropSize">
</div>
<h5>
<localize key="general_preview">Preview</localize>
</h5>
</div>
<umb-image-thumbnail center="target.focalPoint"
src="target.url"
height="{{cropSize.height}}"
width="{{cropSize.width}}"
max-size="400">
</umb-image-thumbnail>
<div class="umb-control-group">
<label><localize key="@general_url"></localize></label>
<input
type="text"
localize="placeholder"
placeholder="@general_url"
class="umb-editor umb-textstring"
ng-model="target.url"
ng-disabled="target.id" />
</div>
</div>
<div class="umb-control-group">
<label><localize key="@content_altTextOptional"></localize></label>
<input type="text" class="umb-editor umb-textstring" ng-model="target.altText" />
</div>
</div>
<div class="umb-control-group">
<label><localize key="@general_url"></localize></label>
<input type="text"
localize="placeholder"
placeholder="@general_url"
class="umb-editor umb-textstring"
ng-model="target.url"
ng-disabled="target.id" />
</div>
<div class="umb-control-group">
<label><localize key="@content_altTextOptional"></localize></label>
<input type="text" class="umb-editor umb-textstring" ng-model="target.altText" />
</div>
</umb-overlay>
</umb-overlay>
</form>
@@ -1,34 +1,47 @@
<div ng-controller="Umbraco.Overlays.TreePickerController" ng-init="init('member')">
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="member">
</umb-tree-search-box>
</div>
<div ng-hide="miniListView">
<umb-tree-search-results
ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="member">
</umb-tree-search-box>
</div>
<div ng-hide="searchInfo.showSearch" ng-animate="'tree-fade-out'">
<umb-tree
section="member"
treealias="member"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
<umb-tree-search-results
ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
<div ng-hide="searchInfo.showSearch" ng-animate="'tree-fade-out'">
<umb-tree
section="member"
treealias="member"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablelistviewexpand="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
</div>
<umb-mini-list-view
ng-if="miniListView"
node="miniListView"
entity-type="{{entityType}}"
start-node-id="model.startNodeId"
on-select="selectListViewNode(node)"
on-close="closeMiniListView()">
</umb-mini-list-view>
</div>
@@ -1,33 +1,43 @@
<div ng-controller="Umbraco.Overlays.MoveOverlay as vm">
<div ng-hide="miniListView">
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="vm.hideSearch"
search-callback="vm.onSearchResults"
search-from-id="{{vm.searchInfo.searchFromId}}"
search-from-name="{{vm.searchInfo.searchFromName}}"
show-search="{{vm.searchInfo.showSearch}}"
section="{{model.section}}">
</umb-tree-search-box>
</div>
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="vm.hideSearch"
search-callback="vm.onSearchResults"
search-from-id="{{vm.searchInfo.searchFromId}}"
search-from-name="{{vm.searchInfo.searchFromName}}"
show-search="{{vm.searchInfo.showSearch}}"
section="{{model.section}}">
</umb-tree-search-box>
<div class="umb-control-group" ng-show="vm.searchInfo.showSearch">
<umb-tree-search-results
ng-if="vm.searchInfo.showSearch"
results="vm.searchInfo.results"
select-result-callback="vm.selectResult">
</umb-tree-search-results>
</div>
<div class="umb-control-group -no-border" ng-hide="vm.searchInfo.showSearch">
<umb-tree
section="{{model.section}}"
hideheader="false"
hideoptions="true"
isdialog="true"
eventhandler="dialogTreeEventHandler"
enablelistviewexpand="true"
enablecheckboxes="true">
</umb-tree>
</div>
</div>
<div class="umb-control-group" ng-show="vm.searchInfo.showSearch">
<umb-tree-search-results
ng-if="vm.searchInfo.showSearch"
results="vm.searchInfo.results"
select-result-callback="vm.selectResult">
</umb-tree-search-results>
</div>
<div class="umb-control-group -no-border" ng-hide="vm.searchInfo.showSearch">
<umb-tree
section="{{model.section}}"
hideheader="false"
hideoptions="true"
isdialog="true"
eventhandler="dialogTreeEventHandler"
enablecheckboxes="true">
</umb-tree>
</div>
<umb-mini-list-view
ng-if="miniListView"
node="miniListView"
entity-type="{{entityType}}"
on-select="selectListViewNode(node)"
on-close="closeMiniListView()">
</umb-mini-list-view>
</div>
@@ -0,0 +1,12 @@
<div class="block-form" ng-controller="Umbraco.Overlays.NodePermissionsController as vm">
<umb-control-group
ng-repeat="(category, permissions) in model.node.permissions"
label="{{category}}">
<umb-permission
ng-repeat="permission in permissions"
name="permission.name"
description="permission.description"
selected="permission.checked">
</umb-permission>
</umb-control-group>
</div>
@@ -0,0 +1,149 @@
<div ng-controller="Umbraco.Overlays.QueryBuilderController as vm">
<div class="umb-control-group umb-querybuilder">
<div class="row">
<div class="query-items">
<span><localize key="template_iWant">I want</localize></span>
<div class="btn-group">
<a class="btn btn-link dropdown-toggle" data-toggle="dropdown" href="#">
{{vm.query.contentType.name}}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li ng-repeat="contentType in vm.contentTypes">
<a href ng-click="vm.setContentType(contentType)">{{contentType.name}}</a>
</li>
</ul>
</div>
<span><localize key="template_from">from</localize></span>
<a href class="btn btn-link" ng-click="vm.chooseSource(vm.query)">
{{vm.query.source.name}}
<span class="caret"></span>
</a>
</div>
<div class="query-items" ng-repeat="filter in vm.query.filters">
<span ng-if="$first">
<localize key="template_where">where</localize>
</span>
<span ng-if="!$first">
<localize key="template_and">and</localize>
</span>
<div class="btn-group">
<a class="btn btn-link dropdown-toggle" data-toggle="dropdown" href="#">
{{filter.property.name}}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li ng-repeat="property in vm.properties">
<a href ng-click="vm.setFilterProperty(filter, property)">
{{property.name}}
</a>
</li>
</ul>
</div>
<div class="btn-group" ng-if="filter.property">
<a class="btn btn-link dropdown-toggle" data-toggle="dropdown" href="#">
{{filter.term.name}}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li ng-repeat="term in vm.getPropertyOperators(filter.property)">
<a href ng-click="vm.setFilterTerm(filter, term)">
{{term.name}}
</a>
</li>
</ul>
</div>
<span ng-switch="filter.term.appliesTo[0]">
<!-- Filter term types (string, int, date) -->
<input type="text" ng-switch-when="string" style="width:90px;" ng-model="filter.constraintValue" ng-change="vm.changeConstraintValue()" />
<input type="number" ng-switch-when="int" style="width:90px;" ng-model="filter.constraintValue" ng-change="vm.changeConstraintValue()" />
<span ng-switch-when="datetime">
<umb-date-time-picker options="vm.datePickerConfig"
on-change="vm.datePickerChange(event, filter)">
</umb-date-time-picker>
</span>
</span>
<a href ng-click="vm.addFilter(vm.query)">
<i class="icon-add"></i>
</a>
<a href ng-click="vm.trashFilter(vm.query, filter)">
<i class="icon-trash"></i>
</a>
</div>
<div class="query-items">
<span><localize key="template_orderBy">order by</localize></span>
<div class="btn-group">
<a class="btn btn-link dropdown-toggle" data-toggle="dropdown" href="#">
{{vm.query.sort.property.name}}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li ng-repeat="property in vm.properties">
<a href ng-click="vm.setSortProperty(vm.query, property)">
{{property.name}}
</a>
</li>
</ul>
</div>
<a href class="btn" ng-click="vm.changeSortOrder(vm.query)">
{{vm.query.sort.translation.currentLabel}}
</a>
</div>
</div>
<h5>{{model.result.resultCount}} <localize key="template_itemsReturned">items, returned in</localize> {{model.result.executionTime}} ms</h5>
<ul class="nav unstyled">
<li ng-repeat="item in model.result.sampleResults">
<i class="icon icon-document turquoise-d1"></i> {{item.name}}
</li>
</ul>
<pre>
{{model.result.queryExpression}}
</pre>
</div>
<umb-overlay
ng-if="vm.contentPickerOverlay.show"
model="vm.contentPickerOverlay"
view="vm.contentPickerOverlay.view"
position="right">
</umb-overlay>
</div>
@@ -0,0 +1,24 @@
<div ng-controller="Umbraco.Overlays.SectionPickerController as vm">
<umb-load-indicator
ng-if="vm.loading">
</umb-load-indicator>
<div ng-if="!vm.loading">
<ul class="umb-tree">
<li ng-repeat="section in vm.sections">
<div style="padding: 5px 10px;" ng-class="{'umb-tree-node-checked': section.selected }">
<a href="" ng-click="vm.selectSection(section)">
<div style="position: relative; overflow: initial;">
<i class="icon umb-tree-icon {{section.icon}}"></i>
</div>
<span>{{ section.name }}</span>
</a>
</div>
</li>
</ul>
</div>
</div>
@@ -0,0 +1,59 @@
<div ng-controller="Umbraco.Overlays.TemplateSectionsOverlay as vm">
<div class="umb-insert-code-box" ng-click="vm.select('renderBody')">
<div class="umb-insert-code-box__check" ng-class="{'umb-insert-code-box__check--checked': model.insertType === 'renderBody' }"><i class="icon icon-check"></i></div>
<div class="umb-insert-code-box__title"><localize key="template_renderBody" /></div>
<div class="umb-insert-code-box__description">
<localize key="template_renderBodyDesc" />
</div>
</div>
<div class="umb-insert-code-box" ng-click="vm.select('renderSection')">
<div class="umb-insert-code-box__check" ng-class="{'umb-insert-code-box__check--checked': model.insertType === 'renderSection' }"><i class="icon icon-check"></i></div>
<div class="umb-insert-code-box__title"><localize key="template_renderSection" /></div>
<div class="umb-insert-code-box__description">
<localize key="template_renderSectionDesc" />
</div>
<div ng-if="model.insertType === 'renderSection'" style="margin-top: 20px;">
<div style="margin-bottom: 20px;">
<label class="bold"><localize key="template_sectionName" /> <span class="red">*</span></label>
<input type="text" name="renderSectionName" class="-full-width-input" ng-model="model.renderSectionName" required umb-auto-focus />
<small class="red" val-msg-for="renderSectionName" val-toggle-msg="required"><localize key="required" /></small>
</div>
<div>
<label>
<input type="checkbox" ng-model="model.mandatoryRenderSection" /> <localize key="template_sectionMandatory" />
</label>
<div class="umb-insert-code-box__description">
<localize key="template_sectionMandatoryDesc" />
</div>
</div>
</div>
</div>
<div class="umb-insert-code-box" ng-click="vm.select('addSection')">
<div class="umb-insert-code-box__check" ng-class="{'umb-insert-code-box__check--checked': model.insertType === 'addSection' }"><i class="icon icon-check"></i></div>
<div class="umb-insert-code-box__title"><localize key="template_defineSection" /></div>
<div class="umb-insert-code-box__description">
<localize key="template_defineSectionDesc" />
</div>
<div ng-if="model.insertType === 'addSection'" style="margin-top: 20px;">
<div>
<label class="bold"><localize key="template_sectionName" /> <span class="red">*</span></label>
<input type="text" name="sectionName" class="-full-width-input" ng-model="model.sectionName" required umb-auto-focus />
<small class="red" val-msg-for="sectionName" val-toggle-msg="required"><localize key="required" /></small>
</div>
</div>
</div>
</div>
@@ -1,34 +1,54 @@
<div ng-controller="Umbraco.Overlays.TreePickerController">
<div class="umb-control-group">
<umb-tree-search-box
hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="{{section}}">
</umb-tree-search-box>
</div>
<div ng-hide="miniListView">
<umb-tree-search-results
ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
<div class="umb-control-group">
<umb-tree-search-box
ng-if="enableSearh"
hide-search-callback="hideSearch"
search-callback="onSearchResults"
search-from-id="{{searchInfo.searchFromId}}"
search-from-name="{{searchInfo.searchFromName}}"
show-search="{{searchInfo.showSearch}}"
section="{{section}}">
</umb-tree-search-box>
</div>
<div ng-hide="searchInfo.showSearch" ng-animate="'tree-fade-out'">
<umb-tree
section="{{section}}"
treealias="{{treeAlias}}"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
<umb-tree-search-results
ng-if="searchInfo.showSearch"
results="searchInfo.results"
select-result-callback="selectResult">
</umb-tree-search-results>
<umb-empty-state ng-if="!hasItems && emptyStateMessage" position="center">
{{ emptyStateMessage }}
</umb-empty-state>
</div>
<div ng-if="treeReady" ng-hide="searchInfo.showSearch" ng-animate="'tree-fade-out'">
<umb-tree
section="{{section}}"
treealias="{{treeAlias}}"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
onlyinitialized="{{onlyInitialized}}"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablelistviewexpand="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
</div>
<umb-mini-list-view
ng-if="miniListView"
node="miniListView"
entity-type="{{entityType}}"
start-node-id="model.startNodeId"
on-select="selectListViewNode(node)"
on-close="closeMiniListView()">
</umb-mini-list-view>
</div>
@@ -11,8 +11,9 @@
</p>
<umb-button
alias="editUser"
type="link"
href="#/users/framed/%252Fumbraco%252Fusers%252Fedituser.aspx%253Fid%253D{{user.id}}"
href="#/users/users/user/{{user.id}}"
action="model.close()"
button-style="primary"
label="Edit"
@@ -21,6 +22,7 @@
</umb-button>
<umb-button
alias="changePassword"
type="button"
action="togglePasswordFields()"
label="Change password"
@@ -29,10 +31,11 @@
</umb-button>
<umb-button
alias="logOut"
type="button"
action="logout()"
shortcut="ctrl+shift+l"
button-style="warning"
button-style="danger"
label="Log out"
label-key="general_logout">
</umb-button>
@@ -74,6 +77,7 @@
</div>
<div class="umb-control-group" ng-if="!showPasswordFields">
<h5><localize key="user_yourHistory" /></h5>
<ul class="umb-tree">
@@ -98,7 +102,9 @@
novalidate
val-form-manager>
<umb-editor model="changePasswordModel"></umb-editor>
<change-password password-values="changePasswordModel.value"
config="changePasswordModel.config">
</change-password>
<umb-button
type="button"
@@ -120,4 +126,14 @@
</div>
<div class="umb-control-group">
<div ng-repeat="tab in dashboard">
<div ng-repeat="property in tab.properties">
<div>
<h3 ng-if="property.caption">{{property.caption}}</h3>
<div ng-include="property.path"></div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,65 @@
<div ng-controller="Umbraco.Overlays.UserGroupPickerController as vm">
<umb-load-indicator ng-if="vm.loading">
</umb-load-indicator>
<div ng-if="!vm.loading">
<div class="form-search" style="margin-bottom: 15px;">
<i class="icon-search"></i>
<input type="text"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level -full-width-input"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
no-dirty-check />
</div>
<div class="umb-user-group-picker-list">
<a href="" class="umb-user-group-picker-list-item" ng-repeat="userGroup in vm.userGroups | filter:searchTerm" ng-click="vm.selectUserGroup(userGroup)">
<div class="umb-user-group-picker-list-item__icon">
<i ng-if="!userGroup.selected" class="{{userGroup.icon}}"></i>
<umb-checkmark ng-if="userGroup.selected" checked="userGroup.selected" size="xs"></umb-checkmark>
</div>
<div>
<div class="umb-user-group-picker-list-item__name">{{ userGroup.name }}</div>
<div class="umb-user-group-picker-list-item__permission" ng-if="userGroup.sections">
<span>
<span class="bold"><localize key="main_sections">Sections</localize>:</span>
<span ng-repeat="section in userGroup.sections">{{ section.name }}<span ng-if="!$last">, </span></span>
</span>
</div>
<div class="umb-user-group-picker-list-item__permission">
<span>
<span class="bold"><localize key="user_startnode">Content start node</localize>:</span>
<span ng-if="!userGroup.contentStartNode"><localize key="user_noStartNode">No start node selected</localize></span>
<span ng-if="userGroup.contentStartNode">{{ userGroup.contentStartNode.name }}</span>
</span>
</div>
<div class="umb-user-group-picker-list-item__permission">
<span>
<span class="bold"><localize key="user_mediastartnode">Media start node</localize>:</span>
<span ng-if="!userGroup.mediaStartNode"><localize key="user_noStartNode">No start node selected</localize></span>
<span ng-if="userGroup.mediaStartNode">{{ userGroup.mediaStartNode.name }}</span>
</span>
</div>
</div>
</a>
</div>
<umb-empty-state ng-if="vm.userGroups.length === 0"
position="center">
No user groups have been added
</umb-empty-state>
</div>
</div>
@@ -0,0 +1,58 @@
<div ng-controller="Umbraco.Overlays.UserPickerController as vm">
<umb-load-indicator
ng-if="vm.loading">
</umb-load-indicator>
<div class="form-search" style="margin-bottom: 15px;">
<i class="icon-search"></i>
<input type="text"
ng-model="vm.usersOptions.filter"
ng-change="vm.searchUsers()"
class="umb-search-field search-query input-block-level -full-width-input"
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus
revent-enter-submit
no-dirty-check />
</div>
<div ng-if="!vm.loading">
<div class="umb-user-picker-item-list">
<a href="" class="umb-user-picker-list-item" ng-repeat="user in vm.users" ng-click="vm.selectUser(user)">
<div class="umb-user-picker-list-item__avatar">
<umb-checkmark
class="umb-user-picker-list-item__checkmark"
ng-if="user.selected"
checked="user.selected">
</umb-checkmark>
<umb-avatar
size="s"
color="secondary"
name="{{user.name}}"
img-src="{{user.avatars[0]}}"
img-srcset="{{user.avatars[1]}} 2x, {{user.avatars[2]}} 3x">
</umb-avatar>
</div>
<div class="umb-user-picker-list-item__content">
<div class="umb-user-picker-list-item__name">{{ user.name }}</div>
<div class="umb-user-picker-list-item__group">
<span ng-repeat="userGroup in user.userGroups">{{ userGroup.name }}<span ng-if="!$last">, </span></span>
</div>
</div>
</a>
</div>
<div class="flex justify-center">
<umb-pagination
ng-if="vm.usersOptions.totalPages"
page-number="vm.usersOptions.pageNumber"
total-pages="vm.usersOptions.totalPages"
on-change="vm.changePageNumber(pageNumber)">
</umb-pagination>
</div>
</div>
</div>
@@ -1,4 +1,4 @@
<div ng-controller="Umbraco.Overlays.YsodController">
<div ng-controller="Umbraco.Overlays.YsodController">
<h4 class="heading red">{{model.error.errorMsg}}</h4>
<p>{{model.error.data.ExceptionMessage || model.error.data.Message}}</p>
@@ -0,0 +1,29 @@
<div ng-controller="Umbraco.Tours.UmbIntroCreateContent.NodeNameController as vm">
<umb-tour-step on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
<div ng-if="vm.error" class="color-red" style="margin-top: 5px;">Please enter <b>Home</b> in the field</div>
</umb-tour-step-content>
<umb-tour-step-footer class="flex justify-between items-center">
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
<div>
<umb-button size="xs" button-style="success" type="button" action="vm.initNextStep()" label="Next"></umb-button>
</div>
</umb-tour-step-footer>
</umb-tour-step>
</div>
@@ -0,0 +1,29 @@
<div ng-controller="Umbraco.Tours.UmbIntroCreateDocType.DocTypeNameController as vm">
<umb-tour-step on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
<div ng-if="vm.error" class="color-red" style="margin-top: 5px;">Please enter <b>Home Page</b> in the field</div>
</umb-tour-step-content>
<umb-tour-step-footer class="flex justify-between items-center">
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
<div>
<umb-button size="xs" button-style="success" type="button" action="vm.initNextStep()" label="Next"></umb-button>
</div>
</umb-tour-step-footer>
</umb-tour-step>
</div>
@@ -0,0 +1,29 @@
<div ng-controller="Umbraco.Tours.UmbIntroCreateDocType.PropertyNameController as vm">
<umb-tour-step on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
<div ng-if="vm.error" class="color-red" style="margin-top: 5px;">Please enter <b>Welcome Text</b> in the field</div>
</umb-tour-step-content>
<umb-tour-step-footer class="flex justify-between items-center">
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
<div>
<umb-button size="xs" button-style="success" type="button" action="vm.initNextStep()" label="Next"></umb-button>
</div>
</umb-tour-step-footer>
</umb-tour-step>
</div>
@@ -0,0 +1,29 @@
<div ng-controller="Umbraco.Tours.UmbIntroCreateDocType.TabNameController as vm">
<umb-tour-step on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
<div ng-if="vm.error" class="color-red" style="margin-top: 5px;">Please enter <b>Home</b> in the field</div>
</umb-tour-step-content>
<umb-tour-step-footer class="flex justify-between items-center">
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
<div>
<umb-button size="xs" button-style="success" type="button" action="vm.initNextStep()" label="Next"></umb-button>
</div>
</umb-tour-step-footer>
</umb-tour-step>
</div>
@@ -0,0 +1,29 @@
<div ng-controller="Umbraco.Tours.UmbIntroMediaSection.FolderNameController as vm">
<umb-tour-step on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
<div ng-if="vm.error" class="color-red" style="margin-top: 5px;">Please enter <b>My Images</b> in the field</div>
</umb-tour-step-content>
<umb-tour-step-footer class="flex justify-between items-center">
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
<div>
<umb-button size="xs" button-style="success" type="button" action="vm.initNextStep()" label="Next" state="vm.buttonState"></umb-button>
</div>
</umb-tour-step-footer>
</umb-tour-step>
</div>
@@ -0,0 +1,29 @@
<div ng-controller="Umbraco.Tours.UmbIntroMediaSection.UploadImagesController as vm">
<umb-tour-step on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
<div ng-if="vm.error" class="color-red" style="margin-top: 5px;">Please upload an image</div>
</umb-tour-step-content>
<umb-tour-step-footer class="flex justify-between items-center">
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
<div>
<umb-button size="xs" button-style="success" type="button" action="vm.initNextStep()" label="Next" state="vm.buttonState"></umb-button>
</div>
</umb-tour-step-footer>
</umb-tour-step>
</div>
@@ -0,0 +1,22 @@
<div ng-controller="Umbraco.Tours.UmbIntroRenderInTemplate.TemplatesTreeController as vm">
<umb-tour-step on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
</umb-tour-step-content>
<umb-tour-step-footer class="flex justify-between items-center">
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
</umb-tour-step-footer>
</umb-tour-step>
</div>
@@ -0,0 +1,19 @@
<div class="umb-backdrop" ng-click="clickBackdrop($event)">
<!-- Backdrop with highlight -->
<div ng-if="highlightElement && !loading" class="umb-backdrop__backdrop">
<div class="umb-backdrop__rect umb-backdrop__rect--top" ng-style="rectTopCss"></div>
<div class="umb-backdrop__rect umb-backdrop__rect--right" ng-style="rectRightCss"></div>
<div class="umb-backdrop__rect umb-backdrop__rect--bottom" ng-style="rectBottomCss"></div>
<div class="umb-backdrop__rect umb-backdrop__rect--left" ng-style="rectLeftCss"></div>
</div>
<!-- Full screen backdrop -->
<div ng-if="!highlightElement || loading" class="umb-backdrop__backdrop">
<div class="umb-backdrop__rect" ng-style="{'opacity': backdropOpacity }"></div>
</div>
<!-- Prevent clicks in highlighted area -->
<div ng-if="highlightPreventClick" class="umb-backdrop__highlight-prevent-click"></div>
</div>
@@ -5,9 +5,8 @@
<div class='umb-modalcolumn-body'>
<ul class="umb-actions">
<li class="action" ng-class="{sep:action.seperator}" ng-repeat="action in menuActions">
<a prevent-default
ng-click="executeMenuItem(action)">
<li data-element="action-{{action.alias}}" ng-click="executeMenuItem(action)" class="action" ng-class="{sep:action.seperator}" ng-repeat="action in menuActions">
<a prevent-default>
<i class="icon icon-{{action.cssclass}}"></i>
<span class="menu-label">{{action.name}}</span>
</a>
@@ -1,5 +1,5 @@
<div id="leftcolumn" ng-controller="Umbraco.NavigationController"
ng-mouseleave="leaveTree($event)" ng-mouseenter="enterTree($event)">
ng-mouseleave="leaveTree($event)" ng-mouseenter="enterTree($event)">
<umb-sections sections="sections" ng-if="authenticated">
</umb-sections>
@@ -13,19 +13,21 @@
<div ng-controller="Umbraco.SearchController" ng-if="authenticated">
<!-- Search form -->
<div id="search-form">
<div data-element="global-search" id="search-form">
<div class="umb-modalcolumn-header">
<form class="form-search" novalidate>
<i class="icon-search"></i>
<input type="text"
hotkey="ctrl+space"
id="search-field"
ng-model="searchTerm"
class="umb-search-field search-query search-input"
localize="placeholder"
placeholder="@placeholders_search"
ng-keydown="navigateResults($event)"/>
<input data-element="global-search-field"
type="text"
hotkey="ctrl+space"
id="search-field"
ng-model="searchTerm"
class="umb-search-field search-query search-input"
localize="placeholder"
placeholder="@placeholders_search"
ng-keydown="navigateResults($event)"
no-dirty-check />
</form>
</div>
</div>
@@ -33,31 +35,42 @@
<!-- Search results -->
<div id="search-results" class="umb-modalcolumn-body" ng-show="showSearchResults">
<ul class="umb-tree">
<umb-load-indicator ng-if="isSearching"></umb-load-indicator>
<umb-empty-state ng-if="!hasResults && !isSearching"
position="center">
<localize key="general_searchNoResult"></localize>
</umb-empty-state>
<ul class="umb-tree" ng-if="!isSearching && hasResults">
<li class="root">
<div>
<h5 class="umb-tree-header"><localize key="general_searchResults">Search results</localize></h5>
</div>
<ul class="umb-search-group" ng-repeat="group in groups">
<li ng-repeat="result in group.results" ng-class="{'current':selectedItem == result}">
<div class="umb-search-group-item">
<a class="umb-search-group-item-link" ng-class="{'first':$first}" ng-click="searchHide()" ng-href="#/{{result.editorPath}}">
<div class="umb-search-group" ng-repeat="(key, group) in groups">
<h6 class="umb-tree-header">{{key}}</h6>
<ul>
<li ng-repeat="result in group.results" ng-class="{'current':selectedItem == result}">
<div class="umb-search-group-item">
<a class="umb-search-group-item-link" ng-class="{'first':$first}" ng-click="searchHide()" ng-href="#/{{result.editorPath}}">
<div class="umb-search-group-item-name">
<i class="icon umb-tree-icon sprTree {{result.icon}}"></i>
{{result.name}}
</div>
<div class="umb-search-group-item-name">
<i class="icon umb-tree-icon sprTree {{result.icon}}"></i>
{{result.name}}
</div>
<small class="search-subtitle" ng-show="result.subTitle">
{{result.subTitle}}
</small>
</a>
<small class="search-subtitle" ng-show="result.subTitle">
{{result.subTitle}}
</small>
</a>
<a href ng-click="searchShowMenu($event, {node: result})" class="umb-options"><i></i><i></i><i></i></a>
</div>
</li>
</ul>
<a href ng-hide="!result.menuUrl" ng-click="searchShowMenu($event, {node: result})" class="umb-options"><i></i><i></i><i></i></a>
</div>
</li>
</ul>
</div>
</li>
</ul>
@@ -67,10 +80,9 @@
<!-- the tree -->
<div id="tree" class="umb-modalcolumn-body" ng-if="authenticated">
<umb-tree
cachekey="_"
eventhandler="treeEventHandler"
section="{{currentSection}}" >
<umb-tree cachekey="_"
eventhandler="treeEventHandler"
section="{{currentSection}}">
</umb-tree>
</div>
</div>
@@ -79,19 +91,18 @@
<!-- The context menu -->
<div id='contextMenu' class="umb-modalcolumn fill shadow" ng-swipe-left="nav.hideMenu()" ng-show="showContextMenu" ng-animate="'slide'">
<umb-context-menu
menu-dialog-title="{{menuDialogTitle}}"
current-section="{{currentSection}}"
current-node="menuNode"
menu-actions="menuActions">
<umb-context-menu menu-dialog-title="{{menuDialogTitle}}"
current-section="{{currentSection}}"
current-node="menuNode"
menu-actions="menuActions">
</umb-context-menu>
</div>
<!-- Tree dialogs -->
<div id="dialog" class='umb-modalcolumn fill shadow'
ng-swipe-left="nav.hideDialog()"
ng-show="showContextMenuDialog" ng-animate="'slide'">
ng-swipe-left="nav.hideDialog()"
ng-show="showContextMenuDialog" ng-animate="'slide'">
<div class='umb-modalcolumn-header'>
<h1>{{menuDialogTitle}}</h1>
</div>
@@ -1,16 +1,18 @@
<div>
<div id="applications" ng-class="{faded:stickyNavigation}">
<ul class="sections">
<li class="avatar">
<li data-element="section-user" id="section-avatar" class="avatar">
<a href="#" ng-click="avatarClick()" hotkey="ctrl+shift+u" title="{{user.name}}" prevent-default>
<umb-avatar
size="xs"
color="secondary"
name="{{user.name}}"
img-src="{{avatar[0].value}}"
img-srcset="{{avatar[1].value}} 2x, {{avatar[2].value}} 3x">
</umb-avatar>
</a>
</li>
<li ng-repeat="section in sections | limitTo: maxSections" ng-class="{current: section.alias == currentSection}">
<li data-element="section-{{section.alias}}" ng-repeat="section in sections | limitTo: maxSections" ng-class="{current: section.alias == currentSection}">
<a href="#/{{section.alias}}"
ng-dblclick="sectionDblClick(section)"
ng-click="sectionClick($event, section)"
@@ -20,13 +22,13 @@
</a>
</li>
<li class="expand" ng-class="{ 'open': showTray === true }" ng-show="needTray">
<li data-element="section-expand" class="expand" ng-class="{ 'open': showTray === true }" ng-show="needTray">
<a href ng-click="trayClick()">
<i class="icon icon-arrow-right"></i>
</a>
</li>
<li class="help">
<li data-element="section-help" class="help">
<a href class="help" hotkey="ctrl+shift+h" ng-click="helpClick()" prevent-default>
<i class="icon-help-alt"></i>
<span><localize key="sections_help">Help</localize></span>
@@ -50,17 +52,19 @@
</div>
<umb-overlay
ng-if="helpDialog.show"
model="helpDialog"
view="helpDialog.view"
position="left">
data-element="overlay-help"
ng-if="helpDialog.show"
model="helpDialog"
view="helpDialog.view"
position="left">
</umb-overlay>
<umb-overlay
ng-if="userDialog.show"
model="userDialog"
view="userDialog.view"
position="left">
data-element="overlay-user"
ng-if="userDialog.show"
model="userDialog"
view="userDialog.view"
position="left">
</umb-overlay>
</div>
@@ -0,0 +1,86 @@
<div class="umb-tour">
<div class="umb-loader umb-tour__loader" ng-if="loadingStep"></div>
<div class="umb-tour__pulse"></div>
<div class="umb-tour__popover shadow-depth-2" ng-class="{'umb-tour__popover--l': model.currentStep.type === 'intro' || model.currentStepIndex === model.steps.length}">
<div ng-if="!configuredView && !elementNotFound">
<!-- Regular steps -->
<umb-tour-step ng-if="model.currentStepIndex < model.steps.length" on-close="model.endTour()">
<umb-tour-step-header
title="model.currentStep.title">
</umb-tour-step-header>
<umb-tour-step-content
content="model.currentStep.content">
</umb-tour-step-content>
<umb-tour-step-footer>
<div class="flex justify-between items-center">
<div>
<umb-tour-step-counter
current-step="model.currentStepIndex + 1"
total-steps="model.steps.length">
</umb-tour-step-counter>
<div ng-if="model.allowDisable && model.currentStep.type === 'intro'" style="font-size: 13px;"><a href="" class="underline" ng-click="model.disableTour()">Don't show this tour again</a></div>
</div>
<div ng-if="model.currentStep.type !== 'intro'">
<umb-button size="xs" ng-if="!model.currentStep.event" button-style="success" type="button" action="model.nextStep()" label="Next"></umb-button>
</div>
<div ng-if="model.currentStep.type === 'intro'">
<umb-button size="m" button-style="success" type="button" action="model.nextStep()" label="Start tour"></umb-button>
</div>
</div>
</umb-tour-step-footer>
</umb-tour-step>
<!-- Outro step -->
<umb-tour-step ng-if="model.currentStepIndex === model.steps.length" class="tc" hide-close="model.currentStepIndex === model.steps.length">
<umb-tour-step-content>
<div class="flex items-center justify-center">
<umb-checkmark size="xl" checked="true"></umb-checkmark>
</div>
<h3 class="bold">Congratulations!</h3>
<p>You have reached the end of the <b>{{model.name}}</b> tour - way to go!</p>
</umb-tour-step-content>
<umb-tour-step-footer>
<umb-button type="button" button-style="success" size="m" action="model.completeTour()" label="Complete"></umb-button>
</umb-tour-step-footer>
</umb-tour-step>
</div>
<!-- Custom step view -->
<div ng-if="configuredView && !loadingStep && !elementNotFound" ng-include="configuredView"></div>
<!-- Dom element not found error -->
<div ng-if="elementNotFound && !loadingStep">
<umb-tour-step class="tc">
<umb-tour-step-header>
<h4 class="bold color-red">Oh, we got lost!</h4>
</umb-tour-step-header>
<umb-tour-step-content>
<p>We lost the next step <b>{{ model.currentStep.title }}</b> and don't know where to go.</p>
<p>Please go back and start the tour again.</p>
</umb-tour-step-content>
<umb-tour-step-footer>
<umb-button size="s" button-style="success" type="button" action="model.endTour()" label="End tour"></umb-button>
</umb-tour-step-footer>
</umb-tour-step>
</div>
</div>
</div>
@@ -0,0 +1 @@
<div class="umb-drawer-content" ng-transclude></div>
@@ -0,0 +1 @@
<div class="umb-drawer-footer" ng-transclude></div>
@@ -0,0 +1,4 @@
<div class="umb-drawer-header">
<div class="umb-drawer-header__title">{{ title }}</div>
<div class="umb-drawer-header__subtitle">{{ description }}</div>
</div>
@@ -0,0 +1 @@
<div class="umb-drawer-view" ng-transclude></div>
@@ -0,0 +1,3 @@
<div class="umb-drawer">
<div style="height: 100%;" ng-if="configuredView" ng-include="configuredView"></div>
</div>
@@ -0,0 +1,4 @@
<div class="umb-tour-step__content">
<div ng-bind-html="content"></div>
<div ng-transclude></div>
</div>
@@ -0,0 +1 @@
<div class="umb-tour-step__counter">{{ currentStep }}/{{ totalSteps }}</div>
@@ -0,0 +1 @@
<div class="umb-tour-step__footer" ng-transclude></div>
@@ -0,0 +1,4 @@
<div class="umb-tour-step__header">
<div class="umb-tour-step__title">{{title}}</div>
<div ng-transclude></div>
</div>
@@ -0,0 +1,10 @@
<div class="umb-tour-step umb-tour-step--{{size}}">
<div ng-if="hideClose !== true">
<i class="icon-wrong umb-tour-step__close" ng-click="close()"></i>
</div>
<div ng-transclude></div>
</div>
@@ -1,6 +1,8 @@
<div class="btn-group umb-button-group" ng-class="{'dropup': direction === 'up'}">
<umb-button
ng-if="defaultButton"
alias="{{defaultButton.alias ? defaultButton.alias : 'groupPrimary' }}"
type="button"
action="defaultButton.handler()"
button-style="success"
@@ -11,13 +13,13 @@
shortcut-when-hidden="{{defaultButton.hotKeyWhenHidden}}">
</umb-button>
<a class="btn btn-success dropdown-toggle umb-button-group__toggle" data-toggle="dropdown" ng-if="subButtons.length > 0">
<a data-element="button-group-toggle" class="btn btn-success dropdown-toggle umb-button-group__toggle" data-toggle="dropdown" ng-if="subButtons.length > 0">
<span class="caret"></span>
</a>
<ul aria-labelledby="dLabel" class="dropdown-menu bottom-up umb-button-group__sub-buttons" ng-if="subButtons.length > 0" role="menu" ng-class="{'-align-right': float === 'right'}">
<li ng-repeat="subButton in subButtons">
<a href="#" ng-click="subButton.handler()" hotkey="{{subButton.hotKey}}" hotkey-when-hidden="{{subButton.hotKeyWhenHidden}}" prevent-default>
<a data-element="{{subButton.alias ? 'button-' + subButton.alias : 'button-group-secondary-' + $index }}" href="#" ng-click="subButton.handler()" hotkey="{{subButton.hotKey}}" hotkey-when-hidden="{{subButton.hotKeyWhenHidden}}" prevent-default>
<localize key="{{subButton.labelKey}}">{{subButton.labelKey}}</localize>
</a>
</li>
@@ -1,32 +1,32 @@
<div class="btn-group umb-button">
<div class="umb-button" ng-class="{'umb-button--block': blockElement}" data-element="{{ alias ? 'button-' + alias : '' }}">
<div class="icon-check umb-button__success" ng-class="{'-hidden': state !== 'success', '-white': style}"></div>
<div class="icon-check umb-button__success" ng-class="{'-hidden': innerState !== 'success', '-white': style}"></div>
<div class="icon-delete umb-button__error" ng-class="{'-hidden': state !== 'error', '-white': style}"></div>
<div class="icon-delete umb-button__error" ng-class="{'-hidden': innerState !== 'error', '-white': style}"></div>
<div class="umb-button__progress" ng-class="{'-hidden': state !== 'busy', '-white': style}"></div>
<div class="umb-button__progress" ng-class="{'-hidden': innerState !== 'busy', '-white': style}"></div>
<div ng-if="state !== 'init'" class="umb-button__overlay"></div>
<div ng-if="innerState !== 'init'" class="umb-button__overlay"></div>
<a ng-if="type === 'link'" href="{{href}}" class="btn umb-button__button {{style}}" ng-click="action(model)" hotkey="{{shortcut}}" hotkey-when-hidden="{{shortcutWhenHidden}}">
<span class="umb-button__content" ng-class="{'-hidden': state !== 'init'}">
<i ng-if="icon && buttonStyle==='link'" class="{{icon}} umb-button__icon"></i>
<a ng-if="type === 'link'" href="{{href}}" class="btn umb-button__button {{style}} umb-button--{{size}}" ng-click="action(model)" hotkey="{{shortcut}}" hotkey-when-hidden="{{shortcutWhenHidden}}">
<span class="umb-button__content" ng-class="{'-hidden': innerState !== 'init'}">
<i ng-if="icon" class="{{icon}} umb-button__icon"></i>
<localize ng-if="labelKey" key="{{labelKey}}">{{label}}</localize>
<span ng-if="!labelKey">{{label}}</span>
</span>
</a>
<button ng-if="type === 'button'" type="button" class="btn umb-button__button {{style}}" ng-click="action(model)" hotkey="{{shortcut}}" hotkey-when-hidden="{{shortcutWhenHidden}}" ng-disabled="disabled">
<span class="umb-button__content" ng-class="{'-hidden': state !== 'init'}">
<i ng-if="icon && buttonStyle==='link'" class="{{icon}} umb-button__icon"></i>
<button ng-if="type === 'button'" type="button" class="btn umb-button__button {{style}} umb-button--{{size}}" ng-click="action(model)" hotkey="{{shortcut}}" hotkey-when-hidden="{{shortcutWhenHidden}}" ng-disabled="disabled">
<span class="umb-button__content" ng-class="{'-hidden': innerState !== 'init'}">
<i ng-if="icon" class="{{icon}} umb-button__icon"></i>
<localize ng-if="labelKey" key="{{labelKey}}">{{label}}</localize>
<span ng-if="!labelKey">{{label}}</span>
</span>
</button>
<button ng-if="type === 'submit'" type="submit" class="btn umb-button__button {{style}}" hotkey="{{shortcut}}" hotkey-when-hidden="{{shortcutWhenHidden}}" ng-disabled="disabled">
<span class="umb-button__content" ng-class="{'-hidden': state !== 'init'}">
<i ng-if="icon && buttonStyle==='link'" class="{{icon}} umb-button__icon"></i>
<button ng-if="type === 'submit'" type="submit" class="btn umb-button__button {{style}} umb-button--{{size}}" hotkey="{{shortcut}}" hotkey-when-hidden="{{shortcutWhenHidden}}" ng-disabled="disabled">
<span class="umb-button__content" ng-class="{'-hidden': innerState !== 'init'}">
<i ng-if="icon" class="{{icon}} umb-button__icon"></i>
<localize ng-if="labelKey" key="{{labelKey}}">{{label}}</localize>
<span ng-if="!labelKey">{{label}}</span>
</span>
@@ -0,0 +1,19 @@
<button ng-click="click()" type="button" class="umb-toggle dib" ng-class="{'umb-toggle--checked': checked}">
<span ng-if="!labelPosition && showLabels === 'true' || labelPosition === 'left' && showLabels === 'true'">
<span ng-if="!checked" class="umb-toggle__label umb-toggle__label--left">{{ displayLabelOff }}</span>
<span ng-if="checked" class="umb-toggle__label umb-toggle__label--left">{{ displayLabelOn }}</span>
</span>
<div class="umb-toggle__toggle">
<i ng-show="checked && !hideIcons" class="umb-toggle__icon umb-toggle__icon--left icon-check"></i>
<div class="umb-toggle__handler shadow-depth-1"></div>
<i ng-show="!checked && !hideIcons" class="umb-toggle__icon umb-toggle__icon--right icon-wrong"></i>
</div>
<span ng-if="labelPosition === 'right' && showLabels === 'true'">
<span ng-if="!checked" class="umb-toggle__label umb-toggle__label--right">{{ displayLabelOff }}</span>
<span ng-if="checked" class="umb-toggle__label umb-toggle__label--right">{{ displayLabelOn }}</span>
</span>
</button>
@@ -0,0 +1,108 @@
<div>
<umb-load-indicator ng-if="page.loading"></umb-load-indicator>
<form name="contentForm"
ng-submit="save()"
novalidate
val-form-manager>
<umb-editor-view ng-if="!page.loading" umb-tabs>
<umb-editor-header
menu="page.menu"
name="content.name"
tabs="content.tabs"
hide-icon="true"
hide-description="true"
hide-alias="true">
</umb-editor-header>
<umb-editor-container>
<umb-tabs-content class="form-horizontal" view="true">
<umb-tab id="tab{{tab.id}}" ng-repeat="tab in content.tabs" rel="{{tab.id}}">
<!-- Other tabs than info -->
<div ng-if="tab.id !== -1 && tab.alias !== '_umb_infoTab'">
<umb-property data-element="property-{{property.alias}}" ng-repeat="property in tab.properties" property="property">
<umb-editor model="property"></umb-editor>
</umb-property>
</div>
<!-- Info tab -->
<div ng-if="tab.id === -1 && tab.alias === '_umb_infoTab'">
<umb-content-node-info
ng-if="content"
node="content">
</umb-content-node-info>
</div>
</umb-tab>
</umb-tabs-content>
</umb-editor-container>
<umb-editor-footer>
<umb-editor-footer-content-left>
<umb-breadcrumbs
ng-if="ancestors && ancestors.length > 0"
ancestors="ancestors"
entity-type="content">
</umb-breadcrumbs>
</umb-editor-footer-content-left>
<umb-editor-footer-content-right>
<umb-button
alias="returnToListView"
ng-if="page.listViewPath"
type="link"
href="#{{page.listViewPath}}"
label="Return to list"
label-key="buttons_returnToList">
</umb-button>
<umb-button
alias="preview"
ng-if="!page.isNew && content.allowPreview"
type="button"
button-style="info"
action="preview(content)"
label="Preview page"
label-key="buttons_showPage">
</umb-button>
<umb-button-group
ng-if="defaultButton && !content.trashed"
default-button="defaultButton"
sub-buttons="subButtons"
state="page.buttonGroupState"
direction="up"
float="right">
</umb-button-group>
<umb-button
alias="restore"
ng-if="content.trashed"
type="button"
button-style="primary"
action="restore(content)"
state="page.buttonRestore"
label="Restore">
</umb-button>
</umb-editor-footer-content-right>
</umb-editor-footer>
</umb-editor-view>
</form>
</div>
@@ -0,0 +1,212 @@
<div class="umb-package-details">
<div class="umb-package-details__main-content">
<umb-box data-element="node-info-urls">
<umb-box-header title-key="general_links"></umb-box-header>
<umb-box-content class="block-form">
<ul class="nav nav-stacked" style="margin-bottom: 0;">
<li ng-repeat="url in node.urls">
<a ng-if="node.hasPublishedVersion" href="{{url}}" target="_blank">
<i class="icon icon-window-popin"></i>
<span>{{url}}</span>
</a>
<div ng-if="!node.hasPublishedVersion">
<i class="icon icon-window-popin"></i>
<span>{{url}}</span>
</div>
</li>
</ul>
</umb-box-content>
</umb-box>
<umb-box data-element="node-info-history">
<umb-box-header title-key="general_history"></umb-box-header>
<umb-box-content class="block-form">
<div style="position: relative;">
<div ng-if="loadingAuditTrail" style="background: rgba(255, 255, 255, 0.8); position: absolute; top: 0; left: 0; right: 0; bottom: 0;"></div>
<umb-load-indicator ng-if="loadingAuditTrail"></umb-load-indicator>
<div ng-if="auditTrail.length === 0" style="padding: 10px;">
<umb-empty-state position="center"
size="small">
<localize key="content_noChanges"></localize>
</umb-empty-state>
</div>
<div class="history">
<div ng-if="auditTrail.length > 1" class="history-line"></div>
<div class="history-item" ng-repeat="item in auditTrail">
<div class="history-item__break">
<div class="history-item__avatar">
<umb-avatar color="secondary"
size="xs"
name="{{item.userName}}"
img-src="{{item.userAvatars[3]}}"
img-srcset="{{item.userAvatars[4]}} 2x, {{item.userAvatars[4]}} 3x">
</umb-avatar>
</div>
<div>
<div>{{ item.userName }}</div>
<div class="history-item__date">{{item.timestampFormatted}}</div>
</div>
</div>
<div class="history-item__break">
<umb-badge size="xs"
color="{{item.logTypeColor}}">
<!--{{ item.logType }}-->
<localize key="auditTrails_small{{ item.logType }}">{{ item.logType }}</localize>
</umb-badge>
<span>
<localize key="auditTrails_{{ item.logType | lowercase }}">{{ item.comment }}</localize>
</span>
<!--<span>{{ item.comment }}</span>-->
</div>
</div>
</div>
</div>
<div class="flex justify-center">
<umb-pagination ng-if="auditTrailOptions.totalPages > 1"
page-number="auditTrailOptions.pageNumber"
total-pages="auditTrailOptions.totalPages"
on-change="auditTrailPageChange(pageNumber)">
</umb-pagination>
</div>
</umb-box-content>
</umb-box>
</div>
<div class="umb-package-details__sidebar">
<umb-box data-element="node-info-scheduled-publishing">
<umb-box-header title-key="general_scheduledPublishing"></umb-box-header>
<umb-box-content class="block-form">
<div class="date-wrapper">
<div class="flex items-center flex-column">
<umb-date-time-picker data-element="node-info-publish"
options="datePickerConfig"
on-change="datePickerChange(event, 'publish')">
<div class="date-container">
<div class="date-container__title">
<localize key="content_releaseDate"></localize>
</div>
<div class="date-container__date" ng-if="node.releaseDate">
<div class="date-wrapper__date">{{node.releaseDateMonth}} {{node.releaseDateYear}}</div>
<div class="date-wrapper__number">{{node.releaseDateDayNumber}}</div>
<div class="date-wrapper__date">{{node.releaseDateDay}} {{node.releaseDateTime}}</div>
</div>
<a href="" ng-if="!node.releaseDate" class="bold" style="color: #00aea2; text-decoration: underline;"><localize key="content_setDate">Set date</localize></a>
</div>
</umb-date-time-picker>
<a ng-if="node.releaseDate" ng-click="clearPublishDate()" href="" style="text-decoration: underline;">
<small><localize key="content_removeDate">Clear date</localize></small>
</a>
</div>
<div class="date-separate"></div>
<div class="flex items-center flex-column">
<umb-date-time-picker data-element="node-info-unpublish"
options="datePickerConfig"
on-change="datePickerChange(event, 'unpublish')">
<div class="date-container">
<div class="date-container__title">
<localize key="content_unpublishDate"></localize>
</div>
<div class="date-container__date" ng-if="node.removeDate">
<div class="date-wrapper__date">{{node.removeDateMonth}} {{node.removeDateYear}}</div>
<div class="date-wrapper__number">{{node.removeDateDayNumber}}</div>
<div class="date-wrapper__date">{{node.removeDateDay}} {{node.removeDateTime}}</div>
</div>
<a href="" ng-if="!node.removeDate" class="bold" style="color: #00aea2; text-decoration: underline;"><localize key="content_setDate">Set date</localize></a>
</div>
</umb-date-time-picker>
<a ng-if="node.removeDate" ng-click="clearUnpublishDate()" href="" style="text-decoration: underline;">
<small><localize key="content_removeDate">Clear date</localize></small>
</a>
</div>
</div>
</umb-box-content>
</umb-box>
<umb-box data-element="node-info-general">
<umb-box-header title-key="general_general"></umb-box-header>
<umb-box-content class="block-form">
<umb-control-group data-element="node-info-status" label="@general_status">
<umb-badge size="xs" color="{{publishStatus.color}}">
{{publishStatus.label}}
</umb-badge>
</umb-control-group>
<umb-control-group data-element="node-info-create-date" label="@template_createdDate">
{{node.createDateFormatted}} <localize key="general_by">by</localize> {{ node.owner.name }}
</umb-control-group>
<umb-control-group data-element="node-info-document-type" label="@content_documentType">
<umb-node-preview
style="max-width: 100%; margin-bottom: 0;"
icon="node.icon"
name="node.contentTypeName"
allow-open="allowOpen"
on-open="openDocumentType(documentType)"
open-url="previewOpenUrl">
</umb-node-preview>
</umb-control-group>
<umb-control-group ng-if="disableTemplates == false" data-element="node-info-template" label="@template_template">
<div class="flex items-center">
<select class="input-block-level"
ng-model="node.template"
ng-options="key as value for (key, value) in availableTemplates"
ng-change="updateTemplate(node.template)">
<option value=""><localize key="general_choose">Choose</localize>...</option>
</select>
<a href="" class="umb-node-preview__action" style="margin-left:15px;" ng-click="openTemplate()" ng-if="node.template !== null && allowOpen">
<localize key="general_open">Open</localize>
</a>
</div>
</umb-control-group>
<umb-control-group data-element="node-info-id" label="Id">
<div>{{ node.id }}</div>
<small>{{ node.key }}</small>
</umb-control-group>
</umb-box-content>
</umb-box>
</div>
</div>
@@ -1,10 +1,15 @@
<ul class="umb-breadcrumbs">
<li class="umb-breadcrumbs__ancestor" ng-repeat="ancestor in ancestors">
<li class="umb-breadcrumbs__ancestor" ng-repeat="ancestor in ancestors">
<!-- go to node on click -->
<a ng-if="!$last && !allowOnOpen" href="#/{{entityType}}/{{entityType}}/edit/{{ancestor.id}}" class="umb-breadcrumbs__ancestor-link" title="{{ancestor.name}}">{{ancestor.name}}</a>
<a ng-if="!$last" href="#/{{entityType}}/{{entityType}}/edit/{{ancestor.id}}" class="umb-breadcrumbs__ancestor-link" title="{{ancestor.name}}">{{ancestor.name}}</a>
<span ng-if="!$last" class="umb-breadcrumbs__seperator">&#47;</span>
<!-- use callback to handle click -->
<a ng-if="!$last && allowOnOpen" href="#" ng-click="open(ancestor)" class="umb-breadcrumbs__ancestor-link" title="{{ancestor.name}}" prevent-default>{{ancestor.name}}</a>
<span class="umb-breadcrumbs__ancestor-text" ng-if="$last" title="{{ancestor.name}}">{{ancestor.name}}</span>
<span ng-if="!$last" class="umb-breadcrumbs__seperator">&#47;</span>
</li>
</ul>
<span class="umb-breadcrumbs__ancestor-text" ng-if="$last" title="{{ancestor.name}}">{{ancestor.name}}</span>
</li>
</ul>
@@ -1,4 +1,4 @@
<div class="umb-editor-container umb-panel-body umb-scrollable row-fluid" ng-class="{'-stop-scrolling': numberOfOverlays > 0}">
<div data-element="editor-container" class="umb-editor-container umb-panel-body umb-scrollable row-fluid" ng-class="{'-stop-scrolling': numberOfOverlays > 0}">
<umb-overlay-backdrop></umb-overlay-backdrop>
<div class="umb-pane">
<div ng-transclude></div>
@@ -1,4 +1,4 @@
<div class="umb-tab-buttons umb-editor-drawer">
<div data-element="editor-footer" class="umb-tab-buttons umb-editor-drawer">
<div class="umb-editor-drawer-content" ng-transclude>
@@ -1,22 +1,26 @@
<div class="umb-editor-header umb-panel-header">
<div data-element="editor-header" class="umb-editor-header umb-panel-header">
<div class="umb-panel-header-content-wrapper">
<div class="umb-panel-header-content">
<div class="umb-panel-header-left-side" ng-class="{'-top-position': tabs || !icon }">
<div class="umb-panel-header-icon" ng-if="!hideIcon" ng-click="openIconPicker()" ng-class="{'-placeholder': $parent.icon==='' || $parent.icon===null}" title="{{$parent.icon}}">
<i class="icon {{$parent.icon}}" ng-if="$parent.icon!=='' && $parent.icon!==null"></i>
<div class="umb-panel-header-icon-text" ng-if="$parent.icon==='' || $parent.icon===null">
<localize key="settings_addIcon"></localize>
</div>
</div>
<div class="umb-panel-header-left-side" ng-class="{'-top-position': tabs || !icon && hideDescription}">
<ng-form data-element="editor-icon" name="iconForm">
<div class="umb-panel-header-icon" ng-if="!hideIcon" ng-click="openIconPicker()" ng-class="{'-placeholder': $parent.icon==='' || $parent.icon===null}" title="{{$parent.icon}}">
<i class="icon {{$parent.icon}}" ng-if="$parent.icon!=='' && $parent.icon!==null"></i>
<div class="umb-panel-header-icon-text" ng-if="$parent.icon==='' || $parent.icon===null">
<localize key="settings_addIcon"></localize>
</div>
</div>
</ng-form>
<div class="umb-panel-header-title-wrapper">
<ng-form name="headerNameForm">
<input
data-element="editor-name-field"
title="{{key}}"
type="text"
class="umb-panel-header-name-input"
localize="placeholder"
@@ -26,38 +30,50 @@
ng-model="name"
ng-class="{'name-is-empty': $parent.name===null || $parent.name===''}"
umb-auto-focus
val-server-field="Name"
required />
</ng-form>
<div class="umb-panel-header-name" ng-if="nameLocked">{{ name }}</div>
<div class="umb-panel-header-name" ng-if="nameLocked" title="{{key}}">{{ name }}</div>
<umb-generate-alias class="umb-panel-header-alias"
ng-if="!hideAlias"
alias="$parent.alias"
alias-from="$parent.name"
enable-lock="true"
server-validation-field="Alias"></umb-generate-alias>
<umb-generate-alias
data-element="editor-alias"
class="umb-panel-header-alias"
ng-if="!hideAlias"
alias="$parent.alias"
alias-from="$parent.name"
enable-lock="true"
server-validation-field="Alias">
</umb-generate-alias>
<input
data-element="editor-description"
type="text"
class="umb-panel-header-description"
localize="placeholder"
placeholder="@placeholders_enterDescription"
ng-if="!hideDescription && !descriptionLocked"
ng-model="$parent.description" />
<div class="umb-panel-header-locked-description" ng-show="descriptionLocked">{{ description }}</div>
<input
type="text"
class="umb-panel-header-description"
localize="placeholder"
placeholder="@placeholders_enterDescription"
ng-if="!hideDescription"
ng-model="$parent.description" />
</div>
<umb-editor-menu
class="umb-editor-header__actions-menu"
ng-if="menu.currentNode"
current-node="menu.currentNode"
current-section="{{menu.currentSection}}">
</umb-editor-menu>
<div class="umb-editor-header__actions-menu">
<umb-editor-menu
data-element="editor-actions"
ng-if="menu.currentNode"
current-node="menu.currentNode"
current-section="{{menu.currentSection}}">
</umb-editor-menu>
</div>
</div>
<umb-editor-navigation
data-element="editor-sub-views"
ng-if="navigation"
navigation="navigation">
</umb-editor-navigation>
@@ -65,6 +81,7 @@
</div>
<umb-tabs-nav
data-element="editor-tabs"
ng-if="tabs"
model="tabs">
</umb-tabs-nav>
@@ -72,10 +89,11 @@
</div>
<umb-overlay
ng-if="dialogModel.show"
model="dialogModel"
position="right"
view="dialogModel.view">
data-element="editor-overlay-icon-picker"
ng-if="dialogModel.show"
model="dialogModel"
position="right"
view="dialogModel.view">
</umb-overlay>
</div>
@@ -1,7 +1,7 @@
<div class="btn-group pull-right">
<div class="pull-right" style="position: relative;">
<!-- options button -->
<a class="btn" href="#" ng-click="getOptions()" prevent-default data-toggle="dropdown">
<a class="btn btn-info" href="#" ng-click="getOptions()" prevent-default data-toggle="dropdown">
<localize key="general_actions">Actions</localize>
<span class="caret"></span>
</a>
@@ -1,7 +1,8 @@
<div>
<ul class="umb-sub-views-nav" ng-if="showNavigation">
<li ng-repeat="item in navigation">
<a tabindex="-1"
<a data-element="sub-view-{{item.alias}}"
tabindex="-1"
class="umb-sub-views-nav-item"
href=""
ng-click="clickNavigationItem(item)"
@@ -1,4 +1,4 @@
<div class="umb-panel umb-editor-wrapper"
<div class="umb-panel umb-editor-wrapper"
ng-class="{
'-no-footer': footer === 'false'
}"
@@ -0,0 +1 @@
<div class="umb-box-content" ng-transclude></div>
@@ -0,0 +1,10 @@
<div class="umb-box-header" ng-transclude>
<div class="umb-box-header-title" ng-if="title || titleKey">
<localize ng-if="titleKey" key="{{titleKey}}"></localize>
<span ng-if="title">{{title}}</span>
</div>
<div class="umb-box-header-description" ng-if="description || descriptionKey">
<localize ng-if="descriptionKey" key="{{descriptionKey}}"></localize>
<span ng-if="description">{{description}}</span>
</div>
</div>
@@ -0,0 +1 @@
<div class="umb-box" ng-transclude></div>
@@ -2,12 +2,13 @@
<div class="control-group umb-control-group" ng-class="{error: !formValid(), hidelabel:hideLabel=='true'}">
<div class="umb-el-wrap">
<label ng-if="hideLabel!=='true'" class="control-label" for="{{alias}}">
{{labelstring}}
<small>{{descriptionstring}}</small>
<span ng-bind-html="labelstring"></span>
<span ng-if="required">
<strong class="umb-control-required">*</strong>
</span>
<small ng-if="descriptionstring">{{descriptionstring}}</small>
</label>
<div class="controls controls-row" ng-transclude>
</div>
<div class="controls controls-row" ng-transclude></div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,59 @@
<div class="umb-package-details">
<div class="umb-package-details__main-content">
<umb-box data-element="node-info-urls">
<umb-box-header title-key="general_links"></umb-box-header>
<umb-box-content class="block-form">
<umb-empty-state
ng-if="!nodeUrl"
size="small">
<localize key="content_noMediaLink"></localize>
</umb-empty-state>
<ul ng-if="nodeUrl" class="nav nav-stacked" style="margin-bottom: 0;">
<li>
<a href="{{nodeUrl}}" target="_blank">
<i class="icon icon-window-popin"></i>
<span>{{nodeUrl}}</span>
</a>
</li>
</ul>
</umb-box-content>
</umb-box>
</div>
<div class="umb-package-details__sidebar">
<umb-box data-element="node-info-general">
<umb-box-header title-key="general_general"></umb-box-header>
<umb-box-content class="block-form">
<umb-control-group data-element="node-info-create-date" label="@content_createDate">
{{node.createDateFormatted}} by {{ node.owner.name }}
</umb-control-group>
<umb-control-group data-element="node-info-update-date" label="@content_updateDate">
{{node.updateDateFormatted}}
</umb-control-group>
<umb-control-group data-element="node-info-media-type" label="@content_mediatype">
<umb-node-preview
style="max-width: 100%; margin-bottom: 0px;"
icon="node.icon"
name="node.contentTypeName"
allow-open="allowOpen"
on-open="openMediaType(mediaType)">
</umb-node-preview>
</umb-control-group>
<umb-control-group data-element="node-info-id" label="Id">
<div>{{ node.id }}</div>
<small>{{ node.key }}</small>
</umb-control-group>
</umb-box-content>
</umb-box>
</div>
</div>
@@ -1,12 +1,12 @@
<div class="umb-overlay umb-overlay-{{position}}" on-outside-click="closeOverLay()">
<div data-element="overlay" class="umb-overlay umb-overlay-{{position}}" on-outside-click="closeOverLay()">
<ng-form class="umb-overlay__form" name="overlayForm" novalidate val-form-manager>
<div class="umb-overlay-header">
<div data-element="overlay-header" class="umb-overlay-header">
<h4 class="umb-overlay__title">{{model.title}}</h4>
<p class="umb-overlay__subtitle">{{model.subtitle}}</p>
</div>
<div class="umb-overlay-container form-horizontal" ng-transclude>
<div data-element="overlay-content" class="umb-overlay-container form-horizontal" ng-transclude>
<div ng-if="view" ng-include="view"></div>
</div>
@@ -21,7 +21,7 @@
</div>
<div class="umb-overlay-drawer" ng-class="{'-auto-height': model.confirmSubmit.show}">
<div data-element="overlay-footer" class="umb-overlay-drawer" ng-class="{'-auto-height': model.confirmSubmit.show}">
<div ng-if="model.confirmSubmit.show">
@@ -35,6 +35,7 @@
<div class="umb-overlay-drawer__align-right">
<umb-button
alias="overlayCancelSubmit"
action="cancelConfirmSubmit()"
button-style="link"
label="Cancel"
@@ -42,6 +43,7 @@
</umb-button>
<umb-button
data-element="overlay-confirm-submit"
button-style="success"
label="Confirm"
type="button"
@@ -53,6 +55,7 @@
<div class="umb-overlay-drawer__align-right" ng-if="!model.confirmSubmit.show">
<umb-button
alias="overlayClose"
action="closeOverLay()"
button-style="link"
label-key="{{model.closeButtonLabelKey}}"
@@ -61,6 +64,7 @@
</umb-button>
<umb-button
alias="overlaySubmit"
button-style="success"
label-key="{{model.submitButtonLabelKey}}"
label="{{model.submitButtonLabel}}"
@@ -1,14 +1,17 @@
<div class="umb-property">
<ng-form name="propertyForm">
<div class="control-group umb-control-group" ng-class="{hidelabel:property.hideLabel}" >
<div class="control-group umb-control-group" ng-class="{hidelabel:property.hideLabel}">
<val-property-msg property="property"></val-property-msg>
<div class="umb-el-wrap">
<label class="control-label" ng-hide="property.hideLabel" for="{{property.alias}}" ng-attr-title="{{propertyAlias}}">
{{property.label}}
<small ng-bind-html="property.description"></small>
<span ng-if="property.validation.mandatory">
<strong class="umb-control-required">*</strong>
</span>
<small ng-bind-html="property.description | preserveNewLineInHtml"></small>
</label>
<div class="controls" ng-transclude>
@@ -1,5 +1,5 @@
<ul class="nav nav-tabs umb-nav-tabs">
<li ng-class="{'tab-error': tabHasError}" ng-repeat="tab in model" val-tab>
<a data-toggle="tab" href="#tab{{tab.id}}">{{ tab.label }}</a>
<li data-element="tab-{{tab.alias}}" ng-class="{'tab-error': tabHasError}" ng-repeat="tab in model" val-tab>
<a data-toggle="tab" href="#tab{{tab.id}}{{idSuffix}}">{{ tab.label }}</a>
</li>
</ul>

Some files were not shown because too many files have changed in this diff Show More