Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ec45bfb1d5 | |||
| 1e5a959f25 | |||
| e1529e7f8f | |||
| 47123a7d0a | |||
| a0f27739b7 | |||
| 93474811f1 | |||
| 6f50fad596 | |||
| 538834dcc3 | |||
| 389ddaabb7 | |||
| c7d2d53902 | |||
| 367a98be56 | |||
| 2128fb883a | |||
| 729da39c87 | |||
| 7e82ea86ec | |||
| ddac31b8bc | |||
| 491b5527ae | |||
| e63a9d4b16 | |||
| 6dac0ad4e8 | |||
| 19a737a770 | |||
| c083576ef3 | |||
| 82ba42b1aa | |||
| f39bbc2979 | |||
| f04cf5bb40 | |||
| 12727c7a50 | |||
| 22a382ddad | |||
| 4e00102bad | |||
| 75039c5198 | |||
| cf048ebc01 | |||
| ec6df31b0c | |||
| 9a36eea042 | |||
| e933ea81d7 | |||
| 7ffb0286e3 | |||
| 100fa68a15 | |||
| 612de0e016 | |||
| 427e5b91af | |||
| 3299aee2bd | |||
| 39c1df41a7 |
@@ -63,3 +63,4 @@ OurUmbraco.Site/[Aa]ssets/js/app.min.js
|
|||||||
OurUmbraco.Site/App_Data/migrations/*.txt
|
OurUmbraco.Site/App_Data/migrations/*.txt
|
||||||
OurUmbraco.Site/apidocs/
|
OurUmbraco.Site/apidocs/
|
||||||
OurUmbraco.Site/App_Data/Documentation/
|
OurUmbraco.Site/App_Data/Documentation/
|
||||||
|
OurUmbraco.Site/App_Data/NotificationTest/
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
|
<!--[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 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
|
||||||
<!--[if IE 8]> <html class="no-js ie8 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="features" value="1150">our.umb dev forum - Features</option>
|
||||||
<option class="general" value="5668">Core - General</option>
|
<option class="general" value="5668">Core - General</option>
|
||||||
<option class="4.1feedback" value="5669">Core - 4.1 feedback</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="generalquestions" value="73967">Umbraco Cloud - General Questions</option>
|
||||||
<option class="issues" value="73968">Umbraco as a Service - Issues</option>
|
<option class="issues" value="73968">Umbraco Cloud - Issues</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
|
<!--[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 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
|
||||||
<!--[if IE 8]> <html class="no-js ie8 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="package-compatibility-versions">
|
||||||
|
|
||||||
<div class="versions">
|
<div class="versions">
|
||||||
<span class="smiley joyous">Umbraco as a Service (Works)</span>
|
<span class="smiley joyous">Umbraco Cloud (Works)</span>
|
||||||
<span class="smiley untested">Umbraco as a Service (Not working yet)</span>
|
<span class="smiley untested">Umbraco Cloud (Not working yet)</span>
|
||||||
<span class="smiley untested"> 7.2.x (untested)</span>
|
<span class="smiley untested"> 7.2.x (untested)</span>
|
||||||
<span class="smiley happy"> 7.1.x (91%)</span>
|
<span class="smiley happy"> 7.1.x (91%)</span>
|
||||||
<span class="smiley joyous"> 7.0.x (100%)</span>
|
<span class="smiley joyous"> 7.0.x (100%)</span>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ gulp.task('css', function () {
|
|||||||
.pipe(sass())
|
.pipe(sass())
|
||||||
.on('error', gutil.log)
|
.on('error', gutil.log)
|
||||||
.pipe(autoprefixer('last 1 version', 'ie 9', 'ios 7'))
|
.pipe(autoprefixer('last 1 version', 'ie 9', 'ios 7'))
|
||||||
.pipe(cmq({log: true}))
|
// .pipe(cmq({log: true}))
|
||||||
.pipe(rename({suffix: '.min'}))
|
.pipe(rename({suffix: '.min'}))
|
||||||
.pipe(minifyCss())
|
.pipe(minifyCss())
|
||||||
.pipe(gulp.dest(settings.build + '/assets/css'))
|
.pipe(gulp.dest(settings.build + '/assets/css'))
|
||||||
|
|||||||
@@ -7,17 +7,16 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"gulp": "3.8.x",
|
"gulp": "^3.9.1",
|
||||||
"gulp-util": "2.2.x",
|
"gulp-util": "3.0.x",
|
||||||
"gulp-watch": "0.6.x",
|
"gulp-watch": "0.6.x",
|
||||||
"gulp-minify-css": "1.1.x",
|
"gulp-minify-css": "1.1.x",
|
||||||
"node-sass": "3.2.x",
|
"gulp-sass": "^2.2.0",
|
||||||
"gulp-sass": "2.0.x",
|
"gulp-combine-media-queries": "0.2.x",
|
||||||
"gulp-combine-media-queries": "0.1.x",
|
|
||||||
"gulp-imagemin": "0.6.x",
|
"gulp-imagemin": "0.6.x",
|
||||||
"gulp-autoprefixer": "2.3.1",
|
"gulp-autoprefixer": "^3.1.0",
|
||||||
"gulp-uglify": "0.3.x",
|
"gulp-uglify": "^1.5.3",
|
||||||
"gulp-jshint": "1.6.x",
|
"gulp-jshint": "2.0.0",
|
||||||
"gulp-concat": "2.2.x",
|
"gulp-concat": "2.2.x",
|
||||||
"jshint-stylish": "0.2.x",
|
"jshint-stylish": "0.2.x",
|
||||||
"gulp-clean": "0.3.x",
|
"gulp-clean": "0.3.x",
|
||||||
@@ -28,9 +27,5 @@
|
|||||||
"test": "gulp build --verbose"
|
"test": "gulp build --verbose"
|
||||||
},
|
},
|
||||||
"author": "umbraco",
|
"author": "umbraco",
|
||||||
"license": "MIT",
|
"license": "MIT"
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "http://github.com/devdk/gulp-workflow.git"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
border: none !important;
|
border: none !important;
|
||||||
|
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
@include colorset(alertbar);
|
@include colorset(alertbar);
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
button.button, .button, a.button {
|
button.button, .button, a.button {
|
||||||
background: $color-blue;
|
background: $color-blue;
|
||||||
padding: 14px 40px;
|
padding: 12px 40px;
|
||||||
display: inline-block;
|
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 36px;
|
border-radius: 36px;
|
||||||
@@ -11,8 +15,7 @@ button.button, .button, a.button {
|
|||||||
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 1rem;
|
font-size: 14px;
|
||||||
line-height: 1;
|
|
||||||
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
@@ -103,7 +106,7 @@ button.button, .button, a.button {
|
|||||||
|
|
||||||
|
|
||||||
&.large {
|
&.large {
|
||||||
font-size: 1.2rem;
|
font-size: 1.175rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -260,12 +260,12 @@
|
|||||||
.topic {
|
.topic {
|
||||||
flex: 0 0 100%;
|
flex: 0 0 100%;
|
||||||
|
|
||||||
margin-bottom: .2rem;
|
margin-bottom: 15px;
|
||||||
word-break: break-all;
|
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
flex: 0 0 70%;
|
flex: 1 1 70%;
|
||||||
padding-right: 3px;
|
padding-right: 10px;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,7 +276,8 @@
|
|||||||
flex: 0 0 100%;
|
flex: 0 0 100%;
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
flex: 0 0 30%;
|
flex: 1 1 30%;
|
||||||
|
margin-left: auto;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,7 +288,7 @@
|
|||||||
margin: 0 .5rem 0 0;
|
margin: 0 .5rem 0 0;
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
margin: 0 0 .5rem 0;
|
margin: 0 0 .5rem auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -526,6 +527,7 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0px auto 50px;
|
margin: 0px auto 50px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
padding-top: 10px;
|
||||||
|
|
||||||
&.reply {
|
&.reply {
|
||||||
font-size: .85rem;
|
font-size: .85rem;
|
||||||
|
|||||||
@@ -379,7 +379,8 @@
|
|||||||
border: none;
|
border: none;
|
||||||
background: $color-green;
|
background: $color-green;
|
||||||
color: white;
|
color: white;
|
||||||
padding: 10px;
|
padding: 10px !important;
|
||||||
|
padding-left: 32px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 140px;
|
max-width: 140px;
|
||||||
font-family: $font-family;
|
font-family: $font-family;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
|
||||||
border: 1px solid darken(whitesmoke, 15%);
|
border: 1px solid darken(whitesmoke, 15%);
|
||||||
padding: 20px 6px 20px 6px;
|
padding: 20px 10px 20px 10px;
|
||||||
outline: none;
|
outline: none;
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -529,6 +529,8 @@
|
|||||||
font-size: .7rem;
|
font-size: .7rem;
|
||||||
letter-spacing: .5px;
|
letter-spacing: .5px;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|||||||
@@ -63,11 +63,11 @@ html {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: $sb-desktop / 100% * $sb-width;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
float: right;
|
float: right;
|
||||||
|
max-width: $sb-desktop / 100% * $sb-width;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,11 @@
|
|||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -91,16 +91,20 @@
|
|||||||
|
|
||||||
|
|
||||||
&-head {
|
&-head {
|
||||||
flex-direction: row;
|
display: none;
|
||||||
|
|
||||||
padding: 20px 15px;
|
@media (min-width: $md) {
|
||||||
border-bottom: 1px solid whitesmoke;
|
display: flex;
|
||||||
|
|
||||||
font-size: .8rem;
|
padding: 20px 15px;
|
||||||
text-transform: uppercase;
|
border-bottom: 1px solid whitesmoke;
|
||||||
font-weight: bold;
|
|
||||||
|
|
||||||
letter-spacing: .5px;
|
font-size: .8rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
letter-spacing: .5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -112,19 +116,6 @@
|
|||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
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;
|
padding: 25px 15px;
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: flex-start;
|
||||||
|
|
||||||
border-bottom: 1px solid rgba($color-space, .11);
|
border-bottom: 1px solid rgba($color-space, .11);
|
||||||
|
|
||||||
|
@media (min-width: $md) {
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.topic {
|
.topic {
|
||||||
font-size: .95rem;
|
font-size: 1.15rem;
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
|
|
||||||
|
order: 2;
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
word-break: break-all;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@@ -181,8 +179,9 @@
|
|||||||
|
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
font-size: 1.15rem;
|
h3 {
|
||||||
line-height: 1.3;
|
font-weight: 100;
|
||||||
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: .9rem;
|
font-size: .9rem;
|
||||||
@@ -220,35 +219,62 @@
|
|||||||
|
|
||||||
|
|
||||||
.topic {
|
.topic {
|
||||||
flex: 0 0 50%;
|
order: 2;
|
||||||
margin-right: 5%;
|
|
||||||
|
margin: 10px 0;
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
flex: 0 0 50%;
|
flex: 0 0 50%;
|
||||||
margin-right: 10%;
|
margin: 0 10% 0 0;
|
||||||
|
|
||||||
|
order: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.category {
|
.category {
|
||||||
flex: 0 0 30%;
|
order: 1;
|
||||||
margin-right: 5%;
|
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
flex: 0 0 28%;
|
flex: 0 0 28%;
|
||||||
margin-right: 2%;
|
margin-right: 2%;
|
||||||
|
|
||||||
|
order: 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.posts {
|
.posts {
|
||||||
flex: 0 0 10%;
|
order: 3;
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
@media (max-width: $md) {
|
display: flex;
|
||||||
transform: translate(-6px, 0);
|
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;
|
color: #4f5f63;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: .2px;
|
|
||||||
display: block;
|
display: block;
|
||||||
margin-bottom: .5rem;
|
margin-bottom: .5rem;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
line-height: 1.2;
|
||||||
|
|
||||||
|
@media (min-width: $md) {
|
||||||
|
letter-spacing: .2px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.options {
|
.options {
|
||||||
@@ -352,7 +382,6 @@
|
|||||||
span {
|
span {
|
||||||
position: relative;
|
position: relative;
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
margin-right: 20px;
|
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -373,6 +402,8 @@
|
|||||||
transition: color 150ms ease;
|
transition: color 150ms ease;
|
||||||
font-size: .7rem;
|
font-size: .7rem;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
@media(min-width: $md) {
|
@media(min-width: $md) {
|
||||||
font-size: .9rem;
|
font-size: .9rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,39 +1,31 @@
|
|||||||
.download {
|
.download.latest .dot {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download .dot.progress {
|
||||||
.dot.progress {
|
|
||||||
text-indent: .3rem;
|
text-indent: .3rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 2.8rem;
|
line-height: 2.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.download .dot.progress .counter {
|
||||||
.counter {
|
font-size: 1.1rem;
|
||||||
font-size: 1.1rem;;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
&.latest {
|
|
||||||
|
|
||||||
|
|
||||||
.dot {
|
|
||||||
margin-top: 2rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.explain {
|
.explain {
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
.changes {
|
flex-direction: row;
|
||||||
small {
|
|
||||||
line-height: .5rem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.explain .changes small {
|
||||||
|
line-height: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.chart {
|
.chart {
|
||||||
@@ -41,171 +33,100 @@
|
|||||||
top: -4px;
|
top: -4px;
|
||||||
left: -8px;
|
left: -8px;
|
||||||
z-index: 1;
|
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 {
|
.chart {
|
||||||
|
position: absolute;
|
||||||
|
top: -4px;
|
||||||
i {
|
left: -8px;
|
||||||
font-size: 2.5rem;
|
z-index: 1;
|
||||||
line-height: 5rem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.get-release {
|
.get-release {
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
padding: 2.5rem 0;
|
padding: 3rem 0;
|
||||||
margin: 2.5rem 0;
|
margin: 0 0 3.5rem ;
|
||||||
border-bottom: 1px solid darken(whitesmoke, 5%);
|
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 {
|
.get-release h3 {
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
margin-bottom: .3rem;
|
margin-bottom: .3rem;
|
||||||
color: $color-headline;
|
color: $color-headline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.get-release h3 a {
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
a {
|
&:hover {
|
||||||
text-decoration: none;
|
color: $color-our;
|
||||||
|
|
||||||
|
|
||||||
&: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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.get-release p {
|
||||||
|
color: $color-headline;
|
||||||
.release {
|
font-size: .95rem;
|
||||||
min-height: 160px;
|
line-height: 1.3;
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
|
||||||
&.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 small {
|
||||||
|
font-size: .8rem;
|
||||||
.latest {
|
color: rgba($color-text, .6);
|
||||||
|
|
||||||
|
|
||||||
.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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.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
|
// Single release page
|
||||||
.release{
|
.release {
|
||||||
|
|
||||||
|
|
||||||
.markdown-syntax {
|
.markdown-syntax {
|
||||||
|
|
||||||
|
p, li, ul {
|
||||||
p, li, ul, a {
|
|
||||||
color: $color-headline;
|
color: $color-headline;
|
||||||
font-size: .95rem;
|
font-size: .95rem;
|
||||||
}
|
}
|
||||||
@@ -253,12 +174,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.releaseTable {
|
.releaseTable {
|
||||||
|
|
||||||
|
|
||||||
.col-xs-3 {
|
.col-xs-3 {
|
||||||
|
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
.progress {
|
.progress {
|
||||||
.top {
|
.top {
|
||||||
@@ -282,6 +203,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Progress page
|
// Progress page
|
||||||
.inprogress {
|
.inprogress {
|
||||||
|
|
||||||
@@ -324,6 +246,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Roadmap page
|
// Roadmap page
|
||||||
.plannedreleases {
|
.plannedreleases {
|
||||||
.dot.big {
|
.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 {
|
.forum-thread {
|
||||||
flex: 0 0 100%;
|
flex: 0 0 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
flex: 1 0 49%;
|
flex: 1 0 49%;
|
||||||
@@ -77,6 +78,8 @@ section.forum {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex: 1 0 75%;
|
flex: 1 0 75%;
|
||||||
|
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
padding: 0 10px 0 0;
|
padding: 0 10px 0 0;
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
@@ -89,6 +92,7 @@ section.forum {
|
|||||||
|
|
||||||
.category {
|
.category {
|
||||||
margin: .5rem 0 0;
|
margin: .5rem 0 0;
|
||||||
|
max-width: 95%;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: .75rem;
|
font-size: .75rem;
|
||||||
@@ -132,14 +136,14 @@ section.forum {
|
|||||||
padding: 25px;
|
padding: 25px;
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
border: 1px solid darken(#f6f6f6, 5%);
|
border: 1px solid darken(#f6f6f6, 5%);
|
||||||
transition: box-shadow .2s;
|
transition: box-shadow .2s ease, border-color .2s ease;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: transparent;
|
border-color: white;
|
||||||
@include box_shadow(2);
|
@include box_shadow(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,7 +186,6 @@ section.forum {
|
|||||||
color: #000;
|
color: #000;
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
word-break: break-all;
|
|
||||||
|
|
||||||
@media (min-width: $md) {
|
@media (min-width: $md) {
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
|
|||||||
@@ -15,6 +15,11 @@
|
|||||||
@import 'playground';
|
@import 'playground';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
/* Utilities
|
||||||
|
**/
|
||||||
|
@import 'utilities/flexbox';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
/* Elements
|
/* 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; }
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<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.5\build\UmbracoCms.props" Condition="Exists('..\packages\UmbracoCms.7.5.5\build\UmbracoCms.props')" />
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
@@ -47,32 +47,32 @@
|
|||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="AutoMapper, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="AutoMapper, Version=3.3.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.dll</HintPath>
|
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="AutoMapper.Net4, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="AutoMapper.Net4, Version=3.3.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll</HintPath>
|
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="businesslogic, Version=1.0.6092.24022, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="businesslogic, Version=1.0.6183.23126, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\businesslogic.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\businesslogic.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ClientDependency.Core, Version=1.9.1.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ClientDependency.Core, Version=1.9.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\ClientDependency.1.9.1\lib\net45\ClientDependency.Core.dll</HintPath>
|
<HintPath>..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ClientDependency.Core.Mvc, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ClientDependency.Core.Mvc, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
|
<HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="cms, Version=1.0.6092.24022, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="cms, Version=1.0.6183.23126, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\cms.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\cms.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="controls, Version=1.0.6092.24024, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="controls, Version=1.0.6183.23128, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\controls.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\controls.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="CookComputing.XmlRpcV2, Version=2.5.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d, processorArchitecture=MSIL">
|
<Reference Include="CookComputing.XmlRpcV2, Version=2.5.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d, processorArchitecture=MSIL">
|
||||||
@@ -83,32 +83,32 @@
|
|||||||
<HintPath>..\packages\EasyHttp.1.6.29.0\lib\net40\EasyHttp.dll</HintPath>
|
<HintPath>..\packages\EasyHttp.1.6.29.0\lib\net40\EasyHttp.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Examine, Version=0.1.69.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Examine, Version=0.1.70.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Examine.0.1.69.0\lib\Examine.dll</HintPath>
|
<HintPath>..\packages\Examine.0.1.70.0\lib\Examine.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="HtmlAgilityPack, Version=1.4.9.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
|
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\HtmlAgilityPack.1.4.9\lib\Net45\HtmlAgilityPack.dll</HintPath>
|
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
|
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ImageProcessor, Version=2.4.4.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ImageProcessor, Version=2.4.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\ImageProcessor.2.4.4.0\lib\net45\ImageProcessor.dll</HintPath>
|
<HintPath>..\packages\ImageProcessor.2.4.5.0\lib\net45\ImageProcessor.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ImageProcessor.Web, Version=4.6.4.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="ImageProcessor.Web, Version=4.6.6.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\ImageProcessor.Web.4.6.4.0\lib\net45\ImageProcessor.Web.dll</HintPath>
|
<HintPath>..\packages\ImageProcessor.Web.4.6.6.0\lib\net45\ImageProcessor.Web.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="InfoCaster.Umbraco.UrlTracker, Version=3.11.5900.30099, Culture=neutral, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\UrlTracker.3.11\lib\InfoCaster.Umbraco.UrlTracker.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="interfaces, Version=1.0.6092.24017, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="interfaces, Version=1.0.6183.23122, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\interfaces.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\interfaces.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="JsonFx, Version=2.0.1209.2802, Culture=neutral, PublicKeyToken=315052dd637f8a52, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\JsonFx.2.0.1209.2802\lib\net40\JsonFx.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL">
|
<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.5\lib\log4net.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.ApplicationBlocks.Data, Version=1.0.1559.20655, Culture=neutral">
|
<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.5\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="SQLCE4Umbraco, Version=1.0.6092.24023, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="SQLCE4Umbraco, Version=1.0.6183.23127, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\SQLCE4Umbraco.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\SQLCE4Umbraco.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Collections.Immutable, Version=1.1.36.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Collections.Immutable, Version=1.1.36.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
@@ -214,11 +214,11 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
<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.5\lib\System.Data.SqlServerCe.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
<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.5\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Http" />
|
<Reference Include="System.Net.Http" />
|
||||||
@@ -282,47 +282,47 @@
|
|||||||
<Reference Include="System.EnterpriseServices" />
|
<Reference Include="System.EnterpriseServices" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="TidyNet, Version=1.0.0.0, Culture=neutral">
|
<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.5\lib\TidyNet.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="umbraco, Version=1.0.6092.24026, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="umbraco, Version=1.0.6183.23129, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\umbraco.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Umbraco.Core, Version=1.0.6092.24019, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Umbraco.Core, Version=1.0.6183.23123, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Umbraco.Core.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\Umbraco.Core.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="umbraco.DataLayer, Version=1.0.6092.24022, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="umbraco.DataLayer, Version=1.0.6183.23126, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.DataLayer.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\umbraco.DataLayer.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="umbraco.editorControls, Version=1.0.6092.24028, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="umbraco.editorControls, Version=1.0.6183.23131, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.editorControls.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\umbraco.editorControls.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Umbraco.IdentityExtensions, Version=1.0.5779.34109, Culture=neutral, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\UmbracoCms.IdentityExtensions.1.0.0\lib\net45\Umbraco.IdentityExtensions.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="umbraco.MacroEngines, Version=1.0.6092.24028, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="umbraco.MacroEngines, Version=1.0.6183.23132, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.MacroEngines.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\umbraco.MacroEngines.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Umbraco.ModelsBuilder, Version=3.0.4.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Umbraco.ModelsBuilder, Version=3.0.5.96, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Umbraco.ModelsBuilder.3.0.4\lib\Umbraco.ModelsBuilder.dll</HintPath>
|
<HintPath>..\packages\Umbraco.ModelsBuilder.3.0.5\lib\Umbraco.ModelsBuilder.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="umbraco.providers, Version=1.0.6092.24024, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="umbraco.providers, Version=1.0.6183.23128, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\umbraco.providers.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\umbraco.providers.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Umbraco.Web.UI, Version=1.0.6092.24029, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Umbraco.Web.UI, Version=1.0.6183.23133, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\Umbraco.Web.UI.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\Umbraco.Web.UI.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="UmbracoExamine, Version=0.7.0.24023, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="UmbracoExamine, Version=0.7.0.23127, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\UmbracoCms.Core.7.5.3\lib\UmbracoExamine.dll</HintPath>
|
<HintPath>..\packages\UmbracoCms.Core.7.5.5\lib\UmbracoExamine.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="UrlRewritingNet.UrlRewriter, Version=2.0.7.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="UrlRewritingNet.UrlRewriter, Version=2.0.7.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
@@ -1707,7 +1707,6 @@
|
|||||||
<Content Include="Views\MacroPartials\Navigation\TopNavigation.cshtml" />
|
<Content Include="Views\MacroPartials\Navigation\TopNavigation.cshtml" />
|
||||||
<Content Include="masterpages\ForumMaster.master" />
|
<Content Include="masterpages\ForumMaster.master" />
|
||||||
<Content Include="masterpages\DocumentationMaster.master" />
|
<Content Include="masterpages\DocumentationMaster.master" />
|
||||||
<Content Include="masterpages\AddMarkdownProp.master" />
|
|
||||||
<Content Include="masterpages\ComRepositoryFrontpage.master" />
|
<Content Include="masterpages\ComRepositoryFrontpage.master" />
|
||||||
<Content Include="Assets\css\fonts\icomoon\icomoon.eot" />
|
<Content Include="Assets\css\fonts\icomoon\icomoon.eot" />
|
||||||
<Content Include="Assets\css\fonts\icomoon\icomoon.ttf" />
|
<Content Include="Assets\css\fonts\icomoon\icomoon.ttf" />
|
||||||
@@ -4282,7 +4281,6 @@
|
|||||||
<Content Include="masterpages\ManageSpam.master" />
|
<Content Include="masterpages\ManageSpam.master" />
|
||||||
<Content Include="macroScripts\ManageSpam.cshtml" />
|
<Content Include="macroScripts\ManageSpam.cshtml" />
|
||||||
<Content Include="masterpages\ProjectsVersioned.master" />
|
<Content Include="masterpages\ProjectsVersioned.master" />
|
||||||
<Content Include="macroScripts\ProjectsVersioned.cshtml" />
|
|
||||||
<Content Include="macroScripts\ProjectsVersionList.cshtml" />
|
<Content Include="macroScripts\ProjectsVersionList.cshtml" />
|
||||||
<Content Include="masterpages\ProjectCompatibility.master" />
|
<Content Include="masterpages\ProjectCompatibility.master" />
|
||||||
<Content Include="macroScripts\EditProjectCompatibility.cshtml" />
|
<Content Include="macroScripts\EditProjectCompatibility.cshtml" />
|
||||||
@@ -4409,7 +4407,9 @@
|
|||||||
<Content Include="Views\Partials\Grid\Editors\Embed.cshtml" />
|
<Content Include="Views\Partials\Grid\Editors\Embed.cshtml" />
|
||||||
<Content Include="Views\Partials\Grid\Editors\Base.cshtml" />
|
<Content Include="Views\Partials\Grid\Editors\Base.cshtml" />
|
||||||
<Content Include="Views\Partials\Grid\Bootstrap3.cshtml" />
|
<Content Include="Views\Partials\Grid\Bootstrap3.cshtml" />
|
||||||
|
<Content Include="Views\Partials\Grid\Bootstrap3-Fluid.cshtml" />
|
||||||
<Content Include="Views\Partials\Grid\Bootstrap2.cshtml" />
|
<Content Include="Views\Partials\Grid\Bootstrap2.cshtml" />
|
||||||
|
<Content Include="Views\Partials\Grid\Bootstrap2-Fluid.cshtml" />
|
||||||
<None Include="web.Debug.config">
|
<None Include="web.Debug.config">
|
||||||
<DependentUpon>web.config</DependentUpon>
|
<DependentUpon>web.config</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
@@ -4482,14 +4482,15 @@
|
|||||||
<!-- Only runs if the ClientFiles build folder doesn't yet exist -->
|
<!-- Only runs if the ClientFiles build folder doesn't yet exist -->
|
||||||
<CallTarget Targets="ClientFilesBuild" Condition="!Exists('$(ProjectDir)\..\OurUmbraco.Client\build\assets')" />
|
<CallTarget Targets="ClientFilesBuild" Condition="!Exists('$(ProjectDir)\..\OurUmbraco.Client\build\assets')" />
|
||||||
</Target>
|
</Target>
|
||||||
|
<Import Project="..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets" Condition="Exists('..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<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>
|
<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>
|
</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.5\build\UmbracoCms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.5\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.5\build\UmbracoCms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.5\build\UmbracoCms.targets'))" />
|
||||||
</Target>
|
</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.5\build\UmbracoCms.targets" Condition="Exists('..\packages\UmbracoCms.7.5.5\build\UmbracoCms.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="AfterBuild">
|
<Target Name="AfterBuild">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(memberGuid) == false)
|
if (string.IsNullOrWhiteSpace(memberGuid) == false)
|
||||||
{
|
{
|
||||||
var memberService = UmbracoContext.Current.Application.Services.MemberService;
|
var memberService = ApplicationContext.Current.Services.MemberService;
|
||||||
var member = memberService.GetByKey(new Guid(memberGuid));
|
var member = memberService.GetByKey(new Guid(memberGuid));
|
||||||
|
|
||||||
if (member == null)
|
if (member == null)
|
||||||
|
|||||||
@@ -10,5 +10,5 @@
|
|||||||
<h4><a href="?category=@childPage.Name">@childPage.Name</a></h4>
|
<h4><a href="?category=@childPage.Name">@childPage.Name</a></h4>
|
||||||
</li>
|
</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>
|
</ul>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
}
|
}
|
||||||
if (category != null)
|
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);
|
var searchFilters = new SearchFilters(BooleanOperation.And);
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
@inherits UmbracoViewPage<dynamic>
|
||||||
|
@using Umbraco.Web.Templates
|
||||||
|
@using Newtonsoft.Json.Linq
|
||||||
|
|
||||||
|
@*
|
||||||
|
Razor helpers located at the bottom of this file
|
||||||
|
*@
|
||||||
|
|
||||||
|
@if (Model != null && Model.sections != null)
|
||||||
|
{
|
||||||
|
var oneColumn = ((System.Collections.ICollection)Model.sections).Count == 1;
|
||||||
|
|
||||||
|
<div class="umb-grid">
|
||||||
|
@if (oneColumn)
|
||||||
|
{
|
||||||
|
foreach (var section in Model.sections) {
|
||||||
|
<div class="grid-section">
|
||||||
|
@foreach (var row in section.rows) {
|
||||||
|
@renderRow(row, true);
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row-fluid clearfix">
|
||||||
|
@foreach (var s in Model.sections) {
|
||||||
|
<div class="grid-section">
|
||||||
|
<div class="@("span" + s.grid) column">
|
||||||
|
@foreach (var row in s.rows) {
|
||||||
|
@renderRow(row, false);
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@helper renderRow(dynamic row, bool singleColumn){
|
||||||
|
<div @RenderElementAttributes(row)>
|
||||||
|
@Umbraco.If(singleColumn, "<div class='container-fluid'>")
|
||||||
|
<div class="row-fluid clearfix">
|
||||||
|
@foreach ( var area in row.areas ) {
|
||||||
|
<div class="@("span" + area.grid) column">
|
||||||
|
<div @RenderElementAttributes(area)>
|
||||||
|
@foreach (var control in area.controls) {
|
||||||
|
if (control !=null && control.editor != null && control.editor.view != null ) {
|
||||||
|
<text>@Html.Partial("grid/editors/base", (object)control)</text>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>}
|
||||||
|
</div>
|
||||||
|
@Umbraco.If(singleColumn, "</div>")
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@functions {
|
||||||
|
public static MvcHtmlString RenderElementAttributes(dynamic contentItem)
|
||||||
|
{
|
||||||
|
var attrs = new List<string>();
|
||||||
|
JObject cfg = contentItem.config;
|
||||||
|
|
||||||
|
if(cfg != null)
|
||||||
|
foreach (JProperty property in cfg.Properties())
|
||||||
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
JObject style = contentItem.styles;
|
||||||
|
|
||||||
|
if (style != null) {
|
||||||
|
var cssVals = new List<string>();
|
||||||
|
foreach (JProperty property in style.Properties())
|
||||||
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
if (string.IsNullOrWhiteSpace(propertyValue) == false)
|
||||||
|
{
|
||||||
|
cssVals.Add(property.Name + ":" + propertyValue + ";");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cssVals.Any())
|
||||||
|
attrs.Add("style='" + string.Join(" ", cssVals) + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
return new MvcHtmlString(string.Join(" ", attrs));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -64,19 +64,27 @@
|
|||||||
JObject cfg = contentItem.config;
|
JObject cfg = contentItem.config;
|
||||||
|
|
||||||
if(cfg != null)
|
if(cfg != null)
|
||||||
foreach (JProperty property in cfg.Properties()) {
|
foreach (JProperty property in cfg.Properties())
|
||||||
attrs.Add(property.Name + "=\"" + property.Value.ToString() + "\"");
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
JObject style = contentItem.styles;
|
JObject style = contentItem.styles;
|
||||||
|
|
||||||
if (style != null) {
|
if (style != null) {
|
||||||
var cssVals = new List<string>();
|
var cssVals = new List<string>();
|
||||||
foreach (JProperty property in style.Properties())
|
foreach (JProperty property in style.Properties())
|
||||||
cssVals.Add(property.Name + ":" + property.Value.ToString() + ";");
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
if (string.IsNullOrWhiteSpace(propertyValue) == false)
|
||||||
|
{
|
||||||
|
cssVals.Add(property.Name + ":" + propertyValue + ";");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (cssVals.Any())
|
if (cssVals.Any())
|
||||||
attrs.Add("style=\"" + string.Join(" ", cssVals) + "\"");
|
attrs.Add("style=\"" + string.Join(" ", cssVals) + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MvcHtmlString(string.Join(" ", attrs));
|
return new MvcHtmlString(string.Join(" ", attrs));
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
@inherits UmbracoViewPage<dynamic>
|
||||||
|
@using Umbraco.Web.Templates
|
||||||
|
@using Newtonsoft.Json.Linq
|
||||||
|
|
||||||
|
@*
|
||||||
|
Razor helpers located at the bottom of this file
|
||||||
|
*@
|
||||||
|
|
||||||
|
@if (Model != null && Model.sections != null)
|
||||||
|
{
|
||||||
|
var oneColumn = ((System.Collections.ICollection)Model.sections).Count == 1;
|
||||||
|
|
||||||
|
<div class="umb-grid">
|
||||||
|
@if (oneColumn)
|
||||||
|
{
|
||||||
|
foreach (var section in Model.sections) {
|
||||||
|
<div class="grid-section">
|
||||||
|
@foreach (var row in section.rows) {
|
||||||
|
@renderRow(row);
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
<div class="row clearfix">
|
||||||
|
@foreach (var s in Model.sections) {
|
||||||
|
<div class="grid-section">
|
||||||
|
<div class="col-md-@s.grid column">
|
||||||
|
@foreach (var row in s.rows) {
|
||||||
|
@renderRow(row);
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@helper renderRow(dynamic row){
|
||||||
|
<div @RenderElementAttributes(row)>
|
||||||
|
<div class="row clearfix">
|
||||||
|
@foreach ( var area in row.areas ) {
|
||||||
|
<div class="col-md-@area.grid column">
|
||||||
|
<div @RenderElementAttributes(area)>
|
||||||
|
@foreach (var control in area.controls) {
|
||||||
|
if (control !=null && control.editor != null && control.editor.view != null ) {
|
||||||
|
<text>@Html.Partial("grid/editors/base", (object)control)</text>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@functions {
|
||||||
|
public static MvcHtmlString RenderElementAttributes(dynamic contentItem)
|
||||||
|
{
|
||||||
|
var attrs = new List<string>();
|
||||||
|
JObject cfg = contentItem.config;
|
||||||
|
|
||||||
|
if(cfg != null)
|
||||||
|
foreach (JProperty property in cfg.Properties())
|
||||||
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
JObject style = contentItem.styles;
|
||||||
|
|
||||||
|
if (style != null) {
|
||||||
|
var cssVals = new List<string>();
|
||||||
|
foreach (JProperty property in style.Properties())
|
||||||
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
if (string.IsNullOrWhiteSpace(propertyValue) == false)
|
||||||
|
{
|
||||||
|
cssVals.Add(property.Name + ":" + propertyValue + ";");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cssVals.Any())
|
||||||
|
attrs.Add("style='" + string.Join(" ", cssVals) + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
return new MvcHtmlString(string.Join(" ", attrs));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -64,19 +64,27 @@
|
|||||||
JObject cfg = contentItem.config;
|
JObject cfg = contentItem.config;
|
||||||
|
|
||||||
if(cfg != null)
|
if(cfg != null)
|
||||||
foreach (JProperty property in cfg.Properties()) {
|
foreach (JProperty property in cfg.Properties())
|
||||||
attrs.Add(property.Name + "=\"" + property.Value.ToString() + "\"");
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
JObject style = contentItem.styles;
|
JObject style = contentItem.styles;
|
||||||
|
|
||||||
if (style != null) {
|
if (style != null) {
|
||||||
var cssVals = new List<string>();
|
var cssVals = new List<string>();
|
||||||
foreach (JProperty property in style.Properties())
|
foreach (JProperty property in style.Properties())
|
||||||
cssVals.Add(property.Name + ":" + property.Value.ToString() + ";");
|
{
|
||||||
|
var propertyValue = TemplateUtilities.CleanForXss(property.Value.ToString());
|
||||||
|
if (string.IsNullOrWhiteSpace(propertyValue) == false)
|
||||||
|
{
|
||||||
|
cssVals.Add(property.Name + ":" + propertyValue + ";");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (cssVals.Any())
|
if (cssVals.Any())
|
||||||
attrs.Add("style=\"" + string.Join(" ", cssVals) + "\"");
|
attrs.Add("style=\"" + string.Join(" ", cssVals) + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MvcHtmlString(string.Join(" ", attrs));
|
return new MvcHtmlString(string.Join(" ", attrs));
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
@model dynamic
|
@model dynamic
|
||||||
@using Umbraco.Web.Templates
|
|
||||||
|
|
||||||
@functions {
|
@functions {
|
||||||
public static string EditorView(dynamic contentItem)
|
public static string EditorView(dynamic contentItem)
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
@model dynamic
|
@model dynamic
|
||||||
@using Umbraco.Web.Templates
|
|
||||||
@Html.Raw(Model.value)
|
@Html.Raw(Model.value)
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
@inherits UmbracoViewPage<dynamic>
|
@inherits UmbracoViewPage<dynamic>
|
||||||
@using Umbraco.Web.Templates
|
|
||||||
|
|
||||||
|
|
||||||
@if (Model.value != null)
|
@if (Model.value != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
@model dynamic
|
@model dynamic
|
||||||
@using Umbraco.Web.Templates
|
|
||||||
|
|
||||||
@if (Model.value != null)
|
@if (Model.value != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,10 +4,9 @@
|
|||||||
@if (Model.editor.config.markup != null)
|
@if (Model.editor.config.markup != null)
|
||||||
{
|
{
|
||||||
string markup = Model.editor.config.markup.ToString();
|
string markup = Model.editor.config.markup.ToString();
|
||||||
|
|
||||||
var UmbracoHelper = new UmbracoHelper(UmbracoContext.Current);
|
var UmbracoHelper = new UmbracoHelper(UmbracoContext.Current);
|
||||||
|
|
||||||
markup = markup.Replace("#value#", UmbracoHelper.ReplaceLineBreaksForHtml(Model.value.ToString()));
|
markup = markup.Replace("#value#", UmbracoHelper.ReplaceLineBreaksForHtml(TemplateUtilities.CleanForXss(Model.value.ToString())));
|
||||||
markup = markup.Replace("#style#", Model.editor.config.style.ToString());
|
markup = markup.Replace("#style#", Model.editor.config.style.ToString());
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
|
|||||||
@@ -66,11 +66,11 @@
|
|||||||
<div class="versions">
|
<div class="versions">
|
||||||
@if (Model.WorksOnUaaS)
|
@if (Model.WorksOnUaaS)
|
||||||
{
|
{
|
||||||
<span class="smiley joyous">Works on Umbraco as a Service</span>
|
<span class="smiley joyous">Works on Umbraco Cloud</span>
|
||||||
}
|
}
|
||||||
else
|
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)
|
@foreach (var ver in Model.VersionCompatibilities)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<system.web.webPages.razor>
|
<system.web.webPages.razor>
|
||||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||||
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
<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
|
* 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
|
* 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.
|
This section is used for Web Forms only, the enableCompositeFiles="true" is optional and by default is set to true.
|
||||||
|
|||||||
@@ -31,6 +31,16 @@
|
|||||||
views/dashboard/developer/developerdashboardvideos.html
|
views/dashboard/developer/developerdashboardvideos.html
|
||||||
</control>
|
</control>
|
||||||
</tab>
|
</tab>
|
||||||
|
<tab caption="Health Check">
|
||||||
|
<control>
|
||||||
|
views/dashboard/developer/healthcheck.html
|
||||||
|
</control>
|
||||||
|
</tab>
|
||||||
|
<tab caption="Redirect URL Management">
|
||||||
|
<control>
|
||||||
|
views/dashboard/developer/redirecturls.html
|
||||||
|
</control>
|
||||||
|
</tab>
|
||||||
<tab caption="Examine Management">
|
<tab caption="Examine Management">
|
||||||
<control>
|
<control>
|
||||||
views/dashboard/developer/examinemanagement.html
|
views/dashboard/developer/examinemanagement.html
|
||||||
|
|||||||
@@ -81,6 +81,27 @@ You can unsubscribe from your profile on our.umbraco.org
|
|||||||
</body>
|
</body>
|
||||||
</notification>
|
</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>
|
</instant>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
"view": "textstring",
|
"view": "textstring",
|
||||||
"icon": "icon-quote",
|
"icon": "icon-quote",
|
||||||
"config": {
|
"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>"
|
"markup": "<blockquote>#value#</blockquote>"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,304 +0,0 @@
|
|||||||
@inherits umbraco.MacroEngines.DynamicNodeContext
|
|
||||||
@using System.Globalization
|
|
||||||
@using System.Text.RegularExpressions
|
|
||||||
@using OurUmbraco.MarketPlace.Models
|
|
||||||
@using OurUmbraco.Our
|
|
||||||
@using uForum.Businesslogic
|
|
||||||
@{
|
|
||||||
var queriedVersion = Request.QueryString["v"];
|
|
||||||
int requestedVersion;
|
|
||||||
int.TryParse(queriedVersion, out requestedVersion);
|
|
||||||
Version properVersion = null;
|
|
||||||
|
|
||||||
if (requestedVersion != 0)
|
|
||||||
{
|
|
||||||
properVersion = GetProperVersion(requestedVersion.ToString(CultureInfo.InvariantCulture));
|
|
||||||
}
|
|
||||||
|
|
||||||
var projectGroups = Model.Children.Where("nodeTypeAlias == \"ProjectGroup\"");
|
|
||||||
var projects = new List<UmbracoProject>();
|
|
||||||
|
|
||||||
foreach (var projectGroup in projectGroups)
|
|
||||||
{
|
|
||||||
foreach (var project in projectGroup.Children)
|
|
||||||
{
|
|
||||||
if (project.projectLive)
|
|
||||||
{
|
|
||||||
var versionsList = new List<int>();
|
|
||||||
var compatibleVersions = project.CompatibleVersions.Split(',');
|
|
||||||
foreach (var compatibleVersion in compatibleVersions)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(compatibleVersion) == false && compatibleVersion != "saved")
|
|
||||||
{
|
|
||||||
int version;
|
|
||||||
if (int.TryParse(compatibleVersion.Substring(1), out version))
|
|
||||||
{
|
|
||||||
versionsList.Add(version);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var umbracoProject = new UmbracoProject
|
|
||||||
{
|
|
||||||
Id = project.Id,
|
|
||||||
Name = project.Name,
|
|
||||||
CreateDate = project.CreateDate,
|
|
||||||
CompatibleVersions = versionsList
|
|
||||||
};
|
|
||||||
|
|
||||||
projects.Add(umbracoProject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (requestedVersion == 0)
|
|
||||||
{
|
|
||||||
<div class="deliPromoBox clearfix">
|
|
||||||
@{
|
|
||||||
var vs = new List<int>();
|
|
||||||
foreach (var project in projects.OrderByDescending(x => x.CreateDate))
|
|
||||||
{
|
|
||||||
foreach (var version in project.CompatibleVersions.Where(version => vs.Contains(version) == false))
|
|
||||||
{
|
|
||||||
vs.Add(version);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var v in vs.OrderBy(x => x).Where(x => x.ToString(CultureInfo.InvariantCulture).StartsWith("3") == false && x.ToString(CultureInfo.InvariantCulture).StartsWith("5") == false).Skip(6))
|
|
||||||
{
|
|
||||||
<a href="/Projects/ProjectsVersioned?v=@v">Umbraco @(GetProperVersion(v.ToString(CultureInfo.InvariantCulture)).ToString(2)).x</a><br />
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<h1 class="deliCatHead">Umbraco @(properVersion.ToString(2)).x compatible projects</h1>
|
|
||||||
<p><strong>Note:</strong> packages higher up in this list are more likely to actually work as they have been reported <br />to be working with Umbraco version @(properVersion.ToString(2)).x.</p>
|
|
||||||
<div class="deliPromoBox clearfix">
|
|
||||||
<div class="deliPromoArea">
|
|
||||||
<div class="deliPromoBox new clearfix">
|
|
||||||
|
|
||||||
@{
|
|
||||||
var vs = new List<int>();
|
|
||||||
foreach (var project in projects.OrderByDescending(x => x.CreateDate))
|
|
||||||
{
|
|
||||||
foreach (var version in project.CompatibleVersions.Where(version => vs.Contains(version) == false))
|
|
||||||
{
|
|
||||||
vs.Add(version);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
<ul class="promoOptions">
|
|
||||||
@foreach (var v in vs.OrderBy(x => x).Where(x => x.ToString(CultureInfo.InvariantCulture).StartsWith("3") == false && x.ToString(CultureInfo.InvariantCulture).StartsWith("5") == false).Skip(6))
|
|
||||||
{
|
|
||||||
var itemProperVersion = GetProperVersion(v.ToString(CultureInfo.InvariantCulture)).ToString(2);
|
|
||||||
var currentProperVersion = properVersion.ToString(2);
|
|
||||||
|
|
||||||
<li><a href="?v=@v" class="newnav @(itemProperVersion == currentProperVersion ? "on": null)">@(itemProperVersion).x</a></li>
|
|
||||||
}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
@{
|
|
||||||
var projectIds = projects.Where(x => x.CompatibleVersions.Contains(requestedVersion)).Select(x => x.Id).ToArray();
|
|
||||||
var selection = string.Join(",", projectIds);
|
|
||||||
if (string.IsNullOrWhiteSpace(selection) == false)
|
|
||||||
{
|
|
||||||
var reader = Data.SqlHelper.ExecuteReader("SELECT id, nodeId, downloads FROM wikiFiles WHERE type = 'package' AND nodeId IN (" + selection + ")");
|
|
||||||
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
var project = projects.FirstOrDefault(x => x.Id == reader.GetInt("nodeId"));
|
|
||||||
|
|
||||||
if (project != null)
|
|
||||||
{
|
|
||||||
project.TotalDownloads = project.TotalDownloads + reader.GetInt("downloads");
|
|
||||||
project.FileId = reader.GetInt("id");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
reader = Data.SqlHelper.ExecuteReader("SELECT id, SUM([points]) AS Karma FROM powersProject WHERE id IN (" + selection + ") GROUP BY Id");
|
|
||||||
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
var project = projects.FirstOrDefault(x => x.Id == reader.GetInt("id"));
|
|
||||||
|
|
||||||
if (project != null)
|
|
||||||
{
|
|
||||||
project.Karma = reader.GetInt("Karma");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var i = 1;
|
|
||||||
foreach (var project in projects.OrderBy(x => x.TotalDownloads).Where(x => x.CompatibleVersions.Contains(requestedVersion)))
|
|
||||||
{
|
|
||||||
project.TotalDownloadsRank = i + 5;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 1;
|
|
||||||
foreach (var project in projects.OrderBy(x => x.DownloadsCurrentVersion).Where(x => x.CompatibleVersions.Contains(requestedVersion)))
|
|
||||||
{
|
|
||||||
project.CurrentVersionDownloadsRank = i + 10;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 1;
|
|
||||||
foreach (var project in projects.OrderBy(x => x.Karma).Where(x => x.CompatibleVersions.Contains(requestedVersion)))
|
|
||||||
{
|
|
||||||
project.KarmaRank = i + 5;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var project in projects.Where(x => x.CompatibleVersions.Contains(requestedVersion)))
|
|
||||||
{
|
|
||||||
project.TotalRank = project.TotalDownloadsRank + project.CurrentVersionDownloadsRank + project.KarmaRank;
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileIds = projects.Where(x => x.CompatibleVersions.Contains(requestedVersion)).Select(x => x.FileId).ToArray();
|
|
||||||
selection = string.Join(",", fileIds);
|
|
||||||
|
|
||||||
reader = Data.SqlHelper.ExecuteReader("SELECT * FROM DeliVersionCompatibility WHERE fileID IN(" + selection + ") AND version LIKE '" + GetProperVersion(requestedVersion.ToString(CultureInfo.InvariantCulture)).ToString(2) + ".%'");
|
|
||||||
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
var project = projects.FirstOrDefault(x => x.Id == reader.GetInt("projectId"));
|
|
||||||
|
|
||||||
if (project != null)
|
|
||||||
{
|
|
||||||
project.ReportsCount++;
|
|
||||||
|
|
||||||
if (reader.GetBoolean("isCompatible"))
|
|
||||||
{
|
|
||||||
project.CompatibilityCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var totalProjects = projects.Count(x => x.CompatibleVersions.Contains(requestedVersion));
|
|
||||||
foreach (var project in projects.Where(x => x.CompatibleVersions.Contains(requestedVersion)))
|
|
||||||
{
|
|
||||||
if (project.ReportsCount > 0 && project.CompatibilityCount == 0)
|
|
||||||
{
|
|
||||||
project.TotalRank = -30;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (project.ReportsCount > 0)
|
|
||||||
{
|
|
||||||
project.TotalRank = project.TotalRank + (project.CompatibilityCount + totalProjects);
|
|
||||||
|
|
||||||
float compats = project.CompatibilityCount;
|
|
||||||
float numReps = project.ReportsCount;
|
|
||||||
var percentage = compats/numReps;
|
|
||||||
project.CompatibilityScore = percentage;
|
|
||||||
project.TotalRank = (int) (project.TotalRank*percentage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
<p class="viewAll">Showing @totalProjects projects</p>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
<ul id="newest-projects">
|
|
||||||
|
|
||||||
@foreach (var project in projects.OrderByDescending(x => x.TotalRank).Where(x => x.CompatibleVersions.Contains(requestedVersion)))
|
|
||||||
{
|
|
||||||
var node = Library.NodeById(project.Id);
|
|
||||||
var description = node.Description.ToString();
|
|
||||||
var category = node.Parent.Name;
|
|
||||||
var screenshot = node.DefaultScreenshotPath.ToString();
|
|
||||||
var icon = string.IsNullOrEmpty(screenshot)
|
|
||||||
? "/css/img/package2.png"
|
|
||||||
: string.Format("image={0}?bgcolor=fff&width=50&height=50&format=png", screenshot);
|
|
||||||
|
|
||||||
<li class="clearfix">
|
|
||||||
<div class="deliPackage">
|
|
||||||
<div class="brief">
|
|
||||||
<a href="@node.Url" class="packageIcon" style="background:url(@icon) no-repeat top left;">Package</a>
|
|
||||||
<h3><a href="@node.Url">@project.Name</a></h3>
|
|
||||||
<div class="category">@category</div>
|
|
||||||
<div class="commercialIndicator @node.ListingType">@node.ListingType</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="hiLite">
|
|
||||||
<p><a href="@node.Url">@(ShortenText(description))</a></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="popularity">
|
|
||||||
<div class="karma">
|
|
||||||
@project.Karma <small>Karma</small>
|
|
||||||
</div>
|
|
||||||
<div class="downloads">
|
|
||||||
@project.TotalDownloads <small>Downloads</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@functions {
|
|
||||||
public Version GetProperVersion(string version)
|
|
||||||
{
|
|
||||||
if (version == "4.1.0")
|
|
||||||
{
|
|
||||||
return new Version(version);
|
|
||||||
}
|
|
||||||
|
|
||||||
version = version.Replace(".", "");
|
|
||||||
|
|
||||||
if (version.EndsWith("x"))
|
|
||||||
{
|
|
||||||
version = version.Substring(0, version.IndexOf("x", StringComparison.Ordinal));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version == "410" || version == "4100")
|
|
||||||
{
|
|
||||||
return new Version("4.10");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version == "411" || version == "4110")
|
|
||||||
{
|
|
||||||
return new Version("4.11");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version.EndsWith("x"))
|
|
||||||
{
|
|
||||||
version = version.Substring(0, version.IndexOf("x", StringComparison.Ordinal) - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
var splitVersion = version.ToCharArray();
|
|
||||||
version = string.Join(".", splitVersion);
|
|
||||||
|
|
||||||
if (version.Length == 1)
|
|
||||||
{
|
|
||||||
version = version + ".0";
|
|
||||||
}
|
|
||||||
|
|
||||||
var tempRevision = new Version(version);
|
|
||||||
|
|
||||||
return tempRevision.Revision == -1 ? new Version(tempRevision.Major, tempRevision.Minor, 0) : tempRevision;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string ShortenText(string text)
|
|
||||||
{
|
|
||||||
text = Utils.StripHTML(text).Replace(" ", "");
|
|
||||||
if (text.Length > 210)
|
|
||||||
{
|
|
||||||
|
|
||||||
text = text.Substring(0, 210);
|
|
||||||
text = text.Substring(0, text.LastIndexOf(' '));
|
|
||||||
}
|
|
||||||
|
|
||||||
text = Regex.Replace(text, @"[^a-zA-Z0-9\s.?!&;]", ""); //strip all crap from the listing such as ======================================= !!!!
|
|
||||||
return text.Trim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
|
|
||||||
|
|
||||||
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
|
|
||||||
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
|
|
||||||
|
|
||||||
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
|
|
||||||
<body onload="JavaScript:timedRefresh(5000);">
|
|
||||||
|
|
||||||
<umbraco:Macro runat="server" language="cshtml">
|
|
||||||
@using System.Threading
|
|
||||||
@using System.Diagnostics
|
|
||||||
@using uForum.Businesslogic
|
|
||||||
@{
|
|
||||||
var stopwatch1 = new Stopwatch();
|
|
||||||
stopwatch1.Start();
|
|
||||||
|
|
||||||
var records = 10;
|
|
||||||
if (Request.QueryString["records"] != null)
|
|
||||||
{
|
|
||||||
records = int.Parse(Request.QueryString["records"]);
|
|
||||||
}
|
|
||||||
|
|
||||||
var sql = string.Format("SELECT TOP {0} contentNodeId, versionId FROM [our.umbraco.org.live].[dbo].[cmsPropertyData] WHERE contentNodeId IN (SELECT NodeId FROM [our.umbraco.org.live].[dbo].[cmsMember]) AND contentNodeId NOT IN (SELECT contentNodeId FROM [our.umbraco.org.live].[dbo].[cmsPropertyData] WHERE propertytypeid = 203) GROUP BY contentNodeId, versionId", records);
|
|
||||||
var reader = Data.SqlHelper.ExecuteReader(sql);
|
|
||||||
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
var contentNodeId = reader.GetInt("contentNodeId");
|
|
||||||
var versionId = reader.GetGuid("versionId").ToString();
|
|
||||||
|
|
||||||
var stopwatch2 = new Stopwatch();
|
|
||||||
stopwatch2.Start();
|
|
||||||
Data.SqlHelper.ExecuteNonQuery("INSERT INTO [our.umbraco.org.live].[dbo].[cmsPropertyData] (contentNodeId, versionId, propertyTypeId) VALUES (@id, @versionId, 203)", Data.SqlHelper.CreateParameter("@id", contentNodeId), Data.SqlHelper.CreateParameter("@versionId", versionId));
|
|
||||||
stopwatch2.Stop();
|
|
||||||
<span style="font-size: 9px;">@contentNodeId - @stopwatch2.Elapsed.Ticks</span>
|
|
||||||
}
|
|
||||||
reader.Close();
|
|
||||||
reader.Dispose();
|
|
||||||
|
|
||||||
stopwatch1.Stop();
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
<p>Updated @records records in @stopwatch1.Elapsed.Seconds seconds</p>
|
|
||||||
|
|
||||||
}
|
|
||||||
</umbraco:Macro>
|
|
||||||
<script type="text/JavaScript">
|
|
||||||
<!--
|
|
||||||
function timedRefresh(timeoutPeriod) {
|
|
||||||
setTimeout("location.reload(true);",timeoutPeriod);
|
|
||||||
}
|
|
||||||
// -->
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</asp:Content>
|
|
||||||
|
|
||||||
</asp:Content>
|
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
var release = allReleases.First(x => x.version == currentPage.Name);
|
var release = allReleases.First(x => x.version == currentPage.Name);
|
||||||
var completedIssues = release.issues.Count(x => x.state == "Fixed");
|
var completedIssues = release.issues.Count(x => x.state == "Fixed");
|
||||||
var totalIssues = release.issues.Count();
|
var totalIssues = release.issues.Count();
|
||||||
var percentComplete = Math.Round(((double) 100/totalIssues)*completedIssues);
|
var percentComplete = Math.Round(((double)100 / totalIssues) * completedIssues);
|
||||||
var releaseDateParsed = DateTime.Now;
|
var releaseDateParsed = DateTime.Now;
|
||||||
if (release.releaseDate != string.Empty)
|
if (release.releaseDate != string.Empty)
|
||||||
{
|
{
|
||||||
@@ -103,87 +103,37 @@
|
|||||||
<umbraco:Macro linkToCurrent="1" Alias="Breadcrumb" runat="server"></umbraco:Macro>
|
<umbraco:Macro linkToCurrent="1" Alias="Breadcrumb" runat="server"></umbraco:Macro>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<div class="explain flex items-center">
|
||||||
.release-page .explain h2 {
|
|
||||||
margin-top: 12px;
|
|
||||||
font-size: 2em;
|
|
||||||
margin-bottom: .3rem;
|
|
||||||
color: rgba(0,0,0,.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.release-page .dot {
|
<div class="release-progress-indicator flex flex-wrap items-center">
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.release-page .dot.big {
|
<span class="dot big progress">
|
||||||
position: relative;
|
|
||||||
text-indent: 0;
|
|
||||||
margin: 15px auto 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;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<div class="row explain">
|
|
||||||
<div class="col-sm-2">
|
|
||||||
<span class="dot big progress">
|
|
||||||
<div class="chart" data-percent="<%= percentComplete %>">
|
<div class="chart" data-percent="<%= percentComplete %>">
|
||||||
<p><%= percentComplete %>%</p>
|
<p><%= percentComplete %>%</p>
|
||||||
</div>
|
</div>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
<div class="col-sm-10">
|
|
||||||
<h2>
|
|
||||||
v<umbraco:Item ID="Item1" field="pageName" runat="server" />
|
|
||||||
</h2>
|
|
||||||
<small>Status: <span><%= release.released ? "Released" : "In Progress" %></span></small>
|
|
||||||
<% if (release.released == false)
|
|
||||||
{ %>
|
|
||||||
<h3>
|
|
||||||
|
|
||||||
<span><%= percentComplete %>% complete</span>
|
<span class="release-progress-version flex flex-column">
|
||||||
<span><%= 100 - percentComplete %>% in progress</span>
|
<h2>
|
||||||
</h3>
|
<strong><umbraco:Item ID="Item1" field="pageName" runat="server" /></strong>
|
||||||
<h3>Target release date: <span style="color:#5B5B5B"><%= releaseDate %></span></h3>
|
</h2>
|
||||||
<% } %>
|
<small>Status: <span><%= release.released ? "Released" : "In Progress" %></span></small>
|
||||||
|
<% if (release.released == false)
|
||||||
|
{ %>
|
||||||
|
<h3>
|
||||||
|
|
||||||
<umbraco:Macro ID="Macro5" Language="cshtml" runat="server">
|
<span><%= percentComplete %>% complete</span>
|
||||||
@if(Model.HasValue("releaseNotes")) {
|
<span><%= 100 - percentComplete %>% in progress</span>
|
||||||
<small><p>@Model.releaseNotes</p></small>
|
</h3>
|
||||||
}
|
<h3>Target release date: <span style="color:#5B5B5B"><%= releaseDate %></span></h3>
|
||||||
</umbraco:Macro>
|
<% } %>
|
||||||
|
|
||||||
|
<umbraco:Macro ID="Macro5" Language="cshtml" runat="server">
|
||||||
|
@if(Model.HasValue("releaseNotes")) {
|
||||||
|
<small><p>@Model.releaseNotes</p></small>
|
||||||
|
}
|
||||||
|
</umbraco:Macro>
|
||||||
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -195,32 +145,44 @@
|
|||||||
var countIsOdd = ((downloads.Count() & 1) != 0) ? true : false;
|
var countIsOdd = ((downloads.Count() & 1) != 0) ? true : false;
|
||||||
if(downloads.Any())
|
if(downloads.Any())
|
||||||
{
|
{
|
||||||
<div class="get-release row">
|
<div class="get-release">
|
||||||
@foreach (var item in downloads)
|
|
||||||
{
|
|
||||||
var background = item.IsFirst() ? "/images/releases/download.png" : "/media/2483095/download.png";
|
|
||||||
var width = (item.IsLast() && countIsOdd) ? 895 : 380;
|
|
||||||
var numberOfDownloads = 0;
|
|
||||||
int.TryParse(item.NumberOfDownloads, out numberOfDownloads);
|
|
||||||
numberOfDownloads = numberOfDownloads + OurUmbraco.Our.Utils.GetReleaseDownloadCount(item.Id);
|
|
||||||
if(item.Name.Contains("WebPI") == false)
|
|
||||||
{
|
|
||||||
<div class="release @(item.IsFirst() == false ? "bin" : "zip") col-sm-1">
|
|
||||||
<i class="icon-Download-alt"></i>
|
|
||||||
</div>
|
|
||||||
<div class="release @(item.IsFirst() == false ? "bin" : "zip") col-md-5">
|
|
||||||
|
|
||||||
<h3><a href="/ReleaseDownload?id=@item.Id" onclick="_gaq.push(['_trackEvent', 'Release', 'Download', '@item.Name']);">@item.Name</a></h3>
|
<div class="release-section flex flex-row flex-wrap">
|
||||||
@if(item.IsFirst())
|
|
||||||
{
|
<!-- Download button -->
|
||||||
<p>This is the main Umbraco download, generally you won't need anything else.</p>
|
<div class="release-section-group">
|
||||||
}
|
<h3>Download and install</h3>
|
||||||
<small>Downloaded @numberOfDownloads times - uploaded @item.UploadDate.ToString("D")</small>
|
@foreach (var item in downloads)
|
||||||
</div>
|
{
|
||||||
} else {
|
if (item.IsFirst())
|
||||||
<div style="display: none;"><a href="/ReleaseDownload?id=@item.Id" onclick="_gaq.push(['_trackEvent', 'Release', 'Download', '@item.Name']);">@item.Name</a></div>
|
{
|
||||||
|
var numberOfDownloads = 0;
|
||||||
|
int.TryParse(item.NumberOfDownloads, out numberOfDownloads);
|
||||||
|
numberOfDownloads = numberOfDownloads + OurUmbraco.Our.Utils.GetReleaseDownloadCount(item.Id);
|
||||||
|
<div class="release-section-action">
|
||||||
|
<a class="button green" href="/ReleaseDownload?id=@item.Id" onclick="ga('send', 'event', 'Release', 'Download', '@item.Name');">Download Umbraco @Model.Name</a>
|
||||||
|
</div>
|
||||||
|
<p>This is the main Umbraco download, generally you won't need anything else. You can find installation instructions under <strong>"<a href="/documentation/Getting-Started/Setup/Install/install-umbraco-manually">Getting Started</a>"</strong>.</p>
|
||||||
|
<small>Downloaded @numberOfDownloads times - uploaded @item.UploadDate.ToString("D")</small>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- NuGet installation -->
|
||||||
|
@if(Model.HasNuGet) {
|
||||||
|
<div class="release-section-group">
|
||||||
|
<h3>Install using NuGet</h3>
|
||||||
|
|
||||||
|
<div class="release-section-action">
|
||||||
|
<code><a href="https://nuget.org/packages/UmbracoCms/@Model.Name" onclick="ga('send', 'event', 'Release', 'NuGetClick', '@Model.Name');">PM> Install-Package UmbracoCms -Version @Model.Name</a></code>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<p>Installs Umbraco Cms in your Visual Studio ASP.NET project. To install Umbraco Cms, run the above command in the Package Manager Console. <a target="_blank" href="/documentation/Getting-Started/Setup/Install/install-umbraco-with-nuget">Read more in the documentation</a>.</p>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,7 +193,7 @@
|
|||||||
<div class="col-md-5">
|
<div class="col-md-5">
|
||||||
|
|
||||||
<% if (release.releaseDescription != string.Empty && currentPage.HasValue("bodyText") == false)
|
<% if (release.releaseDescription != string.Empty && currentPage.HasValue("bodyText") == false)
|
||||||
{ %>
|
{ %>
|
||||||
<span>
|
<span>
|
||||||
<h2>Summary</h2>
|
<h2>Summary</h2>
|
||||||
<p><span><%= release.releaseDescription %></span></p>
|
<p><span><%= release.releaseDescription %></span></p>
|
||||||
@@ -265,7 +227,9 @@
|
|||||||
<a href="http://issues.umbraco.org/issue/<%= issue.id %>" target="_blank"><%= issue.id %> - <%= issue.title %></a>
|
<a href="http://issues.umbraco.org/issue/<%= issue.id %>" target="_blank"><%= issue.id %> - <%= issue.title %></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<% } } else { %>
|
<% }
|
||||||
|
}
|
||||||
|
else { %>
|
||||||
<p>No items to display</p>
|
<p>No items to display</p>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
@@ -283,7 +247,9 @@
|
|||||||
<a href="http://issues.umbraco.org/issue/<%= issue.id %>" target="_blank"><%= issue.id %> - <%= issue.title %></a>
|
<a href="http://issues.umbraco.org/issue/<%= issue.id %>" target="_blank"><%= issue.id %> - <%= issue.title %></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<% } } else { %>
|
<% }
|
||||||
|
}
|
||||||
|
else { %>
|
||||||
<p>No items to display</p>
|
<p>No items to display</p>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
@@ -301,7 +267,9 @@
|
|||||||
<a href="http://issues.umbraco.org/issue/<%= issue.id %>" target="_blank"><%= issue.id %> - <%= issue.title %></a>
|
<a href="http://issues.umbraco.org/issue/<%= issue.id %>" target="_blank"><%= issue.id %> - <%= issue.title %></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<% } } else { %>
|
<% }
|
||||||
|
}
|
||||||
|
else { %>
|
||||||
<p>No items to display</p>
|
<p>No items to display</p>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
@@ -337,16 +305,42 @@
|
|||||||
<p>The source for <a href="@Model.LinkToChangeset">this specific release is available for download from the repository</a> (click the "ZIP" button).</p>
|
<p>The source for <a href="@Model.LinkToChangeset">this specific release is available for download from the repository</a> (click the "ZIP" button).</p>
|
||||||
}
|
}
|
||||||
|
|
||||||
@if(Model.HasNuGet) {
|
<!-- Other files -->
|
||||||
<h2>Also available on NuGet</h2>
|
@{
|
||||||
|
var downloads = Model.ReleaseDownload.Where("Visible");
|
||||||
|
var countIsOdd = ((downloads.Count() & 1) != 0) ? true : false;
|
||||||
|
if(downloads.Any())
|
||||||
|
{
|
||||||
|
|
||||||
<div class="nuget-badge">
|
<div class="release-other-files">
|
||||||
<a href="https://nuget.org/packages/UmbracoCms/@Model.Name">
|
<h2>All files</h2>
|
||||||
<p><code>PM> Install-Package UmbracoCms -Version @Model.Name</code></p>
|
|
||||||
</a>
|
@foreach (var item in downloads)
|
||||||
|
{
|
||||||
|
var background = item.IsFirst() ? "/images/releases/download.png" : "/media/2483095/download.png";
|
||||||
|
var width = (item.IsLast() && countIsOdd) ? 895 : 380;
|
||||||
|
var numberOfDownloads = 0;
|
||||||
|
int.TryParse(item.NumberOfDownloads, out numberOfDownloads);
|
||||||
|
numberOfDownloads = numberOfDownloads + OurUmbraco.Our.Utils.GetReleaseDownloadCount(item.Id);
|
||||||
|
if(item.Name.Contains("WebPI") == false)
|
||||||
|
{
|
||||||
|
<div class="release @(item.IsFirst() == false ? "bin" : "zip")">
|
||||||
|
<div><strong><a href="/ReleaseDownload?id=@item.Id" onclick="ga('send', 'event', 'Release', 'Download', '@item.Name');">@item.Name</a></strong></div>
|
||||||
|
@if(item.IsFirst())
|
||||||
|
{
|
||||||
|
<p>This is the main Umbraco download, generally you won't need anything else.</p>
|
||||||
|
}
|
||||||
|
<small>Downloaded @numberOfDownloads times - uploaded @item.UploadDate.ToString("D")</small>
|
||||||
|
</div>
|
||||||
|
} else {
|
||||||
|
<div style="display: none;"><a href="/ReleaseDownload?id=@item.Id" onclick="ga('send', 'event', 'Release', 'Download', '@item.Name');">@item.Name</a></div>
|
||||||
|
}
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</umbraco:Macro>
|
</umbraco:Macro>
|
||||||
|
|
||||||
</div><!-- col-md-5 col-md-offset-2 -->
|
</div><!-- col-md-5 col-md-offset-2 -->
|
||||||
|
|||||||
@@ -29,10 +29,12 @@
|
|||||||
currentMember = member.Id;
|
currentMember = member.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
Application.SqlHelper.ExecuteNonQuery(
|
using (var sqlHelper = Application.SqlHelper)
|
||||||
@"insert into projectDownload(projectId,memberId,timestamp) values(@id, @memberId, getdate())",
|
{
|
||||||
Application.SqlHelper.CreateParameter("@id", docId),
|
sqlHelper.ExecuteNonQuery(@"insert into projectDownload(projectId,memberId,timestamp) values(@id, @memberId, getdate())",
|
||||||
Application.SqlHelper.CreateParameter("@memberId", currentMember));
|
sqlHelper.CreateParameter("@id", docId),
|
||||||
|
sqlHelper.CreateParameter("@memberId", currentMember));
|
||||||
|
}
|
||||||
|
|
||||||
Response.Redirect(link, false);
|
Response.Redirect(link, false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,30 +151,30 @@ The five people with most votes from 15 March until 15 April 2011 will become 20
|
|||||||
<%}else{
|
<%}else{
|
||||||
|
|
||||||
|
|
||||||
// Umbraco.Forms.Data.Storage.RecordStorage s = new Umbraco.Forms.Data.Storage.RecordStorage();
|
// Umbraco.Forms.Data.Storage.RecordStorage s = new Umbraco.Forms.Data.Storage.RecordStorage();
|
||||||
//var all = s.GetAllRecords(new Guid("12c58e28-ca9e-4e05-9849-8ae8ed555109"));
|
//var all = s.GetAllRecords(new Guid("12c58e28-ca9e-4e05-9849-8ae8ed555109"));
|
||||||
|
|
||||||
//var voted = all.Find(r => r.MemberKey.ToString() == umbraco.cms.businesslogic.member.Member.GetCurrentMember().Id.ToString());
|
//var voted = all.Find(r => r.MemberKey.ToString() == umbraco.cms.businesslogic.member.Member.GetCurrentMember().Id.ToString());
|
||||||
|
|
||||||
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.AppSettings["umbracoDbDSN"]);
|
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.AppSettings["umbracoDbDSN"]);
|
||||||
System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand(
|
System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand(
|
||||||
"SELECT 1 FROM UFRecords where form = '12C58E28-CA9E-4E05-9849-8AE8ED555109' and memberkey = @memberkey",
|
"SELECT 1 FROM UFRecords where form = '12C58E28-CA9E-4E05-9849-8AE8ED555109' and memberkey = @memberkey",
|
||||||
conn);
|
conn);
|
||||||
comm.Parameters.AddWithValue("@memberkey",umbraco.cms.businesslogic.member.Member.GetCurrentMember().Id);
|
comm.Parameters.AddWithValue("@memberkey",umbraco.cms.businesslogic.member.Member.GetCurrentMember().Id);
|
||||||
|
|
||||||
conn.Open();
|
conn.Open();
|
||||||
bool membervoted = false;
|
bool membervoted = false;
|
||||||
System.Data.SqlClient.SqlDataReader rdr = comm.ExecuteReader();
|
using (var reader = comm.ExecuteReader())
|
||||||
|
|
||||||
while (rdr.Read())
|
|
||||||
{
|
{
|
||||||
membervoted = true;
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
membervoted = true;
|
||||||
|
}
|
||||||
|
conn.Close();
|
||||||
}
|
}
|
||||||
conn.Close();
|
|
||||||
|
|
||||||
|
if (membervoted == false)
|
||||||
if (membervoted == false)
|
{
|
||||||
{
|
|
||||||
%>
|
%>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="AspNetMvc" version="3.0.20105.1" targetFramework="net4" />
|
<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" version="1.9.2" targetFramework="net452" />
|
||||||
<package id="ClientDependency-Mvc" version="1.8.0.0" targetFramework="net451" />
|
<package id="ClientDependency-Mvc" version="1.8.0.0" targetFramework="net451" />
|
||||||
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net452" />
|
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net452" />
|
||||||
<package id="EasyHttp" version="1.6.29.0" targetFramework="net451" />
|
<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="HtmlAgilityPack" version="1.4.9.5" targetFramework="net452" />
|
||||||
<package id="ImageProcessor" version="2.4.4.0" targetFramework="net452" />
|
<package id="ImageProcessor" version="2.4.5.0" targetFramework="net452" />
|
||||||
<package id="ImageProcessor.Web" version="4.6.4.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" version="1.4.1" targetFramework="net451" />
|
||||||
<package id="jQuery.Validation" version="1.8" targetFramework="net451" />
|
<package id="jQuery.Validation" version="1.8" targetFramework="net451" />
|
||||||
<package id="jQuery.Validation.Unobtrusive" version="2.0.20710.0" targetFramework="net451" />
|
<package id="jQuery.Validation.Unobtrusive" version="2.0.20710.0" targetFramework="net451" />
|
||||||
@@ -50,9 +50,9 @@
|
|||||||
<package id="SharpZipLib" version="0.86.0" targetFramework="net452" />
|
<package id="SharpZipLib" version="0.86.0" targetFramework="net452" />
|
||||||
<package id="System.Collections.Immutable" version="1.1.36" targetFramework="net452" />
|
<package id="System.Collections.Immutable" version="1.1.36" targetFramework="net452" />
|
||||||
<package id="System.Reflection.Metadata" version="1.0.21" 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="Umbraco.ModelsBuilder" version="3.0.5" targetFramework="net452" />
|
||||||
<package id="UmbracoCms" version="7.5.3" targetFramework="net452" />
|
<package id="UmbracoCms" version="7.5.5" targetFramework="net452" />
|
||||||
<package id="UmbracoCms.Core" version="7.5.3" targetFramework="net452" />
|
<package id="UmbracoCms.Core" version="7.5.5" targetFramework="net452" />
|
||||||
<package id="UmbracoCms.IdentityExtensions" version="1.0.0" targetFramework="net451" />
|
<package id="UmbracoCms.IdentityExtensions" version="1.0.0" targetFramework="net451" />
|
||||||
<package id="UmbracoCms.IdentityExtensions.Google" 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" />
|
<package id="UrlRewritingNet" version="2.0.7" targetFramework="net452" />
|
||||||
|
|||||||
@@ -118,6 +118,8 @@
|
|||||||
<div class="umb-panel-body with-footer">
|
<div class="umb-panel-body with-footer">
|
||||||
|
|
||||||
<umb-file-dropzone
|
<umb-file-dropzone
|
||||||
|
ng-if="acceptedMediatypes.length > 0"
|
||||||
|
accepted-mediatypes="acceptedMediatypes"
|
||||||
hide-dropzone="{{!activeDrag && images.length > 0}}"
|
hide-dropzone="{{!activeDrag && images.length > 0}}"
|
||||||
parent-id="{{currentFolder.id}}"
|
parent-id="{{currentFolder.id}}"
|
||||||
files-uploaded="onUploadComplete"
|
files-uploaded="onUploadComplete"
|
||||||
|
|||||||
@@ -18,18 +18,9 @@
|
|||||||
</umb-control-group>
|
</umb-control-group>
|
||||||
|
|
||||||
<umb-control-group label="@content_target">
|
<umb-control-group label="@content_target">
|
||||||
<select class="umb-editor umb-dropdown" ng-model="model.target.target">
|
<label class="checkbox no-indent">
|
||||||
<option value=""></option>
|
<input type="checkbox" ng-model="model.target.target" ng-true-value="_blank" ng-false-value="" /> <localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize>
|
||||||
<option value="_blank">
|
</label>
|
||||||
<localize key="defaultdialogs_openInNewWindow">Opens the linked document in a new window or tab</localize>
|
|
||||||
</option>
|
|
||||||
<option value="_top">
|
|
||||||
<localize key="defaultdialogs_openInFullBody">Opens the linked document in the full body of the window</localize>
|
|
||||||
</option>
|
|
||||||
<option value="_parent">
|
|
||||||
<localize key="defaultdialogs_openInParentFrame">Opens the linked document in the parent frame</localize>
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</umb-control-group>
|
</umb-control-group>
|
||||||
|
|
||||||
<div class="umb-control-group">
|
<div class="umb-control-group">
|
||||||
|
|||||||
@@ -63,6 +63,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<umb-file-dropzone
|
<umb-file-dropzone
|
||||||
|
ng-if="acceptedMediatypes.length > 0"
|
||||||
|
accepted-mediatypes="acceptedMediatypes"
|
||||||
parent-id="{{currentFolder.id}}"
|
parent-id="{{currentFolder.id}}"
|
||||||
files-uploaded="onUploadComplete"
|
files-uploaded="onUploadComplete"
|
||||||
files-queued="onFilesQueue"
|
files-queued="onFilesQueue"
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<div ng-controller="Umbraco.Overlays.MediaTypePickerController">
|
||||||
|
|
||||||
|
<ul class="umb-card-grid">
|
||||||
|
<li
|
||||||
|
ng-repeat="mediatype in model.acceptedMediatypes | orderBy:'name'"
|
||||||
|
ng-click="select(mediatype)"
|
||||||
|
class="-three-in-row">
|
||||||
|
<a class="umb-card-grid-item" href="" title="{{mediatype.name}}">
|
||||||
|
<i class="{{ mediatype.icon }}"></i>
|
||||||
|
{{ mediatype.name }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -12,10 +12,10 @@
|
|||||||
<div class="umb-media-grid__image-background" ng-if="item.thumbnail || item.extension == 'svg'"></div>
|
<div class="umb-media-grid__image-background" ng-if="item.thumbnail || item.extension == 'svg'"></div>
|
||||||
|
|
||||||
<!-- Image thumbnail -->
|
<!-- 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 -->
|
<!-- 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-->
|
<!-- 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" />
|
<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" />
|
||||||
|
|||||||
@@ -98,4 +98,11 @@
|
|||||||
|
|
||||||
</ng-form>
|
</ng-form>
|
||||||
|
|
||||||
|
<umb-overlay
|
||||||
|
ng-if="mediatypepickerOverlay.show"
|
||||||
|
model="mediatypepickerOverlay"
|
||||||
|
view="mediatypepickerOverlay.view"
|
||||||
|
position="right">
|
||||||
|
</umb-overlay>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -51,13 +51,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<umb-pane>
|
<umb-pane>
|
||||||
<umb-control-group label="Relate to original">
|
<umb-control-group localize="label" label="@defaultdialogs_relateToOriginalLabel">
|
||||||
<input type="checkbox" ng-model="$parent.$parent.relateToOriginal" />
|
<input type="checkbox" ng-model="$parent.$parent.relateToOriginal"/>
|
||||||
</umb-control-group>
|
</umb-control-group>
|
||||||
|
|
||||||
</umb-pane>
|
</umb-pane>
|
||||||
|
|
||||||
<umb-pane>
|
<umb-pane>
|
||||||
<umb-control-group label="Include descendants">
|
<umb-control-group localize="label" label="@defaultdialogs_includeDescendants">
|
||||||
<input type="checkbox" ng-model="$parent.$parent.recursive" />
|
<input type="checkbox" ng-model="$parent.$parent.recursive" />
|
||||||
</umb-control-group>
|
</umb-control-group>
|
||||||
</umb-pane>
|
</umb-pane>
|
||||||
|
|||||||
@@ -3,7 +3,9 @@
|
|||||||
<div class="umb-pane">
|
<div class="umb-pane">
|
||||||
|
|
||||||
<p class="abstract" ng-hide="success">
|
<p class="abstract" ng-hide="success">
|
||||||
Choose where to move <strong>{{currentNode.name}}</strong> to in the tree structure below
|
<localize key="actions_chooseWhereToMove">Choose where to move</localize>
|
||||||
|
<strong>{{currentNode.name}}</strong>
|
||||||
|
<localize key="actions_toInTheTreeStructureBelow">to in the tree structure below</localize>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="umb-loader-wrapper" ng-show="busy">
|
<div class="umb-loader-wrapper" ng-show="busy">
|
||||||
|
|||||||
@@ -1,44 +1,95 @@
|
|||||||
|
<div class="umb-dashboard-grid" ng-controller="Umbraco.Dashboard.StartUpDynamicContentController as vm">
|
||||||
|
|
||||||
<div style="max-width: 1200px">
|
<umb-load-indicator ng-if="vm.loading"></umb-load-indicator>
|
||||||
<h3><strong>Welcome to The Friendly CMS</strong></h3>
|
|
||||||
<p style="font-size: 16px; line-height: 1.5; margin-bottom: 30px; max-width: 760px;">Thank you for choosing Umbraco - we think this could be the beginning of something beautiful. While it may feel overwhelming at first, we've done a lot to make the learning curve as smooth and fast as possible:</p>
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row clearfix" ng-if="vm.dashboard">
|
||||||
<div class="span4">
|
<!-- Sections -->
|
||||||
<a href="http://umbraco.tv/?utm_source=core&utm_medium=dashboard&utm_content=image&utm_campaign=tv" target="_blank" class="nounderline">
|
<div class="grid-section" ng-repeat="section in vm.dashboard.sections">
|
||||||
<img src="views/dashboard/default/umbracotv.png" alt="Umbraco.TV - Hours of Umbraco Video Tutorials" style="margin: 10px 0 10px 0"/>
|
<div class="{{'span' + section.grid + ' column dash-section'}}">
|
||||||
</a>
|
|
||||||
|
<!-- 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">
|
<!-- Default content in case we cannot fetch content from the outside -->
|
||||||
<h4> <strong>Umbraco.TV - Learn from the source!</strong> </h4>
|
<div style="max-width: 1200px" ng-if="vm.showDefault">
|
||||||
</a>
|
<h3><strong>Welcome to The Friendly CMS</strong></h3>
|
||||||
|
<p style="font-size: 16px; line-height: 1.5; margin-bottom: 30px; max-width: 760px;">
|
||||||
<p style="line-height: 1.5;">
|
<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>
|
||||||
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>
|
</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="https://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="https://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="https://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="https://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>
|
||||||
|
|
||||||
<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>
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
<a class="umb-table-body__link" href="{{redirectUrl.destinationUrl}}" target="_blank" title="{{redirectUrl.destinationUrl}}">{{redirectUrl.destinationUrl}}</a>
|
<a class="umb-table-body__link" href="{{redirectUrl.destinationUrl}}" target="_blank" title="{{redirectUrl.destinationUrl}}">{{redirectUrl.destinationUrl}}</a>
|
||||||
</div>
|
</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>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
<div class="umb-pane">
|
<div class="umb-pane">
|
||||||
|
|
||||||
<p class="abstract" ng-hide="success">
|
<p class="abstract" ng-hide="success">
|
||||||
Choose where to move <strong>{{currentNode.name}}</strong> to in the tree structure below
|
<localize key="actions_chooseWhereToMove">Choose where to move</localize>
|
||||||
</p>
|
<strong>{{currentNode.name}}</strong>
|
||||||
|
<localize key="actions_toInTheTreeStructureBelow">to in the tree structure below</localize>
|
||||||
|
</p>
|
||||||
|
|
||||||
<div class="alert alert-error" ng-show="error" ng-cloak>
|
<div class="alert alert-error" ng-show="error" ng-cloak>
|
||||||
<h4>{{error.errorMsg}}</h4>
|
<h4>{{error.errorMsg}}</h4>
|
||||||
|
|||||||
@@ -37,10 +37,8 @@
|
|||||||
- <localize key="media_orClickHereToUpload">or click here to choose files</localize>
|
- <localize key="media_orClickHereToUpload">or click here to choose files</localize>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="umb-info-local-item text-error" ng-if="vm.zipFile.uploadStatus === 'error'">
|
|
||||||
{{vm.zipFile.serverErrorMessage}}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -53,6 +51,41 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div ng-if="vm.state === 'uploading'">
|
||||||
|
|
||||||
|
<umb-editor-sub-header>
|
||||||
|
<umb-editor-sub-header-content-left>
|
||||||
|
<a class="umb-package-details__back-link" href="" ng-click="vm.state = 'upload'">← Upload another package</a>
|
||||||
|
</umb-editor-sub-header-content-left>
|
||||||
|
</umb-editor-sub-header>
|
||||||
|
|
||||||
|
<div class="umb-packages-view-wrapper">
|
||||||
|
|
||||||
|
<div class="flex items-center justify-center">
|
||||||
|
<div class="umb-info-local-items">
|
||||||
|
<div class="umb-package-icon">
|
||||||
|
<i ng-if="!vm.localPackage.iconUrl" class="icon-box"></i>
|
||||||
|
</div>
|
||||||
|
<div class="umb-package-info">
|
||||||
|
|
||||||
|
<h4 class="umb-info-local-item"><strong>Uploading package</strong></h4>
|
||||||
|
|
||||||
|
<umb-progress-bar
|
||||||
|
percentage="{{vm.zipFile.uploadProgress}}">
|
||||||
|
</umb-progress-bar>
|
||||||
|
|
||||||
|
<div class="umb-info-local-item text-error mt3" ng-if="vm.zipFile.uploadStatus === 'error'">
|
||||||
|
{{ vm.zipFile.serverErrorMessage }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<div ng-if="vm.state === 'packageDetails'">
|
<div ng-if="vm.state === 'packageDetails'">
|
||||||
|
|
||||||
<umb-editor-sub-header>
|
<umb-editor-sub-header>
|
||||||
@@ -126,6 +159,19 @@
|
|||||||
<p>{{vm.installState.status}}</p>
|
<p>{{vm.installState.status}}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="umb-info-local-item text-info"
|
||||||
|
ng-show="vm.installCompleted">
|
||||||
|
|
||||||
|
<button type="button"
|
||||||
|
|
||||||
|
class="btn btn-success flex-inline mt3"
|
||||||
|
ng-click="vm.reloadPage()">
|
||||||
|
Finish
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -199,7 +199,7 @@
|
|||||||
|
|
||||||
<div class="umb-package-details__information-item" ng-if="vm.package.created">
|
<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-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>
|
||||||
|
|
||||||
<div class="umb-package-details__information-item" ng-if="vm.package.latestVersion">
|
<div class="umb-package-details__information-item" ng-if="vm.package.latestVersion">
|
||||||
@@ -340,6 +340,16 @@
|
|||||||
<p>{{vm.installState.status}}</p>
|
<p>{{vm.installState.status}}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="umb-info-local-item text-info"
|
||||||
|
ng-show="vm.installCompleted">
|
||||||
|
|
||||||
|
<button type="button"
|
||||||
|
class="btn btn-success flex-inline mt3"
|
||||||
|
ng-click="vm.reloadPage()">
|
||||||
|
Finish
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<ul class="unstyled">
|
<ul class="unstyled">
|
||||||
<li ng-repeat="preval in model.prevalues">
|
<li ng-repeat="preval in model.prevalues">
|
||||||
<label class="checkbox">
|
<label class="checkbox">
|
||||||
<input type="radio" ng-model="model.value" value="{{preval}}" /> {{preval}}
|
<input type="radio" ng-model="model.value" value="{{preval.value || preval}}" /> {{preval.label || preval.value || preval}}
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -35,17 +35,24 @@
|
|||||||
<div ng-if="currentSection" style="padding-bottom: 50px;">
|
<div ng-if="currentSection" style="padding-bottom: 50px;">
|
||||||
|
|
||||||
<umb-control-group label="@general_width">
|
<umb-control-group label="@general_width">
|
||||||
<div class="grid-size-scaler" >
|
<div class="grid-size-scaler">
|
||||||
<a href ng-click="scaleDown(currentSection)">
|
<a href ng-click="scaleDown(currentSection)">
|
||||||
<i class="icon icon-navigation-down"></i>
|
<i class="icon icon-remove"></i>
|
||||||
</a>
|
</a>
|
||||||
{{currentSection.grid}}
|
{{currentSection.grid}}
|
||||||
<a href ng-click="scaleUp(currentSection, availableLayoutSpace)">
|
<a href ng-click="scaleUp(currentSection, availableLayoutSpace)">
|
||||||
<i class="icon icon-navigation-up"></i>
|
<i class="icon icon-add"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</umb-control-group>
|
</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">
|
<umb-control-group hide-label="true">
|
||||||
<ul class="unstyled">
|
<ul class="unstyled">
|
||||||
|
|||||||
@@ -6,10 +6,15 @@
|
|||||||
<p><localize key="grid_addRowConfigurationDetail" /></p>
|
<p><localize key="grid_addRowConfigurationDetail" /></p>
|
||||||
|
|
||||||
<div class="alert alert-warn ng-scope" ng-show="nameChanged">
|
<div class="alert alert-warn ng-scope" ng-show="nameChanged">
|
||||||
Modifying a row configuration name will result in loss of
|
<p>Modifying a row configuration name will result in loss of
|
||||||
data for any existing content that is based on this configuration.
|
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>
|
</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">
|
<umb-control-group label="@general_name">
|
||||||
<input type="text" ng-model="currentRow.name" />
|
<input type="text" ng-model="currentRow.name" />
|
||||||
</umb-control-group>
|
</umb-control-group>
|
||||||
@@ -39,19 +44,23 @@
|
|||||||
<div ng-if="currentCell" style="padding-bottom: 50px;">
|
<div ng-if="currentCell" style="padding-bottom: 50px;">
|
||||||
|
|
||||||
<umb-control-group label="@general_width">
|
<umb-control-group label="@general_width">
|
||||||
<div class="grid-size-scaler" >
|
<div class="grid-size-scaler">
|
||||||
<div class="grid-size-scaler">
|
<a href ng-click="scaleDown(currentCell)">
|
||||||
<a href ng-click="scaleDown(currentCell)">
|
<i class="icon icon-remove"></i>
|
||||||
<i class="icon icon-remove"></i>
|
</a>
|
||||||
</a>
|
|
||||||
{{currentCell.grid}}
|
{{currentCell.grid}}
|
||||||
<a href ng-click="scaleUp(currentCell, availableRowSpace, true)">
|
<a href ng-click="scaleUp(currentCell, availableRowSpace, true)">
|
||||||
<i class="icon icon-add"></i>
|
<i class="icon icon-add"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</umb-control-group>
|
</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">
|
<umb-control-group hide-label="true">
|
||||||
<ul class="unstyled">
|
<ul class="unstyled">
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
<div class="umb-row-title-bar">
|
<div class="umb-row-title-bar">
|
||||||
|
|
||||||
<div class=".umb-grid-right">
|
<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">
|
<div class="umb-grid-has-config" ng-if="row.hasConfig && !sortMode">
|
||||||
<localize key="grid_settingsApplied" />
|
<localize key="grid_settingsApplied" />
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
<div class="preview-overlay">
|
<div class="preview-overlay">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<small>{{layout.name}}</small>
|
<small>{{layout.label || layout.name}}</small>
|
||||||
|
|
||||||
</div> <!-- .templates-preview-rows -->
|
</div> <!-- .templates-preview-rows -->
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{{layout.name}}<br />
|
{{layout.label || layout.name}}<br />
|
||||||
<i class="icon-delete red"></i>
|
<i class="icon-delete red"></i>
|
||||||
<a class="btn btn-small btn-link" href ng-click="deleteLayout($index)">
|
<a class="btn btn-small btn-link" href ng-click="deleteLayout($index)">
|
||||||
<localize key="general_delete" />
|
<localize key="general_delete" />
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
center="model.value.focalPoint"
|
center="model.value.focalPoint"
|
||||||
on-image-loaded="imageLoaded">
|
on-image-loaded="imageLoaded">
|
||||||
</umb-image-gravity>
|
</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>
|
</div>
|
||||||
|
|
||||||
<ul class="umb-sortable-thumbnails cropList clearfix">
|
<ul class="umb-sortable-thumbnails cropList clearfix">
|
||||||
|
|||||||
@@ -39,7 +39,8 @@
|
|||||||
on-drag-enter="vm.dragEnter()">
|
on-drag-enter="vm.dragEnter()">
|
||||||
|
|
||||||
<umb-file-dropzone
|
<umb-file-dropzone
|
||||||
ng-if="!vm.isRecycleBin"
|
ng-if="!vm.isRecycleBin && vm.acceptedMediatypes.length > 0"
|
||||||
|
accepted-mediatypes="vm.acceptedMediatypes"
|
||||||
parent-id="{{vm.nodeId}}"
|
parent-id="{{vm.nodeId}}"
|
||||||
files-uploaded="vm.onUploadComplete"
|
files-uploaded="vm.onUploadComplete"
|
||||||
accept="{{vm.acceptedFileTypes}}"
|
accept="{{vm.acceptedFileTypes}}"
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
on-drag-enter="vm.dragEnter()">
|
on-drag-enter="vm.dragEnter()">
|
||||||
|
|
||||||
<umb-file-dropzone
|
<umb-file-dropzone
|
||||||
ng-if="!vm.isRecycleBin"
|
ng-if="!vm.isRecycleBin && vm.acceptedMediatypes.length > 0"
|
||||||
|
accepted-mediatypes="vm.acceptedMediatypes"
|
||||||
parent-id="{{vm.nodeId}}"
|
parent-id="{{vm.nodeId}}"
|
||||||
files-uploaded="vm.onUploadComplete"
|
files-uploaded="vm.onUploadComplete"
|
||||||
accept="{{vm.acceptedFileTypes}}"
|
accept="{{vm.acceptedFileTypes}}"
|
||||||
|
|||||||
@@ -4,14 +4,14 @@
|
|||||||
<li style="width: 120px; height: 100px; overflow: hidden;" ng-repeat="image in images">
|
<li style="width: 120px; height: 100px; overflow: hidden;" ng-repeat="image in images">
|
||||||
|
|
||||||
<!-- IMAGE -->
|
<!-- 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 -->
|
<!-- 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="" />
|
<img ng-if="image.extension === 'svg'" ng-src="{{image.file}}" alt="" />
|
||||||
|
|
||||||
<!-- FILE -->
|
<!-- FILE -->
|
||||||
<span class="icon-holder" ng-hide="image.thumbnail || image.metaData.umbracoExtension.Value === 'svg' || image.extension === 'svg'">
|
<span class="umb-icon-holder" ng-hide="image.thumbnail || image.metaData.umbracoExtension.Value === 'svg' || image.extension === 'svg'">
|
||||||
<i class="icon {{image.icon}} large"></i>
|
<i class="icon {{image.icon}} large"></i>
|
||||||
<small>{{image.name}}</small>
|
<small>{{image.name}}</small>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -30,6 +30,9 @@
|
|||||||
<key alias="refreshNode">Genindlæs elementer</key>
|
<key alias="refreshNode">Genindlæs elementer</key>
|
||||||
<key alias="republish">Genudgiv hele sitet</key>
|
<key alias="republish">Genudgiv hele sitet</key>
|
||||||
<key alias="restore" version="7.3.0">Gendan</key>
|
<key alias="restore" version="7.3.0">Gendan</key>
|
||||||
|
<key alias="SetPermissionsForThePage">Sæt rettigheder for siden %0%</key>
|
||||||
|
<key alias="chooseWhereToMove">Hvor vil du flytte</key>
|
||||||
|
<key alias="toInTheTreeStructureBelow">hen til i træstrukturen?</key>
|
||||||
<key alias="rights">Rettigheder</key>
|
<key alias="rights">Rettigheder</key>
|
||||||
<key alias="rollback">Fortryd ændringer</key>
|
<key alias="rollback">Fortryd ændringer</key>
|
||||||
<key alias="sendtopublish">Send til udgivelse</key>
|
<key alias="sendtopublish">Send til udgivelse</key>
|
||||||
@@ -274,17 +277,11 @@
|
|||||||
<key alias="treepicker">Vælg</key>
|
<key alias="treepicker">Vælg</key>
|
||||||
<key alias="viewCacheItem">Se cache element</key>
|
<key alias="viewCacheItem">Se cache element</key>
|
||||||
<key alias="createFolder">Opret mappe...</key>
|
<key alias="createFolder">Opret mappe...</key>
|
||||||
|
|
||||||
<key alias="relateToOriginalLabel">Relatér til original</key>
|
<key alias="relateToOriginalLabel">Relatér til original</key>
|
||||||
|
<key alias="includeDescendants">Inkludér undersider</key>
|
||||||
<key alias="linkToPage">Link til side</key>
|
<key alias="linkToPage">Link til side</key>
|
||||||
|
<key alias="openInNewWindow">Åben linket i et nyt vindue eller fane</key>
|
||||||
<key alias="openInNewWindow">Åbner det linket dokument i et nyt vindue eller fane</key>
|
|
||||||
<key alias="openInFullBody">Åbner det linket dokument i fuld visning af vinduet</key>
|
|
||||||
<key alias="openInParentFrame">Åbner det linket dokument i "parent frame"</key>
|
|
||||||
|
|
||||||
<key alias="linkToMedia">Link til medie</key>
|
<key alias="linkToMedia">Link til medie</key>
|
||||||
|
|
||||||
<key alias="selectMedia">Vælg medie</key>
|
<key alias="selectMedia">Vælg medie</key>
|
||||||
<key alias="selectIcon">Vælg ikon</key>
|
<key alias="selectIcon">Vælg ikon</key>
|
||||||
<key alias="selectItem">Vælg item</key>
|
<key alias="selectItem">Vælg item</key>
|
||||||
@@ -293,19 +290,25 @@
|
|||||||
<key alias="selectContent">Vælg indhold</key>
|
<key alias="selectContent">Vælg indhold</key>
|
||||||
<key alias="selectMember">Vælg medlem</key>
|
<key alias="selectMember">Vælg medlem</key>
|
||||||
<key alias="selectMemberGroup">Vælg medlemsgruppe</key>
|
<key alias="selectMemberGroup">Vælg medlemsgruppe</key>
|
||||||
|
|
||||||
<key alias="noMacroParams">Der er ingen parametre for denne makro</key>
|
<key alias="noMacroParams">Der er ingen parametre for denne makro</key>
|
||||||
|
|
||||||
<key alias="linkYour">Link dit</key>
|
<key alias="linkYour">Link dit</key>
|
||||||
<key alias="unLinkYour">Fjern link fra dit</key>
|
<key alias="unLinkYour">Fjern link fra dit</key>
|
||||||
|
|
||||||
<key alias="account">konto</key>
|
<key alias="account">konto</key>
|
||||||
|
|
||||||
<key alias="selectEditor">Vælg editor</key>
|
<key alias="selectEditor">Vælg editor</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="dictionaryItem">
|
<area alias="dictionaryItem">
|
||||||
<key alias="description">Rediger de forskellige sprogversioner for ordbogselementet '%0%' herunder. Du tilføjer flere sprog under 'sprog' i menuen til venstre </key>
|
<key alias="description">
|
||||||
|
<![CDATA[
|
||||||
|
Rediger de forskellige sprogversioner for ordbogselementet '%0%' herunder.<br />Du tilføjer flere sprog under 'sprog' i menuen til venstre </key>
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
<key alias="displayName">Kulturnavn</key>
|
<key alias="displayName">Kulturnavn</key>
|
||||||
|
<key alias="changeKey">Rediger navnet på ordbogselementet.</key>
|
||||||
|
<key alias="changeKeyError">
|
||||||
|
<![CDATA[
|
||||||
|
Navnet '%0%' eksisterer allerede.
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="placeholders">
|
<area alias="placeholders">
|
||||||
<key alias="username">Indtast dit brugernavn</key>
|
<key alias="username">Indtast dit brugernavn</key>
|
||||||
@@ -319,17 +322,17 @@
|
|||||||
<key alias="enterTags">Indtast nøgleord (tryk på Enter efter hvert nøgleord)...</key>
|
<key alias="enterTags">Indtast nøgleord (tryk på Enter efter hvert nøgleord)...</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="editcontenttype">
|
<area alias="editcontenttype">
|
||||||
<key alias="allowAtRoot" version="7.2">Tillad på rodniveau</key>
|
<key alias="allowAtRoot" version="7.2">Tillad på rodniveau</key>
|
||||||
<key alias="allowAtRootDesc" version="7.2">Kun dokumenttyper med denne indstilling aktiveret oprettes i rodniveau under Inhold og Mediearkiv</key>
|
<key alias="allowAtRootDesc" version="7.2">Kun dokumenttyper med denne indstilling aktiveret oprettes i rodniveau under Inhold og Mediearkiv</key>
|
||||||
<key alias="allowedchildnodetypes">Tilladte typer</key>
|
<key alias="allowedchildnodetypes">Tilladte typer</key>
|
||||||
<key alias="contenttypecompositions">Sammensætning af dokumenttyper</key>
|
<key alias="contenttypecompositions">Sammensætning af dokumenttyper</key>
|
||||||
<key alias="create">Opret</key>
|
<key alias="create">Opret</key>
|
||||||
<key alias="deletetab">Slet fane</key>
|
<key alias="deletetab">Slet fane</key>
|
||||||
<key alias="description">Beskrivelse</key>
|
<key alias="description">Beskrivelse</key>
|
||||||
<key alias="newtab">Ny fane</key>
|
<key alias="newtab">Ny fane</key>
|
||||||
<key alias="tab">Fane</key>
|
<key alias="tab">Fane</key>
|
||||||
<key alias="thumbnail">Thumbnail</key>
|
<key alias="thumbnail">Thumbnail</key>
|
||||||
<key alias="hasListView">Aktiver listevisning</key>
|
<key alias="hasListView">Aktiver listevisning</key>
|
||||||
<key alias="hasListViewDesc" version="7.2">Viser undersider i en søgbar liste, undersider vises ikke i indholdstræet</key>
|
<key alias="hasListViewDesc" version="7.2">Viser undersider i en søgbar liste, undersider vises ikke i indholdstræet</key>
|
||||||
<key alias="currentListView" version="7.2">Nuværende listevisning</key>
|
<key alias="currentListView" version="7.2">Nuværende listevisning</key>
|
||||||
<key alias="currentListViewDesc" version="7.2">Den aktive listevisningsdatatype</key>
|
<key alias="currentListViewDesc" version="7.2">Den aktive listevisningsdatatype</key>
|
||||||
@@ -364,7 +367,7 @@
|
|||||||
</area>
|
</area>
|
||||||
<area alias="errors">
|
<area alias="errors">
|
||||||
<key alias="receivedErrorFromServer">Der skete en fejl på severen</key>
|
<key alias="receivedErrorFromServer">Der skete en fejl på severen</key>
|
||||||
<key alias="dissallowedMediaType">Denne filttype er blevet deaktiveret af administratoren</key>
|
<key alias="dissallowedMediaType">Denne filttype er blevet deaktiveret af administratoren</key>
|
||||||
<key alias="codemirroriewarning">OBS! Selvom CodeMirror er slået til i konfigurationen, så er den deaktiveret i Internet Explorer fordi den ikke er stabil nok.</key>
|
<key alias="codemirroriewarning">OBS! Selvom CodeMirror er slået til i konfigurationen, så er den deaktiveret i Internet Explorer fordi den ikke er stabil nok.</key>
|
||||||
<key alias="contentTypeAliasAndNameNotNull">Du skal udfylde både Alias & Navn på den nye egenskabstype!</key>
|
<key alias="contentTypeAliasAndNameNotNull">Du skal udfylde både Alias & Navn på den nye egenskabstype!</key>
|
||||||
<key alias="filePermissionsError">Der mangler læse/skrive rettigheder til bestemte filer og mapper</key>
|
<key alias="filePermissionsError">Der mangler læse/skrive rettigheder til bestemte filer og mapper</key>
|
||||||
@@ -380,7 +383,7 @@
|
|||||||
<key alias="tableSplitNotSplittable">Du kan ikke opdele en celle, som ikke allerede er delt.</key>
|
<key alias="tableSplitNotSplittable">Du kan ikke opdele en celle, som ikke allerede er delt.</key>
|
||||||
<key alias="xsltErrorHeader">Fejl i XSLT kode</key>
|
<key alias="xsltErrorHeader">Fejl i XSLT kode</key>
|
||||||
<key alias="xsltErrorText">Din XSLT er ikke opdateret, da det indeholdt en fejl</key>
|
<key alias="xsltErrorText">Din XSLT er ikke opdateret, da det indeholdt en fejl</key>
|
||||||
<key alias="missingPropertyEditorErrorMessage">Der er et problem med den datatype, der bruges til denn egenskab. Kontroller konfigurationen og prøv igen.</key>
|
<key alias="missingPropertyEditorErrorMessage">Der er et problem med den datatype, der bruges til denn egenskab. Kontroller konfigurationen og prøv igen.</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="general">
|
<area alias="general">
|
||||||
<key alias="about">Om</key>
|
<key alias="about">Om</key>
|
||||||
@@ -466,7 +469,8 @@
|
|||||||
<key alias="showPageOnSend">Hvilken side skal vises efter at formularen er sendt</key>
|
<key alias="showPageOnSend">Hvilken side skal vises efter at formularen er sendt</key>
|
||||||
<key alias="size">Størrelse</key>
|
<key alias="size">Størrelse</key>
|
||||||
<key alias="sort">Sortér</key>
|
<key alias="sort">Sortér</key>
|
||||||
<key alias="submit">Indsend</key> <!-- TODO: Translate this -->
|
<key alias="submit">Indsend</key>
|
||||||
|
<!-- TODO: Translate this -->
|
||||||
<key alias="type">Type</key>
|
<key alias="type">Type</key>
|
||||||
<key alias="typeToSearch">Skriv for at søge...</key>
|
<key alias="typeToSearch">Skriv for at søge...</key>
|
||||||
<key alias="up">Op</key>
|
<key alias="up">Op</key>
|
||||||
@@ -505,22 +509,22 @@
|
|||||||
</area>
|
</area>
|
||||||
|
|
||||||
<area alias="shortcuts">
|
<area alias="shortcuts">
|
||||||
<key alias="addTab">Tilføj fane</key>
|
<key alias="addTab">Tilføj fane</key>
|
||||||
<key alias="addProperty">Tilføj egenskab</key>
|
<key alias="addProperty">Tilføj egenskab</key>
|
||||||
<key alias="addEditor">Tilføj editor</key>
|
<key alias="addEditor">Tilføj editor</key>
|
||||||
<key alias="addTemplate">Tilføj skabelon</key>
|
<key alias="addTemplate">Tilføj skabelon</key>
|
||||||
<key alias="addChildNode">Tilføj child node</key>
|
<key alias="addChildNode">Tilføj child node</key>
|
||||||
<key alias="addChild">Tilføj child</key>
|
<key alias="addChild">Tilføj child</key>
|
||||||
|
|
||||||
<key alias="editDataType">Rediger datatype</key>
|
<key alias="editDataType">Rediger datatype</key>
|
||||||
|
|
||||||
<key alias="navigateSections">Naviger sektioner</key>
|
<key alias="navigateSections">Naviger sektioner</key>
|
||||||
|
|
||||||
<key alias="shortcut">Genveje</key>
|
<key alias="shortcut">Genveje</key>
|
||||||
<key alias="showShortcuts">Vis genveje</key>
|
<key alias="showShortcuts">Vis genveje</key>
|
||||||
|
|
||||||
<key alias="toggleListView">Brug listevisning</key>
|
<key alias="toggleListView">Brug listevisning</key>
|
||||||
<key alias="toggleAllowAsRoot">Tillad på rodniveau</key>
|
<key alias="toggleAllowAsRoot">Tillad på rodniveau</key>
|
||||||
</area>
|
</area>
|
||||||
|
|
||||||
<area alias="graphicheadline">
|
<area alias="graphicheadline">
|
||||||
@@ -538,13 +542,17 @@
|
|||||||
<key alias="databaseErrorWebConfig">Kunne ikke gemme web.config filen. Du bedes venligst manuelt ændre database forbindelses strengen.</key>
|
<key alias="databaseErrorWebConfig">Kunne ikke gemme web.config filen. Du bedes venligst manuelt ændre database forbindelses strengen.</key>
|
||||||
<key alias="databaseFound">Din database er blevet fundet og identificeret som</key>
|
<key alias="databaseFound">Din database er blevet fundet og identificeret som</key>
|
||||||
<key alias="databaseHeader">Database konfiguration</key>
|
<key alias="databaseHeader">Database konfiguration</key>
|
||||||
<key alias="databaseInstall"><![CDATA[
|
<key alias="databaseInstall">
|
||||||
|
<![CDATA[
|
||||||
Klik på <strong>installér</strong> knappen for at installere Umbraco %0% databasen
|
Klik på <strong>installér</strong> knappen for at installere Umbraco %0% databasen
|
||||||
]]></key>
|
]]>
|
||||||
|
</key>
|
||||||
<key alias="databaseInstall"><![CDATA[Tryk på <strong>installér</strong> knappen for at installere Umbraco %0% databasen]]></key>
|
<key alias="databaseInstall"><![CDATA[Tryk på <strong>installér</strong> knappen for at installere Umbraco %0% databasen]]></key>
|
||||||
<key alias="databaseInstallDone"><![CDATA[Umbraco %0% er nu blevet kopieret til din database. Tryk på <string>Næste</strong> for at fortsætte.]]></key>
|
<key alias="databaseInstallDone"><![CDATA[Umbraco %0% er nu blevet kopieret til din database. Tryk på <string>Næste</strong> for at fortsætte.]]></key>
|
||||||
<key alias="databaseNotFound"><![CDATA[<p>Databasen er ikke fundet. Kontrollér venligst at informationen i database forbindelsesstrengen i "web.config" filen er korrekt.</p>
|
<key alias="databaseNotFound">
|
||||||
<p>For at fortsætte bedes du venligst rette "web.config" filen (ved at bruge Visual Studio eller dit favoritprogram), scroll til bunden, tilføj forbindelsesstrengen til din database i feltet som hedder "umbracoDbDSN" og gem filen.</p><p>Klik på <strong>Forsøg igen</strong> knappen når du er færdig.<br/><a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">Mere information om at redigere web.config her.</a></p>]]></key>
|
<![CDATA[<p>Databasen er ikke fundet. Kontrollér venligst at informationen i database forbindelsesstrengen i "web.config" filen er korrekt.</p>
|
||||||
|
<p>For at fortsætte bedes du venligst rette "web.config" filen (ved at bruge Visual Studio eller dit favoritprogram), scroll til bunden, tilføj forbindelsesstrengen til din database i feltet som hedder "umbracoDbDSN" og gem filen.</p><p>Klik på <strong>Forsøg igen</strong> knappen når du er færdig.<br/><a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">Mere information om at redigere web.config her.</a></p>]]>
|
||||||
|
</key>
|
||||||
<key alias="databaseText"><![CDATA[For at afslutte dette skridt er du nødt til at have nogle informationer om din database parat ("database forbindelsesstrengen").<br/>Kontakt venligst din ISP hvis det er nødvendigt. Hvis du installerer på en lokal maskine eller server kan du muligvis få informationerne fra din systemadministrator.]]></key>
|
<key alias="databaseText"><![CDATA[For at afslutte dette skridt er du nødt til at have nogle informationer om din database parat ("database forbindelsesstrengen").<br/>Kontakt venligst din ISP hvis det er nødvendigt. Hvis du installerer på en lokal maskine eller server kan du muligvis få informationerne fra din systemadministrator.]]></key>
|
||||||
<key alias="databaseUpgrade"><![CDATA[<p>Tryk på <strong>Opgradér</strong> knappen for at opgradere din database til Umbraco %0%</p><p>Bare rolig - intet indhold vil blive slettet og alt vil stadig fungere bagefter!</p>]]></key>
|
<key alias="databaseUpgrade"><![CDATA[<p>Tryk på <strong>Opgradér</strong> knappen for at opgradere din database til Umbraco %0%</p><p>Bare rolig - intet indhold vil blive slettet og alt vil stadig fungere bagefter!</p>]]></key>
|
||||||
<key alias="databaseUpgradeDone"><![CDATA[Din database er blevet opgraderet til den endelige version %0%.<br/>Tryk på <strong>Næste</strong> for at fortsætte.]]></key>
|
<key alias="databaseUpgradeDone"><![CDATA[Din database er blevet opgraderet til den endelige version %0%.<br/>Tryk på <strong>Næste</strong> for at fortsætte.]]></key>
|
||||||
@@ -590,8 +598,10 @@
|
|||||||
<key alias="theEndFurtherHelp"><![CDATA[<h3>Yderligere hjælpe og informationer</h3> Få hjælp fra vores prisvindende fællesskab, gennemse dokumentationen eller se nogle gratis videoer om hvordan du opsætter et simpelt site, hvordan du bruger pakker og en 'quick guide' til Umbraco terminologier]]></key>
|
<key alias="theEndFurtherHelp"><![CDATA[<h3>Yderligere hjælpe og informationer</h3> Få hjælp fra vores prisvindende fællesskab, gennemse dokumentationen eller se nogle gratis videoer om hvordan du opsætter et simpelt site, hvordan du bruger pakker og en 'quick guide' til Umbraco terminologier]]></key>
|
||||||
<key alias="theEndHeader">Umbraco %0% er installeret og klar til brug</key>
|
<key alias="theEndHeader">Umbraco %0% er installeret og klar til brug</key>
|
||||||
<key alias="theEndInstallFailed"><![CDATA[For at afslutte installationen er du nødt til manuelt at rette <strong>/web.config filen</strong> og opdatére 'AppSetting' feltet <strong>UmbracoConfigurationStatus</strong> i bunden til <strong>'%0%'</strong>.]]></key>
|
<key alias="theEndInstallFailed"><![CDATA[For at afslutte installationen er du nødt til manuelt at rette <strong>/web.config filen</strong> og opdatére 'AppSetting' feltet <strong>UmbracoConfigurationStatus</strong> i bunden til <strong>'%0%'</strong>.]]></key>
|
||||||
<key alias="theEndInstallSuccess"><![CDATA[Du kan <strong>komme igang med det samme</strong> ved at klikke på "Start Umbraco" knappen nedenfor.<br/>Hvis du er <strong>ny med Umbraco</strong>, kan du finde masser af ressourcer på vores 'getting started' sider.
|
<key alias="theEndInstallSuccess">
|
||||||
]]></key>
|
<![CDATA[Du kan <strong>komme igang med det samme</strong> ved at klikke på "Start Umbraco" knappen nedenfor.<br/>Hvis du er <strong>ny med Umbraco</strong>, kan du finde masser af ressourcer på vores 'getting started' sider.
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
<key alias="theEndOpenUmbraco"><![CDATA[<h3>Start Umbraco</h3>For at administrere dit website skal du blot åbne Umbraco administrationen og begynde at tilføje indhold, opdatere skabelonerne og stylesheets'ene eller tilføje ny funktionalitet.]]></key>
|
<key alias="theEndOpenUmbraco"><![CDATA[<h3>Start Umbraco</h3>For at administrere dit website skal du blot åbne Umbraco administrationen og begynde at tilføje indhold, opdatere skabelonerne og stylesheets'ene eller tilføje ny funktionalitet.]]></key>
|
||||||
<key alias="Unavailable">Forbindelse til databasen fejlede.</key>
|
<key alias="Unavailable">Forbindelse til databasen fejlede.</key>
|
||||||
<key alias="Version3">Umbraco Version 3</key>
|
<key alias="Version3">Umbraco Version 3</key>
|
||||||
@@ -666,12 +676,15 @@ Gå til http://%4%/#/content/content/edit/%5% for at redigere.
|
|||||||
Ha' en dejlig dag!
|
Ha' en dejlig dag!
|
||||||
|
|
||||||
Mange hilsner fra Umbraco robotten
|
Mange hilsner fra Umbraco robotten
|
||||||
]]></key>
|
]]>
|
||||||
<key alias="mailBodyHtml"><![CDATA[<p>Hej %0%</p>
|
</key>
|
||||||
|
<key alias="mailBodyHtml">
|
||||||
|
<![CDATA[<p>Hej %0%</p>
|
||||||
<p>Dette er en automatisk mail for at informere dig om at opgaven <strong>'%1%'</strong>
|
<p>Dette er en automatisk mail for at informere dig om at opgaven <strong>'%1%'</strong>
|
||||||
er blevet udførtpå siden <a href="http://%4%/#/content/content/edit/%5%"><strong>'%2%'</strong></a> af brugeren <strong>'%3%'</strong> </p>
|
er blevet udførtpå siden <a href="http://%4%/#/content/content/edit/%5%"><strong>'%2%'</strong></a> af brugeren <strong>'%3%'</strong> </p>
|
||||||
<div style="margin: 8px 0; padding: 8px; display: block;"> <br />
|
<div style="margin: 8px 0; padding: 8px; display: block;"> <br />
|
||||||
<a style="color: white; font-weight: bold; background-color: #5372c3; text-decoration : none; margin-right: 20px; border: 8px solid #5372c3; width: 150px;" href="http://%4%/#/content/content/edit/%5%"> RET </a> <br /> </div> <p> <h3>Opdateringssammendrag:</h3> <table style="width: 100%;"> %6% </table> </p> <div style="margin: 8px 0; padding: 8px; display: block;"> <br /> <a style="color: white; font-weight: bold; background-color: #66cc66; text-decoration : none; margin-right: 20px; border: 8px solid #66cc66; width: 150px;" href="http://%4%/actions/publish.aspx?id=%5%"> PUBLISÉR </a> <a style="color: white; font-weight: bold; background-color: #5372c3; text-decoration : none; margin-right: 20px; border: 8px solid #5372c3; width: 150px;" href="http://%4%/#/content/content/edit/%5%"> RET </a> <a style="color: white; font-weight: bold; background-color: #ca4a4a; text-decoration : none; margin-right: 20px; border: 8px solid #ca4a4a; width: 150px;" href="http://%4%/actions/delete.aspx?id=%5%"> SLET </a> <br /> </div> <p>Hav en fortsat god dag!<br /><br /> De bedste hilsner fra umbraco robotten </p>]]></key>
|
<a style="color: white; font-weight: bold; background-color: #5372c3; text-decoration : none; margin-right: 20px; border: 8px solid #5372c3; width: 150px;" href="http://%4%/#/content/content/edit/%5%"> RET </a> <br /> </div> <p> <h3>Opdateringssammendrag:</h3> <table style="width: 100%;"> %6% </table> </p> <div style="margin: 8px 0; padding: 8px; display: block;"> <br /> <a style="color: white; font-weight: bold; background-color: #66cc66; text-decoration : none; margin-right: 20px; border: 8px solid #66cc66; width: 150px;" href="http://%4%/actions/publish.aspx?id=%5%"> PUBLISÉR </a> <a style="color: white; font-weight: bold; background-color: #5372c3; text-decoration : none; margin-right: 20px; border: 8px solid #5372c3; width: 150px;" href="http://%4%/#/content/content/edit/%5%"> RET </a> <a style="color: white; font-weight: bold; background-color: #ca4a4a; text-decoration : none; margin-right: 20px; border: 8px solid #ca4a4a; width: 150px;" href="http://%4%/actions/delete.aspx?id=%5%"> SLET </a> <br /> </div> <p>Hav en fortsat god dag!<br /><br /> De bedste hilsner fra umbraco robotten </p>]]>
|
||||||
|
</key>
|
||||||
<key alias="mailSubject">[%0%] Notificering om %1% udført på %2%</key>
|
<key alias="mailSubject">[%0%] Notificering om %1% udført på %2%</key>
|
||||||
<key alias="notifications">Notificeringer</key>
|
<key alias="notifications">Notificeringer</key>
|
||||||
</area>
|
</area>
|
||||||
@@ -692,8 +705,10 @@ Mange hilsner fra Umbraco robotten
|
|||||||
<key alias="packageUninstalledHeader">Pakken blev fjernet</key>
|
<key alias="packageUninstalledHeader">Pakken blev fjernet</key>
|
||||||
<key alias="packageUninstalledText">Pakken er på succefuld vis blevet fjernet</key>
|
<key alias="packageUninstalledText">Pakken er på succefuld vis blevet fjernet</key>
|
||||||
<key alias="packageUninstallHeader">Afinstallér pakke</key>
|
<key alias="packageUninstallHeader">Afinstallér pakke</key>
|
||||||
<key alias="packageUninstallText"><![CDATA[Du kan fjerne markeringen på elementer du ikke ønsker at fjerne, på dette tidspunkt, nedenfor. Når du klikker 'bekræft' vil alle afkrydsede elemenet blive fjernet <br/>
|
<key alias="packageUninstallText">
|
||||||
<span style="color: Red; font-weight: bold;">Bemærk:</span> at dokumenter og medier som afhænger af denne pakke vil muligvis holde op med at virke, så vær forsigtig. Hvis i tvivl, kontakt personen som har udviklet pakken.]]></key>
|
<![CDATA[Du kan fjerne markeringen på elementer du ikke ønsker at fjerne, på dette tidspunkt, nedenfor. Når du klikker 'bekræft' vil alle afkrydsede elemenet blive fjernet <br/>
|
||||||
|
<span style="color: Red; font-weight: bold;">Bemærk:</span> at dokumenter og medier som afhænger af denne pakke vil muligvis holde op med at virke, så vær forsigtig. Hvis i tvivl, kontakt personen som har udviklet pakken.]]>
|
||||||
|
</key>
|
||||||
<key alias="packageUpgradeDownload">Download opdatering fra opbevaringsbasen</key>
|
<key alias="packageUpgradeDownload">Download opdatering fra opbevaringsbasen</key>
|
||||||
<key alias="packageUpgradeHeader">Opdatér pakke</key>
|
<key alias="packageUpgradeHeader">Opdatér pakke</key>
|
||||||
<key alias="packageUpgradeInstructions">Opdateringsinstrukser</key>
|
<key alias="packageUpgradeInstructions">Opdateringsinstrukser</key>
|
||||||
@@ -726,6 +741,19 @@ Mange hilsner fra Umbraco robotten
|
|||||||
<key alias="paSimpleHelp">Hvis du blot ønsker at opsætte simpel beskyttelse ved hjælp af et enkelt login og kodeord</key>
|
<key alias="paSimpleHelp">Hvis du blot ønsker at opsætte simpel beskyttelse ved hjælp af et enkelt login og kodeord</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="publish">
|
<area alias="publish">
|
||||||
|
<key alias="contentPublishedFailedAwaitingRelease">Udgivelsen kunne ikke udgives da publiceringsdato er sat</key>
|
||||||
|
<key alias="contentPublishedFailedExpired">
|
||||||
|
<![CDATA[
|
||||||
|
%0% Udgivelsen kunne ikke blive publiceret da publiceringsdatoen er overskredet
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
|
<key alias="contentPublishedFailedInvalid">
|
||||||
|
<![CDATA[
|
||||||
|
%0% kunne ikke publiceres da følgende egenskaber : %1% ikke overholdte valderingsreglerne.
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
|
<key alias="editContentPublishedFailedByParent">Udgivelsen fejlede fordi en overordnet side ikke er publiceret</key>
|
||||||
|
|
||||||
<key alias="contentPublishedFailedByEvent">%0% kunne ikke udgives, fordi et 3. parts modul annullerede handlingen</key>
|
<key alias="contentPublishedFailedByEvent">%0% kunne ikke udgives, fordi et 3. parts modul annullerede handlingen</key>
|
||||||
<key alias="includeUnpublished">Medtag ikke-udgivede undersider</key>
|
<key alias="includeUnpublished">Medtag ikke-udgivede undersider</key>
|
||||||
<key alias="inProgress">Publicerer - vent venligst...</key>
|
<key alias="inProgress">Publicerer - vent venligst...</key>
|
||||||
@@ -799,58 +827,58 @@ Mange hilsner fra Umbraco robotten
|
|||||||
|
|
||||||
<area alias="contentTypeEditor">
|
<area alias="contentTypeEditor">
|
||||||
|
|
||||||
<key alias="compositions">Kompositioner</key>
|
<key alias="compositions">Kompositioner</key>
|
||||||
<key alias="noTabs">Du har ikke tilføjet nogle faner</key>
|
<key alias="noTabs">Du har ikke tilføjet nogle faner</key>
|
||||||
<key alias="addNewTab">Tilføj ny fane</key>
|
<key alias="addNewTab">Tilføj ny fane</key>
|
||||||
<key alias="addAnotherTab">Tilføj endnu en fane</key>
|
<key alias="addAnotherTab">Tilføj endnu en fane</key>
|
||||||
<key alias="inheritedFrom">Nedarvet fra</key>
|
<key alias="inheritedFrom">Nedarvet fra</key>
|
||||||
<key alias="addProperty">Tilføj property</key>
|
<key alias="addProperty">Tilføj property</key>
|
||||||
<key alias="requiredLabel">Påkrævet label</key>
|
<key alias="requiredLabel">Påkrævet label</key>
|
||||||
|
|
||||||
<key alias="enableListViewHeading">Aktiver listevisning</key>
|
<key alias="enableListViewHeading">Aktiver listevisning</key>
|
||||||
<key alias="enableListViewDescription">Konfigurer indholdet til at blive vist i en sorterbar og søgbar liste, dens børn vil ikke blive vist i træet</key>
|
<key alias="enableListViewDescription">Konfigurer indholdet til at blive vist i en sorterbar og søgbar liste, dens børn vil ikke blive vist i træet</key>
|
||||||
|
|
||||||
<key alias="allowedTemplatesHeading">Tilladte skabeloner</key>
|
<key alias="allowedTemplatesHeading">Tilladte skabeloner</key>
|
||||||
<key alias="allowedTemplatesDescription">Vælg hvilke skabeloner der er tilladt at bruge på dette indhold</key>
|
<key alias="allowedTemplatesDescription">Vælg hvilke skabeloner der er tilladt at bruge på dette indhold</key>
|
||||||
|
|
||||||
<key alias="allowAsRootHeading">Tillad på rodniveau</key>
|
<key alias="allowAsRootHeading">Tillad på rodniveau</key>
|
||||||
<key alias="allowAsRootDescription">Kun dokumenttyper med denne indstilling aktiveret oprettes i rodniveau under inhold og mediearkiv</key>
|
<key alias="allowAsRootDescription">Kun dokumenttyper med denne indstilling aktiveret oprettes i rodniveau under inhold og mediearkiv</key>
|
||||||
<key alias="allowAsRootCheckbox">Ja – indhold af denne type er tilladt i roden</key>
|
<key alias="allowAsRootCheckbox">Ja – indhold af denne type er tilladt i roden</key>
|
||||||
|
|
||||||
<key alias="childNodesHeading">Tilladte typer</key>
|
<key alias="childNodesHeading">Tilladte typer</key>
|
||||||
<key alias="childNodesDescription">Tillad at oprette indhold af en specifik type under denne</key>
|
<key alias="childNodesDescription">Tillad at oprette indhold af en specifik type under denne</key>
|
||||||
|
|
||||||
<key alias="chooseChildNode">Vælg child node</key>
|
<key alias="chooseChildNode">Vælg child node</key>
|
||||||
|
|
||||||
<key alias="compositionsDescription">Nedarv faner og egenskaber fra en anden dokumenttype. Nye faner vil blive tilføjet den nuværende dokumenttype eller sammenflettet hvis fanenavnene er ens.</key>
|
<key alias="compositionsDescription">Nedarv faner og egenskaber fra en anden dokumenttype. Nye faner vil blive tilføjet den nuværende dokumenttype eller sammenflettet hvis fanenavnene er ens.</key>
|
||||||
<key alias="compositionInUse">Indholdstypen bliver brugt i en komposition og kan derfor ikke blive anvendt som komposition</key>
|
<key alias="compositionInUse">Indholdstypen bliver brugt i en komposition og kan derfor ikke blive anvendt som komposition</key>
|
||||||
<key alias="noAvailableCompositions">Der er ingen indholdstyper tilgængelige at bruge som komposition</key>
|
<key alias="noAvailableCompositions">Der er ingen indholdstyper tilgængelige at bruge som komposition</key>
|
||||||
|
|
||||||
<key alias="availableEditors">Tilgængelige editors</key>
|
<key alias="availableEditors">Tilgængelige editors</key>
|
||||||
<key alias="reuse">Genbrug</key>
|
<key alias="reuse">Genbrug</key>
|
||||||
<key alias="editorSettings">Editor indstillinger</key>
|
<key alias="editorSettings">Editor indstillinger</key>
|
||||||
|
|
||||||
<key alias="configuration">Konfiguration</key>
|
<key alias="configuration">Konfiguration</key>
|
||||||
|
|
||||||
<key alias="yesDelete">Ja, slet</key>
|
<key alias="yesDelete">Ja, slet</key>
|
||||||
|
|
||||||
<key alias="movedUnderneath">blev flyttet til</key>
|
<key alias="movedUnderneath">blev flyttet til</key>
|
||||||
<key alias="folderToMove">Vælg hvor</key>
|
<key alias="folderToMove">Vælg hvor</key>
|
||||||
<key alias="structureBelow">skal flyttes til</key>
|
<key alias="structureBelow">skal flyttes til</key>
|
||||||
|
|
||||||
<key alias="allDocumentTypes">Alle dokumenttyper</key>
|
<key alias="allDocumentTypes">Alle dokumenttyper</key>
|
||||||
<key alias="allDocuments">Alle dokumenter</key>
|
<key alias="allDocuments">Alle dokumenter</key>
|
||||||
<key alias="allMediaItems">Alle medier</key>
|
<key alias="allMediaItems">Alle medier</key>
|
||||||
|
|
||||||
<key alias="usingThisDocument">som benytter denne dokumenttype vil blive slettet permanent. Bekræft at du også vil slette dem.</key>
|
<key alias="usingThisDocument">som benytter denne dokumenttype vil blive slettet permanent. Bekræft at du også vil slette dem.</key>
|
||||||
<key alias="usingThisMedia">som benytter denne medietype vil blive slettet permanent. Bekræft at du også vil slette dem.</key>
|
<key alias="usingThisMedia">som benytter denne medietype vil blive slettet permanent. Bekræft at du også vil slette dem.</key>
|
||||||
<key alias="usingThisMember">som benytter denne medlemstype vil blive slettet permanent. Bekræft at du også vil slette dem.</key>
|
<key alias="usingThisMember">som benytter denne medlemstype vil blive slettet permanent. Bekræft at du også vil slette dem.</key>
|
||||||
|
|
||||||
<key alias="andAllDocuments">og alle dokumenter, som benytter denne type</key>
|
<key alias="andAllDocuments">og alle dokumenter, som benytter denne type</key>
|
||||||
<key alias="andAllMediaItems">og alle medier, som benytter denne type</key>
|
<key alias="andAllMediaItems">og alle medier, som benytter denne type</key>
|
||||||
<key alias="andAllMembers">og alle medlemmer, som benytter denne type</key>
|
<key alias="andAllMembers">og alle medlemmer, som benytter denne type</key>
|
||||||
|
|
||||||
<key alias="thisEditorUpdateSettings">der bruger denne editor vil blive opdateret med de nye indstillinger</key>
|
<key alias="thisEditorUpdateSettings">der bruger denne editor vil blive opdateret med de nye indstillinger</key>
|
||||||
</area>
|
</area>
|
||||||
|
|
||||||
<area alias="rollback">
|
<area alias="rollback">
|
||||||
@@ -914,8 +942,6 @@ Mange hilsner fra Umbraco robotten
|
|||||||
<area alias="speechBubbles">
|
<area alias="speechBubbles">
|
||||||
<key alias="operationCancelledHeader">Annulleret</key>
|
<key alias="operationCancelledHeader">Annulleret</key>
|
||||||
<key alias="operationCancelledText">Handlingen blev annulleret af et 3. part tilføjelsesprogram</key>
|
<key alias="operationCancelledText">Handlingen blev annulleret af et 3. part tilføjelsesprogram</key>
|
||||||
<key alias="contentPublishedFailedByEvent">Udgivelsen blev standset af et 3. parts modul</key>
|
|
||||||
<key alias="contentPublishedFailedAwaitingRelease">Udgivelsen kunne ikke udgives da publiceringsdato er sat</key>
|
|
||||||
<key alias="contentTypeDublicatePropertyType">Property type eksisterer allerede</key>
|
<key alias="contentTypeDublicatePropertyType">Property type eksisterer allerede</key>
|
||||||
<key alias="contentTypePropertyTypeCreated">Egenskabstype oprettet</key>
|
<key alias="contentTypePropertyTypeCreated">Egenskabstype oprettet</key>
|
||||||
<key alias="contentTypePropertyTypeCreatedText"><![CDATA[Navn: %0% <br /> DataType: %1%]]></key>
|
<key alias="contentTypePropertyTypeCreatedText"><![CDATA[Navn: %0% <br /> DataType: %1%]]></key>
|
||||||
@@ -929,7 +955,6 @@ Mange hilsner fra Umbraco robotten
|
|||||||
<key alias="cssSavedText">Stylesheet gemt uden fejl</key>
|
<key alias="cssSavedText">Stylesheet gemt uden fejl</key>
|
||||||
<key alias="dataTypeSaved">Datatype gemt</key>
|
<key alias="dataTypeSaved">Datatype gemt</key>
|
||||||
<key alias="dictionaryItemSaved">Ordbogsnøgle gemt</key>
|
<key alias="dictionaryItemSaved">Ordbogsnøgle gemt</key>
|
||||||
<key alias="editContentPublishedFailedByParent">Udgivelsen fejlede fordi en overordnet side ikke er publiceret</key>
|
|
||||||
<key alias="editContentPublishedHeader">Indhold publiceret</key>
|
<key alias="editContentPublishedHeader">Indhold publiceret</key>
|
||||||
<key alias="editContentPublishedText">og nu synligt for besøgende</key>
|
<key alias="editContentPublishedText">og nu synligt for besøgende</key>
|
||||||
<key alias="editContentSavedHeader">Indhold gemt</key>
|
<key alias="editContentSavedHeader">Indhold gemt</key>
|
||||||
@@ -1131,11 +1156,28 @@ Mange hilsner fra Umbraco robotten
|
|||||||
<key alias="sessionExpires">Session udløber</key>
|
<key alias="sessionExpires">Session udløber</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="validation">
|
<area alias="validation">
|
||||||
<key alias="validation">Validation</key>
|
<key alias="validation">Validation</key>
|
||||||
<key alias="validateAsEmail">Valider som email</key>
|
<key alias="validateAsEmail">Valider som email</key>
|
||||||
<key alias="validateAsNumber">Valider som tal</key>
|
<key alias="validateAsNumber">Valider som tal</key>
|
||||||
<key alias="validateAsUrl">Valider som Url</key>
|
<key alias="validateAsUrl">Valider som Url</key>
|
||||||
<key alias="enterCustomValidation">...eller indtast din egen validering</key>
|
<key alias="enterCustomValidation">...eller indtast din egen validering</key>
|
||||||
<key alias="fieldIsMandatory">Feltet er påkrævet</key>
|
<key alias="fieldIsMandatory">Feltet er påkrævet</key>
|
||||||
|
</area>
|
||||||
|
<area alias="redirectUrls">
|
||||||
|
<key alias="disableUrlTracker">Slå URL tracker fra</key>
|
||||||
|
<key alias="enableUrlTracker">Slå URL tracker til</key>
|
||||||
|
<key alias="originalUrl">Original URL</key>
|
||||||
|
<key alias="redirectedTo">Viderestillet til</key>
|
||||||
|
<key alias="noRedirects">Der er ikke lavet nogen viderestillinger</key>
|
||||||
|
<key alias="noRedirectsDescription">Når en udgivet side bliver omdøbt eller flyttet, vil en viderestilling automatisk blive lavet til den nye side.</key>
|
||||||
|
<key alias="removeButton">Fjern</key>
|
||||||
|
<key alias="confirmRemove">Er du sikker på at du vil fjerne viderestillingen fra '%0%' til '%1%'?</key>
|
||||||
|
<key alias="redirectRemoved">Viderestillings URL fjernet.</key>
|
||||||
|
<key alias="redirectRemoveError">Fejl under fjernelse af viderestillings URL.</key>
|
||||||
|
<key alias="confirmDisable">Er du sikker på at du vil slå URL trackeren fra?</key>
|
||||||
|
<key alias="disabledConfirm">URL tracker er nu slået fra.</key>
|
||||||
|
<key alias="disableError">Der opstod en fejl under forsøget på at slå URL trackeren fra, der findes mere information i logfilen.</key>
|
||||||
|
<key alias="enabledConfirm">URL tracker er nu slået fra.</key>
|
||||||
|
<key alias="enableError">Der opstod en fejl under forsøget på at slå URL trackeren til, der findes mere information i logfilen.</key>
|
||||||
</area>
|
</area>
|
||||||
</language>
|
</language>
|
||||||
|
|||||||
@@ -28,6 +28,9 @@
|
|||||||
<key alias="refreshNode">Reload</key>
|
<key alias="refreshNode">Reload</key>
|
||||||
<key alias="republish">Republish entire site</key>
|
<key alias="republish">Republish entire site</key>
|
||||||
<key alias="restore" version="7.3.0">Restore</key>
|
<key alias="restore" version="7.3.0">Restore</key>
|
||||||
|
<key alias="SetPermissionsForThePage">Set permissions for the page %0%</key>
|
||||||
|
<key alias="chooseWhereToMove">Choose where to move</key>
|
||||||
|
<key alias="toInTheTreeStructureBelow">to in the tree structure below</key>
|
||||||
<key alias="rights">Permissions</key>
|
<key alias="rights">Permissions</key>
|
||||||
<key alias="rollback">Rollback</key>
|
<key alias="rollback">Rollback</key>
|
||||||
<key alias="sendtopublish">Send To Publish</key>
|
<key alias="sendtopublish">Send To Publish</key>
|
||||||
@@ -144,12 +147,12 @@
|
|||||||
<key alias="memberrole">Role</key>
|
<key alias="memberrole">Role</key>
|
||||||
<key alias="membertype">Member Type</key>
|
<key alias="membertype">Member Type</key>
|
||||||
<key alias="noDate">No date chosen</key>
|
<key alias="noDate">No date chosen</key>
|
||||||
<key alias="nodeName">Page Title</key>
|
<key alias="nodeName">Link title</key>
|
||||||
<key alias="otherElements">Properties</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="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="parentNotPublishedAnomaly">This document is published but is not in the cache</key>
|
||||||
<key alias="getUrlException">Oops: could not get the url (internal error - see log)</key>
|
<key alias="getUrlException">Could not get the url</key>
|
||||||
<key alias="routeError">Oops: this document is published but its url would collide with content %0%</key>
|
<key alias="routeError">This document is published but its url would collide with content %0%</key>
|
||||||
<key alias="publish">Publish</key>
|
<key alias="publish">Publish</key>
|
||||||
<key alias="publishStatus">Publication Status</key>
|
<key alias="publishStatus">Publication Status</key>
|
||||||
<key alias="releaseDate">Publish at</key>
|
<key alias="releaseDate">Publish at</key>
|
||||||
@@ -286,18 +289,12 @@
|
|||||||
<key alias="treepicker">Pick item</key>
|
<key alias="treepicker">Pick item</key>
|
||||||
<key alias="viewCacheItem">View Cache Item</key>
|
<key alias="viewCacheItem">View Cache Item</key>
|
||||||
<key alias="createFolder">Create folder...</key>
|
<key alias="createFolder">Create folder...</key>
|
||||||
|
|
||||||
<key alias="relateToOriginalLabel">Relate to original</key>
|
<key alias="relateToOriginalLabel">Relate to original</key>
|
||||||
|
<key alias="includeDescendants">Include descendants</key>
|
||||||
<key alias="theFriendliestCommunity">The friendliest community</key>
|
<key alias="theFriendliestCommunity">The friendliest community</key>
|
||||||
|
|
||||||
<key alias="linkToPage">Link to page</key>
|
<key alias="linkToPage">Link to page</key>
|
||||||
|
|
||||||
<key alias="openInNewWindow">Opens the linked document in a new window or tab</key>
|
<key alias="openInNewWindow">Opens the linked document in a new window or tab</key>
|
||||||
<key alias="openInFullBody">Opens the linked document in the full body of the window</key>
|
|
||||||
<key alias="openInParentFrame">Opens the linked document in the parent frame</key>
|
|
||||||
|
|
||||||
<key alias="linkToMedia">Link to media</key>
|
<key alias="linkToMedia">Link to media</key>
|
||||||
|
|
||||||
<key alias="selectMedia">Select media</key>
|
<key alias="selectMedia">Select media</key>
|
||||||
<key alias="selectIcon">Select icon</key>
|
<key alias="selectIcon">Select icon</key>
|
||||||
<key alias="selectItem">Select item</key>
|
<key alias="selectItem">Select item</key>
|
||||||
@@ -307,19 +304,14 @@
|
|||||||
<key alias="selectMember">Select member</key>
|
<key alias="selectMember">Select member</key>
|
||||||
<key alias="selectMemberGroup">Select member group</key>
|
<key alias="selectMemberGroup">Select member group</key>
|
||||||
<key alias="noIconsFound">No icons were found</key>
|
<key alias="noIconsFound">No icons were found</key>
|
||||||
|
|
||||||
<key alias="noMacroParams">There are no parameters for this macro</key>
|
<key alias="noMacroParams">There are no parameters for this macro</key>
|
||||||
|
|
||||||
<key alias="externalLoginProviders">External login providers</key>
|
<key alias="externalLoginProviders">External login providers</key>
|
||||||
<key alias="exceptionDetail">Exception Details</key>
|
<key alias="exceptionDetail">Exception Details</key>
|
||||||
<key alias="stacktrace">Stacktrace</key>
|
<key alias="stacktrace">Stacktrace</key>
|
||||||
<key alias="innerException">Inner Exception</key>
|
<key alias="innerException">Inner Exception</key>
|
||||||
|
|
||||||
<key alias="linkYour">Link your</key>
|
<key alias="linkYour">Link your</key>
|
||||||
<key alias="unLinkYour">Un-Link your</key>
|
<key alias="unLinkYour">Un-Link your</key>
|
||||||
|
|
||||||
<key alias="account">account</key>
|
<key alias="account">account</key>
|
||||||
|
|
||||||
<key alias="selectEditor">Select editor</key>
|
<key alias="selectEditor">Select editor</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="dictionaryItem">
|
<area alias="dictionaryItem">
|
||||||
@@ -327,6 +319,12 @@
|
|||||||
Edit the different language versions for the dictionary item '<em>%0%</em>' below<br/>You can add additional languages under the 'languages' in the menu on the left
|
Edit the different language versions for the dictionary item '<em>%0%</em>' below<br/>You can add additional languages under the 'languages' in the menu on the left
|
||||||
]]></key>
|
]]></key>
|
||||||
<key alias="displayName">Culture Name</key>
|
<key alias="displayName">Culture Name</key>
|
||||||
|
<key alias="changeKey">Edit the key of the dictionary item.</key>
|
||||||
|
<key alias="changeKeyError">
|
||||||
|
<![CDATA[
|
||||||
|
The key '%0%' already exists.
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="placeholders">
|
<area alias="placeholders">
|
||||||
<key alias="username">Enter your username</key>
|
<key alias="username">Enter your username</key>
|
||||||
@@ -819,7 +817,7 @@ To manage your website, simply open the Umbraco back office and start adding con
|
|||||||
<key alias="installStateInstalling">Installing...</key>
|
<key alias="installStateInstalling">Installing...</key>
|
||||||
<key alias="installStateRestarting">Restarting, please wait...</key>
|
<key alias="installStateRestarting">Restarting, please wait...</key>
|
||||||
<key alias="installStateComplete">All done, your browser will now refresh, please wait...</key>
|
<key alias="installStateComplete">All done, your browser will now refresh, please wait...</key>
|
||||||
|
<key alias="installStateCompleted">Please click finish to complete installation and reload page.</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="paste">
|
<area alias="paste">
|
||||||
<key alias="doNothing">Paste with full formatting (Not recommended)</key>
|
<key alias="doNothing">Paste with full formatting (Not recommended)</key>
|
||||||
@@ -1335,7 +1333,7 @@ To manage your website, simply open the Umbraco back office and start adding con
|
|||||||
<key alias="customErrorsCheckRectifySuccessMessage">Custom errors successfully set to '%0%'.</key>
|
<key alias="customErrorsCheckRectifySuccessMessage">Custom errors successfully set to '%0%'.</key>
|
||||||
|
|
||||||
<key alias="macroErrorModeCheckSuccessMessage">MacroErrors are set to '%0%'.</key>
|
<key alias="macroErrorModeCheckSuccessMessage">MacroErrors are set to '%0%'.</key>
|
||||||
<key alias="macroErrorModeCheckErrorMessage">MacroErrors are set to '%0%' which will prevent some or all pages in your site from loading completely when there's any errors in macros. Rectifying this will set the value to '%1%'.</key>
|
<key alias="macroErrorModeCheckErrorMessage">MacroErrors are set to '%0%' which will prevent some or all pages in your site from loading completely if there are any errors in macros. Rectifying this will set the value to '%1%'.</key>
|
||||||
<key alias="macroErrorModeCheckRectifySuccessMessage">MacroErrors are now set to '%0%'.</key>
|
<key alias="macroErrorModeCheckRectifySuccessMessage">MacroErrors are now set to '%0%'.</key>
|
||||||
|
|
||||||
<!-- The following keys get these tokens passed in:
|
<!-- The following keys get these tokens passed in:
|
||||||
@@ -1353,9 +1351,10 @@ To manage your website, simply open the Umbraco back office and start adding con
|
|||||||
<key alias="configurationServiceError">There was an error, check log for full error: %0%.</key>
|
<key alias="configurationServiceError">There was an error, check log for full error: %0%.</key>
|
||||||
|
|
||||||
<key alias="xmlDataIntegrityCheckMembers">Members - Total XML: %0%, Total: %1%, Total invalid: %2%</key>
|
<key alias="xmlDataIntegrityCheckMembers">Members - Total XML: %0%, Total: %1%, Total invalid: %2%</key>
|
||||||
<key alias="xmlDataIntegrityCheckMedia">Media - Total XML: %0%, Total: %1%, Total invalid %2%</key>
|
<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="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="httpsCheckInvalidCertificate">Certificate validation error: '%0%'</key>
|
||||||
<key alias="httpsCheckInvalidUrl">Error pinging the URL %0% - '%1%'</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>
|
<key alias="httpsCheckIsCurrentSchemeHttps">You are currently %0% viewing the site using the HTTPS scheme.</key>
|
||||||
|
|||||||
@@ -27,6 +27,9 @@
|
|||||||
<key alias="unpublish">Unpublish</key>
|
<key alias="unpublish">Unpublish</key>
|
||||||
<key alias="refreshNode">Reload</key>
|
<key alias="refreshNode">Reload</key>
|
||||||
<key alias="republish">Republish entire site</key>
|
<key alias="republish">Republish entire site</key>
|
||||||
|
<key alias="SetPermissionsForThePage">Set permissions for the page %0%</key>
|
||||||
|
<key alias="chooseWhereToMove">Choose where to move</key>
|
||||||
|
<key alias="toInTheTreeStructureBelow">to in the tree structure below</key>
|
||||||
<key alias="restore" version="7.3.0">Restore</key>
|
<key alias="restore" version="7.3.0">Restore</key>
|
||||||
<key alias="rights">Permissions</key>
|
<key alias="rights">Permissions</key>
|
||||||
<key alias="rollback">Rollback</key>
|
<key alias="rollback">Rollback</key>
|
||||||
@@ -145,12 +148,12 @@
|
|||||||
<key alias="memberrole">Role</key>
|
<key alias="memberrole">Role</key>
|
||||||
<key alias="membertype">Member Type</key>
|
<key alias="membertype">Member Type</key>
|
||||||
<key alias="noDate">No date chosen</key>
|
<key alias="noDate">No date chosen</key>
|
||||||
<key alias="nodeName">Page Title</key>
|
<key alias="nodeName">Link title</key>
|
||||||
<key alias="otherElements">Properties</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="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="parentNotPublishedAnomaly">This document is published but is not in the cache</key>
|
||||||
<key alias="getUrlException">Oops: could not get the url (internal error - see log)</key>
|
<key alias="getUrlException">Could not get the url</key>
|
||||||
<key alias="routeError">Oops: this document is published but its url would collide with content %0%</key>
|
<key alias="routeError">This document is published but its url would collide with content %0%</key>
|
||||||
<key alias="publish">Publish</key>
|
<key alias="publish">Publish</key>
|
||||||
<key alias="publishStatus">Publication Status</key>
|
<key alias="publishStatus">Publication Status</key>
|
||||||
<key alias="releaseDate">Publish at</key>
|
<key alias="releaseDate">Publish at</key>
|
||||||
@@ -288,18 +291,12 @@
|
|||||||
<key alias="treepicker">Pick item</key>
|
<key alias="treepicker">Pick item</key>
|
||||||
<key alias="viewCacheItem">View Cache Item</key>
|
<key alias="viewCacheItem">View Cache Item</key>
|
||||||
<key alias="createFolder">Create folder...</key>
|
<key alias="createFolder">Create folder...</key>
|
||||||
|
|
||||||
<key alias="relateToOriginalLabel">Relate to original</key>
|
<key alias="relateToOriginalLabel">Relate to original</key>
|
||||||
|
<key alias="includeDescendants">Include descendants</key>
|
||||||
<key alias="theFriendliestCommunity">The friendliest community</key>
|
<key alias="theFriendliestCommunity">The friendliest community</key>
|
||||||
|
|
||||||
<key alias="linkToPage">Link to page</key>
|
<key alias="linkToPage">Link to page</key>
|
||||||
|
|
||||||
<key alias="openInNewWindow">Opens the linked document in a new window or tab</key>
|
<key alias="openInNewWindow">Opens the linked document in a new window or tab</key>
|
||||||
<key alias="openInFullBody">Opens the linked document in the full body of the window</key>
|
|
||||||
<key alias="openInParentFrame">Opens the linked document in the parent frame</key>
|
|
||||||
|
|
||||||
<key alias="linkToMedia">Link to media</key>
|
<key alias="linkToMedia">Link to media</key>
|
||||||
|
|
||||||
<key alias="selectMedia">Select media</key>
|
<key alias="selectMedia">Select media</key>
|
||||||
<key alias="selectIcon">Select icon</key>
|
<key alias="selectIcon">Select icon</key>
|
||||||
<key alias="selectItem">Select item</key>
|
<key alias="selectItem">Select item</key>
|
||||||
@@ -308,19 +305,14 @@
|
|||||||
<key alias="selectContent">Select content</key>
|
<key alias="selectContent">Select content</key>
|
||||||
<key alias="selectMember">Select member</key>
|
<key alias="selectMember">Select member</key>
|
||||||
<key alias="selectMemberGroup">Select member group</key>
|
<key alias="selectMemberGroup">Select member group</key>
|
||||||
|
|
||||||
<key alias="noMacroParams">There are no parameters for this macro</key>
|
<key alias="noMacroParams">There are no parameters for this macro</key>
|
||||||
|
|
||||||
<key alias="externalLoginProviders">External login providers</key>
|
<key alias="externalLoginProviders">External login providers</key>
|
||||||
<key alias="exceptionDetail">Exception Details</key>
|
<key alias="exceptionDetail">Exception Details</key>
|
||||||
<key alias="stacktrace">Stacktrace</key>
|
<key alias="stacktrace">Stacktrace</key>
|
||||||
<key alias="innerException">Inner Exception</key>
|
<key alias="innerException">Inner Exception</key>
|
||||||
|
|
||||||
<key alias="linkYour">Link your</key>
|
<key alias="linkYour">Link your</key>
|
||||||
<key alias="unLinkYour">Un-Link your</key>
|
<key alias="unLinkYour">Un-Link your</key>
|
||||||
|
|
||||||
<key alias="account">account</key>
|
<key alias="account">account</key>
|
||||||
|
|
||||||
<key alias="selectEditor">Select editor</key>
|
<key alias="selectEditor">Select editor</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="dictionaryItem">
|
<area alias="dictionaryItem">
|
||||||
@@ -328,6 +320,12 @@
|
|||||||
Edit the different language versions for the dictionary item '<em>%0%</em>' below<br/>You can add additional languages under the 'languages' in the menu on the left
|
Edit the different language versions for the dictionary item '<em>%0%</em>' below<br/>You can add additional languages under the 'languages' in the menu on the left
|
||||||
]]></key>
|
]]></key>
|
||||||
<key alias="displayName">Culture Name</key>
|
<key alias="displayName">Culture Name</key>
|
||||||
|
<key alias="changeKey">Edit the key of the dictionary item.</key>
|
||||||
|
<key alias="changeKeyError">
|
||||||
|
<![CDATA[
|
||||||
|
The key '%0%' already exists.
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="placeholders">
|
<area alias="placeholders">
|
||||||
<key alias="username">Enter your username</key>
|
<key alias="username">Enter your username</key>
|
||||||
@@ -460,6 +458,7 @@
|
|||||||
<key alias="install">Install</key>
|
<key alias="install">Install</key>
|
||||||
<key alias="invalid">Invalid</key>
|
<key alias="invalid">Invalid</key>
|
||||||
<key alias="justify">Justify</key>
|
<key alias="justify">Justify</key>
|
||||||
|
<key alias="label">Label</key>
|
||||||
<key alias="language">Language</key>
|
<key alias="language">Language</key>
|
||||||
<key alias="layout">Layout</key>
|
<key alias="layout">Layout</key>
|
||||||
<key alias="loading">Loading</key>
|
<key alias="loading">Loading</key>
|
||||||
@@ -818,6 +817,7 @@ To manage your website, simply open the Umbraco back office and start adding con
|
|||||||
<key alias="installStateInstalling">Installing...</key>
|
<key alias="installStateInstalling">Installing...</key>
|
||||||
<key alias="installStateRestarting">Restarting, please wait...</key>
|
<key alias="installStateRestarting">Restarting, please wait...</key>
|
||||||
<key alias="installStateComplete">All done, your browser will now refresh, please wait...</key>
|
<key alias="installStateComplete">All done, your browser will now refresh, please wait...</key>
|
||||||
|
<key alias="installStateCompleted">Please click finish to complete installation and reload page.</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="paste">
|
<area alias="paste">
|
||||||
<key alias="doNothing">Paste with full formatting (Not recommended)</key>
|
<key alias="doNothing">Paste with full formatting (Not recommended)</key>
|
||||||
@@ -1339,7 +1339,7 @@ To manage your website, simply open the Umbraco back office and start adding con
|
|||||||
<key alias="customErrorsCheckRectifySuccessMessage">Custom errors successfully set to '%0%'.</key>
|
<key alias="customErrorsCheckRectifySuccessMessage">Custom errors successfully set to '%0%'.</key>
|
||||||
|
|
||||||
<key alias="macroErrorModeCheckSuccessMessage">MacroErrors are set to '%0%'.</key>
|
<key alias="macroErrorModeCheckSuccessMessage">MacroErrors are set to '%0%'.</key>
|
||||||
<key alias="macroErrorModeCheckErrorMessage">MacroErrors are set to '%0%' which will prevent some or all pages in your site from loading completely when there's any errors in macros. Rectifying this will set the value to '%1%'.</key>
|
<key alias="macroErrorModeCheckErrorMessage">MacroErrors are set to '%0%' which will prevent some or all pages in your site from loading completely if there are any errors in macros. Rectifying this will set the value to '%1%'.</key>
|
||||||
<key alias="macroErrorModeCheckRectifySuccessMessage">MacroErrors are now set to '%0%'.</key>
|
<key alias="macroErrorModeCheckRectifySuccessMessage">MacroErrors are now set to '%0%'.</key>
|
||||||
|
|
||||||
<!-- The following keys get these tokens passed in:
|
<!-- The following keys get these tokens passed in:
|
||||||
@@ -1360,6 +1360,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="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="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="httpsCheckInvalidCertificate">Certificate validation error: '%0%'</key>
|
||||||
<key alias="httpsCheckInvalidUrl">Error pinging the URL %0% - '%1%'</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>
|
<key alias="httpsCheckIsCurrentSchemeHttps">You are currently %0% viewing the site using the HTTPS scheme.</key>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -275,19 +275,12 @@
|
|||||||
<key alias="thumbnailimageclickfororiginal">クリックすると画像がフルサイズで表示されます</key>
|
<key alias="thumbnailimageclickfororiginal">クリックすると画像がフルサイズで表示されます</key>
|
||||||
<key alias="treepicker">項目の選択</key>
|
<key alias="treepicker">項目の選択</key>
|
||||||
<key alias="viewCacheItem">キャッシュされている項目の表示</key>
|
<key alias="viewCacheItem">キャッシュされている項目の表示</key>
|
||||||
<key alias="createFolder">フォルダーの作成...</key>
|
<key alias="createFolder">フォルダーの作成...</key>
|
||||||
|
|
||||||
<key alias="relateToOriginalLabel">オリジナルに関連付ける</key>
|
<key alias="relateToOriginalLabel">オリジナルに関連付ける</key>
|
||||||
<key alias="theFriendliestCommunity">フレンドリーなコミュニティ</key>
|
<key alias="theFriendliestCommunity">フレンドリーなコミュニティ</key>
|
||||||
|
|
||||||
<key alias="linkToPage">ページへリンク</key>
|
<key alias="linkToPage">ページへリンク</key>
|
||||||
|
|
||||||
<key alias="openInNewWindow">リンク ドキュメントを新しいウィンドウまたはタブで開く</key>
|
<key alias="openInNewWindow">リンク ドキュメントを新しいウィンドウまたはタブで開く</key>
|
||||||
<key alias="openInFullBody">リンク ドキュメントをウィンドウ全文表示で開く</key>
|
|
||||||
<key alias="openInParentFrame">親フレームでリンク ドキュメントを開く</key>
|
|
||||||
|
|
||||||
<key alias="linkToMedia">メディアへリンク</key>
|
<key alias="linkToMedia">メディアへリンク</key>
|
||||||
|
|
||||||
<key alias="selectMedia">メディアの選択</key>
|
<key alias="selectMedia">メディアの選択</key>
|
||||||
<key alias="selectIcon">アイコンの選択</key>
|
<key alias="selectIcon">アイコンの選択</key>
|
||||||
<key alias="selectItem">アイテムの選択</key>
|
<key alias="selectItem">アイテムの選択</key>
|
||||||
@@ -296,19 +289,14 @@
|
|||||||
<key alias="selectContent">コンテンツの選択</key>
|
<key alias="selectContent">コンテンツの選択</key>
|
||||||
<key alias="selectMember">メンバーの選択</key>
|
<key alias="selectMember">メンバーの選択</key>
|
||||||
<key alias="selectMemberGroup">メンバー グループの選択</key>
|
<key alias="selectMemberGroup">メンバー グループの選択</key>
|
||||||
|
|
||||||
<key alias="noMacroParams">このマクロのパラメーターはありません</key>
|
<key alias="noMacroParams">このマクロのパラメーターはありません</key>
|
||||||
|
|
||||||
<key alias="externalLoginProviders">外部ログイン プロバイダー</key>
|
<key alias="externalLoginProviders">外部ログイン プロバイダー</key>
|
||||||
<key alias="exceptionDetail">例外の詳細</key>
|
<key alias="exceptionDetail">例外の詳細</key>
|
||||||
<key alias="stacktrace">スタックトレース</key>
|
<key alias="stacktrace">スタックトレース</key>
|
||||||
<key alias="innerException">Inner Exception</key>
|
<key alias="innerException">Inner Exception</key>
|
||||||
|
|
||||||
<key alias="linkYour">次をリンク:</key>
|
<key alias="linkYour">次をリンク:</key>
|
||||||
<key alias="unLinkYour">次をリンク解除:</key>
|
<key alias="unLinkYour">次をリンク解除:</key>
|
||||||
|
|
||||||
<key alias="account">アカウント</key>
|
<key alias="account">アカウント</key>
|
||||||
|
|
||||||
<key alias="selectEditor">エディターの選択</key>
|
<key alias="selectEditor">エディターの選択</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="dictionaryItem">
|
<area alias="dictionaryItem">
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
<key alias="disable">Deaktywuj</key>
|
<key alias="disable">Deaktywuj</key>
|
||||||
<key alias="emptyTrashcan">Opróżnij kosz</key>
|
<key alias="emptyTrashcan">Opróżnij kosz</key>
|
||||||
<key alias="exportDocumentType">Eksportuj typ dokumentu</key>
|
<key alias="exportDocumentType">Eksportuj typ dokumentu</key>
|
||||||
<key alias="exportDocumentTypeAsCode">TRANSLATE ME: 'Export to .NET'</key>
|
<key alias="exportDocumentTypeAsCode">Ekspo .NET'</key>
|
||||||
<key alias="exportDocumentTypeAsCode-Full">TRANSLATE ME: 'Export to .NET'</key>
|
<key alias="exportDocumentTypeAsCode-Full">Eksportuj do .NET'</key>
|
||||||
<key alias="importDocumentType">Importuj typ dokumentu</key>
|
<key alias="importDocumentType">Importuj typ dokumentu</key>
|
||||||
<key alias="importPackage">Importuj zbiór</key>
|
<key alias="importPackage">Importuj zbiór</key>
|
||||||
<key alias="liveEdit">Edytuj na stronie</key>
|
<key alias="liveEdit">Edytuj na stronie</key>
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
</area>
|
</area>
|
||||||
<area alias="dashboard">
|
<area alias="dashboard">
|
||||||
<key alias="browser">Przeglądaj swoją stronę</key>
|
<key alias="browser">Przeglądaj swoją stronę</key>
|
||||||
<key alias="dontShowAgain">TRANSLATE ME: '- Hide'</key>
|
<key alias="dontShowAgain">- Ukryj</key>
|
||||||
<key alias="nothinghappens">Jeśli Umbraco się nie otwiera, prawdopodbnie musisz zezwolić tej stronie na otwieranie wyskakujących okienek</key>
|
<key alias="nothinghappens">Jeśli Umbraco się nie otwiera, prawdopodbnie musisz zezwolić tej stronie na otwieranie wyskakujących okienek</key>
|
||||||
<key alias="openinnew">zostało otwarte w nowym oknie</key>
|
<key alias="openinnew">zostało otwarte w nowym oknie</key>
|
||||||
<key alias="restart">Restartuj</key>
|
<key alias="restart">Restartuj</key>
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
<key alias="confirmEmptyTrashcan">Proszę zaznaczyć, aby potwierdzić usunięcie %0% elementów.</key>
|
<key alias="confirmEmptyTrashcan">Proszę zaznaczyć, aby potwierdzić usunięcie %0% elementów.</key>
|
||||||
<key alias="confirmlogout">Jesteś pewny?</key>
|
<key alias="confirmlogout">Jesteś pewny?</key>
|
||||||
<key alias="confirmSure">Jesteś pewny?</key>
|
<key alias="confirmSure">Jesteś pewny?</key>
|
||||||
<key alias="cut">TRANSLATE ME: 'Cut'</key>
|
<key alias="cut">Wytnij</key>
|
||||||
<key alias="editdictionary">Edytuj element słownika</key>
|
<key alias="editdictionary">Edytuj element słownika</key>
|
||||||
<key alias="editlanguage">Edytuj język</key>
|
<key alias="editlanguage">Edytuj język</key>
|
||||||
<key alias="insertAnchor">Wstaw link wewnętrzny</key>
|
<key alias="insertAnchor">Wstaw link wewnętrzny</key>
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
<key alias="linkinternal">Link wewnętrzny:</key>
|
<key alias="linkinternal">Link wewnętrzny:</key>
|
||||||
<key alias="linklocaltip">Kiedy używasz odnośników lokalnych, wstaw znak "#" na początku linku</key>
|
<key alias="linklocaltip">Kiedy używasz odnośników lokalnych, wstaw znak "#" na początku linku</key>
|
||||||
<key alias="linknewwindow">Otworzyć w nowym oknie?</key>
|
<key alias="linknewwindow">Otworzyć w nowym oknie?</key>
|
||||||
<key alias="macroContainerSettings">TRANSLATE ME: 'Macro Settings'</key>
|
<key alias="macroContainerSettings">Ustawienia Makra</key>
|
||||||
<key alias="macroDoesNotHaveProperties">To makro nie posiada żadnych właściwości, które można edytować</key>
|
<key alias="macroDoesNotHaveProperties">To makro nie posiada żadnych właściwości, które można edytować</key>
|
||||||
<key alias="paste">Wklej</key>
|
<key alias="paste">Wklej</key>
|
||||||
<key alias="permissionsEdit">Edytuj Uprawnienia dla</key>
|
<key alias="permissionsEdit">Edytuj Uprawnienia dla</key>
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
<key alias="recycleBinWarning">Usunięcie elementów z kosza powoduje ich trwałe i nieodwracalne skasowanie</key>
|
<key alias="recycleBinWarning">Usunięcie elementów z kosza powoduje ich trwałe i nieodwracalne skasowanie</key>
|
||||||
<key alias="regexSearchError"><![CDATA[Serwis <a target='_blank' href='http://regexlib.com'>regexlib.com</a> aktulanie nie jest dostępny, na co nie mamy wpływu. Bardzo przepraszamy za te utrudnienia.]]></key>
|
<key alias="regexSearchError"><![CDATA[Serwis <a target='_blank' href='http://regexlib.com'>regexlib.com</a> aktulanie nie jest dostępny, na co nie mamy wpływu. Bardzo przepraszamy za te utrudnienia.]]></key>
|
||||||
<key alias="regexSearchHelp">Przeszukaj dla wyrażeń regularnych aby dodać regułę sprawdzającą do formularza. Np. 'email' 'url'</key>
|
<key alias="regexSearchHelp">Przeszukaj dla wyrażeń regularnych aby dodać regułę sprawdzającą do formularza. Np. 'email' 'url'</key>
|
||||||
<key alias="removeMacro">TRANSLATE ME: 'Remove Macro'</key>
|
<key alias="removeMacro">Usuń Makro</key>
|
||||||
<key alias="requiredField">Pole wymagane</key>
|
<key alias="requiredField">Pole wymagane</key>
|
||||||
<key alias="sitereindexed">Strona została przeindeksowana</key>
|
<key alias="sitereindexed">Strona została przeindeksowana</key>
|
||||||
<key alias="siterepublished">Cache strony zostało odświeżone. Cała opublikowana zawartość jest teraz aktualna. Natomiast cała nieopublikowana zawartość ciągle nie jest widoczna</key>
|
<key alias="siterepublished">Cache strony zostało odświeżone. Cała opublikowana zawartość jest teraz aktualna. Natomiast cała nieopublikowana zawartość ciągle nie jest widoczna</key>
|
||||||
@@ -222,7 +222,7 @@ Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.]]></key>
|
|||||||
<area alias="editdatatype">
|
<area alias="editdatatype">
|
||||||
<key alias="addPrevalue">Dodaj wartość</key>
|
<key alias="addPrevalue">Dodaj wartość</key>
|
||||||
<key alias="dataBaseDatatype">Typ bazydanych</key>
|
<key alias="dataBaseDatatype">Typ bazydanych</key>
|
||||||
<key alias="guid">TRANSLATE ME: 'Data Editor GUID'</key>
|
<key alias="guid">Edytor GUID</key>
|
||||||
<key alias="renderControl">Renderuj kontrolkę</key>
|
<key alias="renderControl">Renderuj kontrolkę</key>
|
||||||
<key alias="rteButtons">Przyciski</key>
|
<key alias="rteButtons">Przyciski</key>
|
||||||
<key alias="rteEnableAdvancedSettings">Włącz ustawienia zaawansowane dla</key>
|
<key alias="rteEnableAdvancedSettings">Włącz ustawienia zaawansowane dla</key>
|
||||||
@@ -235,7 +235,7 @@ Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.]]></key>
|
|||||||
<area alias="errorHandling">
|
<area alias="errorHandling">
|
||||||
<key alias="errorButDataWasSaved">Dane zostały zapisane, lecz wystąpiły błędy które musisz poprawić przed publikacją strony:</key>
|
<key alias="errorButDataWasSaved">Dane zostały zapisane, lecz wystąpiły błędy które musisz poprawić przed publikacją strony:</key>
|
||||||
<key alias="errorChangingProviderPassword">Bieżący dostawca Membership nie obsługuje zmiany hasła (EnablePasswordRetrieval musi mieć wartość true)</key>
|
<key alias="errorChangingProviderPassword">Bieżący dostawca Membership nie obsługuje zmiany hasła (EnablePasswordRetrieval musi mieć wartość true)</key>
|
||||||
<key alias="errorExistsWithoutTab">TRANSLATE ME: '%0% already exists'</key>
|
<key alias="errorExistsWithoutTab">%0% już istnieje</key>
|
||||||
<key alias="errorHeader">Wystąpiły błędy:</key>
|
<key alias="errorHeader">Wystąpiły błędy:</key>
|
||||||
<key alias="errorHeaderWithoutTab">Wystąpiły błędy:</key>
|
<key alias="errorHeaderWithoutTab">Wystąpiły błędy:</key>
|
||||||
<key alias="errorInPasswordFormat">Hasło powinno mieć minimum %0% znaków, i zawierać co najmniej %1% niealfanumeryczny znak</key>
|
<key alias="errorInPasswordFormat">Hasło powinno mieć minimum %0% znaków, i zawierać co najmniej %1% niealfanumeryczny znak</key>
|
||||||
@@ -308,7 +308,7 @@ Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.]]></key>
|
|||||||
<key alias="language">Język</key>
|
<key alias="language">Język</key>
|
||||||
<key alias="layout">układ</key>
|
<key alias="layout">układ</key>
|
||||||
<key alias="loading">Ładowanie</key>
|
<key alias="loading">Ładowanie</key>
|
||||||
<key alias="locked">TRANSLATE ME: 'Locked'</key>
|
<key alias="locked">Zablokowany</key>
|
||||||
<key alias="login">Zaloguj</key>
|
<key alias="login">Zaloguj</key>
|
||||||
<key alias="logoff">Wyloguj</key>
|
<key alias="logoff">Wyloguj</key>
|
||||||
<key alias="logout">Wyloguj</key>
|
<key alias="logout">Wyloguj</key>
|
||||||
@@ -332,7 +332,7 @@ Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.]]></key>
|
|||||||
<key alias="recycleBin">Kosz</key>
|
<key alias="recycleBin">Kosz</key>
|
||||||
<key alias="remaining">Pozostało</key>
|
<key alias="remaining">Pozostało</key>
|
||||||
<key alias="rename">Zmień nazwę</key>
|
<key alias="rename">Zmień nazwę</key>
|
||||||
<key alias="renew">TRANSLATE ME: 'Renew'</key>
|
<key alias="renew">Odnów</key>
|
||||||
<key alias="retry">Ponów próbę</key>
|
<key alias="retry">Ponów próbę</key>
|
||||||
<key alias="rights">Uprawnienia</key>
|
<key alias="rights">Uprawnienia</key>
|
||||||
<key alias="search">Szukaj</key>
|
<key alias="search">Szukaj</key>
|
||||||
@@ -341,7 +341,7 @@ Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.]]></key>
|
|||||||
<key alias="showPageOnSend">Pokaż stronę "wyślij"</key>
|
<key alias="showPageOnSend">Pokaż stronę "wyślij"</key>
|
||||||
<key alias="size">Rozmiar</key>
|
<key alias="size">Rozmiar</key>
|
||||||
<key alias="sort">Sortuj</key>
|
<key alias="sort">Sortuj</key>
|
||||||
<key alias="submit">Submit</key> <!-- TODO: Translate this -->
|
<key alias="submit">Zatwierdź</key>
|
||||||
<key alias="type">Typ</key>
|
<key alias="type">Typ</key>
|
||||||
<key alias="typeToSearch">Szukaj</key>
|
<key alias="typeToSearch">Szukaj</key>
|
||||||
<key alias="up">W górę</key>
|
<key alias="up">W górę</key>
|
||||||
@@ -356,8 +356,8 @@ Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.]]></key>
|
|||||||
<key alias="welcome">Witaj...</key>
|
<key alias="welcome">Witaj...</key>
|
||||||
<key alias="width">Szerokość</key>
|
<key alias="width">Szerokość</key>
|
||||||
<key alias="yes">Tak</key>
|
<key alias="yes">Tak</key>
|
||||||
<key alias="reorder">Reorder</key>
|
<key alias="reorder">Zmień kolejność</key>
|
||||||
<key alias="reorderDone">I am done reordering</key>
|
<key alias="reorderDone">Kolejność została zmieniona</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="graphicheadline">
|
<area alias="graphicheadline">
|
||||||
<key alias="backgroundcolor">Kolor tła</key>
|
<key alias="backgroundcolor">Kolor tła</key>
|
||||||
@@ -786,7 +786,7 @@ Miłego dnia!]]></key>
|
|||||||
<area alias="user">
|
<area alias="user">
|
||||||
<key alias="administrators">Administrator</key>
|
<key alias="administrators">Administrator</key>
|
||||||
<key alias="categoryField">Pole kategorii</key>
|
<key alias="categoryField">Pole kategorii</key>
|
||||||
<key alias="changePassword">TRANSLATE ME: 'Change Your Password'</key>
|
<key alias="changePassword">Zmień hasło!</key>
|
||||||
<key alias="changePasswordDescription">TRANSLATE ME: 'You can change your password for accessing the Umbraco Back Office by filling out the form below and click the 'Change Password' button'</key>
|
<key alias="changePasswordDescription">TRANSLATE ME: 'You can change your password for accessing the Umbraco Back Office by filling out the form below and click the 'Change Password' button'</key>
|
||||||
<key alias="contentChannel">Zawartość</key>
|
<key alias="contentChannel">Zawartość</key>
|
||||||
<key alias="descriptionField">Opis</key>
|
<key alias="descriptionField">Opis</key>
|
||||||
@@ -800,10 +800,10 @@ Miłego dnia!]]></key>
|
|||||||
<key alias="modules">Sekcje</key>
|
<key alias="modules">Sekcje</key>
|
||||||
<key alias="noConsole">Wyłącz dostęp do Umbraco</key>
|
<key alias="noConsole">Wyłącz dostęp do Umbraco</key>
|
||||||
<key alias="password">Hasło</key>
|
<key alias="password">Hasło</key>
|
||||||
<key alias="passwordChanged">TRANSLATE ME: 'Your password has been changed!'</key>
|
<key alias="passwordChanged">Twoje hasło zostało zmienione!</key>
|
||||||
<key alias="passwordConfirm">TRANSLATE ME: 'Please confirm the new password'</key>
|
<key alias="passwordConfirm">Proszę potwierdź nowe hasło!</key>
|
||||||
<key alias="passwordEnterNew">TRANSLATE ME: 'Enter your new password'</key>
|
<key alias="passwordEnterNew">Wprowadź nowe hasło</key>
|
||||||
<key alias="passwordIsBlank">TRANSLATE ME: 'Your new password cannot be blank!'</key>
|
<key alias="passwordIsBlank">Nowe hasło nie może byc puste!</key>
|
||||||
<key alias="passwordIsDifferent">TRANSLATE ME: 'There was a difference between the new password and the confirmed password. Please try again!'</key>
|
<key alias="passwordIsDifferent">TRANSLATE ME: 'There was a difference between the new password and the confirmed password. Please try again!'</key>
|
||||||
<key alias="passwordMismatch">TRANSLATE ME: 'The confirmed password doesn't match the new password!'</key>
|
<key alias="passwordMismatch">TRANSLATE ME: 'The confirmed password doesn't match the new password!'</key>
|
||||||
<key alias="permissionReplaceChildren">Zastąp prawa dostępu dla węzłów potomnych</key>
|
<key alias="permissionReplaceChildren">Zastąp prawa dostępu dla węzłów potomnych</key>
|
||||||
|
|||||||
@@ -340,18 +340,11 @@
|
|||||||
<key alias="treepicker">Выберите элемент</key>
|
<key alias="treepicker">Выберите элемент</key>
|
||||||
<key alias="viewCacheItem">Просмотр элемента кэша</key>
|
<key alias="viewCacheItem">Просмотр элемента кэша</key>
|
||||||
<key alias="createFolder">Создать папку...</key>
|
<key alias="createFolder">Создать папку...</key>
|
||||||
|
|
||||||
<key alias="relateToOriginalLabel">Связать с оригиналом</key>
|
<key alias="relateToOriginalLabel">Связать с оригиналом</key>
|
||||||
<key alias="theFriendliestCommunity">Самое дружелюбное сообщество</key>
|
<key alias="theFriendliestCommunity">Самое дружелюбное сообщество</key>
|
||||||
|
|
||||||
<key alias="linkToPage">Ссылка на страницу</key>
|
<key alias="linkToPage">Ссылка на страницу</key>
|
||||||
|
|
||||||
<key alias="openInNewWindow">Открывает документ по ссылке в новом окне или вкладке браузера</key>
|
<key alias="openInNewWindow">Открывает документ по ссылке в новом окне или вкладке браузера</key>
|
||||||
<key alias="openInFullBody">Открывает документ по ссылке в полноэкранном режиме</key>
|
|
||||||
<key alias="openInParentFrame">Открывает документ по ссылке в родительском фрейме</key>
|
|
||||||
|
|
||||||
<key alias="linkToMedia">Ссылка на медиа-файл</key>
|
<key alias="linkToMedia">Ссылка на медиа-файл</key>
|
||||||
|
|
||||||
<key alias="selectMedia">Выбрать медиа</key>
|
<key alias="selectMedia">Выбрать медиа</key>
|
||||||
<key alias="selectIcon">Выбрать значок</key>
|
<key alias="selectIcon">Выбрать значок</key>
|
||||||
<key alias="selectItem">Выбрать элемент</key>
|
<key alias="selectItem">Выбрать элемент</key>
|
||||||
@@ -360,19 +353,14 @@
|
|||||||
<key alias="selectContent">Выбрать содержимое</key>
|
<key alias="selectContent">Выбрать содержимое</key>
|
||||||
<key alias="selectMember">Выбрать участника</key>
|
<key alias="selectMember">Выбрать участника</key>
|
||||||
<key alias="selectMemberGroup">Выбрать группу участников</key>
|
<key alias="selectMemberGroup">Выбрать группу участников</key>
|
||||||
|
|
||||||
<key alias="noMacroParams">Это макрос без параметров</key>
|
<key alias="noMacroParams">Это макрос без параметров</key>
|
||||||
|
|
||||||
<key alias="externalLoginProviders">Провайдеры аутентификации</key>
|
<key alias="externalLoginProviders">Провайдеры аутентификации</key>
|
||||||
<key alias="exceptionDetail">Подробное сообщение об ошибке</key>
|
<key alias="exceptionDetail">Подробное сообщение об ошибке</key>
|
||||||
<key alias="stacktrace">Трассировка стека</key>
|
<key alias="stacktrace">Трассировка стека</key>
|
||||||
<key alias="innerException">Внутренняя ошибка</key>
|
<key alias="innerException">Внутренняя ошибка</key>
|
||||||
|
|
||||||
<key alias="linkYour">Связать</key>
|
<key alias="linkYour">Связать</key>
|
||||||
<key alias="unLinkYour">Разорвать связь</key>
|
<key alias="unLinkYour">Разорвать связь</key>
|
||||||
|
|
||||||
<key alias="account">учетную запись</key>
|
<key alias="account">учетную запись</key>
|
||||||
|
|
||||||
<key alias="selectEditor">Выбрать редактор</key>
|
<key alias="selectEditor">Выбрать редактор</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="dictionaryItem">
|
<area alias="dictionaryItem">
|
||||||
@@ -380,6 +368,12 @@
|
|||||||
Ниже Вы можете указать различные переводы данной статьи словаря '<em>%0%</em>'<br/>Добавить другие языки можно, воспользовавшись пунктом 'Языки' в меню слева
|
Ниже Вы можете указать различные переводы данной статьи словаря '<em>%0%</em>'<br/>Добавить другие языки можно, воспользовавшись пунктом 'Языки' в меню слева
|
||||||
]]></key>
|
]]></key>
|
||||||
<key alias="displayName">Название языка (культуры)</key>
|
<key alias="displayName">Название языка (культуры)</key>
|
||||||
|
<key alias="changeKey">Редактировать элемент (ключ) словаря</key>
|
||||||
|
<key alias="changeKeyError">
|
||||||
|
<![CDATA[
|
||||||
|
Ключ '%0%' уже существует в словаре.
|
||||||
|
]]>
|
||||||
|
</key>
|
||||||
</area>
|
</area>
|
||||||
<area alias="editcontenttype">
|
<area alias="editcontenttype">
|
||||||
<key alias="allowAtRoot" version="7.2">Допустим как корневой</key>
|
<key alias="allowAtRoot" version="7.2">Допустим как корневой</key>
|
||||||
@@ -499,6 +493,7 @@
|
|||||||
<key alias="install">Установить</key>
|
<key alias="install">Установить</key>
|
||||||
<key alias="invalid">Неверно</key>
|
<key alias="invalid">Неверно</key>
|
||||||
<key alias="justify">Выравнивание</key>
|
<key alias="justify">Выравнивание</key>
|
||||||
|
<key alias="label">Название</key>
|
||||||
<key alias="language">Язык</key>
|
<key alias="language">Язык</key>
|
||||||
<key alias="layout">Макет</key>
|
<key alias="layout">Макет</key>
|
||||||
<key alias="loading">Загрузка</key>
|
<key alias="loading">Загрузка</key>
|
||||||
@@ -654,6 +649,7 @@
|
|||||||
<key alias="xmlDataIntegrityCheckMedia">Медиа - всего в XML: %0%, всего: %1%Б с ошибками: %2%</key>
|
<key alias="xmlDataIntegrityCheckMedia">Медиа - всего в XML: %0%, всего: %1%Б с ошибками: %2%</key>
|
||||||
<key alias="xmlDataIntegrityCheckContent">Содержимое - всего в XML: %0%, всего опубликовано: %1%, с ошибками: %2%</key>
|
<key alias="xmlDataIntegrityCheckContent">Содержимое - всего в XML: %0%, всего опубликовано: %1%, с ошибками: %2%</key>
|
||||||
|
|
||||||
|
<key alias="httpsCheckValidCertificate">Сертификат Вашего веб-сайта отмечен как проверенный.</key>
|
||||||
<key alias="httpsCheckInvalidCertificate">Ошибка проверки сертификата: '%0%'</key>
|
<key alias="httpsCheckInvalidCertificate">Ошибка проверки сертификата: '%0%'</key>
|
||||||
<key alias="httpsCheckInvalidUrl">Ошибка проверки адреса URL %0% - '%1%'</key>
|
<key alias="httpsCheckInvalidUrl">Ошибка проверки адреса URL %0% - '%1%'</key>
|
||||||
<key alias="httpsCheckIsCurrentSchemeHttps">Сейчас Вы %0% просматриваете сайт, используя протокол HTTPS.</key>
|
<key alias="httpsCheckIsCurrentSchemeHttps">Сейчас Вы %0% просматриваете сайт, используя протокол HTTPS.</key>
|
||||||
@@ -1065,6 +1061,23 @@
|
|||||||
Чтобы опубликовать ранее неопубликованные документы среди дочерних, отметьте опцию <em>Включая неопубликованные дочерние документы</em>.
|
Чтобы опубликовать ранее неопубликованные документы среди дочерних, отметьте опцию <em>Включая неопубликованные дочерние документы</em>.
|
||||||
]]></key>
|
]]></key>
|
||||||
</area>
|
</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">
|
<area alias="relatedlinks">
|
||||||
<key alias="caption">Заголовок</key>
|
<key alias="caption">Заголовок</key>
|
||||||
<key alias="captionPlaceholder">Укажите заголовок</key>
|
<key alias="captionPlaceholder">Укажите заголовок</key>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
ControlToValidate="Email" ValidateEmptyText="false" OnServerValidate="EmailExistsCheck"></asp:CustomValidator>
|
ControlToValidate="Email" ValidateEmptyText="false" OnServerValidate="EmailExistsCheck"></asp:CustomValidator>
|
||||||
<asp:CustomValidator runat="server" ID="EmailValidator" OnServerValidate="EmailValidator_OnServerValidate"
|
<asp:CustomValidator runat="server" ID="EmailValidator" OnServerValidate="EmailValidator_OnServerValidate"
|
||||||
ControlToValidate="Email"
|
ControlToValidate="Email"
|
||||||
ErrorMessage="Invalid email address"
|
ErrorMessage='<%#ui.Text("errorHandling", "errorRegExpWithoutTab", "E-mail", CurrentUser) %>'
|
||||||
Display="None" />
|
Display="None" />
|
||||||
<br />
|
<br />
|
||||||
<asp:TextBox ID="Email" runat="server" Width="350px" CssClass="bigInput"></asp:TextBox>
|
<asp:TextBox ID="Email" runat="server" Width="350px" CssClass="bigInput"></asp:TextBox>
|
||||||
|
|||||||
@@ -108,16 +108,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</asp:PlaceHolder>
|
</asp:PlaceHolder>
|
||||||
|
|
||||||
<asp:PlaceHolder ID="SaveAndCancelPlaceholder" runat="server">
|
<div class="btn-toolbar umb-btn-toolbar">
|
||||||
<br />
|
<asp:PlaceHolder ID="SaveAndCancelPlaceholder" runat="server">
|
||||||
<p>
|
<a href="#" class="btn btn-link" onclick="UmbClientMgr.closeModalWindow()"><%=umbraco.ui.Text("cancel")%></a>
|
||||||
<asp:PlaceHolder ID="SavePlaceholder" runat="server">
|
<asp:PlaceHolder ID="SavePlaceholder" runat="server">
|
||||||
<asp:Button ID="ValidateAndSave" runat="server" OnClick="ValidateAndSave_Click" />
|
<asp:Button ID="ValidateAndSave" runat="server" CssClass="btn btn-primary" Text="Create" OnClick="ValidateAndSave_Click"></asp:Button>
|
||||||
<em> <%= umbraco.ui.Text("or") %> </em>
|
|
||||||
</asp:PlaceHolder>
|
</asp:PlaceHolder>
|
||||||
<a href="#" style="color: blue" onclick="UmbClientMgr.closeModalWindow()"><%=umbraco.ui.Text("general", "cancel", Security.CurrentUser)%></a>
|
</asp:Placeholder>
|
||||||
</p>
|
</div>
|
||||||
</asp:PlaceHolder>
|
|
||||||
|
|
||||||
</asp:Content>
|
</asp:Content>
|
||||||
|
|
||||||
@@ -1285,7 +1285,7 @@ angular.module("umbraco").controller("Umbraco.Dialogs.MacroPickerController", fu
|
|||||||
//used for the media picker dialog
|
//used for the media picker dialog
|
||||||
angular.module("umbraco")
|
angular.module("umbraco")
|
||||||
.controller("Umbraco.Dialogs.MediaPickerController",
|
.controller("Umbraco.Dialogs.MediaPickerController",
|
||||||
function ($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, eventsService, treeService, $cookies, $element, $timeout) {
|
function($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, mediaTypeHelper, eventsService, treeService) {
|
||||||
|
|
||||||
var dialogOptions = $scope.dialogOptions;
|
var dialogOptions = $scope.dialogOptions;
|
||||||
|
|
||||||
@@ -1295,22 +1295,27 @@ angular.module("umbraco")
|
|||||||
$scope.startNodeId = dialogOptions.startNodeId ? dialogOptions.startNodeId : -1;
|
$scope.startNodeId = dialogOptions.startNodeId ? dialogOptions.startNodeId : -1;
|
||||||
$scope.cropSize = dialogOptions.cropSize;
|
$scope.cropSize = dialogOptions.cropSize;
|
||||||
|
|
||||||
|
|
||||||
//preload selected item
|
//preload selected item
|
||||||
$scope.target = undefined;
|
$scope.target = undefined;
|
||||||
if(dialogOptions.currentTarget){
|
if (dialogOptions.currentTarget) {
|
||||||
$scope.target = dialogOptions.currentTarget;
|
$scope.target = dialogOptions.currentTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.upload = function(v){
|
$scope.acceptedMediatypes = [];
|
||||||
angular.element(".umb-file-dropzone-directive .file-select").click();
|
mediaTypeHelper.getAllowedImagetypes($scope.startNodeId)
|
||||||
|
.then(function(types) {
|
||||||
|
$scope.acceptedMediatypes = types;
|
||||||
|
});
|
||||||
|
|
||||||
|
$scope.upload = function(v) {
|
||||||
|
angular.element(".umb-file-dropzone-directive .file-select").click();
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.dragLeave = function(el, event){
|
$scope.dragLeave = function(el, event) {
|
||||||
$scope.activeDrag = false;
|
$scope.activeDrag = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.dragEnter = function(el, event){
|
$scope.dragEnter = function(el, event) {
|
||||||
$scope.activeDrag = true;
|
$scope.activeDrag = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1336,21 +1341,25 @@ angular.module("umbraco")
|
|||||||
};
|
};
|
||||||
|
|
||||||
$scope.gotoFolder = function(folder) {
|
$scope.gotoFolder = function(folder) {
|
||||||
|
if (!folder) {
|
||||||
if(!folder){
|
folder = { id: -1, name: "Media", icon: "icon-folder" };
|
||||||
folder = {id: -1, name: "Media", icon: "icon-folder"};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (folder.id > 0) {
|
if (folder.id > 0) {
|
||||||
entityResource.getAncestors(folder.id, "media")
|
entityResource.getAncestors(folder.id, "media")
|
||||||
.then(function(anc) {
|
.then(function(anc) {
|
||||||
// anc.splice(0,1);
|
// anc.splice(0,1);
|
||||||
$scope.path = _.filter(anc, function (f) {
|
$scope.path = _.filter(anc,
|
||||||
return f.path.indexOf($scope.startNodeId) !== -1;
|
function(f) {
|
||||||
});
|
return f.path.indexOf($scope.startNodeId) !== -1;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
else {
|
mediaTypeHelper.getAllowedImagetypes(folder.id)
|
||||||
|
.then(function(types) {
|
||||||
|
$scope.acceptedMediatypes = types;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
$scope.path = [];
|
$scope.path = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1370,40 +1379,40 @@ angular.module("umbraco")
|
|||||||
|
|
||||||
if (image.isFolder && !select) {
|
if (image.isFolder && !select) {
|
||||||
$scope.gotoFolder(image);
|
$scope.gotoFolder(image);
|
||||||
}else{
|
} else {
|
||||||
eventsService.emit("dialogs.mediaPicker.select", image);
|
eventsService.emit("dialogs.mediaPicker.select", image);
|
||||||
|
|
||||||
//we have 3 options add to collection (if multi) show details, or submit it right back to the callback
|
//we have 3 options add to collection (if multi) show details, or submit it right back to the callback
|
||||||
if ($scope.multiPicker) {
|
if ($scope.multiPicker) {
|
||||||
$scope.select(image);
|
$scope.select(image);
|
||||||
image.cssclass = ($scope.dialogData.selection.indexOf(image) > -1) ? "selected" : "";
|
image.cssclass = ($scope.dialogData.selection.indexOf(image) > -1) ? "selected" : "";
|
||||||
}else if($scope.showDetails) {
|
} else if ($scope.showDetails) {
|
||||||
$scope.target= image;
|
$scope.target = image;
|
||||||
$scope.target.url = mediaHelper.resolveFile(image);
|
$scope.target.url = mediaHelper.resolveFile(image);
|
||||||
}else{
|
} else {
|
||||||
$scope.submit(image);
|
$scope.submit(image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.exitDetails = function(){
|
$scope.exitDetails = function() {
|
||||||
if(!$scope.currentFolder){
|
if (!$scope.currentFolder) {
|
||||||
$scope.gotoFolder();
|
$scope.gotoFolder();
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.target = undefined;
|
$scope.target = undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.onUploadComplete = function () {
|
$scope.onUploadComplete = function() {
|
||||||
$scope.gotoFolder($scope.currentFolder);
|
$scope.gotoFolder($scope.currentFolder);
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.onFilesQueue = function(){
|
$scope.onFilesQueue = function() {
|
||||||
$scope.activeDrag = false;
|
$scope.activeDrag = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
//default root item
|
//default root item
|
||||||
if(!$scope.target){
|
if (!$scope.target) {
|
||||||
$scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" });
|
$scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -1895,7 +1904,7 @@ angular.module("umbraco").controller("Umbraco.Dialogs.TreePickerController",
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
var a = dialogOptions.filter.toLowerCase().split(',');
|
var a = dialogOptions.filter.toLowerCase().replace(/\s/g, '').split(',');
|
||||||
angular.forEach(nodes, function (value, key) {
|
angular.forEach(nodes, function (value, key) {
|
||||||
|
|
||||||
var found = a.indexOf(value.metaData.contentType.toLowerCase()) >= 0;
|
var found = a.indexOf(value.metaData.contentType.toLowerCase()) >= 0;
|
||||||
@@ -3386,9 +3395,9 @@ angular.module("umbraco").controller("Umbraco.Overlays.MacroPickerController", M
|
|||||||
//used for the media picker dialog
|
//used for the media picker dialog
|
||||||
angular.module("umbraco")
|
angular.module("umbraco")
|
||||||
.controller("Umbraco.Overlays.MediaPickerController",
|
.controller("Umbraco.Overlays.MediaPickerController",
|
||||||
function ($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, eventsService, treeService, $element, $timeout, $cookies, $cookieStore, localizationService) {
|
function($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, mediaTypeHelper, eventsService, treeService, $element, $timeout, $cookies, $cookieStore, localizationService) {
|
||||||
|
|
||||||
if(!$scope.model.title) {
|
if (!$scope.model.title) {
|
||||||
$scope.model.title = localizationService.localize("defaultdialogs_selectMedia");
|
$scope.model.title = localizationService.localize("defaultdialogs_selectMedia");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3401,60 +3410,59 @@ angular.module("umbraco")
|
|||||||
$scope.startNodeId = dialogOptions.startNodeId ? dialogOptions.startNodeId : -1;
|
$scope.startNodeId = dialogOptions.startNodeId ? dialogOptions.startNodeId : -1;
|
||||||
$scope.cropSize = dialogOptions.cropSize;
|
$scope.cropSize = dialogOptions.cropSize;
|
||||||
$scope.lastOpenedNode = $cookieStore.get("umbLastOpenedMediaNodeId");
|
$scope.lastOpenedNode = $cookieStore.get("umbLastOpenedMediaNodeId");
|
||||||
if($scope.onlyImages){
|
if ($scope.onlyImages) {
|
||||||
$scope.acceptedFileTypes = mediaHelper.formatFileTypes(Umbraco.Sys.ServerVariables.umbracoSettings.imageFileTypes);
|
$scope.acceptedFileTypes = mediaHelper
|
||||||
}
|
.formatFileTypes(Umbraco.Sys.ServerVariables.umbracoSettings.imageFileTypes);
|
||||||
else {
|
} else {
|
||||||
$scope.acceptedFileTypes = !mediaHelper.formatFileTypes(Umbraco.Sys.ServerVariables.umbracoSettings.disallowedUploadFiles);
|
$scope.acceptedFileTypes = !mediaHelper
|
||||||
|
.formatFileTypes(Umbraco.Sys.ServerVariables.umbracoSettings.disallowedUploadFiles);
|
||||||
}
|
}
|
||||||
$scope.maxFileSize = Umbraco.Sys.ServerVariables.umbracoSettings.maxFileSize + "KB";
|
$scope.maxFileSize = Umbraco.Sys.ServerVariables.umbracoSettings.maxFileSize + "KB";
|
||||||
|
|
||||||
$scope.model.selectedImages = [];
|
$scope.model.selectedImages = [];
|
||||||
|
|
||||||
|
$scope.acceptedMediatypes = [];
|
||||||
|
mediaTypeHelper.getAllowedImagetypes($scope.startNodeId)
|
||||||
|
.then(function(types) {
|
||||||
|
$scope.acceptedMediatypes = types;
|
||||||
|
});
|
||||||
|
|
||||||
//preload selected item
|
//preload selected item
|
||||||
$scope.target = undefined;
|
$scope.target = undefined;
|
||||||
if(dialogOptions.currentTarget){
|
if (dialogOptions.currentTarget) {
|
||||||
$scope.target = dialogOptions.currentTarget;
|
$scope.target = dialogOptions.currentTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.upload = function(v){
|
$scope.upload = function(v) {
|
||||||
angular.element(".umb-file-dropzone-directive .file-select").click();
|
angular.element(".umb-file-dropzone-directive .file-select").click();
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.dragLeave = function(el, event){
|
$scope.dragLeave = function(el, event) {
|
||||||
$scope.activeDrag = false;
|
$scope.activeDrag = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.dragEnter = function(el, event){
|
$scope.dragEnter = function(el, event) {
|
||||||
$scope.activeDrag = true;
|
$scope.activeDrag = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.submitFolder = function() {
|
$scope.submitFolder = function() {
|
||||||
|
if ($scope.newFolderName) {
|
||||||
|
mediaResource
|
||||||
|
.addFolder($scope.newFolderName, $scope.currentFolder.id)
|
||||||
|
.then(function(data) {
|
||||||
|
//we've added a new folder so lets clear the tree cache for that specific item
|
||||||
|
treeService.clearCache({
|
||||||
|
cacheKey: "__media", //this is the main media tree cache key
|
||||||
|
childrenOf: data.parentId //clear the children of the parent
|
||||||
|
});
|
||||||
|
|
||||||
if ($scope.newFolderName) {
|
$scope.gotoFolder(data);
|
||||||
|
$scope.showFolderInput = false;
|
||||||
mediaResource
|
$scope.newFolderName = "";
|
||||||
.addFolder($scope.newFolderName, $scope.currentFolder.id)
|
|
||||||
.then(function(data) {
|
|
||||||
|
|
||||||
//we've added a new folder so lets clear the tree cache for that specific item
|
|
||||||
treeService.clearCache({
|
|
||||||
cacheKey: "__media", //this is the main media tree cache key
|
|
||||||
childrenOf: data.parentId //clear the children of the parent
|
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
$scope.gotoFolder(data);
|
$scope.showFolderInput = false;
|
||||||
|
}
|
||||||
$scope.showFolderInput = false;
|
|
||||||
|
|
||||||
$scope.newFolderName = "";
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$scope.showFolderInput = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.enterSubmitFolder = function(event) {
|
$scope.enterSubmitFolder = function(event) {
|
||||||
@@ -3466,58 +3474,61 @@ angular.module("umbraco")
|
|||||||
|
|
||||||
$scope.gotoFolder = function(folder) {
|
$scope.gotoFolder = function(folder) {
|
||||||
|
|
||||||
if(!$scope.multiPicker) {
|
if (!$scope.multiPicker) {
|
||||||
deselectAllImages($scope.model.selectedImages);
|
deselectAllImages($scope.model.selectedImages);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!folder){
|
if (!folder) {
|
||||||
folder = {id: -1, name: "Media", icon: "icon-folder"};
|
folder = { id: -1, name: "Media", icon: "icon-folder" };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (folder.id > 0) {
|
if (folder.id > 0) {
|
||||||
entityResource.getAncestors(folder.id, "media")
|
entityResource.getAncestors(folder.id, "media")
|
||||||
.then(function(anc) {
|
.then(function(anc) {
|
||||||
// anc.splice(0,1);
|
// anc.splice(0,1);
|
||||||
$scope.path = _.filter(anc, function (f) {
|
$scope.path = _.filter(anc,
|
||||||
return f.path.indexOf($scope.startNodeId) !== -1;
|
function(f) {
|
||||||
});
|
return f.path.indexOf($scope.startNodeId) !== -1;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
else {
|
mediaTypeHelper.getAllowedImagetypes(folder.id)
|
||||||
|
.then(function(types) {
|
||||||
|
$scope.acceptedMediatypes = types;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
$scope.path = [];
|
$scope.path = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
//mediaResource.rootMedia()
|
//mediaResource.rootMedia()
|
||||||
mediaResource.getChildren(folder.id)
|
mediaResource.getChildren(folder.id)
|
||||||
.then(function(data) {
|
.then(function(data) {
|
||||||
$scope.searchTerm = "";
|
$scope.searchTerm = "";
|
||||||
$scope.images = data.items ? data.items : [];
|
$scope.images = data.items ? data.items : [];
|
||||||
|
|
||||||
// set already selected images to selected
|
// set already selected images to selected
|
||||||
for (var folderImageIndex = 0; folderImageIndex < $scope.images.length; folderImageIndex++) {
|
for (var folderImageIndex = 0; folderImageIndex < $scope.images.length; folderImageIndex++) {
|
||||||
|
var folderImage = $scope.images[folderImageIndex];
|
||||||
|
var imageIsSelected = false;
|
||||||
|
|
||||||
var folderImage = $scope.images[folderImageIndex];
|
for (var selectedImageIndex = 0;
|
||||||
var imageIsSelected = false;
|
selectedImageIndex < $scope.model.selectedImages.length;
|
||||||
|
selectedImageIndex++) {
|
||||||
|
var selectedImage = $scope.model.selectedImages[selectedImageIndex];
|
||||||
|
|
||||||
for (var selectedImageIndex = 0; selectedImageIndex < $scope.model.selectedImages.length; selectedImageIndex++) {
|
if (folderImage.key === selectedImage.key) {
|
||||||
var selectedImage = $scope.model.selectedImages[selectedImageIndex];
|
imageIsSelected = true;
|
||||||
|
}
|
||||||
if(folderImage.key === selectedImage.key) {
|
|
||||||
imageIsSelected = true;
|
|
||||||
}
|
}
|
||||||
}
|
if (imageIsSelected) {
|
||||||
|
folderImage.selected = true;
|
||||||
if(imageIsSelected) {
|
}
|
||||||
folderImage.selected = true;
|
}
|
||||||
}
|
});
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$scope.currentFolder = folder;
|
$scope.currentFolder = folder;
|
||||||
|
|
||||||
// for some reason i cannot set cookies with cookieStore
|
// for some reason i cannot set cookies with cookieStore
|
||||||
document.cookie="umbLastOpenedMediaNodeId=" + folder.id;
|
document.cookie = "umbLastOpenedMediaNodeId=" + folder.id;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -3529,52 +3540,40 @@ angular.module("umbraco")
|
|||||||
eventsService.emit("dialogs.mediaPicker.select", image);
|
eventsService.emit("dialogs.mediaPicker.select", image);
|
||||||
selectImage(image);
|
selectImage(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
eventsService.emit("dialogs.mediaPicker.select", image);
|
eventsService.emit("dialogs.mediaPicker.select", image);
|
||||||
|
if ($scope.showDetails) {
|
||||||
if($scope.showDetails) {
|
|
||||||
$scope.target = image;
|
$scope.target = image;
|
||||||
$scope.target.url = mediaHelper.resolveFile(image);
|
$scope.target.url = mediaHelper.resolveFile(image);
|
||||||
$scope.openDetailsDialog();
|
$scope.openDetailsDialog();
|
||||||
} else {
|
} else {
|
||||||
selectImage(image);
|
selectImage(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.clickItemName = function(item) {
|
$scope.clickItemName = function(item) {
|
||||||
if(item.isFolder) {
|
if (item.isFolder) {
|
||||||
$scope.gotoFolder(item);
|
$scope.gotoFolder(item);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function selectImage(image) {
|
function selectImage(image) {
|
||||||
|
if (image.selected) {
|
||||||
if(image.selected) {
|
for (var i = 0; $scope.model.selectedImages.length > i; i++) {
|
||||||
|
|
||||||
for(var i = 0; $scope.model.selectedImages.length > i; i++) {
|
|
||||||
|
|
||||||
var imageInSelection = $scope.model.selectedImages[i];
|
var imageInSelection = $scope.model.selectedImages[i];
|
||||||
if(image.key === imageInSelection.key) {
|
if (image.key === imageInSelection.key) {
|
||||||
image.selected = false;
|
image.selected = false;
|
||||||
$scope.model.selectedImages.splice(i, 1);
|
$scope.model.selectedImages.splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
if (!$scope.multiPicker) {
|
||||||
if(!$scope.multiPicker) {
|
|
||||||
deselectAllImages($scope.model.selectedImages);
|
deselectAllImages($scope.model.selectedImages);
|
||||||
}
|
}
|
||||||
|
|
||||||
image.selected = true;
|
image.selected = true;
|
||||||
$scope.model.selectedImages.push(image);
|
$scope.model.selectedImages.push(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function deselectAllImages(images) {
|
function deselectAllImages(images) {
|
||||||
@@ -3585,68 +3584,68 @@ angular.module("umbraco")
|
|||||||
images.length = 0;
|
images.length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.onUploadComplete = function () {
|
$scope.onUploadComplete = function() {
|
||||||
$scope.gotoFolder($scope.currentFolder);
|
$scope.gotoFolder($scope.currentFolder);
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.onFilesQueue = function(){
|
$scope.onFilesQueue = function() {
|
||||||
$scope.activeDrag = false;
|
$scope.activeDrag = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
//default root item
|
//default root item
|
||||||
if (!$scope.target) {
|
if (!$scope.target) {
|
||||||
|
if ($scope.lastOpenedNode && $scope.lastOpenedNode !== -1) {
|
||||||
|
entityResource.getById($scope.lastOpenedNode, "media")
|
||||||
|
.then(function(node) {
|
||||||
|
// make sure that las opened node is on the same path as start node
|
||||||
|
var nodePath = node.path.split(",");
|
||||||
|
|
||||||
if($scope.lastOpenedNode && $scope.lastOpenedNode !== -1) {
|
if (nodePath.indexOf($scope.startNodeId.toString()) !== -1) {
|
||||||
|
$scope
|
||||||
entityResource.getById($scope.lastOpenedNode, "media")
|
.gotoFolder({ id: $scope.lastOpenedNode, name: "Media", icon: "icon-folder" });
|
||||||
.then(function(node){
|
} else {
|
||||||
|
$scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" });
|
||||||
// make sure that las opened node is on the same path as start node
|
}
|
||||||
var nodePath = node.path.split(",");
|
},
|
||||||
|
function(err) {
|
||||||
if(nodePath.indexOf($scope.startNodeId.toString()) !== -1) {
|
$scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" });
|
||||||
$scope.gotoFolder({id: $scope.lastOpenedNode, name: "Media", icon: "icon-folder"});
|
});
|
||||||
} else {
|
} else {
|
||||||
$scope.gotoFolder({id: $scope.startNodeId, name: "Media", icon: "icon-folder"});
|
$scope.gotoFolder({ id: $scope.startNodeId, name: "Media", icon: "icon-folder" });
|
||||||
}
|
}
|
||||||
|
|
||||||
}, function (err) {
|
|
||||||
$scope.gotoFolder({id: $scope.startNodeId, name: "Media", icon: "icon-folder"});
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$scope.gotoFolder({id: $scope.startNodeId, name: "Media", icon: "icon-folder"});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.openDetailsDialog = function() {
|
$scope.openDetailsDialog = function() {
|
||||||
|
|
||||||
$scope.mediaPickerDetailsOverlay = {};
|
$scope.mediaPickerDetailsOverlay = {};
|
||||||
$scope.mediaPickerDetailsOverlay.show = true;
|
$scope.mediaPickerDetailsOverlay.show = true;
|
||||||
|
|
||||||
$scope.mediaPickerDetailsOverlay.submit = function(model) {
|
$scope.mediaPickerDetailsOverlay.submit = function(model) {
|
||||||
|
$scope.model.selectedImages.push($scope.target);
|
||||||
|
$scope.model.submit($scope.model);
|
||||||
|
|
||||||
$scope.model.selectedImages.push($scope.target);
|
$scope.mediaPickerDetailsOverlay.show = false;
|
||||||
$scope.model.submit($scope.model);
|
$scope.mediaPickerDetailsOverlay = null;
|
||||||
|
};
|
||||||
$scope.mediaPickerDetailsOverlay.show = false;
|
|
||||||
$scope.mediaPickerDetailsOverlay = null;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
$scope.mediaPickerDetailsOverlay.close = function(oldModel) {
|
|
||||||
$scope.mediaPickerDetailsOverlay.show = false;
|
|
||||||
$scope.mediaPickerDetailsOverlay = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
$scope.mediaPickerDetailsOverlay.close = function(oldModel) {
|
||||||
|
$scope.mediaPickerDetailsOverlay.show = false;
|
||||||
|
$scope.mediaPickerDetailsOverlay = null;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
angular.module("umbraco").controller("Umbraco.Overlays.MediaTypePickerController",
|
||||||
|
function ($scope) {
|
||||||
|
|
||||||
|
$scope.select = function(mediatype){
|
||||||
|
$scope.model.selectedType = mediatype;
|
||||||
|
$scope.model.submit($scope.model);
|
||||||
|
$scope.model.show = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
//used for the member picker dialog
|
//used for the member picker dialog
|
||||||
angular.module("umbraco").controller("Umbraco.Overlays.MemberGroupPickerController",
|
angular.module("umbraco").controller("Umbraco.Overlays.MemberGroupPickerController",
|
||||||
function($scope, eventsService, entityResource, searchService, $log, localizationService) {
|
function($scope, eventsService, entityResource, searchService, $log, localizationService) {
|
||||||
@@ -4159,7 +4158,7 @@ angular.module("umbraco").controller("Umbraco.Overlays.TreePickerController",
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
var a = dialogOptions.filter.toLowerCase().split(',');
|
var a = dialogOptions.filter.toLowerCase().replace(/\s/g, '').split(',');
|
||||||
angular.forEach(nodes, function (value, key) {
|
angular.forEach(nodes, function (value, key) {
|
||||||
|
|
||||||
var found = a.indexOf(value.metaData.contentType.toLowerCase()) >= 0;
|
var found = a.indexOf(value.metaData.contentType.toLowerCase()) >= 0;
|
||||||
@@ -5322,9 +5321,42 @@ function startUpVideosDashboardController($scope, xmlhelper, $log, $http) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
angular.module("umbraco").controller("Umbraco.Dashboard.StartupVideosController", startUpVideosDashboardController);
|
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) {
|
function FormsController($scope, $route, $cookieStore, packageResource, localizationService) {
|
||||||
$scope.installForms = function(){
|
$scope.installForms = function(){
|
||||||
$scope.state = localizationService.localize("packager_installStateDownloading");
|
$scope.state = localizationService.localize("packager_installStateDownloading");
|
||||||
@@ -5500,27 +5532,43 @@ function startupLatestEditsController($scope) {
|
|||||||
}
|
}
|
||||||
angular.module("umbraco").controller("Umbraco.Dashboard.StartupLatestEditsController", startupLatestEditsController);
|
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
|
var currentUser = {};
|
||||||
contentTypeResource.getPropertyTypeScaffold(-96)
|
|
||||||
.then(function(dt) {
|
|
||||||
|
|
||||||
$scope.fakeProperty = {
|
userService.getCurrentUser().then(function (user) {
|
||||||
alias: "contents",
|
|
||||||
config: dt.config,
|
currentUser = user;
|
||||||
description: "",
|
|
||||||
editor: dt.editor,
|
// check if the user start node is the dashboard
|
||||||
hideLabel: true,
|
if(currentUser.startMediaId === -1) {
|
||||||
id: 1,
|
|
||||||
label: "Contents:",
|
//get the system media listview
|
||||||
validation: {
|
contentTypeResource.getPropertyTypeScaffold(-96)
|
||||||
mandatory: false,
|
.then(function(dt) {
|
||||||
pattern: null
|
|
||||||
},
|
$scope.fakeProperty = {
|
||||||
value: "",
|
alias: "contents",
|
||||||
view: dt.view
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -9016,6 +9064,7 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
|
|||||||
status: "",
|
status: "",
|
||||||
progress:0
|
progress:0
|
||||||
};
|
};
|
||||||
|
vm.installCompleted = false;
|
||||||
vm.zipFile = {
|
vm.zipFile = {
|
||||||
uploadStatus: "idle",
|
uploadStatus: "idle",
|
||||||
uploadProgress: 0,
|
uploadProgress: 0,
|
||||||
@@ -9038,6 +9087,9 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
|
|||||||
file: file
|
file: file
|
||||||
}).progress(function (evt) {
|
}).progress(function (evt) {
|
||||||
|
|
||||||
|
// set view state to uploading
|
||||||
|
vm.state = 'uploading';
|
||||||
|
|
||||||
// calculate progress in percentage
|
// calculate progress in percentage
|
||||||
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total, 10);
|
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total, 10);
|
||||||
|
|
||||||
@@ -9138,10 +9190,10 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
|
|||||||
localStorageService.set("packageInstallUri", "installed");
|
localStorageService.set("packageInstallUri", "installed");
|
||||||
}
|
}
|
||||||
|
|
||||||
//reload on next digest (after cookie)
|
vm.installState.status = localizationService.localize("packager_installStateCompleted");
|
||||||
$timeout(function () {
|
vm.installCompleted = true;
|
||||||
$window.location.reload(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
},
|
||||||
installError);
|
installError);
|
||||||
@@ -9151,6 +9203,13 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
|
|||||||
//This will return a rejection meaning that the promise change above will stop
|
//This will return a rejection meaning that the promise change above will stop
|
||||||
return $q.reject();
|
return $q.reject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vm.reloadPage = function() {
|
||||||
|
//reload on next digest (after cookie)
|
||||||
|
$timeout(function () {
|
||||||
|
$window.location.reload(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
angular.module("umbraco").controller("Umbraco.Editors.Packages.InstallLocalController", PackagesInstallLocalController);
|
angular.module("umbraco").controller("Umbraco.Editors.Packages.InstallLocalController", PackagesInstallLocalController);
|
||||||
@@ -9252,6 +9311,7 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
|
|||||||
vm.openLightbox = openLightbox;
|
vm.openLightbox = openLightbox;
|
||||||
vm.closeLightbox = closeLightbox;
|
vm.closeLightbox = closeLightbox;
|
||||||
vm.search = search;
|
vm.search = search;
|
||||||
|
vm.installCompleted = false;
|
||||||
|
|
||||||
var currSort = "Latest";
|
var currSort = "Latest";
|
||||||
//used to cancel any request in progress if another one needs to take it's place
|
//used to cancel any request in progress if another one needs to take it's place
|
||||||
@@ -9437,10 +9497,8 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
|
|||||||
localStorageService.set("packageInstallUri", result.postInstallationPath);
|
localStorageService.set("packageInstallUri", result.postInstallationPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
//reload on next digest (after cookie)
|
vm.installState.status = localizationService.localize("packager_installStateCompleted");
|
||||||
$timeout(function() {
|
vm.installCompleted = true;
|
||||||
window.location.reload(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
},
|
||||||
error);
|
error);
|
||||||
@@ -9499,6 +9557,13 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
|
|||||||
searchDebounced();
|
searchDebounced();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vm.reloadPage = function () {
|
||||||
|
//reload on next digest (after cookie)
|
||||||
|
$timeout(function () {
|
||||||
|
window.location.reload(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -11112,7 +11177,7 @@ angular.module("umbraco")
|
|||||||
};
|
};
|
||||||
|
|
||||||
$scope.scaleDown = function(section){
|
$scope.scaleDown = function(section){
|
||||||
var remove = (section.grid > 1) ? 1 : section.grid;
|
var remove = (section.grid > 1) ? 1 : 0;
|
||||||
section.grid = section.grid-remove;
|
section.grid = section.grid-remove;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -11145,9 +11210,12 @@ angular.module("umbraco")
|
|||||||
$scope.currentSection = section;
|
$scope.currentSection = section;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.deleteSection = function(section, template) {
|
||||||
$scope.deleteSection = function(index){
|
if ($scope.currentSection === section) {
|
||||||
$scope.currentTemplate.sections.splice(index, 1);
|
$scope.currentSection = undefined;
|
||||||
|
}
|
||||||
|
var index = template.sections.indexOf(section)
|
||||||
|
template.sections.splice(index, 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.closeSection = function(){
|
$scope.closeSection = function(){
|
||||||
@@ -11182,7 +11250,7 @@ function RowConfigController($scope) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
$scope.scaleDown = function(section) {
|
$scope.scaleDown = function(section) {
|
||||||
var remove = (section.grid > 1) ? 1 : section.grid;
|
var remove = (section.grid > 1) ? 1 : 0;
|
||||||
section.grid = section.grid - remove;
|
section.grid = section.grid - remove;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -11226,9 +11294,14 @@ function RowConfigController($scope) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.deleteArea = function(index) {
|
$scope.deleteArea = function (cell, row) {
|
||||||
$scope.currentRow.areas.splice(index, 1);
|
if ($scope.currentCell === cell) {
|
||||||
|
$scope.currentCell = undefined;
|
||||||
|
}
|
||||||
|
var index = row.areas.indexOf(cell)
|
||||||
|
row.areas.splice(index, 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.closeArea = function() {
|
$scope.closeArea = function() {
|
||||||
$scope.currentCell = undefined;
|
$scope.currentCell = undefined;
|
||||||
};
|
};
|
||||||
@@ -11852,6 +11925,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) {
|
$scope.editGridItemSettings = function (gridItem, itemType) {
|
||||||
|
|
||||||
placeHolder = "{0}";
|
placeHolder = "{0}";
|
||||||
@@ -11861,8 +11965,8 @@ angular.module("umbraco")
|
|||||||
styles = null;
|
styles = null;
|
||||||
config = angular.copy(gridItem.editor.config.settings);
|
config = angular.copy(gridItem.editor.config.settings);
|
||||||
} else {
|
} else {
|
||||||
styles = _.filter(angular.copy($scope.model.config.items.styles), 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 (item.applyTo === undefined || item.applyTo === itemType); });
|
config = _.filter(angular.copy($scope.model.config.items.config), function (item) { return shouldApply(item, itemType, gridItem); });
|
||||||
}
|
}
|
||||||
|
|
||||||
if(angular.isObject(gridItem.config)){
|
if(angular.isObject(gridItem.config)){
|
||||||
@@ -12437,6 +12541,7 @@ angular.module("umbraco")
|
|||||||
|
|
||||||
layouts:[
|
layouts:[
|
||||||
{
|
{
|
||||||
|
label: "Headline",
|
||||||
name: "Headline",
|
name: "Headline",
|
||||||
areas: [
|
areas: [
|
||||||
{
|
{
|
||||||
@@ -12446,6 +12551,7 @@ angular.module("umbraco")
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
label: "Article",
|
||||||
name: "Article",
|
name: "Article",
|
||||||
areas: [
|
areas: [
|
||||||
{
|
{
|
||||||
@@ -12809,7 +12915,7 @@ angular.module('umbraco')
|
|||||||
//NOTE: The 'entity' can be either a normal media entity or an "entity" returned from the entityResource
|
//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.
|
// 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) {
|
mediaHelper.registerFileResolver("Umbraco.ImageCropper", function (property, entity, thumbnail) {
|
||||||
if (property.value.src) {
|
if (property.value && property.value.src) {
|
||||||
|
|
||||||
if (thumbnail === true) {
|
if (thumbnail === true) {
|
||||||
return property.value.src + "?width=500&mode=max&animationprocessmode=first";
|
return property.value.src + "?width=500&mode=max&animationprocessmode=first";
|
||||||
@@ -13142,7 +13248,7 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
|
|||||||
(function() {
|
(function() {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function ListViewGridLayoutController($scope, $routeParams, mediaHelper, mediaResource, $location, listViewHelper) {
|
function ListViewGridLayoutController($scope, $routeParams, mediaHelper, mediaResource, $location, listViewHelper, mediaTypeHelper) {
|
||||||
|
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
@@ -13154,6 +13260,7 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
|
|||||||
vm.mediaDetailsTooltip = {};
|
vm.mediaDetailsTooltip = {};
|
||||||
vm.itemsWithoutFolders = [];
|
vm.itemsWithoutFolders = [];
|
||||||
vm.isRecycleBin = $scope.contentId === '-21' || $scope.contentId === '-20';
|
vm.isRecycleBin = $scope.contentId === '-21' || $scope.contentId === '-20';
|
||||||
|
vm.acceptedMediatypes = [];
|
||||||
|
|
||||||
vm.dragEnter = dragEnter;
|
vm.dragEnter = dragEnter;
|
||||||
vm.dragLeave = dragLeave;
|
vm.dragLeave = dragLeave;
|
||||||
@@ -13168,6 +13275,13 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
|
|||||||
|
|
||||||
function activate() {
|
function activate() {
|
||||||
vm.itemsWithoutFolders = filterOutFolders($scope.items);
|
vm.itemsWithoutFolders = filterOutFolders($scope.items);
|
||||||
|
|
||||||
|
if($scope.entityType === 'media') {
|
||||||
|
mediaTypeHelper.getAllowedImagetypes(vm.nodeId).then(function (types) {
|
||||||
|
vm.acceptedMediatypes = types;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function filterOutFolders(items) {
|
function filterOutFolders(items) {
|
||||||
@@ -13249,7 +13363,7 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
|
|||||||
(function () {
|
(function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function ListViewListLayoutController($scope, listViewHelper, $location, mediaHelper) {
|
function ListViewListLayoutController($scope, listViewHelper, $location, mediaHelper, mediaTypeHelper) {
|
||||||
|
|
||||||
var vm = this;
|
var vm = this;
|
||||||
|
|
||||||
@@ -13259,6 +13373,7 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
|
|||||||
vm.maxFileSize = Umbraco.Sys.ServerVariables.umbracoSettings.maxFileSize + "KB";
|
vm.maxFileSize = Umbraco.Sys.ServerVariables.umbracoSettings.maxFileSize + "KB";
|
||||||
vm.activeDrag = false;
|
vm.activeDrag = false;
|
||||||
vm.isRecycleBin = $scope.contentId === '-21' || $scope.contentId === '-20';
|
vm.isRecycleBin = $scope.contentId === '-21' || $scope.contentId === '-20';
|
||||||
|
vm.acceptedMediatypes = [];
|
||||||
|
|
||||||
vm.selectItem = selectItem;
|
vm.selectItem = selectItem;
|
||||||
vm.clickItem = clickItem;
|
vm.clickItem = clickItem;
|
||||||
@@ -13271,38 +13386,49 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
|
|||||||
vm.onFilesQueue = onFilesQueue;
|
vm.onFilesQueue = onFilesQueue;
|
||||||
vm.onUploadComplete = onUploadComplete;
|
vm.onUploadComplete = onUploadComplete;
|
||||||
|
|
||||||
|
function activate() {
|
||||||
|
|
||||||
|
if ($scope.entityType === 'media') {
|
||||||
|
mediaTypeHelper.getAllowedImagetypes(vm.nodeId).then(function (types) {
|
||||||
|
vm.acceptedMediatypes = types;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function selectAll($event) {
|
function selectAll($event) {
|
||||||
listViewHelper.selectAllItems($scope.items, $scope.selection, $event);
|
listViewHelper.selectAllItems($scope.items, $scope.selection, $event);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSelectedAll() {
|
function isSelectedAll() {
|
||||||
return listViewHelper.isSelectedAll($scope.items, $scope.selection);
|
return listViewHelper.isSelectedAll($scope.items, $scope.selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectItem(selectedItem, $index, $event) {
|
function selectItem(selectedItem, $index, $event) {
|
||||||
listViewHelper.selectHandler(selectedItem, $index, $scope.items, $scope.selection, $event);
|
listViewHelper.selectHandler(selectedItem, $index, $scope.items, $scope.selection, $event);
|
||||||
}
|
}
|
||||||
|
|
||||||
function clickItem(item) {
|
function clickItem(item) {
|
||||||
$location.path($scope.entityType + '/' +$scope.entityType + '/edit/' +item.id);
|
// if item.id is 2147483647 (int.MaxValue) use item.key
|
||||||
}
|
$location.path($scope.entityType + '/' +$scope.entityType + '/edit/' + (item.id === 2147483647 ? item.key : item.id));
|
||||||
|
}
|
||||||
|
|
||||||
function isSortDirection(col, direction) {
|
function isSortDirection(col, direction) {
|
||||||
return listViewHelper.setSortingDirection(col, direction, $scope.options);
|
return listViewHelper.setSortingDirection(col, direction, $scope.options);
|
||||||
}
|
}
|
||||||
|
|
||||||
function sort(field, allow, isSystem) {
|
function sort(field, allow, isSystem) {
|
||||||
if (allow) {
|
if (allow) {
|
||||||
$scope.options.orderBySystemField = isSystem;
|
$scope.options.orderBySystemField = isSystem;
|
||||||
listViewHelper.setSorting(field, allow, $scope.options);
|
listViewHelper.setSorting(field, allow, $scope.options);
|
||||||
$scope.getContent($scope.contentId);
|
$scope.getContent($scope.contentId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dropzone upload functions
|
// Dropzone upload functions
|
||||||
function dragEnter(el, event) {
|
function dragEnter(el, event) {
|
||||||
vm.activeDrag = true;
|
vm.activeDrag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function dragLeave(el, event) {
|
function dragLeave(el, event) {
|
||||||
vm.activeDrag = false;
|
vm.activeDrag = false;
|
||||||
@@ -13310,11 +13436,13 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
|
|||||||
|
|
||||||
function onFilesQueue() {
|
function onFilesQueue() {
|
||||||
vm.activeDrag = false;
|
vm.activeDrag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onUploadComplete() {
|
function onUploadComplete() {
|
||||||
$scope.getContent($scope.contentId);
|
$scope.getContent($scope.contentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
activate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15695,7 +15823,7 @@ function sliderController($scope, $log, $element, assetsService, angularHelper)
|
|||||||
angular.module("umbraco").controller("Umbraco.PropertyEditors.SliderController", sliderController);
|
angular.module("umbraco").controller("Umbraco.PropertyEditors.SliderController", sliderController);
|
||||||
angular.module("umbraco")
|
angular.module("umbraco")
|
||||||
.controller("Umbraco.PropertyEditors.TagsController",
|
.controller("Umbraco.PropertyEditors.TagsController",
|
||||||
function ($rootScope, $scope, $log, assetsService, umbRequestHelper, angularHelper, $timeout, $element) {
|
function ($rootScope, $scope, $log, assetsService, umbRequestHelper, angularHelper, $timeout, $element, $sanitize) {
|
||||||
|
|
||||||
var $typeahead;
|
var $typeahead;
|
||||||
|
|
||||||
@@ -15736,6 +15864,7 @@ angular.module("umbraco")
|
|||||||
|
|
||||||
//Helper method to add a tag on enter or on typeahead select
|
//Helper method to add a tag on enter or on typeahead select
|
||||||
function addTag(tagToAdd) {
|
function addTag(tagToAdd) {
|
||||||
|
tagToAdd = String(tagToAdd).htmlEncode();
|
||||||
if (tagToAdd != null && tagToAdd.length > 0) {
|
if (tagToAdd != null && tagToAdd.length > 0) {
|
||||||
if ($scope.model.value.indexOf(tagToAdd) < 0) {
|
if ($scope.model.value.indexOf(tagToAdd) < 0) {
|
||||||
$scope.model.value.push(tagToAdd);
|
$scope.model.value.push(tagToAdd);
|
||||||
|
|||||||
@@ -4275,9 +4275,13 @@ angular.module("umbraco.directives")
|
|||||||
$timeout(function(){
|
$timeout(function(){
|
||||||
setDimensions();
|
setDimensions();
|
||||||
});
|
});
|
||||||
var offsetX = $overlay[0].offsetLeft;
|
// Make sure we can find the offset values for the overlay(dot) before calculating
|
||||||
var offsetY = $overlay[0].offsetTop;
|
// fixes issue with resize event when printing the page (ex. hitting ctrl+p inside the rte)
|
||||||
calculateGravity(offsetX, offsetY);
|
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 curr = $(event.target); // active tab
|
||||||
var prev = $(event.relatedTarget); // previous tab
|
var prev = $(event.relatedTarget); // previous tab
|
||||||
|
|
||||||
|
$scope.$apply();
|
||||||
|
|
||||||
for (var c in callbacks) {
|
for (var c in callbacks) {
|
||||||
callbacks[c].apply(this, [{current: curr, previous: prev}]);
|
callbacks[c].apply(this, [{current: curr, previous: prev}]);
|
||||||
}
|
}
|
||||||
@@ -9719,215 +9725,226 @@ Use this directive to render a tooltip.
|
|||||||
/*
|
/*
|
||||||
TODO
|
TODO
|
||||||
.directive("umbFileDrop", function ($timeout, $upload, localizationService, umbRequestHelper){
|
.directive("umbFileDrop", function ($timeout, $upload, localizationService, umbRequestHelper){
|
||||||
|
return{
|
||||||
return{
|
restrict: "A",
|
||||||
restrict: "A",
|
link: function(scope, element, attrs){
|
||||||
link: function(scope, element, attrs){
|
//load in the options model
|
||||||
|
}
|
||||||
//load in the options model
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
*/
|
*/
|
||||||
|
|
||||||
angular.module("umbraco.directives")
|
angular.module("umbraco.directives")
|
||||||
|
.directive('umbFileDropzone',
|
||||||
|
function($timeout, Upload, localizationService, umbRequestHelper) {
|
||||||
|
return {
|
||||||
|
restrict: 'E',
|
||||||
|
replace: true,
|
||||||
|
templateUrl: 'views/components/upload/umb-file-dropzone.html',
|
||||||
|
scope: {
|
||||||
|
parentId: '@',
|
||||||
|
contentTypeAlias: '@',
|
||||||
|
propertyAlias: '@',
|
||||||
|
accept: '@',
|
||||||
|
maxFileSize: '@',
|
||||||
|
|
||||||
.directive('umbFileDropzone', function ($timeout, Upload, localizationService, umbRequestHelper) {
|
compact: '@',
|
||||||
return {
|
hideDropzone: '@',
|
||||||
|
acceptedMediatypes: '=',
|
||||||
|
|
||||||
restrict: 'E',
|
filesQueued: '=',
|
||||||
replace: true,
|
handleFile: '=',
|
||||||
|
filesUploaded: '='
|
||||||
|
},
|
||||||
|
link: function(scope, element, attrs) {
|
||||||
|
scope.queue = [];
|
||||||
|
scope.done = [];
|
||||||
|
scope.rejected = [];
|
||||||
|
scope.currentFile = undefined;
|
||||||
|
|
||||||
templateUrl: 'views/components/upload/umb-file-dropzone.html',
|
function _filterFile(file) {
|
||||||
|
var ignoreFileNames = ['Thumbs.db'];
|
||||||
|
var ignoreFileTypes = ['directory'];
|
||||||
|
|
||||||
scope: {
|
// ignore files with names from the list
|
||||||
parentId: '@',
|
// ignore files with types from the list
|
||||||
contentTypeAlias: '@',
|
// ignore files which starts with "."
|
||||||
propertyAlias: '@',
|
if (ignoreFileNames.indexOf(file.name) === -1 &&
|
||||||
accept: '@',
|
ignoreFileTypes.indexOf(file.type) === -1 &&
|
||||||
maxFileSize: '@',
|
file.name.indexOf(".") !== 0) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
compact: '@',
|
function _filesQueued(files, event) {
|
||||||
hideDropzone: '@',
|
//Push into the queue
|
||||||
|
angular.forEach(files,
|
||||||
|
function(file) {
|
||||||
|
|
||||||
filesQueued: '=',
|
if (_filterFile(file) === true) {
|
||||||
handleFile: '=',
|
|
||||||
filesUploaded: '='
|
|
||||||
},
|
|
||||||
|
|
||||||
link: function(scope, element, attrs) {
|
if (file.$error) {
|
||||||
|
scope.rejected.push(file);
|
||||||
|
} else {
|
||||||
|
scope.queue.push(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
scope.queue = [];
|
//when queue is done, kick the uploader
|
||||||
scope.done = [];
|
if (!scope.working) {
|
||||||
scope.rejected = [];
|
// Upload not allowed
|
||||||
scope.currentFile = undefined;
|
if (!scope.acceptedMediatypes || !scope.acceptedMediatypes.length) {
|
||||||
|
files.map(function(file) {
|
||||||
|
file.uploadStatus = "error";
|
||||||
|
file.serverErrorMessage = "File type is not allowed here";
|
||||||
|
scope.rejected.push(file);
|
||||||
|
});
|
||||||
|
scope.queue = [];
|
||||||
|
}
|
||||||
|
// One allowed type
|
||||||
|
if (scope.acceptedMediatypes && scope.acceptedMediatypes.length === 1) {
|
||||||
|
// Standard setup - set alias to auto select to let the server best decide which media type to use
|
||||||
|
if (scope.acceptedMediatypes[0].alias === 'Image') {
|
||||||
|
scope.contentTypeAlias = "umbracoAutoSelect";
|
||||||
|
} else {
|
||||||
|
scope.contentTypeAlias = scope.acceptedMediatypes[0].alias;
|
||||||
|
}
|
||||||
|
|
||||||
function _filterFile(file) {
|
_processQueueItem();
|
||||||
|
}
|
||||||
|
// More than one, open dialog
|
||||||
|
if (scope.acceptedMediatypes && scope.acceptedMediatypes.length > 1) {
|
||||||
|
_chooseMediaType();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var ignoreFileNames = ['Thumbs.db'];
|
function _processQueueItem() {
|
||||||
var ignoreFileTypes = ['directory'];
|
if (scope.queue.length > 0) {
|
||||||
|
scope.currentFile = scope.queue.shift();
|
||||||
|
_upload(scope.currentFile);
|
||||||
|
} else if (scope.done.length > 0) {
|
||||||
|
if (scope.filesUploaded) {
|
||||||
|
//queue is empty, trigger the done action
|
||||||
|
scope.filesUploaded(scope.done);
|
||||||
|
}
|
||||||
|
|
||||||
// ignore files with names from the list
|
//auto-clear the done queue after 3 secs
|
||||||
// ignore files with types from the list
|
var currentLength = scope.done.length;
|
||||||
// ignore files which starts with "."
|
$timeout(function() {
|
||||||
if(ignoreFileNames.indexOf(file.name) === -1 &&
|
scope.done.splice(0, currentLength);
|
||||||
ignoreFileTypes.indexOf(file.type) === -1 &&
|
},
|
||||||
file.name.indexOf(".") !== 0) {
|
3000);
|
||||||
return true;
|
}
|
||||||
} else {
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
function _upload(file) {
|
||||||
|
|
||||||
function _filesQueued(files, event){
|
scope.propertyAlias = scope.propertyAlias ? scope.propertyAlias : "umbracoFile";
|
||||||
|
scope.contentTypeAlias = scope.contentTypeAlias ? scope.contentTypeAlias : "Image";
|
||||||
|
|
||||||
//Push into the queue
|
Upload.upload({
|
||||||
angular.forEach(files, function(file){
|
url: umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostAddFile"),
|
||||||
|
fields: {
|
||||||
|
'currentFolder': scope.parentId,
|
||||||
|
'contentTypeAlias': scope.contentTypeAlias,
|
||||||
|
'propertyAlias': scope.propertyAlias,
|
||||||
|
'path': file.path
|
||||||
|
},
|
||||||
|
file: file
|
||||||
|
})
|
||||||
|
.progress(function(evt) {
|
||||||
|
// calculate progress in percentage
|
||||||
|
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total, 10);
|
||||||
|
// set percentage property on file
|
||||||
|
file.uploadProgress = progressPercentage;
|
||||||
|
// set uploading status on file
|
||||||
|
file.uploadStatus = "uploading";
|
||||||
|
})
|
||||||
|
.success(function(data, status, headers, config) {
|
||||||
|
if (data.notifications && data.notifications.length > 0) {
|
||||||
|
// set error status on file
|
||||||
|
file.uploadStatus = "error";
|
||||||
|
// Throw message back to user with the cause of the error
|
||||||
|
file.serverErrorMessage = data.notifications[0].message;
|
||||||
|
// Put the file in the rejected pool
|
||||||
|
scope.rejected.push(file);
|
||||||
|
} else {
|
||||||
|
// set done status on file
|
||||||
|
file.uploadStatus = "done";
|
||||||
|
// set date/time for when done - used for sorting
|
||||||
|
file.doneDate = new Date();
|
||||||
|
// Put the file in the done pool
|
||||||
|
scope.done.push(file);
|
||||||
|
}
|
||||||
|
scope.currentFile = undefined;
|
||||||
|
//after processing, test if everthing is done
|
||||||
|
_processQueueItem();
|
||||||
|
})
|
||||||
|
.error(function(evt, status, headers, config) {
|
||||||
|
// set status done
|
||||||
|
file.uploadStatus = "error";
|
||||||
|
//if the service returns a detailed error
|
||||||
|
if (evt.InnerException) {
|
||||||
|
file.serverErrorMessage = evt.InnerException.ExceptionMessage;
|
||||||
|
//Check if its the common "too large file" exception
|
||||||
|
if (evt.InnerException.StackTrace &&
|
||||||
|
evt.InnerException.StackTrace.indexOf("ValidateRequestEntityLength") > 0) {
|
||||||
|
file.serverErrorMessage = "File too large to upload";
|
||||||
|
}
|
||||||
|
} else if (evt.Message) {
|
||||||
|
file.serverErrorMessage = evt.Message;
|
||||||
|
}
|
||||||
|
// If file not found, server will return a 404 and display this message
|
||||||
|
if (status === 404) {
|
||||||
|
file.serverErrorMessage = "File not found";
|
||||||
|
}
|
||||||
|
//after processing, test if everthing is done
|
||||||
|
scope.rejected.push(file);
|
||||||
|
scope.currentFile = undefined;
|
||||||
|
_processQueueItem();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if(_filterFile(file) === true) {
|
function _chooseMediaType() {
|
||||||
|
scope.mediatypepickerOverlay = {
|
||||||
|
view: "mediatypepicker",
|
||||||
|
title: "Choose media type",
|
||||||
|
acceptedMediatypes: scope.acceptedMediatypes,
|
||||||
|
hideSubmitButton: true,
|
||||||
|
show: true,
|
||||||
|
submit: function(model) {
|
||||||
|
scope.contentTypeAlias = model.selectedType.alias;
|
||||||
|
scope.mediatypepickerOverlay.show = false;
|
||||||
|
scope.mediatypepickerOverlay = null;
|
||||||
|
_processQueueItem();
|
||||||
|
},
|
||||||
|
close: function(oldModel) {
|
||||||
|
|
||||||
if(file.$error) {
|
scope.queue.map(function(file) {
|
||||||
scope.rejected.push(file);
|
file.uploadStatus = "error";
|
||||||
} else {
|
file.serverErrorMessage = "Cannot upload this file, no mediatype selected";
|
||||||
scope.queue.push(file);
|
scope.rejected.push(file);
|
||||||
}
|
});
|
||||||
|
scope.queue = [];
|
||||||
|
scope.mediatypepickerOverlay.show = false;
|
||||||
|
scope.mediatypepickerOverlay = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
scope.handleFiles = function(files, event) {
|
||||||
|
if (scope.filesQueued) {
|
||||||
});
|
scope.filesQueued(files, event);
|
||||||
|
}
|
||||||
//when queue is done, kick the uploader
|
_filesQueued(files, event);
|
||||||
if(!scope.working){
|
};
|
||||||
_processQueueItem();
|
}
|
||||||
}
|
};
|
||||||
}
|
});
|
||||||
|
|
||||||
|
|
||||||
function _processQueueItem(){
|
|
||||||
|
|
||||||
if(scope.queue.length > 0){
|
|
||||||
scope.currentFile = scope.queue.shift();
|
|
||||||
_upload(scope.currentFile);
|
|
||||||
}else if(scope.done.length > 0){
|
|
||||||
|
|
||||||
if(scope.filesUploaded){
|
|
||||||
//queue is empty, trigger the done action
|
|
||||||
scope.filesUploaded(scope.done);
|
|
||||||
}
|
|
||||||
|
|
||||||
//auto-clear the done queue after 3 secs
|
|
||||||
var currentLength = scope.done.length;
|
|
||||||
$timeout(function(){
|
|
||||||
scope.done.splice(0, currentLength);
|
|
||||||
}, 3000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function _upload(file) {
|
|
||||||
|
|
||||||
scope.propertyAlias = scope.propertyAlias ? scope.propertyAlias : "umbracoFile";
|
|
||||||
scope.contentTypeAlias = scope.contentTypeAlias ? scope.contentTypeAlias : "Image";
|
|
||||||
|
|
||||||
Upload.upload({
|
|
||||||
url: umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostAddFile"),
|
|
||||||
fields: {
|
|
||||||
'currentFolder': scope.parentId,
|
|
||||||
'contentTypeAlias': scope.contentTypeAlias,
|
|
||||||
'propertyAlias': scope.propertyAlias,
|
|
||||||
'path': file.path
|
|
||||||
},
|
|
||||||
file: file
|
|
||||||
}).progress(function (evt) {
|
|
||||||
|
|
||||||
// calculate progress in percentage
|
|
||||||
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total, 10);
|
|
||||||
|
|
||||||
// set percentage property on file
|
|
||||||
file.uploadProgress = progressPercentage;
|
|
||||||
|
|
||||||
// set uploading status on file
|
|
||||||
file.uploadStatus = "uploading";
|
|
||||||
|
|
||||||
}).success(function (data, status, headers, config) {
|
|
||||||
|
|
||||||
if(data.notifications && data.notifications.length > 0) {
|
|
||||||
|
|
||||||
// set error status on file
|
|
||||||
file.uploadStatus = "error";
|
|
||||||
|
|
||||||
// Throw message back to user with the cause of the error
|
|
||||||
file.serverErrorMessage = data.notifications[0].message;
|
|
||||||
|
|
||||||
// Put the file in the rejected pool
|
|
||||||
scope.rejected.push(file);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// set done status on file
|
|
||||||
file.uploadStatus = "done";
|
|
||||||
|
|
||||||
// set date/time for when done - used for sorting
|
|
||||||
file.doneDate = new Date();
|
|
||||||
|
|
||||||
// Put the file in the done pool
|
|
||||||
scope.done.push(file);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
scope.currentFile = undefined;
|
|
||||||
|
|
||||||
//after processing, test if everthing is done
|
|
||||||
_processQueueItem();
|
|
||||||
|
|
||||||
}).error( function (evt, status, headers, config) {
|
|
||||||
|
|
||||||
// set status done
|
|
||||||
file.uploadStatus = "error";
|
|
||||||
|
|
||||||
//if the service returns a detailed error
|
|
||||||
if (evt.InnerException) {
|
|
||||||
file.serverErrorMessage = evt.InnerException.ExceptionMessage;
|
|
||||||
|
|
||||||
//Check if its the common "too large file" exception
|
|
||||||
if (evt.InnerException.StackTrace && evt.InnerException.StackTrace.indexOf("ValidateRequestEntityLength") > 0) {
|
|
||||||
file.serverErrorMessage = "File too large to upload";
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (evt.Message) {
|
|
||||||
file.serverErrorMessage = evt.Message;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If file not found, server will return a 404 and display this message
|
|
||||||
if(status === 404 ) {
|
|
||||||
file.serverErrorMessage = "File not found";
|
|
||||||
}
|
|
||||||
|
|
||||||
//after processing, test if everthing is done
|
|
||||||
scope.rejected.push(file);
|
|
||||||
scope.currentFile = undefined;
|
|
||||||
|
|
||||||
_processQueueItem();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
scope.handleFiles = function(files, event){
|
|
||||||
if(scope.filesQueued){
|
|
||||||
scope.filesQueued(files, event);
|
|
||||||
}
|
|
||||||
|
|
||||||
_filesQueued(files, event);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc directive
|
* @ngdoc directive
|
||||||
|
|||||||
@@ -1389,7 +1389,6 @@ function dashboardResource($q, $http, umbRequestHelper) {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
getDashboard: function (section) {
|
getDashboard: function (section) {
|
||||||
|
|
||||||
return umbRequestHelper.resourcePromise(
|
return umbRequestHelper.resourcePromise(
|
||||||
$http.get(
|
$http.get(
|
||||||
umbRequestHelper.getApiUrl(
|
umbRequestHelper.getApiUrl(
|
||||||
@@ -1397,7 +1396,53 @@ function dashboardResource($q, $http, umbRequestHelper) {
|
|||||||
"GetDashboard",
|
"GetDashboard",
|
||||||
[{ section: section }])),
|
[{ section: section }])),
|
||||||
'Failed to get dashboard ' + 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ angular.module('umbraco.security.retryQueue', [])
|
|||||||
.factory('securityRetryQueue', ['$q', '$log', function ($q, $log) {
|
.factory('securityRetryQueue', ['$q', '$log', function ($q, $log) {
|
||||||
|
|
||||||
var retryQueue = [];
|
var retryQueue = [];
|
||||||
|
var retryUser = null;
|
||||||
|
|
||||||
var service = {
|
var service = {
|
||||||
// The security service puts its own handler in here!
|
// The security service puts its own handler in here!
|
||||||
onItemAddedCallbacks: [],
|
onItemAddedCallbacks: [],
|
||||||
@@ -35,13 +37,20 @@ angular.module('umbraco.security.retryQueue', [])
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
pushRetryFn: function(reason, retryFn) {
|
pushRetryFn: function(reason, userName, retryFn) {
|
||||||
// The reason parameter is optional
|
// The reason parameter is optional
|
||||||
if ( arguments.length === 1) {
|
if ( arguments.length === 2) {
|
||||||
retryFn = reason;
|
retryFn = userName;
|
||||||
|
userName = reason;
|
||||||
reason = undefined;
|
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
|
// The deferred object that will be resolved or rejected by calling retry or cancel
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var retryItem = {
|
var retryItem = {
|
||||||
@@ -71,8 +80,19 @@ angular.module('umbraco.security.retryQueue', [])
|
|||||||
while(service.hasMore()) {
|
while(service.hasMore()) {
|
||||||
retryQueue.shift().cancel();
|
retryQueue.shift().cancel();
|
||||||
}
|
}
|
||||||
|
retryUser = null;
|
||||||
},
|
},
|
||||||
retryAll: function() {
|
retryAll: function (userName) {
|
||||||
|
|
||||||
|
if (retryUser == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retryUser !== userName) {
|
||||||
|
service.cancelAll();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
while(service.hasMore()) {
|
while(service.hasMore()) {
|
||||||
retryQueue.shift().retry();
|
retryQueue.shift().retry();
|
||||||
}
|
}
|
||||||
@@ -118,10 +138,17 @@ angular.module('umbraco.security.interceptor')
|
|||||||
//A 401 means that the user is not logged in
|
//A 401 means that the user is not logged in
|
||||||
if (originalResponse.status === 401) {
|
if (originalResponse.status === 401) {
|
||||||
|
|
||||||
// The request bounced because it was not authorized - add a new request to the retry queue
|
var userService = $injector.get('userService'); // see above
|
||||||
promise = queue.pushRetryFn('unauthorized-server', function retryRequest() {
|
|
||||||
|
//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
|
// We must use $injector to get the $http service to prevent circular dependency
|
||||||
return $injector.get('$http')(originalResponse.config);
|
return $injector.get('$http')(originalResponse.config);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (originalResponse.status === 404) {
|
else if (originalResponse.status === 404) {
|
||||||
|
|||||||
@@ -2195,7 +2195,7 @@ angular.module('umbraco.services')
|
|||||||
* @description
|
* @description
|
||||||
* Opens a content picker tree in a modal, the callback returns an array of selected documents
|
* 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 {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
|
* @param {Function} options.callback callback function
|
||||||
* @returns {Object} modal object
|
* @returns {Object} modal object
|
||||||
*/
|
*/
|
||||||
@@ -4880,6 +4880,65 @@ function mediaHelper(umbRequestHelper) {
|
|||||||
};
|
};
|
||||||
}angular.module('umbraco.services').factory('mediaHelper', mediaHelper);
|
}angular.module('umbraco.services').factory('mediaHelper', mediaHelper);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc service
|
||||||
|
* @name umbraco.services.mediaTypeHelper
|
||||||
|
* @description A helper service for the media types
|
||||||
|
**/
|
||||||
|
function mediaTypeHelper(mediaTypeResource, $q) {
|
||||||
|
|
||||||
|
var mediaTypeHelperService = {
|
||||||
|
|
||||||
|
getAllowedImagetypes: function (mediaId){
|
||||||
|
|
||||||
|
// Get All allowedTypes
|
||||||
|
return mediaTypeResource.getAllowedTypes(mediaId)
|
||||||
|
.then(function(types){
|
||||||
|
|
||||||
|
var allowedQ = types.map(function(type){
|
||||||
|
return mediaTypeResource.getById(type.id);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Get full list
|
||||||
|
return $q.all(allowedQ).then(function(fullTypes){
|
||||||
|
|
||||||
|
// Find all the media types with an Image Cropper property editor
|
||||||
|
var filteredTypes = mediaTypeHelperService.getTypeWithEditor(fullTypes, ['Umbraco.ImageCropper']);
|
||||||
|
|
||||||
|
// If there is only one media type with an Image Cropper we will return this one
|
||||||
|
if(filteredTypes.length === 1) {
|
||||||
|
return filteredTypes;
|
||||||
|
// If there is more than one Image cropper, custom media types have been added, and we return all media types with and Image cropper or UploadField
|
||||||
|
} else {
|
||||||
|
return mediaTypeHelperService.getTypeWithEditor(fullTypes, ['Umbraco.ImageCropper', 'Umbraco.UploadField']);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
getTypeWithEditor: function (types, editors) {
|
||||||
|
|
||||||
|
return types.filter(function (mediatype) {
|
||||||
|
for (var i = 0; i < mediatype.groups.length; i++) {
|
||||||
|
var group = mediatype.groups[i];
|
||||||
|
for (var j = 0; j < group.properties.length; j++) {
|
||||||
|
var property = group.properties[j];
|
||||||
|
if( editors.indexOf(property.editor) !== -1 ) {
|
||||||
|
return mediatype;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
return mediaTypeHelperService;
|
||||||
|
}
|
||||||
|
angular.module('umbraco.services').factory('mediaTypeHelper', mediaTypeHelper);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngdoc service
|
* @ngdoc service
|
||||||
* @name umbraco.services.umbracoMenuActions
|
* @name umbraco.services.umbracoMenuActions
|
||||||
@@ -8512,7 +8571,7 @@ angular.module('umbraco.services')
|
|||||||
loginDialog = null;
|
loginDialog = null;
|
||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
securityRetryQueue.retryAll();
|
securityRetryQueue.retryAll(currentUser.name);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
securityRetryQueue.cancelAll();
|
securityRetryQueue.cancelAll();
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ angular.module('umbraco.mocks').
|
|||||||
"view": "textstring",
|
"view": "textstring",
|
||||||
"icon": "icon-quote",
|
"icon": "icon-quote",
|
||||||
"config": {
|
"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>"
|
"markup": "<blockquote>#value#</blockquote>"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1486,7 +1486,7 @@ angular.module('umbraco.mocks').
|
|||||||
"content_nodeName": "Page Title",
|
"content_nodeName": "Page Title",
|
||||||
"content_otherElements": "Properties",
|
"content_otherElements": "Properties",
|
||||||
"content_parentNotPublished": "This document is published but is not visible because the parent '%0%' is unpublished",
|
"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_publish": "Publish",
|
||||||
"content_publishStatus": "Publication Status",
|
"content_publishStatus": "Publication Status",
|
||||||
"content_releaseDate": "Publish at",
|
"content_releaseDate": "Publish at",
|
||||||
|
|||||||
+1201
-585
File diff suppressed because it is too large
Load Diff
@@ -69,6 +69,22 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!String.prototype.htmlEncode) {
|
||||||
|
/** htmlEncode extension method for string */
|
||||||
|
String.prototype.htmlEncode = function () {
|
||||||
|
//create a in-memory div, set it's inner text(which jQuery automatically encodes)
|
||||||
|
//then grab the encoded contents back out. The div never exists on the page.
|
||||||
|
return $('<div/>').text(this).html();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!String.prototype.htmlDecode) {
|
||||||
|
/** htmlDecode extension method for string */
|
||||||
|
String.prototype.htmlDecode = function () {
|
||||||
|
return $('<div/>').html(this).text();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (!String.prototype.startsWith) {
|
if (!String.prototype.startsWith) {
|
||||||
/** startsWith extension method for string */
|
/** startsWith extension method for string */
|
||||||
String.prototype.startsWith = function (str) {
|
String.prototype.startsWith = function (str) {
|
||||||
|
|||||||
@@ -281,7 +281,7 @@ Umbraco.Application.Actions = function() {
|
|||||||
actionRePublish: function() {
|
actionRePublish: function() {
|
||||||
/// <summary></summary>
|
/// <summary></summary>
|
||||||
|
|
||||||
UmbClientMgr.openModalWindow('dialogs/republish.aspx?rnd=' + this._utils.generateRandom(), 'Republishing entire site', true, 450, 210);
|
UmbClientMgr.openModalWindow('dialogs/republish.aspx?rnd=' + this._utils.generateRandom(), uiKeys['actions_republish'], true, 450, 210);
|
||||||
},
|
},
|
||||||
|
|
||||||
actionAssignDomain: function() {
|
actionAssignDomain: function() {
|
||||||
|
|||||||
@@ -389,12 +389,12 @@ Umbraco.Sys.registerNamespace("Umbraco.Controls");
|
|||||||
processData: false,
|
processData: false,
|
||||||
success: function (data, textStatus) {
|
success: function (data, textStatus) {
|
||||||
if (textStatus == "error") {
|
if (textStatus == "error") {
|
||||||
alert("Oops. Could not update sort order");
|
alert("Could not update sort order");
|
||||||
self._getChildNodes();
|
self._getChildNodes();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(data) {
|
error: function(data) {
|
||||||
alert("Oops. Could not update sort order. Err: " + data.statusText);
|
alert("Could not update sort order. Err: " + data.statusText);
|
||||||
self._getChildNodes();
|
self._getChildNodes();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -37,9 +37,9 @@
|
|||||||
Umbraco web.config configuration documentation can be found here:
|
Umbraco web.config configuration documentation can be found here:
|
||||||
http://our.umbraco.org/documentation/using-umbraco/config-files/#webconfig
|
http://our.umbraco.org/documentation/using-umbraco/config-files/#webconfig
|
||||||
-->
|
-->
|
||||||
<add key="umbracoConfigurationStatus" value="7.5.3" />
|
<add key="umbracoConfigurationStatus" value="7.5.5" />
|
||||||
<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/Hiccup.aspx,~/signalR,~/VSEnterpriseHelper.axd" />
|
<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="umbracoContentXML" value="~/App_Data/umbraco.config" />
|
||||||
<add key="umbracoStorageDirectory" value="~/App_Data" />
|
<add key="umbracoStorageDirectory" value="~/App_Data" />
|
||||||
<add key="umbracoPath" value="~/umbraco" />
|
<add key="umbracoPath" value="~/umbraco" />
|
||||||
@@ -103,6 +103,7 @@
|
|||||||
<add key="AppVeyorWebHookAuthKey" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
|
<add key="AppVeyorWebHookAuthKey" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
|
||||||
<add key="GoogleOAuthClientID" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
|
<add key="GoogleOAuthClientID" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
|
||||||
<add key="GoogleOAuthSecret" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
|
<add key="GoogleOAuthSecret" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
|
||||||
|
<add key="HangFireEnabled" value="false" />
|
||||||
</appSettings>
|
</appSettings>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<remove name="umbracoDbDSN" />
|
<remove name="umbracoDbDSN" />
|
||||||
@@ -310,7 +311,7 @@
|
|||||||
<providers>
|
<providers>
|
||||||
<remove name="MySqlSiteMapProvider" />
|
<remove name="MySqlSiteMapProvider" />
|
||||||
</providers>
|
</providers>
|
||||||
</siteMap>
|
</siteMap>
|
||||||
</system.web>
|
</system.web>
|
||||||
<!-- ASPNETAJAX -->
|
<!-- ASPNETAJAX -->
|
||||||
<system.web.extensions>
|
<system.web.extensions>
|
||||||
@@ -403,9 +404,9 @@
|
|||||||
|
|
||||||
<!-- Increase the default upload file size limit -->
|
<!-- Increase the default upload file size limit -->
|
||||||
<security>
|
<security>
|
||||||
<requestFiltering>
|
<requestFiltering>
|
||||||
<requestLimits maxAllowedContentLength="52428800" />
|
<requestLimits maxAllowedContentLength="52428800" />
|
||||||
</requestFiltering>
|
</requestFiltering>
|
||||||
</security>
|
</security>
|
||||||
|
|
||||||
<rewrite>
|
<rewrite>
|
||||||
@@ -451,11 +452,19 @@
|
|||||||
</rule>
|
</rule>
|
||||||
<rule name="UaaSGeneralForum" patternSyntax="Wildcard">
|
<rule name="UaaSGeneralForum" patternSyntax="Wildcard">
|
||||||
<match url="forum/umbraco-as-a-service/general-questions/*" />
|
<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>
|
||||||
<rule name="UaaSIssuesForum" patternSyntax="Wildcard">
|
<rule name="UaaSIssuesForum" patternSyntax="Wildcard">
|
||||||
<match url="forum/umbraco-as-a-service/issues/*" />
|
<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>
|
||||||
<rule name="RedirectRepoSearch" patternSyntax="Wildcard">
|
<rule name="RedirectRepoSearch" patternSyntax="Wildcard">
|
||||||
<match url="umbraco/api/Search/FindProjects/*" />
|
<match url="umbraco/api/Search/FindProjects/*" />
|
||||||
@@ -554,11 +563,14 @@
|
|||||||
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
|
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||||
</dependentAssembly>
|
</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 -->
|
<!-- Ensure correct version of HtmlAgilityPack -->
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-1.4.9.0" newVersion="1.4.9.0" />
|
<bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ namespace OurUmbraco.Documentation.Busineslogic.GithubSourcePull
|
|||||||
case "umbracoforms":
|
case "umbracoforms":
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
//Umbraco as a Service
|
//Umbraco Cloud
|
||||||
case "getting-started":
|
case "getting-started":
|
||||||
return 0;
|
return 0;
|
||||||
case "set-up":
|
case "set-up":
|
||||||
|
|||||||
@@ -34,36 +34,35 @@ namespace OurUmbraco.Events.Library
|
|||||||
|
|
||||||
public static XPathNodeIterator UpcomingEvents()
|
public static XPathNodeIterator UpcomingEvents()
|
||||||
{
|
{
|
||||||
int contentType = DocumentType.GetByAlias("Event").Id;
|
var contentType = DocumentType.GetByAlias("Event").Id;
|
||||||
string property = "start";
|
var property = "start";
|
||||||
|
|
||||||
string sql = string.Format(@"SELECT distinct contentNodeId from cmsPropertyData
|
var sql = string.Format(@"SELECT distinct contentNodeId from cmsPropertyData
|
||||||
inner join cmsPropertyType ON
|
inner join cmsPropertyType ON
|
||||||
cmspropertytype.contenttypeid = {0} and
|
cmspropertytype.contenttypeid = {0} and
|
||||||
cmspropertytype.Alias = '{1}' and
|
cmspropertytype.Alias = '{1}' and
|
||||||
cmspropertytype.id = cmspropertydata.propertytypeid
|
cmspropertytype.id = cmspropertydata.propertytypeid
|
||||||
where dataDate > GETDATE()", contentType, property);
|
where dataDate > GETDATE()", contentType, property);
|
||||||
|
|
||||||
ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper;
|
using (var sqlhelper = umbraco.BusinessLogic.Application.SqlHelper)
|
||||||
IRecordsReader rr = sqlhelper.ExecuteReader(sql);
|
using (var reader = sqlhelper.ExecuteReader(sql))
|
||||||
|
|
||||||
XmlDocument doc = new XmlDocument();
|
|
||||||
XmlNode root = umbraco.xmlHelper.addTextNode(doc, "events", "");
|
|
||||||
|
|
||||||
while (rr.Read())
|
|
||||||
{
|
{
|
||||||
XmlNode x = (XmlNode)umbraco.content.Instance.XmlContent.GetElementById( rr.GetInt("contentNodeId").ToString() );
|
var xmlDocument = new XmlDocument();
|
||||||
|
var root = umbraco.xmlHelper.addTextNode(xmlDocument, "events", "");
|
||||||
|
|
||||||
if (x != null)
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
x = doc.ImportNode(x, true);
|
var contentNodeId = reader.GetInt("contentNodeId").ToString();
|
||||||
root.AppendChild(x);
|
var xmlNode = (XmlNode)umbraco.content.Instance.XmlContent.GetElementById(contentNodeId);
|
||||||
}
|
|
||||||
}
|
|
||||||
rr.Close();
|
|
||||||
rr.Dispose();
|
|
||||||
|
|
||||||
return root.CreateNavigator().Select(".");
|
if (xmlNode == null) continue;
|
||||||
|
|
||||||
|
xmlNode = xmlDocument.ImportNode(xmlNode, true);
|
||||||
|
root.AppendChild(xmlNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return root.CreateNavigator().Select(".");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,20 +31,16 @@ namespace OurUmbraco.Events.Relations
|
|||||||
private static int GetRelations(string alias, int parentId)
|
private static int GetRelations(string alias, int parentId)
|
||||||
{
|
{
|
||||||
|
|
||||||
ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper;
|
using (var sqlhelper = umbraco.BusinessLogic.Application.SqlHelper)
|
||||||
int result = sqlhelper.ExecuteScalar<int>(
|
{
|
||||||
@"
|
var result = sqlhelper.ExecuteScalar<int>(@"
|
||||||
SELECT count(umbracoRelation.id)
|
SELECT count(umbracoRelation.id)
|
||||||
FROM umbracoRelation
|
FROM umbracoRelation
|
||||||
INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias
|
INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias
|
||||||
where parentId = @parent
|
where parentId = @parent", sqlhelper.CreateParameter("@parent", parentId), sqlhelper.CreateParameter("@alias", alias));
|
||||||
"
|
|
||||||
,
|
|
||||||
sqlhelper.CreateParameter("@parent", parentId),
|
|
||||||
sqlhelper.CreateParameter("@alias", alias)
|
|
||||||
);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetSignedUp(int eventId)
|
public static int GetSignedUp(int eventId)
|
||||||
@@ -59,32 +55,25 @@ namespace OurUmbraco.Events.Relations
|
|||||||
|
|
||||||
private static List<Relation> GetRelations(string alias, string sort, int parentId, int number)
|
private static List<Relation> GetRelations(string alias, string sort, int parentId, int number)
|
||||||
{
|
{
|
||||||
List<Relation> retval = new List<Relation>();
|
var retval = new List<Relation>();
|
||||||
ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper;
|
using (var sqlhelper = umbraco.BusinessLogic.Application.SqlHelper)
|
||||||
|
|
||||||
IRecordsReader rr = sqlhelper.ExecuteReader(
|
|
||||||
|
|
||||||
string.Format(@"
|
|
||||||
SELECT TOP {0} umbracoRelation.id
|
|
||||||
FROM umbracoRelation
|
|
||||||
INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias
|
|
||||||
where parentId = @parent
|
|
||||||
ORDER BY datetime {1}
|
|
||||||
", number, sort)
|
|
||||||
|
|
||||||
,
|
|
||||||
sqlhelper.CreateParameter("@parent", parentId),
|
|
||||||
sqlhelper.CreateParameter("@alias", alias)
|
|
||||||
);
|
|
||||||
|
|
||||||
while (rr.Read())
|
|
||||||
{
|
{
|
||||||
retval.Add( new Relation( rr.GetInt("id") ) );
|
var query = string.Format(@"
|
||||||
}
|
SELECT TOP {0} umbracoRelation.id
|
||||||
rr.Close();
|
FROM umbracoRelation
|
||||||
rr.Dispose();
|
INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias
|
||||||
|
where parentId = @parent
|
||||||
|
ORDER BY datetime {1}
|
||||||
|
", number, sort);
|
||||||
|
|
||||||
return retval;
|
using (var reader = sqlhelper.ExecuteReader(query, sqlhelper.CreateParameter("@parent", parentId), sqlhelper.CreateParameter("@alias", alias)))
|
||||||
|
{
|
||||||
|
while (reader.Read())
|
||||||
|
retval.Add(new Relation(reader.GetInt("id")));
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Relation> GetPeopleWaiting(int eventId, int number)
|
public static List<Relation> GetPeopleWaiting(int eventId, int number)
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ using OurUmbraco.Forum.Services;
|
|||||||
using umbraco.BusinessLogic;
|
using umbraco.BusinessLogic;
|
||||||
using Umbraco.Core;
|
using Umbraco.Core;
|
||||||
using Umbraco.Core.Models;
|
using Umbraco.Core.Models;
|
||||||
using Umbraco.Web;
|
|
||||||
|
|
||||||
namespace OurUmbraco.Forum.AntiSpam
|
namespace OurUmbraco.Forum.AntiSpam
|
||||||
{
|
{
|
||||||
@@ -39,7 +38,7 @@ namespace OurUmbraco.Forum.AntiSpam
|
|||||||
var reputationCurrent = member.GetValue<int>("reputationCurrent");
|
var reputationCurrent = member.GetValue<int>("reputationCurrent");
|
||||||
member.SetValue("reputationCurrent", reputationCurrent >= 0 ? reputationCurrent - 1 : 0);
|
member.SetValue("reputationCurrent", reputationCurrent >= 0 ? reputationCurrent - 1 : 0);
|
||||||
|
|
||||||
var memberService = UmbracoContext.Current.Application.Services.MemberService;
|
var memberService = ApplicationContext.Current.Services.MemberService;
|
||||||
memberService.Save(member);
|
memberService.Save(member);
|
||||||
memberService.AssignRole(member.Id, "potentialspam");
|
memberService.AssignRole(member.Id, "potentialspam");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -483,7 +483,7 @@ namespace OurUmbraco.Forum.Api
|
|||||||
|
|
||||||
if (memberId != 0)
|
if (memberId != 0)
|
||||||
{
|
{
|
||||||
var member = global::Umbraco.Web.UmbracoContext.Current.Application.Services.MemberService.GetById(memberId);
|
var member = ApplicationContext.Current.Services.MemberService.GetById(memberId);
|
||||||
|
|
||||||
if (member != null)
|
if (member != null)
|
||||||
{
|
{
|
||||||
@@ -502,7 +502,7 @@ namespace OurUmbraco.Forum.Api
|
|||||||
|
|
||||||
if (memberId != 0)
|
if (memberId != 0)
|
||||||
{
|
{
|
||||||
var member = global::Umbraco.Web.UmbracoContext.Current.Application.Services.MemberService.GetById(memberId);
|
var member = ApplicationContext.Current.Services.MemberService.GetById(memberId);
|
||||||
|
|
||||||
if (member != null)
|
if (member != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OurUmbraco.Forum.EventHandlers
|
|||||||
&& member.Properties.Contains(Constants.Conventions.Member.IsApproved)
|
&& member.Properties.Contains(Constants.Conventions.Member.IsApproved)
|
||||||
&& member.IsApproved == false);
|
&& member.IsApproved == false);
|
||||||
|
|
||||||
var memberService = UmbracoContext.Current.Application.Services.MemberService;
|
var memberService = ApplicationContext.Current.Services.MemberService;
|
||||||
foreach (var member in nonApprovedMembers)
|
foreach (var member in nonApprovedMembers)
|
||||||
{
|
{
|
||||||
// Adds test for member having an Id, if they don't then it's a NEW member,
|
// Adds test for member having an Id, if they don't then it's a NEW member,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using MarkdownSharp;
|
|||||||
using OurUmbraco.Forum.AntiSpam;
|
using OurUmbraco.Forum.AntiSpam;
|
||||||
using OurUmbraco.Forum.Library;
|
using OurUmbraco.Forum.Library;
|
||||||
using OurUmbraco.Forum.Models;
|
using OurUmbraco.Forum.Models;
|
||||||
|
using Umbraco.Core;
|
||||||
using Umbraco.Core.Models;
|
using Umbraco.Core.Models;
|
||||||
using Umbraco.Web;
|
using Umbraco.Web;
|
||||||
|
|
||||||
@@ -143,14 +144,14 @@ namespace OurUmbraco.Forum.Extensions
|
|||||||
|
|
||||||
public static bool DetectSpam(this Comment comment)
|
public static bool DetectSpam(this Comment comment)
|
||||||
{
|
{
|
||||||
var member = UmbracoContext.Current.Application.Services.MemberService.GetById(comment.MemberId);
|
var member = ApplicationContext.Current.Services.MemberService.GetById(comment.MemberId);
|
||||||
comment.IsSpam = SpamChecker.IsSpam(member, comment.Body);
|
comment.IsSpam = SpamChecker.IsSpam(member, comment.Body);
|
||||||
return comment.IsSpam;
|
return comment.IsSpam;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool DetectSpam(this Topic topic)
|
public static bool DetectSpam(this Topic topic)
|
||||||
{
|
{
|
||||||
var member = UmbracoContext.Current.Application.Services.MemberService.GetById(topic.MemberId);
|
var member = ApplicationContext.Current.Services.MemberService.GetById(topic.MemberId);
|
||||||
topic.IsSpam = SpamChecker.IsSpam(member, string.Format("{0} {1}", topic.Title, topic.Body));
|
topic.IsSpam = SpamChecker.IsSpam(member, string.Format("{0} {1}", topic.Title, topic.Body));
|
||||||
return topic.IsSpam;
|
return topic.IsSpam;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using System.Web.Security;
|
|||||||
using RestSharp;
|
using RestSharp;
|
||||||
using RestSharp.Deserializers;
|
using RestSharp.Deserializers;
|
||||||
using umbraco.BusinessLogic;
|
using umbraco.BusinessLogic;
|
||||||
|
using Umbraco.Core;
|
||||||
using Umbraco.Core.Logging;
|
using Umbraco.Core.Logging;
|
||||||
using Umbraco.Core.Models;
|
using Umbraco.Core.Models;
|
||||||
using Umbraco.Web;
|
using Umbraco.Web;
|
||||||
@@ -183,7 +184,7 @@ namespace OurUmbraco.Forum.Library
|
|||||||
|
|
||||||
if (spammer != null && spammer.TotalScore > PotentialSpammerThreshold)
|
if (spammer != null && spammer.TotalScore > PotentialSpammerThreshold)
|
||||||
{
|
{
|
||||||
var memberService = UmbracoContext.Current.Application.Services.MemberService;
|
var memberService = ApplicationContext.Current.Services.MemberService;
|
||||||
memberService.AssignRole(member.Id, SpamMemberGroupName);
|
memberService.AssignRole(member.Id, SpamMemberGroupName);
|
||||||
|
|
||||||
spammer.MemberId = member.Id;
|
spammer.MemberId = member.Id;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using OurUmbraco.Our;
|
|||||||
using OurUmbraco.Wiki.Extensions;
|
using OurUmbraco.Wiki.Extensions;
|
||||||
using umbraco;
|
using umbraco;
|
||||||
using umbraco.BusinessLogic;
|
using umbraco.BusinessLogic;
|
||||||
|
using Umbraco.Core;
|
||||||
using Umbraco.Core.Models;
|
using Umbraco.Core.Models;
|
||||||
using Umbraco.Web;
|
using Umbraco.Web;
|
||||||
|
|
||||||
@@ -99,8 +100,10 @@ namespace OurUmbraco.MarketPlace.NodeListing
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return Application.SqlHelper.ExecuteScalar<int>(" select count(*) from projectDownload where projectId = @id;",
|
using (var sqlHelper = Application.SqlHelper)
|
||||||
Application.SqlHelper.CreateParameter("@id", projectId));
|
{
|
||||||
|
return sqlHelper.ExecuteScalar<int>("select count(*) from projectDownload where projectId = @id;", sqlHelper.CreateParameter("@id", projectId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@@ -110,13 +113,12 @@ namespace OurUmbraco.MarketPlace.NodeListing
|
|||||||
|
|
||||||
public int GetProjectKarma(int projectId)
|
public int GetProjectKarma(int projectId)
|
||||||
{
|
{
|
||||||
|
using (var sqlHelper = Application.SqlHelper)
|
||||||
using (var reader = Application.SqlHelper.ExecuteReader("SELECT SUM([points]) AS Karma FROM powersProject WHERE id = @projectId",
|
using (var reader = sqlHelper.ExecuteReader("SELECT SUM([points]) AS Karma FROM powersProject WHERE id = @projectId", sqlHelper.CreateParameter("@projectId", projectId)))
|
||||||
Application.SqlHelper.CreateParameter("@projectId", projectId)))
|
{
|
||||||
if (reader.Read())
|
if (reader.Read())
|
||||||
{
|
|
||||||
return reader.GetInt("Karma");
|
return reader.GetInt("Karma");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -133,7 +135,7 @@ namespace OurUmbraco.MarketPlace.NodeListing
|
|||||||
/// <param name="listingItem"></param>
|
/// <param name="listingItem"></param>
|
||||||
public void SaveOrUpdate(IListingItem listingItem)
|
public void SaveOrUpdate(IListingItem listingItem)
|
||||||
{
|
{
|
||||||
var contentService = UmbracoContext.Current.Application.Services.ContentService;
|
var contentService = ApplicationContext.Current.Services.ContentService;
|
||||||
//check if this is a new listing or an existing one.
|
//check if this is a new listing or an existing one.
|
||||||
var isUpdate = listingItem.Id != 0;
|
var isUpdate = listingItem.Id != 0;
|
||||||
var content = (isUpdate)
|
var content = (isUpdate)
|
||||||
@@ -260,7 +262,7 @@ namespace OurUmbraco.MarketPlace.NodeListing
|
|||||||
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
|
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
|
||||||
var contribProjects = new List<IPublishedContent>();
|
var contribProjects = new List<IPublishedContent>();
|
||||||
const string sql = @"SELECT * FROM projectContributors WHERE memberId=@memberId";
|
const string sql = @"SELECT * FROM projectContributors WHERE memberId=@memberId";
|
||||||
var contribPackageIds = UmbracoContext.Current.Application.DatabaseContext.Database.Fetch<int>(sql, new { memberId });
|
var contribPackageIds = ApplicationContext.Current.DatabaseContext.Database.Fetch<int>(sql, new { memberId });
|
||||||
|
|
||||||
foreach (var contribPackageId in contribPackageIds)
|
foreach (var contribPackageId in contribPackageIds)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
using System;using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
using System.Collections.Generic;
|
||||||
using OurUmbraco.MarketPlace.Interfaces;
|
using OurUmbraco.MarketPlace.Interfaces;
|
||||||
using OurUmbraco.Our;
|
using umbraco.BusinessLogic;
|
||||||
using Umbraco.Web;
|
using Umbraco.Core;
|
||||||
|
|
||||||
namespace OurUmbraco.MarketPlace.Providers
|
namespace OurUmbraco.MarketPlace.Providers
|
||||||
{
|
{
|
||||||
@@ -10,7 +10,7 @@ namespace OurUmbraco.MarketPlace.Providers
|
|||||||
{
|
{
|
||||||
public int GetProjectKarma(int projectId)
|
public int GetProjectKarma(int projectId)
|
||||||
{
|
{
|
||||||
var db = UmbracoContext.Current.Application.DatabaseContext.Database;
|
var db = ApplicationContext.Current.DatabaseContext.Database;
|
||||||
var result = db.ExecuteScalar<int>("SELECT SUM(points) karma FROM powersProject WHERE id = @projectId", new { projectId = projectId });
|
var result = db.ExecuteScalar<int>("SELECT SUM(points) karma FROM powersProject WHERE id = @projectId", new { projectId = projectId });
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,7 @@ namespace OurUmbraco.MarketPlace.Providers
|
|||||||
{
|
{
|
||||||
var karmaList = new List<IKarma>();
|
var karmaList = new List<IKarma>();
|
||||||
|
|
||||||
using (var reader = Data.SqlHelper.ExecuteReader("SELECT id as ProjectId, SUM(points) Points FROM powersProject GROUP BY id ORDER BY SUM(points) DESC"))
|
using (var reader = Application.SqlHelper.ExecuteReader("SELECT id as ProjectId, SUM(points) Points FROM powersProject GROUP BY id ORDER BY SUM(points) DESC"))
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
@@ -28,6 +28,7 @@ namespace OurUmbraco.MarketPlace.Providers
|
|||||||
ProjectId = reader.GetInt("ProjectId"),
|
ProjectId = reader.GetInt("ProjectId"),
|
||||||
Points = reader.GetInt("Points")
|
Points = reader.GetInt("Points")
|
||||||
};
|
};
|
||||||
|
|
||||||
karmaList.Add(karma);
|
karmaList.Add(karma);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net.Mail;
|
||||||
|
using System.Web.Hosting;
|
||||||
|
using OurUmbraco.Forum.Services;
|
||||||
|
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
|
||||||
|
{
|
||||||
|
public void SendNotification(int topicId, int memberId, NotificationMail notificationMail)
|
||||||
|
{
|
||||||
|
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 fromMailAddress = new MailAddress(notificationMail.FromMail, notificationMail.FromName);
|
||||||
|
|
||||||
|
var subject = string.Format("{0} - '{1}'", notificationMail.Subject, topic.Title);
|
||||||
|
var domain = notificationMail.Domain;
|
||||||
|
var body = notificationMail.Body;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
using (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,53 @@
|
|||||||
|
using System;
|
||||||
|
using System.Net.Mail;
|
||||||
|
using System.Xml;
|
||||||
|
using OurUmbraco.NotificationsWeb;
|
||||||
|
using Umbraco.Core.Logging;
|
||||||
|
|
||||||
|
namespace OurUmbraco.NotificationsCore.Notifications
|
||||||
|
{
|
||||||
|
public class NotificationMail
|
||||||
|
{
|
||||||
|
public string FromName;
|
||||||
|
public string FromMail;
|
||||||
|
public string Subject;
|
||||||
|
public string Domain;
|
||||||
|
public string Body;
|
||||||
|
|
||||||
|
public NotificationMail GetNotificationMail(string notificationType)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var notifications = new XmlDocument();
|
||||||
|
notifications.Load(Config.ConfigurationFile);
|
||||||
|
|
||||||
|
var settings = notifications.SelectSingleNode("//global");
|
||||||
|
|
||||||
|
var node = notifications.SelectSingleNode(string.Format("//instant//notification [@name = '{0}']", notificationType));
|
||||||
|
|
||||||
|
var details = new XmlDocument();
|
||||||
|
var cont = details.CreateElement("details");
|
||||||
|
cont.AppendChild(details.ImportNode(settings, true));
|
||||||
|
cont.AppendChild(details.ImportNode(node, true));
|
||||||
|
|
||||||
|
var detailsChild = details.AppendChild(cont);
|
||||||
|
|
||||||
|
var notificationMail = new NotificationMail
|
||||||
|
{
|
||||||
|
FromMail = detailsChild.SelectSingleNode("//email").InnerText,
|
||||||
|
FromName = detailsChild.SelectSingleNode("//name").InnerText,
|
||||||
|
Subject = detailsChild.SelectSingleNode("//subject").InnerText,
|
||||||
|
Domain = detailsChild.SelectSingleNode("//domain").InnerText,
|
||||||
|
Body = detailsChild.SelectSingleNode("//body").InnerText
|
||||||
|
};
|
||||||
|
|
||||||
|
return notificationMail;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LogHelper.Error<MarkAsSolutionReminder>(string.Format("Couldn't get settings for {0}", notificationType), e);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
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()
|
||||||
|
{
|
||||||
|
using (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();
|
||||||
|
var notification = new NotificationMail();
|
||||||
|
var reminderMail = notification.GetNotificationMail("MarkAsSolutionReminderSingle");
|
||||||
|
|
||||||
|
foreach (var reminderTopic in results)
|
||||||
|
{
|
||||||
|
var jobId = BackgroundJob.Schedule(() => reminder.SendNotification(reminderTopic.Id, reminderTopic.MemberId, reminderMail), TimeSpan.FromMinutes(10));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ReminderTopic
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public int MemberId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user