318 Commits

Author SHA1 Message Date
Shannon d5b0abd1ae fixing search 2017-06-27 10:42:37 +10:00
Niels Hartvig 81ba5bd022 Merge pull request #118 from bjarnef/dev-OUR-451-update
Update Fancybox to latest v3
2017-06-26 14:57:38 +02:00
Bjarne Fyrstenborg 96a3ca71a7 Update Fancybox to latest v3 2017-06-23 17:30:45 +02:00
Niels Hartvig a8e253553a Removes people with 0 contributions from list 2017-06-23 13:16:59 +02:00
Niels Hartvig 91280b18f6 Fix from Pull Request #84 2017-06-23 12:59:02 +02:00
Niels Hartvig fbb8ef1ba0 Merge pull request #100 from stvnhrlnd/OUR-441
Our 441
2017-06-23 12:03:02 +02:00
Niels Hartvig 3f46d94a93 Merge branch 'naepalm-feature-icon-size-tweaks' 2017-06-23 11:50:56 +02:00
Niels Hartvig 161fcc7f01 Updates PR with bjarnef's review comments 2017-06-23 11:50:34 +02:00
Niels Hartvig 5e2cb68299 Merge branch 'feature-icon-size-tweaks' of https://github.com/naepalm/OurUmbraco into naepalm-feature-icon-size-tweaks 2017-06-23 11:28:29 +02:00
Niels Hartvig e6a5b59ac6 Merge pull request #117 from umbraco/temp-OUR-456
Removes RTs from twitter feed
2017-06-23 11:26:43 +02:00
Niels Hartvig 2ffa61564c Removes RTs from twitter feed 2017-06-23 11:03:06 +02:00
Niels Hartvig a1d48afeca Merge pull request #106 from bjarnef/dev-OUR-451
Update to FancyBox v3
2017-06-23 10:55:13 +02:00
Niels Hartvig a51e57737b Merge branch 'bjarnef-dev-githubfilecache' 2017-06-23 10:48:42 +02:00
Niels Hartvig 1c8fcef754 Removing throwing error upon github api not returning 200
(we already log it and the Accepted status with empty data set is
(hopefully) a throttle issue)
2017-06-23 10:47:50 +02:00
Niels Hartvig ab4ca0015e Merge with master 2017-06-23 10:38:52 +02:00
Niels Hartvig f9014d649b Fixes issue with contrib not counting commits but additions+deletions 2017-06-23 10:09:04 +02:00
hartvig adf67fd89f Merge pull request #116 from Weegy/GitGubContributors
Git gub contributors
2017-06-23 08:54:03 +02:00
Sebastiaan Janssen 805709a91b Set frontend auth cookie to be sent over secure channel only 2017-06-23 08:22:44 +02:00
Marcel Wege 40a6aaa1a8 foreach to Linq.SUM 2017-06-22 17:29:57 +02:00
Marcel Wege 5e51dad445 GitHubContributors 2017-06-22 16:56:35 +02:00
hartvig f2d9cc0c0b Merge pull request #110 from emmagarland/githubcontributors
Github contributors
2017-06-22 14:43:45 +02:00
Niels Hartvig a40f8f9a28 Fixes cache setting 2017-06-22 14:39:38 +02:00
Niels Hartvig 355c4184ef Update github list to only include people from the last 12 months 2017-06-22 14:37:32 +02:00
Sebastiaan Janssen 50bdd7647a Redirect docs for products to Add-on 2017-06-22 10:16:14 +02:00
hartvig 47c85e633b Adding umbLeeds to meetup list 2017-06-19 15:31:34 +02:00
Sebastiaan Janssen f82cda981c Whitelist branches to get the documentation from and make it a little bit safer (don't start with deleting everything until we're pretty sure it's going to be rebuilt correctly afterwards). 2017-06-13 13:35:55 +02:00
Sebastiaan Janssen aded9ec437 Fixing docs 2017-06-13 10:17:45 +02:00
Shannon bdcad7665f fixes string interpolation 2017-06-07 08:34:12 +02:00
Per Ploug 850b61fc4f Merge pull request #114 from umbraco/lesson-documentation-controller
remove dollars
2017-06-07 08:04:30 +02:00
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
Bjarne Fyrstenborg 1ea05d8107 Write contributors to json file and use file cached disk value 2017-06-06 16:27:21 +02:00
Emma Garland 60b7347586 Updated contributions to commits 2017-06-05 20:55:12 +01:00
Emma Garland b35d45bf31 Updated contribution link 2017-06-05 20:38:26 +01: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
Bjarne Fyrstenborg e3c52baf3a Update to FancyBox v3 2017-05-15 19:12:35 +02: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
Janae Cram 0cef4124db Fixes issue #OUR-449. 2017-05-05 13:13:43 -07: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
Steven 87847769ce Update forum partial
Show next page link when current page is less than the total number of pages. Keeps pagination consistent with projects list.
2017-03-04 15:43:46 +00:00
Steven 49c50046c9 Update search JavaScript
Reset page number to 1 when search filters are changed.
2017-03-04 15:11:22 +00:00
Steven c93e4d1e2d Update topic service and forum partial to fix pagination issue
Add new parameters to count method for unsolved and no reply filters. Update view to pass in these parameters.
2017-03-04 14:50:46 +00:00
Steven 686e3deb6c Update forum pagination links
Preserve query string parameters in pagination links so that topic filters do not get reset when switching between pages.
2017-03-04 14:23:19 +00: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
Sebastiaan Janssen fe254ea99f Merge branch 'master' into move-masterpages-to-views
# Conflicts:
#	.gitignore
#	OurUmbraco.Site/OurUmbraco.Site.csproj
#	OurUmbraco.Site/Views/MacroPartials/Members/ForgotPassword.cshtml
#	OurUmbraco.Site/Views/Partials/Members/ForgotPassword.cshtml
#	OurUmbraco.Site/Views/Partials/Members/Login.cshtml
#	OurUmbraco.Site/Views/Search/Search.aspx.cs
#	OurUmbraco.Site/config/imageprocessor/cache.config
#	OurUmbraco.Site/masterpages/Community.master
#	OurUmbraco.Site/masterpages/ReleaseProgress.master
#	OurUmbraco.Site/masterpages/Repository/Projects.master
#	OurUmbraco.Site/masterpages/popular.master
#	OurUmbraco/Our/Controllers/LoginController.cs
#	OurUmbraco/Our/MigrationsHandler.cs
#	OurUmbraco/Our/usercontrols/FileDownloadProxy.ascx.cs
#	OurUmbraco/OurUmbraco.csproj
#	OurUmbraco/packages.config
2017-01-21 20:29:29 +01:00
Sebastiaan Janssen 4054ed9c30 More merge fixing 2017-01-21 20:08:39 +01:00
Sebastiaan Janssen 1c63409ce5 More merge fixing 2017-01-21 19:59:36 +01:00
Sebastiaan Janssen 7ba2060238 More merge fixing 2017-01-21 19:52:20 +01:00
Sebastiaan Janssen b3b01021d7 Fix merge errors 2017-01-21 19:16:11 +01:00
Sebastiaan Janssen e8565650e4 Merge branch 'master' into move-masterpages-to-views
# Conflicts:
#	.gitignore
#	OurUmbraco.Site/OurUmbraco.Site.csproj
#	OurUmbraco.Site/Views/MacroPartials/Members/ForgotPassword.cshtml
#	OurUmbraco.Site/Views/Partials/Members/ForgotPassword.cshtml
#	OurUmbraco.Site/Views/Partials/Members/Login.cshtml
#	OurUmbraco.Site/Views/Search/Search.aspx.cs
#	OurUmbraco.Site/Views/Web.config
#	OurUmbraco.Site/config/ClientDependency.config
#	OurUmbraco.Site/config/Dashboard.config
#	OurUmbraco.Site/config/imageprocessor/cache.config
#	OurUmbraco.Site/masterpages/Community.master
#	OurUmbraco.Site/masterpages/ReleaseProgress.master
#	OurUmbraco.Site/masterpages/Repository/Projects.master
#	OurUmbraco.Site/masterpages/popular.master
#	OurUmbraco.Site/packages.config
#	OurUmbraco/Our/Controllers/LoginController.cs
#	OurUmbraco/Our/MigrationsHandler.cs
#	OurUmbraco/OurUmbraco.csproj
#	OurUmbraco/packages.config
2017-01-21 18:47:09 +01:00
Sebastiaan Janssen fd12775e86 Upgrade to 7.5.7 2017-01-21 17:30:32 +01:00
Sebastiaan Janssen d11559a25c Actually use the global error filter 2017-01-21 16:04:22 +01:00
Sebastiaan Janssen 589ef5856d Adds ApplicationInsights to web.template.config 2017-01-21 15:08:31 +01:00
Sebastiaan Janssen d4a4c43383 Update Examine and Image Processor 2017-01-21 14:46:40 +01:00
Sebastiaan Janssen edde33de47 Adds ApplicationInsights 2017-01-21 14:21:28 +01:00
Sebastiaan Janssen 705b8ec6a6 Use more memory efficient StripHtml method 2017-01-17 18:58:53 +01:00
Sebastiaan Janssen a9435022d5 Update to the correct dll versions of 7.5.7 2017-01-10 22:41:42 +01:00
Sebastiaan Janssen 3db55ad139 Also update class lib project to 7.5.7 2017-01-10 21:37:28 +01:00
Sebastiaan Janssen d140fa49c1 web.template.config needs to have the correct version in it 2017-01-10 14:34:45 +01:00
Sebastiaan Janssen e45b66fb80 Upgrade to 7.5.7 2017-01-10 08:03:51 +01:00
Sebastiaan Janssen 3507f37d74 Remove 301 URL tracker 2017-01-08 13:25:06 +01:00
Sebastiaan Janssen b029976f54 Don't put javascript in the middle of the page 2017-01-08 12:06:35 +01:00
Sebastiaan Janssen 17c9e49341 Finally fixing the real cause for the "No node exists with id '0'" error 2017-01-08 11:05:14 +01:00
Sebastiaan Janssen 620e047b6f Prevent SQLi attack from DOSing the site 2017-01-08 10:45:47 +01:00
Sebastiaan Janssen f680cdcee2 Make sure Twitter avatars are loaded over https to prevent mixed-content warnings 2017-01-07 16:08:14 +01:00
Sebastiaan Janssen 13bfa46c01 Don't make the twitter searcher easy to alter
Get the twitter filters from the settings on the home node
Makes latest forum activity on home async too
2017-01-07 13:18:50 +01:00
Sebastiaan Janssen f8be8641f7 Get Twitter search results into the page by async 2017-01-07 12:00:24 +01:00
Sebastiaan Janssen 01a33d883c Always do a TryParse on user input, people will be changing the querystring 2017-01-07 11:58:29 +01:00
Sebastiaan Janssen e3eaff1edf Don't attempt to create an image object from a URL 2017-01-06 16:22:05 +01:00
Sebastiaan Janssen 1c71708c5f Make it a bit more safe and do all logic in the try-catch block 2017-01-06 16:15:40 +01:00
Sebastiaan Janssen 1b12cb345b Update because of new version of json.net 2017-01-06 16:09:02 +01:00
Sebastiaan Janssen 19ffe50215 Add Twitter search for "umbraco" to community home 2017-01-06 15:55:17 +01:00
Sebastiaan Janssen 30add3077b Logs about fileId = 0 should really clear up now 2017-01-02 16:03:39 +01:00
Sebastiaan Janssen 9ef5c88bfa These file should not load but somehow there's errors about them in the log 2017-01-01 13:28:21 +01:00
Sebastiaan Janssen dd00a5d202 Hopefully fix some null reference errors 2017-01-01 13:22:49 +01:00
Sebastiaan Janssen 4b49b0d52d Only show screenshots for items that are actually images 2017-01-01 13:13:02 +01:00
Sebastiaan Janssen c50775d788 Suppress some errors that don't need attention 2016-12-31 14:51:37 +01:00
Sebastiaan Janssen 3160a81b68 Revert "These file should not load but somehow there's errors about them in the log"
This reverts commit 6dab6dc9ca.

They're use in the old package repo for older umbraco installs.
2016-12-30 12:13:36 +01:00
Sebastiaan Janssen b5dcb8704f Get Gravatar over https 2016-12-30 12:08:47 +01:00
Sebastiaan Janssen 070e26f984 Don't allow a "-" in the query, it throws errors 2016-12-30 12:06:58 +01:00
Sebastiaan Janssen 77fff6978f Lowercase the query so "AND" and "OR" don't throw exceptions 2016-12-30 11:36:00 +01:00
Sebastiaan Janssen 57613b8a75 Not sure what exact exception we get here 2016-12-30 11:27:41 +01:00
Sebastiaan Janssen b0c15d2841 Fixed null reference error 2016-12-30 11:24:27 +01:00
Sebastiaan Janssen 229a1a5d91 Attempt to debug a recurring, mysterious null reference error 2016-12-30 11:23:07 +01:00
Sebastiaan Janssen 6dab6dc9ca These file should not load but somehow there's errors about them in the log 2016-12-30 11:12:59 +01:00
Sebastiaan Janssen a79b55e66b If the Id passed in through the request is not a valid int, no need to do anything 2016-12-29 14:07:32 +01:00
Sebastiaan Janssen fe8242c26b Don't try find avatar locally when path is a url
No longer need ImageGen
2016-12-29 14:00:48 +01:00
Sebastiaan Janssen bc739d8b44 Fixes missing extension method being used 2016-12-29 13:56:42 +01:00
Sebastiaan Janssen 42b7d25838 Rename Courier 2 to Courier 2016-12-21 15:07:06 +01:00
Sebastiaan Janssen 885f4ff836 Make sure not to output X-Frame-Options=SAMEORIGIN for the package repo 2016-12-14 09:30:38 +01:00
Sebastiaan Janssen 6e1797537f Updates Login and ForgotPassword to be MVC and have a Captcha 2016-12-07 18:50:56 +01:00
Sebastiaan Janssen d5761dbcd1 Restrict number of characters in signup fields to prevent database errors ("string would be truncated") 2016-12-07 18:02:52 +01:00
Sebastiaan Janssen 9707c06d1b Merge remote-tracking branch 'origin/temp-register' 2016-12-07 17:26:25 +01:00
Sebastiaan Janssen 8040e55a87 Add reCaptcha for registration 2016-12-07 17:26:06 +01:00
Sebastiaan Janssen 755281570b Upgrade to Umbraco 7.5.6 2016-12-07 17:25:12 +01:00
Stephan 78c327e3f3 Prevent rogue registrations from crashing db 2016-12-07 17:02:14 +01:00
Sebastiaan Janssen 1e5a959f25 7.5.5 upgrade was OK after all 2016-12-07 13:48:36 +01:00
Sebastiaan Janssen e1529e7f8f Html Agility Pack binding redirect missing 2016-12-07 13:31:04 +01:00
Sebastiaan Janssen 47123a7d0a Revert "Upgrade to Umbraco 7.5.5"
This reverts commit a0f27739b7.
2016-12-07 12:59:03 +01:00
Sebastiaan Janssen a0f27739b7 Upgrade to Umbraco 7.5.5 2016-12-07 11:57:20 +01:00
Sebastiaan Janssen c806b10f95 Upgrade to Umbraco 7.5.5 2016-12-07 11:43:50 +01:00
Sebastiaan Janssen a66a6e2f63 Replace all UmbracoContext.Current.Application with ApplicationContext.Current UmbracoContext.Current == is based on a web request, if any code executes on a background thread or non-request thread then UmbracoContext.Current is null! 2016-11-27 13:45:03 +01:00
Sebastiaan Janssen 1b362dd1cb Merge branch 'master' into move-masterpages-to-views
# Conflicts:
#	OurUmbraco.Site/OurUmbraco.Site.csproj
#	OurUmbraco.Site/masterpages/UmbracoMVP2011.master
#	OurUmbraco/Our/MigrationsHandler.cs
#	OurUmbraco/OurUmbraco.csproj
2016-11-27 13:38:53 +01:00
Sebastiaan Janssen 93474811f1 Replace all UmbracoContext.Current.Application with ApplicationContext.Current
UmbracoContext.Current == is based on a web request, if any code executes on a background thread or non-request thread then UmbracoContext.Current is null!
2016-11-25 21:04:49 +01:00
Sebastiaan Janssen 6f50fad596 Update all SqlHelper instanced to use the umbraco.Businesslogic version and wrapped them all in usings where necessary 2016-11-25 20:54:32 +01:00
Sebastiaan Janssen 538834dcc3 Update all SqlHelper instanced to use the umbraco.Businesslogic version and wrapped them all in usings where necessary 2016-11-25 20:49:30 +01:00
Sebastiaan Janssen 389ddaabb7 Disable Hangfire to see if that's causing the memory issues 2016-11-08 11:35:48 +01:00
Sebastiaan Janssen c7d2d53902 Get the email and name differently 2016-11-07 22:38:45 +01:00
Sebastiaan Janssen 367a98be56 Hangfire wasn't too happy with System.Net.MailAddress 2016-11-07 15:35:00 +01:00
Sebastiaan Janssen 2128fb883a Refactor MarkAsSolutionReminder to be a bit more efficient 2016-11-07 12:36:28 +01:00
Sebastiaan Janssen efa0659742 Merge branch 'refs/heads/master' into move-masterpages-to-views
# Conflicts:
#	.gitignore
#	OurUmbraco.Client/package.json
#	OurUmbraco.Site/config/Dashboard.config
#	OurUmbraco.Site/masterpages/Release.master
#	OurUmbraco.Site/usercontrols/Deli/Package/Editor.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Complete.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Details.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Files.ascx
#	OurUmbraco.Site/usercontrols/Deli/Package/Steps/Screenshots.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/FileDownloadProxy.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectCollabRequest.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectContributors.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectEditor.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectFileUpload.ascx
#	OurUmbraco.Site/usercontrols/our.umbraco.org/ProjectForums.ascx
#	OurUmbraco/Our/MigrationsHandler.cs
#	OurUmbraco/OurUmbraco.csproj
#	build/BuildClientFiles.bat
2016-11-07 08:45:46 +01:00
Sebastiaan Janssen 729da39c87 Enable sending of mail 2016-10-31 13:39:14 +01:00
Sebastiaan Janssen 7e82ea86ec Little refactor and bugfix 2016-10-30 12:47:41 +01:00
Sebastiaan Janssen ddac31b8bc Ignore Hangfire route so Umbraco doesn't pick it up 2016-10-30 12:13:27 +01:00
Sebastiaan Janssen 491b5527ae Test solution reminder notification 2016-10-30 11:57:19 +01:00
Sebastiaan Janssen e63a9d4b16 Move docs from UaaS to UCloud 2016-10-27 21:11:00 +02:00
Sebastiaan Janssen 6dac0ad4e8 OUR-426 Rename Umbraco as a Service forum to Umbraco Cloud forum
#OUR-426 Fixed
2016-10-27 21:01:52 +02:00
Sebastiaan Janssen 19a737a770 OUR-424 Update "works on UaaS" to "works on Umbraco Cloud"
#OUR-424 Fixed
2016-10-27 20:42:21 +02:00
Sebastiaan Janssen 0208dd0d30 Merge branch 'refs/heads/temp-new-node' into move-masterpages-to-views 2016-09-22 12:54:32 +02:00
Sebastiaan Janssen 3f218e2a57 Don't try to copy non-existent ascx files 2016-09-18 16:39:12 +02:00
Sebastiaan Janssen d9b3c061f0 Delete masterpages and usercontrols from the web directory 2016-09-18 16:26:27 +02:00
Sebastiaan Janssen 18540e1c63 exclude/reinclude some files to make sure they deploy 2016-09-18 16:14:24 +02:00
Sebastiaan Janssen b3386c1048 Replace backoffice usercontrols 2016-09-18 15:59:44 +02:00
Sebastiaan Janssen 205daf1d15 Update topic RSS page 2016-09-18 15:14:54 +02:00
Sebastiaan Janssen 34a328174c Rename file that breaks build on TeamCity 2016-09-18 13:41:58 +02:00
Sebastiaan Janssen 27f88dfb80 Fix detection of npm folder 2016-09-18 12:44:10 +02:00
Sebastiaan Janssen 252a9015dc Detect if npm is already there and don't download it again 2016-09-18 12:20:42 +02:00
Sebastiaan Janssen 166007c668 Use node 4.5 for building 2016-09-18 12:12:52 +02:00
Sebastiaan Janssen f7878c3e18 Small corrections 2016-09-11 21:09:35 +02:00
Sebastiaan Janssen 8e1c62059d Small corrections 2016-09-11 21:02:46 +02:00
Sebastiaan Janssen d1d10ff585 Fixed up/simplified some of "Edit files" and added screenshots and "project complete" 2016-09-11 20:47:48 +02:00
Sebastiaan Janssen 6c5d2ff92f No more yellow background now that no more masterpages are being used 2016-09-11 16:35:47 +02:00
Sebastiaan Janssen b0a3b770e3 Move file package uploads to MVC 2016-09-11 16:34:29 +02:00
Sebastiaan Janssen a077481678 Rename all other old masterpages to make sure nothing has been missed 2016-09-11 12:58:06 +02:00
Sebastiaan Janssen ea0cf71d2c Move ReleaseCompare to MVC 2016-09-11 12:57:30 +02:00
Sebastiaan Janssen 26e2c56424 Move old package repo to MVC 2016-09-11 12:56:28 +02:00
Sebastiaan Janssen 8accc7b73d Rename Layout to Master 2016-09-11 12:02:21 +02:00
Sebastiaan Janssen e0bea19825 Move FileDownload to MVC 2016-09-11 11:54:34 +02:00
Sebastiaan Janssen c8aa24964e Bye Webforms! 2016-09-11 11:49:59 +02:00
Sebastiaan Janssen 8268cfb10c Rename Layout to Master 2016-09-11 11:48:04 +02:00
Sebastiaan Janssen 862be4bb14 Move public member profile to MVC 2016-09-11 11:45:44 +02:00
Sebastiaan Janssen 6222b47b9b Update all the "RSS" pages 2016-09-11 11:45:20 +02:00
Sebastiaan Janssen 81105a6707 Rename master to find whatever else is not moved yet 2016-09-11 11:44:43 +02:00
Sebastiaan Janssen 47dd314ef3 Move forum topic to MVC 2016-09-11 11:43:56 +02:00
Sebastiaan Janssen 3332d80796 Move RSS feeds over to MVC 2016-09-10 15:42:02 +02:00
Sebastiaan Janssen d7e52fb645 ReleaseDownload moved to MVC 2016-09-10 15:18:13 +02:00
Sebastiaan Janssen 2d9d5d6072 Reverts some changes made for managing projects, we already had this one working in views instead of usercontrols 2016-09-10 15:17:26 +02:00
Sebastiaan Janssen 20c4d973eb Merge branch 'refs/heads/master' into move-masterpages-to-views 2016-09-10 14:11:04 +02:00
Sebastiaan Janssen f66d032ddd Wiki is gone 2016-09-10 14:10:51 +02:00
Sebastiaan Janssen dda814805e Adds list of "My projects" and a start into being able to edit them 2016-09-09 16:18:07 +02:00
Sebastiaan Janssen da9fb277ce Rename some more obsolete user controls 2016-09-07 15:22:40 +02:00
Sebastiaan Janssen 1b22054b4c Rename some more obsolete user controls 2016-09-07 08:42:01 +02:00
Sebastiaan Janssen 0b42afa893 Renaming items that have been converted 2016-09-07 08:34:01 +02:00
Sebastiaan Janssen ed7ef6bf07 Implements forgot password 2016-09-07 08:30:41 +02:00
Sebastiaan Janssen f1d37c0407 Styling the login page 2016-09-07 08:08:08 +02:00
Sebastiaan Janssen fb0bb7f3ec Use new login form 2016-09-06 19:57:47 +02:00
Sebastiaan Janssen a37e33c9c2 Merge branch 'refs/heads/master' into move-masterpages-to-views 2016-09-06 15:52:24 +02:00
Sebastiaan Janssen b78d28244c Fixes package list not returning any restults 2016-09-06 10:39:32 +02:00
Sebastiaan Janssen d16e35922a Renaming templates that are done 2016-09-05 17:55:00 +02:00
Sebastiaan Janssen 204ccc28a5 Adds roadmap pages 2016-09-05 17:48:16 +02:00
Sebastiaan Janssen f87caab388 Make it possible to hide the search page from navigation 2016-09-05 17:47:42 +02:00
Sebastiaan Janssen 985b02c49c Adds contribute and textpage pages 2016-09-05 17:29:38 +02:00
Sebastiaan Janssen c9eedfcd56 Merge branch 'refs/heads/master' into move-masterpages-to-views 2016-09-05 17:09:28 +02:00
Sebastiaan Janssen e8bce6ab10 Move to use CDF wherever possible 2016-09-05 00:30:02 +02:00
Sebastiaan Janssen eca5122d1c Adds release and download pages 2016-09-05 00:29:42 +02:00
Sebastiaan Janssen b2880f2b28 Fix SearchFilters not adding "NOT" filters 2016-09-04 20:11:57 +02:00
Sebastiaan Janssen b76dfce24e Replace custom search aspx with a regular surfacecontroller 2016-09-04 20:11:30 +02:00
Sebastiaan Janssen 117c2936cf Fix for "/Documentation/" (with upper case D) not being replaced 2016-09-04 17:35:04 +02:00
Sebastiaan Janssen c736e9553b Adds documentation overview and details pages 2016-09-04 17:34:30 +02:00
Sebastiaan Janssen ac80ebd124 Adds project overview and detail layout 2016-09-04 17:33:58 +02:00
Sebastiaan Janssen 0b950089f0 Adds forum overview layout 2016-09-04 17:01:10 +02:00
Sebastiaan Janssen dcd1917189 Creates the layout and adds the community view - background is yellow on purpose so we can see it's actually using the MVC views 2016-09-04 17:00:36 +02:00
545 changed files with 83167 additions and 85484 deletions
+5 -1
View File
@@ -55,7 +55,7 @@ OurUmbraco.Site/usercontrols/Deli/
OurUmbraco.Site/App_Data/mail/
OurUmbraco.Client/build/assets/
OurUmbraco.Client/node_modules/
npm-debug.log
npm-debug.log
OurUmbraco.Site/[Ww]eb.config
OurUmbraco.Site/[Aa]ssets/css/style.min.css
OurUmbraco.Site/[Aa]ssets/js/app.min.js
@@ -63,3 +63,7 @@ OurUmbraco.Site/[Aa]ssets/js/app.min.js
OurUmbraco.Site/App_Data/migrations/*.txt
OurUmbraco.Site/apidocs/
OurUmbraco.Site/App_Data/Documentation/
OurUmbraco.Site/App_Data/NotificationTest/
build/tools/node*
wwwcache/
build/toolsnode.js.*/
+3 -3
View File
@@ -1,4 +1,4 @@
<!doctype html>
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
@@ -1104,8 +1104,8 @@ namespace TestProject.Controllers
<option class="features" value="1150">our.umb dev forum - Features</option>
<option class="general" value="5668">Core - General</option>
<option class="4.1feedback" value="5669">Core - 4.1 feedback</option>
<option class="generalquestions" value="73967">Umbraco as a Service - General Questions</option>
<option class="issues" value="73968">Umbraco as a Service - Issues</option>
<option class="generalquestions" value="73967">Umbraco Cloud - General Questions</option>
<option class="issues" value="73968">Umbraco Cloud - Issues</option>
</select>
</div>
+3 -3
View File
@@ -1,4 +1,4 @@
<!doctype html>
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
@@ -624,8 +624,8 @@ grunt</pre>
<div class="package-compatibility-versions">
<div class="versions">
<span class="smiley joyous">Umbraco as a Service (Works)</span>
<span class="smiley untested">Umbraco as a Service (Not working yet)</span>
<span class="smiley joyous">Umbraco Cloud (Works)</span>
<span class="smiley untested">Umbraco Cloud (Not working yet)</span>
<span class="smiley untested"> 7.2.x (untested)</span>
<span class="smiley happy"> 7.1.x (91%)</span>
<span class="smiley joyous"> 7.0.x (100%)</span>
+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"
+3 -2
View File
@@ -62,7 +62,7 @@ function GetSearchFilters(cssClass) {
}
var forumId = $('#selectCategory').val();
if(forumId !== undefined) {
if(forumId) {
forumId = forumId.replace(/([A-Za-z])\w+/g, "");
}
@@ -365,7 +365,8 @@ $('#search-options input[type=checkbox]').click(function () {
newUri = updateQueryString("order", orderValue, window.location.href);
}
} else {
newUri = updateQueryString(this.name, this.checked, window.location.href);
newUri = updateQueryString(this.name, this.checked, window.location.href);
newUri = updateQueryString("page", 1, newUri);
}
console.log(newUri);
window.location = newUri;
@@ -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;
+171 -171
View File
@@ -1,174 +1,174 @@
body.packages {
nav {
h3 {
&:hover {
opacity: .8;
}
}
h4 {
opacity: .7;
margin: .5rem 0 .5rem;
}
}
li {
h3 {
opacity: .5;
}
&.open, &.active {
h3, a {
opacity: 1;
color: #000 !important;
}
}
&.active > ul {
max-height: 100%;
}
}
}
.packages-content {
.search-big {
margin-bottom: 0;
margin-top: 20px;
}
h1 {
margin: 1em 0 10px;
font-size: 2.1rem;
}
.package {
margin-bottom: 15px;
padding: 20px;
transition: all .1s linear;
cursor: pointer;
position: relative;
overflow: hidden;
border-radius: 3px;
border: 1px solid #e9e9e9;
&:hover {
@include box-shadow(2);
.icon {
transform: scale(1.1);
}
}
}
.box {
border: none;
border-bottom: 1px solid whitesmoke;
width: 100%;
body.packages {
nav {
h3 {
&:hover {
opacity: .8;
}
}
h4 {
opacity: .7;
margin: .5rem 0 .5rem;
}
}
li {
h3 {
opacity: .5;
}
&.open, &.active {
h3, a {
opacity: 1;
color: #000 !important;
}
}
&.active > ul {
max-height: 100%;
}
}
}
.packages-content {
.search-big {
margin-bottom: 0;
margin-top: 20px;
}
h1 {
margin: 1em 0 10px;
font-size: 2.1rem;
}
.package {
margin-bottom: 15px;
padding: 20px;
transition: all .1s linear;
cursor: pointer;
position: relative;
overflow: hidden;
border-radius: 3px;
border: 1px solid #e9e9e9;
&:hover {
@include box-shadow(2);
.icon {
transform: scale(1.1);
}
}
}
.box {
border: none;
border-bottom: 1px solid whitesmoke;
width: 100%;
.row{
width:100%;
}
h3 {
font-size: 1.1rem;
margin-bottom: .5rem;
font-weight: 600;
a {
color: $color-headline;
&:hover {
color: $color-our;
}
}
}
img {
max-width: 100%;
height: auto;
display: block;
vertical-align: middle;
@media (min-width: $md) {
}
}
.col-xs-2 {
vertical-align: middle !important;
padding: 0 !important;
}
.other {
margin-top: 30px;
}
.stats {
left: calc(16.666666666666664% + 15px);
font-family: Consolas, "Liberation Mono", Menlo, Monaco, Courier, monospace;
font-size: .75rem;
i {
margin-left: 3px;
font-size: .9rem;
}
span {
&:first-child {
margin-right: 0px;
}
}
}
p {
font-size: .9rem;
color: $color-text;
opacity: 1;
}
.package-badge {
position: absolute;
right: 15px;
bottom: -3px;
@media (min-width: $md) {
position: absolute;
right: 0;
bottom: 25px;
}
}
.karma , .downloads {
color: #000;
span {
transform: translate(0, 2px);
display: inline-block;
}
}
&.liked {
.karma {
i {
color: $color-red;
}
}
}
}
.name {
font-size: 1rem;
line-height: 1.3;
font-weight: bold;
}
.description {
font-size: .8rem;
margin-top: 3px;
max-height: 28px;
overflow: hidden;
}
}
h3 {
font-size: 1.1rem;
margin-bottom: .5rem;
font-weight: 600;
a {
color: $color-headline;
&:hover {
color: $color-our;
}
}
}
img {
max-width: 100%;
height: auto;
display: block;
vertical-align: middle;
@media (min-width: $md) {
}
}
.col-xs-2 {
vertical-align: middle !important;
padding: 0 !important;
}
.other {
margin-top: 30px;
}
.stats {
left: calc(16.666666666666664% + 15px);
font-family: Consolas, "Liberation Mono", Menlo, Monaco, Courier, monospace;
font-size: .75rem;
i {
margin-left: 3px;
font-size: .9rem;
}
span {
&:first-child {
margin-right: 0px;
}
}
}
p {
font-size: .9rem;
color: $color-text;
opacity: 1;
}
.package-badge {
position: absolute;
right: 15px;
bottom: -3px;
@media (min-width: $md) {
position: absolute;
right: 0;
bottom: 25px;
}
}
.karma , .downloads {
color: #000;
span {
transform: translate(0, 2px);
display: inline-block;
}
}
&.liked {
.karma {
i {
color: $color-red;
}
}
}
}
.name {
font-size: 1rem;
line-height: 1.3;
font-weight: bold;
}
.description {
font-size: .8rem;
margin-top: 3px;
max-height: 28px;
overflow: hidden;
}
}
@@ -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;
}
}
@@ -157,6 +157,10 @@ section.forum {
max-width: 112px;
height: auto;
.package-forum-activity & {
border-radius: 0;
}
@media (min-width: $md) {
width: 58px;
}
+1 -1
View File
@@ -60,7 +60,7 @@
@import 'sections/forum';
@import 'sections/people';
@import 'sections/events';
@import 'sections/contributors';
/**
/* Pages
@@ -0,0 +1,25 @@
angular.module("umbraco").controller("ourManagementController", function ($scope, $http, notificationsService) {
$scope.downloadDocumentation = function () {
notificationsService.success("Downloading and indexing documentation, hold on");
var downloadUrl = "/html/githubpulltrigger";
$http.get(downloadUrl)
.success(function () {
notificationsService.success("Documentation all downloaded and indexed!");
})
.error(function () {
notificationsService.error("Problem with the documentation download/indexing");
});
};
$scope.downloadYoutrackData = function () {
notificationsService.success("Downloading YouTrack data, hold on");
var youtrackUrl = "backoffice/API/YouTrackApi/GetData";
$http.get(youtrackUrl)
.success(function () {
notificationsService.success("YouTrack data all downloaded!");
})
.error(function () {
notificationsService.error("Problem with the YouTrack data downloading");
});
};
});
@@ -0,0 +1,11 @@
<div class="ourManagementDashboard" ng-controller="ourManagementController">
<h3>Documentation</h3>
<button ng-click="downloadDocumentation()">
Download documentation
</button>
<h3>YouTrack</h3>
<button ng-click="downloadYoutrackData()">
Download YouTrack data
</button>
</div>
@@ -0,0 +1,6 @@
{
"$schema": "/App_Plugins/manifestSchema.json",
"javascript": [
"/App_Plugins/OurManagement/ourmanagement.controller.js"
]
}
-16
View File
@@ -1,16 +0,0 @@
<%@ WebHandler Language="c#" Class="RequestHandler" %>
public class RequestHandler : System.Web.IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(System.Web.HttpContext context)
{
ImageGen.ImageGenQueryStringParser parser = new ImageGen.ImageGenQueryStringParser();
parser.Process(context);
parser = null;
}
}
+182 -244
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.4\build\UmbracoCms.props" Condition="Exists('..\packages\UmbracoCms.7.5.4\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>
@@ -47,6 +47,10 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Autofac, Version=3.5.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
<HintPath>..\packages\Autofac.3.5.2\lib\net40\Autofac.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="AutoMapper, Version=3.3.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.dll</HintPath>
<Private>True</Private>
@@ -55,24 +59,24 @@
<HintPath>..\packages\AutoMapper.3.3.1\lib\net40\AutoMapper.Net4.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="businesslogic, Version=1.0.6136.27244, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ClientDependency.1.9.1\lib\net45\ClientDependency.Core.dll</HintPath>
<Reference Include="ClientDependency.Core, Version=1.9.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ClientDependency.1.9.2\lib\net45\ClientDependency.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ClientDependency.Core.Mvc, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="cms, Version=1.0.6136.27244, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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.6136.27246, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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">
@@ -83,32 +87,28 @@
<HintPath>..\packages\EasyHttp.1.6.29.0\lib\net40\EasyHttp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Examine, Version=0.1.70.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.0.1.70.0\lib\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.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.4.9\lib\Net45\HtmlAgilityPack.dll</HintPath>
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="ImageProcessor, Version=2.4.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.2.4.5.0\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.6.6.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.6.6.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="InfoCaster.Umbraco.UrlTracker, Version=3.11.5900.30099, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UrlTracker.3.11\lib\InfoCaster.Umbraco.UrlTracker.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="interfaces, Version=1.0.6136.27240, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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">
@@ -116,19 +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.4\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>
<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.4\lib\Microsoft.ApplicationBlocks.Data.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">
@@ -148,6 +148,10 @@
<Private>True</Private>
</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.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">
<HintPath>..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
<Private>True</Private>
@@ -172,6 +176,18 @@
<HintPath>..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebHelpers.3.2.3\lib\net45\Microsoft.Web.Helpers.dll</HintPath>
<Private>True</Private>
@@ -188,14 +204,18 @@
<HintPath>..\packages\MySql.Data.6.9.8\lib\net45\MySql.Data.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="reCAPTCHA.MVC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\reCAPTCH.MVC.1.0.1\lib\net45\reCAPTCHA.MVC.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="RestSharp, Version=104.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\RestSharp.104.1\lib\net4\RestSharp.dll</HintPath>
@@ -204,8 +224,20 @@
<HintPath>..\packages\semver.1.1.2\lib\net451\Semver.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="SQLCE4Umbraco, Version=1.0.6136.27245, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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">
@@ -214,18 +246,27 @@
</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.4\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.4\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" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.Extensions, Version=2.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Primitives, Version=4.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.Reflection.Metadata, Version=1.0.21.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.1.0.21\lib\portable-net45+win8\System.Reflection.Metadata.dll</HintPath>
@@ -282,47 +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.4\lib\TidyNet.dll</HintPath>
<HintPath>..\packages\UmbracoCms.Core.7.5.11\lib\TidyNet.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="umbraco, Version=1.0.6136.27248, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.dll</HintPath>
<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.Core, Version=1.0.6136.27241, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\Umbraco.Core.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.DataLayer, Version=1.0.6136.27243, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.DataLayer.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.editorControls, Version=1.0.6136.27251, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\lib\umbraco.editorControls.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.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.6136.27252, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Umbraco.ModelsBuilder.3.0.4\lib\Umbraco.ModelsBuilder.dll</HintPath>
<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.6136.27246, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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.6136.27253, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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.27245, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\UmbracoCms.Core.7.5.4\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">
@@ -344,13 +389,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Views\Search\Search.aspx.cs">
<DependentUpon>Search.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Views\Search\Search.aspx.designer.cs">
<DependentUpon>Search.aspx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="App_Browsers\Form.browser" />
@@ -359,6 +397,8 @@
<Content Include="App_Plugins\ModelsBuilder\modelsbuilder.controller.js" />
<Content Include="App_Plugins\ModelsBuilder\modelsbuilder.htm" />
<Content Include="App_Plugins\ModelsBuilder\modelsbuilder.resource.js" />
<Content Include="App_Plugins\OurManagement\ourmanagement.controller.js" />
<Content Include="App_Plugins\OurManagement\ourmanagement.html" />
<Content Include="Assets\css\fonts\icomoon\icomoon.svg" />
<Content Include="Assets\css\style.min.css" />
<Content Include="Assets\images\app-icons\acme-tile-large.png" />
@@ -436,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" />
@@ -457,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" />
@@ -498,75 +540,6 @@
<Content Include="macroScripts\Releases-GetAllReleases.cshtml" />
<Content Include="macroScripts\Releases-ReleaseList.cshtml" />
<Content Include="macroScripts\testWikiFile.cshtml" />
<Content Include="masterpages\AttachFile.master" />
<Content Include="masterpages\Authentication.master" />
<Content Include="masterpages\blank.master" />
<Content Include="masterpages\Community.master" />
<Content Include="masterpages\ConfigureProjectLicenses.master" />
<Content Include="masterpages\ContentLanding.master" />
<Content Include="masterpages\CreateWikiPage.master" />
<Content Include="masterpages\Deli.master" />
<Content Include="masterpages\DeliCart.master" />
<Content Include="masterpages\DeliCartDetails.master" />
<Content Include="masterpages\Dialogs.master" />
<Content Include="masterpages\DisplayTopic.master" />
<Content Include="masterpages\DocumentationMainpage.master" />
<Content Include="masterpages\DocumentationSubpage.master" />
<Content Include="masterpages\EditProject.master" />
<Content Include="masterpages\Event.master" />
<Content Include="masterpages\Eventnews.master" />
<Content Include="masterpages\Events.master" />
<Content Include="masterpages\FileDownload.master" />
<Content Include="masterpages\Forum.master" />
<Content Include="masterpages\HelpPage.master" />
<Content Include="masterpages\InsertImage.master" />
<Content Include="masterpages\Locatorpage.master" />
<Content Include="masterpages\Master.master" />
<Content Include="masterpages\Mobile.master" />
<Content Include="masterpages\MobileTextPage.master" />
<Content Include="masterpages\newest.master" />
<Content Include="masterpages\Nothing.master" />
<Content Include="masterpages\Notifications.master" />
<Content Include="masterpages\PayPalRedirect.master" />
<Content Include="masterpages\People.master" />
<Content Include="masterpages\popular.master" />
<Content Include="masterpages\Profilepage.master" />
<Content Include="masterpages\Project.master" />
<Content Include="masterpages\ProjectGroup.master" />
<Content Include="masterpages\Projects.master" />
<Content Include="masterpages\ProjectsTags.master" />
<Content Include="masterpages\PublicMemberProfile.master" />
<Content Include="masterpages\Release.master" />
<Content Include="masterpages\ReleaseLanding-bak.master" />
<Content Include="masterpages\ReleaseLanding.master" />
<Content Include="masterpages\Repository.master" />
<Content Include="masterpages\RepositoryFrontpage.master" />
<Content Include="masterpages\RepositoryMaster.master" />
<Content Include="masterpages\repositoryPage.master" />
<Content Include="masterpages\Repository\blank.master" />
<Content Include="masterpages\Repository\Community.master" />
<Content Include="masterpages\Repository\Deli.master" />
<Content Include="masterpages\Repository\DeliRepoNET.master" />
<Content Include="masterpages\Repository\FileDownload.master" />
<Content Include="masterpages\Repository\Master.master" />
<Content Include="masterpages\Repository\Nothing.master" />
<Content Include="masterpages\Repository\Project.master" />
<Content Include="masterpages\Repository\ProjectGroup.master" />
<Content Include="masterpages\Repository\Projects.master" />
<Content Include="masterpages\Repository\ProjectsTags.master" />
<Content Include="masterpages\Repository\Repository.master" />
<Content Include="masterpages\Repository\Textpage.master" />
<Content Include="masterpages\RoadMap.master" />
<Content Include="masterpages\simplr.master" />
<Content Include="masterpages\termsofservice.master" />
<Content Include="masterpages\Textpage.master" />
<Content Include="masterpages\UmbracoMVP2011.master" />
<Content Include="masterpages\Wiki.master" />
<Content Include="masterpages\WikiMoveDialog.master" />
<Content Include="masterpages\WikiPage.master" />
<Content Include="masterpages\WikiPageAttachments.master" />
<Content Include="masterpages\WikiPageHistory.master" />
<Content Include="masterpages\WikipagewithTOC.master" />
<Content Include="projects\umbraco-pro\contour\Documentation\Editor\Attaching-Workflows\WorkFlowButton.png" />
<Content Include="projects\umbraco-pro\contour\Documentation\Editor\Attaching-Workflows\Workflownode.png" />
<Content Include="projects\umbraco-pro\contour\Documentation\Editor\Attaching-Workflows\WorkflowOverview.png" />
@@ -669,8 +642,11 @@
<Content Include="scripts\forum\select2\select2-new.js" />
<Content Include="scripts\forum\tags.js" />
<Content Include="config\IISRewriteMaps.config" />
<Content Include="masterpages\ReleaseCompare.master" />
<Content Include="App_Plugins\ModelsBuilder\package.manifest" />
<None Include="App_Plugins\OurManagement\package.manifest" />
<Content Include="config\imageprocessor\security.config" />
<Content Include="config\imageprocessor\processing.config" />
<Content Include="config\imageprocessor\cache.config" />
<Content Include="config\tinyMceConfig.config" />
<Content Include="config\scripting.config" />
<Content Include="config\metablogConfig.config" />
@@ -1683,20 +1659,10 @@
<Content Include="umbraco_client\tablesorting\jquery.tablesorter.min.js" />
<Content Include="umbraco_client\tinymce3\langs\en_us.js" />
<Content Include="umbraco_client\tinymce3\langs\ru.js" />
<Content Include="usercontrols\dashboard\ForceYouTrackDownload.ascx" />
<Content Include="usercontrols\dashboard\ForceDocumentationDownload.ascx" />
<Content Include="usercontrols\IndexStatus.ascx" />
<Content Include="usercontrols\our.umbraco.org\ForumSpamCleaner.ascx" />
<Content Include="usercontrols\our.umbraco.org\ForumSpamListComments.ascx" />
<Content Include="usercontrols\our.umbraco.org\ForumSpamListTopics.ascx" />
<Content Include="usercontrols\our.umbraco.org\SignupSimple.ascx" />
<Content Include="usercontrols\umbracoContour\EditForm.ascx" />
<Content Include="usercontrols\umbracoContour\Installer.ascx" />
<Content Include="usercontrols\umbracoContour\RenderForm.ascx" />
<Content Include="Views\MacroPartials\Forum\TopicForm.cshtml" />
<Content Include="Views\ContentLanding.cshtml" />
<Content Include="Views\Blank.cshtml" />
<Content Include="Views\DisplayTopic.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" />
@@ -1704,39 +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="masterpages\ForumMaster.master" />
<Content Include="masterpages\DocumentationMaster.master" />
<Content Include="masterpages\AddMarkdownProp.master" />
<Content Include="masterpages\ComRepositoryFrontpage.master" />
<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="masterpages\Download.master" />
<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\Forum\LatestActivity.cshtml" />
<Content Include="Views\MacroPartials\Members\ProfileProjectForums.cshtml" />
<Content Include="masterpages\ReleaseProgress.master" />
<Content Include="Views\MacroPartials\Global\AlertBar.cshtml" />
<Content Include="Views\MacroPartials\Members\PublicProfile.cshtml" />
<Content Include="masterpages\ProfileLogin.master" />
<Content Include="masterpages\ProfileRegister.master" />
<Content Include="masterpages\Sidebar.master" />
<Content Include="Views\MacroPartials\Rss\Forum.cshtml" />
<Content Include="Views\MacroPartials\Rss\LatestTopics.cshtml" />
<Content Include="Views\MacroPartials\Rss\Packages.cshtml" />
@@ -1752,14 +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="masterpages\ProjectPage.master" />
<Content Include="umbraco\lib\bootstrap-tabdrop\README.md" />
<Content Include="Views\MacroPartials\Releases\ReleasesDropdown.cshtml" />
<Content Include="Views\Partials\Community\TermsAndConditions.cshtml" />
<None Include="Views\Partials\Forum\MemberBadge.cshtml" />
<Content Include="Views\Search\Search.aspx" />
<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" />
<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\Web.config" />
<Content Include="web.config">
<SubType>Designer</SubType>
@@ -4081,65 +4045,6 @@
<Content Include="umbraco_client\ui\ui-lightness\images\ui-icons_ffd27a_256x240.png" />
<Content Include="umbraco_client\ui\ui-lightness\images\ui-icons_ffffff_256x240.png" />
<Content Include="umbraco_client\ui\ui-lightness\jquery-ui.custom.css" />
<Content Include="usercontrols\dashboard\getMembersFromGroup.ascx" />
<Content Include="usercontrols\dashboard\memberSearch.ascx" />
<Content Include="usercontrols\Deli\Cart\Cart.ascx" />
<Content Include="usercontrols\Deli\Cart\CartDetails.ascx" />
<Content Include="usercontrols\Deli\Cart\CartProgress.ascx" />
<Content Include="usercontrols\Deli\Cart\CartReview.ascx" />
<Content Include="usercontrols\Deli\Cart\MicroCart.ascx" />
<Content Include="usercontrols\Deli\Customers\VendorCustomers.ascx" />
<Content Include="usercontrols\Deli\Dashboard\VendorBIOverview.ascx" />
<Content Include="usercontrols\Deli\Dashboard\VendorProjectBI.ascx" />
<Content Include="usercontrols\Deli\EditPackage.ascx" />
<Content Include="usercontrols\Deli\HQStaffPickProjects.ascx" />
<Content Include="usercontrols\Deli\License\Member\MyLicenses.ascx" />
<Content Include="usercontrols\Deli\License\Vendor\ProjectLicenses.ascx" />
<Content Include="usercontrols\Deli\ListPagination.ascx" />
<Content Include="usercontrols\Deli\Package\Editor.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Complete.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Details.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Files.ascx" />
<Content Include="usercontrols\Deli\Package\Steps\Screenshots.ascx" />
<Content Include="usercontrols\Deli\Payout\VendorPayout.ascx" />
<Content Include="usercontrols\Deli\Payout\VendorPayoutHistory.ascx" />
<Content Include="usercontrols\Deli\Profile\MemberDataLookup.ascx" />
<Content Include="usercontrols\Deli\Profile\MyProjects.ascx" />
<Content Include="usercontrols\Deli\Profile\Signup.ascx" />
<Content Include="usercontrols\Deli\ProjectView.ascx" />
<Content Include="usercontrols\Deli\Purchase\PayPalConfirm.ascx" />
<Content Include="usercontrols\Deli\Purchase\PayPalPayment.ascx" />
<Content Include="usercontrols\Deli\Repository\RepoProjectView.ascx" />
<Content Include="usercontrols\Deli\Support\Member\RefundRequest.ascx" />
<Content Include="usercontrols\Deli\Support\VendorSupportRequest.ascx" />
<Content Include="usercontrols\Deli\Support\Vendor\VendorSupportRequest.ascx" />
<Content Include="usercontrols\Deli\TopPaidProjectsList.ascx" />
<Content Include="usercontrols\FergusonMoriyama\FeedCache\PostInstall.ascx" />
<Content Include="usercontrols\ImageGenInstaller.ascx" />
<Content Include="usercontrols\MemberLocator.ascx" />
<Content Include="usercontrols\our.umbraco.org\acceptTos.ascx" />
<Content Include="usercontrols\our.umbraco.org\EventEditor.ascx" />
<Content Include="usercontrols\our.umbraco.org\EventMailer.ascx" />
<Content Include="usercontrols\our.umbraco.org\FileDownloadProxy.ascx" />
<Content Include="usercontrols\our.umbraco.org\Forgotpassword.ascx" />
<Content Include="usercontrols\our.umbraco.org\HeaderLogin.ascx" />
<Content Include="usercontrols\our.umbraco.org\InsertImage.ascx" />
<Content Include="usercontrols\our.umbraco.org\Login.ascx" />
<Content Include="usercontrols\our.umbraco.org\Login_novalidationscript.ascx" />
<Content Include="usercontrols\our.umbraco.org\ProjectCollabRequest.ascx" />
<Content Include="usercontrols\our.umbraco.org\ProjectContributors.ascx" />
<Content Include="usercontrols\our.umbraco.org\ProjectEditor.ascx" />
<Content Include="usercontrols\our.umbraco.org\ProjectFileUpload.ascx" />
<Content Include="usercontrols\our.umbraco.org\ProjectForums.ascx" />
<Content Include="usercontrols\our.umbraco.org\Signup.ascx" />
<Content Include="usercontrols\our.umbraco.org\testoptimize.ascx" />
<Content Include="usercontrols\our.umbraco.org\YAF_MemberImport.ascx" />
<Content Include="usercontrols\poll\Poll.ascx" />
<Content Include="usercontrols\umbracoMemberControls\umbLogin.ascx" />
<Content Include="usercontrols\umbracoMemberControls\umbPasswordForgot.ascx" />
<Content Include="usercontrols\umbracoMemberControls\umbRegister.ascx" />
<Content Include="usercontrols\Umbraco\ExamineIndexAdmin.ascx" />
<Content Include="usercontrols\uWiki\FileUpload.ascx" />
<Content Include="w3c\p3p.xml" />
<Content Include="webservices\Licensing.asmx" />
<Content Include="webservices\MarketPlace.asmx" />
@@ -4241,8 +4146,6 @@
<Content Include="packages.config" />
<Content Include="App_Data\packages\installed\installedPackages.config" />
<Content Include="config\FileIndexerConfig.config" />
<Content Include="masterpages\ArchivedRelease.master" />
<Content Include="masterpages\ReleaseDownload.master" />
<Content Include="macroScripts\Releases-ListDownloads.cshtml">
<SubType>Code</SubType>
</Content>
@@ -4277,14 +4180,9 @@
<Content Include="projects\umbraco-pro\contour\Documentation\readme.md" />
<Content Include="macroScripts\Rss-CommunityBlogs.cshtml" />
<Content Include="macroScripts\TwitterSearch.cshtml" />
<Content Include="masterpages\SwitchForumEditor.master" />
<Content Include="macroScripts\SwitchForumEditor.cshtml" />
<Content Include="masterpages\ManageSpam.master" />
<Content Include="macroScripts\ManageSpam.cshtml" />
<Content Include="masterpages\ProjectsVersioned.master" />
<Content Include="macroScripts\ProjectsVersioned.cshtml" />
<Content Include="macroScripts\ProjectsVersionList.cshtml" />
<Content Include="masterpages\ProjectCompatibility.master" />
<Content Include="macroScripts\EditProjectCompatibility.cshtml" />
<Content Include="macroScripts\EventsOverview.cshtml" />
<Content Include="umbraco\assets\fonts\helveticons\helveticons.eot" />
@@ -4391,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" />
@@ -4401,7 +4297,43 @@
<Content Include="Views\Partials\Projects\CompatibilityReport.cshtml" />
<Content Include="Views\Partials\Project\Edit.cshtml" />
<Content Include="Views\Partials\Home\Documentation.cshtml" />
<Content Include="Views\Partials\Home\ForumActivity.cshtml" />
<Content Include="Views\Partials\Members\Login.cshtml" />
<Content Include="Views\Partials\Members\ForgotPassword.cshtml" />
<Content Include="Views\Partials\Home\TwitterSearchUmbraco.cshtml" />
<Content Include="Views\Projects.cshtml" />
<Content Include="Views\Project.cshtml" />
<Content Include="Views\DocumentationMainpage.cshtml" />
<Content Include="Views\Search.cshtml" />
<Content Include="Views\Partials\SearchResults.cshtml" />
<Content Include="Views\ReleaseLanding.cshtml" />
<Content Include="Views\ReleaseProgress.cshtml" />
<Content Include="Views\Release.cshtml" />
<Content Include="Views\Textpage.cshtml" />
<Content Include="Views\RoadMap.cshtml" />
<Content Include="Views\Profilepage.cshtml" />
<Content Include="Views\ProjectPage.cshtml" />
<Content Include="Views\ReleaseDownload.cshtml" />
<Content Include="Views\PublicMemberProfile.cshtml" />
<Content Include="Views\ReleaseCompare.cshtml" />
<Content Include="Views\Repository.cshtml" />
<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" />
@@ -4409,7 +4341,12 @@
<Content Include="Views\Partials\Grid\Editors\Embed.cshtml" />
<Content Include="Views\Partials\Grid\Editors\Base.cshtml" />
<Content Include="Views\Partials\Grid\Bootstrap3.cshtml" />
<Content Include="Views\Partials\Grid\Bootstrap3-Fluid.cshtml" />
<Content Include="Views\Partials\Grid\Bootstrap2.cshtml" />
<Content Include="Views\Partials\Grid\Bootstrap2-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>
@@ -4429,7 +4366,6 @@
<Folder Include="css\img\Cached\" />
<Folder Include="umbraco\lib\datetimepicker\langs\" />
<Folder Include="umbraco\Views\directives\" />
<Folder Include="usercontrols\Deli\Admin\" />
</ItemGroup>
<ItemGroup>
<Analyzer Include="..\packages\Microsoft.CodeAnalysis.Analyzers.1.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll" />
@@ -4440,6 +4376,7 @@
<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>
@@ -4486,11 +4423,12 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.4\build\UmbracoCms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.4\build\UmbracoCms.props'))" />
<Error Condition="!Exists('..\packages\UmbracoCms.7.5.4\build\UmbracoCms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\UmbracoCms.7.5.4\build\UmbracoCms.targets'))" />
<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.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.4\build\UmbracoCms.targets" Condition="Exists('..\packages\UmbracoCms.7.5.4\build\UmbracoCms.targets')" />
<Import Project="..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets" Condition="Exists('..\packages\AutoMapper.3.3.1\tools\AutoMapper.targets')" />
<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">
+2
View File
@@ -0,0 +1,2 @@
@inherits UmbracoTemplatePage
@Umbraco.RenderMacro(Model.Content.GetPropertyValue<string>("macro"))
+33
View File
@@ -0,0 +1,33 @@
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
@Html.Partial("~/Views/Partials/Community/Home.cshtml")
@section Search
{
<script type="text/template" class="search-item-template">
<li>
<a href="{{ url }}">
<div class="type-icon">
<i class="{{ icon }}"></i>
</div>
<div class="type-context">
<div class="type-name">
{{ name }}
</div>
<div class="type-description">
{{ description }}
</div>
</div>
</a>
</li>
</script>
}
@section EndScripts
{
@Html.Partial("~/Views/Partials/Community/Scripts.cshtml")
}
@@ -0,0 +1,28 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div id="contribute" class="subpage">
<div id="body" class="markdown-syntax">
<div>
@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">
<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>
+51
View File
@@ -0,0 +1,51 @@
@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">
<div class="forum-single-thread">
<!-- FORUM HEADER START -->
<div class="utilities">
<!-- FORUM BREADCRUMB START -->
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
<!-- FORUM BREADCRUMB END -->
<!-- THREAD ACTIONS START -->
@if (topic != null)
{
Html.RenderPartial("~/Views/Partials/Forum/TopicActions.cshtml", topic);
}
<!-- THREAD ACTIONS END -->
<div class="clear"></div>
</div>
<!-- FORUM HEADER END -->
@if (topic != null)
{
Html.RenderPartial("~/Views/Partials/Forum/Thread.cshtml", topic);
}
else
{
<p>This topic no longer exists.</p>
}
</div>
</section>
@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>
}
@@ -0,0 +1,22 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div class="has-sidebar">
<div class="documentation">
<div id="wiki" class="subpage">
<div id="body">
<div style="margin-top: 25px;">
@Html.Partial("~/Views/Partials/Documentation/Breadcrumb.cshtml")
</div>
<div id="markdown-docs" class="markdown-syntax">
@Html.Partial("~/Views/Partials/Documentation/DisplayMarkdown.cshtml")
</div>
<br style="clear: both" />
<div class="divider"></div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,58 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div class="has-sidebar">
<div class="documentation">
<div class="page-content">
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@Html.Partial("~/Views/Partials/Documentation/Navigation.cshtml")
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div><!-- .sidebar-area-->
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
<div>
@Html.Partial("~/Views/Partials/Documentation/Breadcrumb.cshtml")
</div>
<div class="search-big">
<input type="search" class="docs-search-input" required placeholder="Search for documentation">
<label for="search">Search for documentation</label>
</div>
<ul class="search-all-results docs-search-listing"></ul>
<div id="markdown-docs" class="docs-default-listing markdown-syntax">
@Html.Partial("~/Views/Partials/Documentation/DisplayMarkdown.cshtml")
</div>
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
</div><!-- .page-content -->
<script type="text/template" class="search-item-docs">
<li>
<a href="{{ url }}">
<div class="type-icon">
<i class="icon-Book-alt"></i>
</div>
<div class="type-context">
<div class="type-name">
{{ name }}
</div>
<div class="type-description">
{{ body }}
</div>
</div>
</a>
</li>
</script>
</div>
</div>
+77
View File
@@ -0,0 +1,77 @@
@inherits UmbracoTemplatePage
@using ClientDependency.Core.Mvc
@using OurUmbraco.Release
@{
Layout = "~/Views/Master.cshtml";
Html.RequiresCss("~/css/releases.css");
var latestRelease = Download.GetCurrentReleaseFromFile();
}
<section id="download" class="download-umbraco">
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="dl-content">
<h1>Download Umbraco</h1>
<p>If you're new to Umbraco you might want to start your install with the versions on the <a href="/documentation/getting-started/installation/">Web Platform Installer or WebMatrix</a>. These tools will automatically download and install any dependencies to give you a flying start.</p>
<a id="downloadButton" class="button white" href="/contribute/releases/@(latestRelease.version.Replace(".", string.Empty))?fromdownload=true">
<i class="icon-Download-alt"></i>
<span>Download Umbraco v@(latestRelease.version)</span>
</a>
<p class="small">or, install via nuget</p>
<span class="pm-nuget">
<input class="pre nuget" value="Install-Package UmbracoCms" readonly="">
</span>
</div>
</div>
</div>
</div>
<div class="archive">
<a href="/contribute/releases/">See releases</a>
</div>
</section>
<section id="install" class="download-umbraco" style="display: none">
<div class="mac-notice">
You're running MacOS, follow <a href="">this guide.</a>
</div>
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="dl-content steps">
<h2>Almost there</h2>
<div class="guide">
<div class="step step-one">
<span>1</span>
<div>Unzip</div>
</div>
<div class="step step-two">
<span>2</span>
<div>Run with WebMatrix</div>
</div>
<div class="step step-three">
<span>3</span>
<div>Follow the installer</div>
</div>
<div class="clearfix"></div>
</div>
<!-- insert gif here -->
</div>
</div>
</div>
</div>
<div class="archive">
See detailed instructions in the <a href="/documentation/Getting-Started/Setup/Install/">documentation</a>
</div>
</section>
<script type="text/javascript">
(function () {
$('.dl-content').on('click', '#downloadButton', function (e) {
$('section#download').fadeOut();
$('section#install').fadeIn();
});
})();
</script>
+33
View File
@@ -0,0 +1,33 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div class="page-content">
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@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">
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@if (Request.QueryString["editorStep"] == "files")
{
@Html.Action("RenderFiles", "Project")
}
@if (Request.QueryString["editorStep"] == "screenshots")
{
@Html.Action("RenderScreenshots", "Project")
}
@if (Request.QueryString["editorStep"] == "complete")
{
@Html.Action("RenderComplete", "Project")
}
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
</div><!-- .page-content -->
+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));
}
+81
View File
@@ -0,0 +1,81 @@
@using OurUmbraco.Wiki.BusinessLogic
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
if (Request["id"] == null)
{
return;
}
int fileId;
if (int.TryParse(Request["id"], out fileId) == false)
{
return;
}
if (fileId == 0)
{
return;
}
var wikiFile = new WikiFile(fileId);
wikiFile.UpdateDownloadCounter(false, wikiFile.FileType == "package");
using (var sqlHelper = umbraco.BusinessLogic.Application.SqlHelper)
{
var path = sqlHelper.ExecuteScalar<string>(
"Select path from wikiFiles where id = @id;",
sqlHelper.CreateParameter("@id", fileId));
var file = sqlHelper.ExecuteScalar<string>(
"Select name from wikiFiles where id = @id;",
sqlHelper.CreateParameter("@id", fileId));
var fileinfo = new System.IO.FileInfo(Server.MapPath(path));
var extension = System.IO.Path.GetExtension(Server.MapPath(path));
var type = "";
// set known types based on file extension
if (extension != null)
{
switch (extension.ToLower())
{
case ".tif":
case ".tiff":
type = "image/tiff";
break;
case ".jpg":
case ".jpeg":
type = "image/jpeg";
break;
case ".gif":
type = "image/gif";
break;
case ".docx":
case ".doc":
case ".rtf":
type = "Application/msword";
break;
case ".pdf":
type = "Application/pdf";
break;
case ".png":
type = "image/png";
break;
case ".bmp":
type = "image/bmp";
break;
default:
type = "application/octet-stream";
break;
}
}
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename= " + file.Replace(" ", "-"));
Response.AddHeader("Content-Length", fileinfo.Length.ToString());
Response.ContentType = type;
Response.WriteFile(path);
}
}
+39
View File
@@ -0,0 +1,39 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<!-- FORUM OVERVIEW START -->
<section class="forum-overview">
<div class="forum-archive">
@Html.Partial("~/Views/Partials/Forum/Forum.cshtml")
</div>
</section>
@Html.Partial("~/Views/Partials/Forum/TopicForm.cshtml")
@section EndScripts {
@{
var cat = -1;
if (Model.Content.Level > 3)
{
cat = Model.Content.Id;
}
var page = 1;
if (Request["page"] != null)
{
int.TryParse(Request["page"], out page);
}
}
<script type="text/javascript">
$('table')
.scrolly({
page: @page,
dataUrl: '/umbraco/api/PublicForum/LatestPaged/?cat=@cat',
template: '#forum-template',
loadingHtml: '<div class="span"><div class=" loader"></div></div>'
});
</script>
}
+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,67 +0,0 @@
@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())
{
@Html.Partial("home/forumactivity")
@Html.Partial("home/documentation")
}
else
{
@Html.Partial("home/documentation")
@Html.Partial("home/forumactivity")
}
@@ -1,54 +0,0 @@
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Models
@using OurUmbraco.Forum.Services
@using OurUmbraco.Our
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
var ts = new TopicService(ApplicationContext.DatabaseContext);
}
<div class="col-md-12 flex">
@Column(ts.GetLatestTopics(6, 1))
</div>
@helper Column(IEnumerable<ReadOnlyTopic> topics)
{
foreach (var topic in topics.ToArray())
{
var cat = Umbraco.TypedContent(topic.ParentId);
var mem = Members.GetById(topic.LatestReplyAuthor) ?? Members.GetById(topic.MemberId);
<a href="@topic.GetUrl()" class="forum-thread @Umbraco.If(topic.Answer > 0, " solved")">
<div class="avatar">
@if(mem != null)
{
@Html.Raw(Utils.GetMemberAvatar(mem, 100))
}
</div>
<div class="meta">
<div class="forum-thread-text">
<h3>@topic.Title</h3>
<p>
@if (topic.Replies != 0 && !string.IsNullOrEmpty(topic.LastReplyAuthorName))
{
<text>last edited by @topic.LastReplyAuthorName</text>
}
else
{
<text>created by @topic.AuthorName</text>
}
@topic.Updated.ConvertToRelativeTime()
</p>
</div>
<div class="category">
<span class="cat">@cat.Name</span>
</div>
</div>
</a>
}
}
@@ -1,163 +0,0 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using System.Web.Mvc.Html
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Services
@using OurUmbraco.NotificationsWeb.Library
@{
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">
@Html.Partial("forum/question", topic)
@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>
@@ -4,7 +4,7 @@
if (string.IsNullOrWhiteSpace(memberGuid) == false)
{
var memberService = UmbracoContext.Current.Application.Services.MemberService;
var memberService = ApplicationContext.Current.Services.MemberService;
var member = memberService.GetByKey(new Guid(memberGuid));
if (member == null)
@@ -0,0 +1,10 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
if (Members.IsLoggedIn())
{
Response.Redirect("/member/profile");
}
}
@Html.Action("RenderForgotPassword", "Login")
@@ -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>
}
}
@@ -0,0 +1,17 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
if (Members.IsLoggedIn())
{
if (Model.MacroParameters["NextPage"] != null && string.IsNullOrWhiteSpace(Model.MacroParameters["NextPage"].ToString()) == false)
{
// It's being called from the old package repository, don't redirect
}
else
{
Response.Redirect("/member/profile");
}
}
}
@Html.Action("RenderLogin", "Login")
@@ -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 as a Service</a></h4></li>
</ul>
@@ -0,0 +1,16 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
var m = Members.GetCurrentMember();
var reputation = m.GetPropertyValue<string>("reputationTotal");
int reputationTotal;
var enoughReputation = int.TryParse(reputation, out reputationTotal) && reputationTotal > 30;
}
@if (enoughReputation)
{
@Html.Action("RenderMyProjects", "Projects")
}
else
{
<h2>Sorry, your account is too new to create projects! If you're human, make sure to <a href="https://umbraco.com/about-us/team">get in touch with us</a> to get this restriction lifted.</h2>
}
@@ -9,7 +9,7 @@
int forumId;
// For some reason the Request.Url will show that this URL looks like: /rss/forum/?id=?id=103196
// This means that Request.QueryString["id"] results in ",1929". Removing the comma helps...
if (int.TryParse(Model.MacroParameters["forumId"].ToString().Replace(",", string.Empty), out forumId) == false)
if (int.TryParse(Request.QueryString["id"].Replace(",", string.Empty), out forumId) == false)
{
return;
}
@@ -7,10 +7,7 @@
var selfUrl = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host, Request.Url.PathAndQuery);
var home = Model.Content.AncestorOrSelf(1);
var projectsRoot = home.Children.First(x => x.ContentType.Alias == "Projects");
var orderByUpdated = Model.MacroParameters["updated"].ToString() == "1";
var projects = orderByUpdated
? projectsRoot.Descendants("Project").OrderByDescending(x => x.UpdateDate).Where(x => x.GetPropertyValue<bool>("projectLive")).Take(20)
: projectsRoot.Descendants("Project").OrderByDescending(x => x.CreateDate).Where(x => x.GetPropertyValue<bool>("projectLive")).Take(20);
var projects = projectsRoot.Descendants("Project").OrderByDescending(x => x.UpdateDate).Where(x => x.GetPropertyValue<bool>("projectLive")).Take(20);
}<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
@@ -9,7 +9,7 @@
int memberId;
// For some reason the Request.Url will show that this URL looks like: /rss/forum/?id=?id=103196
// This means that Request.QueryString["id"] results in ",1929". Removing the comma helps...
if (int.TryParse(Model.MacroParameters["memberId"].ToString().Replace(",", string.Empty), out memberId) == false)
if (int.TryParse(Request.QueryString["id"].Replace(",", string.Empty), out memberId) == false)
{
return;
}
@@ -9,7 +9,7 @@
int topicId;
// For some reason the Request.Url will show that this URL looks like: /rss/forum/?id=?id=103196
// This means that Request.QueryString["id"] results in ",1929". Removing the comma helps...
if (int.TryParse(Model.MacroParameters["topicId"].ToString().Replace(",", string.Empty), out topicId) == false)
if (int.TryParse(Request.QueryString["id"].Replace(",", string.Empty), out topicId) == false)
{
return;
}
+186
View File
@@ -0,0 +1,186 @@
@using ClientDependency.Core.Mvc
@using Umbraco.Core.Configuration
@inherits OurUmbraco.Our.Models.OurUmbracoTemplatePage
@{
Layout = null;
var model = UmbracoContext.Current.PublishedContentRequest.PublishedContent;
var bodyCss =
model.Level > 2 && model.AncestorOrSelf(3).Id == 1057
? "profile has-sidebar"
: model.DocumentTypeAlias.ToLower().Replace(" ", "-") + "-page";
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/3.1.20/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");
Html.RequiresJs("https://cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Editor.js");
Html.RequiresJs("https://cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Sanitizer.js");
Html.RequiresJs("https://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.8.1/mustache.min.js");
Html.RequiresJs("https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.1.20/jquery.fancybox.min.js");
Html.RequiresJs("~/assets/js/jquery.ajaxfileupload.js");
Html.RequiresJs("~/assets/js/jquery.scrolly.js");
Html.RequiresJs("~/assets/js/lodash.min.js");
Html.RequiresJs("~/assets/js/community.js");
Html.RequiresJs("~/assets/js/app.min.js");
Html.RequiresJs("~/assets/js/editor.min.js");
}<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en">
<!--<![endif]-->
<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">
<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" />
<link rel="alternate" type="application/rss+xml" title="Active forum topics" href="//our.umbraco.org/rss/activetopics" />
<link rel="alternate" type="application/rss+xml" title="Community blogs" href="//pipes.yahoo.com/pipes/pipe.run?_id=8llM7pvk3RGFfPy4pgt1Yg&_render=rss" />
<link rel="search" type="application/opensearchdescription+xml" title="our.umbraco.org" href="/scripts/OpenSearch.xml">
<!-- Application name -->
<meta name="application-name" content="Our Umbraco" />
<meta name="apple-mobile-web-app-title" content="Our Umbraco">
<!-- Icons -->
<link rel="apple-touch-icon-precomposed" href="/assets/images/app-icons/icon-60.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/assets/images/app-icons/icon-72.png">
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="/assets/images/app-icons/icon-76.png">
<link rel="icon" sizes="192x192" href="/assets/images/app-icons/touch-icon-192x192.png">
<meta name="msapplication-TileImage" content="/assets/images/app-icons/tile.png" />
<meta name="msapplication-config" content="/assets/images/app-icons/browserconfig.xml">
<link rel="icon" type="image/png" href="/assets/images/app-icons/favicon.png">
<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="">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.7.1/modernizr.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
@Html.Partial("~/Views/Partials/Community/JsValues.cshtml")
@Html.RenderCssHere()
@RenderSection("HeadCssScripts", false)
<script>
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-120590-4', 'auto');
ga('send', 'pageview');
</script>
</head>
<body class="@bodyCss">
@Html.Partial("~/Views/Partials/Members/QuickMenu.cshtml")
<div class="wrapper">
<header>
<div class="navigation">
<div class="container">
<div class="row">
<div class="col-md-3">
<a class="logo" href="/">Our Umbraco</a>
</div>
<div id="toggle" class="menu-toggle">
<a href="#" class="toggle cross"><span></span></a>
</div>
<nav class="col-md-9">
@Html.Partial("~/Views/Partials/Navigation/TopNavigation.cshtml")
</nav>
</div>
</div>
</div>
</header>
@{
if (memberIsBlocked == false)
{
@Html.Partial("~/Views/Partials/Global/AlertBar.cshtml")
@RenderSection("Search", false)
@RenderBody()
}
else
{
<section class="forum">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="text-center">Computer says no</h1>
<p>Unfortunaly, it seems that your account has been blocked.</p>
</div>
</div>
</div>
</section>
}
}
<footer>
<div class="container">
<div class="row">
<div class="col-xs-12">
Our.umbraco.org is the community mothership for Umbraco, the open source asp.net cms. With a friendly forum for all your questions, a comprehensive documentation and a ton of packages from the community.
@if (HttpContext.Current != null && HttpContext.Current.Request.UserAgent != null && HttpContext.Current.Request.UserAgent.ToLower().Contains("googlebot"))
{
<text>This site is running Umbraco.</text>
}
else
{
<text>This site is running</text> <data id="umbraco-version" value="@UmbracoVersion.GetSemanticVersion()">Umbraco version @UmbracoVersion.GetSemanticVersion()</data>
}
</div>
</div>
</div>
</footer>
</div>
<!--.wrapper-->
@Html.RenderJsHere()
<script type="text/javascript">
classOnScroll('header', 'sticky', 10);
</script>
@RenderSection("EndScripts", false)
</body>
</html>
@@ -0,0 +1,190 @@
@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>
<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>Contributions the last 12 months (number indicating accepted commits)</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://our.umbraco.org/contribute">Contribute to Umbraco &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,198 @@
@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
@{
// Save query string for use in pagination links
var queryString = HttpUtility.ParseQueryString(Request.QueryString.ToString());
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 + unsolved + noreplies + "]";
var totalTopics = (int)cache.GetCacheItem(totalCountKey,
() => topicService.GetAllTopicsCount(cat, unsolved, noreplies),
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)
{
queryString["page"] = (page - 1).ToString();
<a class="prev" href="?@queryString">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++)
{
queryString["page"] = i.ToString();
<a class="@Umbraco.If(i == page, "active")" href="?@queryString">@i</a>
}
@if (page < pages)
{
queryString["page"] = (page + 1).ToString();
<span>&hellip;</span>
<a class="next" href="?@queryString">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,92 @@
@inherits UmbracoViewPage<dynamic>
@using Umbraco.Web.Templates
@using Newtonsoft.Json.Linq
@*
Razor helpers located at the bottom of this file
*@
@if (Model != null && Model.sections != null)
{
var oneColumn = ((System.Collections.ICollection)Model.sections).Count == 1;
<div class="umb-grid">
@if (oneColumn)
{
foreach (var section in Model.sections) {
<div class="grid-section">
@foreach (var row in section.rows) {
@renderRow(row, true);
}
</div>
}
}else {
<div class="container-fluid">
<div class="row-fluid clearfix">
@foreach (var s in Model.sections) {
<div class="grid-section">
<div class="@("span" + s.grid) column">
@foreach (var row in s.rows) {
@renderRow(row, false);
}
</div>
</div>
}
</div>
</div>
}
</div>
}
@helper renderRow(dynamic row, bool singleColumn){
<div @RenderElementAttributes(row)>
@Umbraco.If(singleColumn, "<div class='container-fluid'>")
<div class="row-fluid clearfix">
@foreach ( var area in row.areas ) {
<div class="@("span" + area.grid) column">
<div @RenderElementAttributes(area)>
@foreach (var control in area.controls) {
if (control !=null && control.editor != null && control.editor.view != null ) {
<text>@Html.Partial("grid/editors/base", (object)control)</text>
}
}
</div>
</div>}
</div>
@Umbraco.If(singleColumn, "</div>")
</div>
}
@functions {
public static MvcHtmlString RenderElementAttributes(dynamic contentItem)
{
var attrs = new List<string>();
JObject cfg = contentItem.config;
if(cfg != null)
foreach (JProperty property in cfg.Properties())
{
var propertyValue = HttpUtility.HtmlAttributeEncode(property.Value.ToString());
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
}
JObject style = contentItem.styles;
if (style != null) {
var cssVals = new List<string>();
foreach (JProperty property in style.Properties())
{
var propertyValue = property.Value.ToString();
if (string.IsNullOrWhiteSpace(propertyValue) == false)
{
cssVals.Add(property.Name + ":" + propertyValue + ";");
}
}
if (cssVals.Any())
attrs.Add("style='" + HttpUtility.HtmlAttributeEncode(string.Join(" ", cssVals)) + "'");
}
return new MvcHtmlString(string.Join(" ", attrs));
}
}
@@ -64,21 +64,29 @@
JObject cfg = contentItem.config;
if(cfg != null)
foreach (JProperty property in cfg.Properties()) {
attrs.Add(property.Name + "=\"" + property.Value.ToString() + "\"");
foreach (JProperty property in cfg.Properties())
{
var propertyValue = HttpUtility.HtmlAttributeEncode(property.Value.ToString());
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
}
JObject style = contentItem.styles;
if (style != null) {
var cssVals = new List<string>();
foreach (JProperty property in style.Properties())
cssVals.Add(property.Name + ":" + property.Value.ToString() + ";");
if (style != null) {
var cssVals = new List<string>();
foreach (JProperty property in style.Properties())
{
var propertyValue = property.Value.ToString();
if (string.IsNullOrWhiteSpace(propertyValue) == false)
{
cssVals.Add(property.Name + ":" + propertyValue + ";");
}
}
if (cssVals.Any())
attrs.Add("style=\"" + string.Join(" ", cssVals) + "\"");
if (cssVals.Any())
attrs.Add("style=\"" + HttpUtility.HtmlAttributeEncode(string.Join(" ", cssVals)) + "\"");
}
return new MvcHtmlString(string.Join(" ", attrs));
}
}
@@ -0,0 +1,88 @@
@inherits UmbracoViewPage<dynamic>
@using Umbraco.Web.Templates
@using Newtonsoft.Json.Linq
@*
Razor helpers located at the bottom of this file
*@
@if (Model != null && Model.sections != null)
{
var oneColumn = ((System.Collections.ICollection)Model.sections).Count == 1;
<div class="umb-grid">
@if (oneColumn)
{
foreach (var section in Model.sections) {
<div class="grid-section">
@foreach (var row in section.rows) {
@renderRow(row);
}
</div>
}
}else {
<div class="row clearfix">
@foreach (var s in Model.sections) {
<div class="grid-section">
<div class="col-md-@s.grid column">
@foreach (var row in s.rows) {
@renderRow(row);
}
</div>
</div>
}
</div>
}
</div>
}
@helper renderRow(dynamic row){
<div @RenderElementAttributes(row)>
<div class="row clearfix">
@foreach ( var area in row.areas ) {
<div class="col-md-@area.grid column">
<div @RenderElementAttributes(area)>
@foreach (var control in area.controls) {
if (control !=null && control.editor != null && control.editor.view != null ) {
<text>@Html.Partial("grid/editors/base", (object)control)</text>
}
}
</div>
</div>}
</div>
</div>
}
@functions {
public static MvcHtmlString RenderElementAttributes(dynamic contentItem)
{
var attrs = new List<string>();
JObject cfg = contentItem.config;
if(cfg != null)
foreach (JProperty property in cfg.Properties())
{
var propertyValue = HttpUtility.HtmlAttributeEncode(property.Value.ToString());
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
}
JObject style = contentItem.styles;
if (style != null) {
var cssVals = new List<string>();
foreach (JProperty property in style.Properties())
{
var propertyValue = property.Value.ToString();
if (string.IsNullOrWhiteSpace(propertyValue) == false)
{
cssVals.Add(property.Name + ":" + propertyValue + ";");
}
}
if (cssVals.Any())
attrs.Add("style='" + HttpUtility.HtmlAttributeEncode(string.Join(" ", cssVals)) + "'");
}
return new MvcHtmlString(string.Join(" ", attrs));
}
}
@@ -64,21 +64,29 @@
JObject cfg = contentItem.config;
if(cfg != null)
foreach (JProperty property in cfg.Properties()) {
attrs.Add(property.Name + "=\"" + property.Value.ToString() + "\"");
foreach (JProperty property in cfg.Properties())
{
var propertyValue = HttpUtility.HtmlAttributeEncode(property.Value.ToString());
attrs.Add(property.Name + "=\"" + propertyValue + "\"");
}
JObject style = contentItem.styles;
if (style != null) {
var cssVals = new List<string>();
foreach (JProperty property in style.Properties())
cssVals.Add(property.Name + ":" + property.Value.ToString() + ";");
if (style != null) {
var cssVals = new List<string>();
foreach (JProperty property in style.Properties())
{
var propertyValue = property.Value.ToString();
if (string.IsNullOrWhiteSpace(propertyValue) == false)
{
cssVals.Add(property.Name + ":" + propertyValue + ";");
}
}
if (cssVals.Any())
attrs.Add("style=\"" + string.Join(" ", cssVals) + "\"");
if (cssVals.Any())
attrs.Add("style=\"" + HttpUtility.HtmlAttributeEncode(string.Join(" ", cssVals)) + "\"");
}
return new MvcHtmlString(string.Join(" ", attrs));
}
}
@@ -1,5 +1,4 @@
@model dynamic
@using Umbraco.Web.Templates
@functions {
public static string EditorView(dynamic contentItem)
@@ -1,3 +1,2 @@
@model dynamic
@using Umbraco.Web.Templates
@Html.Raw(Model.value)
@@ -1,6 +1,4 @@
@inherits UmbracoViewPage<dynamic>
@using Umbraco.Web.Templates
@if (Model.value != null)
{
@@ -1,5 +1,4 @@
@model dynamic
@using Umbraco.Web.Templates
@if (Model.value != null)
{
@@ -4,10 +4,9 @@
@if (Model.editor.config.markup != null)
{
string markup = Model.editor.config.markup.ToString();
var UmbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
markup = markup.Replace("#value#", UmbracoHelper.ReplaceLineBreaksForHtml(Model.value.ToString()));
markup = markup.Replace("#value#", umbracoHelper.ReplaceLineBreaksForHtml(HttpUtility.HtmlEncode(Model.value.ToString())));
markup = markup.Replace("#style#", Model.editor.config.style.ToString());
<text>
@@ -1,26 +0,0 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
<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>
@Umbraco.RenderMacro("ForumLatestActivity")
<div class="col-md-12 goto-forum">
<a class="button green" href="/forum">Go to Forum &rarr;</a>
</div>
</div>
</div>
</section>
@@ -0,0 +1,32 @@
@model OurUmbraco.Community.Models.GitHubContributorsModel
@if (Model.Contributors.Any())
{
foreach (var contributor in Model.Contributors)
{
<a href="@contributor.AuthorUrl" class="contributor" target="_blank" title="@contributor.AuthorLogin">
<div class="avatar">
<img alt="@contributor.AuthorLogin" src="@contributor.AuthorAvatarUrl&s=112"
srcset="@contributor.AuthorAvatarUrl&s=224 2x, @contributor.AuthorAvatarUrl&s=336 3x" />
<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,40 @@
@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Forum.Models
@model ReadOnlyTopic[]
@foreach (var topic in Model)
{
<a href="@topic.GetUrl()" class="forum-thread @(topic.Answer > 0 ? "solved": null)">
<div class="avatar">
@Html.Raw(topic.LastReplyAuthorAvatar)
</div>
<div class="meta">
<div class="forum-thread-text">
<h3>@topic.Title</h3>
<p>
@if (topic.Replies != 0 && !string.IsNullOrEmpty(topic.LastReplyAuthorName))
{
<text>last updated by @topic.LastReplyAuthorName</text>
}
else
{
<text>created by @topic.AuthorName</text>
}
@topic.Updated.ConvertToRelativeTime()
</p>
</div>
<div class="category">
<span class="cat">@topic.CategoryName</span>
</div>
</div>
</a>
}
@if (Model.Any() == false)
{
<h2>Could not load recent forum activity.</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>
}
@@ -0,0 +1,49 @@
@using OurUmbraco.Forum.Extensions
@model OurUmbraco.Community.Models.TweetsModel
@if (Model.ShowAdminOverView == false)
{
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>
</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.Tweets.Any() == false)
{
<h2>Could not load recent tweets.</h2>
}
@@ -0,0 +1,49 @@
@using OurUmbraco.Our.Controllers
@using reCAPTCHA.MVC
@inherits UmbracoViewPage<Umbraco.Web.Models.LoginModel>
@{
Html.EnableClientValidation(true);
Html.EnableUnobtrusiveJavaScript(true);
}
@if (Request.QueryString["success"] == null)
{
<div class="form simpleForm" id="registrationForm">
@using (Html.BeginUmbracoForm<LoginController>("ForgotPassword"))
{
@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
<fieldset>
<p>
@Html.LabelFor(m => m.Username, new { @cless = "inputLabel" })<br />
@Html.ValidationMessageFor(m => m.Username)
@Html.TextBoxFor(m => m.Username, new { @class = "email title" })
</p>
</fieldset>
<fieldset>
<p>
@Html.Recaptcha()
@Html.ValidationMessage("ReCaptcha")
</p>
</fieldset>
<input class="button green" type="submit" value="Retrieve password">
}
</div>
}
else
{
<p>If an account with that email exists you have just been sent instructions to reset your password.</p>
}
<style type="text/css">
.field-validation-error, .validation-summary-errors {
color: red;
}
.input-validation-error {
border-color: red !important;
}
</style>
@@ -0,0 +1,50 @@
@using OurUmbraco.Our.Controllers
@using reCAPTCHA.MVC
@inherits UmbracoViewPage<Umbraco.Web.Models.LoginModel>
@{
Html.EnableClientValidation(true);
Html.EnableUnobtrusiveJavaScript(true);
}
<div class="form simpleForm" id="registrationForm">
@using (Html.BeginUmbracoForm<LoginController>("Login"))
{
@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
<fieldset>
<p>
@Html.LabelFor(m => m.Username, new { @class = "inputLabel" })<br />
@Html.ValidationMessageFor(m => m.Username)
@Html.TextBoxFor(m => m.Username, new { @class = "email title" })
</p>
</fieldset>
<fieldset>
<p>
@Html.LabelFor(m => m.Password, new { @class = "inputLabel" })<br />
@Html.ValidationMessageFor(m => m.Password)
@Html.PasswordFor(m => m.Password, new { @class = "password title" })
</p>
</fieldset>
<fieldset>
<p>
@Html.Recaptcha()
@Html.ValidationMessage("ReCaptcha")
</p>
</fieldset>
<input class="button green" type="submit" value="Log in">
}
</div>
<style type="text/css">
.field-validation-error, .validation-summary-errors {
color: red;
}
.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>
@@ -1,4 +1,5 @@
@using OurUmbraco.Our.Controllers
@using reCAPTCHA.MVC
@inherits UmbracoViewPage<OurUmbraco.Our.Models.RegisterModel>
@{
Html.EnableClientValidation(true);
@@ -60,6 +61,11 @@
@Html.CheckBoxFor(m => m.AgreeTerms) <label for="AgreeTerms"><em>I agree to the <a href="/terms-and-conditions" target="_blank">terms and conditions</a> of using the Our Umbraco website.</em></label>
@Html.ValidationMessageFor(m => m.AgreeTerms)
</div>
<div class="profile-input" id="recaptcha">
@Html.Recaptcha()
@Html.ValidationMessage("ReCaptcha")
</div>
<input class="button green" type="submit" value="Sign up">
}
@@ -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>
@@ -0,0 +1,20 @@
@using OurUmbraco.Our.Controllers
@model OurUmbraco.Our.Models.ProjectCompleteModel
<div class="package-create">
@Html.Partial("~/Views/Partials/Project/PackageEditNavigation.cshtml", "complete")
@using(Html.BeginUmbracoForm<ProjectController>("UpdateProjectLive"))
{
<fieldset>
<legend>Make "@Model.Name" public</legend>
<p>By checking the following box your project will become public as long as you have met all of the terms &amp; conditions of listing.</p>
<p>
@Html.CheckBoxFor(m => m.ProjectLive) @Html.LabelFor(m => m.ProjectLive)
</p>
</fieldset>
<div class="buttons">
<input type="submit" value="Save" class="submitButton button tiny green">
</div>
}
</div>
@@ -31,17 +31,7 @@
</style>
<div class="package-create">
<ul class="stepNavigation">
<li class="current"><a href="/member/profile/projects/details/?projectId=@Model.Id">Package Details</a></li>
@if (Model.Id > 0)
{
<li class=""><a href="/member/profile/projects/edit?editorStep=files&id=@Model.Id">Package Files</a></li>
<li class=""><a href="/member/profile/projects/edit?editorStep=screenshots&id=@Model.Id">Screenshots</a></li>
<li class=""><a href="/member/profile/projects/edit?editorStep=complete&id=@Model.Id">Creation Complete</a></li>
}
</ul>
@Html.Partial("~/Views/Partials/Project/PackageEditNavigation.cshtml", "details")
<div class="form simpleForm" id="registrationForm">
@using (Html.BeginUmbracoForm<ProjectController>("SaveDetails"))
@@ -119,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,143 @@
@using OurUmbraco.Our.Controllers
@model OurUmbraco.Our.Models.EditFileModel
<div class="package-create">
@Html.Partial("~/Views/Partials/Project/PackageEditNavigation.cshtml", "files")
<div class="form simpleForm" id="registrationForm">
<fieldset>
<legend>Current project files</legend>
<p>
<table class="dataTable">
<thead>
<tr>
<th>File</th>
<th>Type</th>
<th>Compatible Version</th>
<th>.NET Version</th>
<th>Uploaded</th>
<th class="center">Default Release</th>
<th class="center">Archive</th>
</tr>
</thead>
<tbody>
@foreach (var wikiFile in Model.AvailableFiles)
{
var versionsList = new List<string>();
foreach (var version in wikiFile.Versions)
{
versionsList.Add(version.Version);
}
var versions = string.Join(",", versionsList);
<tr>
<td>@wikiFile.Name</td>
<td>@wikiFile.FileType</td>
<td>@versions</td>
<td>@wikiFile.DotNetVersion</td>
<td>@wikiFile.CreateDate</td>
<td class="center">
@if (wikiFile.Current == false)
{
using (Html.BeginUmbracoForm<ProjectController>("MarkFileAsCurrent"))
{
<input type="hidden" name="id" value="@Request.QueryString["id"]" />
<input type="hidden" name="releaseFileId" value="@wikiFile.Id" />
<input type="submit" value="Make current" class="actionButton" />
}
}
else
{
<text>Current</text>
}
</td>
<td class="center">
@using (Html.BeginUmbracoForm<ProjectController>("ArchiveFile"))
{
var buttonText = wikiFile.Archived ? "Unarchive" : "Archive";
<input type="hidden" name="id" value="@Request.QueryString["id"]" />
<input type="hidden" name="releaseFileId" value="@wikiFile.Id" />
<input type="submit" value="@buttonText" class="actionButton" />
}
</td>
</tr>
}
</table>
</p>
</fieldset>
<fieldset>
<legend>Upload file</legend>
<div id="">
@using (Html.BeginUmbracoForm<ProjectController>("AddFile"))
{
<span style="color: red;">
@Html.ValidationSummary()
</span>
<div id="">
<p>
<label class="inputLabel">Pick file (10 MB max):</label>
</p>
<div>
<div>
<input type="file" class="title" name="UploadFile.File">
</div>
</div>
<p></p>
<p>
<label class="inputLabel">Choose filetype</label>
@Html.DropDownListFor(model => model.UploadFile.FileType, new List<SelectListItem>
{
new SelectListItem { Text = "Package", Value = "package" },
new SelectListItem { Text = "Hot Fix", Value = "hotfix"},
new SelectListItem { Text = "Documentation", Value = "docs"},
new SelectListItem { Text = "Source Code", Value = "source"}
})
</p>
<div class="pickversionWrapper">
<p id="pickVersion">
<label class="inputLabel">Choose umbraco version</label>
</p>
<div class="pickVersion" style="float: left; margin-bottom: 10px;">
@foreach (var item in Model.UploadFile.AvailableVersions)
{
var versionsSelected = Model.UploadFile.SelectedVersions;
<input type="checkbox" name="UploadFile.SelectedVersions" value="@item.Value" id="@item.Value" @if (versionsSelected != null && versionsSelected.Contains(item.Value)) { <text> checked="checked" </text> } /> <label for="@item.Value" style="display: inline; padding: 0;">@item.Text</label><br />
}
</div>
<p style="clear: both; margin-bottom: 10px;">If your package manifest references a specific version of Umbraco, then that will be used instead.</p>
</div>
<p id="pickNetVersion">
<label class="inputLabel">Choose supported .NET runtime</label>
<select name="UploadFile.DotNetVersion" class="title">
<option value=""></option>
<option value="2.0">2.0</option>
<option value="3.5">3.5</option>
<option value="4.0">4.0</option>
<option value="4.5">4.5</option>
<option value="4.5.1">4.5.1</option>
<option value="4.5.2">4.5.2</option>
<option value="4.6.0">4.6.0</option>
<option value="4.6.1">4.6.1</option>
</select><br>
</p>
<p>
<input type="hidden" name="UploadFile.ProjectId" value="@Request.QueryString["id"]" />
<input type="submit" value="Save file" class="submitButton button blue tiny">
</p>
</div>
}
<div class="buttons">
<a href="/member/profile/projects/edit/?editorStep=screenshots&id=@Request.QueryString["id"]" class="submitButton button green tiny" style="color: white;">Next</a>
</div>
</div>
</fieldset>
</div>
</div>
@@ -0,0 +1,87 @@
@using OurUmbraco.Our.Controllers
@model OurUmbraco.Our.Models.EditScreenshotModel
<div class="package-create">
@Html.Partial("~/Views/Partials/Project/PackageEditNavigation.cshtml", "screenshots")
<div class="form simpleForm" id="registrationForm">
<fieldset>
<legend>Current project files</legend>
<p>
<table class="dataTable">
<thead>
<tr>
<th>Image</th>
<th>Uploaded</th>
<th class="center">Default</th>
<th class="center">Delete</th>
</tr>
</thead>
<tbody>
@foreach (var wikiFile in Model.AvailableFiles)
{
<tr>
<td><img src="@wikiFile.Path?height=100" /></td>
<td>@wikiFile.CreateDate</td>
<td class="center">
@if (wikiFile.Current == false)
{
using (Html.BeginUmbracoForm<ProjectController>("MarkFileAsCurrent"))
{
<input type="hidden" name="id" value="@Request.QueryString["id"]" />
<input type="hidden" name="releaseFileId" value="@wikiFile.Id" />
<input type="submit" value="Make current" class="actionButton" />
}
}
else
{
<text>Current</text>
}
</td>
<td class="center">
@using (Html.BeginUmbracoForm<ProjectController>("DeleteScreenshot"))
{
<input type="hidden" name="id" value="@Request.QueryString["id"]" />
<input type="hidden" name="releaseFileId" value="@wikiFile.Id" />
<input type="submit" value="Delete" class="actionButton" />
}
</td>
</tr>
}
</table>
</p>
</fieldset>
<fieldset>
<legend>Upload file</legend>
<div id="">
@using (Html.BeginUmbracoForm<ProjectController>("AddScreenshot"))
{
<span style="color: red;">
@Html.ValidationSummary()
</span>
<div id="">
<p>
<label class="inputLabel">Pick file (10 MB max):</label>
</p>
<div>
<div>
<input type="file" class="title" name="UploadFile.File">
</div>
</div>
<p>
<input type="hidden" name="UploadFile.ProjectId" value="@Request.QueryString["id"]" />
<input type="submit" value="Save file" class="submitButton button blue tiny">
</p>
</div>
}
<div class="buttons">
<a href="/member/profile/projects/edit/?editorStep=complete&id=@Request.QueryString["id"]" class="submitButton button green tiny" style="color: white;">Next</a>
</div>
</div>
</fieldset>
</div>
</div>
@@ -0,0 +1,14 @@
@model string
@{
var projectId = Request["projectId"];
if (string.IsNullOrWhiteSpace(projectId))
{
projectId = Request["id"];
}
}
<ul class="stepNavigation">
<li class="@(Model == "details" ? "current" : null)" style="text-decoration: underline;"><a href="/member/profile/projects/details?projectId=@projectId">Package Details</a></li>
<li class="@(Model == "files" ? "current" : null)" style="text-decoration: underline;"><a href="/member/profile/projects/edit?editorStep=files&id=@projectId">Package Files</a></li>
<li class="@(Model == "screenshots" ? "current" : null)" style="text-decoration: underline;"><a href="/member/profile/projects/edit?editorStep=screenshots&id=@projectId">Screenshots</a></li>
<li class="@(Model == "complete" ? "current" : null)" style="text-decoration: underline;"><a href="/member/profile/projects/edit?editorStep=complete&id=@projectId">Creation Complete</a></li>
</ul>
@@ -66,11 +66,11 @@
<div class="versions">
@if (Model.WorksOnUaaS)
{
<span class="smiley joyous">Works on Umbraco as a Service</span>
<span class="smiley joyous">Works on Umbraco Cloud</span>
}
else
{
<span class="smiley untested">Untested or doesn't work on Umbraco as a Service</span>
<span class="smiley untested">Untested or doesn't work on Umbraco Cloud</span>
}
@foreach (var ver in Model.VersionCompatibilities)
{
@@ -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
@@ -22,7 +20,7 @@
}
if (category != null)
{
headline = category == "uaas" ? "Umbraco as a Service" : category.ToLowerInvariant();
headline = category == "uaas" ? "Umbraco Cloud" : category.ToLowerInvariant();
}
var searchFilters = new SearchFilters(BooleanOperation.And);
@@ -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);
}
}
@@ -188,7 +185,9 @@
defaultScreenshot = childContent.GetPropertyValue("defaultScreenshotPath", false, "/css/img/package2.png");
}
}
<img src="@Utils.GetScreenshotPath(defaultScreenshot)?bgcolor=fff&width=50&height=50&format=png" />
<img src="@Utils.GetScreenshotPath(defaultScreenshot)?bgcolor=fff&width=50&height=50&format=png"
srcset="@Utils.GetScreenshotPath(defaultScreenshot)?bgcolor=fff&width=100&height=100&format=png 2x,
@Utils.GetScreenshotPath(defaultScreenshot)?bgcolor=fff&width=150&height=150&format=png 3x" />
</div>
<div class="col-xs-10 col-md-6">
<div class="forum-thread-text">
@@ -0,0 +1,61 @@
@using OurUmbraco.MarketPlace.Interfaces
@using OurUmbraco.Project
@model OurUmbraco.Our.Models.MyProjectsModel
<div class="profile-settings">
<strong>My Packages</strong>
<div class="profile-settings-packages packages-content">
<a href="/member/profile/projects/details?projectId=" class="button green"><i class="icon-Add"></i>Add package</a>
@foreach (var project in Model.Projects)
{
@RenderProject(project)
}
<strong>Package Contributions</strong>
@foreach (var project in Model.ContribProjects)
{
@RenderProject(project)
}
</div>
</div>
@helper RenderProject(IListingItem project)
{
<div class="box liked">
<div class="row">
<div class="col-xs-2 col-md-1">
<img src="@(string.IsNullOrEmpty(project.DefaultScreenshot) ? "/css/img/package2.png" : project.DefaultScreenshot)?width=65&height=65" alt="">
</div>
<div class="col-xs-10 col-md-6">
<div class="forum-thread-text">
<h3><a href="@project.NiceUrl">@project.Name</a></h3>
<p>
@project.Description.StripHtmlAndLimit(45) ...
<br />
<a href="details?projectId=@project.Id">Edit</a>
<a href="manage-project-forums/?id=@project.Id">Forums</a>
<a href="manage-team/?id=@project.Id">Team</a>
</p>
</div>
</div>
<div class="col-xs-12 col-md-5">
<div class="other">
<div class="package-badge">
<span class="package-name">version</span>
<span class="package-number">@project.CurrentVersion</span>
</div>
<span class="stats">
<span class="downloads">
@project.Downloads<span><i class="icon-Download-alt"></i></span>
</span>
<span class="karma">
@project.Karma<span><i class="icon-Hearts"></i></span>
</span>
</span>
</div>
</div>
</div>
</div>
}
@@ -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");
@@ -79,7 +81,7 @@
@foreach (var image in screenshots)
{
<a class="fancybox" rel="gallery1" href="@Utils.GetScreenshotPath(image.Path)" title="">
<a class="fancybox" data-fancybox="package-gallery" href="@Utils.GetScreenshotPath(image.Path)" title="">
<img src="@Utils.GetScreenshotPath(image.Path)?bgcolor=fff&height=154&width=281&format=png" alt=""/>
</a>
}
@@ -234,7 +236,7 @@
<a href="@forum.Url" class="forum-thread">
<div class="row">
<div class="col-xs-10 col-md-0">
<div class="col-xs-12 col-md-12">
<div class="forum-thread-text">
<h3>@forum.Name</h3>
<p>@forum.forumDescription</p>
@@ -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>
@@ -281,7 +311,7 @@
@if (currentMember != null && (currentMember.Id == owner.Id || contributors.Any(c => c.MemberId == currentMember.Id)))
{
<br/><br/>
<a href="/member/profile/projects/edit?id=@project.Id">Edit project</a>
<a href="/member/profile/projects/details?projectId=@project.Id">Edit project</a>
}
</div>
</div>
@@ -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 (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;
}
}
@@ -0,0 +1,94 @@
@using OurUmbraco.Our
@model OurUmbraco.Our.Models.SearchResultContentModel
<div class="plain">
<!-- search OVERVIEW START -->
<section class="search-results">
<div>
<!-- FORUM HEADER START -->
<div class="utilities">
<ul id="breadcrumb">
<li><a href="/" rel="nofollow">Our Umbraco</a></li>
<li><a href="#" rel="nofollow">Search</a></li>
<li><a href="#" rel="nofollow">@Model.Results.SearchTerm</a></li>
</ul>
</div>
@if (Context.IsDebuggingEnabled)
{
<div style="border: 1px solid orange;">
<p>
<strong>Debugging output</strong><br />
<strong>Query:</strong> @Model.Results.LuceneQuery<br />
<strong>Order by:</strong> @Model.Results.OrderBy<br />
<strong>Time elapsed:</strong> @Model.Results.Totalmilliseconds
</p>
</div>
}
<div class="search-big">
<asp:TextBox runat="server" ID="SearchText"></asp:TextBox>
<label for="SearchText">Search</label>
</div>
@if(Request.QueryString["cat"] == "forum") {
<div id="search-options" class="search-options">
<label>Sort by</label>
<div class="options">
<label class="checkbox">
<input type="checkbox" name="solved" />
<span></span>
<small>show only solved topics</small>
</label>
<label class="checkbox">
<input type="checkbox" name="replies" />
<span></span>
<small>show only topics with replies</small>
</label>
<label class="checkbox">
<input type="checkbox" name="order" value="updateDate" />
<span></span>
<small>show last updated first</small>
</label>
</div>
</div>
}
@if(Model.Results.SearchResults.Any() == false) {
<p class="message">No results</p>
}
<section>
@if(string.IsNullOrWhiteSpace(Model.Results.Category) == false) {
<h2 class="search-in">Results from category: @Model.Results.Category</h2>
}
<ul class="search-all-results docs-search-listing">
@foreach(var result in Model.Results.SearchResults) {
<li class="@result.SolvedClass()">
<a href="@result.FullUrl()">
<div class="type-icon">
<i class="<%=result.GetIcon() %>"></i>
</div>
<div class="type-context">
<div class="type-name">@result.GetTitle()</div>
<span class="type-datetime">@result.GetDate()</span>
<div class="type-description">@result.GenerateBlurb(300)</div>
</div>
</a>
</li>
}
</ul>
</section>
</div>
</section>
<!-- search OVERVIEW END -->
</div>
+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>
+26
View File
@@ -0,0 +1,26 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div class="page-content">
<div id="overlay" class="overlay"></div>
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@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">
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
</div><!-- .page-content -->
+28
View File
@@ -0,0 +1,28 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<section class="plain">
<div>
<!-- FORUM HEADER START -->
<div class="utilities">
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = false })
<div class="clear"></div>
</div>
@Html.Partial("~/Views/Partials/Projects/ProjectDetails.cshtml")
</div>
</section>
@section EndScripts {
<script type="text/javascript">
(function () {
$(".fancybox")
.fancybox({
// options
loop: true,
arrows: true,
infobar: false
});
})();
</script>
}
+21
View File
@@ -0,0 +1,21 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div class="page-content">
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
@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">
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
</div><!-- .page-content -->
+76
View File
@@ -0,0 +1,76 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div class="page-content">
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
<nav>
<ul class="level-1">
<li class="filter-orderBy">
<h3>Projects</h3>
<ul class="level-2">
<li><h4><a href="?orderBy=updateDate">Updated projects</a></h4></li>
<li><h4><a href="?orderBy=popularity">Popular projects</a></h4></li>
</ul>
</li>
<li class="filter-version">
<h3>By Version</h3>
<ul class="level-2">
<li><h4><a href="?version=7">Version 7</a></h4></li>
<li><h4><a href="?version=6">Version 6</a></h4></li>
<li><h4><a href="?version=4">Version 4</a></h4></li>
</ul>
</li>
<li class="filter-category">
<h3>By Category</h3>
@Html.Partial("~/Views/Partials/Projects/ListCategories.cshtml")
</li>
</ul>
</nav>
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div><!-- .sidebar-area -->
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
<div>
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
</div>
<div class="packages-content">
@Html.Partial("~/Views/Partials/Projects/ListProjects.cshtml")
</div>
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
</div><!-- .page-content -->
@section EndScripts
{
<script type="text/javascript">
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var query = getUrlVars();
var filter = '.filter-' + query[0];
$(filter).addClass('open');
$('.level-1>li').on('click', function () {
$('.level-1>li').removeClass('open');
$(this).addClass('open');
});
</script>
}
@@ -0,0 +1,30 @@
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
}
<div class="has-sidebar">
<div class="page-content">
<div id="overlay" class="overlay"></div>
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
<nav>
<ul class="level-1">
<li class="">
<h3>Profile</h3>
</li>
</ul>
</nav>
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div><!-- .sidebar-area -->
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
@Html.Partial("~/Views/Partials/Members/PublicProfile.cshtml")
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
</div><!-- .page-content -->
</div>
+363
View File
@@ -0,0 +1,363 @@
@using OurUmbraco.Release
@inherits UmbracoTemplatePage
@{
Layout = "~/Views/Master.cshtml";
var downloads = Model.Content.Children().Where(x => x.ContentType.Alias == "ReleaseDownload").ToArray();
if (Request.Params["fromdownload"] != null)
{
if (downloads.Any())
{
var downloadIds = new List<int>();
foreach (var item in downloads)
{
downloadIds.Add(item.Id);
}
Response.Redirect("/ReleaseDownload?id=" + downloadIds.First(), false);
}
}
var currentPage = UmbracoContext.Current.PublishedContentRequest.PublishedContent;
var allReleases = Release.GetAllReleaseFromFile();
var release = allReleases.First(x => x.version == currentPage.Name);
var completedIssues = release.issues.Count(x => x.state == "Fixed");
var totalIssues = release.issues.Count();
var percentComplete = Math.Round(((double)100 / totalIssues) * completedIssues);
var releaseDateParsed = DateTime.Now;
if (release.releaseDate != string.Empty)
{
releaseDateParsed = DateTime.Parse(release.releaseDate.Substring(3, 2) + "-" + release.releaseDate.Substring(0, 2) + "-" + release.releaseDate.Substring(6));
}
var releaseDate = release.releaseDate == "" ? "Not yet determined" : releaseDateParsed.ToString("dddd, MMMM d yyyy");
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var releaseContent = umbracoHelper.TypedContent(umbracoHelper.UmbracoContext.PageId);
if (releaseContent != null)
{
var overrideDescription = releaseContent.GetPropertyValue<bool>("overrideYouTrackDescription");
if (overrideDescription)
{
release.releaseDescription = releaseContent.GetPropertyValue<string>("bodyText");
}
var overrideReleaseDate = releaseContent.GetPropertyValue<string>("overrideYouTrackReleaseDate");
if (string.IsNullOrWhiteSpace(overrideReleaseDate) == false)
{
releaseDate = overrideReleaseDate;
}
}
}
<div class="has-sidebar release">
<div class="page-content">
<div class="sidebar-area">
<div class="sidebar-content">
<div class="content-wrapper">
<nav>
<ul class="level-1">
@foreach (var currentRelease in allReleases.Where(x => x.released && x.currentRelease))
{
<li>
<a class="active" href="/contribute/releases/@(currentRelease.version.Replace(".", string.Empty))"><h3>Latest Release - v@(currentRelease.version)</h3></a>
</li>
}
<li>
<a href="/contribute/progress"><h3>In Progress</h3></a>
</li>
<li>
<a href="/contribute/releases"><h3>All Releases</h3></a>
<ul class="level-2">
<li>
<a href=""><h4>Umbraco 7</h4></a>
</li>
<li>
<a href=""><h4>Umbraco 6</h4></a>
</li>
<li>
<a href=""><h4>Umbraco 4</h4></a>
</li>
</ul>
</li>
</ul>
</nav>
</div><!-- .content-wrapper -->
</div><!-- .sidebar-content -->
</div>
<div class="main-area">
<div class="main-content">
<div class="content-wrapper">
<div>
@Html.Action("Render", "Breadcrumb", new { linkToCurrent = true })
</div>
<style>
.release-page .explain h2 {
margin-top: 12px;
font-size: 2em;
margin-bottom: .3rem;
color: rgba(0,0,0,.8);
}
.release-page .dot {
border: none;
}
.release-page .dot.big {
position: relative;
text-indent: 0;
margin: 15px auto 0;
}
.release-page .chart {
height: 60px;
width: 60px;
top: initial;
left: initial;
text-align: center;
}
.release-page .chart p {
vertical-align: middle;
line-height: 3.7rem;
display: inline-block;
}
.release-page .chart canvas {
top: 0px;
left: 0px;
}
.statuses ul {
list-style-type: none;
}
.statuses ul li {
position: relative;
margin-bottom: 10px;
padding-left: 10px;
}
.statuses li:before {
position: absolute;
top: -4px;
left: -25px;
font-size: 1.5em;
}
</style>
<div class="row explain">
<div class="col-sm-2">
<span class="dot big progress">
<div class="chart" data-percent="percentComplete">
<p>@(percentComplete)%</p>
</div>
</span>
</div>
<div class="col-sm-10">
<h2>v@(Model.Content.Name)</h2>
<small>Status: <span>@(release.released ? "Released" : "In Progress")</span></small>
@if (release.released == false)
{
<h3>
<span>@(percentComplete)% complete</span>
<span>@(100 - percentComplete)% in progress</span>
</h3>
<h3>Target release date: <span style="color:#5B5B5B">@releaseDate</span></h3>
}
@if (Model.Content.HasValue("releaseNotes"))
{
<small><p>@Html.Raw(Model.Content.GetPropertyValue<string>("releaseNotes"))</p></small>
}
</div>
</div>
<div>
@{
var countIsOdd = ((downloads.Count() & 1) != 0) ? true : false;
if (downloads.Any())
{
<div class="get-release row">
@foreach (var item in downloads)
{
var background = item.IsFirst() ? "/images/releases/download.png" : "/media/2483095/download.png";
var width = (item.IsLast() && countIsOdd) ? 895 : 380;
var numberOfDownloads = item.GetPropertyValue<int>("numberOfDownloads");
numberOfDownloads = numberOfDownloads + OurUmbraco.Our.Utils.GetReleaseDownloadCount(item.Id);
if (item.Name.Contains("WebPI") == false)
{
<div class="release @(item.IsFirst() == false ? "bin" : "zip") col-sm-1">
<i class="icon-Download-alt"></i>
</div>
<div class="release @(item.IsFirst() == false ? "bin" : "zip") col-md-5">
<h3><a href="/ReleaseDownload?id=@item.Id" onclick="_gaq.push(['_trackEvent', 'Release', 'Download', '@item.Name']);">@item.Name</a></h3>
@if (item.IsFirst())
{
<p>This is the main Umbraco download, generally you won't need anything else.</p>
}
<small>Downloaded @numberOfDownloads times - uploaded @(item.GetPropertyValue<DateTime>("UploadDate").ToString("D"))</small>
</div>
}
else
{
<div style="display: none;"><a href="/ReleaseDownload?id=@item.Id" onclick="_gaq.push(['_trackEvent', 'Release', 'Download', '@item.Name']);">@item.Name</a></div>
}
}
</div>
}
}
<div class="row markdown-syntax">
<div class="col-md-5">
@if (release.releaseDescription != string.Empty && currentPage.HasValue("bodyText") == false)
{
<span>
<h2>Summary</h2>
<p><span>@Html.Raw(release.releaseDescription)</span></p>
</span>
}
@if (Model.Content.HasValue("bodyText"))
{
<h2>Release notes</h2>
@Html.Raw(Model.Content.GetPropertyValue<string>("bodyText"))
}
<h2>Related changes from the issue tracker</h2>
<div class="panel-wrapper">
<div class="panel-left">
<!-- Columns for statuses -->
<div class="statuses group">
<div class="status features">
<h3>Features</h3>
@{
var features = release.issues.Where(x => x.type.ToLowerInvariant().Contains("feature")).ToList();
if (features.Any())
{
foreach (var issue in features)
{
<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>
}
}
else
{
<p>No items to display</p>
}
}
</div>
<div class="status breaking">
<h3>Breaking Changes</h3>
@{
var breaking = release.issues.Where(x => x.breaking).ToList();
if (breaking.Any())
{
foreach (var issue in breaking)
{
<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>
}
}
else
{
<p>No items to display</p>
}
}
</div>
<div class="status issues">
<h3>Issues & Tasks</h3>
@{
var issues = release.issues.Where(x => x.breaking == false && x.type.ToLowerInvariant().Contains("feature") == false).ToList();
if (issues.Any())
{
foreach (var issue in 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>
}
}
else
{
<p>No items to display</p>
}
}
</div>
</div>
</div>
</div>
</div>
<div class="col-md-5 col-md-offset-2">
<h2>Getting started</h2>
<p>Make sure to give the <a href="http://our.umbraco.org/documentation/Installation/">installation instructions a read</a>.</p>
<p>
Check the <strong>free</strong> <a href="http://umbraco.tv/videos/umbraco-v7/implementor/">foundation videos</a> on how to get started building Umbraco sites. They're available from:<br />
<ul>
<li><a href="http://umbraco.tv/videos/umbraco-v7/implementor/fundamentals/installation/">Installation</a></li>
<li><a href="http://umbraco.tv/videos/umbraco-v7/implementor/fundamentals/document-types/">Document Types</a></li>
<li><a href="http://umbraco.tv/videos/umbraco-v7/implementor/fundamentals/templating/">Templating</a></li>
<li><a href="http://umbraco.tv/videos/umbraco-v7/implementor/fundamentals/stylesheets-and-javascript/">Stylesheets and Javascript</a></li>
</ul>
<h2>World's best community</h2>
<p>You'll find our über active community working hard to help each other at Our Umbraco: <a href="http://our.umbraco.org">http://our.umbraco.org</a></p>
<h2>Upgrading from older versions</h2>
<p>Make sure to read the <a href="http://our.umbraco.org/documentation/Installation/Upgrading/">upgrade instructions</a> before you attempt an upgrade.</p>
<h2>Found a bug?</h2>
<p>We're happy to help you with any problems you encounter, so please report them in <a href="http://issues.umbraco.org/issues/U4">the issue tracker</a> and use the “Affected versions” field to set it to @Model.Content.Name. <br />Do a search first though, if the issue already exists, give it an extra vote.</p>
@if (Model.Content.HasValue("linkToChangeset"))
{
<h2>Source code</h2>
<p>The source for <a href="@(Model.Content.GetPropertyValue<string>("linkToChangeset"))">this specific release is available for download from the repository</a> (click the "ZIP" button).</p>
}
@if (Model.Content.GetPropertyValue<bool>("hasNuGet"))
{
<h2>Also available on NuGet</h2>
<div class="nuget-badge">
<a href="https://nuget.org/packages/UmbracoCms/@Model.Content.Name">
<p><code>PM&gt; Install-Package UmbracoCms -Version @Model.Content.Name</code></p>
</a>
</div>
}
</div><!-- col-md-5 col-md-offset-2 -->
</div><!-- .row .markdown-syntax -->
</div>
</div><!-- .content-wrapper -->
</div><!-- .main-content -->
</div><!-- .main-area -->
</div><!-- .page-content -->
</div><!-- has-sidebar -->
@section EndScripts {
<script src="https://cdnjs.cloudflare.com/ajax/libs/easy-pie-chart/2.1.4/jquery.easypiechart.min.js"></script>
<script type="text/javascript">
setTimeout(function () {
$('.chart').easyPieChart({
size: 60,
barColor: '#569327',
scaleColor: false,
trackColor: '#daf0c9'
});
}, 300);
</script>
}

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