Add WebCms

This commit is contained in:
2016-11-07 12:56:17 -05:00
parent dfe92218f4
commit 15911f33c0
2750 changed files with 365672 additions and 133 deletions
@@ -0,0 +1,78 @@
@using System.Collections
@using System.Net.Http
@using System.Web.Mvc.Html
@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
@{
Layout = null;
Html
.RequiresCss("assets/css/umbraco.css", "Umbraco")
.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('/')" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Umbraco</title>
@Html.RenderCssHere(
new BasicPath("Umbraco", IOHelper.ResolveUrl(SystemDirectories.Umbraco)),
new BasicPath("UmbracoClient", IOHelper.ResolveUrl(SystemDirectories.UmbracoClient)))
@*Because we're lazy loading angular js, the embedded cloak style will not be loaded initially, but we need it*@
<style>
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important;
}
</style>
</head>
<body id="umbracoMainPageBody" ng-controller="Umbraco.AuthorizeUpgradeController" class="login-only">
<div data-backdrop="false" class="modal hide login-overlay" aria-hidden="false" style="display: block;">
<div ng-include="'views/common/dialogs/login.html'"></div>
</div>
<umb-notifications></umb-notifications>
@{
var externalLoginUrl = Url.Action("ExternalLogin", "BackOffice", new
{
area = ViewBag.UmbracoPath,
//Custom redirect URL since we don't want to just redirect to the back office since this is for authing upgrades
redirectUrl = Url.Action("AuthorizeUpgrade", "BackOffice")
});
}
@Html.BareMinimumServerVariablesScript(Url, externalLoginUrl)
<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>
</body>
</html>
+98
View File
@@ -0,0 +1,98 @@
@using System.Collections
@using System.Net.Http
@using System.Web.Mvc.Html
@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)
{
var parsed = HttpUtility.ParseQueryString(Request.RawUrl.Split('?')[1]);
var attempt = parsed["umbDebug"].TryConvertTo<bool>();
if (attempt && attempt.Result)
{
isDebug = true;
}
}
Html
.RequiresCss("assets/css/umbraco.css", "Umbraco")
.RequiresCss("tree/treeicons.css", "UmbracoClient")
.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('/')" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="robots" content="noindex, nofollow">
<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)">
<umb-navigation></umb-navigation>
<section id="contentwrapper">
<div id="contentcolumn" ng-view>
</div>
</section>
<umb-notifications></umb-notifications>
</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-overlay
ng-if="ysodOverlay.show"
model="ysodOverlay"
position="right"
view="ysodOverlay.view">
</umb-overlay>
</body>
</html>
@@ -0,0 +1,51 @@
<div ng-controller="Umbraco.DashboardController">
<umb-load-indicator ng-if="page.loading"></umb-load-indicator>
<form
ng-show="!page.loading"
class="umb-dashboard"
val-form-manager>
<umb-editor-view
footer="false"
umb-tabs>
<umb-editor-header
name="dashboard.name"
name-locked="page.nameLocked"
tabs="dashboard.tabs"
hide-icon="true"
hide-description="true"
hide-alias="true">
</umb-editor-header>
<umb-editor-container>
<umb-tabs-content view="true">
<umb-tab id="tab{{tab.id}}" ng-repeat="tab in dashboard.tabs" rel="{{tab.id}}">
<div ng-repeat="property in tab.properties" ng-switch on="property.serverSide">
<div class="span12 clearfix" ng-switch-when="false">
<h3 ng-show="property.caption">{{property.caption}}</h3>
<div ng-include="property.path"></div>
</div>
<div class="span12 umb-dashboard-control clearfix" ng-switch-when="true">
<h3 ng-show="property.caption">{{property.caption}}</h3>
<iframe ng-src="dashboard/usercontrolproxy.aspx?ctrl={{ property.path}}"></iframe>
</div>
</div>
</umb-tab>
</umb-tabs-content>
</umb-editor-container>
</umb-editor-view>
</form>
</div>
@@ -0,0 +1,7 @@
<div ng-controller="Umbraco.Dialogs.ApprovedColorController">
<div class='CssClassPickerBox {{(class.mSelectorText.substring(1) == cssClass)? "select" : "" }}'
ng-click="submit(class.mSelectorText.substring(1))" ng-repeat='class in classes'>
<div class='{{class.mSelectorText.substring(1)}}'>
</div>
</div>
</div>
@@ -0,0 +1,61 @@
<form novalidate name="contentForm"
ng-controller="Umbraco.Dialogs.Content.EditController"
ng-show="loaded"
ng-submit="save()"
val-form-manager>
<div class="umb-panel">
<div class="umb-panel-header">
<umb-content-name
placeholder="@placeholders_entername"
ng-model="content.name"/>
</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>
<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_close">Close</localize>
</a>
<div class="btn-group dropup" ng-if="defaultButton">
<!-- primary button -->
<a class="btn btn-success" href="#" ng-click="performAction(defaultButton)" prevent-default>
<localize key="{{defaultButton.labelKey}}">{{defaultButton.labelKey}}</localize>
</a>
<a class="btn btn-success dropdown-toggle" data-toggle="dropdown" ng-if="subButtons.length > 0">
<span class="caret"></span>
</a>
<!-- sub buttons -->
<ul class="dropdown-menu bottom-up" role="menu" aria-labelledby="dLabel" ng-if="subButtons.length > 0">
<li ng-repeat="btn in subButtons">
<a href="#" ng-click="performAction(btn)" prevent-default>
<localize key="{{btn.labelKey}}">{{btn.labelKey}}</localize>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
@@ -0,0 +1,58 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.HelpController">
<div class="umb-panel-header">
<h1 class="headline"><localize key="sections_help">Help</localize></h1>
<small class="umb-version">Umbraco version {{version}}</small>
</div>
<div class="umb-panel-body umb-scrollable">
<div class="tab-content umb-control-group">
<div class="umb-pane">
<h5><localize key="help_helpTopicsFor">Help topics for</localize>: {{sectionName}}</h5>
<ul class="unstyled list-icons" ng-show="topics">
<li ng-repeat="topic in topics">
<i class="icon icon-help-alt"></i>
<a target="_blank" href="{{topic.link}}?utm_source=core&utm_medium=help&utm_content=topic-link&utm_campaign=our" title="{{topic.title}}">
{{topic.title}}
</a>
<small class="umb-detail">{{topic.description}}</small>
</li>
</ul>
<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>
<small class="umb-detail">The friendliest community</small>
</li>
</ul>
</div>
<div class="umb-pane">
<h5><localize key="help_videoChaptersFor">Video chapters for</localize>: {{sectionName}}</h5>
<ul class="thumbnails" ng-show="videos">
<li class="span2" ng-repeat="video in videos">
<div class="thumbnail" style="margin-right: 20px">
<a target="_blank" href="{{video.link}}?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=tv" title="{{video.title}}">
<img ng-src="{{video.thumbnail}}?width=120" alt="{{video.title}}">
</a>
</div>
</li>
</ul>
<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">
<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>
</li>
</ul>
</div>
</div>
</div>
</div>
@@ -0,0 +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">
<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>
</div>
</div>
</div>
<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>
</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>
<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>
@@ -0,0 +1,50 @@
<form novalidate name="insertMacroForm" ng-submit="submitForm()" ng-controller="Umbraco.Dialogs.InsertMacroController" val-form-manager>
<div class="umb-panel">
<div class="umb-panel-footer">
<div class="btn-toolbar umb-btn-toolbar pull-right">
<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>
</div>
</div>
<div class="umb-panel-body no-header umb-scrollable" auto-scale="90" ng-switch="wizardStep">
<umb-control-group label="Choose a macro" ng-switch-when="macroSelect">
<select class="umb-editor" ng-change="submitForm()"
name="selectedMacro"
ng-model="$parent.$parent.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 class="umb-pane" ng-switch-when="paramSelect">
<h5>{{$parent.$parent.selectedMacro.name}}</h5>
<ul class="unstyled">
<li ng-repeat="param in $parent.macroParams">
<ng-form name="parameterForm">
<umb-control-group label="{{param.name}}">
<umb-editor model="param"></umb-editor>
</umb-control-group>
</ng-form>
</li>
</ul>
</div>
</div>
</div>
</form>
@@ -0,0 +1,14 @@
<div class="umb-dialog" ng-controller="Umbraco.Dialogs.LegacyDeleteController">
<div class="umb-dialog-body" >
<div class="umb-pane">
<p>
Are you sure you want to delete <strong>{{currentNode.name}}</strong> ?
</p>
<umb-confirm on-confirm="performDelete" on-cancel="cancel">
</umb-confirm>
</div>
</div>
</div>
@@ -0,0 +1,76 @@
<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="@content_nodeName">
<input type="text"
localize="placeholder"
placeholder="@placeholders_entername"
class="umb-editor umb-textstring"
ng-model="target.name" />
</umb-control-group>
<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>
</select>
</umb-control-group>
</umb-pane>
<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/>
<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>
</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>
<a href ng-click="switchToMediaPicker()" class="btn">Link to file</a>
<button
class="btn btn-primary"
ng-click="submit(target)">
<localize key="buttons_select">Select</localize>
</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1,135 @@
<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'">
<p>
<span ng-show="dialogData.isTimedOut"><localize key="login_timeout">Log in below</localize>.</span>
<localize key="login_instruction">Log in below</localize>
</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 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>
@@ -0,0 +1,38 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.MacroPickerController">
<div class="umb-panel-body no-header with-footer umb-scrollable" ng-switch on="dialogMode">
<div class="umb-control-group">
<div ng-switch-when="list" ng-swicth-default class="tab-content form-horizontal umb-el-wrap">
<ul class="nav nav-tabs nav-stacked">
<li ng-repeat="macro in macros">
<a href="#" ng-click="configureMacro(macro)" prevent-default>
{{macro.name}}
</a>
</li>
</ul>
</div>
<div ng-switch-when="configure" class="tab-content form umb-el-wrap">
<h5>{{dialogData.macro.name}}</h5>
<div class="umb-pane" ng-repeat="model in dialogData.macro.properties">
<label class="control-label" ng-hide="model.hideLabel" for="{{model.alias}}">{{model.label}}
</label>
<div class="controls"
ng-include="model.editorView">
</div>
</div>
</div>
</div>
</div>
<div class="umb-panel-footer">
<div class="umb-el-wrap umb-panel-buttons">
<div class="btn-toolbar umb-btn-toolbar">
<input type="button" ng-click="submit(dialogData)" class="btn btn-primary" value="select" />
</div>
</div>
</div>
</div>
@@ -0,0 +1,159 @@
<form ng-controller="Umbraco.Dialogs.MediaPickerController" id="fileupload"
method="POST"
enctype="multipart/form-data"
umb-image-upload="options">
<div class="umb-panel umb-dialogs-mediapicker" ng-if="target">
<div class="umb-panel-body no-header with-footer compact">
<umb-pane>
<umb-control-group ng-if="target.url">
<div class="clearfix">
<umb-image-gravity src="target.url"
center="target.focalPoint" />
</div>
<div ng-if="cropSize">
<h5>Preview</h5>
<umb-image-thumbnail center="target.focalPoint"
src="target.url"
height="{{cropSize.height}}"
width="{{cropSize.width}}"
max-size="400" />
</div>
</umb-control-group>
<umb-control-group label="@general_url">
<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="@content_altTextOptional">
<input type="text"
class="umb-editor umb-textstring"
ng-model="target.altText" />
</umb-control-group>
</umb-pane>
</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="exitDetails()" class="btn btn-link">
<localize key="general_cancel">Cancel</localize>
</a>
<button class="btn btn-primary"
ng-click="submit(target)">
<localize key="general_insert">Insert</localize>
</button>
</div>
</div>
</div>
</div>
<div class="umb-panel umb-dialogs-mediapicker browser"
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>
<div class="upload-button">
<button class="btn fileinput-button" ng-click="upload()" ng-class="{disabled: disabled}">
<i class="icon-page-up"></i>
<localize key="general_upload">Upload</localize>
</button>
</div>
</div>
<div class="row">
<ul class="breadcrumb span12">
<li ng-hide="startNodeId != -1">
<a href ng-click="gotoFolder()" prevent-default>Media</a> /
</li>
<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>
</a>
<input type="text"
class="input-foldername input-mini inline"
ng-show="showFolderInput"
ng-model="newFolderName"
ng-keydown="submitFolder($event)"
on-blur="showFolderInput = false"
focus-when="{{showFolderInput}}">
</li>
</ul>
</div>
</div>
<div class="umb-panel-body with-footer">
<umb-file-dropzone
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" />
</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>
<button class="btn btn-primary"
ng-show="multiPicker"
ng-click="submit(dialogData.selection)">
<localize key="buttons_select">Select</localize>({{dialogData.selection.length}})
</button>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,34 @@
<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"
hideheader="true"
hideoptions="true"
isdialog="true"
eventhandler="dialogTreeEventHandler"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</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>
<button class="btn btn-primary"
ng-click="submit(dialogData.selection)">
<localize key="buttons_select">Select</localize>
({{dialogData.selection.length}})
</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1 @@
{{propertyTypeToRender}}
@@ -0,0 +1,36 @@
<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">
<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" />
</umb-control-group>
<div ng-show="form.supportsDimensions">
<umb-control-group label="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>
<input id="constrain" type="checkbox" ng-model="form.constrain" style="margin-bottom: 10px;"/>
</umb-control-group>
</div>
<div>
<p ng-bind="form.info"></p>
<div ng-bind-html-unsafe="form.preview"></div>
</div>
</umb-pane>
</div>
<div class="umb-panel-footer">
<div class="btn-toolbar umb-btn-toolbar pull-right">
<a href class="btn btn-link" ng-click="close()">
<localize key="cancel" />
</a>
<input type="button" ng-click="insert()" class="btn btn-primary" value="Ok" ng-disabled="!form.success" />
</div>
</div>
</div>
</form>
@@ -0,0 +1,158 @@
<form novalidate name="contentForm"
ng-controller="Umbraco.Dialogs.Template.QueryBuilderController"
ng-submit="close()"
val-form-manager>
<style>
.umb-querybuilder .row {font-size: 12px; line-height: 12px}
.umb-querybuilder .row a.btn{font-size: 12px; background: lightyellow}
.umb-querybuilder .row > div{
padding: 20px;
border-bottom: 1px solid #efefef;
}
</style>
<div class="umb-panel">
<div class="umb-panel-header">
<h1 class="headline" style="margin: 10px 0 0 0">Build a query</h1>
</div>
<div class="umb-panel-body with-footer umb-querybuilder">
<div class="row">
<div>
I want
<div class="btn-group">
<a class="btn btn-link dropdown-toggle"
data-toggle="dropdown" href="#">
{{query.contentType.name}}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li ng-repeat="contentType in contentTypes">
<a href ng-click="query.contentType = contentType">
{{contentType.name}}
</a>
</li>
</ul>
</div>
<span>from</span>
<a href class="btn btn-link" ng-click="chooseSource(query)">
{{query.source.name}}
<span class="caret"></span>
</a>
</div>
<div ng-repeat="filter in query.filters">
<span ng-if="$first">Where</span>
<span ng-if="!$first">And</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 properties">
<a href ng-click="filter.property = 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 getPropertyOperators(filter.property)">
<a href ng-click="filter.term = term">
{{term.name}}
</a>
</li>
</ul>
</div>
<input type="text" ng-if="filter.term" style="width:90px;" ng-model="filter.constraintValue" />
<a href ng-click="addFilter(query)">
<i class="icon-add"></i>
</a>
<a href ng-if="query.filters.length > 1" ng-click="trashFilter(query)">
<i class="icon-trash"></i>
</a>
</div>
<div>
Order by
<div class="btn-group">
<a class="btn btn-link dropdown-toggle"
data-toggle="dropdown" href="#">
{{query.sort.property.name}}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li ng-repeat="property in properties">
<a href ng-click="setSortProperty(query, property)">
{{property.name}}
</a>
</li>
</ul>
</div>
<a href class="btn" ng-click="changeSortOrder(query)">
{{query.sort.direction}}
</a>
</div>
</div>
<h4>Returns {{result.resultCount}} items in {{result.executionTime}} miliseconds</h4>
<ul class="nav unstyled">
<li ng-repeat="item in result.sampleResults">
<i class="icon icon-document blue"></i> {{item.name}}
</li>
</ul>
<pre>{{result.queryExpression}}</pre>
</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_close">Close</localize>
</a>
<a href ng-click="submit(result.queryExpression)" class="btn btn-primary">Insert</a>
</div>
</div>
</div>
</div>
</div>
</form>
@@ -0,0 +1,37 @@
<form novalidate name="contentForm"
ng-controller="Umbraco.Dialogs.Template.SnippetController"
ng-submit="close()"
val-form-manager>
<div class="umb-panel">
<div class="umb-panel-header">
<div class="panel-dialog--header" style="border-bottom: 1px solid whitesmoke">Configure the section</div>
</div>
<div class="umb-panel-body with-footer umb-querybuilder">
<label>
<div class="input-label--title">
Section name:
</div>
<input type="text" ng-model="section.name"/>
</label>
<label ng-show="type === 'rendersection'">
<input style="margin: 0;" type="checkbox" ng-checked="section.required" ng-model="section.required"/>
<div class="input-label--small">
<localize key="general_required">Required</localize>
</div>
</label>
</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_close">Close</localize>
</a>
<a href ng-click="submit(section)" class="btn btn-primary">Insert</a>
</div>
</div>
</div>
</div>
</form>
@@ -0,0 +1,60 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.TreePickerController">
<div class="umb-panel-header">
<div class="umb-el-wrap umb-panel-buttons">
<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>
<div class="umb-panel-body with-footer">
<div class="tab-content umb-control-group">
<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="{{section}}"
treealias="{{treeAlias}}"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</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>
<button
class="btn btn-primary"
ng-if="dialogOptions.multiPicker"
ng-click="multiSubmit(dialogData.selection)">
<localize key="buttons_select">Select</localize>
({{dialogData.selection.length}})
</button>
</div>
</div>
</div>
</div>
@@ -0,0 +1,119 @@
<div class="umb-panel umb-user-panel" ng-controller="Umbraco.Dialogs.UserController">
<div class="umb-panel-header">
<div class="umb-el-wrap umb-panel-buttons">
<div class="btn-toolbar umb-btn-toolbar">
<button ng-click="logout()" hotkey="ctrl+shift+l" class="btn btn-warning">
<localize key="general_logout">Log out</localize>
</button>
</div>
</div>
<h1 class="headline">{{user.name}}</h1>
<small class="umb-version">Umbraco version {{version}}</small>
<p class="muted">
<small>
<localize key="user_sessionExpires" />: {{remainingAuthSeconds | timespan}}
</small>
</p>
</div>
<div class="umb-panel-body umb-scrollable">
<div class="tab-content umb-control-group">
<div class="umb-pane" ng-if="!showPasswordFields">
<h5><localize key="user_yourProfile" /></h5>
<a href="#/users/framed/%252Fumbraco%252Fusers%252Fedituser.aspx%253Fid%253D{{user.id}}"
class="btn btn-primary"
ng-click="close()"
ng-if="canEditProfile">
<localize key="general_edit">Edit</localize>
</a>
<umb-button
type="button"
action="togglePasswordFields()"
label="Change password"
button-style="success">
</umb-button>
</div>
<div class="umb-pane external-logins" ng-if="externalLoginProviders.length > 0 && !showPasswordFields">
<h5>External login providers</h5>
<div ng-repeat="login in externalLoginProviders">
<form ng-if="login.linkedProviderKey == undefined" method="POST" name="externalLoginForm"
action="{{externalLinkLoginFormAction}}" id="oauthloginform" name="oauthloginform">
<input type="hidden" name="provider" value="{{login.authType}}" />
<button class="btn btn-block btn-social"
ng-class="login.properties.SocialStyle"
id="{{login.authType}}"
onclick="document.forms.oauthloginform.submit();">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
Link your {{login.caption}} account
</button>
</form>
<button ng-if="login.linkedProviderKey != undefined"
ng-click="unlink($event, login.authType, login.linkedProviderKey)"
class="btn btn-block btn-social"
ng-class="login.properties.SocialStyle"
id="{{login.authType}}"
name="provider"
value="{{login.authType}}">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
Un-link your {{login.caption}} account
</button>
</div>
</div>
<div class="umb-pane" ng-if="!showPasswordFields">
<h5><localize key="user_yourHistory" /></h5>
<ul class="umb-tree">
<li ng-repeat="item in history | orderBy:'time':true">
<a ng-href="{{item.link}}" ng-click="gotoHistory(item.link)" prevent-default>
<i class="{{item.icon}}"></i> {{item.name}}
</a>
</li>
</ul>
</div>
<div class="umb-pane" ng-show="showPasswordFields">
<h5>Change password</h5>
<form
name="passwordForm"
class="block-form"
ng-submit="changePassword()"
novalidate
val-form-manager>
<umb-editor model="changePasswordModel"></umb-editor>
<umb-button
type="button"
action="togglePasswordFields()"
label="Back"
button-style="Cancel">
</umb-button>
<umb-button
type="submit"
label="Change password"
state="changePasswordButtonState"
button-style="success">
</umb-button>
</form>
</div>
</div>
</div>
@@ -0,0 +1,28 @@
<div class="umb-panel" ng-controller="Umbraco.Dialogs.YsodController">
<div class="umb-panel-body with-footer no-header">
<h3 style="padding-left: 20px" class="headline red">Received an error from the server</h3>
<umb-pane>
<h4>{{error.errorMsg}}</h4>
<p>{{error.data.ExceptionMessage || error.data.Message}}</p>
</umb-pane>
<umb-pane>
<h5>Exception Details: </h5>
{{error.data.ExceptionType}}: {{error.data.ExceptionMessage}}
</umb-pane>
<umb-pane>
<h5>Stacktrace: </h5>
<pre style="white-space: pre-wrap; overflow-x: auto;">{{error.data.StackTrace}}</pre>
</umb-pane>
</div>
<div class="umb-panel-footer">
<a href ng-click="close()" class="btn pull-right">
<localize key="general_close">Close</localize>
</a>
</div>
</umb-panel>
+3
View File
@@ -0,0 +1,3 @@
<div ng-controller="Umbraco.LegacyController" id="legacyContainer" style="width: 100%; height: 100%;overflow: hidden;">
<iframe name="right" id="right" ng-src="{{legacyPath}}"></iframe>
</div>
+3
View File
@@ -0,0 +1,3 @@
<div ng-controller="Umbraco.LoginController">
</div>
@@ -0,0 +1,7 @@
<div ng-controller="Umbraco.Notifications.ConfirmRouteChangeController">
<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>
@@ -0,0 +1,34 @@
<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>
<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="content"
treealias="content"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
</div>
@@ -0,0 +1,55 @@
<div ng-controller="Umbraco.Overlays.CompositionsOverlay as vm">
<div class="umb-control-group">
<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>
</div>
</div>
<div class="umb-control-group">
<small><localize key="contentTypeEditor_compositionsDescription"></localize></small>
</div>
<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>
<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)}">
<div class="umb-checkbox-list__item-checkbox"
ng-class="{ '-selected': model.compositeContentTypes.indexOf(compositeContentType.contentType.alias)+1 }">
<input type="checkbox"
id="umb-overlay-comp-{{compositeContentType.contentType.key}}"
checklist-model="model.compositeContentTypes"
checklist-value="compositeContentType.contentType.alias"
ng-change="model.selectCompositeContentType(compositeContentType.contentType)"
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}">
<i class="{{ compositeContentType.contentType.icon }} umb-checkbox-list__item-icon"></i>
{{ compositeContentType.contentType.name }}
<span class="umb-checkbox-list__item-caption" ng-if="compositeContentType.inherited">(inherited)</span>
</label>
</li>
</ul>
</div>
@@ -0,0 +1,117 @@
<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>
</div>
@@ -0,0 +1,21 @@
<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">
<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>
@@ -0,0 +1,118 @@
<div class="content-type-editor-dialog edit-property-settings" ng-controller="Umbraco.Overlay.PropertySettingsOverlay as vm">
<div class="umb-control-group">
<div class="control-group">
<textarea class="editor-label"
name="propertyLabel"
ng-model="model.property.label"
localize="placeholder"
placeholder="@placeholders_entername"
umb-auto-focus
focus-on-filled="true"
umb-auto-resize
required
overlay-submit-on-enter>
</textarea>
<div class="umb-validation-label" val-msg-for="propertyLabel" val-toggle-msg="required">Required label</div>
</div>
<div class="control-group -no-margin">
<umb-generate-alias enable-lock="true" alias-from="model.property.label" alias="model.property.alias"></umb-generate-alias>
</div>
</div>
<div class="umb-control-group control-group">
<textarea
class="editor-description"
ng-model="model.property.description"
localize="placeholder"
placeholder="@placeholders_enterDescription"
overlay-submit-on-enter
umb-auto-resize>
</textarea>
</div>
<div class="editor-wrapper umb-control-group control-group" ng-model="model.property.editor" val-require-component>
<a 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>
<div class="editor clearfix" ng-if="model.property.editor">
<a href="" class="editor-icon-wrapper" ng-click="vm.openEditorPickerOverlay(model.property)">
<i class="icon {{ model.property.dataTypeIcon }}" ng-class="{'icon-autofill': model.property.dataTypeIcon == null}"></i>
</a>
<div class="editor-details">
<a href="" class="editor-name" ng-click="vm.openEditorPickerOverlay(model.property)">{{ model.property.dataTypeName }}</a>
<a href="" class="editor-editor" ng-click="vm.openEditorPickerOverlay(model.property)">{{ model.property.editor }}</a>
</div>
<a href class="editor-settings-icon pull-right"
ng-click="vm.openEditorSettingsOverlay(model.property)"
hotkey="alt+shift+d"
ng-if="model.property.editor">
<i class="icon icon-settings"></i>
</a>
</div>
</div>
<div class="umb-control-group clearfix">
<h5><localize key="validation_validation"></localize></h5>
<label class="checkbox no-indent">
<input type="checkbox" ng-model="model.property.validation.mandatory" focus-when="{{vm.focusOnMandatoryField}}">
<localize key="validation_fieldIsMandatory"></localize>
</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>
</select>
<textarea
class="editor-validation-pattern"
placeholder="Enter a regular expression"
ng-model="model.property.validation.pattern"
ng-change="vm.changeValidationPattern()"
ng-if="vm.showValidationPattern"
umb-auto-resize
focus-when="{{vm.focusOnPatternField}}"
overlay-submit-on-enter>
</textarea>
</div>
<div class="umb-control-group clearfix" ng-if="model.contentType === 'memberType'">
<h5><localize key="general_rights"></localize></h5>
<label class="checkbox no-indent">
<input type="checkbox" ng-model="model.property.showOnMemberProfile">
<localize key="contentTypeEditor_showOnMemberProfile"></localize>
</label>
<label class="checkbox no-indent">
<input type="checkbox" ng-model="model.property.memberCanEdit">
<localize key="contentTypeEditor_memberCanEdit"></localize>
</label>
</div>
<umb-overlay
ng-if="vm.editorPickerOverlay.show"
model="vm.editorPickerOverlay"
position="right"
view="vm.editorPickerOverlay.view">
</umb-overlay>
<umb-overlay
ng-if="vm.editorSettingsOverlay.show"
model="vm.editorSettingsOverlay"
position="right"
view="vm.editorSettingsOverlay.view">
</umb-overlay>
</div>
@@ -0,0 +1,41 @@
<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 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>
<div class="umb-control-group -no-border">
<label>
<input type="checkbox" class="pull-left" style="margin-right: 10px;" ng-model="model.relateToOriginal" />
<localize key="defaultdialogs_relateToOriginalLabel">Relate to originalt</localize>
</label>
</div>
</div>
@@ -0,0 +1,27 @@
<form ng-controller="Umbraco.Overlays.EmbedOverlay as vm">
<umb-control-group label="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" />
</umb-control-group>
<umb-control-group>
<p ng-bind="model.embed.info"></p>
<div ng-bind-html-unsafe="model.embed.preview"></div>
</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>
<umb-control-group label="Height">
<input type="text" 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>
</div>
</form>
@@ -0,0 +1,50 @@
<div ng-controller="Umbraco.Overlays.HelpController">
<div class="umb-control-group">
<h5><localize key="help_helpTopicsFor">Help topics for</localize>: {{sectionName}}</h5>
<ul class="unstyled list-icons" ng-show="topics">
<li ng-repeat="topic in topics">
<i class="icon icon-help-alt"></i>
<a target="_blank" href="{{topic.link}}?utm_source=core&utm_medium=help&utm_content=topic-link&utm_campaign=our" title="{{topic.title}}">
{{topic.title}}
</a>
<small class="umb-detail">{{topic.description}}</small>
</li>
</ul>
<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>
<small class="umb-detail">
<localize key="defaultdialogs_theFriendliestCommunity">The friendliest community</localize>
</small>
</li>
</ul>
</div>
<div class="umb-control-group">
<h5><localize key="help_videoChaptersFor">Video chapters for</localize>: {{sectionName}}</h5>
<ul class="thumbnails" ng-show="videos">
<li class="span2" ng-repeat="video in videos">
<div class="thumbnail" style="margin-right: 20px">
<a target="_blank" href="{{video.link}}?utm_source=core&utm_medium=help&utm_content=link&utm_campaign=tv" title="{{video.title}}">
<img ng-src="{{video.thumbnail}}?width=120" alt="{{video.title}}">
</a>
</div>
</li>
</ul>
<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">
<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>
</li>
</ul>
</div>
</div>
@@ -0,0 +1,57 @@
<div ng-controller="Umbraco.Overlays.IconPickerOverlay">
<div class="umb-control-group">
<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>
</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>
</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)">
<a href="#" title="{{icon}}" ng-click="selectIcon(icon, color)" 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>
@@ -0,0 +1,26 @@
<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>
<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>
</ul>
</div>
@@ -0,0 +1,86 @@
<div ng-controller="Umbraco.Overlays.LinkPickerController">
<umb-control-group label="@content_urls">
<input type="text"
localize="placeholder"
placeholder="@general_url"
class="umb-editor umb-textstring"
ng-model="model.target.url"
ng-disabled="model.target.id"/>
</umb-control-group>
<umb-control-group label="@content_nodeName">
<input type="text"
localize="placeholder"
placeholder="@placeholders_entername"
class="umb-editor umb-textstring"
ng-model="model.target.name" />
</umb-control-group>
<umb-control-group label="@content_target">
<select class="umb-editor umb-dropdown" ng-model="model.target.target">
<option value=""></option>
<option value="_blank">
<localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize>
</option>
<option value="_top">
<localize key="defaultdialogs_openInFullBody">Opens the linked document in the full body of the window</localize>
</option>
<option value="_parent">
<localize key="defaultdialogs_openInParentFrame">Opens the linked document in the parent frame</localize>
</option>
</select>
</umb-control-group>
<div class="umb-control-group">
<h5>
<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>
<br/>
<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>
</div>
<div class="umb-control-group">
<h5>
<localize key="defaultdialogs_linkToMedia">Link to media</localize>
</h5>
<a href ng-click="switchToMediaPicker()" class="btn">
<localize key="defaultdialogs_selectMedia">Select media</localize>
</a>
</div>
<umb-overlay
ng-if="mediaPickerOverlay.show"
model="mediaPickerOverlay"
view="mediaPickerOverlay.view"
position="right">
</umb-overlay>
</div>
@@ -0,0 +1,42 @@
<div ng-controller="Umbraco.Overlays.MacroPickerController">
<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="paramSelect">
<h5>{{model.selectedMacro.name}}</h5>
<ul class="unstyled">
<li ng-repeat="param in model.macroParams">
<ng-form name="parameterForm">
<umb-control-group label="{{param.name}}">
<umb-editor model="param"></umb-editor>
</umb-control-group>
</ng-form>
</li>
</ul>
<umb-empty-state
ng-if="noMacroParams"
position="center">
<localize key="defaultdialogs_noMacroParams">There are no parameters for this macro</localize>
</umb-empty-state>
</div>
</div>
</div>
@@ -0,0 +1,140 @@
<form ng-controller="Umbraco.Overlays.MediaPickerController" id="fileupload"
method="POST"
enctype="multipart/form-data"
umb-image-upload="options">
<div
on-drag-leave="dragLeave()"
on-drag-end="dragLeave()"
on-drag-enter="dragEnter()">
<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>
<div class="upload-button">
<umb-button
type="button"
key="general_upload"
label="Upload"
action="upload()"
disabled="disabled">
</umb-button>
</div>
</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>
<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>
<li class="umb-breadcrumbs__ancestor">
<a href ng-hide="showFolderInput" ng-click="showFolderInput = true">
<i class="icon icon-add small"></i>
</a>
<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>
</div>
<umb-file-dropzone
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-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>
</div>
<umb-overlay
ng-if="mediaPickerDetailsOverlay.show"
model="mediaPickerDetailsOverlay"
position="right">
<div class="umb-control-group">
<div ng-if="target.url">
<umb-image-gravity
src="target.url"
center="target.focalPoint">
</umb-image-gravity>
</div>
<div ng-if="cropSize">
<h5>
<localize key="general_preview">Preview</localize>
</h5>
<umb-image-thumbnail
center="target.focalPoint"
src="target.url"
height="{{cropSize.height}}"
width="{{cropSize.width}}"
max-size="400">
</umb-image-thumbnail>
</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>
</form>
@@ -0,0 +1,12 @@
<div ng-controller="Umbraco.Overlays.MemberGroupPickerController">
<umb-tree section="member"
treealias="memberGroups"
hideheader="true"
hideoptions="true"
isdialog="true"
eventhandler="dialogTreeEventHandler"
enablecheckboxes="{{model.multiPicker}}">
</umb-tree>
</div>
@@ -0,0 +1,34 @@
<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>
<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"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
</div>
@@ -0,0 +1,33 @@
<div ng-controller="Umbraco.Overlays.MoveOverlay 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 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>
</div>
@@ -0,0 +1,34 @@
<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>
<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="{{section}}"
treealias="{{treeAlias}}"
hideheader="{{hideHeader}}"
hideoptions="true"
isdialog="true"
customtreeparams="{{customTreeParams}}"
eventhandler="dialogTreeEventHandler"
enablelistviewsearch="true"
enablecheckboxes="{{multiPicker}}">
</umb-tree>
</div>
</div>
@@ -0,0 +1,123 @@
<div ng-controller="Umbraco.Overlays.UserController">
<div class="umb-control-group" ng-if="!showPasswordFields">
<h5><localize key="user_yourProfile" /></h5>
<p class="muted">
<small>
<localize key="user_sessionExpires" />: {{remainingAuthSeconds | timespan}}
</small>
</p>
<umb-button
type="link"
href="#/users/framed/%252Fumbraco%252Fusers%252Fedituser.aspx%253Fid%253D{{user.id}}"
action="model.close()"
button-style="primary"
label="Edit"
label-key="general_edit"
ng-if="canEditProfile">
</umb-button>
<umb-button
type="button"
action="togglePasswordFields()"
label="Change password"
label-key="general_changePassword"
button-style="success">
</umb-button>
<umb-button
type="button"
action="logout()"
shortcut="ctrl+shift+l"
button-style="warning"
label="Log out"
label-key="general_logout">
</umb-button>
</div>
<div class="umb-control-group external-logins" ng-if="externalLoginProviders.length > 0 && !showPasswordFields">
<h5>
<localize key="defaultdialogs_externalLoginProviders">External login providers</localize>
</h5>
<div ng-repeat="login in externalLoginProviders">
<form ng-if="login.linkedProviderKey == undefined" method="POST" name="externalLoginForm"
action="{{externalLinkLoginFormAction}}" id="oauthloginform" name="oauthloginform">
<input type="hidden" name="provider" value="{{login.authType}}" />
<button class="btn btn-block btn-social"
ng-class="login.properties.SocialStyle"
id="{{login.authType}}"
onclick="document.forms.oauthloginform.submit();">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
<localize key="defaultdialogs_linkYour">Link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
</button>
</form>
<button ng-if="login.linkedProviderKey != undefined"
ng-click="unlink($event, login.authType, login.linkedProviderKey)"
class="btn btn-block btn-social"
ng-class="login.properties.SocialStyle"
id="{{login.authType}}"
name="provider"
value="{{login.authType}}">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
<localize key="defaultdialogs_unLinkYour">Un-link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
</button>
</div>
</div>
<div class="umb-control-group" ng-if="!showPasswordFields">
<h5><localize key="user_yourHistory" /></h5>
<ul class="umb-tree">
<li ng-repeat="item in history | orderBy:'time':true">
<a ng-href="{{item.link}}" ng-click="gotoHistory(item.link)" prevent-default>
<i class="{{item.icon}}"></i> {{item.name}}
</a>
</li>
</ul>
</div>
<div ng-show="showPasswordFields">
<h5>
<localize key="general_changePassword">Change password</localize>
</h5>
<form
name="passwordForm"
class="block-form"
ng-submit="changePassword()"
novalidate
val-form-manager>
<umb-editor model="changePasswordModel"></umb-editor>
<umb-button
type="button"
action="togglePasswordFields()"
label="Back"
label-key="general_back"
button-style="cancel">
</umb-button>
<umb-button
type="submit"
label="Change password"
label-key="general_changePassword"
state="changePasswordButtonState"
button-style="success">
</umb-button>
</form>
</div>
</div>
@@ -0,0 +1,27 @@
<div ng-controller="Umbraco.Overlays.YsodController">
<h4 class="heading red">{{model.error.errorMsg}}</h4>
<p>{{model.error.data.ExceptionMessage || model.error.data.Message}}</p>
<div class="umb-control-group">
<h5>
<localize key="defaultdialogs_exceptionDetail">Exception Details:</localize>
</h5>
{{model.error.data.ExceptionType}}: {{model.error.data.ExceptionMessage}}
</div>
<div class="umb-control-group">
<h5>
<localize key="defaultdialogs_stacktrace">Stacktrace:</localize>
</h5>
<pre style="white-space: pre-wrap; overflow-x: auto;">{{model.error.data.StackTrace}}</pre>
</div>
<div class="umb-control-group" ng-repeat="e in model.error.data.InnerExceptions">
<h5>
<localize key="defaultdialogs_innerException">Inner Exception:</localize>
</h5>
<div>{{e.ExceptionType}}: {{e.ExceptionMessage}}</div>
<pre style="white-space: pre-wrap; overflow-x: auto;">{{e.StackTrace}}</pre>
</div>
</div>
@@ -0,0 +1,17 @@
<div>
<div class='umb-modalcolumn-header'>
<h1>{{menuDialogTitle}}</h1>
</div>
<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)">
<i class="icon icon-{{action.cssclass}}"></i>
<span class="menu-label">{{action.name}}</span>
</a>
</li>
</ul>
</div>
</div>
@@ -0,0 +1,104 @@
<div id="leftcolumn" ng-controller="Umbraco.NavigationController"
ng-mouseleave="leaveTree($event)" ng-mouseenter="enterTree($event)">
<umb-sections sections="sections" ng-if="authenticated">
</umb-sections>
<!-- navigation container -->
<div id="navigation" ng-show="showNavigation" class="fill umb-modalcolumn" ng-animate="'slide'" nav-resize>
<div ng-swipe-left="nav.hideNavigation()" class="navigation-inner-container span6">
<!-- the search -->
<div ng-controller="Umbraco.SearchController" ng-if="authenticated">
<!-- Search form -->
<div 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)"/>
</form>
</div>
</div>
<!-- Search results -->
<div id="search-results" class="umb-modalcolumn-body" ng-show="showSearchResults">
<ul class="umb-tree">
<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-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>
<a href ng-click="searchShowMenu($event, {node: result})" class="umb-options"><i></i><i></i><i></i></a>
</div>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- the tree -->
<div id="tree" class="umb-modalcolumn-body" ng-if="authenticated">
<umb-tree
cachekey="_"
eventhandler="treeEventHandler"
section="{{currentSection}}" >
</umb-tree>
</div>
</div>
<div class="offset6" id="navOffset" style="z-index: 10">
<!-- 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>
</div>
<!-- Tree dialogs -->
<div id="dialog" class='umb-modalcolumn fill shadow'
ng-swipe-left="nav.hideDialog()"
ng-show="showContextMenuDialog" ng-animate="'slide'">
<div class='umb-modalcolumn-header'>
<h1>{{menuDialogTitle}}</h1>
</div>
<div class='umb-modalcolumn-body'>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,66 @@
<div>
<div id="applications" ng-class="{faded:stickyNavigation}">
<ul class="sections">
<li class="avatar">
<a href="#" ng-click="avatarClick()" hotkey="ctrl+shift+u" title="{{user.name}}" prevent-default>
<umb-avatar
size="xs"
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}">
<a href="#/{{section.alias}}"
ng-dblclick="sectionDblClick(section)"
ng-click="sectionClick($event, section)"
prevent-default>
<section-icon icon="{{section.cssclass}}"></section-icon>
<span>{{section.name}}</span>
</a>
</li>
<li 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">
<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>
</a>
</li>
</ul>
</div>
<div id="applications-tray" ng-show="showTray" ng-animate="trayAnimation()" style="display: none;">
<ul class="sections sections-tray">
<li ng-repeat="section in sections | limitTo: overflowingSections" ng-class="{current: section.alias == currentSection}">
<a href="#/{{section.alias}}"
ng-dblclick="sectionDblClick(section)"
ng-click="sectionClick($event, section)"
prevent-default>
<section-icon icon="{{section.cssclass}}"></section-icon>
<span>{{section.name}}</span>
</a>
</li>
</ul>
</div>
<umb-overlay
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">
</umb-overlay>
</div>
@@ -0,0 +1,26 @@
<div class="btn-group umb-button-group" ng-class="{'dropup': direction === 'up'}">
<umb-button
type="button"
action="defaultButton.handler()"
button-style="success"
state="state"
label="{{defaultButton.labelKey}}"
label-key="{{defaultButton.labelKey}}"
shortcut="{{defaultButton.hotKey}}"
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">
<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>
<localize key="{{subButton.labelKey}}">{{subButton.labelKey}}</localize>
</a>
</li>
</ul>
</div>
@@ -0,0 +1,35 @@
<div class="btn-group umb-button">
<div class="icon-check umb-button__success" ng-class="{'-hidden': state !== 'success', '-white': style}"></div>
<div class="icon-delete umb-button__error" ng-class="{'-hidden': state !== 'error', '-white': style}"></div>
<div class="umb-button__progress" ng-class="{'-hidden': state !== 'busy', '-white': style}"></div>
<div ng-if="state !== '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>
<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>
<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>
<localize ng-if="labelKey" key="{{labelKey}}">{{label}}</localize>
<span ng-if="!labelKey">{{label}}</span>
</span>
</button>
</div>
@@ -0,0 +1 @@
<div class="umb-editor-sub-header__content-left" ng-transclude></div>
@@ -0,0 +1 @@
<div class="umb-editor-sub-header__content-right" ng-transclude></div>
@@ -0,0 +1 @@
<div class="umb-editor-sub-header__section" ng-transclude></div>
@@ -0,0 +1,6 @@
<div
class="umb-editor-sub-header"
umb-sticky-bar
scrollable-container=".umb-editor-container"
ng-transclude>
</div>
@@ -0,0 +1,10 @@
<ul class="umb-breadcrumbs">
<li class="umb-breadcrumbs__ancestor" ng-repeat="ancestor in ancestors">
<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>
<span class="umb-breadcrumbs__ancestor-text" ng-if="$last" title="{{ancestor.name}}">{{ancestor.name}}</span>
</li>
</ul>
@@ -0,0 +1,6 @@
<div 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>
</div>
</div>
@@ -0,0 +1 @@
<div class="umb-editor-drawer-content__left-side" ng-transclude></div>
@@ -0,0 +1 @@
<div class="umb-editor-drawer-content__right-side" ng-transclude></div>
@@ -0,0 +1,7 @@
<div class="umb-tab-buttons umb-editor-drawer">
<div class="umb-editor-drawer-content" ng-transclude>
</div>
</div>
@@ -0,0 +1,81 @@
<div 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-title-wrapper">
<ng-form name="headerNameForm">
<input
type="text"
class="umb-panel-header-name-input"
localize="placeholder"
placeholder="@placeholders_entername"
name="headerName"
ng-show="!nameLocked"
ng-model="name"
ng-class="{'name-is-empty': $parent.name===null || $parent.name===''}"
umb-auto-focus
required />
</ng-form>
<div class="umb-panel-header-name" ng-if="nameLocked">{{ 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>
<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>
<umb-editor-navigation
ng-if="navigation"
navigation="navigation">
</umb-editor-navigation>
</div>
<umb-tabs-nav
ng-if="tabs"
model="tabs">
</umb-tabs-nav>
</div>
<umb-overlay
ng-if="dialogModel.show"
model="dialogModel"
position="right"
view="dialogModel.view">
</umb-overlay>
</div>
@@ -0,0 +1,22 @@
<div class="btn-group pull-right">
<!-- options button -->
<a class="btn" href="#" ng-click="getOptions()" prevent-default data-toggle="dropdown">
<localize key="general_actions">Actions</localize>
<span class="caret"></span>
</a>
<!-- actions -->
<ul class="dropdown-menu umb-actions" role="menu" aria-labelledby="dLabel">
<li class="action" ng-class="{sep:action.seperator}" ng-repeat="action in actions">
<!-- How does this reference executeMenuItem() i really don't think that this is very clear -->
<a prevent-default
ng-click="executeMenuItem(action)">
<i class="icon icon-{{action.cssclass}}"></i>
<span class="menu-label">{{action.name}}</span>
</a>
</li>
</ul>
</div>
@@ -0,0 +1,15 @@
<div>
<ul class="umb-sub-views-nav" ng-if="showNavigation">
<li ng-repeat="item in navigation">
<a tabindex="-1"
class="umb-sub-views-nav-item"
href=""
ng-click="clickNavigationItem(item)"
hotkey="{{$index+1}}"
ng-class="{'is-active': item.active, '-has-error': item.hasError}">
<i class="icon {{ item.icon }}"></i>
<span class="umb-sub-views-nav-item-text">{{ item.name }}</span>
</a>
</li>
</ul>
</div>
@@ -0,0 +1,10 @@
<div class="umb-editor-sub-views">
<div
id="sub-view-{{$index}}"
ng-repeat="subView in subViews"
ng-include="subView.view"
ng-show="activeView.name == subView.name"
ng-class="'sub-view-' + subView.name"
val-sub-view>
</div>
</div>
@@ -0,0 +1,7 @@
<div class="umb-panel umb-editor-wrapper"
ng-class="{
'-no-footer': footer === 'false'
}"
ng-transclude>
</div>
@@ -0,0 +1,13 @@
<div class="umb-property">
<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>
</label>
<div class="controls controls-row" ng-transclude>
</div>
</div>
</div>
</div>
@@ -0,0 +1,3 @@
<div class="umb-pane" ng-transclude>
</div>
@@ -0,0 +1,3 @@
<div class="umb-panel tabbable" ng-transclude>
</div>
@@ -0,0 +1,19 @@
<div class="umb-cropper umb-editor" ng-show="src">
<div class="crop-container">
<div class="viewport" ng-style="style()">
<img ng-src="{{src}}" ng-style="dimensions.image"/>
<div class="overlay" ng-style="dimensions.image"></div>
</div>
</div>
<div class="crop-slider">
<i class="icon-picture"></i>
<input
type="range"
min="{{dimensions.scale.min}}"
max="{{dimensions.scale.max}}"
step="0.001"
ng-model="dimensions.scale.current" />
<i class="icon-picture" style="font-size: 22px"></i>
</div>
</div>
@@ -0,0 +1,12 @@
<div class="umb-cropper-gravity">
<div class="gravity-container" ng-show="loaded">
<div class="viewport">
<img ng-src="{{src}}" style="max-width: 100%; max-height: 100%" ng-click="setFocalPoint($event)" draggable="false" />
<div class="overlay" ng-style="style()">
</div>
</div>
</div>
</div>
@@ -0,0 +1,5 @@
<div class="umb-crop-thumbnail-container"
ng-style="{height: height, width: width, overflow: 'hidden', position: 'relative'}"
ng-show="loaded">
<img ng-src="{{src}}" alt="{{}}" ng-style="preview" class="noScale" />
</div>
@@ -0,0 +1,21 @@
<div class="umb-notifications" id="umb-notifications-wrapper" ng-cloak>
<ul class="umb-notifications__notifications">
<li ng-repeat="notification in notifications"
class="alert alert-block alert-{{notification.type}} umb-notifications__notification animated -half-second fadeIn"
ng-class="{'-no-border -extra-padding': notification.type === 'form'}">
<a class='close -align-right' ng-click="removeNotification($index)" prevent-default href>&times;</a>
<div ng-if="notification.view">
<div ng-include="notification.view"></div>
</div>
<div ng-if="notification.headline">
<a ng-href="{{notification.url}}" target="_blank">
<strong>{{notification.headline}}</strong>
<span ng-bind-html="notification.message"></span>
</a>
</div>
</li>
</ul>
</div>
@@ -0,0 +1 @@
<div class="umb-overlay-backdrop" ng-show="numberOfOverlays > 0">{{ numberOfOverlays }}</div>
@@ -0,0 +1,76 @@
<div 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">
<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 ng-if="view" ng-include="view"></div>
</div>
<div class="umb-overlay__item-details" ng-if="model.itemDetails">
<div class="umb-overlay__item-details-title-wrapper" ng-if="model.itemDetails.icon || model.itemDetails.title">
<i class="{{ model.itemDetails.icon }} umb-overlay__item-details-icon" ng-if="model.itemDetails.icon"></i>
<h5 class="umb-overlay__item-details-title" ng-if="model.itemDetails.title">{{ model.itemDetails.title }}</h5>
</div>
<div class="umb-overlay__item-details-description" ng-if="model.itemDetails.description">{{ model.itemDetails.description }}</div>
</div>
<div class="umb-overlay-drawer" ng-class="{'-auto-height': model.confirmSubmit.show}">
<div ng-if="model.confirmSubmit.show">
<h5 class="red" ng-if="model.confirmSubmit.title"><i class="icon-alert"></i> {{ model.confirmSubmit.title }}</h5>
<p ng-if="model.confirmSubmit.description">{{ model.confirmSubmit.description }}</p>
<label class="checkbox no-indent">
<input type="checkbox" ng-model="directive.enableConfirmButton" />
<strong>{{model.confirmSubmit.checkboxLabel}}</strong>
</label>
<div class="umb-overlay-drawer__align-right">
<umb-button
action="cancelConfirmSubmit()"
button-style="link"
label="Cancel"
type="button">
</umb-button>
<umb-button
button-style="success"
label="Confirm"
type="button"
disabled="!directive.enableConfirmButton"
action="submitForm(model)">
</umb-button>
</div>
</div>
<div class="umb-overlay-drawer__align-right" ng-if="!model.confirmSubmit.show">
<umb-button
action="closeOverLay()"
button-style="link"
label-key="{{model.closeButtonLabelKey}}"
label="{{model.closeButtonLabel}}"
type="button">
</umb-button>
<umb-button
button-style="success"
label-key="{{model.submitButtonLabelKey}}"
label="{{model.submitButtonLabel}}"
ng-if="model.submit && model.hideSubmitButton !== true"
type="button"
disabled="model.disableSubmitButton"
action="submitForm(model)">
</umb-button>
</div>
</div>
</ng-form>
</div>
@@ -0,0 +1,3 @@
<div class="umb-property-editor" ng-class="{'-not-clickable': preview}">
<div ng-include="propertyEditorView"></div>
</div>
@@ -0,0 +1,19 @@
<div class="umb-property">
<ng-form name="propertyForm">
<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>
</label>
<div class="controls" ng-transclude>
</div>
</div>
</div>
</ng-form>
</div>
@@ -0,0 +1,5 @@
<div class='umb-tab-pane tab-pane'>
<div class='umb-tab-pane-inner'>
<div ng-transclude></div>
</div>
</div>
@@ -0,0 +1 @@
<div class="tab-content" ng-class="{'umb-tab-content': !view}" ng-transclude></div>
@@ -0,0 +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>
</ul>
@@ -0,0 +1,13 @@
<div class="form-search">
<i class="icon icon-search" ng-if="showSearch == 'false'"></i>
<a class="icon icon-arrow-left" ng-if="showSearch == 'true'" title="Back" ng-click="hideSearch()"></a>
<input type="text"
ng-model="term"
class="umb-search-field search-query"
placeholder="{{searchPlaceholderText}}"
focus-when="{{showSearch}}">
<h4 ng-if="showSearch && searchFromName">
<small><localize key="general_search">Search</localize>:&nbsp;</small>
{{searchFromName}}
</h4>
</div>
@@ -0,0 +1,23 @@
<ul class="umb-tree">
<li class="root">
<ul class="umb-search-group">
<li ng-repeat="result in results">
<div style="padding-left: 20px" ng-class="{'umb-tree-node-checked' : result.selected}">
<a class="umb-search-group-item-link" ng-class="{first:$first}" ng-click="selectResultCallback($event, result)">
<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-if="result.subTitle">{{result.subTitle}}</small>
</a>
</div>
</li>
</ul>
</li>
</ul>
@@ -0,0 +1 @@
<img class="umb-avatar -{{size}}" ng-src="{{imgSrc}}" ng-srcset="{{imgSrcset}}" />
@@ -0,0 +1,37 @@
<div class="umb-child-selector">
<div class="umb-child-selector__child -parent">
<div class="umb-child-selector__child-description">
<div class="umb-child-selector__child-icon-holder">
<i class="umb-child-selector__child-icon {{ parentIcon }}"></i>
</div>
<span class="umb-child-selector__child-name">
<strong>{{ parentName }}</strong>
</span>
<small>
(<localize key="general_current"></localize>)
</small>
</div>
</div>
<div class="umb-child-selector__children-container">
<div class="umb-child-selector__child" ng-repeat="selectedChild in selectedChildren">
<div class="umb-child-selector__child-description">
<div class="umb-child-selector__child-icon-holder">
<i class="umb-child-selector__child-icon {{ selectedChild.icon }}"></i>
</div>
<span class="umb-child-selector__child-name"> {{ selectedChild.name }}</span>
</div>
<div class="umb-child-selector__child-actions">
<i class="umb-child-selector__child-remove icon-trash" ng-click="removeChild(selectedChild, $index)"></i>
</div>
</div>
<a href="" class="umb-child-selector__child -placeholder" ng-click="addChild($event)" hotkey="alt+shift+c">
<div class="umb-child-selector__child-name -blue"><strong><localize key="shortcuts_addChild">Add Child</localize></strong></div>
</a>
</div>
</div>
@@ -0,0 +1,16 @@
<div class="umb_confirm-action__overlay"
ng-class="{
'-top': direction === 'top',
'-right': direction === 'right',
'-bottom': direction === 'bottom',
'-left': direction === 'left'}"
on-outside-click="clickCancel()">
<a class="umb_confirm-action__overlay-action -confirm" href="" ng-click="clickConfirm()">
<i class="icon-check"></i>
</a>
<a class="umb_confirm-action__overlay-action -cancel" href="" ng-click="clickCancel()">
<i class="icon-delete"></i>
</a>
</div>
@@ -0,0 +1,10 @@
<div>
<p ng-hide="!caption" class="umb-abstract">{{caption}}</p>
<div class="umb-pane btn-toolbar umb-btn-toolbar">
<div class="control-group umb-control-group">
<a href class="btn btn-link" ng-click="onCancel()"><localize key="general_cancel">Cancel</localize></a>
<a href class="btn btn-primary" ng-click="onConfirm()"><localize key="general_ok">Ok</localize></a>
</div>
</div>
</div>
@@ -0,0 +1,36 @@
<div class="umb-content-grid">
<div
class="umb-content-grid__item"
ng-repeat="item in content"
ng-class="{'-selected': item.selected}"
ng-click="clickItem(item, $event, $index)">
<i ng-if="item.selected" class="icon-check umb-content-grid__checkmark"></i>
<div class="umb-content-grid__icon-container">
<i class="umb-content-grid__icon {{ item.icon }}" ng-class="{'-light': !item.published && item.updater != null}"></i>
</div>
<div class="umb-content-grid__content">
<div class="umb-content-grid__item-name" ng-click="clickItemName(item, $event, $index)" ng-class="{'-light': !item.published && item.updater != null}">{{ item.name }}</div>
<ul class="umb-content-grid__details-list" ng-class="{'-light': !item.published&& item.updater != null}">
<li class="umb-content-grid__details-item" ng-repeat="property in contentProperties">
<div class="umb-content-grid__details-label">{{ property.header }}:</div>
<div class="umb-content-grid__details-value">{{ item[property.alias] }}</div>
</li>
</ul>
</div>
</div>
<umb-empty-state
ng-if="!content"
position="center">
<localize key="content_noItemsToShow">There are no items to show</localize>
</umb-empty-state>
</div>
@@ -0,0 +1,9 @@
<div
class="umb-empty-state"
ng-class="{
'-small': size === 'small',
'-large': size === 'large',
'-center': position === 'center'
}"
ng-transclude>
</div>
@@ -0,0 +1,18 @@
<div class="umb-folder-grid">
<div
class="umb-folder-grid__folder"
ng-repeat="folder in folders"
ng-class="{'-selected': folder.selected}"
ng-click="clickFolder(folder, $event, $index)">
<div class="umb-folder-grid__folder-description">
<i class="umb-folder-grid__folder-icon {{ folder.icon }}"></i>
<div ng-click="clickFolderName(folder, $event, $index)" class="umb-folder-grid__folder-name">{{ folder.name }}</div>
</div>
<i class="icon-check umb-folder-grid__action" ng-class="{'-selected': folder.selected}"></i>
</div>
</div>
@@ -0,0 +1,12 @@
<div>
<span ng-show="!enableLock">{{ alias }}</span>
<div ng-show="enableLock">
<umb-locked-field
locked="locked"
ng-model="alias"
placeholder-text="placeholderText"
server-validation-field="{{serverValidationField}}">
</umb-locked-field>
</div>
</div>
@@ -0,0 +1,43 @@
<div class="umb-grid-selector">
<div class="umb-grid-selector__items">
<div class="umb-grid-selector__item -default" ng-if="defaultItem !== null">
<div class="umb-grid-selector__item-content">
<i class="umb-grid-selector__item-icon {{ defaultItem.icon }}"></i>
<div class="umb-grid-selector__item-label">{{ defaultItem.name }}</div>
<span class="umb-grid-selector__item-default-label">(<localize key="general_default">Default</localize> {{itemLabel}})</span>
</div>
<i class="umb-grid-selector__item-remove icon-trash" ng-if="selectedItems.length === 1" ng-click="removeDefaultItem()"></i>
</div>
<div class="umb-grid-selector__item" ng-repeat="selectedItem in selectedItems | filter: { alias:'!'+defaultItem.alias }:true">
<div class="umb-grid-selector__item-content">
<i class="umb-grid-selector__item-icon {{ selectedItem.icon }}"></i>
<div class="umb-grid-selector__item-label">{{ selectedItem.name }}</div>
<a href="" class="umb-grid-selector__item-default-label -blue" ng-click="setAsDefaultItem(selectedItem)"><localize key="grid_setAsDefault">Set as default</localize></a>
</div>
<i class="umb-grid-selector__item-remove icon-trash" ng-click="removeItem(selectedItem)"></i>
</div>
<a href="" class="umb-grid-selector__item -placeholder" ng-if="(availableItems | compareArrays:selectedItems:'alias').length > 0" ng-click="openItemPicker($event)" hotkey="alt+shift+t">
<div class="umb-grid-selector__item-content">
<div class="umb-grid-selector__item-label -blue" ng-if="defaultItem !== null"><localize key="grid_chooseExtra">Choose extra</localize> {{ itemLabel }}</div>
<div class="umb-grid-selector__item-label -blue" ng-if="defaultItem === null"><localize key="grid_chooseDefault">Choose default</localize> {{ itemLabel }}</div>
</div>
</a>
</div>
<div class="text-center" ng-if="(availableItems | compareArrays:selectedItems:'alias').length === 0">
<small><localize key="general_all">Akk</localize> {{itemLabel}}s <localize key="grid_areAdded">are added</localize></small>
</div>
<umb-overlay
ng-if="dialogModel.show"
model="dialogModel"
position="target"
view="dialogModel.view">
</umb-overlay>
</div>
@@ -0,0 +1,299 @@
<div class="clearfix">
<umb-editor-sub-header>
<umb-editor-sub-header-content-right>
<umb-button
ng-if="compositions !== false"
type="button"
button-style="link"
label-key="contentTypeEditor_compositions"
icon="icon-merge"
action="openCompositionsDialog()">
</umb-button>
<umb-button
ng-if="sorting !== false"
type="button"
button-style="link"
label-key="{{sortingButtonKey}}"
icon="icon-navigation"
action="toggleSortingMode();">
</umb-button>
</umb-editor-sub-header-content-right>
</umb-editor-sub-header>
<div ng-if="sortingMode && model.groups.length <= 1" class="umb-group-builder__no-data-text">
<localize key="contentTypeEditor_noTabs"></localize>
</div>
<ul class="umb-group-builder__groups" ui-sortable="sortableOptionsGroup" ng-model="model.groups">
<li ng-repeat="tab in model.groups" ng-class="{'umb-group-builder__group-sortable': sortingMode}">
<!-- TAB INIT STATE -->
<a href="" class="umb-group-builder__group -placeholder" hotkey="alt+shift+t" ng-click="addGroup(tab)" ng-if="tab.tabState=='init' && !sortingMode">
<div class="umb-group-builder__group-title-wrapper -placeholder">
<div class="umb-group-builder__group-title -placeholder"></div>
</div>
<localize ng-if="model.groups.length === 1" key="contentTypeEditor_addNewTab"></localize>
<localize ng-if="model.groups.length > 1" key="contentTypeEditor_addAnotherTab"></localize>
</a>
<!-- TAB ACTIVE OR INACTIVE STATE -->
<div class="umb-group-builder__group" ng-if="tab.tabState !== 'init'" ng-class="{'-active':tab.tabState=='active', '-inherited': tab.inherited, 'umb-group-builder__group-handle -sortable': sortingMode && !tab.inherited}" ng-click="activateGroup(tab)">
<div class="umb-group-builder__group-remove" ng-if="!sortingMode && tab.properties.length <= 1">
<i class="icon-trash" ng-click="togglePrompt(tab)"></i>
<umb-confirm-action
ng-if="tab.deletePrompt"
direction="left"
on-confirm="removeGroup($index)"
on-cancel="hidePrompt(tab)">
</umb-confirm-action>
</div>
<div class="umb-group-builder__group-title-wrapper">
<ng-form name="groupNameForm">
<div class="umb-group-builder__group-title control-group -no-margin" ng-class="{'-active':tab.tabState=='active', '-inherited': tab.inherited}">
<i class="umb-group-builder__group-title-icon icon-navigation" ng-if="sortingMode && !tab.inherited"></i>
<input class="umb-group-builder__group-title-input"
type="text"
localize="placeholder"
placeholder="@placeholders_entername"
name="groupName"
ng-model="tab.name"
ng-class="{'-placeholder': tab.name == ''}"
ng-change="updateGroupTitle(tab)"
ng-disabled="tab.inherited"
umb-auto-focus
umb-auto-resize
on-focus="activateGroup(tab)"
required
val-server-field="{{'Groups[' + $index + '].Name'}}" />
<div class="umb-validation-label -arrow-left" val-msg-for="groupName" val-toggle-msg="valServerField"></div>
<div class="umb-validation-label -arrow-left" val-msg-for="groupName" val-toggle-msg="required"><localize key="required"></localize></div>
</div>
</ng-form>
<ng-form name="groupSortOrderForm">
<div class="umb-group-builder__group-sort-order" ng-if="sortingMode">
<input name="groupSortOrder" type="number" class="umb-group-builder__group-sort-value" ng-model="tab.sortOrder" ng-disabled="tab.inherited" on-blur="changeSortOrderValue(tab)" required />
<div class="umb-validation-label -arrow-left" ng-if="groupSortOrderForm.groupSortOrder.$error.required && tab.showSortOrderMissing"><localize key="required"></localize></div>
<div class="umb-validation-label -arrow-left" ng-if="!tab.showSortOrderMissing" val-msg-for="groupSortOrder" val-toggle-msg="required"><localize key="required"></localize></div>
</div>
</ng-form>
<div class="umb-group-builder__group-inherited-label" ng-if="tab.inherited">
<i class="icon icon-merge"></i>
<localize key="contentTypeEditor_inheritedFrom"></localize> {{ tab.inheritedFromName }}
<span ng-repeat="contentTypeName in tab.parentTabContentTypeNames">
{{ contentTypeName }}
<span ng-if="!$last">, </span>
</span>
</div>
</div>
<ul class="umb-group-builder__properties" ui-sortable="sortableOptionsProperty" ng-model="tab.properties">
<li ng-class="{'umb-group-builder__property-sortable': sortingMode && !property.inherited}" ng-repeat="property in tab.properties">
<!-- Init property / Property placeholder / add new property -->
<a href=""
class="umb-group-builder__property -placeholder"
ng-if="property.propertyState=='init' && !sortingMode"
ng-class="{'-placeholder': property.propertyState=='init'}"
hotkey="alt+shift+p"
hotkey-when="{{tab.tabState === 'active' && property.propertyState=='init'}}"
ng-click="addProperty(property, tab)"
on-focus="activateGroup(tab)"
focus-when="{{property.focus}}">
<div class="umb-group-builder__property-meta">
<div class="umb-group-builder__placeholder-box -input-small"></div>
<div class="umb-group-builder__placeholder-box -input"></div>
<div class="umb-group-builder__placeholder-box-group">
<div class="umb-group-builder__placeholder-box -text-full-width"></div>
<div class="umb-group-builder__placeholder-box -text-full-width"></div>
<div class="umb-group-builder__placeholder-box -text-short"></div>
</div>
</div>
<div class="umb-group-builder__property-preview umb-group-builder__placeholder-box">
<localize key="contentTypeEditor_addProperty"></localize>
</div>
<div class="umb-group-builder__property-actions"></div>
</a>
<div class="umb-group-builder__property" ng-if="property.propertyState!=='init'" ng-class="{'-active': property.dialogIsOpen, '-active': property.propertyState=='active', '-inherited': property.inherited, '-locked': property.locked, 'umb-group-builder__property-handle -sortable': sortingMode && !property.inherited, '-sortable-locked': sortingMode && property.inherited}">
<!-- property meta text -->
<div class="umb-group-builder__property-meta" ng-class="{'-full-width': sortingMode}">
<ng-form name="propertyTypeForm">
<div class="control-group -no-margin" ng-if="!sortingMode">
<div class="umb-group-builder__property-meta-alias" ng-if="property.inherited || property.locked">{{ property.alias }}</div>
<umb-locked-field
ng-if="!property.inherited && !property.locked"
locked="locked"
ng-model="property.alias"
placeholder-text="'Alias...'"
server-validation-field="{{'Groups[' + $parent.$parent.$parent.$parent.$index + '].Properties[' + $index + '].Alias'}}">
</umb-locked-field>
<div class="umb-group-builder__property-meta-label">
<textarea
localize="placeholder"
placeholder="@placeholders_label"
ng-model="property.label"
ng-disabled="property.inherited || property.locked"
name="groupName"
umb-auto-resize
required
val-server-field="{{'Groups[' + $parent.$parent.$parent.$parent.$index + '].Properties[' + $index + '].Label'}}">
</textarea>
<div class="umb-validation-label" val-msg-for="groupName" val-toggle-msg="valServerField"></div>
<div class="umb-validation-label" val-msg-for="groupName" val-toggle-msg="required"><localize key="contentTypeEditor_requiredLabel"></localize></div>
</div>
<div class="umb-group-builder__property-meta-description">
<textarea
localize="placeholder"
placeholder="@placeholders_enterDescription"
ng-model="property.description"
ng-disabled="property.inherited || property.locked"
umb-auto-resize>
</textarea>
</div>
</div>
</ng-form>
<div ng-if="sortingMode">
<i class="icon icon-navigation" ng-if="!property.inherited"></i>
<span class="umb-group-builder__property-meta-label">{{ property.label }}</span>
<span class="umb-group-builder__property-meta-alias">({{ property.alias }})</span>
</div>
</div>
<div tabindex="-1" class="umb-group-builder__property-preview" ng-click="editPropertyTypeSettings(property, tab)" ng-if="!sortingMode" ng-class="{'-not-clickable': !sortingMode && (property.inherited || property.locked)}">
<div class="umb-group-builder__property-tags">
<span class="umb-group-builder__property-tag -white">
<span ng-if="property.dataTypeName !== undefined">{{property.dataTypeName}}</span>
<span ng-if="property.dataTypeName == undefined"><localize key="general_preview"></localize></span>
</span>
<div class="umb-group-builder__property-tag -white" ng-if="property.validation.mandatory">
<i class="umb-group-builder__property-tag-icon">*</i>
<localize key="general_mandatory"></localize>
</div>
<div class="umb-group-builder__property-tag -white" ng-if="property.showOnMemberProfile">
<i class="icon-eye umb-group-builder__property-tag-icon"></i>
<localize key="contentTypeEditor_showOnMemberProfile"></localize>
</div>
<div class="umb-group-builder__property-tag -white" ng-if="property.memberCanEdit">
<i class="icon-edit umb-group-builder__property-tag-icon"></i>
<localize key="contentTypeEditor_memberCanEdit"></localize>
</div>
</div>
<div class="umb-group-builder__property-tags -right">
<div class="umb-group-builder__property-tag" ng-if="property.inherited">
<i class="icon icon-merge"></i>
<span style="margin-right: 3px"><localize key="contentTypeEditor_inheritedFrom"></localize></span>
{{property.contentTypeName}}
</div>
<div class="umb-group-builder__property-tag" ng-if="property.locked">
<i class="icon icon-lock"></i>
<localize key="general_locked"></localize>
</div>
</div>
<ng-form name="propertyEditorPreviewForm" umb-disable-form-validation>
<umb-property-editor
ng-if="property.view !== undefined"
model="property"
preview="true">
</umb-property-editor>
</ng-form>
</div>
<!-- row tools -->
<div class="umb-group-builder__property-actions" ng-if="!sortingMode">
<div ng-if="!property.inherited && !property.locked">
<!-- settings for property -->
<div class="umb-group-builder__property-action" ng-click="editPropertyTypeSettings(property, tab)">
<i class="icon icon-settings"></i>
</div>
<!-- delete property -->
<div class="umb-group-builder__property-action">
<i class="icon-trash" ng-click="togglePrompt(property)"></i>
<umb-confirm-action
ng-if="property.deletePrompt"
direction="left"
on-confirm="deleteProperty(tab, $index)"
on-cancel="hidePrompt(property)">
</umb-confirm-action>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
<br>
</li>
</ul>
<umb-overlay
ng-if="compositionsDialogModel.show"
model="compositionsDialogModel"
position="right"
view="compositionsDialogModel.view">
</umb-overlay>
<umb-overlay
ng-if="propertySettingsDialogModel.show"
model="propertySettingsDialogModel"
position="right"
view="propertySettingsDialogModel.view">
</umb-overlay>
</div>
@@ -0,0 +1,60 @@
<div class="umb-keyboard-shortcuts-overview">
<div class="umb-keyboard-shortcuts-overview__keyboard-shortcut -no-air -no-stroke" data-hotkey="alt+shift+k" ng-click="toggleShortcutsOverlay()">
<div class="umb-keyboard-shortcuts-overview__description"><localize key="shortcuts_showShortcuts">show shortcuts</localize></div>
<div class="umb-keyboard-keys">
<div class="umb-keyboard-key-wrapper">
<div class="umb-keyboard-key">alt</div>
<div>+</div>
</div>
<div class="umb-keyboard-key-wrapper">
<div class="umb-keyboard-key">shift</div>
<div>+</div>
</div>
<div class="umb-keyboard-key-wrapper">
<div class="umb-keyboard-key">k</div>
</div>
</div>
</div>
<div class="umb-keyboard-shortcuts-overview__overlay" ng-if="shortcutOverlay">
<a href="" class="umb-keyboard-shortcuts-overview__overlay-close" ng-click="toggleShortcutsOverlay()" data-hotkey="esc" hotkey-when-hidden="true">
<i class="icon-delete"></i>
</a>
<div class="umb-keyboard-shortcuts-overview__overlay-content">
<div class="umb-keyboard-shortcuts-overview__keyboard-shortcuts-group" ng-repeat="keyboardShortcutGroup in model">
<h5 class="umb-keyboard-shortcuts-overview__keyboard-shortcuts-group-name">{{ keyboardShortcutGroup.name }}</h5>
<div class="umb-keyboard-shortcuts-overview__keyboard-shortcuts">
<div class="umb-keyboard-shortcuts-overview__keyboard-shortcut" ng-repeat="keyboardShortcut in keyboardShortcutGroup.shortcuts">
<div class="umb-keyboard-shortcuts-overview__description">{{ keyboardShortcut.description }}</div>
<div class="umb-keyboard-keys">
<div ng-repeat="key in keyboardShortcut.keys">
<div class="umb-keyboard-key-wrapper">
<div class="umb-keyboard-key">{{ key.key }}</div>
<div ng-if="!$last">
<span ng-if="!keyboardShortcut.keyRange">+</span>
<span ng-if="keyboardShortcut.keyRange">-</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,14 @@
<div class="umb-layout-selector" ng-show="showLayoutSelector">
<div class="umb-layout-selector__active-layout" ng-click="toggleLayoutDropdown()">
<i class="{{ activeLayout.icon }}"></i>
</div>
<div ng-if="layoutDropDownIsOpen" class="umb-layout-selector__dropdown shadow-depth-3 animated -half-second fadeIn" on-outside-click="closeLayoutDropdown()">
<div ng-repeat="layout in layouts | filter:{selected:true}" class="umb-layout-selector__dropdown-item" ng-click="pickLayout(layout)" ng-class="{'-active': layout.active }" ng-attr-title="{{layout.name}}">
<i class="{{ layout.icon }} umb-layout-selector__dropdown-item-icon"></i>
</div>
</div>
</div>
@@ -0,0 +1,22 @@
<div class="umb-lightbox">
<div class="umb-lightbox__backdrop" ng-click="close()" hotkey="esc"></div>
<div class="umb-lightbox__close" title="Close" ng-click="close()">
<i class="icon-delete umb-lightbox__control"></i>
</div>
<div class="umb-lightbox__images">
<div class="umb-lightbox__image shadow-depth-2" ng-repeat="item in items" ng-show="$index === activeItemIndex">
<img ng-src="{{ item.source }}" />
</div>
</div>
<div class="umb-lightbox__control -prev" title="Previous" ng-if="activeItemIndex > 0" ng-click="prev()" hotkey="left">
<i class="icon-previous umb-lightbox__control-icon"></i>
</div>
<div class="umb-lightbox__control -next" title="Next" ng-if="activeItemIndex + 1 < items.length" ng-click="next()" hotkey="right">
<i class="icon-next umb-lightbox__control-icon"></i>
</div>
</div>
@@ -0,0 +1,3 @@
<div>
<div ng-include="options.layout.activeLayout.path"></div>
</div>
@@ -0,0 +1,39 @@
<div class="umb-list-view-settings">
<div class="umb-list-view-settings__trigger">
<label class="checkbox no-indent">
<input type="checkbox" ng-model="enableListView" hotkey="alt+shift+l" />
<localize key="general_yes"></localize> - <localize key="contentTypeEditor_enableListViewHeading"></localize>
</div>
<!-- list view enabled -->
<div ng-if="enableListView">
<div class="umb-list-view-settings__box" ng-class="{'-open': editDataTypeSettings}">
<div class="umb-list-view-settings__content">
<i class="umb-list-view-settings__list-view-icon icon-list"></i>
<div>
<div>
<div class="umb-list-view-settings__name">{{ dataType.name }} <em ng-if="!customListViewCreated">(<localize key="general_default">default</localize>)</em></div>
<a href="" ng-click="toggleEditListViewDataTypeSettings()"><i class="umb-list-view-settings__settings-icon icon-settings"></i></a>
</div>
<a href="" class="umb-list-view-settings__create-new" ng-if="!customListViewCreated" ng-click="createCustomListViewDataType()"><localize key="editcontenttype_createListView">Create custom list view</localize></a>
<a href="" class="umb-list-view-settings__remove-new" ng-if="customListViewCreated" ng-click="removeCustomListDataType()"><localize key="editcontenttype_removeListView">Remove custom list view</localize></a>
</div>
</div>
</div>
<!-- list view settings -->
<div class="umb-list-view-settings__settings form-horizontal" ng-if="editDataTypeSettings" ng-class="{'-open': editDataTypeSettings}">
<umb-property property="preValue" ng-repeat="preValue in dataType.preValues">
<umb-editor model="preValue" is-pre-value="true"></umb-editor>
</umb-property>
<button type="button" class="btn" ng-click="toggleEditListViewDataTypeSettings()"><localize key="general_close">Close</localize></button>
<button type="button" class="btn btn-success" ng-click="saveListViewDataType()"><localize key="buttons_saveListView"></localize></button>
</div>
</div>
</div>
@@ -0,0 +1,5 @@
<ul class="umb-load-indicator animated -half-second">
<li class="umb-load-indicator__bubble"></li>
<li class="umb-load-indicator__bubble"></li>
<li class="umb-load-indicator__bubble"></li>
</ul>
@@ -0,0 +1,35 @@
<ng-form name="lockedFieldForm" class="umb-locked-field">
<div class="umb-locked-field__wrapper">
<a ng-if="locked" href="" ng-click="unlock()" class="umb-locked-field__toggle">
<i class="umb-locked-field__lock-icon icon-lock"></i>
</a>
<a ng-if="!locked" href="" ng-click="lock()" class="umb-locked-field__toggle">
<i class="umb-locked-field__lock-icon icon-unlocked -unlocked"></i>
</a>
<input type="text"
class="umb-locked-field__input"
name="lockedField"
ng-model="ngModel"
ng-disabled="locked"
ng-class="{'-unlocked': !locked}"
placeholder="{{placeholderText}}"
val-regex="{{regexValidation}}"
umb-auto-resize
required
val-server-field="{{serverValidationField}}"
title="{{ngModel}}"
focus-when="{{!locked}}"
umb-select-when="{{!locked}}"
on-blur="lock()" />
</div>
<div class="umb-validation-label" val-msg-for="lockedField" val-toggle-msg="required"><localize key="general_required">Required</localize> <localize key="content_alias">alias</localize></div>
<div ng-if="regexValidation.length > 0" class="umb-validation-label" val-msg-for="lockedField" val-toggle-msg="valRegex"><localize key="general_invalid">Invalid</localize> <localize key="content_alias">alias</localize></div>
<div ng-if="serverValidationField.length > 0" class="umb-validation-label" val-msg-for="lockedField" val-toggle-msg="valServerField"></div>
</ng-form>
@@ -0,0 +1,28 @@
<div class="umb-media-grid">
<div class="umb-media-grid__item" ng-click="clickItem(item, $event, $index)" ng-repeat="item in items | filter:filterBy" ng-style="item.flexStyle" ng-class="{'-selected': item.selected, '-file': !item.thumbnail, '-svg': item.extension == 'svg'}">
<div>
<i ng-show="item.selected" class="icon-check umb-media-grid__checkmark"></i>
<div class="umb-media-grid__item-overlay" ng-class="{'-locked': item.selected}" ng-click="clickItemName(item, $event, $index)">
<i ng-if="onDetailsHover" class="icon-info umb-media-grid__info" ng-mouseover="hoverItemDetails(item, $event, true)" ng-mouseleave="hoverItemDetails(item, $event, false)"></i>
<div class="umb-media-grid__item-name">{{item.name}}</div>
</div>
<!-- Check backgrund -->
<div class="umb-media-grid__image-background" ng-if="item.thumbnail || item.extension == 'svg'"></div>
<!-- Image thumbnail -->
<img class="umb-media-grid__item-image" width="{{item.width}}" height="{{item.height}}" ng-if="item.thumbnail" ng-src="{{item.thumbnail}}" alt="{{item.name}}" title="{{item.name}}" draggable="false" />
<!-- SVG -->
<img class="umb-media-grid__item-image" width="{{item.width}}" height="{{item.height}}" ng-if="!item.thumbnail && item.extension == 'svg'" ng-src="{{item.file}}" alt="{{item.name}}" title="{{item.name}}" draggable="false" />
<!-- Transparent image - fallback - used to keep image proportions on wrapper-->
<img class="umb-media-grid__item-image-placeholder" ng-if="!item.thumbnail && item.extension != 'svg'" src="assets/img/transparent.png" alt="{{item.name}}" draggable="false" />
<!-- Icon for files -->
<i class="umb-media-grid__item-icon {{item.icon}}" ng-if="!item.thumbnail && item.extension != 'svg'"></i>
</div>
</div>
</div>
@@ -0,0 +1,26 @@
<div class="pagination" ng-show="pagination.length > 1">
<ul>
<li ng-class="{disabled:pageNumber <= 1}">
<a href="#" ng-click="prev()" prevent-default>
<localize key="general_previous">Previous</localize>
</a>
</li>
<li ng-repeat="pgn in pagination"
ng-class="{active:pgn.isActive}">
<a href="#" ng-click="goToPage(pgn.val - 1)" prevent-default
ng-bind="pgn.name ? pgn.name : pgn.val"
ng-if="pgn.val != '...'"></a>
<span ng-bind="pgn.val" ng-if="pgn.val == '...'"></span>
</li>
<li ng-class="{disabled:pageNumber >= totalPages}">
<a href="#" ng-click="next()" prevent-default>
<localize key="general_next">Next</localize>
</a>
</li>
</ul>
</div>
@@ -0,0 +1,3 @@
<div class="umb-progress-bar">
<span class="umb-progress-bar__progress" style="width: {{percentage}}%"></span>
</div>
@@ -0,0 +1,60 @@
<div>
<div class="umb-table" ng-if="items">
<!-- Listviews head section -->
<div class="umb-table-head">
<div class="umb-table-row">
<div class="umb-table-cell">
<input class="umb-table__input" type="checkbox"
ng-if="allowSelectAll"
ng-click="selectAll($event)"
ng-checked="isSelectedAll()">
</div>
<div class="umb-table-cell umb-table__name">
<a class="umb-table-head__link sortable" href="#" ng-click="sort('Name', true, true)" prevent-default>
<localize key="general_name">Name</localize>
<i class="umb-table-head__icon icon" ng-class="{'icon-navigation-up': isSortDirection('Name', 'asc'), 'icon-navigation-down': isSortDirection('Name', 'desc')}"></i>
</a>
</div>
<div class="umb-table-cell" ng-repeat="column in itemProperties">
<a class="umb-table-head__link" title="Sort by {{ column.header }}" href="#"
ng-click="sort(column.alias, column.allowSorting, column.isSystem)"
ng-class="{'sortable':column.allowSorting}" prevent-default>
<span ng-bind="column.header"></span>
<i class="umb-table-head__icon icon" ng-class="{'icon-navigation-up': isSortDirection(column.alias, 'asc'), 'icon-navigation-down': isSortDirection(column.alias, 'desc')}"></i>
</a>
</div>
</div>
</div>
<!-- Listview body section -->
<div class="umb-table-body">
<div class="umb-table-row"
ng-repeat="item in items"
ng-class="{
'-selected':item.selected,
'-published':item.published,
'-unpublished':!item.published
}"
ng-click="selectItem(item, $index, $event)">
<div class="umb-table-cell" ng-class="{'has-unpublished-version':!item.published && item.hasPublishedVersion}">
<i class="umb-table-body__icon umb-table-body__fileicon {{item.icon}}" ng-class="getIcon(item)"></i>
<i class="umb-table-body__icon umb-table-body__checkicon icon-check"></i>
</div>
<div class="umb-table-cell umb-table__name">
<a title="{{ item.name }}" class="umb-table-body__link" href=""
ng-click="clickItem(item, $event)"
ng-bind="item.name">
</a>
</div>
<div class="umb-table-cell" ng-repeat="column in itemProperties">
<span title="{{column.header}}: {{item[column.alias]}}">{{item[column.alias]}}</span>
</div>
</div>
</div>
</div>
<!-- If list is empty, then display -->
<umb-empty-state ng-if="!items"
position="center">
<localize key="content_listViewNoItems">There are no items show in the list.</localize>
</umb-empty-state>
</div>

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