Merge branch 'refs/heads/master' into move-masterpages-to-views

# Conflicts:
#	.gitignore
#	OurUmbraco.Client/package.json
#	OurUmbraco.Site/config/Dashboard.config
#	OurUmbraco.Site/masterpages/Release.master
#	OurUmbraco.Site/usercontrols/Deli/Package/Editor.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Complete.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Details.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Files.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Screenshots.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/FileDownloadProxy.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectCollabRequest.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectContributors.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectEditor.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectFileUpload.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectForums.ascx
#	OurUmbraco/Our/MigrationsHandler.cs
#	OurUmbraco/OurUmbraco.csproj
#	build/BuildClientFiles.bat
This commit is contained in:
Sebastiaan Janssen
2016-11-07 08:45:46 +01:00
837 changed files with 199611 additions and 198804 deletions
+1
View File
@@ -63,4 +63,5 @@ OurUmbraco.Site/[Aa]ssets/js/app.min.js
OurUmbraco.Site/App_Data/migrations/*.txt
OurUmbraco.Site/apidocs/
OurUmbraco.Site/App_Data/Documentation/
OurUmbraco.Site/App_Data/NotificationTest/
build/tools/node*
+3 -3
View File
@@ -1,4 +1,4 @@
<!doctype html>
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
@@ -1104,8 +1104,8 @@ namespace TestProject.Controllers
<option class="features" value="1150">our.umb dev forum - Features</option>
<option class="general" value="5668">Core - General</option>
<option class="4.1feedback" value="5669">Core - 4.1 feedback</option>
<option class="generalquestions" value="73967">Umbraco as a Service - General Questions</option>
<option class="issues" value="73968">Umbraco as a Service - Issues</option>
<option class="generalquestions" value="73967">Umbraco Cloud - General Questions</option>
<option class="issues" value="73968">Umbraco Cloud - Issues</option>
</select>
</div>
+3 -3
View File
@@ -1,4 +1,4 @@
<!doctype html>
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
@@ -624,8 +624,8 @@ grunt</pre>
<div class="package-compatibility-versions">
<div class="versions">
<span class="smiley joyous">Umbraco as a Service (Works)</span>
<span class="smiley untested">Umbraco as a Service (Not working yet)</span>
<span class="smiley joyous">Umbraco Cloud (Works)</span>
<span class="smiley untested">Umbraco Cloud (Not working yet)</span>
<span class="smiley untested"> 7.2.x (untested)</span>
<span class="smiley happy"> 7.1.x (91%)</span>
<span class="smiley joyous"> 7.0.x (100%)</span>
+1 -1
View File
@@ -57,7 +57,7 @@ gulp.task('css', function () {
.pipe(sass())
.on('error', gutil.log)
.pipe(autoprefixer('last 1 version', 'ie 9', 'ios 7'))
.pipe(cmq({log: true}))
// .pipe(cmq({log: true}))
.pipe(rename({suffix: '.min'}))
.pipe(minifyCss())
.pipe(gulp.dest(settings.build + '/assets/css'))
+16 -21
View File
@@ -4,33 +4,28 @@
"description": "Umbraco Our gulpjs config",
"main": "gulpfile.js",
"private": true,
"dependencies": {},
"dependencies": {
},
"devDependencies": {
"gulp": "^3.9.1",
"gulp-util": "3.0.x",
"gulp-watch": "0.6.x",
"gulp-minify-css": "1.1.x",
"gulp-sass": "^2.2.0",
"gulp-combine-media-queries": "0.2.x",
"gulp-imagemin": "0.6.x",
"gulp-autoprefixer": "^3.1.0",
"gulp-clean": "*",
"gulp-concat": "^2.6.0",
"gulp-group-css-media-queries": "^1.1.0",
"gulp-imagemin": "^3.0.2",
"gulp-jshint": "^2.0.1",
"gulp-minify-css": "^1.2.4",
"gulp-rename": "*",
"gulp-sass": "^2.3.2",
"gulp-svgmin": "^1.2.2",
"gulp-uglify": "^2.0.0",
"gulp-util": "^3.0.7",
"gulp-watch": "^4.3.9",
"jshint": "^2.9.2",
"jshint-stylish": "^2.2.0",
"node-sass": "^3.8.0"
"gulp-uglify": "^1.5.3",
"gulp-jshint": "2.0.0",
"gulp-concat": "2.2.x",
"jshint-stylish": "0.2.x",
"gulp-clean": "0.3.x",
"gulp-svgmin": "0.4.x",
"gulp-rename": "1.2.x"
},
"scripts": {
"test": "gulp build --verbose"
},
"author": "umbraco",
"license": "MIT",
"repository": {
"type": "git",
"url": "http://github.com/devdk/gulp-workflow.git"
}
"license": "MIT"
}
@@ -4,6 +4,7 @@
border: none !important;
padding: 20px;
line-height: 1.5;
@include colorset(alertbar);
@@ -1,7 +1,11 @@
button.button, .button, a.button {
background: $color-blue;
padding: 14px 40px;
display: inline-block;
padding: 12px 40px;
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
border: none;
border-radius: 36px;
@@ -11,8 +15,7 @@ button.button, .button, a.button {
color: #fff;
text-align: center;
font-size: 1rem;
line-height: 1;
font-size: 14px;
margin: 0;
@@ -103,7 +106,7 @@ button.button, .button, a.button {
&.large {
font-size: 1.2rem;
font-size: 1.175rem;
}
@@ -260,12 +260,12 @@
.topic {
flex: 0 0 100%;
margin-bottom: .2rem;
word-break: break-all;
margin-bottom: 15px;
@media (min-width: $md) {
flex: 0 0 70%;
padding-right: 3px;
flex: 1 1 70%;
padding-right: 10px;
margin-bottom: 0;
}
}
@@ -276,7 +276,8 @@
flex: 0 0 100%;
@media (min-width: $md) {
flex: 0 0 30%;
flex: 1 1 30%;
margin-left: auto;
flex-direction: column;
}
@@ -287,7 +288,7 @@
margin: 0 .5rem 0 0;
@media (min-width: $md) {
margin: 0 0 .5rem 0;
margin: 0 0 .5rem auto;
}
}
}
@@ -526,6 +527,7 @@
display: inline-block;
margin: 0px auto 50px;
text-align: center;
padding-top: 10px;
&.reply {
font-size: .85rem;
@@ -379,7 +379,8 @@
border: none;
background: $color-green;
color: white;
padding: 10px;
padding: 10px !important;
padding-left: 32px;
width: 100%;
max-width: 140px;
font-family: $font-family;
@@ -9,7 +9,7 @@
border-radius: 0;
border: 1px solid darken(whitesmoke, 15%);
padding: 20px 6px 20px 6px;
padding: 20px 10px 20px 10px;
outline: none;
display: block;
width: 100%;
@@ -529,6 +529,8 @@
font-size: .7rem;
letter-spacing: .5px;
text-align: center;
transform: translate(-50%, -50%);
cursor: pointer;
@@ -63,11 +63,11 @@ html {
display: inline-block;
overflow: hidden;
width: 100%;
max-width: $sb-desktop / 100% * $sb-width;
text-align: center;
@media (min-width: $md) {
float: right;
max-width: $sb-desktop / 100% * $sb-width;
}
}
}
@@ -50,6 +50,11 @@
@media (min-width: $md) {
margin-bottom: 0;
}
span {
padding-top: 5px;
padding-left: 5px;
}
}
}
+68 -37
View File
@@ -91,16 +91,20 @@
&-head {
flex-direction: row;
display: none;
padding: 20px 15px;
border-bottom: 1px solid whitesmoke;
@media (min-width: $md) {
display: flex;
font-size: .8rem;
text-transform: uppercase;
font-weight: bold;
padding: 20px 15px;
border-bottom: 1px solid whitesmoke;
letter-spacing: .5px;
font-size: .8rem;
text-transform: uppercase;
font-weight: bold;
letter-spacing: .5px;
}
}
@@ -112,19 +116,6 @@
display: flex;
flex-direction: column;
small {
color: darken($color-space, 25%);
font-size: 1rem;
margin-bottom: .2rem;
}
span {
font-size: .8rem;
color: $color-space;
}
}
}
@@ -135,18 +126,25 @@
padding: 25px 15px;
display: flex;
flex-direction: row;
align-items: center;
flex-direction: column;
align-items: flex-start;
border-bottom: 1px solid rgba($color-space, .11);
@media (min-width: $md) {
flex-direction: row;
align-items: center;
}
.topic {
font-size: .95rem;
font-size: 1.15rem;
line-height: 1.3;
order: 2;
h3 {
word-break: break-all;
font-weight: 600;
}
a {
@@ -181,8 +179,9 @@
@media (min-width: $md) {
font-size: 1.15rem;
line-height: 1.3;
h3 {
font-weight: 100;
}
span {
font-size: .9rem;
@@ -220,35 +219,62 @@
.topic {
flex: 0 0 50%;
margin-right: 5%;
order: 2;
margin: 10px 0;
@media (min-width: $md) {
flex: 0 0 50%;
margin-right: 10%;
margin: 0 10% 0 0;
order: 1;
}
}
.category {
flex: 0 0 30%;
margin-right: 5%;
order: 1;
@media (min-width: $md) {
flex: 0 0 28%;
margin-right: 2%;
order: 2;
}
}
.posts {
flex: 0 0 10%;
text-align: center;
order: 3;
@media (max-width: $md) {
transform: translate(-6px, 0);
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
font-size: .8rem;
small {
margin-right: 3px;
margin-bottom: 0;
font-weight: normal;
font-size: .8rem;
color: $color-black;
}
@media (min-width: $md) {
text-align: center;
flex-direction: column;
small {
margin-right: 0px;
margin-bottom: 5px;
font-weight: bold;
font-size: 1rem;
}
}
}
}
@@ -295,10 +321,14 @@
color: #4f5f63;
text-transform: uppercase;
font-weight: 700;
letter-spacing: .2px;
display: block;
margin-bottom: .5rem;
text-align: left;
line-height: 1.2;
@media (min-width: $md) {
letter-spacing: .2px;
}
}
.options {
@@ -352,7 +382,6 @@
span {
position: relative;
flex: 1 1 auto;
margin-right: 20px;
display: flex;
justify-content: center;
@@ -373,6 +402,8 @@
transition: color 150ms ease;
font-size: .7rem;
text-align: center;
@media(min-width: $md) {
font-size: .9rem;
}
+274 -160
View File
@@ -1,39 +1,31 @@
.download {
.download.latest .dot {
margin-top: 2rem;
}
.dot.progress {
.download .dot.progress {
text-indent: .3rem;
text-align: center;
line-height: 2.8rem;
}
.counter {
font-size: 1.1rem;;
}
}
&.latest {
.dot {
margin-top: 2rem;
}
}
.download .dot.progress .counter {
font-size: 1.1rem;
}
.explain {
flex-direction: column;
.changes {
small {
line-height: .5rem;
}
@media (min-width: 768px) {
flex-direction: row;
}
}
.explain .changes small {
line-height: .5rem;
}
.chart {
@@ -41,171 +33,100 @@
top: -4px;
left: -8px;
z-index: 1;
.percentage {
display: inline-block;
position: absolute;
top: 9px;
left: 16px;
font-size: 1.1rem;
color: darken($color-our, 30%);
}
canvas {
top: 1px;
position: absolute;
left: 5px;
}
}
.chart .percentage {
display: inline-block;
position: absolute;
top: 9px;
left: 16px;
font-size: 1.1rem;
color: darken($color-our, 30%);
}
.chart canvas {
top: 1px;
position: absolute;
left: 5px;
}
.get-release {
i {
font-size: 2.5rem;
line-height: 5rem;
}
.chart {
position: absolute;
top: -4px;
left: -8px;
z-index: 1;
}
.get-release {
line-height: 1.5;
padding: 2.5rem 0;
margin: 2.5rem 0;
padding: 3rem 0;
margin: 0 0 3.5rem ;
border-bottom: 1px solid darken(whitesmoke, 5%);
border-top: 1px solid darken(whitesmoke, 5%);
}
.get-release i {
font-size: 2.5rem;
line-height: 5rem;
}
h3 {
font-size: 1.1rem;
margin-bottom: .3rem;
color: $color-headline;
.get-release h3 {
font-size: 1.1rem;
margin-bottom: .3rem;
color: $color-headline;
}
.get-release h3 a {
text-decoration: none;
a {
text-decoration: none;
&:hover {
color: $color-our;
}
}
}
p {
color: $color-headline;
font-size: .95rem;
line-height: 1.3;
margin-bottom: .5rem;
}
small {
font-size: .7rem;
color: $color-text;
&:hover {
color: $color-our;
}
}
.release {
min-height: 160px;
&.zip {
i {
color: $color-headline;
}
}
&.bin {
i {
color: rgba(#000, .4);
font-size: 1.6rem;
}
h4 {
font-size: .9rem;
margin-bottom: .3rem;
color: $color-headline;
a {
text-decoration: none;
&:hover {
color: $color-our;
}
}
}
&.col-sm-5 {
padding-top: 18px;
}
}
&.col-sm-1 {
text-align: center;
}
.get-release p {
color: $color-headline;
font-size: .95rem;
line-height: 1.3;
margin-bottom: .5rem;
}
.latest {
.dot.big {
margin-bottom: 30px;
}
.explain {
h4 {
font-size: 2.5rem;
}
p {
font-size: 1.1rem;
color: $color-text
;
}
.col-xs-12 {
min-height: 0;
}
}
.get-release small {
font-size: .8rem;
color: rgba($color-text, .6);
}
.latest .dot.big {
margin-bottom: 30px;
}
.latest .explain h4 {
font-size: 2.5rem;
}
.latest .explain p {
font-size: 1.1rem;
color: $color-text;
}
.latest .explain .col-xs-12 {
min-height: 0;
}
// Single release page
.release{
.release {
.markdown-syntax {
p, li, ul, a {
p, li, ul {
color: $color-headline;
font-size: .95rem;
}
@@ -253,12 +174,12 @@
}
}
}
.releaseTable {
.col-xs-3 {
&:first-child {
.progress {
.top {
@@ -282,6 +203,7 @@
}
}
// Progress page
.inprogress {
@@ -324,6 +246,7 @@
}
}
// Roadmap page
.plannedreleases {
.dot.big {
@@ -342,3 +265,194 @@
}
}
}
.release-page .explain h2 {
margin: 0;
font-size: 2em;
color: rgba(0,0,0,.8);
}
.release-page .explain small {
margin-bottom: 0;
}
.release-page .dot {
border: none;
}
.release-page .dot.big {
position: relative;
text-indent: 0;
margin: 0;
}
.release-page .chart {
height: 60px;
width: 60px;
top: initial;
left: initial;
text-align: center;
}
.release-page .chart p {
vertical-align: middle;
line-height: 3.7rem;
display: inline-block;
}
.release-page .chart canvas {
top: 0px;
left: 0px;
}
.statuses ul {
list-style-type: none;
}
.statuses ul li {
position: relative;
margin-bottom: 10px;
padding-left: 10px;
}
.statuses li:before {
position: absolute;
top: -4px;
left: -25px;
font-size: 1.5em;
}
.release-progress-indicator {
flex: 1 1 auto;
}
.release-progress-action {
flex: 1 1 auto;
margin-top: 30px;
}
.release-progress-version {
margin-left: 15px;
}
.release-section-group {
flex: 1 1 100%;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
@media (min-width: 768px) {
flex: 1 1 47%;
padding: 0 3% 0 0;
align-items: flex-start;
text-align: left;
}
}
.release-section-group:nth-child(even) {
flex: 1 1 100%;
padding: 0;
@media (min-width: 768px) {
flex: 1 1 47%;
padding: 0 0 0 3%;
}
}
.release-section-action {
height: 80px;
display: flex;
justify-content: flex-start;
align-items: center;
box-sizing: border-box;
}
.release-section code {
overflow: auto;
background-color: #333;
background-clip: padding-box;
color: #fff;
font-size: 12px;
line-height: 1.4em;
text-align: center;
text-decoration: none;
padding: 14px 16px 14px 16px;
width: auto;
border-radius: 5px;
border: none;
}
.release-section code a {
text-decoration: none;
}
.release-section + .release-section {
margin-top: 30px;
}
.release-section-group + .release-section-group {
margin-top: 30px;
@media (min-width: 768px) {
margin-top: 0;
}
}
.release-page h2 {
font-size: 1.4rem;
font-weight: bold;
margin-bottom: 0;
}
.release-page h3 {
font-size: 1.1rem;
font-weight: bold;
margin-bottom: 0;
}
// Other files
.release-other-files {
margin-top: 3rem;
}
.release-other-files h3 {
font-size: 1.1rem;
margin-bottom: 5px;
}
.release-other-files small {
font-size: .8rem;
color: rgba($color-text, .5);
}
.release-other-files .release {
min-height: auto;
margin-bottom: 30px;
}
.release-other-files .release a {
display: inline-block;
margin-bottom: 10px;
margin-top: 10px;
}
.release-other-files .release p {
margin-top: 0;
}
@@ -45,6 +45,7 @@ section.forum {
.forum-thread {
flex: 0 0 100%;
display: flex;
overflow: hidden;
@media (min-width: $md) {
flex: 1 0 49%;
@@ -77,6 +78,8 @@ section.forum {
flex-direction: column;
flex: 1 0 75%;
overflow: hidden;
padding: 0 10px 0 0;
@media (min-width: $md) {
@@ -89,6 +92,7 @@ section.forum {
.category {
margin: .5rem 0 0;
max-width: 95%;
span {
font-size: .75rem;
@@ -132,14 +136,14 @@ section.forum {
padding: 25px;
margin-bottom: 30px;
border: 1px solid darken(#f6f6f6, 5%);
transition: box-shadow .2s;
transition: box-shadow .2s ease, border-color .2s ease;
text-decoration: none;
display: flex;
align-items: center;
&:hover {
border-color: transparent;
border-color: white;
@include box_shadow(2);
}
@@ -182,7 +186,6 @@ section.forum {
color: #000;
line-height: 1.3;
font-size: 1rem;
word-break: break-all;
@media (min-width: $md) {
font-size: 1.1rem;
+5
View File
@@ -15,6 +15,11 @@
@import 'playground';
/**
/* Utilities
**/
@import 'utilities/flexbox';
/**
/* Elements
**/
@@ -0,0 +1,67 @@
/*
Flexbox
*/
.flex { display: flex; }
.flex-inline { display: inline-flex; }
.flex-column { flex-direction: column; }
.flex-wrap { flex-wrap: wrap; }
.items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }
.items-center { align-items: center; }
.items-baseline { align-items: baseline; }
.items-stretch { align-items: stretch; }
.self-start { align-self: flex-start; }
.self-end { align-self: flex-end; }
.self-center { align-self: center; }
.self-baseline { align-self: baseline; }
.self-stretch { align-self: stretch; }
.justify-start { justify-content: flex-start; }
.justify-end { justify-content: flex-end; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.justify-around { justify-content: space-around; }
.content-start { align-content: flex-start; }
.content-end { align-content: flex-end; }
.content-center { align-content: center; }
.content-between { align-content: space-between; }
.content-around { align-content: space-around; }
.content-stretch { align-content: stretch; }
.flx-i {
flex: 1;
}
.flx-g0 {
flex-grow: 0;
}
.flx-s0 {
flex-shrink: 0;
}
.flx-b0 {
flex-basis: 0%;
}
.flx-g1 {
flex-grow: 1;
}
.flx-s1 {
flex-shrink: 1;
}
.flx-b1 {
flex-basis: 100%;
}
/* 1. Fix for Chrome 44 bug. https://code.google.com/p/chromium/issues/detail?id=506893 */
.flex-auto {
flex: 1 1 auto;
min-width: 0; /* 1 */
min-height: 0; /* 1 */
}
.flex-none { flex: none; }
+46 -45
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\UmbracoCms.7.5.3\build\UmbracoCms.props" Condition="Exists('..\packages\UmbracoCms.7.5.3\build\UmbracoCms.props')" />
<Import Project="..\packages\UmbracoCms.7.5.4\build\UmbracoCms.props" Condition="Exists('..\packages\UmbracoCms.7.5.4\build\UmbracoCms.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -47,16 +47,16 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="AutoMapper, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll</HintPath>
<Reference Include="AutoMapper, Version=3.3.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="AutoMapper.Net4, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll</HintPath>
<Reference Include="AutoMapper.Net4, Version=3.3.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="businesslogic, Version=1.0.6092.24022, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\businesslogic.dll</HintPath>
<Reference Include="businesslogic, Version=1.0.6136.27244, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\businesslogic.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ClientDependency.Core, Version=1.9.1.0, Culture=neutral, processorArchitecture=MSIL">
@@ -67,12 +67,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.6092.24022, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\cms.dll</HintPath>
<Reference Include="cms, Version=1.0.6136.27244, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\cms.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="controls, Version=1.0.6092.24024, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\controls.dll</HintPath>
<Reference Include="controls, Version=1.0.6136.27246, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\controls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CookComputing.XmlRpcV2, Version=2.5.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d, processorArchitecture=MSIL">
@@ -83,8 +83,8 @@
<HintPath>..\packages\EasyHttp.1.6.29.0\lib\net40\EasyHttp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Examine, Version=0.1.69.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.0.1.69.0\lib\Examine.dll</HintPath>
<Reference Include="Examine, Version=0.1.70.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.0.1.70.0\lib\Examine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.4.9.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
@@ -95,20 +95,20 @@
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor, Version=2.4.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.4.4.0\lib\net45\ImageProcessor.dll</HintPath>
<Reference Include="ImageProcessor, Version=2.4.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.4.5.0\lib\net45\ImageProcessor.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor.Web, Version=4.6.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.6.4.0\lib\net45\ImageProcessor.Web.dll</HintPath>
<Reference Include="ImageProcessor.Web, Version=4.6.6.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.6.6.0\lib\net45\ImageProcessor.Web.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="InfoCaster.Umbraco.UrlTracker, Version=3.11.5900.30099, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UrlTracker.3.11\lib\InfoCaster.Umbraco.UrlTracker.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="interfaces, Version=1.0.6092.24017, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\interfaces.dll</HintPath>
<Reference Include="interfaces, Version=1.0.6136.27240, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\interfaces.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="JsonFx, Version=2.0.1209.2802, Culture=neutral, PublicKeyToken=315052dd637f8a52, processorArchitecture=MSIL">
@@ -116,7 +116,7 @@
<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.5.3\lib\log4net.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\log4net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
@@ -128,7 +128,7 @@
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.ApplicationBlocks.Data, Version=1.0.1559.20655, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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">
@@ -204,8 +204,8 @@
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SQLCE4Umbraco, Version=1.0.6092.24023, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\SQLCE4Umbraco.dll</HintPath>
<Reference Include="SQLCE4Umbraco, Version=1.0.6136.27245, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\SQLCE4Umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Collections.Immutable, Version=1.1.36.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@@ -214,11 +214,11 @@
</Reference>
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\System.Data.SqlServerCe.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\System.Data.SqlServerCe.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http" />
@@ -282,47 +282,47 @@
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Xml.Linq" />
<Reference Include="TidyNet, Version=1.0.0.0, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\TidyNet.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\TidyNet.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco, Version=1.0.6092.24026, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.dll</HintPath>
<Reference Include="umbraco, Version=1.0.6136.27248, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Core, Version=1.0.6092.24019, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Umbraco.Core.dll</HintPath>
<Reference Include="Umbraco.Core, Version=1.0.6136.27241, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\Umbraco.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.DataLayer, Version=1.0.6092.24022, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.DataLayer.dll</HintPath>
<Reference Include="umbraco.DataLayer, Version=1.0.6136.27243, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.DataLayer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.editorControls, Version=1.0.6092.24028, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.editorControls.dll</HintPath>
<Reference Include="umbraco.editorControls, Version=1.0.6136.27251, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.editorControls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.IdentityExtensions, Version=1.0.5779.34109, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.IdentityExtensions.1.0.0\lib\net45\Umbraco.IdentityExtensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.MacroEngines, Version=1.0.6092.24028, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.MacroEngines.dll</HintPath>
<Reference Include="umbraco.MacroEngines, Version=1.0.6136.27252, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.MacroEngines.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.ModelsBuilder, Version=3.0.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Umbraco.ModelsBuilder.3.0.4\lib\Umbraco.ModelsBuilder.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.providers, Version=1.0.6092.24024, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.providers.dll</HintPath>
<Reference Include="umbraco.providers, Version=1.0.6136.27246, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.providers.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Web.UI, Version=1.0.6092.24029, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Umbraco.Web.UI.dll</HintPath>
<Reference Include="Umbraco.Web.UI, Version=1.0.6136.27253, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\Umbraco.Web.UI.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UmbracoExamine, Version=0.7.0.24023, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\UmbracoExamine.dll</HintPath>
<Reference Include="UmbracoExamine, Version=0.7.0.27245, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\UmbracoExamine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UrlRewritingNet.UrlRewriter, Version=2.0.7.0, Culture=neutral, processorArchitecture=MSIL">
@@ -4364,10 +4364,11 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.3\build\UmbracoCms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.3\build\UmbracoCms.props'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.3\build\UmbracoCms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.3\build\UmbracoCms.targets'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.4\build\UmbracoCms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.4\build\UmbracoCms.props'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.4\build\UmbracoCms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.4\build\UmbracoCms.targets'))" />
</Target>
<Import Project="..\packages\UmbracoCms.7.5.3\build\UmbracoCms.targets" Condition="Exists('..\packages\UmbracoCms.7.5.3\build\UmbracoCms.targets')" />
<Import Project="..\packages\UmbracoCms.7.5.4\build\UmbracoCms.targets" Condition="Exists('..\packages\UmbracoCms.7.5.4\build\UmbracoCms.targets')" />
<Import Project="..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets" Condition="Exists('..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="AfterBuild">
@@ -10,5 +10,5 @@
<h4><a href="?category=@childPage.Name">@childPage.Name</a></h4>
</li>
}
<li><h4><a href="?category=uaas">Umbraco as a Service</a></h4></li>
<li><h4><a href="?category=uaas">Umbraco Cloud</a></h4></li>
</ul>
@@ -22,7 +22,7 @@
}
if (category != null)
{
headline = category == "uaas" ? "Umbraco as a Service" : category.ToLowerInvariant();
headline = category == "uaas" ? "Umbraco Cloud" : category.ToLowerInvariant();
}
var searchFilters = new SearchFilters(BooleanOperation.And);
@@ -66,11 +66,11 @@
<div class="versions">
@if (Model.WorksOnUaaS)
{
<span class="smiley joyous">Works on Umbraco as a Service</span>
<span class="smiley joyous">Works on Umbraco Cloud</span>
}
else
{
<span class="smiley untested">Untested or doesn't work on Umbraco as a Service</span>
<span class="smiley untested">Untested or doesn't work on Umbraco Cloud</span>
}
@foreach (var ver in Model.VersionCompatibilities)
{
+2
View File
@@ -18,6 +18,8 @@
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
@@ -10,7 +10,7 @@ NOTES:
* Compression/Combination/Minification is not enabled unless debug="false" is specified on the 'compiliation' element in the web.config
* A new version will invalidate both client and server cache and create new persisted files
-->
<clientDependency version="1272768233" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">
<clientDependency version="1837202336" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">
<!--
This section is used for Web Forms only, the enableCompositeFiles="true" is optional and by default is set to true.
@@ -81,6 +81,27 @@ You can unsubscribe from your profile on our.umbraco.org
</body>
</notification>
<notification name="MarkAsSolutionReminderSingle"
assembly="NotificationsCore"
type="NotificationsCore.NotificationTypes.MarkAsSolutionReminderSingle">
<subject>Umbraco community: Solution Reminder</subject>
<body>
We noticed that the topic {0} you created in the Umbraco Community Forum does not have a post marked as a solution.
If one of the replies helped answer your question or resolve your issue please mark it as a solution so others can quickly find it.
You can view the topic and replies here: {1}
Thank You from the Umbraco Community!
--------------------------------------------------
You get this notification because you posted to our forum.
You can unsubscribe from your profile on our.umbraco.org
</body>
</notification>
</instant>
</configuration>
@@ -39,7 +39,7 @@
"view": "textstring",
"icon": "icon-quote",
"config": {
"style": "border-left: 3px solid #ccc; padding: 10px; color: #ccc; font-family: serif; font-variant: italic; font-size: 18px",
"style": "border-left: 3px solid #ccc; padding: 10px; color: #ccc; font-family: serif; font-style: italic; font-size: 18px",
"markup": "<blockquote>#value#</blockquote>"
}
}
+6 -6
View File
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AspNetMvc" version="3.0.20105.1" targetFramework="net4" />
<package id="AutoMapper" version="3.0.0" targetFramework="net452" />
<package id="AutoMapper" version="3.3.1" targetFramework="net452" />
<package id="ClientDependency" version="1.9.1" targetFramework="net452" />
<package id="ClientDependency-Mvc" version="1.8.0.0" targetFramework="net451" />
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net452" />
<package id="EasyHttp" version="1.6.29.0" targetFramework="net451" />
<package id="Examine" version="0.1.69.0" targetFramework="net452" />
<package id="Examine" version="0.1.70.0" targetFramework="net452" />
<package id="HtmlAgilityPack" version="1.4.9" targetFramework="net452" />
<package id="ImageProcessor" version="2.4.4.0" targetFramework="net452" />
<package id="ImageProcessor.Web" version="4.6.4.0" targetFramework="net452" />
<package id="ImageProcessor" version="2.4.5.0" targetFramework="net452" />
<package id="ImageProcessor.Web" version="4.6.6.0" targetFramework="net452" />
<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" />
@@ -51,8 +51,8 @@
<package id="System.Collections.Immutable" version="1.1.36" targetFramework="net452" />
<package id="System.Reflection.Metadata" version="1.0.21" targetFramework="net452" />
<package id="Umbraco.ModelsBuilder" version="3.0.4" targetFramework="net452" />
<package id="UmbracoCms" version="7.5.3" targetFramework="net452" />
<package id="UmbracoCms.Core" version="7.5.3" targetFramework="net452" />
<package id="UmbracoCms" version="7.5.4" targetFramework="net452" />
<package id="UmbracoCms.Core" version="7.5.4" targetFramework="net452" />
<package id="UmbracoCms.IdentityExtensions" version="1.0.0" targetFramework="net451" />
<package id="UmbracoCms.IdentityExtensions.Google" version="1.0.0" targetFramework="net451" />
<package id="UrlRewritingNet" version="2.0.7" targetFramework="net452" />
@@ -12,10 +12,10 @@
<div class="umb-media-grid__image-background" ng-if="item.thumbnail || item.extension == 'svg'"></div>
<!-- Image thumbnail -->
<img class="umb-media-grid__item-image" width="{{item.width}}" height="{{item.height}}" ng-if="item.thumbnail" ng-src="{{item.thumbnail}}" alt="{{item.name}}" draggable="false" />
<img class="umb-media-grid__item-image" width="{{item.width}}" height="{{item.height}}" ng-if="item.thumbnail" ng-src="{{item.thumbnail}}" alt="{{item.name}}" title="{{item.name}}" draggable="false" />
<!-- SVG -->
<img class="umb-media-grid__item-image" width="{{item.width}}" height="{{item.height}}" ng-if="!item.thumbnail && item.extension == 'svg'" ng-src="{{item.file}}" alt="{{item.name}}" draggable="false" />
<img class="umb-media-grid__item-image" width="{{item.width}}" height="{{item.height}}" ng-if="!item.thumbnail && item.extension == 'svg'" ng-src="{{item.file}}" alt="{{item.name}}" title="{{item.name}}" draggable="false" />
<!-- Transparent image - fallback - used to keep image proportions on wrapper-->
<img class="umb-media-grid__item-image-placeholder" ng-if="!item.thumbnail && item.extension != 'svg'" src="assets/img/transparent.png" alt="{{item.name}}" draggable="false" />
@@ -1,44 +1,95 @@
<div class="umb-dashboard-grid" ng-controller="Umbraco.Dashboard.StartUpDynamicContentController as vm">
<div style="max-width: 1200px">
<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>
<umb-load-indicator ng-if="vm.loading"></umb-load-indicator>
<div class="row">
<div class="span4">
<a href="http://umbraco.tv/?utm_source=core&utm_medium=dashboard&utm_content=image&utm_campaign=tv" target="_blank" class="nounderline">
<img src="views/dashboard/default/umbracotv.png" alt="Umbraco.TV - Hours of Umbraco Video Tutorials" style="margin: 10px 0 10px 0"/>
</a>
<div class="row clearfix" ng-if="vm.dashboard">
<!-- Sections -->
<div class="grid-section" ng-repeat="section in vm.dashboard.sections">
<div class="{{'span' + section.grid + ' column dash-section'}}">
<!-- rows -->
<div class="row clearfix dash-row" ng-repeat="row in section.rows">
<div class="dash-inner-row">
<!-- areas -->
<div ng-repeat="area in row.areas"
class="{{'span' + area.grid + ' column dash-area'}}">
<div class="dash-inner-area">
<!-- Controls -->
<div ng-repeat="control in area.controls" class="dash-control dash-control-{{control.alias}}">
<div class="dash-inner-control">
<div ng-bind-html-unsafe="control.html"></div>
</div>
</div>
<!-- Controls end -->
</div>
</div>
<!-- Area end -->
</div>
</div>
</div>
<!-- Section end -->
</div>
</div>
<!-- grid container end -->
<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.
<!-- Default content in case we cannot fetch content from the outside -->
<div style="max-width: 1200px" ng-if="vm.showDefault">
<h3><strong>Welcome to The Friendly CMS</strong></h3>
<p style="font-size: 16px; line-height: 1.5; margin-bottom: 30px; max-width: 760px;">
<span>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.</span>
</p>
<h4>Find out more:</h4>
<ul>
<li>Find the answers to your Umbraco questions in <a href="https://our.umbraco.org/documentation/" target="_blank" class="btn-link-underline">our Documentation</a></li>
<li>Ask a question in the <a href="https://our.umbraco.org" target="_blank" class="btn-link-underline">Community Forum</a></li>
<li>Find <a href="https://our.umbraco.org/projects" target="_blank" class="btn-link-underline">an add-on package</a> to help you get going quickly</li>
<li>Watch <a href="https://umbraco.tv" class="btn-link-underline">our tutorial videos</a> (some are free, some require a subscription)</li>
<li>Find out about <a href="https://umbraco.com/products-and-support" target="_blank" class="btn-link-underline">our productivity boosting tools and commercial support</a></li>
<li>Find out about <a href="https://umbraco.com/products/training" target="_blank" class="btn-link-underline">real-life training and certification opportunities</a></li>
</ul>
<div class="row">
<div class="span4">
<a href="http://umbraco.tv/?utm_source=core&utm_medium=dashboard&utm_content=image&utm_campaign=tv" target="_blank" class="nounderline">
<img src="views/dashboard/default/umbracotv.png" alt="Umbraco.TV - Hours of Umbraco Video Tutorials" style="margin: 10px 0 10px 0" />
</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>
<div class="span4 offset1">
<a href="http://our.umbraco.org/?utm_source=core&utm_medium=dashboard&utm_content=image&utm_campaign=our" target="_blank" class="nounderline">
<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="btn-link -underline">
<h4><strong>Our Umbraco - The Friendliest Community</strong></h4>
</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>
</div>
<div class="span4 offset1">
<a href="http://our.umbraco.org/?utm_source=core&utm_medium=dashboard&utm_content=image&utm_campaign=our" target="_blank" class="nounderline">
<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="btn-link -underline">
<h4><strong>Our Umbraco - The Friendliest Community</strong></h4>
</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>
</div>
@@ -77,7 +77,7 @@
<a class="umb-table-body__link" href="{{redirectUrl.destinationUrl}}" target="_blank" title="{{redirectUrl.destinationUrl}}">{{redirectUrl.destinationUrl}}</a>
</div>
<button type="button" class="umb-era-button -gray umb-button--s" ng-click="vm.removeRedirect(redirectUrl)"><localize key="redirectUrls_removeButton">Remove</localize></button>
<button type="button" class="umb-era-button umb-button--s -red" ng-click="vm.removeRedirect(redirectUrl)"><localize key="redirectUrls_removeButton">Remove</localize></button>
</div>
</div>
@@ -199,7 +199,7 @@
<div class="umb-package-details__information-item" ng-if="vm.package.created">
<div class="umb-package-details__information-item-label">Created:</div>
<div class="umb-package-details__information-item-content">{{vm.package.created}}</div>
<div class="umb-package-details__information-item-content">{{vm.package.created | date:'yyyy-MM-dd HH:mm:ss'}}</div>
</div>
<div class="umb-package-details__information-item" ng-if="vm.package.latestVersion">
@@ -1,7 +1,7 @@
<ul class="unstyled">
<li ng-repeat="preval in model.prevalues">
<label class="checkbox">
<input type="radio" ng-model="model.value" value="{{preval}}" /> {{preval}}
</label>
<label class="checkbox">
<input type="radio" ng-model="model.value" value="{{preval.value || preval}}" /> {{preval.label || preval.value || preval}}
</label>
</li>
</ul>
@@ -35,17 +35,24 @@
<div ng-if="currentSection" style="padding-bottom: 50px;">
<umb-control-group label="@general_width">
<div class="grid-size-scaler" >
<div class="grid-size-scaler">
<a href ng-click="scaleDown(currentSection)">
<i class="icon icon-navigation-down"></i>
<i class="icon icon-remove"></i>
</a>
{{currentSection.grid}}
<a href ng-click="scaleUp(currentSection, availableLayoutSpace)">
<i class="icon icon-navigation-up"></i>
<i class="icon icon-add"></i>
</a>
</div>
</umb-control-group>
<umb-control-group hide-label="true">
<i class="icon-delete red"></i>
<a class="btn btn-small btn-link" href="" ng-click="deleteSection(currentSection, currentLayout)">
<localize key="general_delete" class="ng-isolate-scope ng-scope">Delete</localize>
</a>
</umb-control-group>
<umb-control-group hide-label="true">
<ul class="unstyled">
@@ -6,10 +6,15 @@
<p><localize key="grid_addRowConfigurationDetail" /></p>
<div class="alert alert-warn ng-scope" ng-show="nameChanged">
Modifying a row configuration name will result in loss of
data for any existing content that is based on this configuration.
<p>Modifying a row configuration name will result in loss of
data for any existing content that is based on this configuration.</p>
<p><strong>Modifying only the label will not result in data loss.</strong></p>
</div>
<umb-control-group label="@general_label">
<input type="text" ng-model="currentRow.label" placeholder="Overrides name" />
</umb-control-group>
<umb-control-group label="@general_name">
<input type="text" ng-model="currentRow.name" />
</umb-control-group>
@@ -39,19 +44,23 @@
<div ng-if="currentCell" style="padding-bottom: 50px;">
<umb-control-group label="@general_width">
<div class="grid-size-scaler" >
<div class="grid-size-scaler">
<a href ng-click="scaleDown(currentCell)">
<i class="icon icon-remove"></i>
</a>
<div class="grid-size-scaler">
<a href ng-click="scaleDown(currentCell)">
<i class="icon icon-remove"></i>
</a>
{{currentCell.grid}}
<a href ng-click="scaleUp(currentCell, availableRowSpace, true)">
<i class="icon icon-add"></i>
</a>
</div>
</div>
<a href ng-click="scaleUp(currentCell, availableRowSpace, true)">
<i class="icon icon-add"></i>
</a>
</div>
</umb-control-group>
<umb-control-group hide-label="true">
<i class="icon-delete red"></i>
<a class="btn btn-small btn-link" href="" ng-click="deleteArea(currentCell, currentRow)">
<localize key="general_delete" class="ng-isolate-scope ng-scope">Delete</localize>
</a>
</umb-control-group>
<umb-control-group hide-label="true">
<ul class="unstyled">
@@ -80,7 +80,7 @@
<div class="umb-row-title-bar">
<div class=".umb-grid-right">
<div class="umb-row-title">{{row.name}}</div>
<div class="umb-row-title">{{row.label || row.name}}</div>
<div class="umb-grid-has-config" ng-if="row.hasConfig && !sortMode">
<localize key="grid_settingsApplied" />
@@ -282,7 +282,7 @@
<div class="preview-overlay">
</div>
<small>{{layout.name}}</small>
<small>{{layout.label || layout.name}}</small>
</div> <!-- .templates-preview-rows -->
@@ -72,7 +72,7 @@
</div>
<div>
{{layout.name}}<br />
{{layout.label || layout.name}}<br />
<i class="icon-delete red"></i>
<a class="btn btn-small btn-link" href ng-click="deleteLayout($index)">
<localize key="general_delete" />
@@ -44,7 +44,7 @@
center="model.value.focalPoint"
on-image-loaded="imageLoaded">
</umb-image-gravity>
<a href class="btn btn-link btn-crop-delete" ng-show="imageIsLoaded" ng-click="clear()"><i class="icon-delete red"></i> <localize key="content_uploadClear">Remove file</localize></a>
<a href class="btn btn-link btn-crop-delete" ng-click="clear()"><i class="icon-delete red"></i> <localize key="content_uploadClear">Remove file</localize></a>
</div>
<ul class="umb-sortable-thumbnails cropList clearfix">
@@ -4,10 +4,10 @@
<li style="width: 120px; height: 100px; overflow: hidden;" ng-repeat="image in images">
<!-- IMAGE -->
<img ng-src="{{image.thumbnail}}" alt="" ng-show="image.thumbnail" />
<img ng-src="{{image.thumbnail}}" alt="" ng-show="image.thumbnail" title="{{image.name}}" />
<!-- SVG -->
<img ng-if="image.metaData.umbracoExtension.Value === 'svg'" ng-src="{{image.metaData.umbracoFile.Value}}" alt="" />
<img ng-if="image.metaData.umbracoExtension.Value === 'svg'" ng-src="{{image.metaData.umbracoFile.Value}}" alt="" title="{{image.name}}" />
<img ng-if="image.extension === 'svg'" ng-src="{{image.file}}" alt="" />
<!-- FILE -->
File diff suppressed because one or more lines are too long
+4 -3
View File
@@ -147,9 +147,9 @@
<key alias="nodeName">Page Title</key>
<key alias="otherElements">Properties</key>
<key alias="parentNotPublished">This document is published but is not visible because the parent '%0%' is unpublished</key>
<key alias="parentNotPublishedAnomaly">Oops: this document is published but is not in the cache (internal error - see log)</key>
<key alias="getUrlException">Oops: could not get the url (internal error - see log)</key>
<key alias="routeError">Oops: this document is published but its url would collide with content %0%</key>
<key alias="parentNotPublishedAnomaly">This document is published but is not in the cache</key>
<key alias="getUrlException">Could not get the url</key>
<key alias="routeError">This document is published but its url would collide with content %0%</key>
<key alias="publish">Publish</key>
<key alias="publishStatus">Publication Status</key>
<key alias="releaseDate">Publish at</key>
@@ -1356,6 +1356,7 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="xmlDataIntegrityCheckMedia">Media - Total XML: %0%, Total: %1%, Total invalid %2%</key>
<key alias="xmlDataIntegrityCheckContent">Content - Total XML: %0%, Total published: %1%, Total invalid %2%</key>
<key alias="httpsCheckValidCertificate">Your site certificate was marked as valid.</key>
<key alias="httpsCheckInvalidCertificate">Certificate validation error: '%0%'</key>
<key alias="httpsCheckInvalidUrl">Error pinging the URL %0% - '%1%'</key>
<key alias="httpsCheckIsCurrentSchemeHttps">You are currently %0% viewing the site using the HTTPS scheme.</key>
@@ -148,9 +148,9 @@
<key alias="nodeName">Page Title</key>
<key alias="otherElements">Properties</key>
<key alias="parentNotPublished">This document is published but is not visible because the parent '%0%' is unpublished</key>
<key alias="parentNotPublishedAnomaly">Oops: this document is published but is not in the cache (internal error - see log)</key>
<key alias="getUrlException">Oops: could not get the url (internal error - see log)</key>
<key alias="routeError">Oops: this document is published but its url would collide with content %0%</key>
<key alias="parentNotPublishedAnomaly">This document is published but is not in the cache</key>
<key alias="getUrlException">Could not get the url</key>
<key alias="routeError">This document is published but its url would collide with content %0%</key>
<key alias="publish">Publish</key>
<key alias="publishStatus">Publication Status</key>
<key alias="releaseDate">Publish at</key>
@@ -460,6 +460,7 @@
<key alias="install">Install</key>
<key alias="invalid">Invalid</key>
<key alias="justify">Justify</key>
<key alias="label">Label</key>
<key alias="language">Language</key>
<key alias="layout">Layout</key>
<key alias="loading">Loading</key>
@@ -1360,6 +1361,7 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="xmlDataIntegrityCheckMedia">Media - Total XML: %0%, Total: %1%, Total invalid: %2%</key>
<key alias="xmlDataIntegrityCheckContent">Content - Total XML: %0%, Total published: %1%, Total invalid: %2%</key>
<key alias="httpsCheckValidCertificate">Your site certificate was marked as valid.</key>
<key alias="httpsCheckInvalidCertificate">Certificate validation error: '%0%'</key>
<key alias="httpsCheckInvalidUrl">Error pinging the URL %0% - '%1%'</key>
<key alias="httpsCheckIsCurrentSchemeHttps">You are currently %0% viewing the site using the HTTPS scheme.</key>
@@ -499,6 +499,7 @@
<key alias="install">Установить</key>
<key alias="invalid">Неверно</key>
<key alias="justify">Выравнивание</key>
<key alias="label">Название</key>
<key alias="language">Язык</key>
<key alias="layout">Макет</key>
<key alias="loading">Загрузка</key>
@@ -654,6 +655,7 @@
<key alias="xmlDataIntegrityCheckMedia">Медиа - всего в XML: %0%, всего: %1%Б с ошибками: %2%</key>
<key alias="xmlDataIntegrityCheckContent">Содержимое - всего в XML: %0%, всего опубликовано: %1%, с ошибками: %2%</key>
<key alias="httpsCheckValidCertificate">Сертификат Вашего сайта отмечен как проверенный.</key>
<key alias="httpsCheckInvalidCertificate">Ошибка проверки сертификата: '%0%'</key>
<key alias="httpsCheckInvalidUrl">Ошибка проверки адреса URL %0% - '%1%'</key>
<key alias="httpsCheckIsCurrentSchemeHttps">Сейчас Вы %0% просматриваете сайт, используя протокол HTTPS.</key>
@@ -1065,6 +1067,23 @@
Чтобы опубликовать ранее неопубликованные документы среди дочерних, отметьте опцию <em>Включая неопубликованные дочерние документы</em>.
]]></key>
</area>
<area alias="redirectUrls">
<key alias="disableUrlTracker">Остановить отслеживание URL</key>
<key alias="enableUrlTracker">Запустить отслеживание URL</key>
<key alias="originalUrl">Первоначальный URL</key>
<key alias="redirectedTo">Перенаправлен в</key>
<key alias="noRedirects">На данный момент нет ни одного перенаправления</key>
<key alias="noRedirectsDescription">Если опубликованный документ переименовывается или меняет свое расположение в дереве, а следовательно, меняется адрес (URL), автоматически создается перенаправление на новое местоположение этого документа.</key>
<key alias="removeButton">Удалить</key>
<key alias="confirmRemove">Вы уверены, что хотите удалить перенаправление с '%0%' на '%1%'?</key>
<key alias="redirectRemoved">Перенаправление удалено.</key>
<key alias="redirectRemoveError">Ошибка удаления перенаправления.</key>
<key alias="confirmDisable">Вы уверены, что хотите остановить отслеживание URL?</key>
<key alias="disabledConfirm">Отслеживание URL в настоящий момент остановлено.</key>
<key alias="disableError">Ошибка остановки отслеживания URL, более подробные сведения находятся в системном журнале.</key>
<key alias="enabledConfirm">Отслеживание URL в настоящий момент запущено.</key>
<key alias="enableError">Ошибка запуска отслеживания URL, более подробные сведения находятся в системном журнале.</key>
</area>
<area alias="relatedlinks">
<key alias="caption">Заголовок</key>
<key alias="captionPlaceholder">Укажите заголовок</key>
@@ -108,16 +108,14 @@
</div>
</asp:PlaceHolder>
<asp:PlaceHolder ID="SaveAndCancelPlaceholder" runat="server">
<br />
<p>
<div class="btn-toolbar umb-btn-toolbar">
<asp:PlaceHolder ID="SaveAndCancelPlaceholder" runat="server">
<a href="#" class="btn btn-link" onclick="UmbClientMgr.closeModalWindow()"><%=umbraco.ui.Text("cancel")%></a>
<asp:PlaceHolder ID="SavePlaceholder" runat="server">
<asp:Button ID="ValidateAndSave" runat="server" OnClick="ValidateAndSave_Click" />
<em> <%= umbraco.ui.Text("or") %> </em>
<asp:Button ID="ValidateAndSave" runat="server" CssClass="btn btn-primary" Text="Create" OnClick="ValidateAndSave_Click"></asp:Button>
</asp:PlaceHolder>
<a href="#" style="color: blue" onclick="UmbClientMgr.closeModalWindow()"><%=umbraco.ui.Text("general", "cancel", Security.CurrentUser)%></a>
</p>
</asp:PlaceHolder>
</asp:Placeholder>
</div>
</asp:Content>
+119 -29
View File
@@ -5322,9 +5322,42 @@ function startUpVideosDashboardController($scope, xmlhelper, $log, $http) {
});
};
}
angular.module("umbraco").controller("Umbraco.Dashboard.StartupVideosController", startUpVideosDashboardController);
function startUpDynamicContentController(dashboardResource, assetsService) {
var vm = this;
vm.loading = true;
vm.showDefault = false;
//proxy remote css through the local server
assetsService.loadCss( dashboardResource.getRemoteDashboardCssUrl("content") );
dashboardResource.getRemoteDashboardContent("content").then(
function (data) {
vm.loading = false;
//test if we have received valid data
//we capture it like this, so we avoid UI errors - which automatically triggers ui based on http response code
if (data && data.sections) {
vm.dashboard = data;
} else{
vm.showDefault = true;
}
},
function (exception) {
console.error(exception);
vm.loading = false;
vm.showDefault = true;
});
}
angular.module("umbraco").controller("Umbraco.Dashboard.StartUpDynamicContentController", startUpDynamicContentController);
function FormsController($scope, $route, $cookieStore, packageResource, localizationService) {
$scope.installForms = function(){
$scope.state = localizationService.localize("packager_installStateDownloading");
@@ -5500,27 +5533,43 @@ function startupLatestEditsController($scope) {
}
angular.module("umbraco").controller("Umbraco.Dashboard.StartupLatestEditsController", startupLatestEditsController);
function MediaFolderBrowserDashboardController($rootScope, $scope, contentTypeResource) {
function MediaFolderBrowserDashboardController($rootScope, $scope, $location, contentTypeResource, userService) {
//get the system media listview
contentTypeResource.getPropertyTypeScaffold(-96)
.then(function(dt) {
var currentUser = {};
$scope.fakeProperty = {
alias: "contents",
config: dt.config,
description: "",
editor: dt.editor,
hideLabel: true,
id: 1,
label: "Contents:",
validation: {
mandatory: false,
pattern: null
},
value: "",
view: dt.view
};
userService.getCurrentUser().then(function (user) {
currentUser = user;
// check if the user start node is the dashboard
if(currentUser.startMediaId === -1) {
//get the system media listview
contentTypeResource.getPropertyTypeScaffold(-96)
.then(function(dt) {
$scope.fakeProperty = {
alias: "contents",
config: dt.config,
description: "",
editor: dt.editor,
hideLabel: true,
id: 1,
label: "Contents:",
validation: {
mandatory: false,
pattern: null
},
value: "",
view: dt.view
};
});
} else {
// redirect to start node
$location.path("/media/media/edit/" + currentUser.startMediaId);
}
});
@@ -11112,7 +11161,7 @@ angular.module("umbraco")
};
$scope.scaleDown = function(section){
var remove = (section.grid > 1) ? 1 : section.grid;
var remove = (section.grid > 1) ? 1 : 0;
section.grid = section.grid-remove;
};
@@ -11145,9 +11194,12 @@ angular.module("umbraco")
$scope.currentSection = section;
};
$scope.deleteSection = function(index){
$scope.currentTemplate.sections.splice(index, 1);
$scope.deleteSection = function(section, template) {
if ($scope.currentSection === section) {
$scope.currentSection = undefined;
}
var index = template.sections.indexOf(section)
template.sections.splice(index, 1);
};
$scope.closeSection = function(){
@@ -11182,7 +11234,7 @@ function RowConfigController($scope) {
};
$scope.scaleDown = function(section) {
var remove = (section.grid > 1) ? 1 : section.grid;
var remove = (section.grid > 1) ? 1 : 0;
section.grid = section.grid - remove;
};
@@ -11226,9 +11278,14 @@ function RowConfigController($scope) {
}
};
$scope.deleteArea = function(index) {
$scope.currentRow.areas.splice(index, 1);
$scope.deleteArea = function (cell, row) {
if ($scope.currentCell === cell) {
$scope.currentCell = undefined;
}
var index = row.areas.indexOf(cell)
row.areas.splice(index, 1);
};
$scope.closeArea = function() {
$scope.currentCell = undefined;
};
@@ -11852,6 +11909,37 @@ angular.module("umbraco")
}
};
var shouldApply = function(item, itemType, gridItem) {
if (item.applyTo === undefined || item.applyTo === null || item.applyTo === "") {
return true;
}
if (typeof (item.applyTo) === "string") {
return item.applyTo === itemType;
}
if (itemType === "row") {
if (item.applyTo.row === undefined) {
return false;
}
if (item.applyTo.row === null || item.applyTo.row === "") {
return true;
}
var rows = item.applyTo.row.split(',');
return _.indexOf(rows, gridItem.name) !== -1;
} else if (itemType === "cell") {
if (item.applyTo.cell === undefined) {
return false;
}
if (item.applyTo.cell === null || item.applyTo.cell === "") {
return true;
}
var cells = item.applyTo.cell.split(',');
var cellSize = gridItem.grid.toString();
return _.indexOf(cells, cellSize) !== -1;
}
}
$scope.editGridItemSettings = function (gridItem, itemType) {
placeHolder = "{0}";
@@ -11861,8 +11949,8 @@ angular.module("umbraco")
styles = null;
config = angular.copy(gridItem.editor.config.settings);
} else {
styles = _.filter(angular.copy($scope.model.config.items.styles), function (item) { return (item.applyTo === undefined || item.applyTo === itemType); });
config = _.filter(angular.copy($scope.model.config.items.config), function (item) { return (item.applyTo === undefined || item.applyTo === itemType); });
styles = _.filter(angular.copy($scope.model.config.items.styles), function (item) { return shouldApply(item, itemType, gridItem); });
config = _.filter(angular.copy($scope.model.config.items.config), function (item) { return shouldApply(item, itemType, gridItem); });
}
if(angular.isObject(gridItem.config)){
@@ -12437,6 +12525,7 @@ angular.module("umbraco")
layouts:[
{
label: "Headline",
name: "Headline",
areas: [
{
@@ -12446,6 +12535,7 @@ angular.module("umbraco")
]
},
{
label: "Article",
name: "Article",
areas: [
{
@@ -12809,7 +12899,7 @@ angular.module('umbraco')
//NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource
// they contain different data structures so if we need to query against it we need to be aware of this.
mediaHelper.registerFileResolver("Umbraco.ImageCropper", function (property, entity, thumbnail) {
if (property.value.src) {
if (property.value && property.value.src) {
if (thumbnail === true) {
return property.value.src + "?width=500&mode=max&animationprocessmode=first";
@@ -4275,9 +4275,13 @@ angular.module("umbraco.directives")
$timeout(function(){
setDimensions();
});
var offsetX = $overlay[0].offsetLeft;
var offsetY = $overlay[0].offsetTop;
calculateGravity(offsetX, offsetY);
// Make sure we can find the offset values for the overlay(dot) before calculating
// fixes issue with resize event when printing the page (ex. hitting ctrl+p inside the rte)
if($overlay.is(':visible')) {
var offsetX = $overlay[0].offsetLeft;
var offsetY = $overlay[0].offsetTop;
calculateGravity(offsetX, offsetY);
}
});
});
@@ -5338,6 +5342,8 @@ angular.module("umbraco.directives")
var curr = $(event.target); // active tab
var prev = $(event.relatedTarget); // previous tab
$scope.$apply();
for (var c in callbacks) {
callbacks[c].apply(this, [{current: curr, previous: prev}]);
}
@@ -1389,7 +1389,6 @@ function dashboardResource($q, $http, umbRequestHelper) {
*
*/
getDashboard: function (section) {
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
@@ -1397,7 +1396,53 @@ function dashboardResource($q, $http, umbRequestHelper) {
"GetDashboard",
[{ section: section }])),
'Failed to get dashboard ' + section);
},
/**
* @ngdoc method
* @name umbraco.resources.dashboardResource#getRemoteDashboardContent
* @methodOf umbraco.resources.dashboardResource
*
* @description
* Retrieves dashboard content from a remote source for a given section
*
* @param {string} section Alias of section to retrieve dashboard content for
* @returns {Promise} resourcePromise object containing the user array.
*
*/
getRemoteDashboardContent: function (section, baseurl) {
//build request values with optional params
var values = [{ section: section }];
if (baseurl)
{
values.push({ baseurl: baseurl });
}
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
"dashboardApiBaseUrl",
"GetRemoteDashboardContent",
values)), "Failed to get dashboard content");
},
getRemoteDashboardCssUrl: function (section, baseurl) {
//build request values with optional params
var values = [{ section: section }];
if (baseurl) {
values.push({ baseurl: baseurl });
}
return umbRequestHelper.getApiUrl(
"dashboardApiBaseUrl",
"GetRemoteDashboardCss",
values);
}
};
}
+33 -6
View File
@@ -17,6 +17,8 @@ angular.module('umbraco.security.retryQueue', [])
.factory('securityRetryQueue', ['$q', '$log', function ($q, $log) {
var retryQueue = [];
var retryUser = null;
var service = {
// The security service puts its own handler in here!
onItemAddedCallbacks: [],
@@ -35,13 +37,20 @@ angular.module('umbraco.security.retryQueue', [])
}
});
},
pushRetryFn: function(reason, retryFn) {
pushRetryFn: function(reason, userName, retryFn) {
// The reason parameter is optional
if ( arguments.length === 1) {
retryFn = reason;
if ( arguments.length === 2) {
retryFn = userName;
userName = reason;
reason = undefined;
}
if ((retryUser && retryUser !== userName) || userName === null) {
throw new Error('invalid user');
}
retryUser = userName;
// The deferred object that will be resolved or rejected by calling retry or cancel
var deferred = $q.defer();
var retryItem = {
@@ -71,8 +80,19 @@ angular.module('umbraco.security.retryQueue', [])
while(service.hasMore()) {
retryQueue.shift().cancel();
}
retryUser = null;
},
retryAll: function() {
retryAll: function (userName) {
if (retryUser == null) {
return;
}
if (retryUser !== userName) {
service.cancelAll();
return;
}
while(service.hasMore()) {
retryQueue.shift().retry();
}
@@ -118,10 +138,17 @@ angular.module('umbraco.security.interceptor')
//A 401 means that the user is not logged in
if (originalResponse.status === 401) {
// The request bounced because it was not authorized - add a new request to the retry queue
promise = queue.pushRetryFn('unauthorized-server', function retryRequest() {
var userService = $injector.get('userService'); // see above
//Associate the user name with the retry to ensure we retry for the right user
promise = userService.getCurrentUser()
.then(function (user) {
var userName = user ? user.name : null;
//The request bounced because it was not authorized - add a new request to the retry queue
return queue.pushRetryFn('unauthorized-server', userName, function retryRequest() {
// We must use $injector to get the $http service to prevent circular dependency
return $injector.get('$http')(originalResponse.config);
});
});
}
else if (originalResponse.status === 404) {
@@ -2195,7 +2195,7 @@ angular.module('umbraco.services')
* @description
* Opens a content picker tree in a modal, the callback returns an array of selected documents
* @param {Object} options content picker dialog options object
* @param {Boolean} options.multipicker should the picker return one or multiple items
* @param {Boolean} options.multiPicker should the picker return one or multiple items
* @param {Function} options.callback callback function
* @returns {Object} modal object
*/
@@ -8512,7 +8512,7 @@ angular.module('umbraco.services')
loginDialog = null;
if (success) {
securityRetryQueue.retryAll();
securityRetryQueue.retryAll(currentUser.name);
}
else {
securityRetryQueue.cancelAll();
@@ -68,7 +68,7 @@ angular.module('umbraco.mocks').
"view": "textstring",
"icon": "icon-quote",
"config": {
"style": "border-left: 3px solid #ccc; padding: 10px; color: #ccc; font-family: serif; font-variant: italic; font-size: 18px",
"style": "border-left: 3px solid #ccc; padding: 10px; color: #ccc; font-family: serif; font-style: italic; font-size: 18px",
"markup": "<blockquote>#value#</blockquote>"
}
}
@@ -1486,7 +1486,7 @@ angular.module('umbraco.mocks').
"content_nodeName": "Page Title",
"content_otherElements": "Properties",
"content_parentNotPublished": "This document is published but is not visible because the parent '%0%' is unpublished",
"content_parentNotPublishedAnomaly": "Oops: this document is published but is not in the cache (internal error)",
"content_parentNotPublishedAnomaly": "This document is published but is not in the cache",
"content_publish": "Publish",
"content_publishStatus": "Publication Status",
"content_releaseDate": "Publish at",
@@ -389,12 +389,12 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
processData: false,
success: function (data, textStatus) {
if (textStatus == "error") {
alert("Oops. Could not update sort order");
alert("Could not update sort order");
self._getChildNodes();
}
},
error: function(data) {
alert("Oops. Could not update sort order. Err: " + data.statusText);
alert("Could not update sort order. Err: " + data.statusText);
self._getChildNodes();
}
});
+20 -9
View File
@@ -37,9 +37,9 @@
Umbraco web.config configuration documentation can be found here:
http://our.umbraco.org/documentation/using-umbraco/config-files/#webconfig
-->
<add key="umbracoConfigurationStatus" value="7.5.3" />
<add key="umbracoConfigurationStatus" value="7.5.4" />
<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/Hiccup.aspx,~/signalR,~/VSEnterpriseHelper.axd" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/communityLogoGenerator,~/adhoc,~/signalR,~/apidocs" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/communityLogoGenerator,~/adhoc,~/signalR,~/apidocs,~/hangfire" />
<add key="umbracoContentXML" value="~/App_Data/umbraco.config" />
<add key="umbracoStorageDirectory" value="~/App_Data" />
<add key="umbracoPath" value="~/umbraco" />
@@ -310,7 +310,7 @@
<providers>
<remove name="MySqlSiteMapProvider" />
</providers>
</siteMap>
</siteMap>
</system.web>
<!-- ASPNETAJAX -->
<system.web.extensions>
@@ -403,9 +403,9 @@
<!-- Increase the default upload file size limit -->
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
<rewrite>
@@ -451,11 +451,19 @@
</rule>
<rule name="UaaSGeneralForum" patternSyntax="Wildcard">
<match url="forum/umbraco-as-a-service/general-questions/*" />
<action type="Redirect" url="forum/umbraco-as-a-service/{R:1}" redirectType="Permanent" appendQueryString="true" />
<action type="Redirect" url="forum/umbraco-cloud/{R:1}" redirectType="Permanent" appendQueryString="true" />
</rule>
<rule name="UaaSIssuesForum" patternSyntax="Wildcard">
<match url="forum/umbraco-as-a-service/issues/*" />
<action type="Redirect" url="forum/umbraco-as-a-service/{R:1}" redirectType="Permanent" appendQueryString="true" />
<action type="Redirect" url="forum/umbraco-cloud/{R:1}" redirectType="Permanent" appendQueryString="true" />
</rule>
<rule name="UCloudForum" patternSyntax="Wildcard">
<match url="forum/umbraco-as-a-service/*" />
<action type="Redirect" url="forum/umbraco-cloud/{R:1}" redirectType="Permanent" appendQueryString="true" />
</rule>
<rule name="UCloudDocs" patternSyntax="Wildcard">
<match url="Documentation/Umbraco-as-a-Service/*" />
<action type="Redirect" url="Documentation/Umbraco-Cloud/{R:1}" redirectType="Permanent" appendQueryString="true" />
</rule>
<rule name="RedirectRepoSearch" patternSyntax="Wildcard">
<match url="umbraco/api/Search/FindProjects/*" />
@@ -554,7 +562,10 @@
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.0" newVersion="3.3.1.0" />
</dependentAssembly>
<!-- Ensure correct version of HtmlAgilityPack -->
<dependentAssembly>
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
@@ -263,7 +263,7 @@ namespace OurUmbraco.Documentation.Busineslogic.GithubSourcePull
case "umbracoforms":
return 0;
//Umbraco as a Service
//Umbraco Cloud
case "getting-started":
return 0;
case "set-up":
@@ -0,0 +1,103 @@
using System;
using System.IO;
using System.Net.Mail;
using System.Web.Hosting;
using System.Xml;
using OurUmbraco.Forum.Services;
using OurUmbraco.NotificationsWeb;
using Umbraco.Core;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
using Umbraco.Web;
using Umbraco.Web.Security;
namespace OurUmbraco.NotificationsCore.Notifications
{
public class MarkAsSolutionReminder
{
private readonly XmlNode _details;
public MarkAsSolutionReminder()
{
const string notificationName = "MarkAsSolutionReminderSingle";
try
{
var notifications = new XmlDocument();
notifications.Load(Config.ConfigurationFile);
var settings = notifications.SelectSingleNode("//global");
var node = notifications.SelectSingleNode(string.Format("//instant//notification [@name = '{0}']", notificationName));
var details = new XmlDocument();
var cont = details.CreateElement("details");
cont.AppendChild(details.ImportNode(settings, true));
cont.AppendChild(details.ImportNode(node, true));
_details = details.AppendChild(cont);
}
catch (Exception e)
{
LogHelper.Error<MarkAsSolutionReminder>(string.Format("Couldn't get settings for {0}", notificationName), e);
throw;
}
}
public void SendNotification(int topicId, int memberId)
{
try
{
var topicService = new TopicService(ApplicationContext.Current.DatabaseContext);
var topic = topicService.GetById(topicId);
using (ContextHelper.EnsureHttpContext())
{
var memberShipHelper = new MembershipHelper(UmbracoContext.Current);
var member = memberShipHelper.GetById(memberId);
using (var smtpClient = new SmtpClient())
{
var fromEmail = _details.SelectSingleNode("//from/email").InnerText;
var fromName = _details.SelectSingleNode("//from/name").InnerText;
var fromMailAddress = new MailAddress(fromEmail, fromName);
var subject = string.Format("{0} - '{1}'", _details.SelectSingleNode("//subject").InnerText, topic.Title);
var domain = _details.SelectSingleNode("//domain").InnerText;
var body = _details.SelectSingleNode("//body").InnerText;
body = string.Format(body, topic.Title, "https://" + domain + topic.GetUrl());
if (member.GetPropertyValue<bool>("bugMeNot") == false)
{
const string notificationTestFolder = "~/App_Data/NotificationTest";
if (Directory.Exists(HostingEnvironment.MapPath(notificationTestFolder)) == false)
Directory.CreateDirectory(HostingEnvironment.MapPath(notificationTestFolder));
File.AppendAllText(string.Format("{0}/{1}.txt", HostingEnvironment.MapPath(notificationTestFolder), topic.Id),
string.Format("To: {0}{3}Subject: {1}{3}Body: {3}{2}", member.GetPropertyValue<string>("Email"), subject, body, Environment.NewLine));
using (var mailMessage = new MailMessage())
{
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.To.Add(member.GetPropertyValue<string>("Email"));
mailMessage.From = fromMailAddress;
smtpClient.Send(mailMessage);
}
}
}
}
var db = ApplicationContext.Current.DatabaseContext.Database;
var sql = new Sql("UPDATE forumTopics SET markAsSolutionReminderSent = 1 WHERE id = @topicId", new { topicId = topic.Id });
var result = db.Execute(sql);
}
catch (Exception ex)
{
LogHelper.Error<MarkAsSolutionReminder>("Error processing notification", ex);
throw;
}
}
}
}
@@ -0,0 +1,33 @@
using System;
using Hangfire;
using Umbraco.Core;
using Umbraco.Core.Persistence;
namespace OurUmbraco.NotificationsCore.Notifications
{
public class ScheduleHangfireJobs
{
public void MarkAsSolvedReminder()
{
RecurringJob.AddOrUpdate(() => ScheduleTopics(), Cron.HourInterval(12));
}
public void ScheduleTopics()
{
var db = ApplicationContext.Current.DatabaseContext.Database;
var sql = new Sql("SELECT id, memberId FROM forumTopics WHERE answer = 0 AND (markAsSolutionReminderSent IS NULL OR markAsSolutionReminderSent = 0) AND replies > 0 AND updated < getdate() - 7 AND created > '2016-10-01 00:00:00' AND id NOT IN (SELECT topicId FROM notificationMarkAsSolution) ORDER BY created DESC");
var results = db.Query<ReminderTopic>(sql);
var reminder = new MarkAsSolutionReminder();
foreach (var reminderTopic in results)
{
var jobId = BackgroundJob.Schedule(() => reminder.SendNotification(reminderTopic.Id, reminderTopic.MemberId), TimeSpan.FromMinutes(10));
}
}
}
public class ReminderTopic
{
public int Id { get; set; }
public int MemberId { get; set; }
}
}
@@ -1,5 +1,8 @@
using System.Web.Configuration;
using Hangfire;
using Hangfire.SqlServer;
using Microsoft.Owin;
using OurUmbraco.NotificationsCore.Notifications;
using OurUmbraco.Our.GoogleOAuth;
using Owin;
using Umbraco.Web;
@@ -22,7 +25,19 @@ namespace OurUmbraco.Our.GoogleOAuth
var clientId = WebConfigurationManager.AppSettings["GoogleOAuthClientID"];
var secret = WebConfigurationManager.AppSettings["GoogleOAuthSecret"];
UmbracoGoogleAuthExtensions.ConfigureBackOfficeGoogleAuth(app, clientId, secret);
app.ConfigureBackOfficeGoogleAuth(clientId, secret);
// Configure hangfire
var options = new SqlServerStorageOptions { PrepareSchemaIfNecessary = true };
var connectionString = Umbraco.Core.ApplicationContext.Current.DatabaseContext.ConnectionString;
GlobalConfiguration.Configuration.UseSqlServerStorage(connectionString, options);
var dashboardOptions = new DashboardOptions { Authorization = new[] { new UmbracoAuthorizationFilter() } };
app.UseHangfireDashboard("/hangfire", dashboardOptions);
app.UseHangfireServer();
// Schedule jobs
var scheduler = new ScheduleHangfireJobs();
scheduler.MarkAsSolvedReminder();
}
}
}
+62
View File
@@ -37,6 +37,10 @@ namespace OurUmbraco.Our
UseNewForgotPasswordForm();
UseNewMyProjectsOverview();
UseNewRssFeedsOverview();
RenameUaaStoUCloud();
AddMarkAsSolutionReminderSent();
RenameUaaStoUCloud();
AddMarkAsSolutionReminderSent();
}
private void EnsureMigrationsMarkerPathExists()
@@ -756,5 +760,63 @@ namespace OurUmbraco.Our
LogHelper.Error<MigrationsHandler>(string.Format("Migration: '{0}' failed", migrationName), ex);
}
}
private void RenameUaaStoUCloud()
{
var migrationName = MethodBase.GetCurrentMethod().Name;
try
{
var path = HostingEnvironment.MapPath(MigrationMarkersPath + migrationName + ".txt");
if (File.Exists(path))
return;
var contentService = UmbracoContext.Current.Application.Services.ContentService;
var rootContent = contentService.GetRootContent().FirstOrDefault();
if (rootContent != null)
{
var forumContent = rootContent.Children().FirstOrDefault(x => x.Name == "Forum");
if (forumContent != null)
{
var uaasForumContent = forumContent.Children().FirstOrDefault(x => x.Name.ToLowerInvariant() == "Umbraco as a Service".ToLowerInvariant());
if (uaasForumContent != null)
{
uaasForumContent.Name = "Umbraco Cloud";
uaasForumContent.SetValue("forumDescription", "Discussions about Umbraco Cloud.");
var status = contentService.SaveAndPublishWithStatus(uaasForumContent);
status = contentService.SaveAndPublishWithStatus(uaasForumContent);
}
}
}
string[] lines = { "" };
File.WriteAllLines(path, lines);
}
catch (Exception ex)
{
LogHelper.Error<MigrationsHandler>(string.Format("Migration: '{0}' failed", migrationName), ex);
}
}
private void AddMarkAsSolutionReminderSent()
{
var migrationName = MethodBase.GetCurrentMethod().Name;
try
{
var path = HostingEnvironment.MapPath(MigrationMarkersPath + migrationName + ".txt");
if (File.Exists(path))
return;
var db = UmbracoContext.Current.Application.DatabaseContext.Database;
db.Execute("ALTER TABLE [forumTopics] ADD [markAsSolutionReminderSent] [BIT] NULL DEFAULT ((0))");
string[] lines = { "" };
File.WriteAllLines(path, lines);
}
catch (Exception ex)
{
LogHelper.Error<MigrationsHandler>(string.Format("Migration: '{0}' failed", migrationName), ex);
}
}
}
}
+53 -41
View File
@@ -31,16 +31,16 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="AutoMapper, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll</HintPath>
<Reference Include="AutoMapper, Version=3.3.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="AutoMapper.Net4, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll</HintPath>
<Reference Include="AutoMapper.Net4, Version=3.3.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="businesslogic, Version=1.0.6092.24022, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\businesslogic.dll</HintPath>
<Reference Include="businesslogic, Version=1.0.6136.27244, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\businesslogic.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ClientDependency.Core, Version=1.9.1.0, Culture=neutral, processorArchitecture=MSIL">
@@ -51,12 +51,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.6092.24022, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\cms.dll</HintPath>
<Reference Include="cms, Version=1.0.6136.27244, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\cms.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="controls, Version=1.0.6092.24024, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\controls.dll</HintPath>
<Reference Include="controls, Version=1.0.6136.27246, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\controls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CookComputing.XmlRpcV2, Version=2.5.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d, processorArchitecture=MSIL">
@@ -67,8 +67,16 @@
<HintPath>..\packages\EasyHttp.1.6.29.0\lib\net40\EasyHttp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Examine, Version=0.1.69.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.0.1.69.0\lib\Examine.dll</HintPath>
<Reference Include="Examine, Version=0.1.70.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.0.1.70.0\lib\Examine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Hangfire.Core, Version=1.6.6.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Hangfire.Core.1.6.6\lib\net45\Hangfire.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Hangfire.SqlServer, Version=1.6.6.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Hangfire.SqlServer.1.6.6\lib\net45\Hangfire.SqlServer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.4.9.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
@@ -79,16 +87,16 @@
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor, Version=2.4.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.4.4.0\lib\net45\ImageProcessor.dll</HintPath>
<Reference Include="ImageProcessor, Version=2.4.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.4.5.0\lib\net45\ImageProcessor.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor.Web, Version=4.6.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.6.4.0\lib\net45\ImageProcessor.Web.dll</HintPath>
<Reference Include="ImageProcessor.Web, Version=4.6.6.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.6.6.0\lib\net45\ImageProcessor.Web.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="interfaces, Version=1.0.6092.24017, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\interfaces.dll</HintPath>
<Reference Include="interfaces, Version=1.0.6136.27240, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\interfaces.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="JsonFx, Version=2.0.1209.2802, Culture=neutral, PublicKeyToken=315052dd637f8a52, processorArchitecture=MSIL">
@@ -96,7 +104,7 @@
<Private>True</Private>
</Reference>
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\log4net.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\log4net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
@@ -112,7 +120,7 @@
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.ApplicationBlocks.Data, Version=1.0.1559.20655, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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">
@@ -175,8 +183,8 @@
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SQLCE4Umbraco, Version=1.0.6092.24023, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\SQLCE4Umbraco.dll</HintPath>
<Reference Include="SQLCE4Umbraco, Version=1.0.6136.27245, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\SQLCE4Umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
@@ -185,11 +193,11 @@
<Reference Include="System.Core" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\System.Data.SqlServerCe.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\System.Data.SqlServerCe.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Drawing" />
@@ -251,43 +259,43 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="TidyNet, Version=1.0.0.0, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\TidyNet.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\TidyNet.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco, Version=1.0.6092.24026, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.dll</HintPath>
<Reference Include="umbraco, Version=1.0.6136.27248, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Core, Version=1.0.6092.24019, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Umbraco.Core.dll</HintPath>
<Reference Include="Umbraco.Core, Version=1.0.6136.27241, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\Umbraco.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.DataLayer, Version=1.0.6092.24022, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.DataLayer.dll</HintPath>
<Reference Include="umbraco.DataLayer, Version=1.0.6136.27243, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.DataLayer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.editorControls, Version=1.0.6092.24028, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.editorControls.dll</HintPath>
<Reference Include="umbraco.editorControls, Version=1.0.6136.27251, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.editorControls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.IdentityExtensions, Version=1.0.5779.34109, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.IdentityExtensions.1.0.0\lib\net45\Umbraco.IdentityExtensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.MacroEngines, Version=1.0.6092.24028, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.MacroEngines.dll</HintPath>
<Reference Include="umbraco.MacroEngines, Version=1.0.6136.27252, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.MacroEngines.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.providers, Version=1.0.6092.24024, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.providers.dll</HintPath>
<Reference Include="umbraco.providers, Version=1.0.6136.27246, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.providers.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Web.UI, Version=1.0.6092.24029, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Umbraco.Web.UI.dll</HintPath>
<Reference Include="Umbraco.Web.UI, Version=1.0.6136.27253, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\Umbraco.Web.UI.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UmbracoExamine, Version=0.7.0.24023, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\UmbracoExamine.dll</HintPath>
<Reference Include="UmbracoExamine, Version=0.7.0.27245, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\UmbracoExamine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UrlRewritingNet.UrlRewriter, Version=2.0.7.0, Culture=neutral, processorArchitecture=MSIL">
@@ -395,6 +403,8 @@
<Compile Include="NotificationsCore\Notifications\AccountApproved.cs" />
<Compile Include="NotificationsCore\Notifications\NewForumTopic.cs" />
<Compile Include="NotificationsCore\Notifications\NewForumComment.cs" />
<Compile Include="NotificationsCore\Notifications\ScheduleHangfireJobs.cs" />
<Compile Include="NotificationsCore\Notifications\MarkAsSolutionReminder.cs" />
<Compile Include="NotificationsCore\NotificationTypes\NewForumTopic.cs" />
<Compile Include="NotificationsCore\NotificationTypes\NewForumTopicComment.cs" />
<Compile Include="NotificationsCore\SheduledNotification.cs" />
@@ -667,6 +677,7 @@
<DependentUpon>repository.asmx</DependentUpon>
<SubType>Component</SubType>
</Compile>
<Compile Include="UmbracoAuthorizationFilter.cs" />
<Compile Include="Version\Config.cs" />
<Compile Include="Version\uWikiFileVerison.cs" />
<Compile Include="Wiki\Api\WikiController.cs" />
@@ -775,6 +786,7 @@
<PropertyGroup>
<PostBuildEvent></PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets" Condition="Exists('..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
+23
View File
@@ -0,0 +1,23 @@
using System.Web;
using Hangfire.Dashboard;
using Umbraco.Core.Security;
using Umbraco.Web;
using Umbraco.Web.Mvc;
namespace OurUmbraco
{
[UmbracoAuthorize]
public class UmbracoAuthorizationFilter : IDashboardAuthorizationFilter
{
public bool Authorize(DashboardContext context)
{
var http = new HttpContextWrapper(HttpContext.Current);
var ticket = http.GetUmbracoAuthTicket();
http.AuthenticateCurrentRequest(ticket, true);
var user = UmbracoContext.Current.Security.CurrentUser;
return user != null && user.UserType.Alias == "admin";
}
}
}
+8 -5
View File
@@ -1,14 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AutoMapper" version="3.0.0" targetFramework="net452" />
<package id="AutoMapper" version="3.3.1" targetFramework="net452" />
<package id="ClientDependency" version="1.9.1" targetFramework="net452" />
<package id="ClientDependency-Mvc" version="1.8.0.0" targetFramework="net451" />
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net452" />
<package id="EasyHttp" version="1.6.29.0" targetFramework="net451" />
<package id="Examine" version="0.1.69.0" targetFramework="net452" />
<package id="Examine" version="0.1.70.0" targetFramework="net452" />
<package id="Hangfire" version="1.6.6" targetFramework="net452" />
<package id="Hangfire.Core" version="1.6.6" targetFramework="net452" />
<package id="Hangfire.SqlServer" version="1.6.6" targetFramework="net452" />
<package id="HtmlAgilityPack" version="1.4.9" targetFramework="net452" />
<package id="ImageProcessor" version="2.4.4.0" targetFramework="net452" />
<package id="ImageProcessor.Web" version="4.6.4.0" targetFramework="net452" />
<package id="ImageProcessor" version="2.4.5.0" targetFramework="net452" />
<package id="ImageProcessor.Web" version="4.6.6.0" targetFramework="net452" />
<package id="JsonFx" version="2.0.1209.2802" targetFramework="net451" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net452" />
<package id="Markdown" version="1.14.4" targetFramework="net452" />
@@ -39,7 +42,7 @@
<package id="RestSharp" version="104.1" targetFramework="net451" />
<package id="semver" version="1.1.2" targetFramework="net452" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net452" />
<package id="UmbracoCms.Core" version="7.5.3" targetFramework="net452" />
<package id="UmbracoCms.Core" version="7.5.4" targetFramework="net452" />
<package id="UmbracoCms.IdentityExtensions" version="1.0.0" targetFramework="net451" />
<package id="UmbracoCms.IdentityExtensions.Google" version="1.0.0" targetFramework="net451" />
<package id="UrlRewritingNet" version="2.0.7" targetFramework="net452" />
+5
View File
@@ -37,6 +37,11 @@ IF NOT [%npmPath%] == [] GOTO :build
ECHO Change directory to %CD%\..\OurUmbraco.Client\
CD %CD%\..\OurUmbraco.Client\
ECHO.
ECHO Setting node_modules folder to hidden to prevent VS13 from crashing on it while loading the websites project
attrib +h node_modules
ECHO Do npm install and the gulp build
SET npm="%nodePath%\node.exe" "%npmPath%node_modules\npm\bin\npm-cli.js" %*
%npm% cache clean
+31
View File
@@ -19,6 +19,27 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F3A30E
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OurUmbraco", "OurUmbraco\OurUmbraco.csproj", "{A8E5C936-ECAB-45B3-BFDA-D12F680EB2A6}"
EndProject
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "OurUmbraco.Client", "OurUmbraco.Client\", "{1B63C7B3-6FCF-4961-9933-53A591CD16E4}"
ProjectSection(WebsiteProperties) = preProject
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
Debug.AspNetCompiler.VirtualPath = "/localhost_59200"
Debug.AspNetCompiler.PhysicalPath = "OurUmbraco.Client\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_59200\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/localhost_59200"
Release.AspNetCompiler.PhysicalPath = "OurUmbraco.Client\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_59200\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
VWDPort = "59200"
SlnRelativePath = "OurUmbraco.Client\"
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -51,6 +72,16 @@ Global
{A8E5C936-ECAB-45B3-BFDA-D12F680EB2A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A8E5C936-ECAB-45B3-BFDA-D12F680EB2A6}.Release|x86.ActiveCfg = Release|Any CPU
{A8E5C936-ECAB-45B3-BFDA-D12F680EB2A6}.Release|x86.Build.0 = Release|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Debug|x86.ActiveCfg = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Debug|x86.Build.0 = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Release|Mixed Platforms.Build.0 = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Release|x86.ActiveCfg = Debug|Any CPU
{1B63C7B3-6FCF-4961-9933-53A591CD16E4}.Release|x86.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE