152 Commits

Author SHA1 Message Date
Per Ploug 89bb8eb3f4 too much dollar 2017-06-07 08:04:11 +02:00
Per Ploug 6bc5fcad99 Merge remote-tracking branch 'refs/remotes/origin/master' into lesson-documentation-controller 2017-06-07 07:57:12 +02:00
Per Ploug 04bcf16d33 Merge pull request #113 from umbraco/lesson-documentation-controller
Lesson documentation controller
2017-06-07 07:42:50 +02:00
Per Ploug 76752f9bd8 Merge branch 'master' into lesson-documentation-controller 2017-06-07 07:42:41 +02:00
Per Ploug 29d5d293c4 api controller for serving help docs 2017-06-07 07:40:06 +02:00
Sebastiaan Janssen c66e9d208b Merge pull request #109 from emmagarland/githubcontributors
Github contributors list
2017-06-05 20:57:11 +02:00
Emma Garland 7808a20be7 Reverted additions logic 2017-06-05 16:50:43 +01:00
Emma Garland 463ebcaa66 Additions and deletions plural 2017-06-05 16:49:04 +01:00
Emma Garland 2fe55431a0 Contributions plural logic 2017-06-05 16:46:51 +01:00
Emma Garland 0a59d09d81 Moved author title 2017-06-05 16:40:55 +01:00
Warren Buckley 9c4d1baa52 Some more docs to the oh so lovely switch statement 2017-06-05 16:37:25 +01:00
Emma Garland 7ebb26840f Merge remote-tracking branch 'upstream/master' into githubcontributors
# Conflicts:
#	OurUmbraco.Site/OurUmbraco.Site.csproj
#	OurUmbraco.Site/Views/Partials/Community/Home.cshtml
#	OurUmbraco.Site/Views/Partials/Community/Scripts.cshtml
#	OurUmbraco/OurUmbraco.csproj
2017-06-05 16:28:48 +01:00
Warren Buckley ab3603318a Lovely swtich case for now - to give section & tree help context info 2017-06-05 16:20:13 +01:00
Emma Garland ac33beeba9 Smooth transitions and styling for additions and deletions 2017-06-05 16:13:34 +01:00
Emma Garland 87a65f0416 Moved model into new file 2017-06-05 15:57:04 +01:00
Emma Garland 25903c34c6 Comments updated and weeks additions and deletions logic added 2017-06-05 15:56:37 +01:00
Per Ploug 85b7243186 changed branch to WIP Branch for demo 2017-06-05 16:56:03 +02:00
Emma Garland 61cbdeb96b Updated comments on the API methods 2017-06-05 14:15:07 +01:00
Emma Garland 8ab087b23f Updated wording for default branches 2017-06-05 14:11:03 +01:00
Emma Garland e39043af44 Added sizing for the avatar 2017-06-05 13:59:03 +01:00
Emma Garland 2465d4ceb8 Contribute to Umbraco link 2017-06-05 13:45:19 +01:00
Emma Garland 8bf89fdf37 Updated styling and listing of repositories 2017-06-05 13:44:27 +01:00
Emma Garland 89f6f60c96 New window 2017-06-05 13:39:28 +01:00
Emma Garland 1572080976 Updated content to list the Umbraco repositoriies to contribute to 2017-06-05 13:38:31 +01:00
Emma Garland 03de29ebd9 removed github member 2017-06-05 13:26:56 +01:00
Emma Garland 055aea9334 Updated styling with margin right removed and media queries to show or hide different numbers of github users 2017-06-05 13:18:59 +01:00
Emma Garland 06d31b36a6 Updated css and html for github contributors, and updated list of contributors 2017-06-05 12:46:06 +01:00
Sebastiaan Janssen 440084e832 Merge pull request #107 from abjerner/master
Added a new section to the "Community" page listing Umbraco events from Meetup.com
2017-06-05 13:41:30 +02:00
Emma Garland 7abe6161d6 Added more HQ exclusions and reformatted 2017-06-05 12:28:40 +01:00
Emma Garland 576b1bcf2e Load more button now functional 2017-06-05 10:48:52 +01:00
Emma Garland 593d0c31fa HQ exclusion list 2017-06-05 10:10:37 +01:00
Emma Garland 09ed061c9b Now combines more repos 2017-06-05 09:54:59 +01:00
Emma Garland 9b67f4cebf Ordered correctly 2017-06-05 09:05:58 +01:00
Emma Garland b8571f56a6 Updated model to use new method call with accurate commit information 2017-06-05 09:01:07 +01:00
Anders Bjerner 55b2bcae63 Slightly adjusting the list so it still looks okay with an odd number of events 2017-06-05 09:47:15 +02:00
Anders Bjerner 1331c2200e Added new user groups to the configuration file 2017-06-05 09:46:25 +02:00
Emma Garland 3a27201bed Updated sass styling for the avatars 2017-06-04 23:40:49 +01:00
Emma Garland 9a03d09c04 Green header colour as per header 2017-06-04 23:05:48 +01:00
Anders Bjerner ad900861da Updated the implementation
- We can now show logo (or image really) of the group responsible for each event
- Only the first event of each group are shown in the list
- A "NEAR YOU" label is now shown instead of the distance (the location of the group is used as fallback if no venue is specified)
2017-06-04 23:43:32 +02:00
Emma Garland 9f127239ec Updated gulp-imagein version and now successfully compiles 2017-06-04 22:10:31 +01:00
Emma Garland ae555f4130 Wording update 2017-06-04 21:16:18 +01:00
Emma Garland 0c25c1529d Updated to use main Umbraco commits 2017-06-04 20:18:33 +01:00
Warren Buckley efc11c1f40 Revert config - as it expects it to be master branch in other places in the code base at the moment 2017-06-04 20:06:49 +01:00
Warren Buckley eabe640ebf Merge branch 'lesson-documentation-controller' of https://github.com/umbraco/OurUmbraco into lesson-documentation-controller 2017-06-04 20:03:16 +01:00
Warren Buckley d9de0447f5 Update the path to WIP PR Docs branch so we can pull down the MD files 2017-06-04 20:02:59 +01:00
Per Ploug 25858eb870 added method for pulling steps for lessons 2017-06-04 20:58:33 +02:00
Warren Buckley dfb728655f Tiny CSS changes 2017-06-04 19:58:10 +01:00
Warren Buckley 614c4f2d36 Super basic CSS styling 2017-06-04 17:25:24 +01:00
Emma Garland 91d3c6c717 Border and url fix 2017-06-04 17:15:51 +01:00
Emma Garland b235ed168a Inline styles (temp) 2017-06-04 17:12:39 +01:00
Emma Garland b9d5354cc7 GitHub contribution numbers 2017-06-04 16:58:25 +01:00
Warren Buckley 768525a0c7 Ensure we sort by the super magical switch sort int property on the object 2017-06-04 16:54:25 +01:00
Emma Garland 829693c410 Added new styles and classes - sass to be accessed 2017-06-04 16:49:57 +01:00
Sebastiaan Janssen a16c9f1c6c Merge pull request #108 from umbraco/temp-new-starterkit-download
Serve a default starter kit if the version is higher than 7.6.4
2017-06-04 17:48:15 +02:00
Niels Hartvig 6242eed778 Serve a default starter kit if the version is higher than 7.6.4 2017-06-04 17:44:47 +02:00
Warren Buckley 284ca67dd3 Adds trailing slash to ensure all links work as expected when we start off at index.md 2017-06-04 16:40:51 +01:00
Warren Buckley 706c793cc2 Ensure we do not append the altLink to any images as it blows up if we do 2017-06-04 16:38:01 +01:00
Emma Garland 9799071d04 Initial addition of GitHub contributors code 2017-06-04 16:19:21 +01:00
Warren Buckley 492a3e5a8d Init API Controller to Query partial part of the MD Docs tree & WIP for the markdown alt template 2017-06-04 16:07:14 +01:00
Anders Bjerner c6de48c8e2 Added a new section to the "Community" page listing Umbraco events from Meetup.com 2017-06-04 17:02:41 +02:00
Warren Buckley aea3c0a696 Fix OurUmbraco.Site project for loading for people who just have VS17 installed 2017-06-04 13:12:11 +01:00
Sebastiaan Janssen 2fcd7f3911 Better gulp runner 2017-06-04 12:05:57 +02:00
Shannon Deminick 8c6f03f257 Merge pull request #97 from dampee/our-437-edit-link-github-casing
OUR-437 fix casing of md file in case incoming URL has incorrect casing
2017-05-16 14:00:08 +10:00
Shannon 8a24fc60ca fixes the sorting of retreving wiki files 2017-05-15 19:22:16 +10:00
Shannon 1beedba67d Fixes U4-9887 Uses new OUR endpoint for package installation when a package has mixed formats 2017-05-11 14:02:49 +10:00
hartvig 16233f4856 Merge pull request #104 from umbraco/remove-annoying-gif
Remove annoying gif :)
2017-05-04 11:46:59 +02:00
hartvig c662620791 Remove annoying gif :) 2017-05-04 11:46:05 +02:00
hartvig 1abb97bdc7 Merge pull request #103 from umbraco/temp-annoying-gif
Updates annoying gif to not being shown on mobiles
2017-05-01 15:05:04 +02:00
Niels Hartvig 4e2634c116 Added a little check to hide on mobile devices 2017-05-01 15:03:36 +02:00
Niels Hartvig 2c93b5fc13 Merge remote-tracking branch 'refs/remotes/origin/master' into temp-annoying-gif 2017-05-01 14:57:05 +02:00
Shannon fe83cfa408 Fixes GetDetails method call 2017-04-30 17:43:15 +10:00
hartvig 59c1485697 Merge pull request #102 from umbraco/temp-annoying-gif
Bring back annoying gif for Ilhams master thesis survey
2017-04-28 12:33:21 +02:00
Niels Hartvig d68e0e54b5 Bring back annoying gif for Ilhams master thesis survey 2017-04-28 12:32:55 +02:00
Shannon 55daf57e21 reverts change, we'll search all packages for the full major 2017-04-27 13:50:25 +10:00
Shannon 7d37c7aa2a Changes the search to only include packages of the same minor version as the one being requested 2017-04-27 13:32:07 +10:00
Shannon 3ec24fa6f1 Fixes issue of returning non package files for the zip file 2017-04-27 12:25:34 +10:00
Shannon 70650eff6a fixes a null check issue 2017-04-27 11:58:49 +10:00
Shannon baebd73f19 Fixing up lucene indexes with versions and range queries, should be working now 2017-04-27 10:35:16 +10:00
Shannon 11f9219419 fixes cache key for package search, fixes boolean query for range search 2017-04-27 00:37:34 +10:00
Shannon 5f12eec438 fixes serialization for package details 2017-04-26 23:22:26 +10:00
Shannon 385c767a48 Fixes the version search numerical conversion - hopefully this makes the search actually work correctly 2017-04-26 23:00:29 +10:00
Shannon 905a938444 Adds more details to the PackageDetails object 2017-04-26 22:37:24 +10:00
Shannon 922be55356 adds 7.6 version 2017-04-26 22:26:33 +10:00
Shannon 9d54458280 make sure the includeHidden is part of the cache key 2017-04-26 22:15:25 +10:00
Shannon 481afb0a8f adds ability to return hidden packages since we need this for starter kits that are hidden 2017-04-26 21:00:03 +10:00
Shannon ebedf63c71 remove c# 6 feature 2017-04-26 18:59:03 +10:00
Shannon 25fc105257 better error msgs for returning package details 2017-04-26 18:43:55 +10:00
Shannon Deminick 8848e04019 Merge pull request #101 from umbraco/temp-CON-1267
CON-1267 Update Our to not offer v6 to people on < 7.6.0
2017-04-26 18:25:15 +10:00
Shannon a0d9c0006d Updates the PackageRepositoryController to be able to return a packages file 2017-04-26 17:58:35 +10:00
Shannon 0bd31c3fe0 adds null check 2017-04-26 15:12:53 +10:00
Shannon aa77ddd60f adds nicer error handling when the package is not supported 2017-04-26 15:11:33 +10:00
Shannon d78cd42797 adds better err message 2017-04-26 15:00:49 +10:00
Shannon b183f452d2 Fixes version check 2017-04-26 14:54:24 +10:00
Shannon 516a8446cd update to support semver versions 2017-04-26 14:19:13 +10:00
Shannon 0130399d7b Updates code so that strict version dependent files are not returned to versions of umbraco that do not support them and also ensures that we deliver the correct package zip to later umbraco versions 2017-04-24 21:17:44 +10:00
Shannon 1bf0d66b7a adds notes 2017-04-21 19:27:17 +10:00
Shannon 068005dc16 Made a good start on getting the package version querying working 2017-04-21 19:21:33 +10:00
Sebastiaan Janssen d673877e4e Update README.md 2017-03-31 14:47:44 +02:00
Sebastiaan Janssen 68979fb8d3 Upgrade to 7.5.11 2017-03-07 09:12:17 +01:00
Sebastiaan Janssen 3181d73986 Merge pull request #98 from JimBobSquarePants/patch-1
Remove viewport meta properties preventing zoom
2017-03-02 09:47:53 +01:00
Sebastiaan Janssen 825b02fb83 Disallow iframing 2017-02-24 15:51:10 +01:00
Sebastiaan Janssen d25e6452fe Remove macro that calls into dynamic methods 2017-02-22 16:28:59 +01:00
Sebastiaan Janssen b3205b0904 Upgrade to 7.5.10 2017-02-21 21:06:34 +01:00
Sebastiaan Janssen 080b0d81a4 Merge pull request #99 from jamiepollock/bugfix-roadmap-releasedescription
Fixed typo on Roadmap.cshtml preventing ReleaseDescription from being displayed
2017-02-15 22:37:55 +01:00
Sebastiaan Janssen daf680e5d0 Pingdom account was cancelled 2017-02-11 13:29:51 +01:00
jamiepollock 5657249422 Safeguarding releaseDescription output 2017-02-08 10:43:48 -05:00
jamiepollock fce9f0602e Fixed typo preventing ReleaseDescription from being displayed 2017-02-08 10:31:04 -05:00
Sebastiaan Janssen 07c7eac0cd Upgrade to 7.5.9 2017-02-07 12:15:45 +01:00
Sebastiaan Janssen a40061c279 Upgrade to 7.5.9 2017-02-07 12:14:16 +01:00
James Jackson-South 4decadcc5e Remove viewport meta properties preventing zoom 2017-02-03 11:56:02 +11:00
Sebastiaan Janssen 64d3fea196 Add stats page 2017-02-02 12:06:07 +01:00
Sebastiaan Janssen 1cec98dd5e More nullchecks 2017-01-29 17:15:23 +01:00
Sebastiaan Janssen cd7c4d3eb1 Use simpler Id, prevents error when Model.TopicAuthor is null 2017-01-29 16:39:02 +01:00
Sebastiaan Janssen d813d260d5 OUR-438 Breadcrumb Link Order is Incorrect 2017-01-29 14:36:51 +01:00
Sebastiaan Janssen d19ecb113b Add css to head 2017-01-29 14:36:43 +01:00
Sebastiaan Janssen 7ed1faabc5 Refactor so we don't have to rely on weakly connected ViewData everywhere 2017-01-29 14:03:51 +01:00
Sebastiaan Janssen 58e5221f1b Additional null checks 2017-01-29 11:54:00 +01:00
Sebastiaan Janssen 7830af9dda Don't trim IP cache for now 2017-01-29 10:58:24 +01:00
Sebastiaan Janssen bb491d0ac4 Additional null checks 2017-01-29 10:58:12 +01:00
Sebastiaan Janssen 94b5533322 Check if topic still exist before trying to render it 2017-01-28 21:47:35 +01:00
Sebastiaan Janssen 9845fe0f76 Change some config settings 2017-01-28 21:23:44 +01:00
Sebastiaan Janssen 17c29d9749 More null checks 2017-01-28 21:23:29 +01:00
Sebastiaan Janssen a0380f652e Make getting the topic starter roles a bit more clear 2017-01-28 20:53:39 +01:00
Sebastiaan Janssen 8e9bafd0d7 More optimizations to only get data once 2017-01-28 20:28:24 +01:00
Sebastiaan Janssen 05d9e27428 Use more cached MemberData 2017-01-28 17:13:31 +01:00
Sebastiaan Janssen 85ab0bd867 Handy Twitter spam tools for HQ 2017-01-28 12:43:18 +01:00
Sebastiaan Janssen a11dd3f3ca Remove ApplicationInsights 2017-01-28 10:55:50 +01:00
Sebastiaan Janssen a66f816a92 Update the config template to 7.5.8 too 2017-01-26 18:49:00 +01:00
Sebastiaan Janssen 50f0bbe96e Adds missing files back 2017-01-26 18:48:14 +01:00
Sebastiaan Janssen f11ff8d1c8 Merge pull request #96 from dampee/patch-1
OUR-436 update documentation section
2017-01-26 18:44:09 +01:00
Damiaan Peeters 916a5dc065 OUR-437 fix casing of md file in case incoming URL has incorrect casing 2017-01-26 00:13:17 +01:00
Damiaan 6fd1237caf OUR-436 update documentation section 2017-01-25 22:58:12 +01:00
Sebastiaan Janssen 0dc9d00446 Upgrade to 7.5.8 2017-01-24 12:20:50 +01:00
Sebastiaan Janssen 85ac193e29 Merge pull request #95 from bjarnef/dev-project-nuget
Add url to NuGet package
2017-01-22 19:06:46 +01:00
Sebastiaan Janssen a81a3556f9 Add field on projects for NuGet Url 2017-01-22 19:06:39 +01:00
Bjarne Fyrstenborg c99713df3c Merge branch 'master' into dev-project-nuget 2017-01-22 18:50:38 +01:00
Sebastiaan Janssen c7ac4e1392 Fix some bug and adds an error view to debug where errors are coming from 2017-01-22 18:43:55 +01:00
Sebastiaan Janssen 43878374ae Save resource data 2017-01-22 18:21:15 +01:00
Sebastiaan Janssen 0aefcab298 Update redirects 2017-01-22 18:17:15 +01:00
Sebastiaan Janssen 76f41e069a Adds missing file 2017-01-22 17:55:23 +01:00
Sebastiaan Janssen abc21a695b Some more macro to partial conversions 2017-01-22 17:36:11 +01:00
Sebastiaan Janssen ee0817f7dc Move documentation macros to partials 2017-01-22 17:12:45 +01:00
Sebastiaan Janssen dea0615406 Move documentation macros to partials 2017-01-22 17:07:39 +01:00
Sebastiaan Janssen 5ead7280a3 Move Thread and TopicForm to Partials instead of Macros 2017-01-22 17:04:51 +01:00
Sebastiaan Janssen b35c2a4b49 Move Thread and TopicForm to Partials instead of Macros 2017-01-22 16:54:25 +01:00
Sebastiaan Janssen 35f6de1686 ForumTopicActions to partial from macro 2017-01-22 16:40:35 +01:00
Sebastiaan Janssen 0598124f67 Replace Breadcrumb XSLT macro 2017-01-22 16:27:24 +01:00
Sebastiaan Janssen 8eda3b367f Add files to project that were added wrong 2017-01-22 15:42:05 +01:00
Sebastiaan Janssen 90efdfd27e Move a lot of code that keeps repeating itself and making DB calls to central place 2017-01-22 14:59:48 +01:00
Bjarne Fyrstenborg afc93fb593 Make nuget link to NuGet package 2017-01-22 14:15:16 +01:00
Bjarne Fyrstenborg 2247141efd Add url to NuGet package 2017-01-22 13:55:24 +01:00
Sebastiaan Janssen 3514d765a6 Optimize and cache member data, move from unnecessary macros to regular partials in the master and community templates 2017-01-22 12:22:54 +01:00
147 changed files with 4871 additions and 2573 deletions
+1
View File
@@ -66,3 +66,4 @@ OurUmbraco.Site/App_Data/Documentation/
OurUmbraco.Site/App_Data/NotificationTest/
build/tools/node*
wwwcache/
build/toolsnode.js.*/
+14 -14
View File
@@ -4,24 +4,24 @@
"description": "Umbraco Our gulpjs config",
"main": "gulpfile.js",
"private": true,
"dependencies": {
},
"dependencies": {},
"devDependencies": {
"gulp": "^3.9.1",
"gulp-autoprefixer": "^3.1.0",
"gulp-clean": "0.3.x",
"gulp-combine-media-queries": "0.2.x",
"gulp-concat": "2.2.x",
"gulp-imagemin": "3.3.x",
"gulp-jshint": "^2.0.4",
"gulp-minify-css": "1.1.x",
"gulp-rename": "1.2.x",
"gulp-sass": "^2.2.0",
"gulp-svgmin": "0.4.x",
"gulp-uglify": "^1.5.3",
"gulp-util": "3.0.x",
"gulp-watch": "0.6.x",
"gulp-minify-css": "1.1.x",
"gulp-sass": "^2.2.0",
"gulp-combine-media-queries": "0.2.x",
"gulp-imagemin": "0.6.x",
"gulp-autoprefixer": "^3.1.0",
"gulp-uglify": "^1.5.3",
"gulp-jshint": "2.0.0",
"gulp-concat": "2.2.x",
"jshint-stylish": "0.2.x",
"gulp-clean": "0.3.x",
"gulp-svgmin": "0.4.x",
"gulp-rename": "1.2.x"
"jshint": "^2.9.4",
"jshint-stylish": "0.2.x"
},
"scripts": {
"test": "gulp build --verbose"
@@ -79,6 +79,53 @@
}
.pre {
overflow: auto;
display: block;
font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
background-color: #333;
color: #fff;
font-size: 0.8rem;
line-height: 1.4em;
background-clip: padding-box;
padding: 8px 15px 8px 15px;
border-radius: 5px;
width: 100%;
min-width: 300px;
text-align: left;
border: none;
margin: 0 auto;
&:hover {
background: lighten(#333, 5%);
cursor: pointer;
}
}
.pm-nuget {
position: relative;
display: block;
margin: 10px auto 25px auto;
height: 100%;
width: auto;
color: #fff;
&:before {
content:"PM>";
display: block;
position: absolute;
top: 50%;
left: 0;
font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
font-size: 0.8rem;
transform: translate(15px, -46%);
opacity: .9;
}
.pre {
padding-left: 45px;
}
}
h2, h3, strong, span {
color: $color-headline;
@@ -0,0 +1,94 @@
#github-contributors {
&:not(.all) {
.contributor {
&:nth-child(n+17) {
display: none;
}
@media (max-width: $md) {
&:nth-child(n+13) {
display: none;
}
}
@media (max-width: $xs) {
&:nth-child(n+10) {
display: none;
}
}
}
}
&.all {
.button {
display: none;
}
}
.loadmore {
margin: 20px auto;
width: 100%;
text-align: center;
}
}
.github-contributors small.link-list {
font-style: italic;
font-weight: normal;
text-transform: none;
}
.contributor {
margin-bottom: 15px;
.avatar {
position: relative;
flex: 0 0 23%;
margin-right: 20px;
@media (min-width: $md) {
flex: 0 0 15%;
}
img {
border: 3px solid #98d768;
width: 100%;
max-width: 112px;
height: auto;
}
}
.counts {
position: absolute;
top: 2px;
left: 2px;
right: 2px;
text-align: center;
color: #fff;
font-size: 12px;
line-height: 12px;
background: rgba(0,0,0,0.25);
border-radius: 50%;
bottom: 6px;
padding-top: 23px;
opacity: 0;
transition: opacity 0.25s;
}
&:hover .counts {
opacity: 1;
}
.contrib-count {
position: absolute;
left: 25px;
bottom: 0px;
text-align: center;
right: 25px;
color: #425a2e;
font-weight: bold;
background: darken($color-our, 4%);
border-radius: 15px;
z-index: 5;
}
}
+1 -1
View File
@@ -60,7 +60,7 @@
@import 'sections/forum';
@import 'sections/people';
@import 'sections/events';
@import 'sections/contributors';
/**
/* Pages
@@ -1,81 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureWebAppRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.Web.WebTestTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.SyntheticUserAgentTelemetryInitializer, Microsoft.AI.Web">
<!-- Extended list of bots:
search|spider|crawl|Bot|Monitor|BrowserMob|BingPreview|PagePeeker|WebThumb|URL2PNG|ZooShot|GomezA|Google SketchUp|Read Later|KTXN|KHTE|Keynote|Pingdom|AlwaysOn|zao|borg|oegp|silk|Xenu|zeal|NING|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|Java|JNLP|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|vortex|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|voyager|archiver|Icarus6j|mogimogi|Netvibes|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|wsr-agent|http client|Python-urllib|AppEngine-Google|semanticdiscovery|facebookexternalhit|web/snippet|Google-HTTP-Java-Client-->
<Filters>search|spider|crawl|Bot|Monitor|AlwaysOn</Filters>
</Add>
<Add Type="Microsoft.ApplicationInsights.Web.ClientIpHeaderTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.OperationNameTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.OperationCorrelationTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.UserTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.AuthenticatedUserIdTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.AccountIdTelemetryInitializer, Microsoft.AI.Web" />
<Add Type="Microsoft.ApplicationInsights.Web.SessionTelemetryInitializer, Microsoft.AI.Web" />
</TelemetryInitializers>
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector" />
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
<!--
Use the following syntax here to collect additional performance counters:
<Counters>
<Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" />
...
</Counters>
PerformanceCounter must be either \CategoryName(InstanceName)\CounterName or \CategoryName\CounterName
NOTE: performance counters configuration will be lost upon NuGet upgrade.
The following placeholders are supported as InstanceName:
??APP_WIN32_PROC?? - instance name of the application process for Win32 counters.
??APP_W3SVC_PROC?? - instance name of the application IIS worker process for IIS/ASP.NET counters.
??APP_CLR_PROC?? - instance name of the application CLR process for .NET counters.
-->
</Add>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule, Microsoft.AI.WindowsServer" />
<Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web">
<Handlers>
<!--
Add entries here to filter out additional handlers:
NOTE: handler configuration will be lost upon NuGet upgrade.
-->
<Add>System.Web.Handlers.TransferRequestHandler</Add>
<Add>Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler</Add>
<Add>System.Web.StaticFileHandler</Add>
<Add>System.Web.Handlers.AssemblyResourceLoader</Add>
<Add>System.Web.Optimization.BundleHandler</Add>
<Add>System.Web.Script.Services.ScriptHandlerFactory</Add>
<Add>System.Web.Handlers.TraceHandler</Add>
<Add>System.Web.Services.Discovery.DiscoveryRequestHandler</Add>
<Add>System.Web.HttpDebugHandler</Add>
</Handlers>
</Add>
<Add Type="Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule, Microsoft.AI.Web" />
</TelemetryModules>
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector" />
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
</Add>
</TelemetryProcessors>
<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel" />
<!--
Learn more about Application Insights configuration with ApplicationInsights.config here:
http://go.microsoft.com/fwlink/?LinkID=513840
Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.
-->
<InstrumentationKey>lalalala-not-telling-you</InstrumentationKey>
</ApplicationInsights>
+89 -111
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\UmbracoCms.7.5.7\build\UmbracoCms.props" Condition="Exists('..\packages\UmbracoCms.7.5.7\build\UmbracoCms.props')" />
<Import Project="..\packages\UmbracoCms.7.5.11\build\UmbracoCms.props" Condition="Exists('..\packages\UmbracoCms.7.5.11\build\UmbracoCms.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -26,8 +26,6 @@
<UseGlobalApplicationHostFile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<ApplicationInsightsResourceId>/subscriptions/76a04863-9a92-45d6-9801-b26d74a625c4/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/OurUmbraco.Site</ApplicationInsightsResourceId>
<ApplicationInsightsAnnotationResourceId>/subscriptions/76a04863-9a92-45d6-9801-b26d74a625c4/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/OurUmbraco.Site</ApplicationInsightsAnnotationResourceId>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -61,8 +59,8 @@
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="businesslogic, Version=1.0.6219.11993, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\businesslogic.dll</HintPath>
<Reference Include="businesslogic, Version=1.0.6274.27355, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\businesslogic.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ClientDependency.Core, Version=1.9.2.0, Culture=neutral, processorArchitecture=MSIL">
@@ -73,12 +71,12 @@
<HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="cms, Version=1.0.6219.11994, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\cms.dll</HintPath>
<Reference Include="cms, Version=1.0.6274.27356, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\cms.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="controls, Version=1.0.6219.11996, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\controls.dll</HintPath>
<Reference Include="controls, Version=1.0.6274.27357, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\controls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CookComputing.XmlRpcV2, Version=2.5.0.0, Culture=neutral, PublicKeyToken=a7d6e17aa302004d, processorArchitecture=MSIL">
@@ -89,8 +87,8 @@
<HintPath>..\packages\EasyHttp.1.6.29.0\lib\net40\EasyHttp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Examine, Version=0.1.80.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.0.1.80\lib\net45\Examine.dll</HintPath>
<Reference Include="Examine, Version=0.1.81.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.0.1.81\lib\net45\Examine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
@@ -101,16 +99,16 @@
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.5.1\lib\net45\ImageProcessor.dll</HintPath>
<Reference Include="ImageProcessor, Version=2.5.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.5.2\lib\net45\ImageProcessor.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor.Web, Version=4.8.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.8.0\lib\net45\ImageProcessor.Web.dll</HintPath>
<Reference Include="ImageProcessor.Web, Version=4.8.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.8.2\lib\net45\ImageProcessor.Web.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="interfaces, Version=1.0.6219.11988, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\interfaces.dll</HintPath>
<Reference Include="interfaces, Version=1.0.6274.27351, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\interfaces.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="JsonFx, Version=2.0.1209.2802, Culture=neutral, PublicKeyToken=315052dd637f8a52, processorArchitecture=MSIL">
@@ -118,51 +116,19 @@
<HintPath>..\packages\JsonFx.2.0.1209.2802\lib\net40\JsonFx.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\log4net.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\log4net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="MarkdownSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Markdown.1.14.4\lib\net45\MarkdownSharp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AI.Agent.Intercept, Version=2.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.Agent.Intercept.2.0.6\lib\net45\Microsoft.AI.Agent.Intercept.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AI.DependencyCollector, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.DependencyCollector.2.2.0\lib\net45\Microsoft.AI.DependencyCollector.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AI.PerfCounterCollector, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.PerfCounterCollector.2.2.0\lib\net45\Microsoft.AI.PerfCounterCollector.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AI.ServerTelemetryChannel, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.2.2.0\lib\net45\Microsoft.AI.ServerTelemetryChannel.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AI.Web, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.Web.2.2.0\lib\net45\Microsoft.AI.Web.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AI.WindowsServer, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.WindowsServer.2.2.0\lib\net45\Microsoft.AI.WindowsServer.dll</HintPath>
<Reference Include="MarkdownSharp, Version=1.14.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Markdown.1.14.7\lib\net45\MarkdownSharp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.ApplicationBlocks.Data, Version=1.0.1559.20655, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.ApplicationInsights, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.2.2.0\lib\net45\Microsoft.ApplicationInsights.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.ApplicationInsights.TraceListener, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ApplicationInsights.TraceListener.2.2.0\lib\net45\Microsoft.ApplicationInsights.TraceListener.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\Microsoft.ApplicationBlocks.Data.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -183,7 +149,7 @@
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.1.2.0\lib\net45\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.1.2.1\lib\net45\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@@ -258,8 +224,20 @@
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SQLCE4Umbraco, Version=1.0.6219.11995, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\SQLCE4Umbraco.dll</HintPath>
<Reference Include="Skybrud.Essentials, Version=1.0.8.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Skybrud.Essentials.1.0.8\lib\net45\Skybrud.Essentials.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Skybrud.Social.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Skybrud.Social.Core.1.0.0-beta9\lib\net45\Skybrud.Social.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Skybrud.Social.Meetup, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Skybrud.Social.Meetup.1.0.0-beta002\lib\net45\Skybrud.Social.Meetup.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SQLCE4Umbraco, Version=1.0.6274.27357, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\SQLCE4Umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Collections.Immutable, Version=1.1.36.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@@ -268,11 +246,11 @@
</Reference>
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\System.Data.SqlServerCe.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\System.Data.SqlServerCe.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.SqlServerCe.Entity, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net" />
@@ -345,51 +323,51 @@
<Reference Include="System.EnterpriseServices" />
<Reference Include="System.Xml.Linq" />
<Reference Include="TidyNet, Version=1.0.0.0, Culture=neutral">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\TidyNet.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\TidyNet.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Tweetinvi, Version=1.2.0.0, Culture=neutral, PublicKeyToken=7247f14397bf67b9, processorArchitecture=MSIL">
<HintPath>..\packages\TweetinviAPI.1.2.0\lib\net45\Tweetinvi.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco, Version=1.0.6219.11997, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\umbraco.dll</HintPath>
<Reference Include="umbraco, Version=1.0.6274.27359, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\umbraco.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Core, Version=1.0.6219.11990, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\Umbraco.Core.dll</HintPath>
<Reference Include="Umbraco.Core, Version=1.0.6274.27352, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\Umbraco.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.DataLayer, Version=1.0.6219.11993, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\umbraco.DataLayer.dll</HintPath>
<Reference Include="umbraco.DataLayer, Version=1.0.6274.27355, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\umbraco.DataLayer.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.editorControls, Version=1.0.6219.11999, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\umbraco.editorControls.dll</HintPath>
<Reference Include="umbraco.editorControls, Version=1.0.6274.27361, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\umbraco.editorControls.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.IdentityExtensions, Version=1.0.5779.34109, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.IdentityExtensions.1.0.0\lib\net45\Umbraco.IdentityExtensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.MacroEngines, Version=1.0.6219.12000, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\umbraco.MacroEngines.dll</HintPath>
<Reference Include="umbraco.MacroEngines, Version=1.0.6274.27362, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\umbraco.MacroEngines.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.ModelsBuilder, Version=3.0.5.96, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Umbraco.ModelsBuilder.3.0.5\lib\Umbraco.ModelsBuilder.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco.providers, Version=1.0.6219.11996, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\umbraco.providers.dll</HintPath>
<Reference Include="umbraco.providers, Version=1.0.6274.27357, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\umbraco.providers.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Umbraco.Web.UI, Version=1.0.6219.12001, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\Umbraco.Web.UI.dll</HintPath>
<Reference Include="Umbraco.Web.UI, Version=1.0.6274.27363, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\Umbraco.Web.UI.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UmbracoExamine, Version=0.7.0.11994, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.7\lib\UmbracoExamine.dll</HintPath>
<Reference Include="UmbracoExamine, Version=0.7.0.27356, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\UmbracoExamine.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="UrlRewritingNet.UrlRewriter, Version=2.0.7.0, Culture=neutral, processorArchitecture=MSIL">
@@ -498,6 +476,7 @@
<SubType>Designer</SubType>
</Content>
<Content Include="config\formHandlers.config" />
<Content Include="config\githubhq.txt" />
<Content Include="config\githubpull.config" />
<Content Include="config\grid.editors.config.js" />
<Content Include="config\Lang\cs-CZ.user.xml" />
@@ -519,6 +498,7 @@
<Content Include="config\Lang\sv-SE.user.xml" />
<Content Include="config\Lang\zh-CN.user.xml" />
<Content Include="config\log4net.config" />
<Content Include="config\MeetupUmbracoGroups.txt" />
<Content Include="config\Notification.config" />
<Content Include="config\restExtensions.config" />
<Content Include="config\Skinning.config" />
@@ -667,9 +647,6 @@
<Content Include="config\imageprocessor\security.config" />
<Content Include="config\imageprocessor\processing.config" />
<Content Include="config\imageprocessor\cache.config" />
<Content Include="ApplicationInsights.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="config\tinyMceConfig.config" />
<Content Include="config\scripting.config" />
<Content Include="config\metablogConfig.config" />
@@ -1685,10 +1662,7 @@
<Content Include="Views\ContentLanding.cshtml" />
<Content Include="Views\Blank.cshtml" />
<Content Include="Views\DisplayTopic.cshtml" />
<Content Include="Views\MacroPartials\Forum\TopicForm.cshtml" />
<Content Include="Views\MacroPartials\Members\HeaderProfile.cshtml" />
<Content Include="Views\MacroPartials\Members\QuickMenu.cshtml" />
<Content Include="Views\MacroPartials\Members\JsValues.cshtml" />
<Content Include="Views\Partials\Forum\Comment.cshtml" />
<Content Include="Assets\css\fonts\our-icon\our-umbraco.eot" />
<Content Include="Assets\css\fonts\our-icon\our-umbraco.svg" />
@@ -1696,29 +1670,20 @@
<Content Include="Assets\css\fonts\our-icon\our-umbraco.woff" />
<Content Include="Assets\images\logo.svg" />
<Content Include="Assets\images\magnifier.svg" />
<Content Include="Views\MacroPartials\Navigation\TopNavigation.cshtml" />
<Content Include="Assets\css\fonts\icomoon\icomoon.eot" />
<Content Include="Assets\css\fonts\icomoon\icomoon.ttf" />
<Content Include="Assets\css\fonts\icomoon\icomoon.woff" />
<Content Include="Views\MacroPartials\Forum\TopicActions.cshtml" />
<Content Include="Views\MacroPartials\Forum\ForumActions.cshtml" />
<Content Include="Assets\js\jquery.scrolly.js" />
<Content Include="Views\MacroPartials\Members\Profile.cshtml" />
<Content Include="Views\MacroPartials\Members\ProfileNotifications.cshtml" />
<Content Include="Views\MacroPartials\Documenation\Breadcrumb.cshtml" />
<Content Include="Views\MacroPartials\Documenation\DisplayMarkdown.cshtml" />
<Content Include="Views\MacroPartials\Documenation\Navigation.cshtml" />
<Content Include="Views\MacroPartials\Projects\ListCategories.cshtml" />
<Content Include="Views\MacroPartials\Projects\ListProjects.cshtml" />
<Content Include="Views\MacroPartials\Members\ProfileNavigation.cshtml" />
<Content Include="Views\Partials\Documentation\Navigation.cshtml" />
<Content Include="Views\Partials\Projects\ListCategories.cshtml" />
<Content Include="Views\Partials\Projects\ListProjects.cshtml" />
<Content Include="Views\Partials\Members\ProfileNavigation.cshtml" />
<Content Include="Views\MacroPartials\Search\GlobalSearchPage.cshtml" />
<Content Include="Views\MacroPartials\Members\ProfileProjectTeam.cshtml" />
<Content Include="Views\MacroPartials\Releases\AllReleases.cshtml" />
<Content Include="Views\MacroPartials\Projects\ProjectDetails.cshtml" />
<Content Include="Views\MacroPartials\Members\Register.cshtml" />
<Content Include="Views\MacroPartials\Members\ProfileProjectForums.cshtml" />
<Content Include="Views\MacroPartials\Global\AlertBar.cshtml" />
<Content Include="Views\MacroPartials\Members\PublicProfile.cshtml" />
<Content Include="Views\MacroPartials\Rss\Forum.cshtml" />
<Content Include="Views\MacroPartials\Rss\LatestTopics.cshtml" />
<Content Include="Views\MacroPartials\Rss\Packages.cshtml" />
@@ -1734,30 +1699,31 @@
<Content Include="umbraco\lib\font-awesome\fonts\FontAwesome.otf" />
<Content Include="macroScripts\repository-popularpackages.cshtml" />
<Content Include="Views\MacroPartials\RedirectProjectCategory.cshtml" />
<Content Include="Views\MacroPartials\Community\Home.cshtml" />
<Content Include="Views\MacroPartials\Project\Edit.cshtml" />
<Content Include="umbraco\lib\bootstrap-tabdrop\README.md" />
<Content Include="Views\MacroPartials\Releases\ReleasesDropdown.cshtml" />
<Content Include="Views\Partials\Community\TermsAndConditions.cshtml" />
<Content Include="Views\Master.cshtml" />
<Content Include="Views\Community.cshtml" />
<Content Include="Views\Forum.cshtml" />
<Content Include="Views\MacroPartials\Members\Login.cshtml" />
<Content Include="Views\MacroPartials\Members\ForgotPassword.cshtml" />
<Content Include="Views\Partials\Forum\Forum.cshtml" />
<Content Include="Views\Partials\Projects\MyProjects.cshtml" />
<Content Include="Views\MacroPartials\Projects\MyProjects.cshtml" />
<Content Include="Views\EditProject.cshtml" />
<Content Include="Views\FileDownload.cshtml" />
<Content Include="Views\DocumentationSubpage.cshtml" />
<Content Include="Views\Download.cshtml" />
<None Include="Views\Partials\Forum\MemberBadge.cshtml" />
<Content Include="Views\Partials\Community\Scripts.cshtml" />
<Content Include="Views\Partials\Community\Home.cshtml" />
<Content Include="Views\Partials\Community\JsValues.cshtml" />
<Content Include="Views\Partials\Forum\ForumActions.cshtml" />
<Content Include="Views\Partials\Forum\MemberBadge.cshtml" />
<Content Include="Views\Partials\Project\EditFiles.cshtml" />
<Content Include="Views\Partials\Project\PackageEditNavigation.cshtml" />
<Content Include="Views\Partials\Project\EditScreenshots.cshtml" />
<Content Include="Views\Partials\Project\Complete.cshtml" />
<Content Include="Views\Partials\Home\LatestForumActivity.cshtml" />
<Content Include="Views\MacroPartials\Community\Scripts.cshtml" />
<Content Include="Service References\Application Insights\ConnectedService.json" />
<Content Include="Views\Web.config" />
<Content Include="web.config">
<SubType>Designer</SubType>
@@ -4323,9 +4289,7 @@
<Content Include="umbraco\Views\Default.cshtml" />
<Content Include="umbraco\webservices\UltimatePickerAutoCompleteHandler.ashx" />
<Content Include="umbraco\xslt\Web.config" />
<Content Include="Views\MacroPartials\Forum\Latest.cshtml" />
<Content Include="Views\MacroPartials\Forum\Forum.cshtml" />
<Content Include="Views\MacroPartials\Forum\Thread.cshtml" />
<Content Include="Views\Partials\Forum\Latest.cshtml" />
<Content Include="Views\Partials\Forum\Question.cshtml" />
<Content Include="Views\Partials\Members\Profile.cshtml" />
<Content Include="Views\Partials\Members\ProfileNotification.cshtml" />
@@ -4346,8 +4310,6 @@
<Content Include="Views\Release.cshtml" />
<Content Include="Views\Textpage.cshtml" />
<Content Include="Views\RoadMap.cshtml" />
<Content Include="Views\Partials\Members\Login.cshtml" />
<Content Include="Views\Partials\Members\ForgotPassword.cshtml" />
<Content Include="Views\Profilepage.cshtml" />
<Content Include="Views\ProjectPage.cshtml" />
<Content Include="Views\ReleaseDownload.cshtml" />
@@ -4357,6 +4319,21 @@
<Content Include="Views\RepositoryFrontpage.cshtml" />
<Content Include="Views\RepositoryPage.cshtml" />
<Content Include="Views\RepositoryMaster.cshtml" />
<Content Include="Views\Partials\Members\QuickMenu.cshtml" />
<Content Include="Views\Partials\Navigation\TopNavigation.cshtml" />
<Content Include="Views\Partials\Global\Alertbar.cshtml" />
<Content Include="Views\Partials\Global\Breadcrumb.cshtml" />
<Content Include="Views\Partials\Forum\TopicActions.cshtml" />
<Content Include="Views\Partials\Forum\TopicForm.cshtml" />
<Content Include="Views\Partials\Forum\Thread.cshtml" />
<Content Include="Views\Partials\Documentation\Breadcrumb.cshtml" />
<Content Include="Views\Partials\Documentation\DisplayMarkdown.cshtml" />
<Content Include="Views\Partials\Members\PublicProfile.cshtml" />
<Content Include="Views\Partials\Projects\ProjectDetails.cshtml" />
<Content Include="Views\Partials\Releases\ReleasesDropdown.cshtml" />
<Content Include="Views\Partials\Releases\AllReleases.cshtml" />
<Content Include="Views\Error.cshtml" />
<Content Include="Views\PeopleKarma.cshtml" />
<Content Include="Views\Partials\Grid\Editors\Textstring.cshtml" />
<Content Include="Views\Partials\Grid\Editors\Rte.cshtml" />
<Content Include="Views\Partials\Grid\Editors\Media.cshtml" />
@@ -4367,6 +4344,9 @@
<Content Include="Views\Partials\Grid\Bootstrap3-Fluid.cshtml" />
<Content Include="Views\Partials\Grid\Bootstrap2.cshtml" />
<Content Include="Views\Partials\Grid\Bootstrap2-Fluid.cshtml" />
<Content Include="Views\Lesson.cshtml" />
<Content Include="Views\Partials\Home\GitHubContributors.cshtml" />
<Content Include="Views\Partials\Home\Meetups.cshtml" />
<None Include="web.Debug.config">
<DependentUpon>web.config</DependentUpon>
</None>
@@ -4391,14 +4371,12 @@
<Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.1.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll" />
<Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.1.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.Analyzers.dll" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
<VSToolsPath Condition="exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets')">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0</VSToolsPath>
<VSToolsPath Condition="exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets')">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0</VSToolsPath>
<VSToolsPath Condition="exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets')">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
<VSToolsPath Condition="exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets')">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0</VSToolsPath>
</PropertyGroup>
<PropertyGroup>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
@@ -4441,16 +4419,16 @@
<!-- Only runs if the ClientFiles build folder doesn't yet exist -->
<CallTarget Targets="ClientFilesBuild" Condition="!Exists('$(ProjectDir)\..\OurUmbraco.Client\build\assets')" />
</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">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.7\build\UmbracoCms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.7\build\UmbracoCms.props'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.7\build\UmbracoCms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.7\build\UmbracoCms.targets'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.11\build\UmbracoCms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.11\build\UmbracoCms.props'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.11\build\UmbracoCms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.11\build\UmbracoCms.targets'))" />
</Target>
<Import Project="..\packages\UmbracoCms.7.5.7\build\UmbracoCms.targets" Condition="Exists('..\packages\UmbracoCms.7.5.7\build\UmbracoCms.targets')" />
<Import Project="..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets" Condition="Exists('..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets')" />
<Import Project="..\packages\UmbracoCms.7.5.11\build\UmbracoCms.targets" Condition="Exists('..\packages\UmbracoCms.7.5.11\build\UmbracoCms.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="AfterBuild">
@@ -1,7 +0,0 @@
{
"ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
"Version": "7.16.109.2",
"GettingStartedDocument": {
"Uri": "https://go.microsoft.com/fwlink/?LinkID=613413"
}
}
+8 -4
View File
@@ -1,11 +1,12 @@
@inherits UmbracoTemplatePage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
@Umbraco.RenderMacro("CommunityHome")
@Html.Partial("~/Views/Partials/Community/Home.cshtml")
@section Search {
@section Search
{
<script type="text/template" class="search-item-template">
<li>
<a href="{{ url }}">
@@ -26,4 +27,7 @@
</script>
}
@Umbraco.RenderMacro("CommunityHomeScripts")
@section EndScripts
{
@Html.Partial("~/Views/Partials/Community/Scripts.cshtml")
}
+12 -3
View File
@@ -2,18 +2,27 @@
@{
Layout = "~/Views/Master.cshtml";
}
<div id="contribute" class="subpage">
<div id="body" class="markdown-syntax">
<div>
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "0" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = false })
</div>
<h1>Contribute to the Umbraco Project</h1>
<div>
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
</div>
<div class="options">
@Umbraco.RenderMacro("ContentLanding-Summary")
<div class="row projectGroups">
@foreach (var item in Model.Content.Children.Where(x => x.IsVisible()))
{
<div class="projectGroup col-md-6">
<div style="background-image: url('@(item.GetPropertyValue<string>("contentIcon"))">
<h3><a href="@item.Url">@item.Name</a></h3>
<p>@(item.GetPropertyValue<string>("abstract"))</p>
</div>
</div>
}
</div>
</div>
</div>
</div>
+34 -5
View File
@@ -1,6 +1,10 @@
@inherits UmbracoTemplatePage
@using OurUmbraco.Forum.Services
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
var topicService = new TopicService(ApplicationContext.DatabaseContext);
var topic = topicService.CurrentTopic(Context, ApplicationContext.ApplicationCache.RequestCache, MemberData, Model.Content);
}
<!-- FORUM OVERVIEW START -->
<section class="forum-overview">
@@ -8,15 +12,40 @@
<!-- FORUM HEADER START -->
<div class="utilities">
<!-- FORUM BREADCRUMB START -->
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
<!-- FORUM BREADCRUMB END -->
<!-- THREAD ACTIONS START -->
@Umbraco.RenderMacro("ForumTopicActions")
@if (topic != null)
{
Html.RenderPartial("~/Views/Partials/Forum/TopicActions.cshtml", topic);
}
<!-- THREAD ACTIONS END -->
<div class="clear"></div>
</div>
<!-- FORUM HEADER END -->
@Umbraco.RenderMacro("ForumThread")
@if (topic != null)
{
Html.RenderPartial("~/Views/Partials/Forum/Thread.cshtml", topic);
}
else
{
<p>This topic no longer exists.</p>
}
</div>
</section>
@Umbraco.RenderMacro("ForumForm")
@Html.Partial("~/Views/Partials/Forum/TopicForm.cshtml")
@section HeadCssScripts {
<link rel="stylesheet" type="text/css" href="/css/tooltipster.css" />
}
@section EndScripts {
<script type="text/javascript" src="/scripts/jquery.tooltipster.min.js"></script>
<script type="text/javascript">
$('.highfive-count').tooltipster({
contentAsHTML: true,
interactive: true,
multiple: true
});
</script>
}
@@ -7,11 +7,11 @@
<div id="wiki" class="subpage">
<div id="body">
<div style="margin-top: 25px;">
@Umbraco.RenderMacro("DocsBreadcrumb")
@Html.Partial("~/Views/Partials/Documentation/Breadcrumb.cshtml")
</div>
<div id="markdown-docs" class="markdown-syntax">
@Umbraco.RenderMacro("DocsDisplayMarkdown")
@Html.Partial("~/Views/Partials/Documentation/DisplayMarkdown.cshtml")
</div>
<br style="clear: both" />
@@ -8,7 +8,7 @@
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("DocsNavigation")
@Html.Partial("~/Views/Partials/Documentation/Navigation.cshtml")
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div><!-- .sidebar-area-->
@@ -17,7 +17,7 @@
<div class="main-content">
<div class="content-wrapper">
<div>
@Umbraco.RenderMacro("DocsBreadcrumb")
@Html.Partial("~/Views/Partials/Documentation/Breadcrumb.cshtml")
</div>
<div class="search-big">
@@ -28,7 +28,7 @@
<ul class="search-all-results docs-search-listing"></ul>
<div id="markdown-docs" class="docs-default-listing markdown-syntax">
@Umbraco.RenderMacro("DocsDisplayMarkdown")
@Html.Partial("~/Views/Partials/Documentation/DisplayMarkdown.cshtml")
</div>
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
+3 -2
View File
@@ -6,14 +6,15 @@
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("MemberProfileNavigation", new { source = "1057" })
@Html.Partial("~/Views/Partials/Members/ProfileNavigation.cshtml")
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div><!-- .sidebar-area -->
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@if (Request.QueryString["editorStep"] == "files")
{
@Html.Action("RenderFiles", "Project")
+7
View File
@@ -0,0 +1,7 @@
@using Umbraco.Core.Logging
@{
var absoluteReferrer = string.Empty;
var referrer = HttpContext.Current.Request.UrlReferrer;
if(referrer != null) { absoluteReferrer = referrer.AbsoluteUri; }
LogHelper.Info<string>(string.Format("Error view requested on page {0} - referrer {1}", HttpContext.Current.Request.Url.AbsoluteUri, absoluteReferrer));
}
+2 -2
View File
@@ -6,10 +6,10 @@
<!-- FORUM OVERVIEW START -->
<section class="forum-overview">
<div class="forum-archive">
@Umbraco.RenderMacro("ForumForum")
@Html.Partial("~/Views/Partials/Forum/Forum.cshtml")
</div>
</section>
@Umbraco.RenderMacro("ForumForm")
@Html.Partial("~/Views/Partials/Forum/TopicForm.cshtml")
@section EndScripts {
@{
+54
View File
@@ -0,0 +1,54 @@
@using OurUmbraco.Documentation.Busineslogic
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout = null;
var path = HttpContext.Current.Items[MarkdownLogic.MarkdownPathKey].ToString();
var ml = new MarkdownLogic(path) { PrefixLinks = false, AppendAltLessonLink = true };
var markdown = ml.DoTransformation();
}
<html>
<head>
<title></title>
<link href="https://fonts.googleapis.com/css?family=Asap:400,700,400italic,700italic" type="text/css" rel="stylesheet"/>
<style>
body {
font-family: Asap, sans-serif;
}
code {
background-color: #eeeeee ;
padding: 5px;
}
pre {
word-wrap: break-word;
white-space: pre-wrap;
}
pre > code {
display: block;
}
img {
max-width: 90%;
}
blockquote {
border-left: 4px solid #ddd;
padding: 1px 15px;
color: #777;
background: #efefef ;
margin: 0;
}
</style>
</head>
<body>
<div>
@Html.Raw(markdown)
</div>
</body>
</html>
@@ -1,18 +0,0 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
<script type="text/javascript">
$(document).ready(function () {
try {
$("#twitter-search").load("@Url.Action("TwitterSearchResult", "TwitterSearch", new { numberOfResults = 6 })");
}
catch (errTwitter) {
console.log("Couldn't load Twitter feed", errTwitter.message);
}
try {
$("#forum-activity").load("@Url.Action("LatestActivity", "LatestActivity", new { numberOfTopics = 6 })");
}
catch (errForum) {
console.log("Couldn't load latest forum activity", errForum.message);
}
});
</script>
@@ -1,173 +0,0 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using System.Web.Mvc.Html
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Services
@using OurUmbraco.NotificationsWeb.Library
@using Umbraco.Core.Logging
@{
var topicService = new TopicService(ApplicationContext.DatabaseContext);
var topic = topicService.CurrentTopic(this.Context, ApplicationContext.ApplicationCache.RequestCache);
var notification = Model.Content.GetPropertyValue<string>("mainNotification");
if (string.IsNullOrWhiteSpace(notification))
{
notification = "This forum is in read only mode, you can no longer reply";
}
}
<!-- COPY LINK -->
<div id="overlay" class="overlay"></div>
<div id="copy-link-wrapper" class="copy-link-wrapper">
<i class="icon-Link"></i>
<textarea class="getLink" readonly type="text"></textarea>
<p>Press Ctrl / CMD + C to copy this to your clipboard.</p>
</div>
<div id="thankyou">
Copied to clipboard
</div>
<!-- COPY LINK END -->
<!-- DELETE THREAD/COMMENT START -->
@if (Members.IsLoggedIn())
{
<div id="confirm-wrapper" class="confirm-wrapper">
<h4>Are you sure?</h4>
<p>This <span class="type-of"></span> will be gone forever and ever</p>
<br />
<button type="button" class="button green tiny">Yes</button>
<button type="button" class="button red tiny">No</button>
</div>
}
<!-- DELETE THREAD END -->
<!-- FLAG SPAM START -->
<div id="confirm-wrapper-flag" class="confirm-wrapper-flag">
<h4>Flag this post as spam?</h4>
<p>This post will be reported to the moderators as potential spam to be looked at</p>
<br />
<button type="button" class="button green tiny">Yes</button>
<button type="button" class="button red tiny">No</button>
</div>
<!-- FLAG SPAM END -->
@if (topic != null)
{
if (Model.Content.NewTopicsAllowed() == false)
{
<div class="alertbar__yellow" style="margin-bottom: 10px;">
@Html.Raw(notification)
</div>
}
<ul class="comments">
@{
try
{
@Html.Partial("forum/question", topic)
}
catch (Exception ex)
{
LogHelper.Error<string>(string.Format("~/Views/MacroPartials/Forum/Thread.cshtml - error rendering topic with id {0}", topic.Id), ex);
}
}
@foreach (var comment in topic.Comments.Where(x => x.ParentCommentId == 0))
{
var comm = comment;
Html.RenderPartial("forum/comment", comm, new ViewDataDictionary { { "level", 1 }, { "answer", topic.Answer } });
if (comm.HasChildren)
{
var children = topic.Comments.Where(x => x.ParentCommentId == comm.Id);
foreach (var child in children.Where(c => c.ParentCommentId == comm.Id))
{
Html.RenderPartial("forum/comment", child, new ViewDataDictionary { { "level", 2 }, { "answer", topic.Answer } });
}
}
}
</ul>
if (Members.IsLoggedIn())
{
if (Model.Content.NewTopicsAllowed())
{
<div class="replybutton">
<a href="#" class="button green large reply forum-reply" data-author="@topic.AuthorName" data-topic="@topic.Id" data-controller="comment"><i class="icon-Reply-arrow"></i>&nbsp;Reply to topic</a>
</div>
<div class="utilities">
<div class="utility-actions thread-bottom">
@if (Members.IsLoggedIn())
{
var mem = Members.GetCurrentMember();
var subscribed = false;
if (mem != null)
{
subscribed = Utils.IsSubscribedToForumTopic(topic.Id, mem.Id);
}
if (Members.IsAdmin())
{
<a href="#" class="delete-thread button" data-id="@topic.Id">
<i class="icon-Delete-key"></i><span>Delete thread</span>
</a>
}
if (subscribed)
{
<a href="#" class="follow button following" data-id="@topic.Id" data-controller="topic">
<i class="icon-Bookmark"></i><span>Following</span>
</a>
}
else
{
<a href="#" class="follow button transparent" data-id="@topic.Id" data-controller="topic">
<i class="icon-Bookmark"></i><span>Follow</span>
</a>
}
}
@if (topic.Answer > 0)
{
<a href="#comment-@topic.Answer.ToString()" class="go-to-solution button transparent">
<i class="icon-Check"></i><span>Go to solution</span>
</a>
}
</div>
</div>
}
else
{
<div class="alertbar__yellow">
@Html.Raw(notification)
</div>
}
}
else
{
<div class="replybutton notloggedin">
Please <a href="/member/login?redirectUrl=@(Server.UrlEncode(Request.Url.AbsoluteUri))">Sign in</a> or <a href="/member/signup">register</a> to post replies
</div>
}
}
else
{
<p>This topic no longer exists.</p>
}
<link rel="stylesheet" type="text/css" href="/css/tooltipster.css" />
<script type="text/javascript" src="/scripts/jquery.tooltipster.min.js"></script>
<script type="text/javascript">
$('.highfive-count').tooltipster({
contentAsHTML: true,
interactive: true,
multiple: true
});
</script>
@@ -1,50 +0,0 @@
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Services
@using OurUmbraco.NotificationsWeb.Library
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
var topicService = new TopicService(ApplicationContext.DatabaseContext);
var topic = topicService.CurrentTopic(this.Context, ApplicationContext.ApplicationCache.RequestCache);
}
<div class="utility-actions">
@if(topic != null)
{
if (Members.IsLoggedIn())
{
var mem = Members.GetCurrentMember();
var subscribed = false;
if (mem != null)
{
subscribed = Utils.IsSubscribedToForumTopic(topic.Id, mem.Id);
}
if (Members.IsAdmin())
{
<a href="#" class="delete-thread button" data-id="@topic.Id">
<i class="icon-Delete-key"></i><span>Delete thread</span>
</a>
}
if (subscribed)
{
<a href="#" class="follow button following" data-id="@topic.Id" data-controller="topic">
<i class="icon-Bookmark"></i><span>Following</span>
</a>
}
else
{
<a href="#" class="follow button transparent" data-id="@topic.Id" data-controller="topic">
<i class="icon-Bookmark"></i><span>Follow</span>
</a>
}
}
if (topic.Answer > 0)
{
<a href="#comment-@topic.Answer.ToString()" class="go-to-solution button transparent">
<i class="icon-Check"></i><span>Go to solution</span>
</a>
}
}
</div>
@@ -1,18 +0,0 @@
@using OurUmbraco.Forum.Extensions
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@if(Members.IsLoggedIn()){
var profile = Members.GetCurrentMemberProfileModel();
var member = Members.GetCurrentMember();
if (member != null) {
<script type="text/javascript">
var umb_member_name = '@member.Name';
var umb_member_email = '@profile.Email';
var umb_member_icon = '@member.Avatar()';
</script>
}
}
@@ -1,41 +0,0 @@
@using System.Collections.Specialized
@using System.Drawing
@using OurUmbraco.Our
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
@* Get the root of the website *@
var root = CurrentPage.AncestorOrSelf(1);
Image avatarImage = null;
if (Members.IsLoggedIn())
{
avatarImage = Utils.GetMemberAvatarImage(Members.GetCurrentMember());
}
}
<ul>
@foreach (var page in root.Children.Where("Visible"))
{
<li class="@(page.IsAncestorOrSelf(CurrentPage) ? "current" : null)">
<a href="@page.Url">@page.Name</a>
</li>
}
<li>
@if (Members.IsLoggedIn() && Members.GetCurrentMember() != null)
{
var member = Members.GetCurrentMember();
<div class="user">
@Html.Raw(Utils.GetMemberAvatar(member, 75))
@if (avatarImage != null && (avatarImage.Width < 400 || avatarImage.Height < 400))
{
<span class="notificationCount">1</span>
}
</div>
}
else
{
<a href="/member/login?redirectUrl=@(Server.UrlEncode(Request.Url.AbsolutePath))">Sign in</a><strong> / </strong><a href="/member/Signup">Register</a>
}
</li>
</ul>
@@ -1,14 +0,0 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@* Ensure that the Current Page has children, where the property umbracoNaviHide is not True *@
<ul class="level-2">
@* For each child page under the root node, where the property umbracoNaviHide is not True *@
@foreach (var childPage in CurrentPage.ProjectGroups.Where("Visible"))
{
<li>
<h4><a href="?category=@childPage.Name">@childPage.Name</a></h4>
</li>
}
<li><h4><a href="?category=uaas">Umbraco Cloud</a></h4></li>
</ul>
+27 -28
View File
@@ -1,7 +1,6 @@
@using ClientDependency.Core.Mvc
@using Umbraco.Core.Configuration
@using Umbraco.Web.Security
@inherits UmbracoTemplatePage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
Layout = null;
var model = UmbracoContext.Current.PublishedContentRequest.PublishedContent;
@@ -9,18 +8,15 @@
model.Level > 2 && model.AncestorOrSelf(3).Id == 1057
? "profile has-sidebar"
: model.DocumentTypeAlias.ToLower().Replace(" ", "-") + "-page";
var ms = new MembershipHelper(UmbracoContext.Current);
var member = ms.GetCurrentMember();
var memberIsBlocked = false;
if (member != null) { memberIsBlocked = member.GetPropertyValue<bool>("blocked"); }
var memberIsBlocked = MemberData != null && MemberData.IsBlocked;
Html.RequiresCss("~/assets/css/style.min.css", 0);
Html.RequiresCss("https://fonts.googleapis.com/css?family=Asap:400,700,400italic,700italic", 0);
Html.RequiresCss("https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.css", 0);
Html.RequiresJs("https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.min.js");
Html.RequiresJs("https://ajax.aspnetcdn.com/ajax/mvc/4.0/jquery.validate.unobtrusive.min.js");
Html.RequiresJs("https://cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Converter.js");
@@ -47,7 +43,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="alternate" type="application/rss+xml" title="Latest packages" href="//our.umbraco.org/rss/projects" />
<link rel="alternate" type="application/rss+xml" title="Package updates" href="//our.umbraco.org/rss/projectsupdate" />
@@ -72,7 +68,21 @@
<link rel="icon" type="image/png" href="/assets/images/app-icons/favicon.png">
<title>
@Umbraco.RenderMacro("Title")
@{
var title = string.Empty;
var navigationTitle = HttpContext.Current.Items["topicTitle"];
if (navigationTitle != null)
{
title = navigationTitle.ToString();
}
if (string.IsNullOrWhiteSpace(title) == false)
{
<text>@title - </text>
}
}
@Model.Content.Name - our.umbraco.org
</title>
<meta name="description" content="">
<meta name="author" content="">
@@ -82,21 +92,11 @@
<![endif]-->
<script type="text/javascript" src="https://code.jquery.com/jquery-1.7.2.min.js"></script>
@Umbraco.RenderMacro("MembersJsValues")
@Html.Partial("~/Views/Partials/Community/JsValues.cshtml")
@Html.RenderCssHere()
@RenderSection("HeadCssScripts", false)
<script>
var _prum = [['id', '529dbcf6abe53d055a000000'],
['mark', 'firstbyte', (new Date()).getTime()]];
(function () {
var s = document.getElementsByTagName('script')[0]
, p = document.createElement('script');
p.async = 'async';
p.src = '//rum-static.pingdom.net/prum.min.js';
s.parentNode.insertBefore(p, s);
})();
</script>
<script>
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
@@ -108,11 +108,10 @@
ga('create', 'UA-120590-4', 'auto');
ga('send', 'pageview');
</script>
</head>
<body class="@bodyCss">
@Umbraco.RenderMacro("MembersQuickMenu")
@Html.Partial("~/Views/Partials/Members/QuickMenu.cshtml")
<div class="wrapper">
<header>
@@ -126,7 +125,7 @@
<a href="#" class="toggle cross"><span></span></a>
</div>
<nav class="col-md-9">
@Umbraco.RenderMacro("NavigationTopNavigation")
@Html.Partial("~/Views/Partials/Navigation/TopNavigation.cshtml")
</nav>
</div>
</div>
@@ -136,7 +135,7 @@
@{
if (memberIsBlocked == false)
{
@Umbraco.RenderMacro("GlobalAlertBar")
@Html.Partial("~/Views/Partials/Global/AlertBar.cshtml")
@RenderSection("Search", false)
@RenderBody()
}
@@ -175,7 +174,7 @@
</div>
<!--.wrapper-->
@Html.RenderJsHere()
<script type="text/javascript">
@@ -184,4 +183,4 @@
@RenderSection("EndScripts", false)
</body>
</html>
</html>
@@ -1,127 +1,191 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
var homeNotificationText = Model.Content.GetPropertyValue<string>("homeOnlyBanner");
var showHomeNotification = string.IsNullOrWhiteSpace(homeNotificationText) == false;
var globalNotificationText = Model.Content.GetPropertyValue<string>("mainNotification");
var showGlobalNotification = string.IsNullOrWhiteSpace(globalNotificationText) == false;
}
<!-- Search start -->
<section id="search-all" class="search-all">
<div class="search-all-form">
<div class="search-fieldset">
<input class="search-input" type="search" placeholder="Search..">
<input class="search-submit" type="submit" value="&#xe085;">
</div>
<span class="search-all-close"></span>
</div>
<div class="search-all-results equalizer">
<ul></ul>
</div>
@if (!Members.IsLoggedIn())
{
<div class="search-text">
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<strong>The friendliest CMS community on the planet</strong>
<p>our.umbraco.org is the central hub for the friendly umbraco community. Search for documentation, get help and guidance from seasoned experts, download and collaborate on plugins and extensions.</p>
</div>
</div>
</div>
</div>
}
</section>
<!-- Search end -->
<style>
.bannertext p{
line-height: 1.4rem;
}
</style>
@if (showGlobalNotification)
{
<div class="alertbar__yellow">
@Html.Raw(globalNotificationText)
</div>
}
@if (showHomeNotification)
{
@Html.Raw(homeNotificationText)
}
@if (Members.IsLoggedIn())
{
@ForumActivity()
@TwitterSearch()
@Html.Partial("home/documentation")
}
else
{
@Html.Partial("home/documentation")
@ForumActivity()
@TwitterSearch()
}
@helper ForumActivity()
{
<section class="forum">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="text-center">Forum Activity</h1>
<p>
Recent activity in the forums, where people are helping each other with current problems.
</p>
</div>
<div class="col-md-12">
<small>Recent posts</small>
</div>
<div class="col-md-12 flex" id="forum-activity">
<h2>Loading latest forum activity...</h2>
</div>
<div class="col-md-12 goto-forum">
<a class="button green" href="/forum">Go to Forum &rarr;</a>
</div>
</div>
</div>
</section>
}
@helper TwitterSearch()
{
<section class="forum">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="text-center">Twitter Activity</h1>
<p>
Recent activity on twitter, where people are talking about Umbraco.
</p>
</div>
<div class="col-md-12">
<small>Recent tweets</small>
</div>
<div class="col-md-12 flex" id="twitter-search">
<h2>Loading twitter search results...</h2>
</div>
<div class="col-md-12 goto-forum">
<a class="button green" href="https://twitter.com/search?f=tweets&vertical=default&q=umbraco&src=typd">Join the conversation on Twitter &rarr;</a>
</div>
</div>
</div>
</section>
@using OurUmbraco.Our.Models
@using Skybrud.Social.Meetup.Models.Events
@inherits OurUmbracoTemplatePage
@{
var homeNotificationText = Model.Content.GetPropertyValue<string>("homeOnlyBanner");
var showHomeNotification = string.IsNullOrWhiteSpace(homeNotificationText) == false;
var globalNotificationText = Model.Content.GetPropertyValue<string>("mainNotification");
var showGlobalNotification = string.IsNullOrWhiteSpace(globalNotificationText) == false;
}
<!-- Search start -->
<section id="search-all" class="search-all">
<div class="search-all-form">
<div class="search-fieldset">
<input class="search-input" type="search" placeholder="Search..">
<input class="search-submit" type="submit" value="&#xe085;">
</div>
<span class="search-all-close"></span>
</div>
<div class="search-all-results equalizer">
<ul></ul>
</div>
@if (MemberData == null)
{
<div class="search-text">
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<strong>The friendliest CMS community on the planet</strong>
<p>our.umbraco.org is the central hub for the friendly umbraco community. Search for documentation, get help and guidance from seasoned experts, download and collaborate on plugins and extensions.</p>
</div>
</div>
</div>
</div>
}
</section>
<!-- Search end -->
<style>
.bannertext p {
line-height: 1.4rem;
}
</style>
@if (showGlobalNotification)
{
<div class="alertbar__yellow">
@Html.Raw(globalNotificationText)
</div>
}
@if (showHomeNotification)
{
@Html.Raw(homeNotificationText)
}
@if (Members.IsLoggedIn())
{
@ForumActivity()
@Meetups()
@GitHubContributors()
@TwitterSearch()
@Html.Partial("home/documentation")
}
else
{
@Html.Partial("home/documentation")
@ForumActivity()
@Meetups()
@GitHubContributors()
@TwitterSearch()
}
@helper ForumActivity()
{
<section class="forum">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="text-center">Forum Activity</h1>
<p>
Recent activity in the forums, where people are helping each other with current problems.
</p>
</div>
<div class="col-md-12">
<small>Recent posts</small>
</div>
<div class="col-md-12 flex" id="forum-activity">
<h2>Loading latest forum activity...</h2>
</div>
<div class="col-md-12 goto-forum">
<a class="button green" href="/forum">Go to Forum &rarr;</a>
</div>
</div>
</div>
</section>
}
@helper TwitterSearch()
{
<section class="forum">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="text-center">Twitter Activity</h1>
<p>
Recent activity on twitter, where people are talking about Umbraco.
</p>
</div>
<div class="col-md-12">
<small>Recent tweets</small>
</div>
<div class="col-md-12 flex" id="twitter-search">
<h2>Loading twitter search results...</h2>
</div>
<div class="col-md-12 goto-forum">
<a class="button green" href="https://twitter.com/search?f=tweets&vertical=default&q=umbraco&src=typd">Join the conversation on Twitter &rarr;</a>
</div>
</div>
</div>
</section>
}
@helper GitHubContributors()
{
<section class="github-contributors forum">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="text-center">GitHub Contributions</h1>
<p>
Contributions to Umbraco GitHub repositories
<small class="link-list">
Contributions to default branches for
<a href="https://github.com/umbraco/Umbraco-CMS" target="_blank" title="Umbraco-CMS">Umbraco-CMS</a>,
<a href="https://github.com/umbraco/UmbracoDocs" target="_blank" title="UmbracoDocs">UmbracoDocs</a>,
<a href="https://github.com/umbraco/OurUmbraco" target="_blank" title="OurUmbraco">OurUmbraco</a>,
<a href="https://github.com/umbraco/Umbraco.Deploy.Contrib" target="_blank" title="Umbraco.Deploy.Contrib">Umbraco.Deploy.Contrib</a>,
<a href="https://github.com/umbraco/Umbraco.Courier.Contrib" target="_blank" title="Umbraco.Courier.Contrib">Umbraco.Courier.Contrib</a> and
<a href="https://github.com/umbraco/Umbraco.Deploy.ValueConnectors" target="_blank" title="Umbraco.Deploy.ValueConnectors">Umbraco.Deploy.ValueConnectors</a> repos
</small>
</p>
</div>
<div class="col-md-12">
<small>GitHub contributors</small>
</div>
<div class="col-md-12 flex forum-thread" id="github-contributors">
<h2>Loading GitHub contributors...</h2>
</div>
<div class="col-md-12 goto-forum">
<a class="button green" href="https://github.com/umbraco" target="_blank">Contribute to Umbraco on GitHub &rarr;</a>
</div>
</div>
</div>
</section>
}
@helper Meetups() {
<section class="forum">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="text-center">Meetups</h1>
<p>
Upcoming meetups organized by the Umbraco community.
</p>
</div>
<div class="col-md-12">
<small>Upcoming meetups</small>
</div>
<div class="col-md-12 flex" id="meetups">
<h2>Loading meetups...</h2>
</div>
</div>
</div>
</section>
}
@@ -0,0 +1,20 @@
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@if (MemberData != null)
{
<script type="text/javascript">
var umb_member_name = '@MemberData.Member.Name';
var umb_member_email = '@MemberData.Email';
var umb_member_icon = '@MemberData.AvatarPath';
</script>
}
@functions
{
public class MemberJsValues
{
public string Name { get; set; }
public string Email { get; set; }
public string Icon { get; set; }
}
}
@@ -0,0 +1,37 @@
<script type="text/javascript">
function loadAllGitHubContributors() {
$('#github-contributors').addClass('all');
}
$(document).ready(function() {
try {
$("#twitter-search").load("@Url.Action("TwitterSearchResult", "TwitterSearch", new {numberOfResults = 6})");
} catch (errTwitter) {
console.log("Couldn't load Twitter feed", errTwitter.message);
}
try {
console.log("@Url.Action("GetEvents", "Meetups")");
$("#meetups").load("@Url.Action("GetEvents", "Meetups")");
console.log('yay');
}
catch (errTwitter) {
console.log("Couldn't load meetups", errTwitter.message);
}
try {
$("#forum-activity").load("@Url.Action("LatestActivity", "LatestActivity", new {numberOfTopics = 6})");
} catch (errForum) {
console.log("Couldn't load latest forum activity", errForum.message);
}
try {
$("#github-contributors").load("@Url.Action("GitHubGetContributorsResult", "GitHubContributor")");
}
catch (errForum) {
console.log("Couldn't load latest GitHub contributor activity", errForum.message);
}
});
</script>
@@ -1,6 +1,6 @@
@using OurUmbraco.Documentation
@using OurUmbraco.Documentation
@using OurUmbraco.Documentation.Busineslogic
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
string baseurl = "/";
@@ -9,7 +9,7 @@
directoryName = directoryName.Substring(1);
string[] strDirs = directoryName.Split('\\');
var linkToGithub = string.Empty;
if (absolutePath.StartsWith("/project") == false)
{
@@ -1,5 +1,5 @@
@using OurUmbraco.Documentation.Busineslogic
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
<style>
#markdown-docs .anchorjs-link {
@@ -1,6 +1,5 @@
@using OurUmbraco.Documentation.Busineslogic.GithubSourcePull
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
var zipper = new ZipDownloader();
dynamic sitemap = zipper.DocumentationSiteMap();
@@ -1,38 +1,25 @@
@inherits Umbraco.Web.Mvc.UmbracoViewPage<OurUmbraco.Forum.Models.ReadOnlyComment>
@inherits UmbracoViewPage<OurUmbraco.Forum.Models.ReadOnlyComment>
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Services
@using OurUmbraco.Powers.Library
@{
var currentMember = Members.GetCurrentMember();
var answer = (int)ViewData["answer"];
var roles = new List<string>();
var commentAuthor = Members.GetById(Model.MemberId);
// author could have been deleted (spammer) so make sure to check if they exist
if (commentAuthor != null)
{
roles = commentAuthor.GetRoles();
}
var topicService = new TopicService(ApplicationContext.DatabaseContext);
var topic = topicService.CurrentTopic(this.Context, ApplicationContext.ApplicationCache.RequestCache);
var forum = Umbraco.TypedContent(topic.ParentId);
var forumReadOnly = forum.NewTopicsAllowed() == false;
var currentMember = Model.MemberData != null && Model.MemberData.Member != null ? Model.MemberData.Member : null;
var commentAuthor = Model.TopicMembers.FirstOrDefault(x => x.Member.Id == Model.MemberId);
var forumReadOnly = Model.ForumNewTopicsAllowed == false;
}
@* If author exists and comment is either not spam or the viewer is a the author or an admin admin *@
@if (commentAuthor != null && (Model.IsSpam == false || (currentMember != null && currentMember.Id == commentAuthor.Id) || Members.IsAdmin()))
@if (commentAuthor != null && (Model.IsSpam == false || (currentMember != null && currentMember.Id == commentAuthor.Member.Id) || Model.MemberData != null && Model.MemberData.IsAdmin))
{
<li class="comment @(Model.ParentCommentId > 0 ? "level-2" : null) @(Model.Id == answer ? "solution" : null)" data-parent="@Model.ParentCommentId" id="comment-@Model.Id">
<li class="comment @(Model.ParentCommentId > 0 ? "level-2" : null) @(Model.IsAnswer ? "solution" : null)" data-parent="@Model.ParentCommentId" id="comment-@Model.Id">
<div class="meta">
<div class="profile">
<a href="/member/@commentAuthor.Id">@commentAuthor.Name</a> <span>@if (commentAuthor.ForumPosts() == 0 || commentAuthor.ForumPosts() > 1){@commentAuthor.ForumPosts() <text>posts</text>}else{@commentAuthor.ForumPosts() <text>post</text>}</span> <span>@commentAuthor.Karma() karma points</span>
<a href="/member/@commentAuthor.Member.Id">@commentAuthor.Member.Name</a> <span>@if (commentAuthor.Member.ForumPosts() == 0 || commentAuthor.Member.ForumPosts() > 1){@commentAuthor.Member.ForumPosts() <text>posts</text>}else{@commentAuthor.Member.ForumPosts() <text>post</text>}</span> <span>@commentAuthor.Member.Karma() karma points</span>
@if (roles.Any())
@if (commentAuthor.Roles.Any())
{
<span class="roles">
@foreach (var role in roles)
@foreach (var role in (commentAuthor.Roles))
{
<span class="@role">@role</span>
}
@@ -46,14 +33,14 @@
</div>
<div class="comment-inner">
<a href="/member/@commentAuthor.Id" class="photo">@Html.Raw(OurUmbraco.Our.Utils.GetMemberAvatar(commentAuthor, 75))</a>
<a href="/member/@commentAuthor.Member.Id" class="photo">@Html.Raw(OurUmbraco.Our.Utils.GetMemberAvatar(commentAuthor.Member, 75))</a>
<div class="highfive highfive-comment">
@{
var html = "High fives from:<br />";
foreach (var vote in Model.Votes)
{
if (Model.Id == answer && vote.MemberId == Model.TopicAuthorId)
if (Model.IsAnswer && vote.MemberId == Model.TopicAuthorId)
{
html = string.Format("{0}<a href=\"/member/{1}\">{2}</a> (marked as the answer)<br />", html, vote.MemberId, vote.MemberName);
}
@@ -68,7 +55,7 @@
<div class="highfive-count votes-tooltip" title="@(Model.Votes.Any() ? html : null)">
@Model.Score
</div>
@if (Members.IsLoggedIn() && !Utils.HasVoted(currentMember.Id, Model.Id, "powersComment"))
@if (Model.MemberData != null && !Utils.HasVoted(currentMember.Id, Model.Id, "powersComment"))
{
if (currentMember.Id != Model.MemberId)
{
@@ -82,7 +69,7 @@
@if (Model.IsSpam)
{
<div class="alert">
@if (Members.IsAdmin())
@if (Model.MemberData.IsAdmin)
{
<span>You can see this comment because you're a moderator of the forum.</span><br/><br/>
}
@@ -97,13 +84,13 @@
</div>
</div>
<div class="actions">
@if (Members.IsLoggedIn())
@if (Model.MemberData != null)
{
<a href="#" class="flag-comment" data-id="@Model.Id" data-member="@currentMember.Id">
<i class="icon-Flag"></i><span>Flag as spam</span>
</a>
if (answer == 0 && (Members.IsAdmin() || currentMember.Id == Model.TopicAuthorId))
if (Model.IsAnswer == false && (Model.MemberData.IsAdmin || currentMember.Id == Model.TopicAuthorId))
{
<a href="#" class="solved" data-id="@Model.Id">
<i class="icon-Check"></i><span>Mark as solution</span>
@@ -112,19 +99,19 @@
if (Model.ParentCommentId <= 0 && forumReadOnly == false)
{
<a href="#" data-author="@commentAuthor.Name" data-topic="@Model.TopicId" data-parent="@Model.Id" data-controller="comment" class="forum-reply reply">
<a href="#" data-author="@commentAuthor.Member.Name" data-topic="@Model.TopicId" data-parent="@Model.Id" data-controller="comment" class="forum-reply reply">
<i class="icon-Reply-arrow"></i><span>Reply</span>
</a>
}
if (Model.ParentCommentId > 0 && forumReadOnly == false)
{
<a href="#" data-author="@commentAuthor.Name" data-topic="@Model.TopicId" data-parent="@Model.ParentCommentId" data-controller="comment" class="forum-reply reply">
<a href="#" data-author="@commentAuthor.Member.Name" data-topic="@Model.TopicId" data-parent="@Model.ParentCommentId" data-controller="comment" class="forum-reply reply">
<i class="icon-Reply-arrow"></i><span>Reply</span>
</a>
}
if (Members.IsAdmin() || currentMember.Id == Model.MemberId)
if (Model.MemberData.IsAdmin || currentMember.Id == Model.MemberId)
{
<a href="#" class="edit-post" data-id="@Model.Id" data-topic="@Model.TopicId" data-controller="comment">
<i class="icon-Edit"></i><span>Edit</span>
@@ -134,7 +121,7 @@
<i class="icon-Delete-key"></i><span>Delete</span>
</a>
if (Members.IsAdmin())
if (Model.MemberData.IsAdmin)
{
if (Model.IsSpam)
{
@@ -1,195 +1,192 @@
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Library
@using OurUmbraco.Forum.Models
@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
const int pagesToShowLeft = 4;
int page;
if (!int.TryParse(Request["page"], out page))
{
page = 1;
}
bool unsolved;
bool.TryParse(Request["unsolved"], out unsolved);
bool noreplies;
bool.TryParse(Request["noreplies"], out noreplies);
var cat = -1;
if (CurrentPage.Level > 2)
{
cat = CurrentPage.Id;
}
var topicService = new TopicService(ApplicationContext.DatabaseContext);
IEnumerable<ReadOnlyTopic> topics;
var cache = ApplicationContext.Current.ApplicationCache.RuntimeCache;
// only cache the first page of each category
var pageSize = 50;
if (page > 1)
{
topics = topicService.GetLatestTopicsFiltered(pageSize, page, true, cat, unsolved, noreplies);
}
else
{
var key = "OurForumForum[" + cat + unsolved + noreplies + "]";
topics = (IEnumerable<ReadOnlyTopic>)cache.GetCacheItem(key,
() => topicService.GetLatestTopicsFiltered(pageSize, page, true, cat, unsolved, noreplies).ToArray(),
TimeSpan.FromSeconds(4));
}
var totalCountKey = "OurForumForumThreadCount[" + cat + "]";
var totalTopics = (int)cache.GetCacheItem(totalCountKey,
() => topicService.GetAllTopicsCount(cat),
TimeSpan.FromMinutes(1));
var pages = (totalTopics / pageSize) + 1;
var categories = Model.Content.AncestorOrSelf(2);
}
@if (Model.Content.NewTopicsAllowed() == false || Model.Content.AncestorOrSelfIsArchived())
{
var notification = Model.Content.GetPropertyValue<string>("mainNotification");
if (string.IsNullOrWhiteSpace(notification))
{
notification = "This forum is in read only mode, you can no longer create new topics";
}
<div class="alertbar__yellow">
@Html.Raw(notification)
</div>
}
<!-- FORUM HEADER START -->
<div class="utilities">
@Umbraco.RenderMacro("Breadcrumb", new { linktocurrent = "1" })
@Umbraco.RenderMacro("ForumForumActions")
</div>
<div class="forum-settings">
<div class="search-big">
<input type="search" class="forum-search-input" required placeholder="Search for threads">
<label for="search">Search for threads</label>
</div>
<div class="or">or</div>
<div class="sorting">
<select id="selectCategory" data-placeholder="Choose&hellip;">
<option class="category" selected disabled>Filter by category</option>
@if (categories.ContentType.Alias == "Projects")
{
foreach (var tag in CurrentPage.Parent.Children)
{
<option class="@tag.Name.ToLower().Replace(" ", "")" value="@tag.Id" @(CurrentPage.Id == tag.Id ? "selected" : null)>@tag.Name</option>
}
}
else
{
<option class="all" value="@categories.Id">All categories</option>
foreach (var tag in categories.Children)
{
if (tag.ContentType.Alias == "Forum" && tag.IsArchived() == false)
{
<option class="@tag.Name.ToLower().Replace(" ", "")" value="@tag.Id" @(CurrentPage.Id == tag.Id ? "selected" : null)>@tag.Name</option>
}
}
}
</select>
</div>
<div id="search-options" class="search-options">
<label>Filter by</label>
<div class="options">
<label class="checkbox">
<input type="checkbox" name="unsolved" />
<span></span>
<small>show only unsolved topics</small>
</label>
<label class="checkbox">
<input type="checkbox" name="noreplies" />
<span></span>
<small>show only topics with no replies</small>
</label>
</div>
</div>
</div>
<!-- FORUM HEADER END -->
<!-- FORUM TOPICS -->
<div id="overlay" class="overlay"></div>
<!-- FORUM LIST START -->
<section class="forum">
<!-- FORUM LIST HEADER START -->
<div class="forum-head">
<div class="topic">Topic</div>
<div class="category">Category</div>
<div class="posts">Replies</div>
</div>
<!-- FORUM LIST HEADER END -->
<!-- FORUM LIST OF THREADS START -->
<div class="forum-content">
<!-- FORUM THREAD START -->
@foreach (var topic in topics)
{
var forum = Umbraco.TypedContent(topic.ParentId);
if (forum != null)
{
<div class="topic-row @Umbraco.If(topic.Answer > 0, " solved")">
<div class="topic">
<a href="@topic.GetUrl()">
<h3>@topic.Title</h3>
@if (topic.Replies != 0 && !string.IsNullOrEmpty(topic.LastReplyAuthorName))
{
<span title="@string.Format("{0:ddd, dd MMM yyyy} {0:HH:mm:ss} UTC+{1}", topic.Updated, TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now))">last edited by <strong>@topic.LastReplyAuthorName</strong> @topic.Updated.ConvertToRelativeTime()</span>
}
else
{
<span title="@string.Format("{0:ddd, dd MMM yyyy} {0:HH:mm:ss} UTC+{1}", topic.Updated, TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now))">topic created by <strong>@topic.AuthorName</strong> @topic.Updated.ConvertToRelativeTime()</span>
}
</a>
</div>
<div class="category frontend">
<a href="@forum.Url">@(Utils.GetForumName(forum))</a>
</div>
<div class="posts"><small>@topic.Replies</small> <span>replies</span></div>
</div>
}
}
<nav class="pagination" role="navigation">
@if (page > 1)
{
<a class="prev" href="?page=@(page - 1)">Prev</a>
<span>&hellip;</span>
}
@for (var i = (page - 1 > 0 ? page - 1 : 1); i < (page + (pagesToShowLeft - (page - 1 > 0 ? 1 : 0))) && i <= pages; i++)
{
<a class="@Umbraco.If(i == page, "active")" href="?page=@i">@i</a>
}
@if (page < (pages - 3))
{
<span>&hellip;</span>
<a class="next" href="?page=@(page + 1)">Next</a>
}
</nav>
</div>
<div class="forum-conten"></div>
<!-- FORUM LIST OF THREADS START -->
</section>
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Library
@using OurUmbraco.Forum.Models
@using OurUmbraco.Forum.Services
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
const int pagesToShowLeft = 4;
int page;
if (!int.TryParse(Request["page"], out page))
{
page = 1;
}
bool unsolved;
bool.TryParse(Request["unsolved"], out unsolved);
bool noreplies;
bool.TryParse(Request["noreplies"], out noreplies);
var cat = -1;
if (CurrentPage.Level > 2)
{
cat = CurrentPage.Id;
}
var topicService = new TopicService(ApplicationContext.DatabaseContext);
IEnumerable<ReadOnlyTopic> topics;
var cache = ApplicationContext.Current.ApplicationCache.RuntimeCache;
// only cache the first page of each category
var pageSize = 50;
if (page > 1)
{
topics = topicService.GetLatestTopicsFiltered(pageSize, page, true, cat, unsolved, noreplies);
}
else
{
var key = "OurForumForum[" + cat + unsolved + noreplies + "]";
topics = (IEnumerable<ReadOnlyTopic>)cache.GetCacheItem(key,
() => topicService.GetLatestTopicsFiltered(pageSize, page, true, cat, unsolved, noreplies).ToArray(),
TimeSpan.FromSeconds(4));
}
var totalCountKey = "OurForumForumThreadCount[" + cat + "]";
var totalTopics = (int)cache.GetCacheItem(totalCountKey,
() => topicService.GetAllTopicsCount(cat),
TimeSpan.FromMinutes(1));
var pages = (totalTopics / pageSize) + 1;
var categories = Model.Content.AncestorOrSelf(2);
}
@if (Model.Content.NewTopicsAllowed() == false || Model.Content.AncestorOrSelfIsArchived())
{
var notification = Model.Content.GetPropertyValue<string>("mainNotification");
if (string.IsNullOrWhiteSpace(notification))
{
notification = "This forum is in read only mode, you can no longer create new topics";
}
<div class="alertbar__yellow">
@Html.Raw(notification)
</div>
}
<!-- FORUM HEADER START -->
<div class="utilities">
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@Html.Partial("~/Views/Partials/Forum/ForumActions.cshtml")
</div>
<div class="forum-settings">
<div class="search-big">
<input type="search" class="forum-search-input" required placeholder="Search for threads">
<label for="search">Search for threads</label>
</div>
<div class="or">or</div>
<div class="sorting">
<select id="selectCategory" data-placeholder="Choose&hellip;">
<option class="category" selected disabled>Filter by category</option>
@if (categories.ContentType.Alias == "Projects")
{
foreach (var tag in CurrentPage.Parent.Children)
{
<option class="@tag.Name.ToLower().Replace(" ", "")" value="@tag.Id" @(CurrentPage.Id == tag.Id ? "selected" : null)>@tag.Name</option>
}
}
else
{
<option class="all" value="@categories.Id">All categories</option>
foreach (var tag in categories.Children)
{
if (tag.ContentType.Alias == "Forum" && tag.IsArchived() == false)
{
<option class="@tag.Name.ToLower().Replace(" ", "")" value="@tag.Id" @(CurrentPage.Id == tag.Id ? "selected" : null)>@tag.Name</option>
}
}
}
</select>
</div>
<div id="search-options" class="search-options">
<label>Filter by</label>
<div class="options">
<label class="checkbox">
<input type="checkbox" name="unsolved" />
<span></span>
<small>show only unsolved topics</small>
</label>
<label class="checkbox">
<input type="checkbox" name="noreplies" />
<span></span>
<small>show only topics with no replies</small>
</label>
</div>
</div>
</div>
<!-- FORUM HEADER END -->
<!-- FORUM TOPICS -->
<div id="overlay" class="overlay"></div>
<!-- FORUM LIST START -->
<section class="forum">
<!-- FORUM LIST HEADER START -->
<div class="forum-head">
<div class="topic">Topic</div>
<div class="category">Category</div>
<div class="posts">Replies</div>
</div>
<!-- FORUM LIST HEADER END -->
<!-- FORUM LIST OF THREADS START -->
<div class="forum-content">
<!-- FORUM THREAD START -->
@foreach (var topic in topics)
{
var forum = Umbraco.TypedContent(topic.ParentId);
if (forum != null)
{
<div class="topic-row @Umbraco.If(topic.Answer > 0, " solved")">
<div class="topic">
<a href="@topic.GetUrl()">
<h3>@topic.Title</h3>
@if (topic.Replies != 0 && !string.IsNullOrEmpty(topic.LastReplyAuthorName))
{
<span title="@string.Format("{0:ddd, dd MMM yyyy} {0:HH:mm:ss} UTC+{1}", topic.Updated, TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now))">last edited by <strong>@topic.LastReplyAuthorName</strong> @topic.Updated.ConvertToRelativeTime()</span>
}
else
{
<span title="@string.Format("{0:ddd, dd MMM yyyy} {0:HH:mm:ss} UTC+{1}", topic.Updated, TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now))">topic created by <strong>@topic.AuthorName</strong> @topic.Updated.ConvertToRelativeTime()</span>
}
</a>
</div>
<div class="category frontend">
<a href="@forum.Url">@(Utils.GetForumName(forum))</a>
</div>
<div class="posts"><small>@topic.Replies</small> <span>replies</span></div>
</div>
}
}
<nav class="pagination" role="navigation">
@if (page > 1)
{
<a class="prev" href="?page=@(page - 1)">Prev</a>
<span>&hellip;</span>
}
@for (var i = (page - 1 > 0 ? page - 1 : 1); i < (page + (pagesToShowLeft - (page - 1 > 0 ? 1 : 0))) && i <= pages; i++)
{
<a class="@Umbraco.If(i == page, "active")" href="?page=@i">@i</a>
}
@if (page < (pages - 3))
{
<span>&hellip;</span>
<a class="next" href="?page=@(page + 1)">Next</a>
}
</nav>
</div>
<div class="forum-conten"></div>
<!-- FORUM LIST OF THREADS START -->
</section>
@@ -1,9 +1,9 @@
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.NotificationsWeb.Library
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
<div class="utility-actions">
@if (Members.IsLoggedIn())
@if (MemberData != null)
{
if (Model.Content.AncestorOrSelfIsArchived() == false && Model.Content.NewTopicsAllowed())
{
@@ -12,13 +12,7 @@
</a>
}
var mem = Members.GetCurrentMember();
var subscribed = false;
if (mem != null)
{
subscribed = Utils.IsSubscribedToForum(CurrentPage.Id, mem.Id);
}
var subscribed = Utils.IsSubscribedToForum(CurrentPage.Id, MemberData.Member.Id);
if (subscribed)
{
<a href="#" class="follow button following" data-id="@CurrentPage.Id" data-controller="">
@@ -1,9 +1,8 @@
@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
var topicService = new TopicService(ApplicationContext.DatabaseContext);
var topicService = new TopicService(ApplicationContext.Current.DatabaseContext);
var topics = topicService.GetLatestTopics();
}
@@ -1,28 +1,24 @@
@inherits Umbraco.Web.Mvc.UmbracoViewPage<OurUmbraco.Forum.Models.Topic>
@inherits UmbracoViewPage<OurUmbraco.Forum.Models.Topic>
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Powers.Library
@{
var currentMember = Members.GetCurrentMember();
var topicAuthor = Members.GetById(Model.MemberId);
var currentMember = Model.MemberData != null && Model.MemberData.Member != null ? Model.MemberData.Member : null;
var topicAuthor = Model.TopicMembers.FirstOrDefault(x => x.Member.Id == Model.MemberId);
@* If author exists and question is either not spam or the viewer is a the author or an admin admin *@
if (topicAuthor != null && (Model.IsSpam == false || (currentMember != null && currentMember.Id == topicAuthor.Id) || Members.IsAdmin()))
if (topicAuthor != null && (Model.IsSpam == false || (currentMember != null && currentMember.Id == topicAuthor.Member.Id) || Model.MemberData != null && Model.MemberData.IsAdmin))
{
var forum = Umbraco.TypedContent(Model.ParentId);
var roles = topicAuthor.GetRoles();
<li class="comment question" id="comment-@Model.Id" data-deeplink="@Model.Title" data-version="@Model.Version" data-cat="@Model.ParentId">
<!-- Start of question -->
<div class="meta">
<div class="profile">
<a href="/member/@topicAuthor.Id">@topicAuthor.Name</a> <span>@if (topicAuthor.ForumPosts() == 0 || topicAuthor.ForumPosts() > 1){@topicAuthor.ForumPosts() <text>posts</text>}else{@topicAuthor.ForumPosts() <text>post</text>}</span> <span>@topicAuthor.Karma() karma points</span>
<a href="/member/@topicAuthor.Member.Id">@topicAuthor.Member.Name</a> <span>@if (topicAuthor.Member.ForumPosts() == 0 || topicAuthor.Member.ForumPosts() > 1){@topicAuthor.Member.ForumPosts() <text>posts</text>}else{@topicAuthor.Member.ForumPosts() <text>post</text>}</span> <span>@topicAuthor.Member.Karma() karma points</span>
@if (roles.Any())
@if (topicAuthor.Roles.Any())
{
<span class="roles">
@foreach (var role in roles)
@foreach (var role in topicAuthor.Roles)
{
<span class="@role">@role</span>
}
@@ -37,7 +33,7 @@
</div>
<div class="comment-inner">
<a href="/member/@topicAuthor.Id" class="photo">@Html.Raw(OurUmbraco.Our.Utils.GetMemberAvatar(topicAuthor, 75))</a>
<a href="/member/@topicAuthor.Member.Id" class="photo">@Html.Raw(OurUmbraco.Our.Utils.GetMemberAvatar(topicAuthor.Member, 75))</a>
<div class="highfive highfive-question">
@{
var html = "High fives from:<br />";
@@ -50,7 +46,7 @@
<div class="highfive-count votes-tooltip" title="@(Model.Votes.Any() ? html : null)">
@Model.Score
</div>
@if (Members.IsLoggedIn() && !Utils.HasVoted(currentMember.Id, Model.Id, "powersTopic"))
@if (Model.MemberData != null && !Utils.HasVoted(currentMember.Id, Model.Id, "powersTopic"))
{
if (currentMember.Id != Model.MemberId)
{
@@ -65,7 +61,7 @@
</div>
<div class="categories">
<div class="category core">
<a href="@forum.Url">@forum.Name</a>
<a href="@Model.ForumUrl">@Model.ForumName</a>
</div>
@if (Model.Version > 0)
@@ -82,7 +78,7 @@
@if (Model.IsSpam)
{
<div class="alert">
@if (Members.IsAdmin())
@if (Model.MemberData != null && Model.MemberData.IsAdmin)
{
<span>You can see this topic because you're a moderator of the forum.</span><br/><br/>
}
@@ -98,20 +94,20 @@
</div>
<div class="actions">
@if (Members.IsLoggedIn())
@if (Model.MemberData != null)
{
<a href="#" class="flag-thread" data-id="@Model.Id" data-member="@currentMember.Id">
<i class="icon-Flag"></i><span>Flag as spam</span>
</a>
if (forum.NewTopicsAllowed())
if (Model.ForumNewTopicsAllowed)
{
<a href="#" data-author="@topicAuthor.Name" data-topic="@Model.Id" data-controller="comment" class="reply forum-reply">
<a href="#" data-author="@topicAuthor.Member.Name" data-topic="@Model.Id" data-controller="comment" class="reply forum-reply">
<i class="icon-Reply-arrow"></i><span>Reply</span>
</a>
}
if (Members.IsAdmin() || Members.GetCurrentMember().Id == topicAuthor.Id)
if (Model.MemberData.IsAdmin || Model.MemberData.Member.Id == topicAuthor.Member.Id)
{
<a href="#" class="edit-post" data-id="@Model.Id" data-controller="topic">
<i class="icon-Edit"></i><span>Edit</span>
@@ -122,7 +118,7 @@
</a>
}
if (Members.IsAdmin())
if (Model.MemberData.IsAdmin)
{
if (Model.IsSpam)
{
@@ -0,0 +1,117 @@
@model ReadOnlyTopic
@using System.Web.Mvc.Html
@using OurUmbraco.Forum.Models
@using Umbraco.Core.Logging
<!-- COPY LINK -->
<div id="overlay" class="overlay"></div>
<div id="copy-link-wrapper" class="copy-link-wrapper">
<i class="icon-Link"></i>
<textarea class="getLink" readonly type="text"></textarea>
<p>Press Ctrl / CMD + C to copy this to your clipboard.</p>
</div>
<div id="thankyou">
Copied to clipboard
</div>
<!-- COPY LINK END -->
<!-- DELETE THREAD/COMMENT START -->
@if (Model.MemberData != null)
{
<div id="confirm-wrapper" class="confirm-wrapper">
<h4>Are you sure?</h4>
<p>This <span class="type-of"></span> will be gone forever and ever</p>
<br />
<button type="button" class="button green tiny">Yes</button>
<button type="button" class="button red tiny">No</button>
</div>
}
<!-- DELETE THREAD END -->
<!-- FLAG SPAM START -->
<div id="confirm-wrapper-flag" class="confirm-wrapper-flag">
<h4>Flag this post as spam?</h4>
<p>This post will be reported to the moderators as potential spam to be looked at</p>
<br />
<button type="button" class="button green tiny">Yes</button>
<button type="button" class="button red tiny">No</button>
</div>
<!-- FLAG SPAM END -->
@if (Model.ForumNewTopicsAllowed == false)
{
<div class="alertbar__yellow" style="margin-bottom: 10px;">
@Html.Raw(Model.MainNotification)
</div>
}
<ul class="comments">
@{
try
{
@Html.Partial("forum/question", Model)
}
catch (Exception ex)
{
LogHelper.Error<string>(string.Format("~/Views/MacroPartials/Forum/Thread.cshtml - error rendering topic with id {0}", Model.Id), ex);
}
}
@foreach (var comment in Model.Comments.Where(x => x.ParentCommentId == 0))
{
Html.RenderPartial("forum/comment", comment);
if (comment.HasChildren)
{
foreach (var child in Model.Comments.Where(c => c.ParentCommentId == comment.Id))
{
Html.RenderPartial("forum/comment", child);
}
}
}
</ul>
@if (Model.MemberData != null)
{
if (Model.ForumNewTopicsAllowed)
{
<div class="replybutton">
<a href="#" class="button green large reply forum-reply" data-author="@Model.AuthorName" data-topic="@Model.Id" data-controller="comment"><i class="icon-Reply-arrow"></i>&nbsp;Reply to topic</a>
</div>
<div class="utilities">
<div class="utility-actions thread-bottom">
@if (Model.MemberData.IsAdmin)
{
<a href="#" class="delete-thread button" data-id="@Model.Id">
<i class="icon-Delete-key"></i><span>Delete thread</span>
</a>
}
<a href="#" class="follow button @(Model.Subscribed ? "following" : "transparent")" data-id="@Model.Id" data-controller="topic">
<i class="icon-Bookmark"></i><span>@(Model.Subscribed ? "Following" : "Follow")</span>
</a>
@if (Model.Answer > 0)
{
<a href="#comment-@Model.Answer.ToString()" class="go-to-solution button transparent">
<i class="icon-Check"></i><span>Go to solution</span>
</a>
}
</div>
</div>
}
else
{
<div class="alertbar__yellow">
@Html.Raw(Model.MainNotification)
</div>
}
}
else
{
<div class="replybutton notloggedin">
Please <a href="/member/login?redirectUrl=@(Server.UrlEncode(Request.Url.AbsoluteUri))">Sign in</a> or <a href="/member/signup">register</a> to post replies
</div>
}
@@ -0,0 +1,25 @@
@using OurUmbraco.Forum.Models
@model ReadOnlyTopic
<div class="utility-actions">
@if (Model.MemberData != null)
{
if (Model.MemberData.IsAdmin)
{
<a href="#" class="delete-thread button" data-id="@Model.Id">
<i class="icon-Delete-key"></i><span>Delete thread</span>
</a>
}
<a href="#" class="follow button @(Model.Subscribed ? "following" : "transparent")" data-id="@Model.Id" data-controller="topic">
<i class="icon-Bookmark"></i><span>@(Model.Subscribed ? "Following" : "Follow")</span>
</a>
}
@if (Model.Answer > 0)
{
<a href="#comment-@Model.Answer.ToString()" class="go-to-solution button transparent">
<i class="icon-Check"></i><span>Go to solution</span>
</a>
}
</div>
@@ -1,5 +1,5 @@
@using OurUmbraco.Forum.Extensions
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
<div class="markdown-spacer"></div>
<div id="markdown-editor" class="markdown-editor">
@@ -101,11 +101,9 @@
</div>
<!-- Mustache template-->
<script id="comment-template" type="x-tmpl-mustache">
<li class="comment {{cssClass}}" data-parent="{{id}}" id="comment-{{id}}">
<li class="comment {{cssClass}}" data-parent="{{id}}" id="comment-{{id}}">
<div class="meta">
<div class="profile">
<a href="/member/{{authorId}}">{{authorName}}</a> has in total {{authorKarma}} karma points
@@ -123,14 +121,11 @@
</div>
<div class="comment-inner">
<a href="/member/{{authorId}}" class="photo">
{{{avatar}}}
</a>
<div class="highfive">
<div class="highfive-count">
0
</div>
@@ -146,7 +141,6 @@
</div>
{{/isSpam}}
{{{body}}}
</div>
</div>
@@ -1,28 +1,21 @@
@using System.Drawing
@using OurUmbraco.Our
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
var home = Umbraco.TypedContentAtRoot().First();
var notificationText = home.GetPropertyValue<string>("mainNotification");
var showNotification = string.IsNullOrWhiteSpace(notificationText) == false;
Image avatarImage = null;
if (Members.IsLoggedIn())
{
avatarImage = Utils.GetMemberAvatarImage(Members.GetCurrentMember());
}
}
@Html.Action("RenderTerms", "TermsAndConditions")
@Html.Action("RenderTerms", "TermsAndConditions", new { showBanner = MemberData != null && MemberData.NewTosAccepted == false })
@* We'll show it differently on the homepage *@
@* We'll show it differently on the homepage *@
@if (showNotification && Model.Content.Id != home.Id)
{
<div class="alertbar__yellow">
@Html.Raw(notificationText)
</div>
}
@if (Request.Cookies["dismissAvatar"] == null && CurrentPage.Id != home.Id && avatarImage != null && (avatarImage.Width < 400 || avatarImage.Height < 400))
@if (Request.Cookies["dismissAvatar"] == null && Model.Content.Id != home.Id && MemberData != null && MemberData.AvatarImageTooSmall)
{
<div class="notification__blue avatarTooSmall">
<div class="message text-center">
@@ -0,0 +1,10 @@
@model List<IPublishedContent>
<ul id="breadcrumb">
<li>
<a href="/">Our</a>
</li>
@foreach (var page in Model)
{
<li><a href="@page.Url">@page.Name</a></li>
}
</ul>
@@ -0,0 +1,35 @@
@model OurUmbraco.Community.Models.GitHubContributorsModel
@if (Model.Contributors.Any())
{
foreach (var contributor in Model.Contributors)
{
var author = contributor.Author;
if (author != null)
{
<a href="@author.HtmlUrl" class="contributor" target="_blank" title="@author.Login">
<div class="avatar">
<img alt="@author.Login" src="@author.AvatarUrl&s=112" />
<span class="contrib-count" title="@(contributor.TotalCommits + " " + (contributor.TotalCommits == 1 ? "contribution" : "contributions"))">
@contributor.TotalCommits
</span>
<div class="counts">
Additions<br />
<strong>@contributor.TotalAdditions</strong><br />
<br />
Deletions<br />
<strong>@contributor.TotalDeletions</strong>
</div>
</div>
</a>
}
}
<div class="loadmore">
<a class="button transparent" href="#" onclick="loadAllGitHubContributors(); return false;">Load more</a>
</div>
}
else
{
<h2>Could not load recent GitHub contributors.</h2>
}
@@ -0,0 +1,71 @@
@using OurUmbraco.Community.Models
@using Skybrud.Essentials.Locations
@using Skybrud.Essentials.Locations.Extensions
@using Skybrud.Essentials.Security
@inherits UmbracoViewPage<MeetupEventsModel>
@{
// Get a reference to the current member
IPublishedContent member = Members.GetCurrentMember();
// Get the location of the current member (if logged in and a location is present)
EssentialsLocation memberLocation = null;
if (member != null && member.HasValue("latitude") && member.HasValue("longitude")) {
memberLocation = new EssentialsLocation(
member.GetPropertyValue<double>("latitude"),
member.GetPropertyValue<double>("longitude")
);
}
}
@foreach (MeetupItem item in Model.Items) {
double distance = -1;
if (memberLocation != null) {
if (item.Event.HasVenue) {
distance = memberLocation.GetDistance(item.Event.Venue);
} else {
distance = memberLocation.GetDistance(item.Group);
}
}
<a href="@item.Event.Link" class="forum-thread">
@if (item.Group.GroupPhoto != null)
{
<div class="avatar">
<img src="@item.Group.GroupPhoto.ThumbLink" alt="" />
</div>
}
else
{
string fakeHash = SecurityUtils.GetMd5Hash(item.Group.Id + "");
<div class="avatar">
<img src="https://www.gravatar.com/avatar/@fakeHash?s=100&d=mm&r=g&d=retro" alt="" />
</div>
}
<div class="meta">
<div class="forum-thread-text">
@if (distance >= 0 && distance <= 50000) {
//<span style="float: right; color: red;">@String.Format("~{0:N0}", distance / 1000) km</span>
<span style="float: right; color: red; font-weight: bold;" title="Distance: @String.Format("~{0:N0}", distance / 1000) km">NEAR YOU</span>
}
<h3>@item.Event.Name</h3>
<p>@item.Event.Time.DateTime.ToString("MMM d, yyyy") by @item.Group.Name</p>
</div>
</div>
</a>
}
@if (Model.Items.Length % 2 == 1) {
// If there is an odd amount of events, we add a invisible div so the last event doesn't take up the full width
<div class="forum-thread" style="visibility: hidden;"></div>
}
@if (Model.Items.Any() == false) {
<h2>Could not load upcoming meetups.</h2>
}
@@ -1,25 +1,49 @@
@using OurUmbraco.Forum.Extensions
@using Tweetinvi.Models
@model ITweet[]
@model OurUmbraco.Community.Models.TweetsModel
@foreach (var tweet in Model)
@if (Model.ShowAdminOverView == false)
{
<a href="@tweet.Url" class="forum-thread">
foreach (var tweet in Model.Tweets)
{
<a href="@tweet.Url" class="forum-thread">
<div class="avatar">
<img src="@tweet.CreatedBy.ProfileImageUrl400x400.Replace("http://", "https://")" />
</div>
<div class="meta">
<div class="forum-thread-text">
<h3>@tweet.Text</h3>
<p>@tweet.CreatedAt.ConvertToRelativeTime() by @@@tweet.CreatedBy.UserIdentifier.ScreenName (@tweet.CreatedBy.Name)</p>
<div class="avatar">
<img src="@tweet.CreatedBy.ProfileImageUrl400x400.Replace("http://", "https://")" />
</div>
</div>
</a>
<div class="meta">
<div class="forum-thread-text">
<h3>@tweet.Text</h3>
<p>@tweet.CreatedAt.ConvertToRelativeTime() by @@@tweet.CreatedBy.UserIdentifier.ScreenName (@tweet.CreatedBy.Name)</p>
</div>
</div>
</a>
}
}
else
{
foreach (var tweet in Model.Tweets)
{
var twitterHandle = tweet.CreatedBy.UserIdentifier.ScreenName;
<img src="@tweet.CreatedBy.ProfileImageUrl400x400.Replace("http://", "https://")" /><br />
<h3>@tweet.Text</h3>
<p>@tweet.CreatedAt.ConvertToRelativeTime() by <a href="https://twitter.com/@twitterHandle/with_replies" target="_blank">@@@twitterHandle (@tweet.CreatedBy.Name)</a></p><br />
<a href="@tweet.Url" target="_blank">@tweet.Url</a><br />
using (Html.BeginForm("MarkAsSpam", "TwitterSearch"))
{
@Html.AntiForgeryToken()
<input type="hidden" name="TwitterHandle" value="@twitterHandle" />
<input type="submit" value="Mark as spam" />
}
<hr />
}
}
@if (Model.Any() == false)
@if (Model.Tweets.Any() == false)
{
<h2>Could not load recent tweets.</h2>
}
}
@@ -1,4 +1,4 @@
@using OurUmbraco.Our.Controllers
@using OurUmbraco.Our.Controllers
@using reCAPTCHA.MVC
@inherits UmbracoViewPage<Umbraco.Web.Models.LoginModel>
@{
@@ -37,14 +37,14 @@
<input class="button green" type="submit" value="Log in">
}
</div>
</div>
<style type="text/css">
.field-validation-error, .validation-summary-errors {
color: red;
}
<style type="text/css">
.field-validation-error, .validation-summary-errors {
color: red;
}
.input-validation-error {
border-color: red !important;
}
</style>
.input-validation-error {
border-color: red !important;
}
</style>
@@ -1,6 +1,6 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
var source = Umbraco.TypedContent(Model.MacroParameters["source"]);
var source = Umbraco.TypedContent(1057);
}
<nav>
@@ -1,4 +1,4 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@using System.Configuration
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Services
@@ -17,7 +17,7 @@
}
else
{
var ts = new TopicService(UmbracoContext.Application.DatabaseContext);
var ts = new TopicService(ApplicationContext.DatabaseContext);
var topics = ts.GetLatestTopicsForMember(member.Id);
@@ -30,14 +30,13 @@
{
projects = content.Descendants().Where(c => c.DocumentTypeAlias == "Project").Where(m => m.GetPropertyValue<int>("owner") == member.Id).Where(p => p.GetPropertyValue<bool>("projectLive"));
const string sql = @"SELECT * FROM projectContributors WHERE memberId=@memberId";
var contribPackageIds = UmbracoContext.Application.DatabaseContext.Database.Fetch<int>(sql, new { memberId });
var contribPackageIds = ApplicationContext.DatabaseContext.Database.Fetch<int>(sql, new { memberId });
foreach (var contribPackageId in contribPackageIds)
{
contribProjects.Add(Umbraco.TypedContent(contribPackageId));
}
}
var currentMember = Members.GetCurrentMember();
var reputationCurrent = member.GetPropertyValue<int>("reputationCurrent");
var nodeListingProvider = new NodeListingProvider();
@@ -90,7 +89,7 @@
@if (member.HasValue("company"))
{
<span> works at <span>@member.GetPropertyValue("company")</span></span>
}
}
and has <em class="posts">@member.GetPropertyValue("forumPosts")</em> @if (member.ForumPosts() == 0 || member.ForumPosts() > 1){<text>posts</text>}else{<text>post</text>} and <em class="karma-points">@member.GetPropertyValue("reputationCurrent")</em> <span></span> karma points
</small>
</div>
@@ -239,7 +238,7 @@
</div>
</div>
<!-- .public-member -->
if (currentMember.IsAdmin())
if (MemberData != null && MemberData.IsAdmin)
{
var allTopics = ts.GetLatestTopicsForMember(member.Id, false, 1000);
@@ -270,7 +269,8 @@
</div>
}
<br /><br />
if (currentMember.IsHq())
var currentMember = MemberData != null ? MemberData.Member : null;
if (currentMember != null && currentMember.IsHq())
{
<div style="border: 1px solid red; padding: 4px;">
<p>HQ Tools (also known as "with great power comes great responsibility"):</p><br />
@@ -1,29 +1,13 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using System.Drawing
@inherits OurUmbracoTemplatePage
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Services
@using OurUmbraco.Our
@{
var topicService = new TopicService(ApplicationContext.DatabaseContext);
Image avatarImage = null;
if (Members.IsLoggedIn())
{
avatarImage = Utils.GetMemberAvatarImage(Members.GetCurrentMember());
}
}
@using OurUmbraco.Our.Models
@{ var profile = MemberData; }
<div class="quick-menu">
<div class="container">
<div class="row">
<div class="col-md-12">
@if (Members.IsLoggedIn() && Members.GetCurrentMember() != null)
@if (profile != null)
{
var member = Members.GetCurrentMember();
var roles = member.GetRoles();
var latestTopics = topicService.GetLatestTopicsForMember(member.Id, maxCount: 100);
<div class="close">
<i class="icon-Delete"></i>Close
</div>
@@ -31,49 +15,47 @@
<a href="/member/profile"><i class="icon-Settings"></i>Edit profile</a>
</div>
<div class="user-image">
@Html.Raw(Utils.GetMemberAvatar(member, 100))
@Html.Raw(profile.AvatarHtml)
</div>
<div class="user-profile">
<h2>@member.Name</h2>
<div class="posts">
@member.ForumPosts()
@if (member.ForumPosts() == 0 || member.ForumPosts() > 1)
<div class="user-profile">
<h2>@profile.Member.Name</h2>
<div class="posts">
@profile.NumberOfForumPosts
@if (profile.NumberOfForumPosts == 0 || profile.NumberOfForumPosts > 1)
{
<text>Posts</text>
}
else
{
<text>Post</text>
}
<text>Post</text>
}
</div>
<div class="karma">
@member.Karma()
@profile.Karma
</div>
@if (member.HasValue("twitter"))
@if (string.IsNullOrWhiteSpace(profile.TwitterHandle) == false)
{
var twitterHandle = member.GetPropertyValue<string>("twitter").Replace("@", string.Empty);
<div class="user-twitter">
<a href="https://twitter.com/@twitterHandle">&commat;<span>@twitterHandle</span></a>
<a href="https://twitter.com/@profile.TwitterHandle">&commat;<span>@profile.TwitterHandle</span></a>
</div>
}
@if (roles.Any())
@if (profile.Roles.Any())
{
<span class="roles">
@foreach (var role in roles)
@foreach (var role in profile.Roles)
{
<span class="@role">@role</span>
}
</span>
}
<div class="public-profile">
<a href="/member/@member.Id">View my public profile</a>
<a href="/member/@profile.Member.Id">View my public profile</a>
</div>
@if (member.IsAdmin())
@if (profile.IsAdmin)
{
<div class="public-profile">
<a href="/antispam">Check the spam queue</a>
@@ -84,14 +66,12 @@
</div>
</div>
if (avatarImage != null && (avatarImage.Width < 400 || avatarImage.Height < 400))
if (profile.AvatarImageTooSmall)
{
<div class="user-notifications">
<small>
Your Notifications
</small>
<a href="/member/profile" class="user-notification__green">
<div class="user-notification-text">
<p>Your profile picture is a little on the small side, It would look <strong>much nicer</strong> if you could update it to be larger image.</p>
@@ -101,12 +81,10 @@
}
<div class="user-latest-posts">
<small>
Activity in threads you participated in
</small>
@foreach (var topic in latestTopics)
@foreach (var topic in profile.LatestTopics)
{
var forum = Umbraco.TypedContent(topic.ParentId);
// if forum == null then it's been hidden/unpublished (example: v5 forum)
@@ -128,20 +106,16 @@
@topic.Updated.ConvertToRelativeTime()
</p>
</div>
<div class="category frontend"><span class="cat">@forum.Name</span></div>
</a>
}
}
</div>
}
else
{
<a href="/member/login">Sign in</a> <a href="/member/Signup">Register</a>
}
</div>
</div>
</div>
@@ -0,0 +1,26 @@
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
<ul>
@foreach (var page in Model.Content.AncestorOrSelf(1).Children.Where("Visible"))
{
<li class="@(page.IsAncestorOrSelf(Model.Content) ? "current" : null)">
<a href="@page.Url">@page.Name</a>
</li>
}
<li>
@if (MemberData != null)
{
<div class="user">
@Html.Raw(MemberData.AvatarHtml)
@if (MemberData.AvatarImageTooSmall)
{
<span class="notificationCount">1</span>
}
</div>
}
else
{
<a href="/member/login?redirectUrl=@(Server.UrlEncode(Request.Url.AbsolutePath))">Sign in</a><strong> / </strong><a href="/member/Signup">Register</a>
}
</li>
</ul>
@@ -109,6 +109,12 @@
@Html.ValidationMessageFor(m => m.SourceCodeUrl)
<small>url to where the source code is stored, (ie: codeplex.com, github.com etc)</small>
</p>
<p>
@Html.LabelFor(m => m.NuGetPackageUrl)
@Html.TextBoxFor(m => m.NuGetPackageUrl)
@Html.ValidationMessageFor(m => m.NuGetPackageUrl)
<small>url to the NuGet package if any available</small>
</p>
<p>
@Html.LabelFor(m => m.BugTrackingUrl)
@Html.TextBoxFor(m => m.BugTrackingUrl)
@@ -0,0 +1,14 @@
@using Umbraco.Web
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
<ul class="level-2">
@foreach (var childPage in Model.Content.Children().Where(
x => x.DocumentTypeAlias == "ProjectGroup"
&& x.GetPropertyValue<bool>("umbracoNaviHide") == false))
{
<li>
<h4><a href="?category=@childPage.Name">@childPage.Name</a></h4>
</li>
}
<li><h4><a href="?category=uaas">Umbraco Cloud</a></h4></li>
</ul>
@@ -1,10 +1,8 @@
@using Examine.SearchCriteria
@using OurUmbraco.Our
@using Umbraco.Core.Cache
@using OurUmbraco.Our.Examine
@using OurUmbraco.Project
@using OurUmbraco.Project.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
//This is the main Our project search
@@ -57,7 +55,6 @@
var toVersion = new Version(parsedVersion.Major, 999, 999).GetNumericalValue();
var versionFilters = new SearchFilters(BooleanOperation.Or);
versionFilters.Filters.Add(new RangeSearchFilter("num_version", fromVersion, toVersion));
versionFilters.Filters.Add(new RangeSearchFilter("num_compatVersions", fromVersion, toVersion));
filters.Add(versionFilters);
}
}
@@ -1,9 +1,10 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Our
@using OurUmbraco.Project
@using OurUmbraco.Project.Services
@using OurUmbraco.Wiki.BusinessLogic
@using System.Text.RegularExpressions;
@{
var project = Model.Content;
@@ -38,6 +39,7 @@
var cs = new ContributionService(ApplicationContext.Current.DatabaseContext);
var contributors = cs.GetContributors(project.Id).ToList();
var nuGetPackageUrl = project.GetPropertyValue<string>("nuGetPackageUrl");
var sourceUrl = project.GetPropertyValue<string>("sourceUrl");
var websiteUrl = project.GetPropertyValue<string>("websiteUrl");
var demoUrl = project.GetPropertyValue<string>("demoUrl");
@@ -255,14 +257,42 @@
<div class="col-md-4 col-md-offset-1">
<div class="package-detail-sidebar">
@if (currentRelease != null)
{
<a href="/FileDownload?id=@currentRelease.Id" class="button green" onclick="ga('PackageMaker.send', 'pageview', window.location.pathname + '/virtual/download/package-files/@(currentRelease.Name.Replace("'", ""))')"><i class="icon-Download-alt"></i>&nbsp;Download package<br/><small>version @project.GetPropertyValue("version")</small></a>
}
else
{
<div class="button green">No current release</div>
}
<div class="package-download">
@if (currentRelease != null)
{
<a href="/FileDownload?id=@currentRelease.Id" class="button green" onclick="ga('PackageMaker.send', 'pageview', window.location.pathname + '/virtual/download/package-files/@(currentRelease.Name.Replace("'", ""))')"><i class="icon-Download-alt"></i>&nbsp;Download package<br/><small>version @project.GetPropertyValue("version")</small></a>
}
else
{
<div class="button green">No current release</div>
}
@if (!string.IsNullOrEmpty(nuGetPackageUrl))
{
Regex regex = new Regex(@"^(http|https)://", RegexOptions.IgnoreCase);
if (!regex.Match(nuGetPackageUrl).Success)
{
nuGetPackageUrl = "http://" + nuGetPackageUrl;
}
var nuGetPackageUri = new Uri(nuGetPackageUrl);
string nuGetPackageCmd = string.Empty;
if (nuGetPackageUri.Segments.Length >= 2)
{
nuGetPackageCmd = nuGetPackageUri.Segments[2].Trim("/");
}
if (!string.IsNullOrEmpty(nuGetPackageCmd))
{
<p class="small">or, install via <a href="@nuGetPackageUrl">nuget</a></p>
<span class="pm-nuget">
<input class="pre nuget" value="Install-Package @nuGetPackageCmd" readonly>
</span>
}
}
</div>
<div class="package-creator">
<h3>Project owner</h3>
@@ -1,5 +1,5 @@
@using OurUmbraco.Release
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
var sortedVersions = new Dictionary<Version, IPublishedContent>();
@@ -1,295 +1,295 @@
@using OurUmbraco.Release
@using OurUmbraco.Release.Models
@using Version = System.Version
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
var notesOnly = Request.QueryString["notes"] != null;
Version fromVersion;
Version toVersion;
Version.TryParse(Request.QueryString["from"], out fromVersion);
Version.TryParse(Request.QueryString["to"], out toVersion);
// If there's values in the POST (from the form) then those overrule the values in the querystring
if (Request.Form["from"] != null && Request.Form["to"] != null)
{
Version.TryParse(Request.Form["from"], out fromVersion);
Version.TryParse(Request.Form["to"], out toVersion);
}
var sortedVersions = new Dictionary<Version, IPublishedContent>();
var selectedVersions = new Dictionary<Version, IPublishedContent>();
foreach (var release in Model.Content.Parent.Children.Where(x => x.GetPropertyValue<string>("releaseStatus") != "Planning"
&& x.GetPropertyValue<string>("releaseStatus") != "Unreleased"
&& string.IsNullOrWhiteSpace(x.GetPropertyValue<string>("releaseStatus")) == false))
{
try
{
sortedVersions.Add(new Version(release.Name), release);
}
catch (Exception ex)
{
<span style="display: none">Couldn't add version @release.Name</span>
}
}
var majorVersionGroups = sortedVersions.GroupBy(x => x.Key.Major).OrderByDescending(x => x.Key);
var allVersions = new Versions();
var youTrackVersions = allVersions.GetAggregateVersionsFromFile();
var newFeatures = 0;
var breakingChanges = 0;
var issuesTasks = 0;
var newFeatureList = new List<AggregateView>();
var breakingList = new List<AggregateView>();
var issueList = new List<AggregateView>();
if (fromVersion != null && toVersion != null && toVersion <= fromVersion)
{
<p class="error">Can't compare versions that are equal to each other or where the "to" is lower than the "from".</p>
}
// Reset to show the compare between the previous version and the newest available version
if ((fromVersion == null && toVersion == null) || (toVersion <= fromVersion))
{
toVersion = sortedVersions.Last().Key;
fromVersion = sortedVersions.Skip(sortedVersions.Count - 2).First().Key;
}
<form name="compare" method="post">
<div class="row">
<div class="col-xs-6 col-sm-4">
<div class="row">
<div class="col-sm-3 titles">From:</div>
<div class="col-sm-9">
<select name="from">
@foreach (var majorVersion in majorVersionGroups)
{
var versions = majorVersion.OrderByDescending(x => x.Key);
<optgroup label="@majorVersion.Key">
@foreach (var version in versions)
{
if (fromVersion != null && version.Key.ToString() == fromVersion.ToString())
{
<option name="@version.Key" selected="selected" value="@version.Key">@version.Key</option>
}
else
{
<option name="@version.Key" value="@version.Key">@version.Key</option>
}
}
</optgroup>
}
</select>
</div>
</div>
</div>
<div class="col-xs-6 col-sm-4">
<div class="row">
<div class="col-sm-3 titles">To:</div>
<div class="col-sm-9">
<select name="to">
@foreach (var majorVersion in majorVersionGroups)
{
var versions = majorVersion.OrderByDescending(x => x.Key);
<optgroup label="@majorVersion.Key">
@foreach (var version in versions)
{
if (version.Key.ToString() == toVersion.ToString())
{
<option name="@version.Key" selected="selected" value="@version.Key">@version.Key</option>
}
else
{
<option name="@version.Key" value="@version.Key">@version.Key</option>
}
}
</optgroup>
}
</select>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4">
<div class="row">
<div class="col-xs-12">
<input type="submit" value="Compare" class="button" />
</div>
</div>
</div>
</div>
</form>
<br />
if (fromVersion != null && toVersion != null && fromVersion < toVersion)
{
foreach (var release in sortedVersions.Where(release => release.Key != fromVersion && (release.Key >= fromVersion) && (release.Key <= toVersion)))
{
selectedVersions.Add(release.Key, release.Value);
}
foreach (var version in selectedVersions.OrderByDescending(x => x.Key))
{
var release = youTrackVersions.FirstOrDefault(x => x.version == version.Key.ToString());
if (release == null)
{
continue;
}
var newFeatureIssues = release.issues.Where(x => x.type.ToLowerInvariant().Contains("feature")).ToList();
newFeatureList.Add(new AggregateView { version = version.Key.ToString(), issues = newFeatureIssues });
newFeatures += newFeatureIssues.Count;
var breakingIssues = release.issues.Where(x => x.breaking).ToList();
breakingList.Add(new AggregateView { version = version.Key.ToString(), issues = breakingIssues });
breakingChanges += breakingIssues.Count;
var issueIssues = release.issues.Where(x => x.breaking == false && x.type.ToLowerInvariant().Contains("feature") == false).ToList();
issueList.Add(new AggregateView { version = version.Key.ToString(), issues = issueIssues });
issuesTasks += issueIssues.Count;
}
<div class="row">
<div class="col-sm-12 explain">
<div class="row">
<div class="col-xs-12 col-sm-4">
<div class="dot big progress">
<div class="chart" data-percent="100">
<p>@newFeatures</p>
</div>
</div>
<div class="chartDesc">
<h3><a href="#newFeatures">New Features</a></h3>
</div>
</div>
<div class="col-xs-12 col-sm-4">
<div class="dot big progress">
<div class="chart" data-percent="100">
<p>@breakingChanges</p>
</div>
</div>
<div class="chartDesc">
<h3><a href="#breakingChanges">Breaking Changes</a></h3>
</div>
</div>
<div class="col-xs-12 col-sm-4">
<div class="dot big progress">
<div class="chart" data-percent="100">
<p>@issuesTasks</p>
</div>
</div>
<div class="chartDesc">
<h3><a href="#issuesTasks">Issues & Tasks</a></h3>
</div>
</div>
</div>
</div>
<div class="col-sm-12 statuses">
@if (notesOnly == false)
{
if (newFeatures > 0)
{
<div id="newFeatures" class="status features">
<h2>New Features</h2>
@foreach (var release in newFeatureList.Where(x => x.issues.Any()))
{
<h3>Features released in version @release.version</h3>
foreach (var issue in release.issues)
{
<ul>
<li class="@issue.StateIcon()" title="@issue.state">
<a href="http://issues.umbraco.org/issue/@(issue.id)" target="_blank">@issue.id - @issue.title</a>
</li>
</ul>
}
}
</div>
}
if (breakingChanges > 0)
{
<div id="breakingChanges" class="status breaking">
<h2>Breaking Changes</h2>
@foreach (var release in breakingList.Where(x => x.issues.Any()))
{
<h3>Breaking changes in version @release.version</h3>
foreach (var issue in release.issues)
{
<ul>
<li class="@issue.StateIcon()" title="@issue.state">
<a href="http://issues.umbraco.org/issue/@(issue.id)" target="_blank">@issue.id - @issue.title</a>
</li>
</ul>
}
}
</div>
}
if (issuesTasks > 0)
{
<div id="issuesTasks" class="status issues">
<h2>Issues & Tasks</h2>
@foreach (var release in issueList.Where(x => x.issues.Any()))
{
<h3>Issues & Tasks fixed in version @release.version</h3>
foreach (var issue in release.issues)
{
<ul>
<li class="@issue.StateIcon()" title="@issue.state">
<a href="http://issues.umbraco.org/issue/@(issue.id)" target="_blank">@issue.id - @issue.title</a>
</li>
</ul>
}
}
</div>
}
}
<div id="issuesTasks" class="status issues">
<h2>Release Notes</h2>
@if (notesOnly)
{
<p>
What follows is a list of release notes, <a href="@RemoveQueryStringByKey(Request.Url.OriginalString, "notes")" style="text-decoration: underline">want to see the list of related issues?</a>
</p>
}
@foreach (var version in selectedVersions.OrderByDescending(x => x.Key))
{
<h2>Notes for version @version.Key</h2>
@Html.Raw(version.Value.GetPropertyValue<string>("bodyText"))
}
</div>
</div>
</div>
}
}
@functions {
public static string RemoveQueryStringByKey(string url, string key)
{
var uri = new Uri(url);
// this gets all the query string key value pairs as a collection
var newQueryString = HttpUtility.ParseQueryString(uri.Query);
// this removes the key if exists
newQueryString.Remove(key);
// this gets the page path from root without QueryString
string pagePathWithoutQueryString = uri.GetLeftPart(UriPartial.Path);
return newQueryString.Count > 0
? String.Format("{0}?{1}", pagePathWithoutQueryString, newQueryString)
: pagePathWithoutQueryString;
}
@using OurUmbraco.Release
@using OurUmbraco.Release.Models
@using Version = System.Version
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
var notesOnly = Request.QueryString["notes"] != null;
Version fromVersion;
Version toVersion;
Version.TryParse(Request.QueryString["from"], out fromVersion);
Version.TryParse(Request.QueryString["to"], out toVersion);
// If there's values in the POST (from the form) then those overrule the values in the querystring
if (Request.Form["from"] != null && Request.Form["to"] != null)
{
Version.TryParse(Request.Form["from"], out fromVersion);
Version.TryParse(Request.Form["to"], out toVersion);
}
var sortedVersions = new Dictionary<Version, IPublishedContent>();
var selectedVersions = new Dictionary<Version, IPublishedContent>();
foreach (var release in Model.Content.Parent.Children.Where(x => x.GetPropertyValue<string>("releaseStatus") != "Planning"
&& x.GetPropertyValue<string>("releaseStatus") != "Unreleased"
&& string.IsNullOrWhiteSpace(x.GetPropertyValue<string>("releaseStatus")) == false))
{
try
{
sortedVersions.Add(new Version(release.Name), release);
}
catch (Exception ex)
{
<span style="display: none">Couldn't add version @release.Name</span>
}
}
var majorVersionGroups = sortedVersions.GroupBy(x => x.Key.Major).OrderByDescending(x => x.Key);
var allVersions = new Versions();
var youTrackVersions = allVersions.GetAggregateVersionsFromFile();
var newFeatures = 0;
var breakingChanges = 0;
var issuesTasks = 0;
var newFeatureList = new List<AggregateView>();
var breakingList = new List<AggregateView>();
var issueList = new List<AggregateView>();
if (fromVersion != null && toVersion != null && toVersion <= fromVersion)
{
<p class="error">Can't compare versions that are equal to each other or where the "to" is lower than the "from".</p>
}
// Reset to show the compare between the previous version and the newest available version
if ((fromVersion == null && toVersion == null) || (toVersion <= fromVersion))
{
toVersion = sortedVersions.Last().Key;
fromVersion = sortedVersions.Skip(sortedVersions.Count - 2).First().Key;
}
<form name="compare" method="post">
<div class="row">
<div class="col-xs-6 col-sm-4">
<div class="row">
<div class="col-sm-3 titles">From:</div>
<div class="col-sm-9">
<select name="from">
@foreach (var majorVersion in majorVersionGroups)
{
var versions = majorVersion.OrderByDescending(x => x.Key);
<optgroup label="@majorVersion.Key">
@foreach (var version in versions)
{
if (fromVersion != null && version.Key.ToString() == fromVersion.ToString())
{
<option name="@version.Key" selected="selected" value="@version.Key">@version.Key</option>
}
else
{
<option name="@version.Key" value="@version.Key">@version.Key</option>
}
}
</optgroup>
}
</select>
</div>
</div>
</div>
<div class="col-xs-6 col-sm-4">
<div class="row">
<div class="col-sm-3 titles">To:</div>
<div class="col-sm-9">
<select name="to">
@foreach (var majorVersion in majorVersionGroups)
{
var versions = majorVersion.OrderByDescending(x => x.Key);
<optgroup label="@majorVersion.Key">
@foreach (var version in versions)
{
if (version.Key.ToString() == toVersion.ToString())
{
<option name="@version.Key" selected="selected" value="@version.Key">@version.Key</option>
}
else
{
<option name="@version.Key" value="@version.Key">@version.Key</option>
}
}
</optgroup>
}
</select>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4">
<div class="row">
<div class="col-xs-12">
<input type="submit" value="Compare" class="button" />
</div>
</div>
</div>
</div>
</form>
<br />
if (fromVersion != null && toVersion != null && fromVersion < toVersion)
{
foreach (var release in sortedVersions.Where(release => release.Key != fromVersion && (release.Key >= fromVersion) && (release.Key <= toVersion)))
{
selectedVersions.Add(release.Key, release.Value);
}
foreach (var version in selectedVersions.OrderByDescending(x => x.Key))
{
var release = youTrackVersions.FirstOrDefault(x => x.version == version.Key.ToString());
if (release == null)
{
continue;
}
var newFeatureIssues = release.issues.Where(x => x.type.ToLowerInvariant().Contains("feature")).ToList();
newFeatureList.Add(new AggregateView { version = version.Key.ToString(), issues = newFeatureIssues });
newFeatures += newFeatureIssues.Count;
var breakingIssues = release.issues.Where(x => x.breaking).ToList();
breakingList.Add(new AggregateView { version = version.Key.ToString(), issues = breakingIssues });
breakingChanges += breakingIssues.Count;
var issueIssues = release.issues.Where(x => x.breaking == false && x.type.ToLowerInvariant().Contains("feature") == false).ToList();
issueList.Add(new AggregateView { version = version.Key.ToString(), issues = issueIssues });
issuesTasks += issueIssues.Count;
}
<div class="row">
<div class="col-sm-12 explain">
<div class="row">
<div class="col-xs-12 col-sm-4">
<div class="dot big progress">
<div class="chart" data-percent="100">
<p>@newFeatures</p>
</div>
</div>
<div class="chartDesc">
<h3><a href="#newFeatures">New Features</a></h3>
</div>
</div>
<div class="col-xs-12 col-sm-4">
<div class="dot big progress">
<div class="chart" data-percent="100">
<p>@breakingChanges</p>
</div>
</div>
<div class="chartDesc">
<h3><a href="#breakingChanges">Breaking Changes</a></h3>
</div>
</div>
<div class="col-xs-12 col-sm-4">
<div class="dot big progress">
<div class="chart" data-percent="100">
<p>@issuesTasks</p>
</div>
</div>
<div class="chartDesc">
<h3><a href="#issuesTasks">Issues & Tasks</a></h3>
</div>
</div>
</div>
</div>
<div class="col-sm-12 statuses">
@if (notesOnly == false)
{
if (newFeatures > 0)
{
<div id="newFeatures" class="status features">
<h2>New Features</h2>
@foreach (var release in newFeatureList.Where(x => x.issues.Any()))
{
<h3>Features released in version @release.version</h3>
foreach (var issue in release.issues)
{
<ul>
<li class="@issue.StateIcon()" title="@issue.state">
<a href="http://issues.umbraco.org/issue/@(issue.id)" target="_blank">@issue.id - @issue.title</a>
</li>
</ul>
}
}
</div>
}
if (breakingChanges > 0)
{
<div id="breakingChanges" class="status breaking">
<h2>Breaking Changes</h2>
@foreach (var release in breakingList.Where(x => x.issues.Any()))
{
<h3>Breaking changes in version @release.version</h3>
foreach (var issue in release.issues)
{
<ul>
<li class="@issue.StateIcon()" title="@issue.state">
<a href="http://issues.umbraco.org/issue/@(issue.id)" target="_blank">@issue.id - @issue.title</a>
</li>
</ul>
}
}
</div>
}
if (issuesTasks > 0)
{
<div id="issuesTasks" class="status issues">
<h2>Issues & Tasks</h2>
@foreach (var release in issueList.Where(x => x.issues.Any()))
{
<h3>Issues & Tasks fixed in version @release.version</h3>
foreach (var issue in release.issues)
{
<ul>
<li class="@issue.StateIcon()" title="@issue.state">
<a href="http://issues.umbraco.org/issue/@(issue.id)" target="_blank">@issue.id - @issue.title</a>
</li>
</ul>
}
}
</div>
}
}
<div id="issuesTasks" class="status issues">
<h2>Release Notes</h2>
@if (notesOnly)
{
<p>
What follows is a list of release notes, <a href="@RemoveQueryStringByKey(Request.Url.OriginalString, "notes")" style="text-decoration: underline">want to see the list of related issues?</a>
</p>
}
@foreach (var version in selectedVersions.OrderByDescending(x => x.Key))
{
<h2>Notes for version @version.Key</h2>
@Html.Raw(version.Value.GetPropertyValue<string>("bodyText"))
}
</div>
</div>
</div>
}
}
@functions {
public static string RemoveQueryStringByKey(string url, string key)
{
var uri = new Uri(url);
// this gets all the query string key value pairs as a collection
var newQueryString = HttpUtility.ParseQueryString(uri.Query);
// this removes the key if exists
newQueryString.Remove(key);
// this gets the page path from root without QueryString
string pagePathWithoutQueryString = uri.GetLeftPart(UriPartial.Path);
return newQueryString.Count > 0
? String.Format("{0}?{1}", pagePathWithoutQueryString, newQueryString)
: pagePathWithoutQueryString;
}
}
+31
View File
@@ -0,0 +1,31 @@
@using OurUmbraco.Forum.Extensions
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
var numberOfDays = 365;
var numberOfResults = 25;
if (Request.QueryString["days"] != null)
{
int.TryParse(Request.QueryString["days"], out numberOfDays);
}
var karma = OurUmbraco.Powers.Library.Xslt.MemberKarma(numberOfDays, numberOfResults);
}
<div id="body" class="page markdown-syntax">
<div>
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = false })
</div>
@if (MemberData != null && MemberData.Member != null && MemberData.Member.IsHq())
{
<h1>Karma leaderboard</h1>
<textarea style="width: 400px;height: 600px;">
@while (karma.MoveNext())
{
@karma.Current.InnerXml
}
</textarea>
}
</div>
+2 -7
View File
@@ -9,9 +9,7 @@
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("MemberProfileNavigation", new { source = "1057" })
@Html.Partial("~/Views/Partials/Members/ProfileNavigation.cshtml")
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div><!-- .sidebar-area -->
@@ -19,11 +17,8 @@
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
+2 -2
View File
@@ -6,10 +6,10 @@
<div>
<!-- FORUM HEADER START -->
<div class="utilities">
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "0" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = false })
<div class="clear"></div>
</div>
@Umbraco.RenderMacro("ProjectsProjectDetail")
@Html.Partial("~/Views/Partials/Projects/ProjectDetails.cshtml")
</div>
</section>
+2 -2
View File
@@ -6,14 +6,14 @@
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("MemberProfileNavigation", new { source = "1057" })
@Html.Partial("~/Views/Partials/Members/ProfileNavigation.cshtml")
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div><!-- .sidebar-area -->
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
+3 -3
View File
@@ -26,7 +26,7 @@
</li>
<li class="filter-category">
<h3>By Category</h3>
@Umbraco.RenderMacro("ProjectsListCategories")
@Html.Partial("~/Views/Partials/Projects/ListCategories.cshtml")
</li>
</ul>
</nav>
@@ -39,10 +39,10 @@
<div class="main-content">
<div class="content-wrapper">
<div>
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
</div>
<div class="packages-content">
@Umbraco.RenderMacro("ProjectsListProjects")
@Html.Partial("~/Views/Partials/Projects/ListProjects.cshtml")
</div>
</div><!-- .content-wrapper -->
@@ -21,8 +21,8 @@
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Umbraco.RenderMacro("MembersPublicProfile")
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@Html.Partial("~/Views/Partials/Members/PublicProfile.cshtml")
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
+3 -3
View File
@@ -90,9 +90,9 @@
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
<div>
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
</div>
<div>
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
</div>
<style>
.release-page .explain h2 {
margin-top: 12px;
+2 -2
View File
@@ -35,7 +35,7 @@
<div class="main-content">
<div class="content-wrapper">
<div>
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
</div>
<style>
@@ -153,7 +153,7 @@
<div class="row markdown-syntax douh">
<div class="col-sm-12">
<h1>Compare Releases</h1>
@Umbraco.RenderMacro("ReleasesDropdown")
@Html.Partial("~/Views/Partials/Releases/ReleasesDropdown.cshtml")
</div>
</div>
</div>
+2 -2
View File
@@ -41,11 +41,11 @@
<div class="main-content">
<div class="content-wrapper">
<div>
@Umbraco.RenderMacro("Breadcrumb", new { linkToCurrent = "1" })
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
</div>
<!-- <div class="markdown-syntax"><div data-bind="template: { name: 'releases-template', foreach: currentReleases }"></div></div>-->
<div class="markdown-syntax">
@Umbraco.RenderMacro("ReleasesAllReleases")
@Html.Partial("~/Views/Partials/Releases/AllReleases.cshtml")
</div>
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
+4 -2
View File
@@ -27,7 +27,7 @@
</style>
<div class="subpage wrapper">
<div>
@Umbraco.RenderMacro("Breadcrumb")
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = false })
</div>
<div class="markdown-syntax">
<h1>@title</h1>
@@ -90,7 +90,9 @@
<div class="row explain">
<div class="col-xs-12">
<h4 class="text-right"><a href="/contribute/releases/@(release.version.Replace(".",""))">v@(release.version)</a></h4>
<small><span>release.releaseDescription</span></small>
@if (release.releaseDescription != string.Empty) {
<small><span>@Html.Raw(release.releaseDescription)</span></small>
}
</div>
<div class="col-xs-6">
<div class="changes">
+1 -1
View File
@@ -5,7 +5,7 @@
<div id="body" class="page markdown-syntax">
<div>
@Umbraco.RenderMacro("Breadcrumb")
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = false })
</div>
<h1>@Model.Content.Name</h1>
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
+9 -13
View File
@@ -10,7 +10,7 @@ NOTES:
* Compression/Combination/Minification is not enabled unless debug="false" is specified on the 'compiliation' element in the web.config
* A new version will invalidate both client and server cache and create new persisted files
-->
<clientDependency version="336352293" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">
<clientDependency version="49321111" 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.
@@ -19,19 +19,18 @@ NOTES:
-->
<fileRegistration defaultProvider="PlaceHolderProvider">
<providers>
<add name="PageHeaderProvider" type="ClientDependency.Core.FileRegistration.Providers.PageHeaderProvider, ClientDependency.Core"/>
<add name="LazyLoadProvider" type="ClientDependency.Core.FileRegistration.Providers.LazyLoadProvider, ClientDependency.Core"/>
<add name="LoaderControlProvider" type="ClientDependency.Core.FileRegistration.Providers.LoaderControlProvider, ClientDependency.Core"/>
<add name="PlaceHolderProvider" type="ClientDependency.Core.FileRegistration.Providers.PlaceHolderProvider, ClientDependency.Core"
javascriptPlaceHolderId="JavaScriptPlaceHolder" cssPlaceHolderId="CssPlaceHolder"/>
<add name="PageHeaderProvider" type="ClientDependency.Core.FileRegistration.Providers.PageHeaderProvider, ClientDependency.Core" />
<add name="LazyLoadProvider" type="ClientDependency.Core.FileRegistration.Providers.LazyLoadProvider, ClientDependency.Core" />
<add name="LoaderControlProvider" type="ClientDependency.Core.FileRegistration.Providers.LoaderControlProvider, ClientDependency.Core" />
<add name="PlaceHolderProvider" type="ClientDependency.Core.FileRegistration.Providers.PlaceHolderProvider, ClientDependency.Core" javascriptPlaceHolderId="JavaScriptPlaceHolder" cssPlaceHolderId="CssPlaceHolder" />
</providers>
</fileRegistration>
<!-- This section is used for MVC only -->
<mvc defaultRenderer="StandardRenderer">
<renderers>
<add name="StandardRenderer" type="ClientDependency.Core.FileRegistration.Providers.StandardRenderer, ClientDependency.Core"/>
<add name="LazyLoadRenderer" type="ClientDependency.Core.FileRegistration.Providers.LazyLoadRenderer, ClientDependency.Core"/>
<add name="StandardRenderer" type="ClientDependency.Core.FileRegistration.Providers.StandardRenderer, ClientDependency.Core" />
<add name="LazyLoadRenderer" type="ClientDependency.Core.FileRegistration.Providers.LazyLoadRenderer, ClientDependency.Core" />
</renderers>
</mvc>
@@ -45,15 +44,12 @@ NOTES:
-->
<compositeFiles defaultProvider="defaultFileProcessingProvider" compositeFileHandlerPath="~/DependencyHandler.axd">
<fileProcessingProviders>
<add name="CompositeFileProcessor" type="ClientDependency.Core.CompositeFiles.Providers.CompositeFileProcessingProvider, ClientDependency.Core"
enableCssMinify="true" enableJsMinify="true" persistFiles="true" compositeFilePath="~/App_Data/TEMP/ClientDependency" bundleDomains="localhost:123456"
urlType="Base64QueryStrings" pathUrlFormat="{dependencyId}/{version}/{type}"/>
<add name="CompositeFileProcessor" type="ClientDependency.Core.CompositeFiles.Providers.CompositeFileProcessingProvider, ClientDependency.Core" enableCssMinify="true" enableJsMinify="true" persistFiles="true" compositeFilePath="~/App_Data/TEMP/ClientDependency" bundleDomains="localhost:123456" urlType="Base64QueryStrings" pathUrlFormat="{dependencyId}/{version}/{type}" />
</fileProcessingProviders>
<!-- A file map provider stores references to dependency files by an id to be used in the handler URL when using the MappedId Url type -->
<fileMapProviders>
<add name="XmlFileMap" type="ClientDependency.Core.CompositeFiles.Providers.XmlFileMapper, ClientDependency.Core"
mapPath="~/App_Data/TEMP/ClientDependency"/>
<add name="XmlFileMap" type="ClientDependency.Core.CompositeFiles.Providers.XmlFileMapper, ClientDependency.Core" mapPath="~/App_Data/TEMP/ClientDependency" />
</fileMapProviders>
</compositeFiles>
@@ -0,0 +1,35 @@
umbracodk
Dutch-Umbraco-User-Group
Australian-Umbraco-Meetups
Kent-Umbraco-Meetup
Sydney-Umbraco-Meetup
Umbraco-Meetup-RheinMain
The-London-Umbraco-Meetup
Denver-Area-Umbraco-Meetup
Auckland-Umbraco-Meetup
Denver-Area-Umbraco-Meetup
Dorset-Umbraco-Meetup
Umbraco-Oxford-Meetup
Madrid-Umbraco-Meetup-Group
Chicago-Umbraco-Meetup
Umbraco
Umbraco-Dev-TC
Goteborg-Umbraco-Meetup
Dublin-Umbraco-Meetup
Umbraco-BA
Manchester-Umbraco-Meetup
Liverpool-Umbraco-Meetup
The-Poland-Umbraco-Meetup
Lisbon-Umbraco-Meetup
Glasgow-Umbraco-Users-Group-GLUUG
PNW-Umbraco-Meetup
Adelaide-Umbraco-Meetup
The-New-York-Umbraco-Meetup
Umbraco-Navi-Mumbai-NET-Meetup
Edinburgh-Umbraco-Users-Group
Stuttgart-Umbraco-Meetup
UmbCardiff
meet-umbraco-the-umbraco-meetup
umBristol
Oslo-Umbraco-Meetup
Orange-County-Umbraco-Web-Technologies
+16
View File
@@ -0,0 +1,16 @@
Aaen
clausjensen
emilwangaa
hartvig
hemraker
madsrasmussen
mikkelhm
nul800sebastiaan
perploug
Shazwazza
simonbusborg
sitereactor
sofietoft
umbracoci
warrenbuckley
zpqrtbnk
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<caching currentCache="DiskCache">
<caches>
<cache name="DiskCache" type="ImageProcessor.Web.Caching.DiskCache, ImageProcessor.Web" maxDays="365" browserMaxDays="7">
<cache name="DiskCache" type="ImageProcessor.Web.Caching.DiskCache, ImageProcessor.Web" maxDays="365" browserMaxDays="7" trimCache="false">
<settings>
<setting key="VirtualCachePath" value="~/../wwwcache/IPCache" />
</settings>
+1
View File
@@ -9,6 +9,7 @@
<configuration default="v750">
<versions>
<!-- version key="v5" name="Version 5.0.x" description="Compatible with version 5.0.x" vote="false"/ -->
<version key="v760" name="Version 7.6.x" description="Compatible with version 7.6.x" vote="true" voteDescription="Version 7.6.x" voteName="7.6.x"/>
<version key="v750" name="Version 7.5.x" description="Compatible with version 7.5.x" vote="true" voteDescription="Version 7.5.x" voteName="7.5.x"/>
<version key="v740" name="Version 7.4.x" description="Compatible with version 7.4.x" vote="true" voteDescription="Version 7.4.x" voteName="7.4.x"/>
<version key="v730" name="Version 7.3.x" description="Compatible with version 7.3.x" vote="true" voteDescription="Version 7.3.x" voteName="7.3.x"/>
@@ -33,7 +33,6 @@
var numericalVersion = parsedVersion.GetNumericalValue();
var versionFilters = new SearchFilters(BooleanOperation.Or);
versionFilters.Filters.Add(new RangeSearchFilter("num_version", 0, numericalVersion));
versionFilters.Filters.Add(new RangeSearchFilter("num_compatVersions", 0, numericalVersion));
filters.Add(versionFilters);
}
@@ -1,4 +1,6 @@
@using OurUmbraco.Project
@using OurUmbraco.Repository.Services
@using Umbraco.Core
@using Umbraco.Web
@{
System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
@@ -7,6 +9,7 @@
int projectId;
if (int.TryParse(Request.QueryString["project_id"], out projectId) == false)
{
//TODO: Exception probably !
return;
}
@@ -14,6 +17,11 @@
var callback = Request.QueryString["callback"];
var Project = ProjectsProvider.GetListing(projectId, false);
if (Project == null)
{
throw new InvalidOperationException("No project found with id " + projectId);
}
var node = new umbraco.NodeFactory.Node(projectId);
var parentId = node.Parent.Id;
var categoryName = node.Parent.Name;
@@ -30,10 +38,26 @@
descCssClass = "wrap";
}
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var packageRepoService = new PackageRepositoryService(umbracoHelper, umbracoHelper.MembershipHelper, ApplicationContext.Current.DatabaseContext);
//This doesn't matter what we set it to so long as it's below 7.5 since that is the version we introduce strict dependencies
var currUmbracoVersion = new Version(4, 0, 0);
var packageDetails = packageRepoService.GetDetails(Project.ProjectGuid, currUmbracoVersion, false);
if (packageDetails == null)
{
throw new InvalidOperationException("No package found with id " + Project.ProjectGuid);
}
if (packageDetails.ZipUrl.IsNullOrWhiteSpace())
{
throw new InvalidOperationException("This package is not compatible with the Umbraco version " + currUmbracoVersion);
}
int currentReleaseFile = 0;
if (int.TryParse(Project.CurrentReleaseFile, out currentReleaseFile))
{
var file = Project.PackageFile.Where(x => x.Id == currentReleaseFile).FirstOrDefault();
var file = Project.PackageFile.FirstOrDefault(x => x.Id == currentReleaseFile);
if (file != null)
{
var ct = "This project is compaitible with ";
@@ -66,27 +90,33 @@
}
}
<script type="text/javascript">
jQuery("#projectDescriptionText a").click(function(event){event.preventDefault(); });
jQuery("#projectDescriptionText a").click(function (event) { event.preventDefault(); });
</script>
<ul id="breadcrumb">
<li><a href="/repo?@qs">Repository</a> &rarr;</li>
<li><a href="/repo_category?@qs&category_id=@parentId">@categoryName</a> &rarr;</li>
<li><a href="/repo_category?@qs&category_id=@parentId">@categoryName</a> &rarr;</li>
<li>@Project.Name</li>
</ul>
<div id="project">
@if (currentReleaseFile != 0)
@if (string.IsNullOrWhiteSpace(packageDetails.ZipUrl) == false)
{
<h1 class="projectName">
<span>@Project.Name</span>
<a href="#" title="@Project.Name" rel="@Project.ProjectGuid" class="btn">Install package</a>
</h1>
}
else if (currentReleaseFile != 0)
{
<span style="color: red;">Unfortunately, this package is not compatible with the version of Umbraco you are running.</span><br />
<a href="https://our.umbraco.org/@node.NiceUrl" target="_blank">Go to the package page to learn more</a>
}
else
{
<span style="color: red;">Unfortunately, this package has no current release file to install at the moment.</span><br />
<a href="https://our.umbraco.org/@node.NiceUrl" target="_blank">Go to the package page to learn more</a>}
<a href="https://our.umbraco.org/@node.NiceUrl" target="_blank">Go to the package page to learn more</a>
}
<div class="meta">
<div class="box">
@@ -94,10 +124,10 @@
<dl class="projetProps summary">
<dt>Project owner:</dt>
@{
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var ownerName = umbracoHelper.MembershipHelper.GetById(Project.VendorId).Name;
}
<dd>@ownerName</dd>
<dd>@ownerName</dd>
<dt>Package downloads</dt>
<dd>@Project.Downloads</dd>
@@ -119,9 +149,9 @@
@if (Project.Stable)
{
<dt>Is Stable:</dt>
<dd>
<span class="green">Project is stable</span>
</dd>
<dd>
<span class="green">Project is stable</span>
</dd>
}
<dt>Current version</dt>
<dd>
@@ -130,9 +160,9 @@
@if (!string.IsNullOrEmpty(Project.LicenseName))
{
<dt>License</dt>
<dd>
<a target="_blank" href="@Project.LicenseUrl">@Project.LicenseName</a>
</dd>
<dd>
<a target="_blank" href="@Project.LicenseUrl">@Project.LicenseName</a>
</dd>
}
</dl>
</div>
@@ -158,7 +188,7 @@
image.Path.EndsWith("jpeg"))
{
<a href="@image.Path" class="projectscreenshot" rel="shadowbox[gallery]">
<img src="@image.Path?bgcolor=fff&width=100&height=100&format=png" style="border: 0;"/>
<img src="@image.Path?bgcolor=fff&width=100&height=100&format=png" style="border: 0;" />
</a>
}
}
+10 -15
View File
@@ -7,26 +7,18 @@
<package id="ClientDependency-Mvc" version="1.8.0.0" targetFramework="net451" />
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net452" />
<package id="EasyHttp" version="1.6.29.0" targetFramework="net451" />
<package id="Examine" version="0.1.80" targetFramework="net452" />
<package id="Examine" version="0.1.81" targetFramework="net452" />
<package id="HtmlAgilityPack" version="1.4.9.5" targetFramework="net452" />
<package id="ImageProcessor" version="2.5.1" targetFramework="net452" />
<package id="ImageProcessor.Web" version="4.8.0" targetFramework="net452" />
<package id="ImageProcessor" version="2.5.2" targetFramework="net452" />
<package id="ImageProcessor.Web" version="4.8.2" targetFramework="net452" />
<package id="ImageProcessor.Web.Config" version="2.3.0.0" targetFramework="net452" />
<package id="jQuery" version="1.4.1" targetFramework="net451" />
<package id="jQuery.Validation" version="1.8" targetFramework="net451" />
<package id="jQuery.Validation.Unobtrusive" version="2.0.20710.0" targetFramework="net451" />
<package id="JsonFx" version="2.0.1209.2802" targetFramework="net4" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net452" />
<package id="Markdown" version="1.14.4" targetFramework="net452" />
<package id="Markdown" version="1.14.7" targetFramework="net452" />
<package id="MarkdownSharp" version="1.13.0.0" targetFramework="net4" />
<package id="Microsoft.ApplicationInsights" version="2.2.0" targetFramework="net452" />
<package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.0.6" targetFramework="net452" />
<package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.2.0" targetFramework="net452" />
<package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.2.0" targetFramework="net452" />
<package id="Microsoft.ApplicationInsights.TraceListener" version="2.2.0" targetFramework="net452" />
<package id="Microsoft.ApplicationInsights.Web" version="2.2.0" targetFramework="net452" />
<package id="Microsoft.ApplicationInsights.WindowsServer" version="2.2.0" targetFramework="net452" />
<package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.2.0" targetFramework="net452" />
<package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net451" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net452" />
@@ -46,7 +38,7 @@
<package id="Microsoft.CodeAnalysis.Analyzers" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.CodeAnalysis.Common" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.CodeAnalysis.CSharp" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.IO.RecyclableMemoryStream" version="1.2.0" targetFramework="net452" />
<package id="Microsoft.IO.RecyclableMemoryStream" version="1.2.1" targetFramework="net452" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.20710.0" targetFramework="net451" />
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net452" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
@@ -64,12 +56,15 @@
<package id="RestSharp" version="104.1" targetFramework="net4" />
<package id="semver" version="1.1.2" targetFramework="net452" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net452" />
<package id="Skybrud.Essentials" version="1.0.8" targetFramework="net452" />
<package id="Skybrud.Social.Core" version="1.0.0-beta9" targetFramework="net452" />
<package id="Skybrud.Social.Meetup" version="1.0.0-beta002" 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="TweetinviAPI" version="1.2.0" targetFramework="net452" />
<package id="Umbraco.ModelsBuilder" version="3.0.5" targetFramework="net452" />
<package id="UmbracoCms" version="7.5.7" targetFramework="net452" />
<package id="UmbracoCms.Core" version="7.5.7" targetFramework="net452" />
<package id="UmbracoCms" version="7.5.11" targetFramework="net452" />
<package id="UmbracoCms.Core" version="7.5.11" targetFramework="net452" />
<package id="UmbracoCms.IdentityExtensions" version="1.0.0" targetFramework="net451" />
<package id="UmbracoCms.IdentityExtensions.Google" version="1.0.0" targetFramework="net451" />
<package id="UrlRewritingNet" version="2.0.7" targetFramework="net452" />
@@ -2,6 +2,6 @@
<h4><localize key="prompt_unsavedChanges">You have unsaved changes</localize></h4>
<p><localize key="prompt_unsavedChangesWarning">Are you sure you want to navigate away from this page? - you have unsaved changes</localize></p>
<button class="btn btn-warning" ng-click="discard(notification)"><localize key="prompt_discardChanges">Discard changes</localize></button>
<button class="btn" ng-click="stay(notification)" umb-auto-focus><localize key="prompt_stay">Stay</localize></button>
</div>
<button class="btn" ng-click="discard(notification)"><localize key="prompt_discardChanges">Discard changes</localize></button>
<button class="btn btn-success" ng-click="stay(notification)" umb-auto-focus><localize key="prompt_stay">Stay</localize></button>
</div>
@@ -12,8 +12,8 @@
<div class="umb-package-list__item" ng-repeat="installedPackage in vm.installedPackages">
<div class="umb-package-list__item-icon">
<i ng-if="!installedPackage.icon" class="icon-box"></i>
<img ng-if="installedPackage.icon" ng-src="{{installedPackage.icon}}" />
<i ng-if="!installedPackage.iconUrl" class="icon-box"></i>
<img ng-if="installedPackage.iconUrl" ng-src="{{installedPackage.iconUrl}}" />
</div>
<div class="umb-package-list__item-content">
@@ -51,7 +51,7 @@
</umb-file-dropzone>
<umb-folder-grid
ng-if="folders.length > 0 && !vm.isRecycleBin"
ng-if="folders.length > 0"
folders="folders"
on-click="vm.selectFolder"
on-click-name="vm.goToItem">
@@ -1142,7 +1142,7 @@ To manage your website, simply open the Umbraco back office and start adding con
<area alias="modelsBuilder">
<key alias="buildingModels">Building models</key>
<key alias="waitingMessage">this can take abit of time, don't worry</key>
<key alias="waitingMessage">this can take a bit of time, don't worry</key>
<key alias="modelsGenerated">Models generated</key>
<key alias="modelsGeneratedError">Models could not be generated</key>
<key alias="modelsExceptionInUlog">Models generation has failed, see exception in U log</key>
+524 -122
View File
@@ -27,6 +27,10 @@
<key alias="unpublish">Depubliceren</key>
<key alias="refreshNode">Nodes opnieuw inladen</key>
<key alias="republish">Herpubliceer de site</key>
<key alias="SetPermissionsForThePage">Stel rechten voor pagina %0% in</key>
<key alias="chooseWhereToMove">Waarheen verplaatsen/</key>
<key alias="toInTheTreeStructureBelow">Naar de onderstaande boomstructuur</key>
<key alias="restore" version="7.3.0">Herstellen</key>
<key alias="rights">Rechten</key>
<key alias="rollback">Vorige versies</key>
<key alias="sendtopublish">Klaar voor publicatie</key>
@@ -64,10 +68,10 @@
<key alias="atViewingFor">Tonen voor</key>
</area>
<area alias="buttons">
<key alias="clearSelection">Selectie ongedaan maken</key>
<key alias="select">Selecteren</key>
<key alias="selectCurrentFolder">Selecteer huidige map</key>
<key alias="somethingElse">Doe iets anders</key>
<key alias="bold">Vet</key>
<key alias="deindent">Paragraaf uitspringen</key>
<key alias="formFieldInsert">Voeg formulierveld in</key>
@@ -89,11 +93,14 @@
<key alias="save">Opslaan</key>
<key alias="saveAndPublish">Opslaan en publiceren</key>
<key alias="saveToPublish">Opslaan en verzenden voor goedkeuring</key>
<key alias="saveListView">Sla list view op</key>
<key alias="showPage">voorbeeld bekijken</key>
<key alias="showPageDisabled">Voorbeeld bekijken is uitgeschakeld omdat er geen template is geselecteerd</key>
<key alias="styleChoose">Stijl kiezen</key>
<key alias="styleShow">Stijlen tonen</key>
<key alias="tableInsert">Tabel invoegen</key>
<key alias="generateModels">Genereer models</key>
<key alias="saveAndGenerateModels">Opslaan en models genereren</key>
</area>
<area alias="changeDocType">
<key alias="changeDocTypeInstruction">Om het documenttype voor de geselecteerde inhoud te wijzigen, selecteert u eerst uit de lijst van geldige types voor deze locatie.</key>
@@ -133,7 +140,8 @@
<key alias="itemChanged">Dit item is gewijzigd na publicatie</key>
<key alias="itemNotPublished">Dit item is niet gepubliceerd</key>
<key alias="lastPublished">Laatst gepubliceerd op</key>
<key alias="listViewNoItems" version="7.1.5">Nog geen items om weer te geven.</key>
<key alias="noItemsToShow">Er zijn geen items om weer te geven</key>
<key alias="listViewNoItems" version="7.1.5">Er zijn geen items om weer te geven.</key>
<key alias="mediatype">Mediatype</key>
<key alias="mediaLinks">Link naar media item(s)</key>
<key alias="membergroup">Ledengroep</key>
@@ -143,7 +151,9 @@
<key alias="nodeName">Pagina Titel</key>
<key alias="otherElements">Eigenschappen</key>
<key alias="parentNotPublished">Dit document is gepubliceerd maar niet zichtbaar omdat de bovenliggende node '%0%' niet gepubliceerd is</key>
<key alias="parentNotPublishedAnomaly">Oeps: dit document is gepubliceerd, maar het is niet in de cache (interne serverfout)</key>
<key alias="parentNotPublishedAnomaly">Dit document is gepubliceerd, maar het is niet in de cache (interne serverfout)</key>
<key alias="getUrlException">Kan de Url niet ophalen</key>
<key alias="routeError">Dit document is gepubliceerd, maar de Url conflicteert met %0%</key>
<key alias="publish">Publiceren</key>
<key alias="publishStatus">Publicatiestatus</key>
<key alias="releaseDate">Publiceren op</key>
@@ -161,23 +171,34 @@
<key alias="uploadClear">Bestand(en) verwijderen</key>
<key alias="urls">Link naar het document</key>
<key alias="memberof">Lid van groep(en)</key>
<key alias="notmemberof">Geen lid van groep(en)</key>
<key alias="notmemberof">Geen lid van groep(en)</key>
<key alias="childItems" version="7.0">Kinderen</key>
<key alias="target" version="7.0">Doel</key>
<key alias="scheduledPublishServerTime">Dit betekend de volgende tijd op de server:</key>
<key alias="scheduledPublishDocumentation"><![CDATA[<a href="https://our.umbraco.org/documentation/Getting-Started/Data/Scheduled-Publishing/#timezones" target="_blank">Wat houd dit in?</a>]]></key>
</area>
<area alias="media">
<key alias="clickToUpload">Klik om te uploaden</key>
<key alias="dropFilesHere">Plaats je bestanden hier...</key>
<key alias="urls">Link naar media</key>
<key alias="orClickHereToUpload">Of klik hier om bestanden te kiezen</key>
<key alias="onlyAllowedFiles">De toegestane bestandtypen zijn</key>
<key alias="disallowedFileType">Dit bestand heeft niet het juiste file-type. Dit bestand kan niet geupload worden.</key>
<key alias="maxFileSize">Max file size is</key>
</area>
<area alias="member">
<key alias="createNewMember">Maak nieuwe member aan</key>
<key alias="allMembers">Alle Members</key>
</area>
<area alias="create">
<key alias="chooseNode">Waar wil je de nieuwe %0% aanmaken?</key>
<key alias="createUnder">Aanmaken onder</key>
<key alias="updateData">Kies een type en een titel</key>
<key alias="noDocumentTypes" version="7.0"><![CDATA[Er zijn geen toegestane documenttypes beschikbaar. Je moet deze inschakelen in de Instellingen sectie onder <strong>"Documenttypes"</ strong>.]]></key>
<key alias="noMediaTypes" version="7.0"><![CDATA[Er zijn geen toegestande mediatypes beschikbaar. Je moet deze in schakelen in de Instellingen sectie onder <strong>"Mediatypes"</strong>.]]></key>
<key alias="documentTypeWithoutTemplate">Document Type zonder template</key>
<key alias="newFolder">Nieuwe folder</key>
<key alias="newDataType">Nieuw data type</key>
</area>
<area alias="dashboard">
<key alias="browser">Open je website</key>
@@ -189,38 +210,38 @@
<key alias="welcome">Welkom</key>
</area>
<area alias="prompt">
<key alias="stay">Stay</key>
<key alias="discardChanges">Discard changes</key>
<key alias="unsavedChanges">You have unsaved changes</key>
<key alias="unsavedChangesWarning">Are you sure you want to navigate away from this page? - you have unsaved changes</key>
<key alias="stay">Blijf op deze pagina</key>
<key alias="discardChanges">Negeer wijzigingen</key>
<key alias="unsavedChanges">Wijzigingen niet opgeslagen</key>
<key alias="unsavedChangesWarning">Weet je zeker dat deze pagina wilt verlaten? - er zijn onopgeslagen wijzigingen</key>
</area>
<area alias="bulk">
<key alias="done">Done</key>
<key alias="deletedItem">Deleted %0% item</key>
<key alias="deletedItems">Deleted %0% items</key>
<key alias="deletedItemOfItem">Deleted %0% out of %1% item</key>
<key alias="deletedItemOfItems">Deleted %0% out of %1% items</key>
<key alias="publishedItem">Published %0% item</key>
<key alias="publishedItems">Published %0% items</key>
<key alias="publishedItemOfItem">Published %0% out of %1% item</key>
<key alias="publishedItemOfItems">Published %0% out of %1% items</key>
<key alias="unpublishedItem">Unpublished %0% item</key>
<key alias="unpublishedItems">Unpublished %0% items</key>
<key alias="unpublishedItemOfItem">Unpublished %0% out of %1% item</key>
<key alias="unpublishedItemOfItems">Unpublished %0% out of %1% items</key>
<key alias="movedItem">Moved %0% item</key>
<key alias="movedItems">Moved %0% items</key>
<key alias="movedItemOfItem">Moved %0% out of %1% item</key>
<key alias="movedItemOfItems">Moved %0% out of %1% items</key>
<key alias="copiedItem">Copied %0% item</key>
<key alias="copiedItems">Copied %0% items</key>
<key alias="copiedItemOfItem">Copied %0% out of %1% item</key>
<key alias="copiedItemOfItems">Copied %0% out of %1% items</key>
<key alias="deletedItem">%0% item verwijderd</key>
<key alias="deletedItems">%0% items verwijderd</key>
<key alias="deletedItemOfItem">Item %0% van de %1% verwijderd</key>
<key alias="deletedItemOfItems">Items %0% van de %1% verwijderd</key>
<key alias="publishedItem">%0% item gepubliceerd</key>
<key alias="publishedItems">%0% items gepubliceerd</key>
<key alias="publishedItemOfItem">Item %0% van de %1% gepubliceerd</key>
<key alias="publishedItemOfItems">Items %0% van de %1% gepubliceerd</key>
<key alias="unpublishedItem">%0% item gedepubliceerd</key>
<key alias="unpublishedItems">%0% items gedepubliceerd</key>
<key alias="unpublishedItemOfItem">Item %0% van de %1% gedepubliceerd</key>
<key alias="unpublishedItemOfItems">Items %0% van de %1% gedepubliceerd</key>
<key alias="movedItem">%0% item verplaatst</key>
<key alias="movedItems">%0% items verplaatst</key>
<key alias="movedItemOfItem">item %0% van de %1% verplaatst</key>
<key alias="movedItemOfItems">items %0% van de %1% verplaatst</key>
<key alias="copiedItem">%0% item gekopieerd</key>
<key alias="copiedItems">%0% items gekopieerd</key>
<key alias="copiedItemOfItem">item %0% van de %1% gekopieerd</key>
<key alias="copiedItemOfItems">item %0% van de %1% gekopieerd</key>
</area>
<area alias="defaultdialogs">
<key alias="anchorInsert">Naam</key>
@@ -269,21 +290,55 @@
<key alias="thumbnailimageclickfororiginal">Klik op de afbeelding voor volledige grootte</key>
<key alias="treepicker">Kies een item</key>
<key alias="viewCacheItem">Toon cache item</key>
<key alias="createFolder">Maak folder aan...</key>
<key alias="relateToOriginalLabel">Relateer aan origineel</key>
<key alias="includeDescendants">Descendants meenemen</key>
<key alias="theFriendliestCommunity">De vriendelijkste community</key>
<key alias="linkToPage">Link naar pagina</key>
<key alias="openInNewWindow">Opent het gelinkte document in een nieuw venster of tab</key>
<key alias="linkToMedia">Link naar media</key>
<key alias="selectMedia">Selecteer media</key>
<key alias="selectIcon">Selecteer icoon</key>
<key alias="selectItem">Selecteer item</key>
<key alias="selectLink">Selecteer link</key>
<key alias="selectMacro">Selecteer macro</key>
<key alias="selectContent">Selecteer content</key>
<key alias="selectMember">Selecteer member</key>
<key alias="selectMemberGroup">Selecteer member group</key>
<key alias="noMacroParams">Er zijn geen parameters voor deze macro</key>
<key alias="externalLoginProviders">Externe login providers</key>
<key alias="exceptionDetail">Error details</key>
<key alias="stacktrace">Stacktrace</key>
<key alias="innerException">Inner Exception</key>
<key alias="linkYour">Link je</key>
<key alias="unLinkYour">De-Link je</key>
<key alias="account">account</key>
<key alias="selectEditor">Selecteer editor</key>
</area>
<area alias="dictionaryItem">
<key alias="description"><![CDATA[
Wijzig de verschillende taalversies voor het woordenboek item '%0%'. Je kunt extra talen toevoegen bij 'talen' in het menu links
]]></key>
<key alias="displayName">Cultuurnaam</key>
<key alias="changeKey">Verander de key van het dictionary item.</key>
<key alias="changeKeyError">
<![CDATA[
De key '%0%' bestaat al.
]]>
</key>
</area>
<area alias="placeholders">
<key alias="username">Typ je gebruikersnaam</key>
<key alias="password">Typ je wachtwoord</key>
<key alias="username">Typ jouw gebruikersnaam</key>
<key alias="password">Typ jouw wachtwoord</key>
<key alias="confirmPassword">Bevestig jouw wachtwoord</key>
<key alias="nameentity">Benoem de %0%...</key>
<key alias="entername">Typ een naam...</key>
<key alias="label">Label...</key>
<key alias="enterDescription">Voer een omschrijving in...</key>
<key alias="search">Typ om te zoeken...</key>
<key alias="filter">Typ om te filteren...</key>
<key alias="enterTags">Typ om tags toe te voegen (druk op enter na elke tag)...</key>
<key alias="email">Voer jouw email in</key>
</area>
<area alias="editcontenttype">
@@ -331,10 +386,17 @@
<key alias="errorRegExpWithoutTab">%0% is niet in het correcte formaat</key>
</area>
<area alias="errors">
<key alias="receivedErrorFromServer">Een error ontvangen van de server</key>
<key alias="dissallowedMediaType">Het opgegeven bestandstype is niet toegestaan door de beheerder</key>
<key alias="codemirroriewarning">OPMERKING! Ondanks dat CodeMiror is ingeschakeld, is het uitgeschakeld in Internet Explorer omdat het niet stabiel genoeg is.</key>
<key alias="contentTypeAliasAndNameNotNull">Zowel de alias als de naam van het nieuwe eigenschappen type moeten worden ingevuld!</key>
<key alias="filePermissionsError">Er is een probleem met de lees/schrijf rechten op een bestand of map</key>
<key alias="macroErrorLoadingPartialView">Error bij het laden van Partial View script (file: %0%)</key>
<key alias="macroErrorLoadingUsercontrol">Error bij het laden van userControl '%0%'</key>
<key alias="macroErrorLoadingCustomControl">Error bij het laden van customControl (Assembly: %0%, Type: '%1%')</key>
<key alias="macroErrorLoadingMacroEngineScript">Error bij het laden van MacroEngine script (file: %0%)</key>
<key alias="macroErrorParsingXSLTFile">"Error bij het parsen van XSLT file: %0%</key>
<key alias="macroErrorReadingXSLTFile">"Error bij het laden van XSLT file: %0%</key>
<key alias="missingTitle">Vul een titel in</key>
<key alias="missingType">Selecteer een type</key>
<key alias="pictureResizeBiggerThanOrg">U wilt een afbeelding groter maken dan de originele afmetingen. Weet je zeker dat je wilt doorgaan?</key>
@@ -355,102 +417,142 @@
<key alias="actions">Acties</key>
<key alias="add">Toevoegen</key>
<key alias="alias">Alias</key>
<key alias="all">Alles</key>
<key alias="areyousure">Weet je het zeker?</key>
<key alias="border">Rand</key>
<key alias="by">of</key>
<key alias="cancel">Annuleren</key>
<key alias="back">Terug</key>
<key alias="border">Border</key>
<key alias="by">bij</key>
<key alias="cancel">Cancel</key>
<key alias="cellMargin">Cel marge</key>
<key alias="choose">Kiezen</key>
<key alias="close">Sluiten</key>
<key alias="closewindow">Venster sluiten</key>
<key alias="comment">Opmerking</key>
<key alias="confirm">Bevestigen</key>
<key alias="constrainProportions">Verhouding behouden</key>
<key alias="continue">Doorgaan</key>
<key alias="copy">Kopiëren</key>
<key alias="choose">Kies</key>
<key alias="close">Sluit</key>
<key alias="closewindow">Sluit venster</key>
<key alias="comment">Comment</key>
<key alias="confirm">Bevestig</key>
<key alias="constrainProportions">Verhoudingen behouden</key>
<key alias="continue">Ga verder</key>
<key alias="copy">Copy</key>
<key alias="create">Aanmaken</key>
<key alias="database">Databank</key>
<key alias="database">Database</key>
<key alias="date">Datum</key>
<key alias="default">Standaard</key>
<key alias="delete">Verwijderen</key>
<key alias="delete">Verwijder</key>
<key alias="deleted">Verwijderd</key>
<key alias="deleting">Verwijderen...</key>
<key alias="deleting">Aan het verwijderen...</key>
<key alias="design">Ontwerp</key>
<key alias="dimensions">Afmetingen</key>
<key alias="down">Beneden</key>
<key alias="down">Omlaag</key>
<key alias="download">Download</key>
<key alias="edit">Aanpassen</key>
<key alias="edited">Aangepast</key>
<key alias="edit">Bewerk</key>
<key alias="edited">Bewerkt</key>
<key alias="elements">Elementen</key>
<key alias="email">E-mail</key>
<key alias="email">Email</key>
<key alias="error">Fout</key>
<key alias="findDocument">Zoeken</key>
<key alias="height">Hoogte</key>
<key alias="findDocument">Vind</key>
<key alias="height">Hogte</key>
<key alias="help">Help</key>
<key alias="icon">Icoon</key>
<key alias="import">Importeren</key>
<key alias="innerMargin">Binnenmarge</key>
<key alias="import">Import</key>
<key alias="innerMargin">Binnenste marge</key>
<key alias="insert">Invoegen</key>
<key alias="install">Installeren</key>
<key alias="justify">Uitvullen</key>
<key alias="invalid">Ongeldig</key>
<key alias="justify">Justify</key>
<key alias="label">Label</key>
<key alias="language">Taal</key>
<key alias="layout">Lay-out</key>
<key alias="loading">Bezig met laden</key>
<key alias="locked">Geblokkeerd</key>
<key alias="layout">Layout</key>
<key alias="loading">Aan het laden</key>
<key alias="locked">Gesloten</key>
<key alias="login">Inloggen</key>
<key alias="logoff">Afmelden</key>
<key alias="logout">Afmelden</key>
<key alias="logoff">Uitloggen</key>
<key alias="logout">Uitloggen</key>
<key alias="macro">Macro</key>
<key alias="move">Verplaatsen</key>
<key alias="more">Meer</key>
<key alias="mandatory">Verplicht</key>
<key alias="move">Verplaats</key>
<key alias="more">meer</key>
<key alias="name">Naam</key>
<key alias="new">Nieuw</key>
<key alias="next">Volgende</key>
<key alias="no">Nee</key>
<key alias="of">van</key>
<key alias="ok">Ok</key>
<key alias="open">Openen</key>
<key alias="of">of</key>
<key alias="ok">OK</key>
<key alias="open">Open</key>
<key alias="or">of</key>
<key alias="password">Wachtwoord</key>
<key alias="path">Pad</key>
<key alias="placeHolderID">Placeholder ID</key>
<key alias="pleasewait">Een ogenblik geduld a.u.b.</key>
<key alias="pleasewait">Een ogenblik geduld aub...</key>
<key alias="previous">Vorige</key>
<key alias="properties">Eigenschappen</key>
<key alias="reciept">E-mail om formulier te ontvangen</key>
<key alias="reciept">Email om formulier resultaten te ontvangen</key>
<key alias="recycleBin">Prullenbak</key>
<key alias="remaining">Overgebleven</key>
<key alias="rename">Hernoemen</key>
<key alias="recycleBinEmpty">De prullenbak is leeg</key>
<key alias="remaining">Overblijvend</key>
<key alias="rename">Hernoem</key>
<key alias="renew">Vernieuw</key>
<key alias="required" version="7.0">Verplicht</key>
<key alias="retry">Opnieuw proberen</key>
<key alias="rights">Rechten</key>
<key alias="search">Zoek</key>
<key alias="search">Zoeken</key>
<key alias="searchNoResult">We konden helaas niet vinden wat je zocht</key>
<key alias="server">Server</key>
<key alias="show">Tonen</key>
<key alias="showPageOnSend">Toon pagina bij versturen</key>
<key alias="size">Formaat</key>
<key alias="sort">Sorteren</key>
<key alias="submit">Submit</key> <!-- TODO: Translate this -->
<key alias="type">Type</key>
<key alias="typeToSearch">Type om te zoeken...</key>
<key alias="show">Toon</key>
<key alias="showPageOnSend">Toon pagina na verzenden</key>
<key alias="size">Grootte</key>
<key alias="sort">Sorteer</key>
<key alias="submit">Verstuur</key>
<key alias="type">Typen</key>
<key alias="typeToSearch">Typ om te zoeken...</key>
<key alias="up">Omhoog</key>
<key alias="update">Bijwerken</key>
<key alias="update">Update</key>
<key alias="upgrade">Upgrade</key>
<key alias="upload">Upload</key>
<key alias="url">Url</key>
<key alias="user">Gebruiker</key>
<key alias="username">Gebruikersnaam</key>
<key alias="value">Waarde</key>
<key alias="view">Toon</key>
<key alias="view">Bekijk</key>
<key alias="welcome">Welkom...</key>
<key alias="width">Breedte</key>
<key alias="yes">Ja</key>
<key alias="folder">Map</key>
<key alias="reorder">Reorder</key>
<key alias="reorderDone">I am done reordering</key>
<key alias="searchResults">Zoekresultaten</key>
<key alias="reorder">Herschik</key>
<key alias="reorderDone">Ik ben klaar met herschikken</key>
<key alias="preview">Voorvertoning</key>
<key alias="changePassword">Wachtwoord veranderen</key>
<key alias="to">naar</key>
<key alias="listView">Lijstweergave</key>
<key alias="saving">Aan het opslaan...</key>
<key alias="current">huidig</key>
<key alias="embed">Embed</key>
<key alias="selected">geselecteerd</key>
</area>
<area alias="colors">
<key alias="black">Zwart</key>
<key alias="green">Groen</key>
<key alias="yellow">Geel</key>
<key alias="orange">Oranje</key>
<key alias="blue">Blauw</key>
<key alias="red">Rood</key>
</area>
<area alias="shortcuts">
<key alias="addTab">Tab toevoegen</key>
<key alias="addProperty">Property toevoegen</key>
<key alias="addEditor">Editor toevoegen</key>
<key alias="addTemplate">Template toevoegen</key>
<key alias="addChildNode">Child node toevoegen</key>
<key alias="addChild">Child toevoegen</key>
<key alias="editDataType">Data type bewerken</key>
<key alias="navigateSections">Secties navigeren</key>
<key alias="shortcut">Shortcuts</key>
<key alias="showShortcuts">Toon shortcuts</key>
<key alias="toggleListView">Toggle lijstweergave</key>
<key alias="toggleAllowAsRoot">Toggle toestaan op root-niveau</key>
</area>
<area alias="graphicheadline">
<key alias="backgroundcolor">Achtergrondkleur</key>
@@ -528,6 +630,57 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="watch">Bekijken</key>
<key alias="welcomeIntro"><![CDATA[Deze wizard helpt u met het configureren van <strong>Umbraco %0%</strong> voor een nieuwe installatie of een upgrade van versie 3.0. <br /><br /> Druk op <strong>"volgende"</strong> om de wizard te starten.]]></key>
</area>
<area alias="language">
<key alias="cultureCode">Cultuurcode</key>
<key alias="displayName">Cultuurnaam</key>
@@ -543,12 +696,22 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="greeting3">Fijne woensdag</key>
<key alias="greeting4">Fijne donderdag</key>
<key alias="greeting5">Fijne vrijdag</key>
<key alias="greeting6">Fijne zaterdag</key>
<key alias="greeting6">Fijne zaterdag</key>
<key alias="instruction">log hieronder in</key>
<key alias="signInWith">Inloggen met</key>
<key alias="timeout">Sessie is verlopen</key>
<key alias="bottomText"><![CDATA[<p style="text-align:right;">&copy; 2001 - %0% <br /><a href="http://umbraco.com" style="text-decoration: none" target="_blank">umbraco.com</a></p>]]></key>
<key alias="forgottenPassword">Wachtwoord vergeten?</key>
<key alias="forgottenPasswordInstruction">Er zal een email worden gestuurd naar het emailadres van jouw account. Hierin staat een link om je wachtwoord te resetten</key>
<key alias="requestPasswordResetConfirmation">Een email met daarin de wachtwoord reset uitleg zal worden gestuurd als het emailadres in onze database voorkomt.</key>
<key alias="returnToLogin">Terug naar loginformulier</key>
<key alias="setPasswordInstruction">Geeft alsjeblieft een nieuw wachtwoord op</key>
<key alias="setPasswordConfirmation">Je wachtwoord is aangepast</key>
<key alias="resetCodeExpired">De link die je hebt aangeklikt is niet (meer) geldig.</key>
<key alias="resetPasswordEmailCopySubject">Umbraco: Wachtwoord Reset</key>
<key alias="resetPasswordEmailCopyFormat">
<![CDATA[<p>De gebruikersnaam om in te loggen bij jouw Umbraco omgeving is: <strong>%0%</strong></p><p>Klik <a href="%1%"><strong>hier</strong></a> om je wachtwoord te resetten of knip/plak deze URL in je browser:</p><p><em>%1%</em></p>]]>
</key>
</area>
<area alias="main">
<key alias="dashboard">Dashboard</key>
@@ -646,6 +809,15 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="packageVersion">Package versie</key>
<key alias="packageVersionHistory">Package versiehistorie</key>
<key alias="viewPackageWebsite">Bekijk de package website</key>
<key alias="packageAlreadyInstalled">Package reeds geinstalleerd</key>
<key alias="targetVersionMismatch">Deze package kan niet worden geinstalleerd omdat minimaal Umbraco versie %0% benodigd is.</key>
<key alias="installStateUninstalling">Aan het deinstalleren...</key>
<key alias="installStateDownloading">Aan het downloaden...</key>
<key alias="installStateImporting">Aan het importeren...</key>
<key alias="installStateInstalling">Aan het installeren...</key>
<key alias="installStateRestarting">Aan het herstarten, een ongenblik geduld aub...</key>
<key alias="installStateComplete">Geinstalleerd! Je browser zal nu automatisch ververst worden...</key>
<key alias="installStateCompleted">Kruk op "finish" om de installate te voltooien en de pagina te verversen.</key>
</area>
<area alias="paste">
<key alias="doNothing">Plakken met alle opmaak (Niet aanbevolen)</key>
@@ -677,13 +849,18 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
%0% kan niet worden gepubliceerd omdat het item is gepland voor release.
]]>
</key>
<key alias="contentPublishedFailedExpired"><![CDATA[
%0% kon niet gepubliceerd worden omdat het item niet meer geldig is.
]]></key>
<key alias="contentPublishedFailedInvalid"><![CDATA[
%0% kan niet worden gepubliceerd, omdat de eigenschappen:%1% de validatieregels niet hebben doorstaan.
]]></key>
<key alias="contentPublishedFailedByEvent"><![CDATA[
%0% kon niet worden gepubliceerd doordat een 3rd party extensie het heeft geannuleerd.
%0% kon niet worden gepubliceerd doordat een 3rd party extensie het heeft geannuleerd.
]]></key>
<key alias="contentPublishedFailedByParent"><![CDATA[
%0% kon niet gepubliceerd worden, omdat de parent pagina niet gepubliceerd is.
]]></key>
<key alias="includeUnpublished">Inclusief ongepubliceerde kinderen</key>
<key alias="inProgress">Publicatie in uitvoering - even geduld...</key>
<key alias="inProgressCounter">%0% van %1% paginas zijn gepubliceerd...</key>
@@ -698,16 +875,13 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="noColors">Je hebt geen goedgekeurde kleuren geconfigureerd</key>
</area>
<area alias="relatedlinks">
<key alias="addExternal">Externe link toevoegen</key>
<key alias="addInternal">Interne link toevoegen</key>
<key alias="addlink">Toevoegen</key>
<key alias="caption">Bijschrift</key>
<key alias="internalPage">Interne pagina</key>
<key alias="linkurl">URL</key>
<key alias="modeDown">Verplaats omlaag</key>
<key alias="modeUp">Verplaats omhoog</key>
<key alias="newWindow">Open in nieuw venster</key>
<key alias="removeLink">Verwijder link</key>
<key alias="enterExternal">Externe link toevoegen</key>
<key alias="chooseInternal">Interne link toevoegen</key>
<key alias="caption">Bijschrift</key>
<key alias="link">Link</key>
<key alias="newWindow">In een nieuw venster openen</key>
<key alias="captionPlaceholder">Voer het bijschrijft in</key>
<key alias="externalLinkPlaceholder">Voer de link in</key>
</area>
<area alias="imagecropper">
<key alias="reset">Reset</key>
@@ -736,13 +910,17 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="settings">Instellingen</key>
<key alias="statistics">Statistieken</key>
<key alias="translation">Vertaling</key>
<key alias="users">Gebruikers</key>
<key alias="contour" version="4.0">Umbraco Contour</key>
<key alias="users">Gebruikers</key>
<key alias="help" version="7.0">Help</key>
<key alias="forms">Formulieren</key>
<key alias="analytics">Analytics</key>
</area>
<area alias="help">
<key alias="goTo">ga naar</key>
<key alias="helpTopicsFor">Help onderwerpen voor</key>
<key alias="videoChaptersFor">Video's voor</key>
<key alias="theBestUmbracoVideoTutorials">De beste Umbraco video tutorials</key>
</area>
<area alias="settings">
<key alias="defaulttemplate">Standaard template</key>
<key alias="dictionary editor egenskab">Woordenboek sleutel</key>
@@ -762,6 +940,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="noPropertiesDefinedOnTab">Geen eigenschappen gedefinieerd op dit tabblad. Klik op de link "voeg een nieuwe eigenschap" aan de bovenkant om een nieuwe eigenschap te creëren.</key>
<key alias="masterDocumentType">Master Document Type</key>
<key alias="createMatchingTemplate">Maak een bijbehorend template</key>
<key alias="addIcon">Icon toevoegen</key>
</area>
<area alias="sort">
<key alias="sortOrder">Sort order</key>
@@ -771,7 +950,13 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="sortPleaseWait"><![CDATA[Een ogenblik geduld. Paginas worden gesorteerd, dit kan even duren.<br/> <br/> Sluit dit venster niet tijdens het sorteren]]></key>
</area>
<area alias="speechBubbles">
<key alias="contentPublishedFailedByEvent">Publicatie werd geannuleerd door een 3rd party plug-in</key>
<key alias="validationFailedHeader">Validatie</key>
<key alias="validationFailedMessage">Validatiefouten moeten worden opgelost voor dit item kan worden opgeslagen</key>
<key alias="operationFailedHeader">Mislukt</key>
<key alias="invalidUserPermissionsText">Wegens onvoldoende rechten kon deze handeling kon niet worden uitegevoerd </key>
<key alias="operationCancelledHeader">Geannuleerd</key>
<key alias="operationCancelledText">Uitvoering is g eannuleerd door de plugin van een 3e partij</key>
<key alias="contentPublishedFailedByEvent">Publicatie werd geannuleerd doordeeen plugin van een 3e partij</key>
<key alias="contentTypeDublicatePropertyType">Eigenschappen type bestaat al</key>
<key alias="contentTypePropertyTypeCreated">Eigenschappen type aangemaakt</key>
<key alias="contentTypePropertyTypeCreatedText"><![CDATA[Naam: %0% <br /> Data type: %1%]]></key>
@@ -806,6 +991,8 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="fileSavedHeader">Bestand opgeslagen</key>
<key alias="fileSavedText">Bestand opgeslagen zonder fouten</key>
<key alias="languageSaved">Taal opgeslagen</key>
<key alias="mediaTypeSavedHeader">Media Type opgeslagen</key>
<key alias="memberTypeSavedHeader">Member Type opgeslagen</key>
<key alias="pythonErrorHeader">Python script niet opgeslagen</key>
<key alias="pythonErrorText">Python script kon niet worden opgeslagen door een fout</key>
<key alias="pythonSavedHeader">Python script opeslagen!</key>
@@ -824,6 +1011,11 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="partialViewSavedText">Partial view opgeslagen zonder fouten!</key>
<key alias="partialViewErrorHeader">Partial view niet opgeslagen</key>
<key alias="partialViewErrorText">Er is een fout opgetreden bij het opslaan van het bestand.</key>
<key alias="scriptSavedHeader">Script view opgeslagen</key>
<key alias="scriptSavedText">Script view opgeslagen zonder fouten!</key>
<key alias="scriptErrorHeader">Script view niet opgeslagen</key>
<key alias="scriptErrorText">Er is een fout opgetreden bij het opslaan van dit bestand.</key>
<key alias="cssErrorText">Er is een fout opgetreden bij het opslaan van dit bestand.</key>
</area>
<area alias="stylesheet">
<key alias="aliasHelp">Gebruik CSS syntax bijv: h1, .redHeader, .blueTex</key>
@@ -846,15 +1038,15 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
</area>
<area alias="grid">
<key alias="insertControl">Item toevoegen</key>
<key alias="chooseLayout">Choose a layout</key>
<key alias="addRows">Een rij aan de lay-out toevoegen</key>
<key alias="addElement"><![CDATA[Klik om te starten op het <i class="icon icon-add blue"></i> teken onderaan en voeg je eerste item toe]]></key>
<key alias="chooseLayout">Kies de indeling</key>
<key alias="addRows">Kies een indeling voor deze pagina om content toe te kunnen voegen</key>
<key alias="addElement"><![CDATA[<i class="icon icon-add blue"></i> Plaats een (extra) content blok]]></key>
<key alias="dropElement">Drop content</key>
<key alias="settingsApplied">Settings applied</key>
<key alias="contentNotAllowed">This content is not allowed here</key>
<key alias="contentAllowed">This content is allowed here</key>
<key alias="settingsApplied">Instellingen toegepast</key>
<key alias="contentNotAllowed">Deze content is hier niet toegestaan</key>
<key alias="contentAllowed">Deze content is hier toegestaan</key>
<key alias="clickToEmbed">Klik om een item te embedden</key>
<key alias="clickToInsertImage">Klik om een afbeelding in te voegen</key>
<key alias="placeholderImageCaption">Afbeelding ondertitel...</key>
@@ -883,7 +1075,79 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="allowAllEditors">Alle editors toelaten</key>
<key alias="allowAllRowConfigurations">Alle rijconfiguraties toelaten</key>
<key alias="setAsDefault">Instellen als standaard</key>
<key alias="chooseExtra">Kies extra</key>
<key alias="chooseDefault">Kies standaard</key>
<key alias="areAdded">zijn toegevoegd</key>
</area>
<area alias="contentTypeEditor">
<key alias="compositions">Composities</key>
<key alias="noTabs">Er zijn nog geen tabs toegevoegd</key>
<key alias="addNewTab">Voeg een nieuwe tab toe</key>
<key alias="addAnotherTab">Voeg nog een tab toe</key>
<key alias="inheritedFrom">Inherited van</key>
<key alias="addProperty">Voeg property toe</key>
<key alias="requiredLabel">Verplicht label</key>
<key alias="enableListViewHeading">Zet list view aan</key>
<key alias="enableListViewDescription">Laat de child nodes van het content item zien als een sorteer- en doorzoekbare lijstweergave zien. Deze child nodes worden dan niet in de boomstructuur getoond.</key>
<key alias="allowedTemplatesHeading">Toegestane Templates</key>
<key alias="allowedTemplatesDescription">Kies welke templates toegestaan zijn om door de editors op dit content-type gebruikt te worden</key>
<key alias="allowAsRootHeading">Sta toe op root-niveau</key>
<key alias="allowAsRootDescription">Sta editors toe om content van dit type aan te maken op root-niveau</key>
<key alias="allowAsRootCheckbox">Ja - sta content van dit type toe op root-niveau</key>
<key alias="childNodesHeading">Toegestane child node types</key>
<key alias="childNodesDescription">Sta contetn van een bepaalde type toe om onder dit type aangemaakt te kunnen worden</key>
<key alias="chooseChildNode">Kies child node</key>
<key alias="compositionsDescription">Overerfde tabs en properties van een bestaand document-type. Nieuwe tabs worden toegevoegd aan het huidige document-type of samengevoegd als een tab met de identieke naam al bestaat.</key>
<key alias="compositionInUse">Dit content-type wordt gebruikt in een compositie en kan daarom niet zelf een compositie worden.</key>
<key alias="noAvailableCompositions">Er zijn geen content-typen beschikbaar om als compositie te gebruiken.</key>
<key alias="availableEditors">Beschikbare editors</key>
<key alias="reuse">Herbruik</key>
<key alias="editorSettings">Editor instellingen</key>
<key alias="configuration">Configuratie</key>
<key alias="yesDelete">Ja, verwijder</key>
<key alias="movedUnderneath">is naar onder geplaatst</key>
<key alias="copiedUnderneath">is naar onder gecopierd</key>
<key alias="folderToMove">Selecteer de map om te verplaatsen</key>
<key alias="folderToCopy">Selecteer de map om te kopieren</key>
<key alias="structureBelow">naar de boomstructuur onder</key>
<key alias="allDocumentTypes">Alle Document types</key>
<key alias="allDocuments">Alle documenten</key>
<key alias="allMediaItems">Alle media items</key>
<key alias="usingThisDocument">die gebruik maken van dit document type zullen permanent verwijderd worden. Bevestig aub dat je deze ook wilt verwijderen.</key>
<key alias="usingThisMedia">die gebruik maken van dit media type zullen permanent verwijderd worden. Bevestig aub dat je deze ook wilt verwijderen.</key>
<key alias="usingThisMember">die gebruik maken van dit member type zullen permanent verwijderd worden. Bevestig aub dat je deze ook wilt verwijderen.</key>
<key alias="andAllDocuments">en alle documenten van dit type</key>
<key alias="andAllMediaItems">en alle media items van dit type</key>
<key alias="andAllMembers">en alle leden van dit type</key>
<key alias="thisEditorUpdateSettings">die gebruik maken van deze editor zullen geupdate worden met deze nieuwe instellingen</key>
<key alias="memberCanEdit">Lid kan bewerken</key>
<key alias="showOnMemberProfile">Toon in het profiel van leden</key>
<key alias="tabHasNoSortOrder">tab heeft geen sorteervolgorde</key>
</area>
<area alias="modelsBuilder">
<key alias="buildingModels">Models aan het gereneren</key>
<key alias="waitingMessage">dit kan enige tijd duren, geduld aub</key>
<key alias="modelsGenerated">Models gegenereerd</key>
<key alias="modelsGeneratedError">Models konden niet gegenereerd worden</key>
<key alias="modelsExceptionInUlog">Models generatie is mislukt, kijk in de Umbraco log voor details</key>
</area>
<area alias="templateEditor">
<key alias="alternativeField">Alternatief veld</key>
<key alias="alternativeText">Alternatieve tekst</key>
@@ -916,7 +1180,8 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
</area>
<area alias="translation">
<key alias="assignedTasks">Taken aan jou toegewezen</key>
<key alias="assignedTasksHelp"><![CDATA[Onderstaande lijst toont vertalingstaken aan jou toegewezen. Om een meer gedetailleerd overzicht te zien, met comments, klik op "Details" of de naam van de pagina. Je kan ook de pagina direct downloaden als XML door te klikken op "Download Xml".
<key alias="assignedTasksHelp"><![CDATA[Onderstaande lijst toont vertalingstaken aan jou toegewezen. Om een meer gedetailleerd overzicht te zien, met comments, klik op "Details" of de naam van de pagina.
Je kan ook de pagina direct downloaden als XML door te klikken op "Download Xml".
Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de "Sluit" knop.
]]></key>
<key alias="closeTask">Sluit taak</key>
@@ -932,18 +1197,24 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de
Dit is een geautomatiseerde mail om u op de hoogte te brengen dat document '%1%'
is aangevraagd voor vertaling naar '%5%' door %2%.
Ga naar http://%3%/Umbraco/translation/default.aspx?id=%4% om te bewerken.
Ga naar http://%3%/translation/details.aspx?id=%4% om te bewerken.
Of log in bij Umbraco om een overzicht te krijgen van al jouw vertalingen.
Een prettige dag!
Met vriendelijke groet!
Dit is een bericht van uw Content Management Systeem.
De Umbraco Robot
]]></key>
<key alias="mailSubject">[%0%] Vertaalopdracht voor %1%</key>
<key alias="noTranslators">Geen vertaal-gebruikers gevonden. Maak eerst een vertaal-gebruiker aan voordat je pagina's voor vertaling verstuurd</key>
<key alias="ownedTasks">Taken aangemaakt door jou</key>
<key alias="ownedTasksHelp"><![CDATA[De lijst hieronder toont pagina's <strong>die je aanmaakte</strong>. Om een detailweergave met opmerkingen te zien, klik op "Detail" of op de paginanaam. Je kan ook de pagina in XML-formaat downloaden door op de "Download XML"-link te klikken. Om een vertalingstaak te sluiten, klik je op de "Sluiten"-knop in detailweergave.]]></key>
<key alias="ownedTasksHelp"><![CDATA[De lijst hieronder toont pagina's <strong>die je aanmaakte</strong>.
Om een detailweergave met opmerkingen te zien, klik op "Detail" of op de paginanaam.
Je kan ook de pagina in XML-formaat downloaden door op de "Download XML"-link te klikken.
Om een vertalingstaak te sluiten, klik je op de "Sluiten"-knop in detailweergave.]]></key>
<key alias="pageHasBeenSendToTranslation">De pagina '%0%' is verstuurd voor vertaling</key>
<key alias="noLanguageSelected">Kies de taal waarin deze contetn vertaald moet worden</key>
<key alias="sendToTranslate">Stuur voor vertaling</key>
<key alias="taskAssignedBy">Toegewezen door</key>
<key alias="taskOpened">Taak geopend</key>
@@ -973,7 +1244,8 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de
<key alias="memberGroups">Ledengroepen</key>
<key alias="memberRoles">Rollen</key>
<key alias="memberTypes">Ledentypes</key>
<key alias="documentTypes">Documenttypes</key>
<key alias="documentTypes">Documenttypen</key>
<key alias="relationTypes">RelatieTypen</key>
<key alias="packager">Packages</key>
<key alias="packages">Packages</key>
<key alias="python">Python-bestanden</key>
@@ -985,6 +1257,7 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de
<key alias="stylesheets">Stylesheets</key>
<key alias="templates">Sjablonen</key>
<key alias="xslt">XSLT Bestanden</key>
<key alias="analytics">Analytics</key>
</area>
<area alias="update">
<key alias="updateAvailable">Nieuwe update beschikbaar</key>
@@ -1010,6 +1283,7 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de
<key alias="mediastartnode">Startnode in Mediabibliotheek</key>
<key alias="modules">Secties</key>
<key alias="noConsole">Blokkeer Umbraco toegang</key>
<key alias="oldPassword">Oude wachtwoord</key>
<key alias="password">Wachtwoord</key>
<key alias="resetPassword">Reset wachtwoord</key>
<key alias="passwordChanged">Je wachtwoord is veranderd!</key>
@@ -1030,10 +1304,138 @@ Om een vertalingstaak te sluiten, ga aub naar het detailoverzicht en klik op de
<key alias="usertype">Gebruikerstype</key>
<key alias="userTypes">Gebruikerstypes</key>
<key alias="writer">Auteur</key>
<key alias="translator">Vertaler</key>
<key alias="change">Wijzig</key>
<key alias="yourProfile" version="7.0">Je profiel</key>
<key alias="yourHistory" version="7.0">Je recente historie</key>
<key alias="sessionExpires" version="7.0">Sessie verloopt over</key>
</area>
<area alias="validation">
<key alias="validation">Validatie</key>
<key alias="validateAsEmail">Valideer als email</key>
<key alias="validateAsNumber">Valideer als nummer</key>
<key alias="validateAsUrl">Valideer als Url</key>
<key alias="enterCustomValidation">...of gebruik custom validatie</key>
<key alias="fieldIsMandatory">Veld is verplicht</key>
</area>
<area alias="healthcheck">
<!-- The following keys get these tokens passed in:
0: Current value
1: Recommended value
2: XPath
3: Configuration file path
-->
<key alias="checkSuccessMessage">Waarde is insteld naar the aanbevolen waarde: '%0%'.</key>
<key alias="rectifySuccessMessage">Waarde was '%1%' voor XPath '%2%' in configuratie bestand '%3%'.</key>
<key alias="checkErrorMessageDifferentExpectedValue">De verwachtte waarde voor '%2%' is '%1%' in configuratie bestand '%3%', maar is '%0%'.</key>
<key alias="checkErrorMessageUnexpectedValue">Onverwachte waarde '%0%' gevonden voor '%2%' in configuratie bestand '%3%'.</key>
<!-- The following keys get these tokens passed in:
0: Current value
1: Recommended value
-->
<key alias="customErrorsCheckSuccessMessage">Custom foutmeldingen zijn ingesteld op '%0%'.</key>
<key alias="customErrorsCheckErrorMessage">Custom foutmeldingen zijn momenteel '%0%'. Wij raden aan deze aan te passen naar '%1%' voor livegang.</key>
<key alias="customErrorsCheckRectifySuccessMessage">Custom foutmeldingen aangepast naar '%0%'.</key>
<key alias="macroErrorModeCheckSuccessMessage">Macro foutmeldingen zijn ingesteld op'%0%'.</key>
<key alias="macroErrorModeCheckErrorMessage">Macro foutmeldingen zijn ingesteld op '%0%'. Dit zal er voor zorgen dat bepaalde, of alle, pagina's van de website niet geladen kunnen worden als er errors in een Macro zitten. Corrigeren zal deze waarde aanpassen naar '%1%'.</key>
<key alias="macroErrorModeCheckRectifySuccessMessage">Macro foutmeldingen zijn aangepast naar '%0%'.</key>
<!-- The following keys get these tokens passed in:
0: Current value
1: Recommended value
2: Server version
-->
<key alias="trySkipIisCustomErrorsCheckSuccessMessage">Try Skip IIS Custom foutmeldingen is ingesteld op '%0%'. IIS versie '%1%' wordt gebruikt.</key>
<key alias="trySkipIisCustomErrorsCheckErrorMessage">Try Skip IIS Custom foutmeldingen is ingesteld op '%0%'. Het wordt voor de gebruikte IIS versie (%2%) aangeraden deze in te stellen op '%1%'.</key>
<key alias="trySkipIisCustomErrorsCheckRectifySuccessMessage">Try Skip IIS Custom foutmeldingen ingesteld op '%0%'.</key>
<!-- The following keys get predefined tokens passed in that are not all the same, like above -->
<key alias="configurationServiceFileNotFound">Het volgende bestand bestaat niet: '%0%'.</key>
<key alias="configurationServiceNodeNotFound"><![CDATA[<strong>'%0%'</strong> kon niet gevonden worden in configuratie bestand <strong>'%1%'</strong>.]]></key>
<key alias="configurationServiceError">Er is een fout opgetreden. Bekijk de log file voor de volledige fout: %0%.</key>
<key alias="xmlDataIntegrityCheckMembers">Members - Totaal XML: %0%, Totaal: %1%, Total incorrect: %2%</key>
<key alias="xmlDataIntegrityCheckMedia">Media - Totaal XML: %0%, Totaal: %1%, Total incorrect: %2%</key>
<key alias="xmlDataIntegrityCheckContent">Content - Totaal XML: %0%, Totaal gepubliceerd: %1%, Total incorrect: %2%</key>
<key alias="httpsCheckValidCertificate">Het cerficaat van de website is ongeldig.</key>
<key alias="httpsCheckInvalidCertificate">Cerficaat validatie foutmelding: '%0%'</key>
<key alias="httpsCheckInvalidUrl">Fout bij pingen van URL %0% - '%1%'</key>
<key alias="httpsCheckIsCurrentSchemeHttps">De site wordt momenteel %0% bekeken via HTTPS.</key>
<key alias="httpsCheckConfigurationRectifyNotPossible">De appSetting 'umbracoUseSSL' in web.config staat op 'false'. Indien HTTPS gebruikt wordt moet deze op 'true' staan.</key>
<key alias="httpsCheckConfigurationCheckResult">De appSetting 'umbracoUseSSL' in web.config is ingesteld op '%0%'. Cookies zijn %1% ingesteld als secure.</key>
<key alias="httpsCheckEnableHttpsError">De 'umbracoUseSSL' waarde in web.config kon niet aangepast worden. Foutmelding: %0%</key>
<!-- The following keys don't get tokens passed in -->
<key alias="httpsCheckEnableHttpsButton">HTTPS inschakelen</key>
<key alias="httpsCheckEnableHttpsDescription">Zet in de appSettings van de web.config de umbracoSSL instelling op 'true'.</key>
<key alias="httpsCheckEnableHttpsSuccess">De appSetting 'umbracoUseSSL' is nu ingesteld op 'true', cookies zullen als 'secure' worden aangemerkt.</key>
<key alias="rectifyButton">Fix</key>
<key alias="cannotRectifyShouldNotEqual">Cannot fix a check with a value comparison type of 'ShouldNotEqual'.</key>
<key alias="cannotRectifyShouldEqualWithValue">Cannot fix a check with a value comparison type of 'ShouldEqual' with a provided value.</key>
<key alias="valueToRectifyNotProvided">Value to fix check not provided.</key>
<key alias="compilationDebugCheckSuccessMessage">Debug compiliate mode staat uit.</key>
<key alias="compilationDebugCheckErrorMessage">Debug compiliate mode staat momenteel aan. Wij raden aan deze instelling uit te zetten voor livegang.</key>
<key alias="compilationDebugCheckRectifySuccessMessage">Debug compiliate mode uitgezet.</key>
<key alias="traceModeCheckSuccessMessage">Trace mode staat uit.</key>
<key alias="traceModeCheckErrorMessage">Trace mode staat momenteel aan. Wij raden aan deze instelling uit te zetten voor livegang.</key>
<key alias="traceModeCheckRectifySuccessMessage">Trace mode uitgezet.</key>
<key alias="folderPermissionsCheckMessage">Alle mappen hebben de juiste permissie-instellingen!.</key>
<!-- The following keys get these tokens passed in:
0: Comma delimitted list of failed folder paths
-->
<key alias="requiredFolderPermissionFailed"><![CDATA[De volgende bestanden moeten wijzig-rechten krijgen om Umbraco goed te laten werken: <strong>%0%</strong>.]]></key>
<key alias="optionalFolderPermissionFailed"><![CDATA[Aangeraden wordt de volgende bestanden wijzig-rechten te geven om Umbraco goed te laten werken: <strong>%0%</strong>. Als deze niet in gebruik zijn voor deze omgeving hoeft er geen actie te worden ondernomen.]]></key>
<key alias="filePermissionsCheckMessage">All files have the correct permissions set.</key>
<!-- The following keys get these tokens passed in:
0: Comma delimitted list of failed folder paths
-->
<key alias="requiredFilePermissionFailed"><![CDATA[De volgende bestanden moeten schrijf-rechten krijgen om Umbraco goed te laten werken: <strong>%0%</strong>.]]></key>
<key alias="optionalFilePermissionFailed"><![CDATA[Aangeraden wordt de volgende bestanden schrijf-rechten te geven om Umbraco goed te laten werken: <strong>%0%</strong>. Als deze niet in gebruik zijn voor deze omgeving hoeft er geen actie te worden ondernomen.]]></key>
<key alias="clickJackingCheckHeaderFound"><![CDATA[De <strong>X-Frame-Options</strong> header of meta-tag om IFRAMEing door andere websites te voorkomen is aanwezig!]]></key>
<key alias="clickJackingCheckHeaderNotFound"><![CDATA[De <strong>X-Frame-Options</strong> header of meta-tag om IFRAMEing door andere websites te voorkomen is NIET aanwezig.]]></key>
<key alias="clickJackingSetHeaderInConfig">Voorkom IFRAMEing via web.config</key>
<key alias="clickJackingSetHeaderInConfigDescription">Voegt de instelling toe aan de httpProtocol/customHeaders section in web.config om IFRAMEing door andere websites te voorkomen.</key>
<key alias="clickJackingSetHeaderInConfigSuccess">De instelling om IFRAMEing door andere websites te voorkomen is toegevoegd aan de web.config!</key>
<key alias="clickJackingSetHeaderInConfigError">Web.config kon niet aangepast worden door error: %0%</key>
<!-- The following key get these tokens passed in:
0: Comma delimitted list of headers found
-->
<key alias="excessiveHeadersFound"><![CDATA[De volgende header welke informatie tonen over de gebruikte website technologie zijn aangetroffen: <strong>%0%</strong>.]]></key>
<key alias="excessiveHeadersNotFound">Er zijn geen headeres gevonden welke informatie over de gebruikte website technologie prijsgeven!</key>
<key alias="smtpMailSettingsNotFound">In de Web.config werd system.net/mailsettings niet gevonden</key>
<key alias="smtpMailSettingsHostNotConfigured">In de Web.config sectie system.net/mailsettings is de host niet geconfigureerd.</key>
<key alias="smtpMailSettingsConnectionSuccess">SMTP instellingen zijn correct ingesteld en werken zoals verwacht.</key>
<key alias="smtpMailSettingsConnectionFail">De SMTP server geconfigureerd met host '%0%' en poort '%1%' kon niet gevonden worden. Controleer of de SMTP instellingen in Web.config file system.net/mailsettings correct zijn.</key>
<key alias="notificationEmailsCheckSuccessMessage"><![CDATA[Notificatie email is verzonden naar <strong>%0%</strong>.]]></key>
<key alias="notificationEmailsCheckErrorMessage"><![CDATA[Notificatie email staat nog steeds op de default waarde van <strong>%0%</strong>.]]></key>
</area>
<area alias="redirectUrls">
<key alias="disableUrlTracker">URL tracker uitzetten</key>
<key alias="enableUrlTracker">URL tracker aanzetten</key>
<key alias="originalUrl">Originele URL</key>
<key alias="redirectedTo">Doorgestuurd naar</key>
<key alias="noRedirects">Er zijn geen redirects</key>
<key alias="noRedirectsDescription">Er wordt automatisch een redirect aangemaakt als een gepubliceerde pagina hernoemd of verplaatst wordt.</key>
<key alias="removeButton">Verwijder</key>
<key alias="confirmRemove">Weet je zeker dat je de redirect van '%0%' naar '%1%' wilt verwijderen?</key>
<key alias="redirectRemoved">Redirect URL verwijderd.</key>
<key alias="redirectRemoveError">Fout bij verwijderen redirect URL.</key>
<key alias="confirmDisable">Weet je zeker dat je de URL tracker wilt uitzetten?</key>
<key alias="disabledConfirm">URL tracker staat nu uit.</key>
<key alias="disableError">Fout bij het uitzetten van de URL Tracker. Meer informatie kan gevonden worden in de log file.</key>
<key alias="enabledConfirm">URL tracker staat nu aan.</key>
<key alias="enableError">Fout bij het aanzetten van de URL tracker. Meer informatie kan gevonden worden in de log file.</key>
</area>
</language>
+6 -2
View File
@@ -27,6 +27,9 @@
<key alias="publish">Опубликовать</key>
<key alias="refreshNode">Обновить узлы</key>
<key alias="republish">Опубликовать весь сайт</key>
<key alias="SetPermissionsForThePage">Установить разрешения для страницы '%0%'</key>
<key alias="chooseWhereToMove">Выберите, куда переместить</key>
<key alias="toInTheTreeStructureBelow">В структуре документов ниже</key>
<key alias="restore" version="7.3.0">Восстановить</key>
<key alias="rights">Разрешения</key>
<key alias="rollback">Откатить</key>
@@ -189,7 +192,7 @@
<key alias="memberrole">Роль участника</key>
<key alias="membertype">Тип участника</key>
<key alias="noDate">Дата не указана</key>
<key alias="nodeName">Заголовок страницы</key>
<key alias="nodeName">Заголовок ссылки</key>
<key alias="notmemberof">Не является членом групп(ы)</key>
<key alias="otherElements">Свойства</key>
<key alias="parentNotPublished">Этот документ опубликован, но скрыт, потому что его родительский документ '%0%' не опубликован</key>
@@ -341,9 +344,10 @@
<key alias="viewCacheItem">Просмотр элемента кэша</key>
<key alias="createFolder">Создать папку...</key>
<key alias="relateToOriginalLabel">Связать с оригиналом</key>
<key alias="includeDescendants">Включая все дочерние</key>
<key alias="theFriendliestCommunity">Самое дружелюбное сообщество</key>
<key alias="linkToPage">Ссылка на страницу</key>
<key alias="openInNewWindow">Открывает документ по ссылке в новом окне или вкладке браузера</key>
<key alias="openInNewWindow">Открывать ссылку в новом окне или вкладке браузера</key>
<key alias="linkToMedia">Ссылка на медиа-файл</key>
<key alias="selectMedia">Выбрать медиа</key>
<key alias="selectIcon">Выбрать значок</key>
@@ -13,6 +13,7 @@
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="Application/NamespaceManager.js" PathNameAlias="UmbracoClient" Priority="0" />
<umb:JsInclude ID="JsInclude3" runat="server" FilePath="ui/jquery.js" PathNameAlias="UmbracoClient" Priority="1" />
<umb:JsInclude ID="JsInclude4" runat="server" FilePath="lib/jquery-migrate/jquery-migrate.min.js" PathNameAlias="UmbracoRoot" Priority="1" />
<umb:JsInclude ID="JsInclude6" runat="server" FilePath="ui/base2.js" PathNameAlias="UmbracoClient" Priority="1" />
<umb:JsInclude ID="JsInclude11" runat="server" FilePath="UI/knockout.js" PathNameAlias="UmbracoClient" Priority="3" />
<umb:JsInclude ID="JsInclude12" runat="server" FilePath="UI/knockout.mapping.js" PathNameAlias="UmbracoClient" Priority="4" />
+3 -2
View File
@@ -1,6 +1,6 @@
/** Executed when the application starts, binds to events and set global state */
app.run(['userService', '$log', '$rootScope', '$location', 'navigationService', 'appState', 'editorState', 'fileManager', 'assetsService', 'eventsService', '$cookies', '$templateCache',
function (userService, $log, $rootScope, $location, navigationService, appState, editorState, fileManager, assetsService, eventsService, $cookies, $templateCache) {
app.run(['userService', '$log', '$rootScope', '$location', 'navigationService', 'appState', 'editorState', 'fileManager', 'assetsService', 'eventsService', '$cookies', '$templateCache', 'localStorageService',
function (userService, $log, $rootScope, $location, navigationService, appState, editorState, fileManager, assetsService, eventsService, $cookies, $templateCache, localStorageService) {
//This sets the default jquery ajax headers to include our csrf token, we
// need to user the beforeSend method because our token changes per user/login so
@@ -13,6 +13,7 @@ app.run(['userService', '$log', '$rootScope', '$location', 'navigationService',
/** Listens for authentication and checks if our required assets are loaded, if/once they are we'll broadcast a ready event */
eventsService.on("app.authenticated", function(evt, data) {
assetsService._loadInitAssets().then(function() {
appState.setGlobalState("isReady", true);
@@ -16,7 +16,7 @@
* The main application controller
*
*/
function MainController($scope, $rootScope, $location, $routeParams, $timeout, $http, $log, appState, treeService, notificationsService, userService, navigationService, historyService, updateChecker, assetsService, eventsService, umbRequestHelper, tmhDynamicLocale) {
function MainController($scope, $rootScope, $location, $routeParams, $timeout, $http, $log, appState, treeService, notificationsService, userService, navigationService, historyService, updateChecker, assetsService, eventsService, umbRequestHelper, tmhDynamicLocale, localStorageService) {
//the null is important because we do an explicit bool check on this in the view
//the avatar is by default the umbraco logo
@@ -89,6 +89,14 @@ function MainController($scope, $rootScope, $location, $routeParams, $timeout, $
$location.path("/").search("");
historyService.removeAll();
treeService.clearCache();
//if the user changed, clearout local storage too - could contain sensitive data
localStorageService.clearAll();
}
//if this is a new login (i.e. the user entered credentials), then clear out local storage - could contain sensitive data
if (data.loginType === "credentials") {
localStorageService.clearAll();
}
//Load locale file
@@ -3395,7 +3403,7 @@ angular.module("umbraco").controller("Umbraco.Overlays.MacroPickerController", M
//used for the media picker dialog
angular.module("umbraco")
.controller("Umbraco.Overlays.MediaPickerController",
function($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, mediaTypeHelper, eventsService, treeService, $element, $timeout, $cookies, $cookieStore, localizationService) {
function ($scope, mediaResource, umbRequestHelper, entityResource, $log, mediaHelper, mediaTypeHelper, eventsService, treeService, $element, $timeout, $cookies, localStorageService, localizationService) {
if (!$scope.model.title) {
$scope.model.title = localizationService.localize("defaultdialogs_selectMedia");
@@ -3409,7 +3417,7 @@ angular.module("umbraco")
$scope.multiPicker = (dialogOptions.multiPicker && dialogOptions.multiPicker !== "0") ? true : false;
$scope.startNodeId = dialogOptions.startNodeId ? dialogOptions.startNodeId : -1;
$scope.cropSize = dialogOptions.cropSize;
$scope.lastOpenedNode = $cookieStore.get("umbLastOpenedMediaNodeId");
$scope.lastOpenedNode = localStorageService.get("umbLastOpenedMediaNodeId");
if ($scope.onlyImages) {
$scope.acceptedFileTypes = mediaHelper
.formatFileTypes(Umbraco.Sys.ServerVariables.umbracoSettings.imageFileTypes);
@@ -3527,8 +3535,7 @@ angular.module("umbraco")
});
$scope.currentFolder = folder;
// for some reason i cannot set cookies with cookieStore
document.cookie = "umbLastOpenedMediaNodeId=" + folder.id;
localStorageService.set("umbLastOpenedMediaNodeId", folder.id);
};
@@ -9084,18 +9091,24 @@ angular.module("umbraco").controller("Umbraco.Editors.Packages.DeleteController"
fields: {},
file: file
}).progress(function (evt) {
// hack: in some browsers the progress event is called after success
// this prevents the UI from going back to a uploading state
if(vm.zipFile.uploadStatus !== "done" && vm.zipFile.uploadStatus !== "error") {
// set view state to uploading
vm.state = 'uploading';
// set view state to uploading
vm.state = 'uploading';
// calculate progress in percentage
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total, 10);
// calculate progress in percentage
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total, 10);
// set percentage property on file
vm.zipFile.uploadProgress = progressPercentage;
// set percentage property on file
vm.zipFile.uploadProgress = progressPercentage;
// set uploading status on file
vm.zipFile.uploadStatus = "uploading";
// set uploading status on file
vm.zipFile.uploadStatus = "uploading";
}
}).success(function (data, status, headers, config) {
@@ -11064,7 +11077,7 @@ angular.module("umbraco")
.controller("Umbraco.PropertyEditors.GoogleMapsController",
function ($element, $rootScope, $scope, notificationsService, dialogService, assetsService, $log, $timeout) {
assetsService.loadJs('http://www.google.com/jsapi')
assetsService.loadJs('https://www.google.com/jsapi')
.then(function () {
google.load("maps", "3",
{
@@ -13274,7 +13287,8 @@ angular.module("umbraco").controller("Umbraco.PrevalueEditors.IncludePropertiesL
function activate() {
vm.itemsWithoutFolders = filterOutFolders($scope.items);
if($scope.entityType === 'media') {
//no need to make another REST/DB call if this data is not used when we are browsing the bin
if ($scope.entityType === 'media' && !vm.isRecycleBin) {
mediaTypeHelper.getAllowedImagetypes(vm.nodeId).then(function (types) {
vm.acceptedMediatypes = types;
});
@@ -13503,7 +13517,9 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie
$scope.isNew = false;
$scope.actionInProgress = false;
$scope.selection = [];
$scope.folders = [];
$scope.folders = [];
//tracks if we've already loaded the folders for the current node
var foldersLoaded = false;
$scope.listViewResultSet = {
totalPages: 0,
items: []
@@ -13718,12 +13734,13 @@ function listViewController($rootScope, $scope, $routeParams, $injector, $cookie
});
}
if ($scope.entityType === 'media') {
if (!foldersLoaded && $scope.entityType === 'media') {
//The folders aren't loaded - we only need to do this once since we're never changing node ids
mediaResource.getChildFolders($scope.contentId)
.then(function (folders) {
$scope.folders = folders;
$scope.viewLoaded = true;
foldersLoaded = true;
});
} else {
@@ -2890,7 +2890,9 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
* Retrieves all media children with types used as folders.
* Uses the convention of looking for media items with mediaTypes ending in
* *Folder so will match "Folder", "bannerFolder", "secureFolder" etc,
*
*
* NOTE: This will return a max of 500 folders, if more is required it needs to be paged
*
* ##usage
* <pre>
* mediaResource.getChildFolders(1234)
@@ -2908,14 +2910,15 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) {
parentId = -1;
}
//NOTE: This will return a max of 500 folders, if more is required it needs to be paged
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
"mediaApiBaseUrl",
"GetChildFolders",
[
{ id: parentId }
])),
{
id: parentId
})),
'Failed to retrieve child folders for media item ' + parentId);
},
+11 -5
View File
@@ -121,15 +121,20 @@ angular.module('umbraco.security.interceptor')
return promise;
}, function(originalResponse) {
// Intercept failed requests
// Make sure we have the configuration of the request (don't we always?)
var config = originalResponse.config ? originalResponse.config : {};
// Make sure we have an object for the headers of the request
var headers = config.headers ? config.headers : {};
//Here we'll check if we should ignore the error, this will be based on an original header set
var headers = originalResponse.config ? originalResponse.config.headers : {};
if (headers["x-umb-ignore-error"] === "ignore") {
//Here we'll check if we should ignore the error (either based on the original header set or the request configuration)
if (headers["x-umb-ignore-error"] === "ignore" || config.umbIgnoreErrors === true) {
//exit/ignore
return promise;
}
var filtered = _.find(requestInterceptorFilter(), function(val) {
return originalResponse.config.url.indexOf(val) > 0;
return config.url.indexOf(val) > 0;
});
if (filtered) {
return promise;
@@ -201,6 +206,7 @@ angular.module('umbraco.security.interceptor')
// We have to add the interceptor to the queue as a string because the interceptor depends upon service instances that are not available in the config block.
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.responseInterceptors.push('securityInterceptor');
}]);
}]);
})();
+15 -2
View File
@@ -4889,6 +4889,19 @@ function mediaTypeHelper(mediaTypeResource, $q) {
var mediaTypeHelperService = {
isFolderType: function(mediaEntity) {
if (!mediaEntity) {
throw "mediaEntity is null";
}
if (!mediaEntity.contentTypeAlias) {
throw "mediaEntity.contentTypeAlias is null";
}
//if you create a media type, which has an alias that ends with ...Folder then its a folder: ex: "secureFolder", "bannerFolder", "Folder"
//this is the exact same logic that is performed in MediaController.GetChildFolders
return mediaEntity.contentTypeAlias.endsWith("Folder");
},
getAllowedImagetypes: function (mediaId){
// Get All allowedTypes
@@ -8744,7 +8757,7 @@ angular.module('umbraco.services')
//when it's successful, return the user data
setCurrentUser(data);
var result = { user: data, authenticated: true, lastUserId: lastUserId };
var result = { user: data, authenticated: true, lastUserId: lastUserId, loginType: "credentials" };
//broadcast a global event
eventsService.emit("app.authenticated", result);
@@ -8772,7 +8785,7 @@ angular.module('umbraco.services')
authResource.getCurrentUser()
.then(function (data) {
var result = { user: data, authenticated: true, lastUserId: lastUserId };
var result = { user: data, authenticated: true, lastUserId: lastUserId, loginType: "implicit" };
//TODO: This is a mega backwards compatibility hack... These variables SHOULD NOT exist in the server variables
// since they are not supposed to be dynamic but I accidentally added them there in 7.1.5 IIRC so some people might
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,31 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.UserControl" %>
<%@ Import Namespace="OurUmbraco.Documentation.Busineslogic.GithubSourcePull" %>
<script runat="server">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
GetDocsButton.Click += GetDocsButton_Click;
}
protected string Status = "";
void GetDocsButton_Click(object sender, EventArgs e)
{
ZipDownloader.EnsureGitHubDocs(true);
Status = "Done!";
}
</script>
<div>
<asp:Button runat="server" ID="GetDocsButton" Text="Get Docs!!"/>
<p>
<%= Status %>
</p>
</div>
@@ -0,0 +1,32 @@
<%@ Control Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.UserControl" %>
<%@ Import Namespace="OurUmbraco.Release" %>
<script runat="server">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
GetYouTrackButton.Click += GetYouTrackButton_Click;
}
protected string Status = "";
void GetYouTrackButton_Click(object sender, EventArgs e)
{
var import = new Import();
var result = import.SaveAllToFile();
Status = result;
}
</script>
<div>
<asp:Button runat="server" ID="GetYouTrackButton" Text="Get YouTrack Releases"/>
<p>
<%= Status %>
</p>
</div>
+41 -14
View File
@@ -49,7 +49,7 @@
Umbraco web.config configuration documentation can be found here:
http://our.umbraco.org/documentation/using-umbraco/config-files/#webconfig
-->
<add key="umbracoConfigurationStatus" value="7.5.7" />
<add key="umbracoConfigurationStatus" value="7.5.11" />
<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,~/hangfire" />
<add key="umbracoContentXML" value="~/App_Data/umbraco.config" />
@@ -105,6 +105,7 @@
<add key="SpamBlockThreshold" value="90" />
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
<add key="UmbracoStarterKits" value="55E028E3-0C5B-4188-9722-7D14B4BD12C0,69E44BEB-15FF-4CEE-8B64-0A7DAE498657,0B0101F7-9394-48F3-A581-DD3F18480265" />
<add key="UmbracoStarterKitDefault" value="ced954d1-8c0f-4abe-bdda-99e7a787d052"/>
<add key="SlackChannel" value="#our-spam-reports" />
<add key="SlackToken" value="" />
@@ -115,7 +116,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="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="HangFireEnabled" value="false" />
<add key="HangFireEnabled" value="true" />
<!-- this reCaptcha key pair ONLY works on localhost and will be transformed on the build server -->
<add key="reCaptchaPublicKey" value="6LdwJQ4UAAAAAL9hZdbodu7UHh9t6rV1reGyj2nX" />
@@ -149,7 +150,7 @@
</mailSettings>
</system.net>
<system.web>
<customErrors mode="Off" defaultRedirect="/error" />
<customErrors mode="Off" defaultRedirect="/error/" />
<trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
<globalization culture="en-US" requestEncoding="UTF-8" responseEncoding="UTF-8" uiCulture="en-US" />
<httpRuntime requestValidationMode="2.0" maxRequestLength="1048576" executionTimeout="43200" enableVersionHeader="false" targetFramework="4.5" fcnMode="Single" relaxedUrlToFileSystemMapping="true" />
@@ -180,7 +181,6 @@
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="UmbracoModule" type="Umbraco.Web.UmbracoModule,umbraco" />
<add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web" /></httpModules>
<httpHandlers>
<remove verb="*" path="*.asmx" />
@@ -364,9 +364,6 @@
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web" />
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
<handlers accessPolicy="Read, Write, Script, Execute">
@@ -423,6 +420,8 @@
<customHeaders>
<add name="P3P" value="policyref=&quot;http://our.umbraco.org/w3c/p3p.xml&quot;" />
<remove name="X-Powered-By" />
<remove name="X-Frame-Options" />
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
@@ -540,6 +539,14 @@
<match url="wiki/reference/" />
<action type="Redirect" url="/Documentation/Reference/" redirectType="Permanent" appendQueryString="true" />
</rule>
<rule name="WikiRss" patternSyntax="Wildcard">
<match url="rss/wiki*" />
<action type="Redirect" url="/Documentation/" redirectType="Permanent" appendQueryString="true" />
</rule>
<rule name="Courier2ToCourier" patternSyntax="Wildcard">
<match url="projects/umbraco-pro/umbraco-courier-2" />
<action type="Redirect" url="/projects/umbraco-pro/umbraco-courier" redirectType="Permanent" appendQueryString="true" />
</rule>
<rule name="ReleasesLanding" patternSyntax="ExactMatch" stopProcessing="true">
<match url="releases" />
<action type="Redirect" url="/contribute/releases/" />
@@ -657,11 +664,31 @@
<urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
</system.webServer>
</location>
<system.diagnostics>
<trace autoflush="true" indentsize="0">
<listeners>
<add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
</listeners>
</trace>
</system.diagnostics>
<location path="repo">
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Frame-Options" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
<location path="repo_category">
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Frame-Options" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
<location path="repo_viewproject">
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Frame-Options" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
</configuration>
@@ -0,0 +1,94 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using OurUmbraco.Community.Models;
using OurUmbraco.Our.Api;
using RestSharp;
using Umbraco.Core.Cache;
using Umbraco.Core.Logging;
using Umbraco.Web.Mvc;
namespace OurUmbraco.Community.Controllers
{
public class GitHubContributorController : SurfaceController
{
/// <summary>
/// Repositories to include in the combination of contributions
/// </summary>
private readonly string[] Repositories =
{
"Umbraco-CMS",
"UmbracoDocs",
"OurUmbraco",
"Umbraco.Deploy.Contrib",
"Umbraco.Courier.Contrib",
"Umbraco.Deploy.ValueConnectors"
};
/// <summary>
/// Gets data for all GitHub contributors for all listed Umbraco repositories,
/// excluding the GitHub IDs of the HQ contributors from the text file list
/// </summary>
/// <returns></returns>
public ActionResult GitHubGetContributorsResult()
{
var model = new GitHubContributorsModel();
try
{
string configPath = Server.MapPath("~/config/githubhq.txt");
if (!System.IO.File.Exists(configPath))
{
LogHelper.Debug<GitHubContributorController>("Config file was not found: " + configPath);
return PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model);
}
string[] login = System.IO.File.ReadAllLines(configPath).Where(x => x.Trim() != "").Distinct().ToArray();
var contributors = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem<List<GitHubGlobalContributorModel>>("UmbracoGitHubContributors",
() =>
{
var githubController = new GitHubController();
var gitHubContributors = new List<GitHubContributorModel>();
foreach (var repo in Repositories)
{
var response = githubController.GetAllRepoContributors(repo);
if (response.StatusCode == HttpStatusCode.OK &&
response.ResponseStatus == ResponseStatus.Completed)
{
gitHubContributors.AddRange(response.Data);
}
else
{
LogHelper.Warn<IGitHubContributorsModel>(string.Format("Invalid HTTP response for repository {0}", repo));
}
}
var filteredContributors = gitHubContributors
.Where(g => !login.Contains(g.Author.Login))
.GroupBy(g => g.Author.Id)
.OrderByDescending(c => c.Sum(g => g.Total));
List<GitHubGlobalContributorModel> temp = new List<GitHubGlobalContributorModel>();
foreach (var group in filteredContributors)
{
temp.Add(new GitHubGlobalContributorModel(group));
}
return temp;
}, TimeSpan.FromDays(1));
model.Contributors = contributors;
}
catch (Exception ex)
{
LogHelper.Error<IGitHubContributorsModel>("Could not get GitHub Contributors", ex);
}
return PartialView("~/Views/Partials/Home/GitHubContributors.cshtml", model);
}
}
}
@@ -0,0 +1,42 @@
using System.Collections.Generic;
using System.Linq;
using OurUmbraco.Community.Models;
namespace OurUmbraco.Community.Controllers
{
public class GitHubGlobalContributorModel
{
public List<GitHubContributorModel> Items { get; set; }
public int Id
{
get { return Author.Id; }
}
public int TotalCommits
{
get { return Items.Sum(x => x.Total); }
}
public int TotalAdditions
{
get { return Items.Sum(x => x.TotalAdditions); }
}
public int TotalDeletions
{
get { return Items.Sum(x => x.TotalDeletions); }
}
public Author Author
{
get { return Items.First().Author; }
}
public GitHubGlobalContributorModel(IEnumerable<GitHubContributorModel> items)
{
Items = items.ToList();
}
}
}
@@ -0,0 +1,89 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using OurUmbraco.Community.Models;
using Skybrud.Essentials.Json.Extensions;
using Skybrud.Social.Meetup;
using Skybrud.Social.Meetup.Models.Events;
using Skybrud.Social.Meetup.Models.Groups;
using Skybrud.Social.Meetup.Responses.Events;
using Skybrud.Social.Meetup.Responses.Groups;
using Umbraco.Core.Logging;
using Umbraco.Web.Mvc;
using Umbraco.Core.Cache;
namespace OurUmbraco.Community.Controllers {
public class MeetupsController : SurfaceController {
public ActionResult GetEvents() {
MeetupEventsModel model = new MeetupEventsModel {
Items = new MeetupItem[0]
};
try {
string configPath = Server.MapPath("~/config/MeetupUmbracoGroups.txt");
if (!System.IO.File.Exists(configPath)) {
LogHelper.Debug<MeetupsController>("Config file was not found: " + configPath);
return PartialView("~/Views/Partials/Home/Meetups.cshtml", model);
}
// Get the alias (urlname) of each group from the config file
string[] aliases = System.IO.File.ReadAllLines(configPath).Where(x => x.Trim() != "").Distinct().ToArray();
model.Items =
ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem<MeetupItem[]>("UmbracoSearchedMeetups",
() => {
// Initialize a new service instance (we don't specify an API key since we're accessing public data)
MeetupService service = new MeetupService();
List<MeetupItem> items = new List<MeetupItem>();
foreach (string alias in aliases) {
try {
// Get information about the group
MeetupGroup group = service.Groups.GetGroup(alias).Body;
if (group.JObject.HasValue("next_event")) {
string nextEventId = group.JObject.GetString("next_event.id");
// Make the call to the Meetup.com API to get upcoming events
MeetupGetEventsResponse res = service.Events.GetEvents(alias);
// Get the next event(s)
MeetupEvent nextEvent = res.Body.FirstOrDefault(x => x.Id == nextEventId);
// Append the first event of the group
if (nextEvent != null) items.Add(new MeetupItem(group, nextEvent));
}
} catch (Exception ex) {
LogHelper.Error<MeetupsController>("Could not get events from meetup.com for group with alias: " + alias, ex);
}
}
return items.OrderBy(x => x.Event.Time).ToArray();
}, TimeSpan.FromMinutes(30));
} catch (Exception ex) {
LogHelper.Error<MeetupsController>("Could not get events from meetup.com", ex);
}
return PartialView("~/Views/Partials/Home/Meetups.cshtml", model);
}
}
}
@@ -2,6 +2,8 @@
using System.Configuration;
using System.Linq;
using System.Web.Mvc;
using OurUmbraco.Community.Models;
using OurUmbraco.Forum.Extensions;
using Tweetinvi;
using Tweetinvi.Models;
using Tweetinvi.Parameters;
@@ -15,49 +17,88 @@ namespace OurUmbraco.Community.Controllers
{
public class TwitterSearchController : SurfaceController
{
public ActionResult TwitterSearchResult(int numberOfResults = 6)
public ActionResult TwitterSearchResult(int numberOfResults = 6, bool adminOverview = false)
{
if (numberOfResults > 30)
var model = new TweetsModel { ShowAdminOverView = adminOverview };
var member = Members.GetCurrentMember();
if (member == null || member.IsHq() == false)
model.ShowAdminOverView = false;
if (member.IsHq() == false && numberOfResults > 30)
numberOfResults = 6;
ITweet[] filteredTweets = { };
ITweet[] filteredTweets = {};
try
{
var tweets = ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem<ITweet[]>("UmbracoSearchedTweets",
() =>
{
Auth.SetUserCredentials(ConfigurationManager.AppSettings["twitterConsumerKey"],
ConfigurationManager.AppSettings["twitterConsumerSecret"],
ConfigurationManager.AppSettings["twitterUserAccessToken"],
ConfigurationManager.AppSettings["twitterUserAccessSecret"]);
Tweetinvi.User.GetAuthenticatedUser();
var tweets =
ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem<ITweet[]>("UmbracoSearchedTweets",
() =>
{
Auth.SetUserCredentials(ConfigurationManager.AppSettings["twitterConsumerKey"],
ConfigurationManager.AppSettings["twitterConsumerSecret"],
ConfigurationManager.AppSettings["twitterUserAccessToken"],
ConfigurationManager.AppSettings["twitterUserAccessSecret"]);
Tweetinvi.User.GetAuthenticatedUser();
var searchParameter = new SearchTweetsParameters("umbraco") { SearchType = SearchResultType.Recent };
return Search.SearchTweets(searchParameter).ToArray();
var searchParameter = new SearchTweetsParameters("umbraco")
{
SearchType = SearchResultType.Recent
};
return Search.SearchTweets(searchParameter).ToArray();
}, TimeSpan.FromMinutes(2));
}, TimeSpan.FromMinutes(2));
var settingsNode = Umbraco.TypedContentAtRoot().FirstOrDefault();
if (settingsNode != null)
{
var usernameFilter = settingsNode.GetPropertyValue<string>("twitterFilterAccounts")
.ToLowerInvariant().Split(',').Where(x => x != string.Empty);
.ToLowerInvariant().Split(',').Where(x => x != string.Empty).ToArray();
var wordFilter = settingsNode.GetPropertyValue<string>("twitterFilterWords")
.ToLowerInvariant().Split(',').Where(x => x != string.Empty);
filteredTweets = tweets.Where(x =>
x.CreatedBy.UserIdentifier.ScreenName.ToLowerInvariant().ContainsAny(usernameFilter) == false
filteredTweets = tweets.Where(x =>
x.CreatedBy.UserIdentifier.ScreenName.ToLowerInvariant().ContainsAny(usernameFilter) ==
false
&& x.UserMentions.Any(m => m.ScreenName.ContainsAny(usernameFilter)) == false
&& x.Text.ToLowerInvariant().ContainsAny(wordFilter) == false)
.Take(numberOfResults)
.ToArray();
}
model.Tweets = filteredTweets;
}
catch (Exception ex)
{
LogHelper.Error<ITweet>("Could not get tweets", ex);
}
return PartialView("~/Views/Partials/Home/TwitterSearchUmbraco.cshtml", model);
}
return PartialView("~/Views/Partials/Home/TwitterSearchUmbraco.cshtml", filteredTweets);
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MarkAsSpam(string twitterHandle)
{
var redirectUrl = HttpContext.Request.UrlReferrer.AbsoluteUri;
var member = Members.GetCurrentMember();
var settingsNode = Umbraco.TypedContentAtRoot().FirstOrDefault();
if (string.IsNullOrEmpty(twitterHandle)
|| member == null
|| member.IsHq() == false
|| ModelState.IsValid == false
|| settingsNode == null)
return Redirect(redirectUrl);
var contentService = ApplicationContext.Services.ContentService;
var settingsContent = contentService.GetById(settingsNode.Id);
var twitterFilterAccountsValue = settingsContent.GetValue<string>("twitterFilterAccounts");
settingsContent.SetValue("twitterFilterAccounts", string.Format("{0},{1}", twitterFilterAccountsValue, twitterHandle));
var publishStatus = contentService.PublishWithStatus(settingsContent);
if (publishStatus.Exception == null)
LogHelper.Info<TwitterSearchController>(string.Format("Twitter handle {0} marked as spam by {1} (id: {2})", twitterHandle, member.Name, member.Id));
return Redirect(redirectUrl);
}
}
}
@@ -0,0 +1,10 @@
using System.Collections.Generic;
using OurUmbraco.Community.Controllers;
namespace OurUmbraco.Community.Models
{
public class GitHubContributorsModel : IGitHubContributorsModel
{
public List<GitHubGlobalContributorModel> Contributors { get; set; }
}
}
@@ -0,0 +1,117 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace OurUmbraco.Community.Models
{
[DataContract]
public class GitHubContributorModel : IGitHubContributorModel
{
private List<Week> _weeks;
public int Total { get; set; }
public int TotalAdditions { get; set; }
public int TotalDeletions { get; set; }
[DataMember(Name = "weeks")]
public List<Week> Weeks
{
get { return _weeks; }
set
{
_weeks = value;
int totalAdditions = 0;
int totalDeletions = 0;
foreach (var week in _weeks)
{
totalDeletions += week.D;
totalAdditions += week.A;
}
TotalAdditions = totalAdditions;
TotalDeletions = totalDeletions;
}
}
public Author Author { get; set; }
}
[DataContract]
public class Week
{
/// <summary>
/// Timestamp
/// </summary>
public int W { get; set; }
/// <summary>
/// Additions
/// </summary>
public int A { get; set; }
/// <summary>
/// Deletions
/// </summary>
public int D { get; set; }
/// <summary>
/// Commits
/// </summary>
public int C { get; set; }
}
[DataContract]
public class Author
{
public string Login { get; set; }
public int Id { get; set; }
[DataMember(Name = "avatar_url")]
public string AvatarUrl { get; set; }
[DataMember(Name = "gravatar_id")]
public string GravatarId { get; set; }
public string Url { get; set; }
[DataMember(Name = "html_url")]
public string HtmlUrl { get; set; }
[DataMember(Name = "followers_url")]
public string FollowersUrl { get; set; }
[DataMember(Name = "following_url")]
public string FollowingsUrl { get; set; }
[DataMember(Name = "gists_url")]
public string GistsUrl { get; set; }
[DataMember(Name = "starred_url")]
public string StarredUrl { get; set; }
[DataMember(Name = "subscriptions_url")]
public string SubscriptionsUrl { get; set; }
[DataMember(Name = "organizations_url")]
public string OrganizationsUrl { get; set; }
[DataMember(Name = "repos_url")]
public string ReposUrl { get; set; }
[DataMember(Name = "events_url")]
public string EventsUrl { get; set; }
[DataMember(Name = "received_events_url")]
public string ReceivedEventsUrl { get; set; }
public string Type { get; set; }
[DataMember(Name = "site_admin")]
public bool SiteAdmin { get; set; }
}
}
@@ -0,0 +1,6 @@
namespace OurUmbraco.Community.Models
{
public interface IGitHubContributorModel
{
}
}
@@ -0,0 +1,6 @@
namespace OurUmbraco.Community.Models
{
public interface IGitHubContributorsModel
{
}
}
@@ -0,0 +1,9 @@
namespace OurUmbraco.Community.Models {
public class MeetupEventsModel {
public MeetupItem[] Items { get; set; }
}
}
+24
View File
@@ -0,0 +1,24 @@
using Skybrud.Essentials.Locations;
using Skybrud.Social.Meetup.Models.Events;
using Skybrud.Social.Meetup.Models.Groups;
namespace OurUmbraco.Community.Models {
public class MeetupItem {
public MeetupGroup Group { get; set; }
public MeetupEvent Event { get; set; }
public ILocation Location {
get { return Event.HasVenue ? (ILocation) Event.Venue : Group; }
}
public MeetupItem(MeetupGroup group, MeetupEvent ev) {
Group = group;
Event = ev;
}
}
}
@@ -0,0 +1,10 @@
using Tweetinvi.Models;
namespace OurUmbraco.Community.Models
{
public class TweetsModel
{
public ITweet[] Tweets { get; set; }
public bool ShowAdminOverView { get; set; }
}
}

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