Upgrade to 7.4.0-RC

This commit is contained in:
Sebastiaan Janssen
2016-02-05 11:05:04 +01:00
parent 2b87f60066
commit e1d50b5da5
442 changed files with 15851 additions and 53155 deletions
+40 -39
View File
@@ -52,8 +52,8 @@
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="businesslogic, Version=1.0.5829.26088, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\businesslogic.dll</HintPath>
<Reference Include="businesslogic, Version=1.0.5878.33804, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\businesslogic.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ClientDependency.Core, Version=1.8.4.0, Culture=neutral, processorArchitecture=MSIL">
@@ -64,12 +64,12 @@
<HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="cms, Version=1.0.5829.26088, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\cms.dll</HintPath>
<Reference Include="cms, Version=1.0.5878.33804, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\cms.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="controls, Version=1.0.5829.26090, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\controls.dll</HintPath>
<Reference Include="controls, Version=1.0.5878.33806, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\controls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CookComputing.XmlRpcV2, Version=2.5.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d, processorArchitecture=MSIL">
@@ -92,20 +92,20 @@
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor, Version=2.3.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.3.0.0\lib\net45\ImageProcessor.dll</HintPath>
<Reference Include="ImageProcessor, Version=2.3.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.3.2.0\lib\net45\ImageProcessor.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor.Web, Version=4.4.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.4.0.0\lib\net45\ImageProcessor.Web.dll</HintPath>
<Reference Include="ImageProcessor.Web, Version=4.5.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.5.1.0\lib\net45\ImageProcessor.Web.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="InfoCaster.Umbraco.UrlTracker, Version=3.8.5620.26854, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UrlTracker.3.8\lib\InfoCaster.Umbraco.UrlTracker.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="interfaces, Version=1.0.5829.26085, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\interfaces.dll</HintPath>
<Reference Include="interfaces, Version=1.0.5878.33801, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\interfaces.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="JsonFx, Version=2.0.1209.2802, Culture=neutral, PublicKeyToken=315052dd637f8a52, processorArchitecture=MSIL">
@@ -113,18 +113,19 @@
<HintPath>..\packages\JsonFx.2.0.1209.2802\lib\net40\JsonFx.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\log4net.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\log4net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="MarkdownSharp">
<HintPath>..\packages\MarkdownSharp.1.13.0.0\lib\35\MarkdownSharp.dll</HintPath>
<Reference Include="MarkdownSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Markdown.1.14.4\lib\net45\MarkdownSharp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.ApplicationBlocks.Data, Version=1.0.1559.20655, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -188,17 +189,17 @@
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SQLCE4Umbraco, Version=1.0.5829.26089, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\SQLCE4Umbraco.dll</HintPath>
<Reference Include="SQLCE4Umbraco, Version=1.0.5878.33805, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\SQLCE4Umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\System.Data.SqlServerCe.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\System.Data.SqlServerCe.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http" />
@@ -262,43 +263,43 @@
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Xml.Linq" />
<Reference Include="TidyNet, Version=1.0.0.0, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\TidyNet.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\TidyNet.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco, Version=1.0.5829.26091, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\umbraco.dll</HintPath>
<Reference Include="umbraco, Version=1.0.5878.33807, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Core, Version=1.0.5829.26085, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\Umbraco.Core.dll</HintPath>
<Reference Include="Umbraco.Core, Version=1.0.5878.33801, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\Umbraco.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.DataLayer, Version=1.0.5829.26088, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\umbraco.DataLayer.dll</HintPath>
<Reference Include="umbraco.DataLayer, Version=1.0.5878.33804, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\umbraco.DataLayer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.editorControls, Version=1.0.5829.26092, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\umbraco.editorControls.dll</HintPath>
<Reference Include="umbraco.editorControls, Version=1.0.5878.33809, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\umbraco.editorControls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.MacroEngines, Version=1.0.5829.26093, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\umbraco.MacroEngines.dll</HintPath>
<Reference Include="umbraco.MacroEngines, Version=1.0.5878.33809, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\umbraco.MacroEngines.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.providers, Version=1.0.5829.26090, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\umbraco.providers.dll</HintPath>
<Reference Include="umbraco.providers, Version=1.0.5878.33807, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\umbraco.providers.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Web.UI, Version=1.0.5829.26093, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\Umbraco.Web.UI.dll</HintPath>
<Reference Include="Umbraco.Web.UI, Version=1.0.5878.33810, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\Umbraco.Web.UI.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UmbracoExamine, Version=0.7.0.26089, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\UmbracoExamine.dll</HintPath>
<Reference Include="UmbracoExamine, Version=0.7.0.33805, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-RC1\lib\UmbracoExamine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UrlRewritingNet.UrlRewriter, Version=2.0.60829.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.4.0-beta\lib\UrlRewritingNet.UrlRewriter.dll</HintPath>
<Reference Include="UrlRewritingNet.UrlRewriter, Version=2.0.7.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UrlRewritingNet.2.0.7\lib\UrlRewritingNet.UrlRewriter.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="WebMatrix.Data, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -18,6 +18,7 @@
var topic = topicService.CurrentTopic(this.Context, ApplicationContext.ApplicationCache.RequestCache);
var forum = Umbraco.TypedContent(topic.ParentId);
var forumReadOnly = forum.NewTopicsAllowed() == false;
}
@* If author exists and comment is either not spam or the viewer is a the author or an admin admin *@
@if (commentAuthor != null && (Model.IsSpam == false || (currentMember != null && currentMember.Id == commentAuthor.Id) || Members.IsAdmin()))
@@ -48,8 +49,23 @@
<a href="/member/@commentAuthor.Id" class="photo">@Html.Raw(OurUmbraco.Our.Utils.GetMemberAvatar(commentAuthor, 75))</a>
<div class="highfive highfive-comment">
@{
var html = "High fives from:<br />";
foreach (var vote in Model.Votes)
{
if (Model.Id == answer && vote.MemberId == Model.TopicAuthorId)
{
html = string.Format("{0}<a href=\"/member/{1}\">{2}</a> (marked as the answer)<br />", html, vote.MemberId, vote.MemberName);
}
else
{
html = string.Format("{0}<a href=\"/member/{1}\">{2}</a><br />", html, vote.MemberId, vote.MemberName);
}
}
<div class="highfive-count">
@*html = string.Format("{0}<a href=\"/documentation/our/karma\" class=\"explain\">what is this?</a><br />", html);*@
}
<div class="highfive-count votes-tooltip" title="@(Model.Votes.Any() ? html : null)">
@Model.Score
</div>
@if (Members.IsLoggedIn() && !Utils.HasVoted(currentMember.Id, Model.Id, "powersComment"))
@@ -139,4 +155,14 @@
</a>
</div>
</li>
}
}
<link rel="stylesheet" type="text/css" href="/css/tooltipster.css" />
<script type="text/javascript" src="/scripts/jquery.tooltipster.min.js"></script>
<script type="text/javascript">
$('.highfive-count').tooltipster({
contentAsHTML: true,
interactive: true
});
</script>
@@ -39,15 +39,22 @@
<div class="comment-inner">
<a href="/member/@topicAuthor.Id" class="photo">@Html.Raw(OurUmbraco.Our.Utils.GetMemberAvatar(topicAuthor, 75))</a>
<div class="highfive highfive-question">
<div class="highfive-count">
@{
var html = "High fives from:<br />";
foreach (var vote in Model.Votes)
{
html = string.Format("{0}<a href='/member/{1}'>{2}</a><br />", html, vote.MemberId, vote.MemberName);
}
@*html = string.Format("{0}<a href=\"/documentation/our/karma\" class=\"explain\">what is this?</a><br />", html);*@
}
<div class="highfive-count votes-tooltip" title="@(Model.Votes.Any() ? html : null)">
@Model.Score
</div>
@if (Members.IsLoggedIn() && !Utils.HasVoted(currentMember.Id, Model.Id, "powersTopic"))
{
if (currentMember.Id != Model.MemberId)
{
<a href="#" data-id="@Model.Id"><img src="/assets/images/highfive.svg" alt="high five" />High Five</a>
<a href="#" data-id="@Model.Id"><img src="/assets/images/highfive.svg" alt="high five"/>High Five</a>
}
}
</div>
@@ -77,10 +84,10 @@
<div class="alert">
@if (Members.IsAdmin())
{
<span>You can see this topic because you're a moderator of the forum.</span><br /><br />
<span>You can see this topic because you're a moderator of the forum.</span><br/><br/>
}
Sorry if we're causing you any inconvenience but this topic has been automatically marked as spam. A moderator has been notified and will evaluate the validity of your topic. <br />
Only moderators and the topic author starter can see this topic. When this topic has been marked as clean, this topic will be shown as normal.<br />
Sorry if we're causing you any inconvenience but this topic has been automatically marked as spam. A moderator has been notified and will evaluate the validity of your topic. <br/>
Only moderators and the topic author starter can see this topic. When this topic has been marked as clean, this topic will be shown as normal.<br/>
</div>
}
+1 -1
View File
@@ -22,7 +22,7 @@
<add namespace="Umbraco.Web.Mvc" />
<add namespace="umbraco" />
<add namespace="Examine" />
<add namespace="Umbraco.Web.PublishedContentModels" />
</namespaces>
</pages>
</system.web.webPages.razor>
-8
View File
@@ -71,14 +71,6 @@
views/dashboard/default/startupdashboardintro.html
</control>
</tab>
<tab caption="Change password">
<control showOnce="false" addPanel="false" panelCaption="">
views/dashboard/ChangePassword.html
</control>
</tab>
<tab caption="Url Tracker">
<control addPanel="true">~/Umbraco/UrlTracker/InfoCaster.Umbraco.UrlTracker.UI.UrlTrackerManagerWrapper.ascx</control>
</tab>
</section>
+3 -3
View File
@@ -34,9 +34,9 @@
<add application="users" alias="userPermissions" title="User Permissions" type="umbraco.cms.presentation.Trees.UserPermissions, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" />
<!--Members-->
<add initialize="true" sortOrder="0" alias="memberTypes" application="member" title="Member Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTypeTreeController, umbraco" />
<add application="member" alias="memberGroups" title="Member Groups" type="umbraco.loadMemberGroups, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="1" />
<add initialize="true" sortOrder="2" alias="member" application="member" title="Members" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTreeController, umbraco" />
<add initialize="true" sortOrder="0" alias="member" application="member" title="Members" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTreeController, umbraco" />
<add initialize="true" sortOrder="1" alias="memberTypes" application="member" title="Member Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTypeTreeController, umbraco" />
<add application="member" sortOrder="2" alias="memberGroups" title="Member Groups" type="umbraco.loadMemberGroups, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" />
<!--Translation-->
<add silent="false" initialize="true" sortOrder="1" alias="openTasks" application="translation" title="Tasks assigned to you" iconClosed="icon-folder" iconOpen="icon-folder" type="umbraco.loadOpenTasks, umbraco" />
+274
View File
@@ -0,0 +1,274 @@
/* This is the default Tooltipster theme (feel free to modify or duplicate and create multiple themes!): */
.tooltipster-default {
border-radius: 5px;
border: 2px solid #000;
background: #4c4c4c;
color: #fff;
}
/* Use this next selector to style things like font-size and line-height: */
.tooltipster-default .tooltipster-content {
font-family: Arial, sans-serif;
font-size: 14px;
line-height: 16px;
padding: 8px 10px;
overflow: hidden;
}
/* This next selector defines the color of the border on the outside of the arrow. This will automatically match the color and size of the border set on the main tooltip styles. Set display: none; if you would like a border around the tooltip but no border around the arrow */
.tooltipster-default .tooltipster-arrow .tooltipster-arrow-border {
/* border-color: ... !important; */
}
/* If you're using the icon option, use this next selector to style them */
.tooltipster-icon {
cursor: help;
margin-left: 4px;
}
/* This is the base styling required to make all Tooltipsters work */
.tooltipster-base {
padding: 0;
font-size: 0;
line-height: 0;
position: absolute;
left: 0;
top: 0;
z-index: 9999999;
pointer-events: none;
width: auto;
overflow: visible;
}
.tooltipster-base .tooltipster-content {
overflow: hidden;
}
/* These next classes handle the styles for the little arrow attached to the tooltip. By default, the arrow will inherit the same colors and border as what is set on the main tooltip itself. */
.tooltipster-arrow {
display: block;
text-align: center;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
.tooltipster-arrow span, .tooltipster-arrow-border {
display: block;
width: 0;
height: 0;
position: absolute;
}
.tooltipster-arrow-top span, .tooltipster-arrow-top-right span, .tooltipster-arrow-top-left span {
border-left: 8px solid transparent !important;
border-right: 8px solid transparent !important;
border-top: 8px solid;
bottom: -7px;
}
.tooltipster-arrow-top .tooltipster-arrow-border, .tooltipster-arrow-top-right .tooltipster-arrow-border, .tooltipster-arrow-top-left .tooltipster-arrow-border {
border-left: 9px solid transparent !important;
border-right: 9px solid transparent !important;
border-top: 9px solid;
bottom: -7px;
}
.tooltipster-arrow-bottom span, .tooltipster-arrow-bottom-right span, .tooltipster-arrow-bottom-left span {
border-left: 8px solid transparent !important;
border-right: 8px solid transparent !important;
border-bottom: 8px solid;
top: -7px;
}
.tooltipster-arrow-bottom .tooltipster-arrow-border, .tooltipster-arrow-bottom-right .tooltipster-arrow-border, .tooltipster-arrow-bottom-left .tooltipster-arrow-border {
border-left: 9px solid transparent !important;
border-right: 9px solid transparent !important;
border-bottom: 9px solid;
top: -7px;
}
.tooltipster-arrow-top span, .tooltipster-arrow-top .tooltipster-arrow-border, .tooltipster-arrow-bottom span, .tooltipster-arrow-bottom .tooltipster-arrow-border {
left: 0;
right: 0;
margin: 0 auto;
}
.tooltipster-arrow-top-left span, .tooltipster-arrow-bottom-left span {
left: 6px;
}
.tooltipster-arrow-top-left .tooltipster-arrow-border, .tooltipster-arrow-bottom-left .tooltipster-arrow-border {
left: 5px;
}
.tooltipster-arrow-top-right span, .tooltipster-arrow-bottom-right span {
right: 6px;
}
.tooltipster-arrow-top-right .tooltipster-arrow-border, .tooltipster-arrow-bottom-right .tooltipster-arrow-border {
right: 5px;
}
.tooltipster-arrow-left span, .tooltipster-arrow-left .tooltipster-arrow-border {
border-top: 8px solid transparent !important;
border-bottom: 8px solid transparent !important;
border-left: 8px solid;
top: 50%;
margin-top: -7px;
right: -7px;
}
.tooltipster-arrow-left .tooltipster-arrow-border {
border-top: 9px solid transparent !important;
border-bottom: 9px solid transparent !important;
border-left: 9px solid;
margin-top: -8px;
}
.tooltipster-arrow-right span, .tooltipster-arrow-right .tooltipster-arrow-border {
border-top: 8px solid transparent !important;
border-bottom: 8px solid transparent !important;
border-right: 8px solid;
top: 50%;
margin-top: -7px;
left: -7px;
}
.tooltipster-arrow-right .tooltipster-arrow-border {
border-top: 9px solid transparent !important;
border-bottom: 9px solid transparent !important;
border-right: 9px solid;
margin-top: -8px;
}
/* Some CSS magic for the awesome animations - feel free to make your own custom animations and reference it in your Tooltipster settings! */
.tooltipster-fade {
opacity: 0;
-webkit-transition-property: opacity;
-moz-transition-property: opacity;
-o-transition-property: opacity;
-ms-transition-property: opacity;
transition-property: opacity;
}
.tooltipster-fade-show {
opacity: 1;
}
.tooltipster-grow {
-webkit-transform: scale(0,0);
-moz-transform: scale(0,0);
-o-transform: scale(0,0);
-ms-transform: scale(0,0);
transform: scale(0,0);
-webkit-transition-property: -webkit-transform;
-moz-transition-property: -moz-transform;
-o-transition-property: -o-transform;
-ms-transition-property: -ms-transform;
transition-property: transform;
-webkit-backface-visibility: hidden;
}
.tooltipster-grow-show {
-webkit-transform: scale(1,1);
-moz-transform: scale(1,1);
-o-transform: scale(1,1);
-ms-transform: scale(1,1);
transform: scale(1,1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
}
.tooltipster-swing {
opacity: 0;
-webkit-transform: rotateZ(4deg);
-moz-transform: rotateZ(4deg);
-o-transform: rotateZ(4deg);
-ms-transform: rotateZ(4deg);
transform: rotateZ(4deg);
-webkit-transition-property: -webkit-transform, opacity;
-moz-transition-property: -moz-transform;
-o-transition-property: -o-transform;
-ms-transition-property: -ms-transform;
transition-property: transform;
}
.tooltipster-swing-show {
opacity: 1;
-webkit-transform: rotateZ(0deg);
-moz-transform: rotateZ(0deg);
-o-transform: rotateZ(0deg);
-ms-transform: rotateZ(0deg);
transform: rotateZ(0deg);
-webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 1);
-webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
-moz-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
-ms-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
-o-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
}
.tooltipster-fall {
top: 0;
-webkit-transition-property: top;
-moz-transition-property: top;
-o-transition-property: top;
-ms-transition-property: top;
transition-property: top;
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
}
.tooltipster-fall-show {
}
.tooltipster-fall.tooltipster-dying {
-webkit-transition-property: all;
-moz-transition-property: all;
-o-transition-property: all;
-ms-transition-property: all;
transition-property: all;
top: 0px !important;
opacity: 0;
}
.tooltipster-slide {
left: -40px;
-webkit-transition-property: left;
-moz-transition-property: left;
-o-transition-property: left;
-ms-transition-property: left;
transition-property: left;
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
}
.tooltipster-slide.tooltipster-slide-show {
}
.tooltipster-slide.tooltipster-dying {
-webkit-transition-property: all;
-moz-transition-property: all;
-o-transition-property: all;
-ms-transition-property: all;
transition-property: all;
left: 0px !important;
opacity: 0;
}
/* CSS transition for when contenting is changing in a tooltip that is still open. The only properties that will NOT transition are: width, height, top, and left */
.tooltipster-content-changing {
opacity: 0.5;
-webkit-transform: scale(1.1, 1.1);
-moz-transform: scale(1.1, 1.1);
-o-transform: scale(1.1, 1.1);
-ms-transform: scale(1.1, 1.1);
transform: scale(1.1, 1.1);
}
+5 -3
View File
@@ -8,13 +8,14 @@
<package id="EasyHttp" version="1.6.29.0" targetFramework="net451" />
<package id="Examine" version="0.1.68.0" targetFramework="net451" />
<package id="HtmlAgilityPack" version="1.4.9" targetFramework="net451" />
<package id="ImageProcessor" version="2.3.0.0" targetFramework="net451" />
<package id="ImageProcessor.Web" version="4.4.0.0" targetFramework="net451" />
<package id="ImageProcessor" version="2.3.2.0" targetFramework="net451" />
<package id="ImageProcessor.Web" version="4.5.1.0" targetFramework="net451" />
<package id="jQuery" version="1.4.1" targetFramework="net451" />
<package id="jQuery.Validation" version="1.8" targetFramework="net451" />
<package id="jQuery.Validation.Unobtrusive" version="2.0.20710.0" targetFramework="net451" />
<package id="JsonFx" version="2.0.1209.2802" targetFramework="net4" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net451" />
<package id="Markdown" version="1.14.4" targetFramework="net451" />
<package id="MarkdownSharp" version="1.13.0.0" targetFramework="net4" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net451" />
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net451" />
@@ -46,7 +47,8 @@
<package id="RestSharp" version="104.1" targetFramework="net4" />
<package id="semver" version="1.1.2" targetFramework="net451" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net451" />
<package id="UmbracoCms.Core" version="7.4.0-beta" targetFramework="net451" />
<package id="UmbracoCms.Core" version="7.4.0-RC1" targetFramework="net451" />
<package id="UrlRewritingNet" version="2.0.7" targetFramework="net451" />
<package id="UrlTracker" version="3.8" targetFramework="net451" />
<package id="xmlrpcnet" version="2.5.0" targetFramework="net451" />
<package id="YouTrackSharp" version="2.0.11.0" targetFramework="net4" />
File diff suppressed because one or more lines are too long
@@ -22,6 +22,11 @@
var parser = document.createElement('a');
parser.href = parts[1];
// This next line may seem redundant but is required to get around a bug in IE
// that doesn't set the parser.hostname or parser.protocol correctly for relative URLs.
// See https://gist.github.com/jlong/2428561#gistcomment-1461205
parser.href = parser.href;
// => "http:"
if (!parser.protocol || (parser.protocol.toLowerCase() !== "http:" && parser.protocol.toLowerCase() !== "https:")) {
throw "invalid protocol";
@@ -1,33 +0,0 @@
// Umbraco Live Editing: Communicator
/********************* Communicator Constructor *********************/
function UmbracoCommunicator() { }
/********************* Communicator Methods *********************/
// Sends a message to the client using the communicator.
UmbracoCommunicator.prototype.SendClientMessage = function(type, message) {
// find the communicator
var divs = document.getElementsByTagName("div");
var communicator = null;
for (var i = 0; i < divs.length && communicator == null; i++)
if (divs[i].className == "communicator")
communicator = divs[i];
Sys.Debug.assert(communicator != null, "LiveEditing: Communicator not found.");
// send the message
var typeBox = communicator.childNodes[0].childNodes[0];
var messageBox = communicator.childNodes[0].childNodes[1];
var submit = communicator.childNodes[0].childNodes[2];
typeBox.value = type;
messageBox.value = message;
submit.click();
}
/********************* Communicator Instance *********************/
var UmbracoCommunicator = new UmbracoCommunicator();
@@ -1,99 +0,0 @@
Type.registerNamespace("umbraco.presentation.LiveEditing.Controls");
/************************************ Toolbar class ***********************************/
// Constructor.
umbraco.presentation.LiveEditing.Controls.LiveEditingToolbar = function() {
umbraco.presentation.LiveEditing.Controls.LiveEditingToolbar.initializeBase(this);
this._inited = false;
// init toolbar on application load
var liveEditingToolbar = this;
Sys.Application.add_load(function() { liveEditingToolbar._init(); });
}
umbraco.presentation.LiveEditing.Controls.LiveEditingToolbar.prototype = {
// Initialize the toolbar.
_init: function() {
if (!this._inited) {
var liveEditingToolbar = this;
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) { liveEditingToolbar._handleError(sender, args); });
this._inited = true;
}
},
// Fires the Save event.
_save: function() {
var handler = this.get_events().getHandler("save");
var args = new Sys.EventArgs();
args.cancel = false;
if (handler)
handler(this, args);
if (!args.cancel) {
this.setDirty(false);
UmbSpeechBubble.ShowMessage("Info", "Saving", "Save in progress...");
}
return !args.cancel;
},
// Adds a listener for the Save event.
add_save: function(handler) {
this.get_events().addHandler("save", handler);
},
// Removes a listener for the Save event.
remove_save: function(handler) {
this.get_events().removeHandler("save", handler);
},
// Fires the Save and Publish event.
_saveAndPublish: function() {
var handler = this.get_events().getHandler("saveAndPublish");
var args = new Sys.EventArgs();
args.cancel = false;
if (handler)
handler(this, args);
if (!args.cancel) {
this.setDirty(false);
UmbSpeechBubble.ShowMessage("Info", "Publishing", "Save and publish in progress...");
}
return !args.cancel;
},
// Adds a listener for the Save and Publish event.
add_saveAndPublish: function(handler) {
this.get_events().addHandler("saveAndPublish", handler);
},
// Removes a listener for the Save and Publish event.
remove_saveAndPublish: function(handler) {
this.get_events().removeHandler("saveAndPublish", handler);
},
// Sets whether the pages has unsaved changes.
setDirty: function(isDirty) {
window.onbeforeunload = isDirty ? function() { return "You have unsaved changes."; } : null;
},
// Global error handler. Displays a tooltip with the error message.
_handleError: function(sender, args) {
if (args.get_error() != undefined) {
var errorMessage;
if (args.get_response().get_statusCode() == '200') {
errorMessage = args.get_error().message;
}
else {
errorMessage = "An unspecified error occurred.";
}
args.set_errorHandled(true);
UmbSpeechBubble.ShowMessage("info", "Error", errorMessage);
}
}
}
// Register the class and create a global instance.
umbraco.presentation.LiveEditing.Controls.LiveEditingToolbar.registerClass("umbraco.presentation.LiveEditing.Controls.LiveEditingToolbar", Sys.Component);
var LiveEditingToolbar = new umbraco.presentation.LiveEditing.Controls.LiveEditingToolbar();
@@ -1,370 +0,0 @@
/*****************************************************************
Live Editing placeholders
/****************************************************************/
umbraco\:iteminfo {
cursor: pointer;
border: 1px dashed #bbb;
padding: 5px;
}
.liveEditingForceBlockMode {
display: block;
}
umbraco\:iteminfo:hover
{
border: 2px dashed #f36f21;
padding: 5px;
}
/*****************************************************************
General Toolbar CSS
/****************************************************************/
html {
margin-top: 30px !important;
}
#LiveEditingToolbar
{
font-family:"Trebuchet MS",verdana,arial;
background: url(../../../umbraco_client/tabView/images/background.gif) !important;
position: fixed !important;
width: 100% !important;
height: 34px !important;
top: 0 !important;
left: 0 !important;
text-align: left !important;
border-bottom: 1px solid #B0B0B0 !important;
}
#LiveEditingToolbar div {
padding: 4px !important;
}
#LiveEditingToolbar div div {
padding: inherit !important;
}
#LiveEditingToolbar div.ExtraMenuItems {
display: inline !important;
}
#LiveEditingToolbar div {
/*background: url(/umbraco/LiveEditing/Images/Canvas.gif) no-repeat right 4px; */
width: 100%;
}
#LiveEditingToolbar * div {
background: none;
width: auto;
}
#LiveEditingToolbar input.button {
cursor: hand !important;
width: 22px !important;
height: 23px !important;
background: none !important;
border: none !important;
}
#LiveEditingToolbar input.button:hover, #LiveEditingClientToolbar a.mceButtonEnabled:hover {
background-image: url(../../../umbraco_client/menuicon/images/buttonbg.gif) !important;
border: none !important;
}
#LiveEditingToolbar input.close {
position: absolute !important;
right: 7px !important;
top: 6px !important;
/*border: none !Important;
background: none !Important; */
color: #000;
width: 150px;
}
#LiveEditingToolbar input.close:hover {
opacity: 1 !important;
}
#LiveEditingToolbar img.about {
margin: 0 5px 5px 5px !important;
}
#LiveEditingClientToolbar, #LiveEditingClientToolbar div {
display: inline !important;
}
#LiveEditingToolbar span.separator {
padding-right: 7px !important;
}
#LiveEditingToolbar span.separator span {
border-left: 1px solid #999999 !important;
border-right: 1px solid #EEEEEE !important;
position: absolute !important;
top: 7px !important;
width: 0px !important;
overflow: hidden !important;
}
#LiveEditingToolbar .umbLabelButton
{
cursor: hand !important;
float: left;
margin: 1px 5px 1px 1px;
padding: 0 !important;
}
#LiveEditingToolbar .umbLabelButton:hover
{
background: #EAEAEA;
border: 1px solid #CAC9C9 !Important;
margin: 0px 4px 0px 0px;
}
#LiveEditingToolbar .umbLabelButton a
{
text-decoration: none;
font-size: 80%;
margin-right: 3px;
padding: 5px 0;
}
#LiveEditingToolbar .umbLabelButton input.button {
width: 22px !important;
height: 23px !important;
margin-right: 3px;
background: none !important;
border: none !important;
vertical-align: middle;
}
#LiveEditingToolbar .umbLabelButton input.button:hover {
background-image: none !important;
border: none !important;
}
/*****************************************************************
TinyMCE extra CSS
/****************************************************************/
/* hide the temporary TinyMCE container */
.tinymceContainer {
position: absolute !important;
left: -1000px !important;
}
#LiveEditingClientToolbar .mceToolbarExternal table {
display: inline !important;
background: none !important;
margin: 0 !important;
}
#LiveEditingClientToolbar .mceToolbarExternal {
position: absolute !important;
top: 0 !important;
}
#LiveEditingClientToolbar a.mceButtonEnabled {
width: 22px !important;
height: 23px !important;
}
/*****************************************************************
Datatypes extra CSS
/****************************************************************/
.relatedlinksdatatype
{
background-color: #fff !important;
border: 1px solid #999 !important;
}
/*****************************************************************
Modal dialogs
/****************************************************************/
.umbModalBox h1
{
font-size: larger !important;
}
.umbModalBox h2
{
font-size: medium !important;
}
.umbModalBox label
{
padding-bottom: 2px !Important;
display: block !Important;
color: #666 !Important;
font-family:Trebuchet MS,Lucida Grande,verdana,arial ! important;
}
.umbModalBox p
{
font-size: 12px !important;
font-family:Trebuchet MS,Lucida Grande,verdana,arial ! important;
color:Black ! important;
margin-bottom:5px;
}
.umbModalBox p select
{
margin-bottom:10px ! important;
}
.umbModalBox p{font-size: 11px !Important}
#skins ul{list-style: none; padding: 0px; display: block; clear: both; height: 200px;}
#skins ul li{margin-right: 12px; float: left; border: 1px solid #efefef; padding: 5px; width: 120px; text-align: center; font-weight: normal;}
/*****************************************************************
Umbraco UI Components
/****************************************************************/
.propertypane {
position: relative;
display: block;
line-height: 1.1;
background: #fff url('/umbraco_client/propertypane/images/propertyBackground.gif') top repeat-x !Important;
background-image:url(/umbraco_client/propertypane/images/propertyBackground.gif) !Important;
padding: 5px;
margin:7px 0px 0px 0px;
border: 1px solid #d9d7d7;
text-align:left;
clear: both;
float: none;
color: black;
font-size: 11px !Important;
}
.propertypane th
{
vertical-align: top;
text-align:left;
font-weight:bold;
font-family: Trebuchet MS, Lucida Grande, verdana, arial;
font-size:12px;
width: 16%;
}
.propertypane,.propertypane td
{
font-family: Trebuchet MS, Lucida Grande, verdana, arial;
font-size:12px;
}
.propertypane small
{
font-weight: normal;
color: #666;
}
.propertypane div.propertyItem{
padding-bottom: 5px;
clear: both;
font-family: Trebuchet MS, Lucida Grande, verdana, arial;
font-size:12px;
}
.propertypane div.propertyItem .propertyItemheader{
width: 16%;
padding-right: 1%;
padding-bottom: 10px;
float: left;
clear: left;
font-weight:bold;
}
.propertypane div.propertyItem .propertyItemContent{
float: left;
padding-bottom: 5px;
clear: right;
}
h2.propertypaneTitel{font-size: 14px; color: #999;margin: 7px 0px 0px 0px; padding-bottom: 0px; line-height: 14px;}
div.propertyPaneFooter{clear: both; height: 1px; overflow: hidden; color: #fff;}
#LiveEditingToolbar .ModuleSelector
{
background-color:#FFF !important;
position:absolute;
top:36px;
left:270px;
color:#000;
border-left:5px solid #A3A3A3;
border-right:5px solid #A3A3A3;
border-bottom:5px solid #A3A3A3;
z-index:100;
}
#LiveEditingToolbar #moduleSelectorContainer
{
padding:10px;
}
.umbModuleContainerSelector
{
cursor:pointer;
}
p#installingModule img
{
float:none;
margin:0;
padding:0;
}
#LiveEditingToolbar #modules ul
{
list-style-type:none;
margin-left:0px;
margin-right:0px;
}
#LiveEditingToolbar #modules ul li
{
display:block;
padding-bottom:5px;
padding-top:5px;
border-bottom:1px solid #c3c3c3;
}
#LiveEditingToolbar .umbLabelButton a, #LiveEditingToolbar .umbLabelButton a:hover
{
color:Black !important;
}
.umbModalBox a, .umbModalBox a:hover
{
color:#888 !important;
}
/* skin customize dialog */
#costumizeSkin #dependencies .propertypane
{
height:205px;
overflow:scroll;
overflow-x: hidden;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

@@ -1,5 +0,0 @@
/********************* Live Editing CreateModule functions *********************/
function CreateModuleOk()
{
UmbracoCommunicator.SendClientMessage('createcontent', '');
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

@@ -1,5 +0,0 @@
/********************* Live Editing DeleteModule functions *********************/
function DeleteModuleOk()
{
UmbracoCommunicator.SendClientMessage('deletecontent', '');
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

@@ -1,341 +0,0 @@
// Umbraco Live Editing - ItemEditing: Item Editing
var ItemEditing = null;
Type.registerNamespace("umbraco.presentation.LiveEditing");
/************************ ItemEditing class ************************/
// Creates a new instance of the ItemEditing class.
umbraco.presentation.LiveEditing.ItemEditing = function() {
umbraco.presentation.LiveEditing.ItemEditing.initializeBase(this);
this._inited = false;
this._items = new Array();
this._activeItem = null;
this._editControl = null;
this._submitControl = null;
var _this = this;
Sys.Debug.trace("Constructor, before init load");
if (!this._inited) {
_this.init();
}
Sys.Application.add_load(function() {
_this.init();
});
Sys.Debug.trace("Constructor, after init load");
}
umbraco.presentation.LiveEditing.ItemEditing.prototype = {
// Initializes this instance.
init: function() {
Sys.Debug.trace("In init...");
if (!this._inited) {
this._inited = true;
Sys.Debug.trace("Live Editing - ItemEditing: Initialization.");
Sys.Debug.assert(typeof (jQuery) == 'function', "jQuery is not loaded.");
this.itemsEnable();
var _this = this;
LiveEditingToolbar.add_save(function(sender, args) { _this.delaySaveWhenEditing(args, "save"); });
LiveEditingToolbar.add_saveAndPublish(function(sender, args) { _this.delaySaveWhenEditing(args, "saveAndPublish"); });
this._inited = true;
Sys.Debug.trace("Live Editing - ItemEditing: Ready.");
}
else {
this.updateItems();
this.updateControls();
}
},
// Starts Live Editing the specified item.
// This method is triggered by the server.
startEdit: function(itemId) {
Sys.Debug.trace("Live Editing - ItemEditing: Start editing of Item " + itemId + ".");
this._activeItem = this._items[itemId];
Sys.Debug.assert(this._activeItem != null, "Live Editing - ItemEditing: Could not find item with ID " + itemId + ".");
this._editControl = this.getElementsByTagName("umbraco:control");
Sys.Debug.assert(this._editControl.length > 0, "Live Editing - ItemEditing: Could not find the editor control.");
//this._activeItem.jItem.fadeIn();
this.moveChildControls(this._editControl, this._activeItem.jItem);
// Only elements that are currently present, can cause item editing to stop.
// This enables transparent use of dynamically created elements (such as context/dropdown menus)
// as clicks on those elements will not trigger the stop edit signal.
jQuery("*").each(function () { jQuery(this).data("canStopEditing", true); });
// raise event
var handler = this.get_events().getHandler("startEdit");
if (handler)
handler(this, Sys.EventArgs.Empty);
this.ignoreChildClicks(this._activeItem.jItem);
LiveEditingToolbar.setDirty(true);
},
// Stops the editing of a specified item, and raises the stopEdit event.
stopEdit: function() {
if (this._activeItem != null) {
Sys.Debug.trace("Live Editing - ItemEditing: Stop editing of " + this._activeItem.toString() + ".");
// raise event
var handler = this.get_events().getHandler("stopEdit");
if (handler)
handler(this, Sys.EventArgs.Empty);
// submit changes
Sys.Debug.assert(this._submitControl != null, "Live Editing - ItemEditing: Submit button not set.");
this._submitControl.click();
// hide control
//this._activeItem.jItem.fadeOut();
this._activeItem = null;
this._submitControl = null;
this._editControl = null;
}
},
// Adds an event handler to the startEdit event.
add_startEdit: function(handler) {
this.get_events().addHandler("startEdit", handler);
},
// Removes an event handler from the startEdit event.
remove_startEdit: function(handler) {
this.get_events().removeHandler("startEdit", handler);
},
// Adds an event handler to the stopEdit event.
add_stopEdit: function(handler) {
this.get_events().addHandler("stopEdit", handler);
},
// Removes an event handler from the stopEdit event.
remove_stopEdit: function(handler) {
this.get_events().removeHandler("stopEdit", handler);
},
// Cancels the save method when an item is active, and postpones it to the next postback.
delaySaveWhenEditing: function(args, type) {
if (this._activeItem != null) {
this.stopEdit();
args.cancel = true;
(function() {
var f = function() {
Sys.Application.remove_load(f);
setTimeout(function() {
Sys.Debug.trace("Live Editing - Delayed Saving Changes to server");
UmbracoCommunicator.SendClientMessage(type, "");
}, 100);
}
Sys.Application.add_load(f);
})();
}
else {
Sys.Debug.trace("Live Editing - Saving Changes to server");
if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
UmbracoCommunicator.SendClientMessage(type, "");
}
else {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
UmbracoCommunicator.SendClientMessage(type, "");
});
}
}
},
// Enables Live Editing of items.
itemsEnable: function() {
var items = this.getElementsByTagName("umbraco:iteminfo");
Sys.Debug.trace(" Found " + items.length + " editable Umbraco item(s).");
// enhance items with edit functionality
var _this = this;
var i = 0;
items.each(function() {
var item = new umbraco.presentation.LiveEditing.activeItem(jQuery(this));
_this._items[item.itemId] = item;
Sys.Debug.trace(" " + (++i) + ". " + item.toString() + " is Live Editing enabled.");
});
// disable hyperlinks to make them clickable for Live Editing
this.disableHyperlinks();
// add "stop editing" handler when clicking outside the item
var _this = this;
jQuery(document).mousedown(function(event) {
Sys.Debug.trace("DOCUMENT CLICKED");
// the canStopEditing property is set in startEdit
if (_this._activeItem != null && jQuery(event.target).data("canStopEditing")) {
if (!_this._activeItem.clicked)
_this.stopEdit();
else
_this._activeItem.clicked = false;
}
});
jQuery("#LiveEditingToolbar").mousedown(function() {
Sys.Debug.trace("TOOLBAR CLICKED");
if (_this._activeItem != null)
_this._activeItem.clicked = true;
});
},
// Update items that have changed.
updateItems: function() {
var itemUpdates = this.getElementsByTagName("umbraco:itemupdate");
Sys.Debug.trace("Live Editing - ItemEditing: " + itemUpdates.length + " item update(s).");
var _this = this;
itemUpdates.each(function() {
var itemUpdate = jQuery(this);
var itemId = itemUpdate.attr("itemId");
var item = _this._items[itemId];
if (item != null) {
Sys.Debug.trace(" Updating " + item.toString() + ".");
// remove old children and add updates ones
_this.moveChildControls(itemUpdate, item.jItem);
//item.jItem.fadeIn();
// disable hyperlinks to make them clickable for Live Editing
_this.disableHyperlinks();
}
else {
itemUpdate.html("");
}
});
},
// Update controls that have changed.
updateControls: function() {
Sys.Debug.trace("Live Editing - ItemEditing: In updatecontrols");
var controlUpdates = this.getElementsByTagName("umbraco:control");
Sys.Debug.trace("Live Editing - ItemEditing: " + controlUpdates.length + " control update(s).");
if (controlUpdates.length == 1) {
if (this._activeItem != null && controlUpdates.children().length > 0) {
Sys.Debug.trace("Live Editing - ItemEditing: updating edit control.");
this.moveChildControls(controlUpdates, this._activeItem.jItem);
this.ignoreChildClicks();
}
this._submitControl = controlUpdates.next();
Sys.Debug.assert(this._submitControl.length > 0, "Live Editing - ItemEditing: Submit button not found.");
}
},
// ignores clicks on child elements of the control
ignoreChildClicks: function() {
var _this = this;
this._activeItem.jItem.children().mousedown(function(e) {
_this._activeItem.clicked = true;
});
},
// Moves the child controls from source into destination, overwriting existing elements.
moveChildControls: function(source, dest) {
Sys.Debug.trace("Live Editing - Moving Child Controls");
//remove contents in the destination
dest.html("");
//add the source to the destination
dest.append(source.html());
//remove teh contents from the source
source.html("");
},
// Gets a list of elements with the specified tagname including namespaced ones
getElementsByTagName: function(tagname) {
var found = jQuery("body").find("*").filter(function(index) {
if (this.nodeType != 3) {
var nn = this.nodeName.toLowerCase();
var ftn = tagname.toLowerCase();
var ln = (ftn.indexOf(":") > 0 ? ftn.substr(ftn.indexOf(":") + 1) : ftn);
return (nn == ftn
|| (typeof this.scopeName != "undefined" && nn == ln && this.scopeName.toLowerCase() == ftn.substr(0, ftn.indexOf(":"))));
}
return false;
});
Sys.Debug.trace("found " + found.length + " elements with selector: " + tagname);
return found;
},
// Disables hyperlinks inside the specified element.
disableHyperlinks: function() {
jQuery("a").click(function() {
return false;
});
}
}
umbraco.presentation.LiveEditing.ItemEditing.registerClass("umbraco.presentation.LiveEditing.ItemEditing", Sys.Component);
//an object to store the information for the active item
umbraco.presentation.LiveEditing.activeItem = function(item) {
//error checking
if (item != null && item.length != 1) {
return null;
}
//create the object with values, wire up events and return it
var obj = {
jItem: item,
nodeId: item.attr("nodeId"),
fieldName: item.attr("name"),
itemId: item.attr("itemId"),
clicked: false,
toString: function() {
return "Item " + this.itemId + " (node " + this.nodeId + ": " + this.fieldName + ")";
},
// Activates an item for editing.
activate: function() {
ItemEditing._items[this.itemId] = this;
if (this != ItemEditing._activeItem) {
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " was activated.");
if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
UmbracoCommunicator.SendClientMessage("edititem", this.itemId);
}
else {
var itemId = this.itemId;
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function() {
if (itemId != 0) {
UmbracoCommunicator.SendClientMessage("edititem", itemId);
itemId = 0;
}
});
}
//this.jItem.fadeOut();
}
},
// Item click handler.
onClick: function(e) {
if (ItemEditing._activeItem != null && ItemEditing._activeItem.itemId == this.itemId) {
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " click ignored because it is already active.");
}
else {
Sys.Debug.trace("Live Editing - ItemEditing: " + this.toString() + " was clicked.");
e.stopPropagation(); // disable click event propagation to parent elements
this.activate();
}
}
}
//keep the scope on the click event method call
obj.jItem.click(function(e) {
obj.onClick.call(obj, e);
});
return obj;
}
// global instance of the ItemEditing class
function initializeGlobalItemEditing() {
ItemEditing = new umbraco.presentation.LiveEditing.ItemEditing();
}
@@ -1,3 +0,0 @@
//this is simply used for live editing in order to invoke a method from a previously lazy loaded script;
//alert("ItemEditingInvoke: " + initializeGlobalItemEditing);
initializeGlobalItemEditing();
@@ -1,21 +0,0 @@
/********************* Live Editing MacroModule functions *********************/
function MacroOnDrop( sender, e )
{
var container = e.get_container();
var item = e.get_droppedItem();
var position = e.get_position();
//alert( String.format( "Container: {0}, Item: {1}, Position: {2}", container.id, item.id, position ) );
var instanceId = parseInt(item.getAttribute("InstanceId"));
var columnNo = parseInt(container.getAttribute("columnNo"));
var row = position;
}
function okAddMacro(sender, e)
{
$find('ModalMacro').hide();
/*__doPostBack('AddMacro', e); */
}
@@ -1 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CssParser.aspx.cs" Inherits="umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule.CssParser" %>
@@ -1,193 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ImageUploader.aspx.cs" Inherits="umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule.ImageUploader" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
<!--
#cropper {
cursor:move;
overflow:hidden;
width:<%= Request["w"] %>px;
height:<%= Request["h"] %>px;
clear:both;
border:1px solid #ccc;
background:#ccc;
margin: 5px 0px 15px 5px;
}
-->
</style>
<cc1:UmbracoClientDependencyLoader runat="server" id="ClientLoader" />
<umb:CssInclude ID="CssInclude1" runat="server" FilePath="ui/ui-lightness/jquery-ui.custom.css" PathNameAlias="UmbracoClient" />
<umb:CssInclude ID="CssInclude2" runat="server" FilePath="ui/default.css" PathNameAlias="UmbracoClient" />
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="ui/jquery.js" PathNameAlias="UmbracoClient"
Priority="0" />
<umb:JsInclude ID="JsInclude2" runat="server" FilePath="ui/jqueryui.js" PathNameAlias="UmbracoClient"
Priority="1" />
<umb:JsInclude ID="JsInclude3" runat="server" FilePath="mousewheel/jquery.mousewheel.js" PathNameAlias="UmbracoClient"
Priority="2" />
<script type="text/javascript">
function setImage() {
var val = $('#<%= Image.ClientID %>').val();
top.jQuery('#<%= Request["ctrl"] %>').val(val);
top.jQuery('#<%= Request["ctrl"] %>').trigger('change');
closeModal();
}
function closeModal() {
top.jQuery('.umbModalBoxIframe').closest(".umbModalBox").ModalWindowAPI().close();
return false;
}
</script>
<script type="text/javascript">
var sliderChange = function (e, ui) {
if (origwidht == 0) {
origwidht = $('#<%= Image1.ClientID %>').width();
}
if (origheight == 0) {
origheight = $('#<%= Image1.ClientID %>').height();
}
$('#cropper img').each(function (index, item) {
var _new = $('#slider').slider("value");
$('#<%= Scale.ClientID %>').val(_new);
$(this).width(origwidht * (_new / 100));
$(this).height(origheight * (_new / 100));
});
}
var origheight = 0;
var origwidht = 0;
$(function () {
if(<%= Request["w"] %> > <%= MaxWidth %> || <%= Request["h"] %> > <%= MaxHeight %>)
{
$("#cropper").css('width', <%= Request["w"] %> / 2);
$("#cropper").css('height', <%= Request["h"] %> / 2);
}
$("#<%= Image1.ClientID %>").draggable({
stop: function () {
$('#<%= X.ClientID %>').val($("#<%= Image1.ClientID %>").css('left').replace('px', ''));
$('#<%= Y.ClientID %>').val($("#<%= Image1.ClientID %>").css('top').replace('px', ''));
}
});
$('#slider').slider({ change: sliderChange, slide: sliderChange, min: 5, max: 200, value: 100 });
$('#cropper').mousewheel(function (event, delta, deltaX, deltaY) {
var speed = 5;
var mySlider = $("#slider");
var sliderVal = mySlider.slider("option", "value");
sliderVal += (delta * speed);
if (sliderVal > mySlider.slider("option", "max")) sliderVal = mySlider.slider("option", "max");
else if (sliderVal < mySlider.slider("option", "min")) sliderVal = mySlider.slider("option", "min");
$("#slider").slider("value", sliderVal);
return false;
});
});
function ResetToDefault() {
$("#slider").slider("value", 100);
$('#cropper img').css('left','0px')
$('#cropper img').css('top','0px');
$('#<%= X.ClientID %>').val(0);
$('#<%= Y.ClientID %>').val(0);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:HiddenField ID="Image" runat="server" />
<asp:HiddenField ID="FileName" runat="server" />
<asp:HiddenField ID="X" runat="server" Value="0"/>
<asp:HiddenField ID="Y" runat="server" Value="0"/>
<asp:HiddenField ID="Scale" runat="server" Value="100"/>
<cc1:Feedback ID="fb_feedback1" runat="server" />
<asp:PlaceHolder ID="pnl_upload" runat="server">
<cc1:Pane Text="Upload image file" runat="server">
<cc1:PropertyPanel runat="server" Text="Select a image file <br/><small>jpg, gif and png files can be used</small>">
<asp:FileUpload ID="FileUpload1" runat="server" />
</cc1:PropertyPanel>
</cc1:Pane>
<p style="margin-top: 20px;">
<asp:Button ID="bt_upload" runat="server" Text="Upload" onclick="bt_upload_Click" /> <em> or </em> <a href="#" onclick="closeModal();">Cancel</a>
</p>
</asp:PlaceHolder>
<asp:PlaceHolder ID="pnl_crop" runat="server" Visible="false">
<cc1:Pane runat="server" Text="Crop and scale image">
<cc1:PropertyPanel runat="server" Text="Crop <br /><small>Drag image with mouse to selct crop area</small>">
<div id="cropper">
<asp:Image ID="Image1" runat="server" />
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel runat="server" Text="Scale <br /><small>Drag slider to choose size</small>" >
<div id="slidercontainer" style="width: <%= scaleWidth %>">
<div id="slider"></div>
</div>
</cc1:PropertyPanel>
</div>
</cc1:Pane>
<p style="margin-top: 20px;">
<asp:Button ID="bt_crop" runat="server" Text="OK" onclick="bt_crop_Click" /> <em> or </em> <a href="#" onclick="closeModal();">Cancel</a>
</p>
</asp:PlaceHolder>
</form>
</body>
</html>
@@ -1 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ModuleInjectionMacroRenderer.aspx.cs" Inherits="umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule.ModuleInjectionMacroRenderer" %>
@@ -1,141 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ModuleInjector.aspx.cs" Inherits="umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule.ModuleInjector" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
<%@ Import Namespace="Umbraco.Web" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<cc1:UmbracoClientDependencyLoader runat="server" id="ClientLoader" />
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="ui/jquery.js" PathNameAlias="UmbracoClient"
Priority="0" />
<umb:CssInclude ID="CssInclude1" runat="server" FilePath="ui/default.css" PathNameAlias="UmbracoClient" />
<umb:CssInclude ID="CssInclude2" runat="server" FilePath="modal/style.css" PathNameAlias="UmbracoClient" />
<umb:CssInclude ID="CssInclude3" runat="server" FilePath="propertypane/style.css" PathNameAlias="UmbracoClient" />
<style type="text/css">
.propertyItemheader
{
width: 170px !important;
}
.guiInputTextStandard
{
width: 220px;
}
</style>
<script type="text/javascript">
var macroAliases = new Array();
var macroAlias = '<%= _macroAlias %>';
<%if (umbraco.UmbracoSettings.UseAspNetMasterPages) { %>
var macroElement = "umbraco:Macro";
<%}else{ %>
var macroElement = "?UMBRACO_MACRO";
<%}%>
function registerAlias(alias, pAlias) {
var macro = new Array();
macro[0] = alias;
macro[1] = pAlias;
macroAliases[macroAliases.length] = macro;
}
function updateMacro() {
var macroString = '<' + macroElement + ' ';
for (i=0; i<macroAliases.length; i++) {
var controlId = macroAliases[i][0];
var propertyName = macroAliases[i][1];
var control = jQuery("#" + controlId);
if (control == null || (!control.is('input') && !control.is('select'))) {
// hack for tree based macro parameter types
var picker = Umbraco.Controls.TreePicker.GetPickerById(controlId);
if (picker != undefined) {
macroString += propertyName + "=\"" + picker.GetValue() + "\" ";
}
} else {
if (control.is(':checkbox')) {
if (control.is(':checked'))
macroString += propertyName + "=\"1\" ";
else
macroString += propertyName + "=\"0\" ";
} else if (control[0].tagName.toLowerCase() == 'select') {
var tempValue = '';
control.find(':selected').each(function(i, selected) {
tempValue += jQuery(this).attr('value') + ', ';
});
/*
for (var j=0; j<document.forms[0][controlId].length;j++) {
if (document.forms[0][controlId][j].selected)
tempValue += document.forms[0][controlId][j].value + ', ';
}
*/
if (tempValue.length > 2)
tempValue = tempValue.substring(0, tempValue.length-2)
macroString += propertyName + "=\"" + tempValue + "\" ";
}else {
macroString += propertyName + "=\"" + pseudoHtmlEncode(document.forms[0][controlId].value) + "\" ";
}
}
}
if (macroString.length > 1)
macroString = macroString.substr(0, macroString.length-1);
<%if (!umbraco.UmbracoSettings.UseAspNetMasterPages){ %>
macroString += " macroAlias=\"" + macroAlias + "\"";
<%} %>
<%if (umbraco.UmbracoSettings.UseAspNetMasterPages){ %>
macroString += " Alias=\"" + macroAlias + "\" runat=\"server\"></" + macroElement + ">";
<%} else { %>
macroString += "></" + macroElement + ">";
<%} %>
top.jQuery('.umbModalBoxIframe').closest(".umbModalBox").ModalWindowAPI().close();
top.umbInsertModule('<%=Request.CleanForXss("target")%>',macroString,'<%=Request.CleanForXss("type")%>');
}
function pseudoHtmlEncode(text) {
return text.replace(/\"/gi,"&amp;quot;").replace(/\</gi,"&amp;lt;").replace(/\>/gi,"&amp;gt;");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div style="" class="propertypane">
<div>
<div style="height: 420px; overflow: auto;">
<asp:PlaceHolder ID="macroProperties" runat="server" />
</div>
<div class="propertyPaneFooter">-</div>
</div>
</div>
<p>
<input type="button" value="<%=umbraco.ui.Text("general", "ok", this.getUser())%>"
onclick="updateMacro()" />
</p>
</form>
</body>
</html>
@@ -1 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ModuleInstaller.aspx.cs" Inherits="umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule.ModuleInstaller" %>
@@ -1,55 +0,0 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ModuleSelector.ascx.cs" Inherits="umbraco.presentation.umbraco.LiveEditing.Modules.SkinModule.ModuleSelector" %>
<%@ Import Namespace="umbraco.cms.businesslogic.packager.repositories" %>
<script type="text/javascript">
var umbCurrentPageId = <%= umbraco.presentation.nodeFactory.Node.GetCurrent().Id %>;
var umbCurrentUmbracoDir = '<%= this.ResolveUrl(umbraco.GlobalSettings.Path) %>';
</script>
<div id="moduleSelectorContainer">
<asp:Repeater ID="rep_modules" runat="server"
onitemdatabound="rep_modules_ItemDataBound">
<HeaderTemplate>
<div id="modules">
<p>Please select the module you wish to insert.</p>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink ID="ModuleSelectLink" runat="server" NavigateUrl="javascript:void(0);">
<img width="25px" src="<%# GetThumbNail(((Package)Container.DataItem).Thumbnail) %>" alt="<%# ((Package)Container.DataItem).Text %>" />
<span><%# ((Package)Container.DataItem).Text %></span>
</asp:HyperLink>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</div>
</FooterTemplate>
</asp:Repeater>
<p id="noConnectionToRepo" runat="server" visible="false">
Unable to fetch module, please try again later.
</p>
<p id="installingModule" style="display:none;">
<span class="selectedModule"></span><br />
<img src="<%= this.ResolveUrl(umbraco.GlobalSettings.Path) %>/LiveEditing/Modules/SkinModule/images/loader.gif" /> Installing module...
</p>
<p id="moduleSelect" style="display:none;">
<span class="selectedModule"></span><br />
Select where to place the module
</p>
<a href="javascript:void(0);" onclick="jQuery('.ModuleSelector').hide();umbRemoveModuleContainerSelectors();">Cancel</a>
</div>
@@ -1,125 +0,0 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SkinCustomizer.ascx.cs" Inherits="umbraco.presentation.LiveEditing.Modules.SkinModule.SkinCustomizer" %>
<%@ Import Namespace="umbraco.cms.businesslogic.packager.repositories" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<style type="text/css">
.skinningslider
{
width:250px !important;
height:1px !important;
}
#costumizeSkin input.text, #costumizeSkin input.title, #costumizeSkin textarea, #costumizeSkin select
{
margin:0;
}
</style>
<script type="text/javascript">
function closeCustomizeSkinModal() {
closeSkinModal();
UmbSpeechBubble.ShowMessage("Info", "Skin", "Skin updated...");
}
function closeSkinModal() {
jQuery('#closeSkinInstall').trigger('click');
}
function cancelSkinCustomization() {
jQuery('#cancelSkinCustomization').trigger('click');
}
jQuery('body div').css('z-index', 'auto');
</script>
<asp:Panel ID="pnl_connectionerror" runat="server" Visible="false">
<p>Connection to repository failed...</p>
</asp:Panel>
<!-- Needs to change -->
<input type="submit" class="modalbuton" id="closeSkinInstall" value="" style="display:none;"/>
<input type="submit" class="modalbuton" id="cancelSkinCustomization" value="" style="display:none;"/>
<!-- Using some hidden controls -->
<div id="costumizeSkin" <asp:Literal ID="ltCustomizeSkinStyle" runat="server" Text=""></asp:Literal>>
<p>
Personalize your skin, by defining colors, images and texts
</p>
<div id="dependencies">
<cc1:Pane ID="ph_dependencies" runat="server" />
</div>
<p style="margin-top: 20px;">
<asp:Button ID="btnOk" runat="server" Text=" Ok " CssClass="modalButton" onclick="btnOk_Click" OnClientClick="closeCustomizeSkinModal();"/>
<em> or </em> <a href="#" onclick="cancelSkinCustomization();">Cancel</a>
</p>
<p runat="server" id="pChangeSkin" style="margin-top: 25px; border-top: 1px solid #efefef; padding: 7px">You could also change to another skin: <a href="#" onclick="jQuery('#costumizeSkin').hide();jQuery('#changeSkin').show();">Browse available skins</a></p>
</div>
<div id="changeSkin" <asp:Literal ID="ltChangeSkinStyle" runat="server" Text="style='display:none;'"></asp:Literal>>
<p>
Choose a skin from your local collection, or download one from the umbraco package repository
</p>
<div id="skinupdateinprogress" style="display:none;">
<p>Skin is being updated...</p>
</div>
<div id="skins">
<asp:Repeater ID="rep_starterKitDesigns" runat="server" onitemdatabound="rep_starterKitDesigns_ItemDataBound">
<HeaderTemplate>
<ul id="starterKitDesigns">
</HeaderTemplate>
<ItemTemplate>
<li>
<img src="<%# ((Skin)Container.DataItem).Thumbnail %>" alt="<%# ((Skin)Container.DataItem).Text %>" />
<span><%# ((Skin)Container.DataItem).Text %></span>
<br />
<asp:Button ID="Button1" CssClass="selectskin" runat="server" Text="Install" CommandArgument="<%# ((Skin)Container.DataItem).RepoGuid %>" OnClick="SelectStarterKitDesign" CommandName="<%# ((Skin)Container.DataItem).Text %>"/>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</div>
<div id="localSkinsContainer" runat="server">
<p>Looks like there are also some local skins</p>
<asp:Repeater ID="rep_starterKitDesignsLocal" runat="server" onitemdatabound="rep_starterKitDesignsLocal_ItemDataBound">
<HeaderTemplate>
<ul id="starterKitDesignsLocal">
</HeaderTemplate>
<ItemTemplate>
<li>
<%# ((string)Container.DataItem).ToString() %>
<asp:Button ID="btnApply" CssClass="selectskin" runat="server" Text="Apply" CommandArgument="<%# ((string)Container.DataItem).ToString() %>" OnClick="SelectLocalStarterKitDesign" CommandName="apply"/>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</div>
<p runat="server" id="pCustomizeSkin" style="clear: both; margin-top: 25px; border-top: 1px solid #efefef; padding: 7px" >
<a onclick="jQuery('#changeSkin').hide(); jQuery('#costumizeSkin').show();">Go back to your current skin</a>
</p>
</div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

@@ -1,130 +0,0 @@
var umbModuleToInsertAlias;
function umbMakeModulesSortable() {
if (jQuery('.umbModuleContainer').length > 0) {
jQuery('.umbModuleContainer').sortable({
connectWith: '.umbModuleContainer',
items: '.umbModule',
stop: function (event, ui) {
UmbracoCommunicator.SendClientMessage("movemodule", ui.item.attr('id') + ";" + ui.item.parent().attr('id') + ";" + jQuery('.umbModule', ui.item.parent()).index(ui.item));
}
});
}
}
function umbSelectModule(alias,sender) {
jQuery('#modules').hide();
jQuery('#moduleSelect').show();
umbShowModuleContainerSelectors(jQuery('span', sender).html());
umbModuleToInsertAlias = alias;
jQuery('.selectedModule').html(jQuery('span',sender).html());
}
function umbInstallModuleAndGetAlias(guid,name,sender) {
jQuery('#modules').hide();
jQuery('.selectedModule').html(name);
jQuery("#installingModule").show();
jQuery.post(umbCurrentUmbracoDir + "/LiveEditing/Modules/SkinModule/ModuleInstaller.aspx?guid=" + guid + "&name=" + name,
function (data) {
if (data == "error") {
}
else {
jQuery("#installingModule").hide();
jQuery('#moduleSelect').show();
umbShowModuleContainerSelectors(jQuery('span', sender).html());
umbModuleToInsertAlias = data;
jQuery(sender).attr("onclick", "");
jQuery(sender).click(function () {
umbSelectModule(data, this);
return false;
});
}
});
}
function umbShowModuleSelection() {
umbRemoveModuleContainerSelectors();
jQuery("#moduleSelect").hide();
jQuery("#modules").show();
jQuery(".ModuleSelector").show();
}
function umbShowModuleContainerSelectors(moduleName) {
jQuery(".umbModuleContainer").each(function () {
if (jQuery(this).children().size() > 0) {
jQuery(this).prepend("<div class='umbModuleContainerSelector' rel='prepend'>Insert module here</div>");
}
jQuery(this).append("<div class='umbModuleContainerSelector' rel='append'>Insert module here</div>");
});
jQuery(".umbModuleContainerSelector").click(function () {
jQuery(".ModuleSelector").hide();
Umbraco.Controls.ModalWindow().open(umbCurrentUmbracoDir + '/LiveEditing/Modules/SkinModule/ModuleInjector.aspx?macroAlias=' + umbModuleToInsertAlias + '&target=' + jQuery(this).parent().attr('id') + "&type=" + jQuery(this).attr('rel'), 'Insert ' + moduleName + ' module', true, 550, 550, 50, 0, ['.modalbuton'], null);
});
}
function umbRemoveModuleContainerSelectors() {
jQuery(".umbModuleContainerSelector").remove();
}
function umbInsertModule(container,macro,type) {
umbRemoveModuleContainerSelectors();
var working = "<div class='umbModuleContainerPlaceHolder'><img src='" + umbCurrentUmbracoDir + "/LiveEditing/Modules/SkinModule/images/loader.gif' />Inserting module...</div>";
if (type == "append") {
jQuery("#" + container).append(working);
} else {
jQuery("#" + container).prepend(working);
}
var moduleguid = guid();
UmbracoCommunicator.SendClientMessage("injectmodule", container + ";" + "<div id='"+ moduleguid +"' class='umbModule'>" + macro + "</div>;" + type);
//need to lose these replace calls
jQuery.post(umbCurrentUmbracoDir + "/LiveEditing/Modules/SkinModule/ModuleInjectionMacroRenderer.aspx?tag=" + macro.replace('>', '').replace('<', '').replace('</umbraco:Macro>', '') + "&umbPageID=" + umbCurrentPageId,
function (data) {
jQuery(".umbModuleContainerPlaceHolder").html("<div id='" + moduleguid + "' class='umbModule'>" + data + "</div>;");
UmbSpeechBubble.ShowMessage("Info", "Module", "Module inserted");
});
}
function S4() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
function guid() {
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}
//startup stuff
umbMakeModulesSortable();
@@ -1 +0,0 @@
ShowSkinModule();
@@ -1,8 +0,0 @@
jQuery('.selectskin').click(function () {
jQuery('#skinupdateinprogress').show();
jQuery('#skins').hide();
jQuery('#localSkinsContainer').hide();
});
@@ -1,22 +0,0 @@
var activecolorpicker;
jQuery('input.skinningcolorpicker').ColorPicker({
onSubmit: function (hsb, hex, rgb, el) {
jQuery(el).val('#' + hex);
jQuery(el).ColorPickerHide();
jQuery(el).trigger('change');
},
onBeforeShow: function () {
activecolorpicker = this;
jQuery(this).ColorPickerSetColor(this.value);
},
onChange: function (hsb, hex, rgb) {
jQuery(activecolorpicker).val('#' + hex);
jQuery(activecolorpicker).trigger('change');
}
})
.bind('keyup', function () {
jQuery(this).ColorPickerSetColor(this.value);
});
@@ -1,19 +0,0 @@
jQuery(".skinningslider").each(function () {
var vals = jQuery(this).attr("rel").split(",");
var minimum = vals[0];
var maximum = vals[1];
var initial = vals[2];
var ratio = vals[3]
var target = vals[4];
jQuery(this).slider({
change: function (event, ui) { if (ratio != "") { jQuery("#" + target).val(ui.value / ratio); } else { jQuery("#" + target).val(ui.value); } jQuery("#" + target).trigger("change"); },
slide: function (event, ui) { if (ratio != "") { jQuery("#" + target).val(ui.value / ratio); } else { jQuery("#" + target).val(ui.value); } jQuery("#" + target).trigger("change"); },
min: minimum,
max: maximum,
value: initial
});
});
@@ -1,5 +0,0 @@
/********************* Live Editing UnpublishModule functions *********************/
function UnpublishModuleOk()
{
UmbracoCommunicator.SendClientMessage('unpublishcontent', '');
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

@@ -43,8 +43,8 @@
@helper Render(dynamic item)
{
<li class="span2">
<a href="@item.umbracoFile" class="thumbnail">
<img src="@item.umbracoFile" alt="@item.Name" />
<a href="@item.umbracoFile.src" class="thumbnail">
<img src="@item.umbracoFile.src" alt="@item.Name" />
</a>
</li>
}
@@ -7,7 +7,9 @@
class="umb-dashboard"
val-form-manager>
<umb-editor-view umb-tabs>
<umb-editor-view
footer="false"
umb-tabs>
<umb-editor-header
name="dashboard.name"
@@ -25,7 +27,7 @@
<div ng-repeat="property in tab.properties" ng-switch on="property.serverSide">
<div class="span12 umb-dashboard-control clearfix" ng-switch-when="false">
<div class="span12 clearfix" ng-switch-when="false">
<h3 ng-show="property.caption">{{property.caption}}</h3>
<div ng-include="property.path"></div>
</div>
@@ -1,37 +1,55 @@
<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"
placeholder="Filter..."
umb-auto-focus>
</div>
</div>
<div ng-controller="Umbraco.Overlays.CompositionsOverlay as vm">
<div class="umb-control-group">
<small>Inherit tabs and properties from an existing document type. New tabs will be added to the current document type or merged if a tab with an identical name exists.</small>
</div>
<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-empty-state-text -center" ng-if="model.availableCompositeContentTypes.length === 0">
This content type is used in a composition, and therefore cannot be composed itself.
</div>
<div class="umb-control-group">
<small><localize key="contentTypeEditor_compositionsDescription"></localize></small>
</div>
<ul class="umb-checkbox-list">
<li class="umb-checkbox-list__item" ng-repeat="compositeContentType in model.availableCompositeContentTypes | filter:searchTerm" ng-class="{ '-selected': model.compositeContentTypes.indexOf(compositeContentType.alias)+1 }">
<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>
<div class="umb-checkbox-list__item-checkbox" ng-class="{ '-selected': model.compositeContentTypes.indexOf(compositeContentType.alias)+1 }">
<input type="checkbox"
checklist-model="model.compositeContentTypes"
checklist-value="compositeContentType.alias"
ng-change="model.selectCompositeContentType(compositeContentType)" />
</div>
<ul class="umb-checkbox-list">
<li class="umb-checkbox-list__item"
<div class="umb-checkbox-list__item-text">
<i class="{{ compositeContentType.icon }} umb-checkbox-list__item-icon"></i>
{{ compositeContentType.name }}
</div>
ng-repeat="compositeContentType in model.availableCompositeContentTypes | filter:searchTerm"
ng-class="{'-disabled': compositeContentType.allowed===false, '-selected': vm.isSelected(compositeContentType.contentType.alias)}">
</li>
</ul>
<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"/>
</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>
@@ -1,5 +1,6 @@
<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>
@@ -7,12 +8,16 @@
style="width: 100%"
ng-change="vm.filterItems()"
ng-model="vm.searchTerm"
class="umb-search-field search-query input-block-level"
placeholder="Filter..."
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>
@@ -20,47 +25,39 @@
<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">
<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)">
<a href="" ng-click="vm.pickEditor(systemDataType)">
<i class="{{ systemDataType.icon }}" ng-class="{'icon-autofill': systemDataType.icon == null}"></i>
{{ systemDataType.name }}
</a>
</li>
</ul>
</div>
<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 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">
<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)">
<a href="" ng-click="vm.pickDataType(dataType)">
<i class="{{ dataType.icon }}" ng-class="{'icon-autofill': dataType.icon == null}"></i>
{{ dataType.name }}
</a>
</li>
</ul>
</div>
<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 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>
@@ -69,6 +66,47 @@
</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 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 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"
@@ -1,18 +1,20 @@
<div class="umb-control-group" ng-if="model.dataType.id !== 0">
<i class="icon-alert red"></i>
<strong class="red">All Document types</strong> using this editor will get updated with the new settings.
<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">Name</label>
<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>Configuration</h5>
<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>
@@ -5,7 +5,8 @@
<textarea class="editor-label"
name="propertyLabel"
ng-model="model.property.label"
placeholder="Enter a name..."
localize="placeholder"
placeholder="@placeholders_entername"
umb-auto-focus
focus-on-filled="true"
umb-auto-resize
@@ -23,7 +24,8 @@
<textarea
class="editor-description"
ng-model="model.property.description"
placeholder="Add your description here..."
localize="placeholder"
placeholder="@placeholders_enterDescription"
overlay-submit-on-enter
umb-auto-resize>
</textarea>
@@ -31,7 +33,9 @@
<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)">Add Editor</a>
<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">
@@ -57,8 +61,11 @@
<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}}"> Field is mandatory
<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)">
@@ -78,6 +85,22 @@
</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"
@@ -32,7 +32,10 @@
<div class="umb-control-group -no-border">
<input type="checkbox" class="pull-left" style="margin-right: 10px;" ng-model="model.relateToOriginal" />
<label>Relate to original</label>
<label>
<localize key="defaultdialogs_relateToOriginalLabel">Relate to originalt</localize>
</label>
</div>
</div>
@@ -18,7 +18,9 @@
<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>
<small class="umb-detail">
<localize key="defaultdialogs_theFriendliestCommunity">The friendliest community</localize>
</small>
</li>
</ul>
</div>
@@ -7,19 +7,32 @@
style="width: 100%"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level"
placeholder="Filter..."
localize="placeholder"
placeholder="@placeholders_filter"
umb-auto-focus>
</div>
</div>
<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>
<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>
@@ -6,13 +6,17 @@
style="width: 100%"
ng-model="searchTerm"
class="umb-search-field search-query input-block-level"
placeholder="Filter..."
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">
<a href="" ng-click="selectItem(availableItem)">
<li
ng-repeat="availableItem in model.availableItems | compareArrays:model.selectedItems:'alias' | orderBy:'name' | filter:searchTerm"
ng-click="selectItem(availableItem)"
class="-three-in-row">
<a href="" title="{{ availableItem.name }}">
<i class="{{ availableItem.icon }}"></i>
{{ availableItem.name }}
</a>
@@ -20,14 +20,22 @@
<umb-control-group label="@content_target">
<select class="umb-editor umb-dropdown" ng-model="model.target.target">
<option value=""></option>
<option value="_blank">Opens the linked document in a new window or tab</option>
<option value="_top">Opens the linked document in the full body of the window</option>
<option value="_parent">Opens the linked document in the parent frame</option>
<option value="_blank">
<localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize>
</option>
<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>Link to page</h5>
<h5>
<localize key="defaultdialogs_linkToPage">Link to page</localize>
</h5>
<umb-tree-search-box
hide-search-callback="hideSearch"
@@ -60,8 +68,12 @@
</div>
<div class="umb-control-group">
<h5>Link to media</h5>
<a href ng-click="switchToMediaPicker()" class="btn">Select media</a>
<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
@@ -30,7 +30,11 @@
</li>
</ul>
<div ng-if="noMacroParams" class="umb-empty-state-text -center">There are no parameters for this macro</div>
<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>
@@ -12,7 +12,12 @@
<div class="form-search">
<i class="icon-search"></i>
<input class="umb-search-field search-query" ng-model="searchTerm" placeholder="Filter..." type="text">
<input
class="umb-search-field search-query"
ng-model="searchTerm"
localize="placeholder"
placeholder="@placeholders_filter"
type="text">
</div>
<div class="upload-button">
@@ -70,7 +75,12 @@
<umb-media-grid
items="images"
filter-by="searchTerm"
on-click="clickHandler">
on-click="clickHandler"
on-click-name="clickItemName"
item-max-width="150"
item-max-height="150"
item-min-width="100"
item-min-height="100">
</umb-media-grid>
</div>
@@ -91,7 +101,9 @@
<div ng-if="cropSize">
<h5>Preview</h5>
<h5>
<localize key="general_preview">Preview</localize>
</h5>
<umb-image-thumbnail
center="target.focalPoint"
@@ -32,7 +32,9 @@
<div class="umb-control-group external-logins" ng-if="externalLoginProviders.length > 0 && !showPasswordFields">
<h5>External login providers</h5>
<h5>
<localize key="defaultdialogs_externalLoginProviders">External login providers</localize>
</h5>
<div ng-repeat="login in externalLoginProviders">
@@ -45,7 +47,7 @@
name="provider"
value="{{login.authType}}">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
Link your {{login.caption}} account
<localize key="defaultdialogs_linkYour">Link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
</button>
</form>
@@ -57,7 +59,7 @@
name="provider"
value="{{login.authType}}">
<i class="fa" ng-class="login.properties.SocialIcon"></i>
Un-link your {{login.caption}} account
<localize key="defaultdialogs_unLinkYour">Un-link your</localize> {{login.caption}} <localize key="defaultdialogs_account">account</localize>
</button>
</div>
@@ -76,7 +78,9 @@
<div ng-show="showPasswordFields">
<h5>Change password</h5>
<h5>
<localize key="general_changePassword">Change password</localize>
</h5>
<form
name="passwordForm"
@@ -4,12 +4,16 @@
<p>{{model.error.data.ExceptionMessage || model.error.data.Message}}</p>
<div class="umb-control-group">
<h5>Exception Details: </h5>
<h5>
<localize key="defaultdialogs_exceptionDetail">Exception Details:</localize>
</h5>
{{model.error.data.ExceptionType}}: {{model.error.data.ExceptionMessage}}
</div>
<div class="umb-control-group">
<h5>Stacktrace: </h5>
<h5>
<localize key="defaultdialogs_stacktrace">Stacktrace:</localize>
</h5>
<pre style="white-space: pre-wrap; overflow-x: auto;">{{model.error.data.StackTrace}}</pre>
</div>
</div>
@@ -1,6 +1,6 @@
<div id="leftcolumn" ng-controller="Umbraco.NavigationController"
<div id="leftcolumn" ng-controller="Umbraco.NavigationController"
ng-mouseleave="leaveTree($event)" ng-mouseenter="enterTree($event)">
<umb-sections sections="sections" ng-if="authenticated">
</umb-sections>
@@ -8,11 +8,11 @@
<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 -->
<!-- Search form -->
<div id="search-form">
<div class="umb-modalcolumn-header">
@@ -22,10 +22,10 @@
hotkey="ctrl+space"
id="search-field"
ng-model="searchTerm"
class="umb-search-field search-query"
class="umb-search-field search-query search-input"
localize="placeholder"
placeholder="@placeholders_search"
ng-keydown="navigateResults($event)"/>
ng-keydown="navigateResults($event)"/>
</form>
</div>
</div>
@@ -36,16 +36,19 @@
<ul class="umb-tree">
<li class="root">
<div>
<h5><localize key="general_searchResults">Search results</localize></h5>
<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>
<a ng-class="{'first':$first}" ng-click="searchHide()" ng-href="#/{{result.editorPath}}">
<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>
<i class="icon umb-tree-icon sprTree {{result.icon}}"></i>
{{result.name}}
<small class="search-subtitle" ng-show="result.subTitle">
{{result.subTitle}}
</small>
@@ -57,34 +60,34 @@
</ul>
</li>
</ul>
</ul>
</div>
</div>
<!-- the tree -->
<div id="tree" class="umb-modalcolumn-body" ng-if="authenticated">
<umb-tree
<umb-tree
cachekey="_"
eventhandler="treeEventHandler"
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
<umb-context-menu
menu-dialog-title="{{menuDialogTitle}}"
current-section="{{currentSection}}"
current-node="menuNode"
menu-actions="menuActions">
</umb-context-menu>
</umb-context-menu>
</div>
<!-- Tree dialogs -->
<div id="dialog" class='umb-modalcolumn fill shadow'
ng-swipe-left="nav.hideDialog()"
@@ -97,5 +100,5 @@
</div>
</div>
</div>
</div>
</div>
@@ -6,7 +6,9 @@
button-style="success"
state="state"
label="{{defaultButton.labelKey}}"
label-key="{{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">
@@ -15,7 +17,7 @@
<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()" prevent-default>
<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>
@@ -8,25 +8,25 @@
<div ng-if="state !== 'init'" class="umb-button__overlay"></div>
<a ng-if="type === 'link'" href="{{href}}" class="btn umb-button__button {{style}}" hotkey="{{shortcut}}">
<a ng-if="type === 'link'" href="{{href}}" class="btn umb-button__button {{style}}" hotkey="{{shortcut}}" hotkey-when-hidden="{{shortcutWhenHidden}}">
<span class="umb-button__content" ng-class="{'-hidden': state !== 'init'}">
<i ng-if="icon && buttonStyle==='link'" class="{{icon}}"></i>
<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}}" ng-disabled="disabled">
<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}}"></i>
<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}}" ng-disabled="disabled">
<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}}"></i>
<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>
@@ -8,27 +8,43 @@
<div class="umb-panel-header-icon" ng-if="!hideIcon" ng-click="openIconPicker()" ng-class="{'-placeholder': $parent.icon==='' || $parent.icon===null}">
<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">Add icon</div>
<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" placeholder="Enter name..."
name="headerName"
ng-show="!nameLocked"
ng-model="name"
ng-class="{'name-is-empty': $parent.name===null || $parent.name===''}"
umb-auto-focus
focus-on-filled="true"
required />
<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"></umb-generate-alias>
<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" placeholder="Enter description..." ng-if="!hideDescription" ng-model="$parent.description" />
<input
type="text"
class="umb-panel-header-description"
localize="placeholder"
placeholder="@placeholders_enterDescription"
ng-if="!hideDescription"
ng-model="$parent.description" />
</div>
@@ -1,5 +0,0 @@
<div class="umb-editor-toolbar">
<div class="umb-editor-toolbar__tool" ng-repeat="tool in tools" ng-click="tool.action(tool)">
<i class="umb-editor-toolbar__tool-icon {{tool.icon}}"></i> {{ tool.name }}
</div>
</div>
@@ -1,3 +1,7 @@
<div class="umb-panel umb-editor-wrapper animated -half-second fadeIn" ng-transclude>
<div class="umb-panel umb-editor-wrapper animated -half-second fadeIn"
ng-class="{
'-no-footer': footer === 'false'
}"
ng-transclude>
</div>
@@ -1,5 +1,5 @@
<div class="umb-overlay umb-overlay-{{position}}" on-outside-click="closeOverLay()">
<form name="overlayForm" ng-submit="submitForm(model)" novalidate val-form-manager>
<form class="umb-overlay__form" name="overlayForm" ng-submit="submitForm(model)" novalidate val-form-manager>
<div class="umb-overlay-header">
<h4 class="umb-overlay__title">{{model.title}}</h4>
@@ -21,11 +21,53 @@
</div>
<div class="umb-overlay-drawer">
<div class="umb-overlay-drawer-content">
<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="submit"></umb-button>
<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="submit"
disabled="!directive.enableConfirmButton">
</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="submit">
</umb-button>
</div>
</div>
</form>
</div>
@@ -1 +1,3 @@
<div ng-include="propertyEditorView"></div>
<div class="umb-property-editor" ng-class="{'-not-clickable': preview}">
<div ng-include="propertyEditorView"></div>
</div>
@@ -4,9 +4,11 @@
<ul class="umb-search-group">
<li ng-repeat="result in results">
<div style="padding-left: 20px">
<a ng-class="{first:$first}" ng-click="selectResultCallback($event, result)">
<i class="icon umb-tree-icon sprTree {{result.selected ? 'icon-check blue temporary' : result.icon}}"></i>
{{result.name}}
<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>
@@ -14,4 +16,4 @@
</ul>
</li>
</ul>
</div>
</div>
@@ -8,7 +8,9 @@
<span class="umb-child-selector__child-name">
<strong>{{ parentName }}</strong>
</span>
<small>(Current)</small>
<small>
(<localize key="general_current"></localize>)
</small>
</div>
</div>
@@ -27,7 +29,7 @@
</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>Add child</strong></div>
<div class="umb-child-selector__child-name -blue"><strong><localize key="shortcuts_addChild">Add Child</localize></strong></div>
</a>
</div>
@@ -4,9 +4,9 @@
class="umb-content-grid__item"
ng-repeat="item in content"
ng-class="{'-selected': item.selected}"
ng-click="clickItem(item)">
ng-click="clickItem(item, $event, $index)">
<i ng-if="onSelect" class="icon-check umb-content-grid__action" ng-click="selectItem(item, $event, $index)" ng-class="{'-selected': item.selected}"></i>
<i ng-if="item.selected" class="icon-check umb-content-grid__checkmark"></i>
<div class="umb-content-grid__icon-container">
<i class="{{ item.icon }} umb-content-grid__icon" ng-class="{'-light': !item.published}"></i>
@@ -14,7 +14,7 @@
<div class="umb-content-grid__content">
<div class="umb-content-grid__item-name" ng-class="{'-light': !item.published}">{{ item.name }}</div>
<div class="umb-content-grid__item-name" ng-click="clickItemName(item, $event, $index)" ng-class="{'-light': !item.published}">{{ item.name }}</div>
<ul class="umb-content-grid__details-list" ng-class="{'-light': !item.published}">
<li class="umb-content-grid__details-item" ng-repeat="property in contentProperties">
@@ -27,6 +27,10 @@
</div>
<div ng-if="!content" class="umb-empty-state-text -center">There are no items to show</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>
@@ -4,14 +4,14 @@
class="umb-folder-grid__folder"
ng-repeat="folder in folders"
ng-class="{'-selected': folder.selected}"
ng-click="clickFolder(folder)">
ng-click="clickFolder(folder, $event, $index)">
<div class="umb-folder-grid__folder-description">
<i class="umb-folder-grid__folder-icon {{ folder.icon }}"></i>
<div class="umb-folder-grid__folder-name">{{ folder.name }}</div>
<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-click="selectFolder(folder, $event, $index)" ng-class="{'-selected': folder.selected}"></i>
<i class="icon-check umb-folder-grid__action" ng-class="{'-selected': folder.selected}"></i>
</div>
@@ -4,7 +4,9 @@
<umb-locked-field
locked="locked"
ng-model="alias"
placeholder-text="placeholderText">
placeholder-text="placeholderText"
server-validation-field="{{serverValidationField}}">
</umb-locked-field>
</div>
</div>
@@ -6,7 +6,7 @@
<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">(Default {{itemLabel}})</span>
<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>
@@ -15,22 +15,22 @@
<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)">Set as default</a>
<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">Choose extra {{ itemLabel }}</div>
<div class="umb-grid-selector__item-label -blue" ng-if="defaultItem === null">Choose default {{ itemLabel }}</div>
<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>All {{itemLabel}}s are added</small>
<small><localize key="general_all">Akk</localize> {{itemLabel}}s <localize key="grid_areAdded">are added</localize></small>
</div>
<umb-overlay
@@ -1,8 +1,34 @@
<div>
<div class="clearfix">
<umb-editor-toolbar tools="toolbar"></umb-editor-toolbar>
<umb-editor-sub-header>
<div ng-if="sortingMode && model.groups.length <= 1" class="umb-group-builder__no-data-text">You have not added any tabs to reorder</div>
<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">
@@ -15,8 +41,8 @@
<div class="umb-group-builder__group-title -placeholder"></div>
</div>
<div ng-if="model.groups.length === 1">Add new tab</div>
<div ng-if="model.groups.length > 1">Add another tab</div>
<localize ng-if="model.groups.length === 1" key="contentTypeEditor_addNewTab"></localize>
<localize ng-if="model.groups.length > 1" key="contentTypeEditor_addAnotherTab"></localize>
</a>
@@ -38,7 +64,10 @@
<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" placeholder="Enter name..."
<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 == ''}"
@@ -55,10 +84,18 @@
</div>
</ng-form>
<input type="number" class="umb-group-builder__group-sort-value" ng-if="sortingMode" ng-model="tab.sortOrder" ng-disabled="tab.inherited" on-blur="changeSortOrderValue()" />
<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> Inherited from {{ tab.inheritedFromName }}
<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>
@@ -69,7 +106,7 @@
<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">
<li ng-class="{'umb-group-builder__property-sortable': sortingMode && !property.inherited && !property.locked}" 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" ng-click="addProperty(property, tab)" focus-when="{{property.focus}}">
@@ -85,52 +122,60 @@
</div>
<div class="umb-group-builder__property-preview umb-group-builder__placeholder-box">
<div>Add property</div>
<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, 'umb-group-builder__property-handle -sortable': sortingMode && !property.inherited, '-sortable-locked': sortingMode && property.inherited}">
<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 && !property.locked, '-sortable-locked': sortingMode && (property.inherited || property.locked)}">
<!-- property meta text -->
<div class="umb-group-builder__property-meta" ng-class="{'-full-width': sortingMode}">
<div class="umb-group-builder__property-inherited-label" ng-if="property.inherited">
<i class="icon icon-merge"></i> Inherited from {{property.contentTypeName}}
</div>
<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.alias }}</div>
<umb-locked-field ng-if="!property.inherited"
locked="locked"
ng-model="property.alias"
placeholder-text="'Alias...'"
server-validation-field="{{'Groups[' + $parent.$parent.$parent.$parent.$index + '].Properties[' + $index + '].Alias'}}">
<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 placeholder="Label..." ng-model="property.label" ng-disabled="property.inherited"
name="groupName"
umb-auto-resize
required
val-server-field="{{'Groups[' + $parent.$parent.$parent.$parent.$index + '].Properties[' + $index + '].Label'}}"></textarea>
<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">Required label</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 ng-model="property.description" placeholder="Enter your description..." ng-disabled="property.inherited" umb-auto-resize></textarea>
<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>
<i class="icon icon-navigation" ng-if="!property.inherited && !property.locked"></i>
<span class="umb-group-builder__property-meta-label">{{ property.label }}</span>
<span class="umb-group-builder__property-meta-alias">({{ property.alias }})</span>
</div>
@@ -138,23 +183,61 @@
</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}">
<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)}">
<span class="umb-group-builder__property-preview-overlay"></span>
<div class="umb-group-builder__property-tags">
<span class="umb-group-builder__property-preview-label">
<span ng-if="property.dataTypeName !== undefined">{{property.dataTypeName}}</span>
<span ng-if="property.dataTypeName == undefined">Preview</span>
</span>
<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>
<umb-property-editor model="property" ng-if="property.view !== undefined"></umb-property-editor>
<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">
<div ng-if="!property.inherited && !property.locked">
<!-- settings for property -->
<div class="umb-group-builder__property-action" ng-click="editPropertyTypeSettings(property, tab)">
@@ -1,7 +1,7 @@
<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">show shortcuts</div>
<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>
@@ -1,38 +1,38 @@
<div class="umb-list-view">
<div class="umb-list-view-settings">
<div class="umb-list-view__trigger">
<div class="umb-list-view-settings__trigger">
<label class="checkbox no-indent">
<input type="checkbox" ng-model="enableListView" hotkey="alt+shift+l" /> Yes - enable list view
</label>
<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__box" ng-class="{'-open': editDataTypeSettings}">
<div class="umb-list-view-settings__box" ng-class="{'-open': editDataTypeSettings}">
<div class="umb-list-view__content">
<i class="umb-list-view__list-view-icon icon-list"></i>
<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__name">{{ dataType.name }} <em ng-if="!customListViewCreated">(default)</em></div>
<a href="" ng-click="toggleEditListViewDataTypeSettings()"><i class="umb-list-view__settings-icon icon-settings"></i></a>
<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__create-new" ng-if="!customListViewCreated" ng-click="createCustomListViewDataType()">Create custom list view</a>
<a href="" class="umb-list-view__remove-new" ng-if="customListViewCreated" ng-click="removeCustomListDataType()">Remove custom list view</a>
<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 form-horizontal" ng-if="editDataTypeSettings" ng-class="{'-open': editDataTypeSettings}">
<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()">Close</button>
<button type="button" class="btn btn-success" ng-click="saveListViewDataType()">Save list view</button>
<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>
@@ -1,4 +1,4 @@
<ul class="umb-load-indicator animated -half-second fadeOut">
<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>
@@ -1,4 +1,4 @@
<ng-form class="umb-locked-field">
<ng-form name="lockedFieldForm" class="umb-locked-field">
<div class="umb-locked-field__wrapper">
@@ -13,7 +13,7 @@
<input type="text"
class="umb-locked-field__input"
name="lockedField"
ng-model="model"
ng-model="ngModel"
ng-disabled="locked"
ng-class="{'-unlocked': !locked}"
placeholder="{{placeholderText}}"
@@ -21,12 +21,15 @@
umb-auto-resize
required
val-server-field="{{serverValidationField}}"
title="{{model}}" />
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">Required alias</div>
<div ng-if="regexValidation.length > 0" class="umb-validation-label" val-msg-for="lockedField" val-toggle-msg="valRegex">Invalid alias</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>
@@ -1,24 +1,20 @@
<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}">
<div>
<a href="" ng-click="clickItem(item)" ng-repeat="item in items | filter:filterBy" ng-style="item.flexStyle" class="umb-media-grid__item">
<i ng-show="item.selected" class="icon-check umb-media-grid__checkmark"></i>
<div class="umb-media-grid__actions">
<i ng-if="onDetailsHover" class="icon-info umb-media-grid__action -not-clickable" ng-mouseover="hoverItemDetails(item, $event, true)" ng-mouseleave="hoverItemDetails(item, $event, false)"></i>
<i ng-if="onSelect" class="icon-check umb-media-grid__action" ng-click="selectItem(item, $event, $index)" ng-class="{'-selected': item.selected}" prevent-default></i>
<i ng-show="!onSelect && item.selected" class="icon-check umb-media-grid__action -selected"></i>
</div>
<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>
<div ng-if="item.thumbnail" class="umb-media-grid__item-overlay">
<div class="umb-media-grid__item-name">{{item.name}}</div>
</div>
<div class="umb-media-grid__image-background" ng-if="item.thumbnail"></div>
<img class="umb-media-grid__item-image" width="{{item.width}}" height="{{item.height}}" ng-if="item.thumbnail" ng-src="{{item.thumbnail}}" alt="{{item.name}}" draggable="false"/>
<img class="umb-media-grid__item-image-placeholder" ng-if="!item.thumbnail" src="assets/img/transparent.png" alt="{{item.name}}" draggable="false"/>
<div class="umb-media-grid__item-non-image-name" ng-if="!item.thumbnail">{{ item.name }}</div>
<img class="umb-media-grid__item-image" ng-if="item.thumbnail" ng-src="{{item.thumbnail}}" alt="{{item.name}}" ng-class="{'-faded': item.selected}" />
<img class="umb-media-grid__item-image" ng-if="!item.thumbnail" src="assets/img/transparent.png" alt="{{item.name}}" />
<i class="umb-media-grid__item-icon {{ item.icon }}" ng-if="!item.thumbnail"></i>
</a>
<i class="umb-media-grid__item-icon {{ item.icon }}" ng-if="!item.thumbnail"></i>
</div>
</div>
</div>
@@ -8,9 +8,9 @@
<div class="umb-table-cell">
<input class="umb-table__input" type="checkbox"
ng-click="selectAll($event)"
ng-checked="isSelectedAll()"
>
ng-if="allowSelectAll"
ng-click="selectAll($event)"
ng-checked="isSelectedAll()">
</div>
<div class="umb-table-cell umb-table__name">
@@ -22,8 +22,8 @@
<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)"
ng-class="{'sortable':column.allowSorting}" prevent-default>
ng-click="sort(column.alias, column.allowSorting)"
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>
@@ -36,14 +36,13 @@
<!-- Listview body section -->
<div class="umb-table-body">
<div class="umb-table-row"
ng-repeat="item in items"
ng-class="{
ng-repeat="item in items"
ng-class="{
'-selected':item.selected,
'-published':item.published,
'-unpublished':!item.published
}"
ng-click="selectItem(item, $index, $event)"
>
ng-click="selectItem(item, $index, $event)">
<div class="umb-table-cell">
@@ -53,8 +52,8 @@
<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">
ng-click="clickItem(item, $event)"
ng-bind="item.name">
</a>
</div>
@@ -68,8 +67,10 @@
</div>
<!-- If list is empty, then display -->
<div ng-if="!items" class="umb-empty-state-text -center">
<umb-empty-state
ng-if="!items"
position="center">
<localize key="content_listViewNoItems">There are no items show in the list.</localize>
</div>
</umb-empty-state>
</div>
@@ -19,7 +19,7 @@
<div class="content" >
<!-- Drag and drop illustration -->
<img src="assets/img/uploader/upload-illustration.svg" alt="" />
<img class="illustration" src="assets/img/uploader/upload-illustration.svg" alt="" draggable="false" />
<!-- Select files -->
@@ -30,7 +30,7 @@
ngf-multiple="true"
ngf-pattern="{{ accept }}"
ngf-max-size="{{ maxFileSize }}">
- or click here to choose files
- <localize key="media_orClickHereToUpload">or click here to choose files</localize>
</div>
</div>
</div>
@@ -78,8 +78,8 @@
<strong>{{ file.name }}</strong>
<span class="file-error" ng-if="file.$error">
<span ng-if="file.$error === 'pattern'" class="errorMessage color-red">(Only allowed file types are: "{{ accept }}")</span>
<span ng-if="file.$error === 'maxSize'" class="errorMessage color-red">(Max file size is "{{maxFileSize}}")</span>
<span ng-if="file.$error === 'pattern'" class="errorMessage color-red">(<localize key="media_onlyAllowedFiles"></localize>: "{{ accept }}")</span>
<span ng-if="file.$error === 'maxSize'" class="errorMessage color-red">(<localize key="media_maxFileSize"></localize> "{{maxFileSize}}")</span>
</span>
<span class="file-error" ng-if="file.serverErrorMessage">
@@ -1,9 +1,9 @@
<div class="umb-dialog-body with-footer" ng-controller="Umbraco.Editors.Content.CreateController">
<div class="umb-dialog-body with-footer" ng-controller="Umbraco.Editors.Content.CreateController" ng-cloak>
<div class="umb-pane">
<h5><localize key="create_createUnder">Create a page under</localize> {{currentNode.name}}</h5>
<p class="abstract" ng-hide="allowedTypes">
<p class="abstract" ng-if="allowedTypes && allowedTypes.length === 0">
<localize key="create_noDocumentTypes" />
</p>
@@ -3,12 +3,11 @@
<umb-load-indicator ng-if="page.loading"></umb-load-indicator>
<form name="contentForm"
ng-show="!page.loading"
ng-submit="save()"
novalidate
val-form-manager>
<umb-editor-view umb-tabs>
<umb-editor-view ng-if="!page.loading" umb-tabs>
<umb-editor-header
menu="page.menu"
@@ -1,7 +1,7 @@
<div style="max-width: 1200px">
<h3>Welcome to The Friendly CMS</h3>
<p>Thank you for choosing Umbraco - we think this could be the beginning of something beautiful. While it may feel overwhelming at first, we've done a lot to make the learning curve as smooth and fast as possible:</p>
<h3><strong>Welcome to The Friendly CMS</strong></h3>
<p style="font-size: 16px; line-height: 1.5; margin-bottom: 30px; max-width: 760px;">Thank you for choosing Umbraco - we think this could be the beginning of something beautiful. While it may feel overwhelming at first, we've done a lot to make the learning curve as smooth and fast as possible:</p>
<div class="row">
<div class="span4">
@@ -9,19 +9,16 @@
<img src="views/dashboard/default/umbracotv.png" alt="Umbraco.TV - Hours of Umbraco Video Tutorials" style="margin: 10px 0 10px 0"/>
</a>
<h4>
<a href="http://umbraco.tv/?utm_source=core&utm_medium=dashboard&utm_content=header&utm_campaign=tv" target="_blank" class="nounderline">
Umbraco.TV - Learn from the source!
</a>
</h4>
<p>
<a href="http://umbraco.tv/?utm_source=core&utm_medium=dashboard&utm_content=text&utm_campaign=tv" target="_blank" class="nounderline">
Umbraco.TV will help you go from zero to Umbraco
hero at a pace that suits you. Our easy to follow
online training videos will give you the fundamental
knowledge to start building awesome Umbraco websites.
</a>
<a href="http://umbraco.tv/?utm_source=core&utm_medium=dashboard&utm_content=header&utm_campaign=tv" target="_blank" class="btn-link -underline">
<h4> <strong>Umbraco.TV - Learn from the source!</strong> </h4>
</a>
<p style="line-height: 1.5;">
Umbraco.TV will help you go from zero to Umbraco
hero at a pace that suits you. Our easy to follow
online training videos will give you the fundamental
knowledge to start building awesome Umbraco websites.
</p>
</div>
@@ -31,17 +28,15 @@
<img src="views/dashboard/default/ourumbraco.png" alt="Our Umbraco" style="margin: 10px 0 10px 0"/>
</a>
<a href="http://our.umbraco.org/?utm_source=core&utm_medium=dashboard&utm_content=header&utm_campaign=our" target="_blank" class="nounderline">
<h4>Our Umbraco - The Friendliest Community</h4>
<a href="http://our.umbraco.org/?utm_source=core&utm_medium=dashboard&utm_content=header&utm_campaign=our" target="_blank" class="btn-link -underline">
<h4><strong>Our Umbraco - The Friendliest Community</strong></h4>
</a>
<p>
<a href="http://our.umbraco.org/?utm_source=core&utm_medium=dashboard&utm_content=text&utm_campaign=our" target="_blank" class="nounderline">
Our Umbraco - the official community site is your one
stop for everything Umbraco. Whether you need a
question answered or looking for cool plugins, the
worlds best community is just a click away.
</a>
<p style="line-height: 1.5;">
Our Umbraco - the official community site is your one
stop for everything Umbraco. Whether you need a
question answered or looking for cool plugins, the
worlds best community is just a click away.
</p>
</div>
</div>
@@ -5,11 +5,11 @@
<div class="dashboardCols">
<div class="dashboardCol">
<ul>
<li><strong><a href="/install/?installStep=skinning" target="_blank">Simple Starter Kit</a></strong> a bare-bones website that introduces you to a set of well-defined conventions for building an Umbraco website</li>
<li><strong><a href="/install/?installStep=skinning" target="_blank">Blog Starter Kit</a></strong> a powerful blog kit with all the bells and whistles</li>
<li><strong><a href="/install/?installStep=skinning" target="_blank">Business Starter Kit</a></strong> a basic business kit to get you up and running today</li>
<li><strong><a href="/install/?installStep=skinning" target="_blank">Personal Starter Kit</a></strong> a basic personal kit for your own space on the web</li>
<li><strong><a class="btn-link -underline" href="/install/?installStep=skinning" target="_blank">Simple Starter Kit</a></strong> a bare-bones website that introduces you to a set of well-defined conventions for building an Umbraco website</li>
<li><strong><a class="btn-link -underline" href="/install/?installStep=skinning" target="_blank">Blog Starter Kit</a></strong> a powerful blog kit with all the bells and whistles</li>
<li><strong><a class="btn-link -underline" href="/install/?installStep=skinning" target="_blank">Business Starter Kit</a></strong> a basic business kit to get you up and running today</li>
<li><strong><a class="btn-link -underline" href="/install/?installStep=skinning" target="_blank">Personal Starter Kit</a></strong> a basic personal kit for your own space on the web</li>
</ul>
</div>
</div>
</div>
</div>
@@ -1,14 +1,14 @@
<h3>Start here</h3>
<h4>This section contains the tools to add advanced features to your Umbraco site</h4>
<p>From here you can explore and install packages, create macros, add data types, and much more. Start by exploring the below links or videos.</p>
<h4>Find out more:</h4>
<ul>
<li>Find the answers to your Umbraco questions on our <a href="http://our.umbraco.org/wiki" target="_blank">Community Wiki</a></li>
<li>Ask a question in the <a href="http://our.umbraco.org/" target="_blank">Community Forum</a></li>
<li>Find an add-on <a href="http://our.umbraco.org/projects" target="_blank">package</a> to help you get going quickly</li>
<li>Watch our <a href="http://umbraco.tv" target="_blank">tutorial videos</a> (some are free, some require a subscription)</li>
<li>Find out about our <a href="http://umbraco.org/products" target="_blank">productivity boosting tools and commercial support</a></li>
<li>Find out about real-life <a href="http://umbraco.org/training/training-schedule" target="_blank">training and certification</a> opportunities</li>
</ul>
<li>Find the answers to your Umbraco questions on our <a class="btn-link -underline href="http://our.umbraco.org/wiki" target="_blank">Community Wiki</a></li>
<li>Ask a question in the <a class="btn-link -underline href="http://our.umbraco.org/" target="_blank">Community Forum</a></li>
<li>Find an add-on <a class="btn-link -underline href="http://our.umbraco.org/projects" target="_blank">package</a> to help you get going quickly</li>
<li>Watch our <a class="btn-link -underline href="http://umbraco.tv" target="_blank">tutorial videos</a> (some are free, some require a subscription)</li>
<li>Find out about our <a class="btn-link -underline href="http://umbraco.org/products" target="_blank">productivity boosting tools and commercial support</a></li>
<li>Find out about real-life <a class="btn-link -underline href="http://umbraco.org/training/training-schedule" target="_blank">training and certification</a> opportunities</li>
</ul>
@@ -1,21 +1,20 @@
<h3>Hours of Umbraco training videos are only a click away</h3>
<p>Want to master Umbraco? Spend a couple of minutes learning some best practices by watching one of these videos about using Umbraco. And visit <a href="http://umbraco.tv" target="_blank">umbraco.tv</a> for even more Umbraco videos</p>
<p>Want to master Umbraco? Spend a couple of minutes learning some best practices by watching one of these videos about using Umbraco. And visit <a class="btn-link -underline" href="http://umbraco.tv" target="_blank">umbraco.tv</a> for even more Umbraco videos</p>
<h4>To get you started:</h4>
<div class="row-fluid"
ng-init="init('http://umbraco.tv/videos/developer/chapterrss?sort=no')"
<div class="row-fluid"
ng-init="init('http://umbraco.tv/videos/developer/chapterrss?sort=no')"
ng-controller="Umbraco.Dashboard.StartupVideosController">
<ul class="thumbnails" >
<li class="span2" ng-repeat="video in videos">
<div class="thumbnail" style="margin-right: 20px">
<a target="_blank" href="{{video.link}}" title="{{video.title}}">
<div class="thumbnail" style="margin-right: 20px; padding: 20px;">
<a class="btn-link -underline" target="_blank" href="{{video.link}}" title="{{video.title}}">
<img ng-src="{{video.thumbnail}}" alt="{{video.title}}">
</a>
<a target="_blank" href="{{video.link}}" title="{{video.title}}">
<h4>{{video.title}}</h4>
<div style="font-weight: bold; text-align: center; margin: 20px 0 0;">{{video.title}}</div>
</a>
</div>
</li>
</ul>
</div>
</div>
@@ -11,7 +11,7 @@
<ul ng-hide="loading">
<li class="provider" ng-repeat="indexer in indexerDetails">
<a href="" ng-click="toggle(indexer, 'showProperties')">
<a class="btn-link -underline" href="" ng-click="toggle(indexer, 'showProperties')">
{{indexer.name}}
</a>
@@ -25,11 +25,11 @@
<div>
<br />
<div ng-show="!indexer.isProcessing && (!indexer.processingAttempts || indexer.processingAttempts < 100)" class="btn-group">
<button class="btn btn-warning" ng-click="rebuildIndex(indexer)">Rebuild index</button>
<button class="btn btn-warning" ng-click="optimizeIndex(indexer)" ng-show="indexer.documentCount > 0">Optimize index</button>
</div>
<div ng-show="indexer.isProcessing" class="umb-loader-wrapper" ng-show="actionInProgress">
<div class="umb-loader"></div>
</div>
@@ -147,7 +147,7 @@
<ul ng-hide="loading">
<li class="provider" ng-repeat="searcher in searcherDetails">
<a href="" ng-click="toggle(searcher, 'showProperties')">
<a class="btn-link -underline" href="" ng-click="toggle(searcher, 'showProperties')">
{{searcher.name}}
</a>
@@ -185,7 +185,7 @@
</form>
<div class="search-results" ng-show="searcher.isSearching">
<div ng-show="indexer.isProcessing" class="umb-loader-wrapper" ng-show="indexer.isProcessing">
<div class="umb-loader"></div>
</div>
@@ -231,4 +231,4 @@
</li>
</ul>
</div>
</div>
@@ -10,8 +10,8 @@
This checks the data integrity for the xml structures for content, media and members that are stored in the cmsContentXml table.
This does not check the data integrity of the xml cache file, only the xml structures stored in the database used to create the xml cache file.
</p>
<div ng-repeat="(key, value) in items" class="umb-pane">
<span class="">{{value.label}}&nbsp;...</span>
<div ng-repeat="(key, value) in items" style="padding: 4px 0;">
<span ><strong>{{value.label}}&nbsp;...</strong></span>
<span ng-if="value.checking" class="text-info">Checking...</span>
<span ng-if="!value.checking && !value.invalid" class="text-success"><strong>Ok</strong></span>
<span ng-if="!value.checking && value.invalid" class="text-error"><strong>Error</strong></span>
@@ -28,4 +28,4 @@
</div>
</div>
@@ -1,14 +1,14 @@
<h3>Desktop Media Uploader</h3>
<p><strong>Desktop Media Uploader</strong> is a small desktop application that you can install on your computer which allows you to easily upload media items directly to the media section.</p>
<p>The badge below will auto configure itself based upon whether you already have <strong>Desktop Media Uploader</strong> installed or not.</p>
<p>Just click the <strong>Install Now / Upgrade Now / Launch Now</strong> link to perform that action.</p>
<p>
<div id="dmu-badge">
<p>Download <a href="dashboard/air/desktopmediauploader.air">Desktop Media Uploader</a> now.</p>
<p>Download <a class="btn-link -underline" href="dashboard/air/desktopmediauploader.air">Desktop Media Uploader</a> now.</p>
<small>
This application requires Adobe&#174;&nbsp;AIR&#8482; to be installed for <a href="http://airdownload.adobe.com/air/mac/download/latest/AdobeAIR.dmg">Mac OS</a> or <a href="http://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe">Windows</a>.
This application requires Adobe&#174;&nbsp;AIR&#8482; to be installed for <a class="btn-link -underline" href="http://airdownload.adobe.com/air/mac/download/latest/AdobeAIR.dmg">Mac OS</a> or <a class="btn-link -underline" href="http://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe">Windows</a>.
</small>
</div>
</p>
@@ -35,4 +35,4 @@
swfobject.embedSWF("/umbraco/dashboard/swfs/airinstallbadge.swf", "dmu-badge", "215", "180", "9.0.115", "/umbraco/dashboard/swfs/expressinstall.swf", flashvars, params, attributes);
// ]]>
</script> -->
</script> -->
@@ -10,5 +10,4 @@
<li>Drag the files and folders you wish to upload directly into the <strong>Desktop Media Uploader</strong> application</li>
<li>Click <strong>Upload</strong> to start uploading</li>
</ul>
<p>For a more thorough guide on how to use the <strong>Desktop Media Uploader</strong>, <a href="http://screenr.com/vXr" target="_blank">checkout this video</a>.</p>
<p>For a more thorough guide on how to use the <strong>Desktop Media Uploader</strong>, <a class="btn-link -underline" href="http://screenr.com/vXr" target="_blank">checkout this video</a>.</p>
@@ -1,10 +1,10 @@
<h3>Start here</h3>
<h4>Get started with Members right now</h4>
<p>Use the tool below to search for an existing member.</p>
<h4>More about members</h4>
<ul>
<li>Learn about how to protect pages of your site from <a href="http://our.umbraco.org/wiki/reference/umbraco-client/context-menus/public-access" target="_blank">this Wiki entry</a></li>
</ul>
<li>Learn about how to protect pages of your site from <a class="btn-link -underline" href="http://our.umbraco.org/wiki/reference/umbraco-client/context-menus/public-access" target="_blank">this Wiki entry</a></li>
</ul>
@@ -5,10 +5,10 @@
<h4>Find out more:</h4>
<ul>
<li>Read more about working with the Items in Settings <a href="http://our.umbraco.org/wiki/umbraco-help/settings" target="_blank">in the Community Wiki</a></li>
<li>Download the <a href="http://our.umbraco.org/projects/website-utilities/umbraco-7-editors-manual" target="_blank">Editors Manual</a> for details on working with the Umbraco UI</li>
<li>Ask a question in the <a href="http://our.umbraco.org/" target="_blank">Community Forum</a></li>
<li>Watch our <a href="http://umbraco.tv" target="_blank">tutorial videos</a> (some are free, some require a subscription)</li>
<li>Find out about our <a href="http://umbraco.com/products" target="_blank">productivity boosting tools and commercial support</a></li>
<li>Find out about real-life <a href="http://umbraco.com/products/training/schedule" target="_blank">training and certification</a> opportunities</li>
<li>Read more about working with the Items in Settings <a class="btn-link -underline" href="http://our.umbraco.org/wiki/umbraco-help/settings" target="_blank">in the Community Wiki</a></li>
<li>Download the <a class="btn-link -underline" href="http://our.umbraco.org/projects/website-utilities/umbraco-7-editors-manual" target="_blank">Editors Manual</a> for details on working with the Umbraco UI</li>
<li>Ask a question in the <a class="btn-link -underline" href="http://our.umbraco.org/" target="_blank">Community Forum</a></li>
<li>Watch our <a class="btn-link -underline" href="http://umbraco.tv" target="_blank">tutorial videos</a> (some are free, some require a subscription)</li>
<li>Find out about our <a class="btn-link -underline" href="http://umbraco.com/products" target="_blank">productivity boosting tools and commercial support</a></li>
<li>Find out about real-life <a class="btn-link -underline" href="http://umbraco.com/products/training/schedule" target="_blank">training and certification</a> opportunities</li>
</ul>
@@ -1,4 +1,4 @@
<div class="umbracoDialog umb-dialog-body with-footer" ng-controller="Umbraco.Editors.DataType.CreateController">
<div class="umbracoDialog umb-dialog-body with-footer" ng-controller="Umbraco.Editors.DataType.CreateController" ng-cloak>
<div class="umb-pane" ng-if="!model.creatingFolder">
<h5><localize key="create_createUnder">Create an item under</localize> {{currentNode.name}}</h5>
@@ -3,12 +3,11 @@
<umb-load-indicator ng-if="page.loading"></umb-load-indicator>
<form name="contentForm"
ng-show="!page.loading"
ng-submit="save()"
novalidate
val-form-manager>
<umb-editor-view>
<umb-editor-view ng-if="!page.loading">
<umb-editor-header
menu="page.menu"
@@ -1,4 +1,4 @@
<div class="umbracoDialog umb-dialog-body with-footer" ng-controller="Umbraco.Editors.DocumentTypes.CreateController">
<div class="umbracoDialog umb-dialog-body with-footer" ng-controller="Umbraco.Editors.DocumentTypes.CreateController" ng-cloak>
<div class="umb-pane" ng-if="!model.creatingFolder">
<h5><localize key="create_createUnder">Create an item under</localize> {{currentNode.name}}</h5>
@@ -17,15 +17,13 @@
<li>
<a href="" ng-click="createComponent()">
<i class="large icon-item-arrangement"></i>
<span class="menu-label">
Document Type Without Template
</span>
<span class="menu-label"><localize key="create_documentTypeWithoutTemplate"></localize></span>
</a>
</li>
<li>
<li ng-if="model.allowCreateFolder">
<a href="" ng-click="showCreateFolder()">
<i class="large icon-folder"></i>
<span class="menu-label">Folder</span>
<span class="menu-label"><localize key="general_folder"></localize></span>
</a>
</li>
</ul>
@@ -42,7 +40,7 @@
</div>
<umb-control-group label="Enter a folder name" hide-label="false">
<input type="text" name="folderName" ng-model="model.folderName" class="umb-textstring textstring input-block-level" required />
<input type="text" name="folderName" ng-model="model.folderName" class="umb-textstring textstring input-block-level" umb-auto-focus required />
</umb-control-group>
<button type="submit" class="btn btn-primary"><localize key="general_create">Create</localize></button>
@@ -17,15 +17,20 @@
<div ng-switch-default>
<p>
<i class="icon-alert red"></i> <strong class="red">All Documents</strong>
using this document type will be deleted permanently, please confirm you want to delete these as well.
<i class="icon-alert red"></i>
<strong class="red">
<localize key="contentTypeEditor_allDocuments">All Documents</localize>
</strong>
<localize key="contentTypeEditor_usingThisDocument">
using this document type will be deleted permanently, please confirm you want to delete these as well.
</localize>
</p>
<hr />
<label class="checkbox">
<input type="checkbox" ng-model="confirmed" />
Yes, delete {{currentNode.name}} and all documents using this type
<localize key="contentTypeEditor_yesDelete">Yes, delete</localize> {{currentNode.name}} <localize key="contentTypeEditor_andAllDocuments">and all documents using this type</localize>
</label>
<umb-confirm ng-if="confirmed" on-confirm="performDelete" on-cancel="cancel">
@@ -2,61 +2,63 @@
<umb-load-indicator ng-if="vm.page.loading"></umb-load-indicator>
<form novalidate name="contentTypeForm"
ng-show="!vm.page.loading"
ng-submit="vm.save()"
val-form-manager>
<form novalidate name="contentTypeForm" val-form-manager>
<umb-editor-view>
<umb-editor-view ng-if="!vm.page.loading">
<umb-editor-header
name="vm.contentType.name"
alias="vm.contentType.alias"
description="vm.contentType.description"
navigation="vm.page.navigation"
icon="vm.contentType.icon">
name="vm.contentType.name"
alias="vm.contentType.alias"
description="vm.contentType.description"
navigation="vm.page.navigation"
icon="vm.contentType.icon">
</umb-editor-header>
<umb-editor-container>
<umb-editor-container class="editors-document-type-container">
<umb-editor-sub-views ng-if="!vm.page.loading" sub-views="vm.page.navigation" model="vm.contentType"></umb-editor-sub-views>
<div class="editors-document-type-canvas">
<umb-editor-sub-views
ng-if="!vm.page.loading"
sub-views="vm.page.navigation"
model="vm.contentType">
</umb-editor-sub-views>
</div>
</umb-editor-container>
<umb-editor-footer>
<umb-editor-footer-content-left>
<umb-editor-footer-content-left>
<umb-keyboard-shortcuts-overview
model="vm.page.keyboardShortcutsOverview">
</umb-keyboard-shortcuts-overview>
<umb-keyboard-shortcuts-overview
model="vm.page.keyboardShortcutsOverview">
</umb-keyboard-shortcuts-overview>
</umb-editor-footer-content-left>
</umb-editor-footer-content-left>
<umb-editor-footer-content-right>
<umb-editor-footer-content-right>
<umb-button
ng-if="!vm.page.modelsBuilder"
type="submit"
state="vm.page.saveButtonState"
button-style="success"
shortcut="ctrl+s"
label="Save"
label-key="buttons_save">
</umb-button>
<umb-button-group
ng-if="vm.page.modelsBuilder"
default-button="vm.page.defaultButton"
sub-buttons="vm.page.subButtons"
state="vm.page.saveButtonState"
direction="up"
float="right">
</umb-button-group>
<umb-button
ng-if="!vm.page.modelsBuilder"
type="button"
action="vm.save()"
state="vm.page.saveButtonState"
button-style="success"
shortcut="ctrl+s"
label="Save"
label-key="buttons_save">
</umb-button>
<umb-button-group
ng-if="vm.page.modelsBuilder"
default-button="vm.page.defaultButton"
sub-buttons="vm.page.subButtons"
state="vm.page.saveButtonState"
direction="up"
float="right">
</umb-button-group>
</umb-editor-footer-content-right>
</umb-editor-footer-content-right>
</umb-editor-footer>
@@ -4,7 +4,7 @@
<div class="umb-pane">
<p class="abstract" ng-hide="success">
Select the folder to move <strong>{{currentNode.name}}</strong>&nbsp;to in the tree structure below
<localize key="contentTypeEditor_folderToMove">Select the folder to move</localize> <strong>{{currentNode.name}}</strong>&nbsp;<localize key="contentTypeEditor_structureBelow">to in the tree structure below</localize>
</p>
<div class="umb-loader-wrapper" ng-show="busy">
@@ -17,7 +17,8 @@
</div>
<div ng-show="success">
<h5 class="text-success"><strong>{{currentNode.name}}</strong> was moved underneath&nbsp;<strong>{{target.name}}</strong></h5>
<h5 class="text-success">
<strong>{{currentNode.name}}</strong> <localize key="contentTypeEditor_movedUnderneath">was moved underneath</localize>&nbsp;<strong>{{target.name}}</strong></h5>
<button class="btn btn-primary" ng-click="nav.hideDialog()">Ok</button>
</div>
@@ -1,10 +1,8 @@
<div class="sub-view-columns">
<div class="sub-view-column-left">
<h5>Enable list view</h5>
<small>Configures the content item to show a sortable & searchable list of its children, the children will not be shown in the tree</small>
<h5><localize key="contentTypeEditor_enableListViewHeading" /></h5>
<small><localize key="contentTypeEditor_enableListViewDescription" /></small>
</div>
<div class="sub-view-column-right">
@@ -3,12 +3,13 @@
<div class="sub-view-columns">
<div class="sub-view-column-left">
<h5>Allow as root</h5>
<small>Allow editors to create content if this type in the root of the content tree</small>
<h5><localize key="contentTypeEditor_allowAsRootHeading" /></h5>
<small><localize key="contentTypeEditor_allowAsRootDescription" /></small>
</div>
<div class="sub-view-column-right">
<label class="checkbox no-indent" >
<input type="checkbox" ng-model="model.allowAsRoot" hotkey="alt+shift+r" /> Yes - allow content of this type in the root
<input type="checkbox" ng-model="model.allowAsRoot" hotkey="alt+shift+r" />
<localize key="contentTypeEditor_allowAsRootCheckbox" />
</label>
</div>
@@ -17,8 +18,8 @@
<div class="sub-view-columns">
<div class="sub-view-column-left">
<h5>Allowed child node types</h5>
<small>Allow content of these types to be created underneath content this type</small>
<h5><localize key="contentTypeEditor_childNodesHeading" /></h5>
<small><localize key="contentTypeEditor_childNodesDescription" /></small>
</div>
<div class="sub-view-column-right">
@@ -1,8 +1,8 @@
<div class="sub-view-columns" ng-controller="Umbraco.Editors.DocumentType.TemplatesController as vm">
<div class="sub-view-column-left">
<h5>Allowed Templates</h5>
<small>Choose which templates editors are allowed to use on content of this type</small>
<h5><localize key="contentTypeEditor_allowedTemplatesHeading" /></h5>
<small><localize key="contentTypeEditor_allowedTemplatesDescription" /></small>
</div>
<div class="sub-view-column-right">
@@ -3,11 +3,10 @@
<umb-load-indicator ng-if="page.loading"></umb-load-indicator>
<form novalidate name="contentForm"
ng-show="!page.loading"
ng-submit="save()"
val-form-manager>
<umb-editor-view umb-tabs>
<umb-editor-view ng-if="!page.loading" umb-tabs>
<umb-editor-header
name="content.name"
@@ -6,13 +6,13 @@
Choose where to move <strong>{{currentNode.name}}</strong> to in the tree structure below
</p>
<div class="alert alert-error" ng-show="error">
<div class="alert alert-error" ng-show="error" ng-cloak>
<h4>{{error.errorMsg}}</h4>
<p>{{error.data.Message}}</p>
</div>
<div class="alert alert-success" ng-show="success">
<p><strong>{{currentNode.name}}</strong> was moved underneath
<div class="alert alert-success" ng-show="success" ng-cloak>
<p><strong>{{currentNode.name}}</strong> was moved underneath
<strong>{{target.name}}</strong></p>
<button class="btn btn-primary" ng-click="nav.hideDialog()">Ok</button>
@@ -35,4 +35,4 @@
<a class="btn btn-link" ng-click="nav.hideDialog()">Cancel</a>
<button class="btn btn-primary" ng-click="move()">Move</button>
</div>
</div>
</div>

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