├── .gitignore
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── appveyor.yml
├── build-appveyor.cmd
├── build.cmd
├── build
├── package.nuspec
├── package.proj
├── package.xml
└── tools
│ ├── AppVeyorUmbraco
│ └── AppVeyorUmbraco.Targets
│ ├── MSBuildCommunityTasks
│ ├── ICSharpCode.SharpZipLib.dll
│ ├── MSBuild.Community.Tasks.Targets
│ ├── MSBuild.Community.Tasks.chm
│ ├── MSBuild.Community.Tasks.dll
│ ├── MSBuild.Community.Tasks.xml
│ └── Sample.proj
│ ├── MSBuildNuGetTasks
│ ├── MSBuild.NuGet.Tasks.Targets
│ └── MSBuild.NuGet.Tasks.dll
│ └── MSBuildUmbracoTasks
│ ├── ICSharpCode.SharpZipLib.dll
│ ├── MSBuild.Umbraco.Tasks.Targets
│ └── MSBuild.Umbraco.Tasks.dll
├── docs
├── README.md
├── assets
│ └── img
│ │ └── logo.png
└── developers-guide.md
└── src
├── .nuget
└── NuGet.exe
├── Our.Umbraco.UnVersion.Tests
├── Our.Umbraco.UnVersion.Tests.csproj
├── Properties
│ └── AssemblyInfo.cs
├── Services
│ └── UnVersionServiceTests.cs
├── TestHelper.cs
├── app.config
└── packages.config
├── Our.Umbraco.UnVersion.sln
└── Our.Umbraco.UnVersion
├── Our.Umbraco.UnVersion.csproj
├── Properties
├── AssemblyInfo.cs
└── VersionInfo.cs
├── Services
├── IUnVersionService.cs
└── UnVersionService.cs
├── UnVersionComponent.cs
├── UnVersionComposer.cs
├── UnVersionConfig.cs
├── Web
└── UI
│ └── Config
│ └── unVersion.config
├── app.config
└── packages.config
/.gitignore:
--------------------------------------------------------------------------------
1 | _ReSharper.*
2 | [Bb]in/
3 | [Oo]bj/
4 | *.suo
5 | *.user
6 | *.userprefs
7 | *.cache
8 | *.orig
9 | Thumbs.db
10 | .DS_Store
11 | *.log
12 | .vs
13 |
14 | artifacts/
15 | src/packages/*/**
16 | build/[Cc]onfig/
17 | build/[Bb]in/
18 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to this project
2 |
3 | Please take a moment to review this document in order to make the contribution
4 | process easy and effective for everyone involved.
5 |
6 | Following these guidelines helps to communicate that you respect the time of
7 | the developers managing and developing this open source project. In return,
8 | they should reciprocate that respect in addressing your issue or assessing
9 | patches and features.
10 |
11 |
12 | ## Using the issue tracker
13 |
14 | The issue tracker is the preferred channel for [bug reports](#bugs),
15 | [features requests](#features) and [submitting pull
16 | requests](#pull-requests), but please respect the following restrictions:
17 |
18 | * Please **do not** use the issue tracker for personal support requests (use
19 | [Our Umbraco](https://our.umbraco.org/projects/website-utilities/unversion/bugs-feedback-and-suggestions/) or Twitter).
20 |
21 | * Please **do not** derail or troll issues. Keep the discussion on topic and
22 | respect the opinions of others.
23 |
24 |
25 |
26 | ## Bug reports
27 |
28 | A bug is a _demonstrable problem_ that is caused by the code in the repository.
29 | Good bug reports are extremely helpful - thank you!
30 |
31 | Guidelines for bug reports:
32 |
33 | 1. **Use the GitHub issue search** — check if the issue has already been
34 | reported.
35 |
36 | 2. **Check if the issue has been fixed** — try to reproduce it using the
37 | latest `master` or development branch in the repository.
38 |
39 | 3. **Isolate the problem** — create a reduced test
40 | case and a live example.
41 |
42 | A good bug report shouldn't leave others needing to chase you up for more
43 | information. Please try to be as detailed as possible in your report. What is
44 | your environment? What steps will reproduce the issue? What browser(s) and OS
45 | experience the problem? What would you expect to be the outcome? All these
46 | details will help people to fix any potential bugs.
47 |
48 | Example:
49 |
50 | > Short and descriptive example bug report title
51 | >
52 | > A summary of the issue and the browser/OS environment in which it occurs. If
53 | > suitable, include the steps required to reproduce the bug.
54 | >
55 | > 1. This is the first step
56 | > 2. This is the second step
57 | > 3. Further steps, etc.
58 | >
59 | > `` - a link to the reduced test case
60 | >
61 | > Any other information you want to share that is relevant to the issue being
62 | > reported. This might include the lines of code that you have identified as
63 | > causing the bug, and potential solutions (and your opinions on their
64 | > merits).
65 |
66 |
67 |
68 | ## Feature requests
69 |
70 | Feature requests are welcome. But take a moment to find out whether your idea
71 | fits with the scope and aims of the project. It's up to *you* to make a strong
72 | case to convince the project's developers of the merits of this feature. Please
73 | provide as much detail and context as possible.
74 |
75 |
76 |
77 | ## Pull requests
78 |
79 | Good pull requests - patches, improvements, new features - are a fantastic
80 | help. They should remain focused in scope and avoid containing unrelated
81 | commits.
82 |
83 | **Please ask first** before embarking on any significant pull request (e.g.
84 | implementing features, refactoring code, porting to a different language),
85 | otherwise you risk spending a lot of time working on something that the
86 | project's developers might not want to merge into the project.
87 |
88 | Please adhere to the coding conventions used throughout a project (indentation,
89 | accurate comments, etc.) and any other requirements (such as test coverage).
90 |
91 | Follow this process if you'd like your work considered for inclusion in the
92 | project:
93 |
94 | 1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
95 | and configure the remotes:
96 |
97 | ```bash
98 | # Clone your fork of the repo into the current directory
99 | git clone https://github.com//
100 | # Navigate to the newly cloned directory
101 | cd
102 | # Assign the original repo to a remote called "upstream"
103 | git remote add upstream https://github.com//
104 | ```
105 |
106 | 2. If you cloned a while ago, get the latest changes from upstream:
107 |
108 | ```bash
109 | git checkout develop
110 | git pull upstream develop
111 | ```
112 |
113 | 3. Create a new topic branch (off the main project `develop` branch) to
114 | contain your feature, change, or fix:
115 |
116 | ```bash
117 | git checkout -b
118 | ```
119 |
120 | 4. Commit your changes in logical chunks. Please adhere to these [git commit
121 | message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
122 | or your code is unlikely be merged into the main project. Use Git's
123 | [interactive rebase](https://help.github.com/articles/interactive-rebase)
124 | feature to tidy up your commits before making them public.
125 |
126 | 5. Locally merge (or rebase) the upstream development branch into your topic branch:
127 |
128 | ```bash
129 | git pull [--rebase] upstream develop
130 | ```
131 |
132 | 6. Push your topic branch up to your fork:
133 |
134 | ```bash
135 | git push origin
136 | ```
137 |
138 | 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
139 | with a clear title and description.
140 |
141 | **IMPORTANT**: By submitting a patch, you agree to allow the project owner to
142 | license your work under the same license as that used by the project.
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright © 2020 Søren Kottal, Our Umbraco and other contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9 | of the Software, and to permit persons to whom the Software is furnished to do
10 | so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # UnVersion
2 |
3 | [](https://ci.appveyor.com/project/umco/umbraco-unversion)
4 | [](https://www.nuget.org/packages/Our.Umbraco.UnVersion)
5 | [](https://our.umbraco.org/projects/website-utilities/unversion/)
6 |
7 |
8 | This package automaticaly removes any previous versions for those times when a version history isn't important, and you don't want to take up the database space.
9 |
10 |
11 | ## Getting Started
12 |
13 | ### Installation
14 |
15 | > *Note:* UnVersion has been developed against **Umbraco v8.4.0** and will support that version and above.
16 |
17 | UnVersion can be installed from either Our Umbraco or NuGet package repositories, or build manually from the source-code:
18 |
19 | #### Our Umbraco package repository
20 |
21 | To install from Our Umbraco, please download the package from:
22 |
23 | >
24 |
25 | #### NuGet package repository
26 |
27 | To [install from NuGet](https://www.nuget.org/packages/Our.Umbraco.UnVersion), you can run the following command from within Visual Studio:
28 |
29 | PM> Install-Package Our.Umbraco.UnVersion
30 |
31 | We also have a [MyGet package repository](https://www.myget.org/gallery/umbraco-packages) - for bleeding-edge / development releases.
32 |
33 | #### Manual build
34 |
35 | If you prefer, you can compile UnVersion yourself, you'll need:
36 |
37 | * Visual Studio 2017 (or above)
38 |
39 | To clone it locally click the "Clone in Windows" button above or run the following git commands.
40 |
41 | git clone https://github.com/skttl/umbraco-unversion.git umbraco-unversion
42 | cd umbraco-unversion
43 | .\build.cmd
44 |
45 | ---
46 |
47 | ## Developers Guide
48 |
49 | For details on how to use the UnVersion package, please refer to our [Developers Guide](docs/developers-guide.md) documentation.
50 |
51 | ---
52 |
53 | ## Contributing to this project
54 |
55 | Anyone and everyone is welcome to contribute. Please take a moment to review the [guidelines for contributing](CONTRIBUTING.md).
56 |
57 | * [Bug reports](CONTRIBUTING.md#bugs)
58 | * [Feature requests](CONTRIBUTING.md#features)
59 | * [Pull requests](CONTRIBUTING.md#pull-requests)
60 |
61 |
62 | ## Contact
63 |
64 | Have a question?
65 |
66 | * [UnVersion Forum](https://our.umbraco.org/projects/website-utilities/unversion/bugs-feedback-and-suggestions/) on Our Umbraco
67 | * [Raise an issue](https://github.com/skttl/umbraco-unversion/issues) on GitHub
68 |
69 |
70 | ## Dev Team
71 |
72 | * [Søren Kottal](https://github.com/skttl)
73 |
74 |
75 | ## License
76 |
77 | Copyright © 2020 Søren Kottal, Our Umbraco and [other contributors](https://github.com/umco/umbraco-unversion/graphs/contributors)
78 |
79 | Copyright © 2012 Matt Brailsford, Our Umbraco and [other contributors](https://github.com/umco/umbraco-unversion/graphs/contributors)
80 |
81 | Licensed under the [MIT License](LICENSE.md)
82 |
--------------------------------------------------------------------------------
/appveyor.yml:
--------------------------------------------------------------------------------
1 | image: Visual Studio 2017
2 |
3 | # version format
4 | version: 3.0.0.{build}
5 |
6 | # UMBRACO_PACKAGE_PRERELEASE_SUFFIX if a rtm release build this should be blank, otherwise if empty will default to alpha
7 | # example UMBRACO_PACKAGE_PRERELEASE_SUFFIX=beta
8 | init:
9 | - set UMBRACO_PACKAGE_PRERELEASE_SUFFIX=
10 |
11 | cache:
12 | - src\packages -> **\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified
13 |
14 | before_build:
15 | - nuget restore src
16 |
17 | build_script:
18 | - build-appveyor.cmd
19 |
20 | artifacts:
21 | - path: artifacts\*.nupkg
22 | - path: artifacts\*.zip
23 |
24 | deploy:
25 | # MyGet Deployment for builds & releases
26 | - provider: NuGet
27 | server: https://www.myget.org/F/umbraco-packages/api/v2/package
28 | symbol_server: https://www.myget.org/F/umbraco-packages/symbols/api/v2/package
29 | api_key:
30 | secure: MopTO3Wq0dA16UdDqhP2GIzXLzZqS4SxGPCGiwN1i1hEL0AYLscuJVq6Ot7XYD2m
31 | artifact: /.*\.nupkg/
32 | on:
33 | branch: develop
34 |
35 | # GitHub Deployment for releases
36 | - provider: GitHub
37 | auth_token:
38 | secure: Z9C0Mgv2YVEeAilwYB/x9jhPMyg73MSzKVviFSsHBYqjmV56ayWp/FMoEdspu3tE
39 | artifact: /.*\.zip/ # upload all Zip packages to release assets
40 | draft: false
41 | prerelease: false
42 | on:
43 | branch: master
44 | appveyor_repo_tag: true # deploy on tag push only
45 |
46 | # NuGet Deployment for releases
47 | - provider: NuGet
48 | server:
49 | skip_symbols: true
50 | api_key:
51 | secure: RYtJVVEuX1s2cy3Wo1Xly0yvp1n40wDdndhNsXQGgrAUmZDnlwujEycsLxUL8NsN
52 | artifact: /.*\.nupkg/
53 | on:
54 | branch: master
55 | appveyor_repo_tag: true
56 |
--------------------------------------------------------------------------------
/build-appveyor.cmd:
--------------------------------------------------------------------------------
1 | ECHO APPVEYOR_REPO_BRANCH: %APPVEYOR_REPO_BRANCH%
2 | ECHO APPVEYOR_REPO_TAG: %APPVEYOR_REPO_TAG%
3 | ECHO APPVEYOR_BUILD_NUMBER : %APPVEYOR_BUILD_NUMBER%
4 | ECHO APPVEYOR_BUILD_VERSION : %APPVEYOR_BUILD_VERSION%
5 |
6 | CALL src\.nuget\NuGet.exe restore src\Our.Umbraco.UnVersion.sln
7 | CALL "%programfiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\amd64\MsBuild.exe" build\package.proj
--------------------------------------------------------------------------------
/build.cmd:
--------------------------------------------------------------------------------
1 | ECHO off
2 |
3 | SET /P APPVEYOR_BUILD_NUMBER=Please enter a build number (e.g. 134):
4 | SET /P PACKAGE_VERISON=Please enter your package version (e.g. 1.0.5):
5 | SET /P UMBRACO_PACKAGE_PRERELEASE_SUFFIX=Please enter your package release suffix or leave empty (e.g. beta):
6 |
7 | SET /P APPVEYOR_REPO_TAG=If you want to simulate a GitHub tag for a release (e.g. true):
8 |
9 | if "%APPVEYOR_BUILD_NUMBER%" == "" (
10 | SET APPVEYOR_BUILD_NUMBER=100
11 | )
12 | if "%PACKAGE_VERISON%" == "" (
13 | SET PACKAGE_VERISON=0.0.0
14 | )
15 |
16 | SET APPVEYOR_BUILD_VERSION=%PACKAGE_VERISON%.%APPVEYOR_BUILD_NUMBER%
17 |
18 | build-appveyor.cmd
19 |
20 | @IF %ERRORLEVEL% NEQ 0 GOTO err
21 | @EXIT /B 0
22 | :err
23 | @PAUSE
24 | @EXIT /B 1
--------------------------------------------------------------------------------
/build/package.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 0.0.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/build/package.proj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | $(MSBuildProjectDirectory)\tools\MSBuildCommunityTasks
7 | $(MSBuildProjectDirectory)\tools\MSBuildUmbracoTasks
8 | $(MSBuildProjectDirectory)\tools\MSBuildNugetTasks
9 | $(MSBuildProjectDirectory)\tools\AppVeyorUmbraco
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | Our.Umbraco.UnVersion
20 | UnVersion
21 | 8.4.0
22 | A content un-versioning package for Umbraco 8.4+
23 | Søren Kottal, Matt Brailsford, Lee Kelleher
24 | https://github.com/skttl/umbraco-unversion/graphs/contributors
25 | MIT license
26 | http://opensource.org/licenses/MIT
27 | https://github.com/skttl/umbraco-unversion
28 |
29 |
30 |
31 |
32 | Our.Umbraco.UnVersion
33 | UnVersion for Umbraco
34 | Copyright © 2020 Søren Kottal, Our Umbraco and other contributors
35 | Søren Kottal, Matt Brailsford, Lee Kelleher
36 | https://raw.githubusercontent.com/skttl/umbraco-unversion/master/docs/assets/img/logo.png
37 | umbraco versioning
38 | en-GB
39 | false
40 |
41 |
42 |
43 |
44 | $(APPVEYOR_BUILD_VERSION)
45 |
46 |
47 |
48 |
49 | false
50 |
51 |
52 |
53 |
54 | true
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | true
63 |
64 |
65 |
66 |
67 | false
68 |
69 |
70 |
71 |
72 |
73 |
74 | Release
75 | $(MSBuildProjectDirectory)\..
76 | $(MSBuildProjectDirectory)\_umbraco
77 | $(MSBuildProjectDirectory)\_nuget
78 | $(RootDir)\artifacts
79 | $(RootDir)\src\$(ProjectName)
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
193 |
194 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
--------------------------------------------------------------------------------
/build/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 0.0.0
7 |
8 |
9 |
10 | 0
11 | 0
12 | 0
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/build/tools/AppVeyorUmbraco/AppVeyorUmbraco.Targets:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/build/tools/MSBuildCommunityTasks/ICSharpCode.SharpZipLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/build/tools/MSBuildCommunityTasks/ICSharpCode.SharpZipLib.dll
--------------------------------------------------------------------------------
/build/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.Targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | $(MSBuildExtensionsPath)\MSBuildCommunityTasks
7 | $(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/build/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/build/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.chm
--------------------------------------------------------------------------------
/build/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/build/tools/MSBuildCommunityTasks/MSBuild.Community.Tasks.dll
--------------------------------------------------------------------------------
/build/tools/MSBuildCommunityTasks/Sample.proj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
67 |
68 |
69 |
70 |
71 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
91 |
92 |
93 |
94 |
96 |
97 |
99 |
100 |
102 |
103 |
104 |
105 |
106 |
107 | list = new List();
110 | list.Add("Happy");
111 | list.Add("New");
112 | list.Add("Year");
113 | Console.WriteLine("Hello MSBuild Community Scripting World.");
114 | foreach(string s in list)
115 | {
116 | Console.WriteLine(s);
117 | }
118 | }
119 | ]]>
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
--------------------------------------------------------------------------------
/build/tools/MSBuildNuGetTasks/MSBuild.NuGet.Tasks.Targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | $(MSBuildProjectDirectory)\MSBuildTasks
6 | $(MSBuildNuGetTasksPath)\MSBuild.NuGet.Tasks.dll
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/build/tools/MSBuildNuGetTasks/MSBuild.NuGet.Tasks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/build/tools/MSBuildNuGetTasks/MSBuild.NuGet.Tasks.dll
--------------------------------------------------------------------------------
/build/tools/MSBuildUmbracoTasks/ICSharpCode.SharpZipLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/build/tools/MSBuildUmbracoTasks/ICSharpCode.SharpZipLib.dll
--------------------------------------------------------------------------------
/build/tools/MSBuildUmbracoTasks/MSBuild.Umbraco.Tasks.Targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | $(MSBuildProjectDirectory)\MSBuildTasks
6 | $(MSBuildUmbracoTasksPath)\MSBuild.Umbraco.Tasks.dll
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/build/tools/MSBuildUmbracoTasks/MSBuild.Umbraco.Tasks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/build/tools/MSBuildUmbracoTasks/MSBuild.Umbraco.Tasks.dll
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # UnVersion
2 | ## Documentation
3 |
4 | * [UnVersion - Developers Guide](developers-guide.md)
--------------------------------------------------------------------------------
/docs/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/docs/assets/img/logo.png
--------------------------------------------------------------------------------
/docs/developers-guide.md:
--------------------------------------------------------------------------------
1 | # UnVersion - Developers Guide
2 |
3 | ## Summary
4 |
5 | This package automaticaly removes any previous versions for those times when a version history aren't important, and you don't want to take up the database space.
6 | With Umbraco being such a versatile platform, it's very easy to develop small scale apps that go beyond the regular "Content" paradim. In some situations, version history becomes unimportant, and a waste, so this package automaticaly cleans up any previous versions when a new version is published.
7 |
8 | ## How to use
9 |
10 | The package is configured via an unVersion.config file located in the default umbraco config folder.
11 | To define a new unversion rule, create an `` element with the following attributes.
12 |
13 | ```xml
14 |
15 |
16 |
17 |
18 | ```
19 |
20 | **`docTypeAlias`** _[Optional]_ - The doc type alias of the documents to be unversioned, if undefined, applies to all (If you don't define `docTypeAlias`, it is advised you define rootXpath to narrow down the scope of the unversion).
21 |
22 | **`rootXpath`** _[Optional]_ - An XPath statement to define the root folder for the unversion rule, e.g. `"//NewsIndex"`
23 |
24 | **`maxDays`** _[Optional]_ - The maximum number of days to keep versions. If attribute is not present, defaults to `int.MaxValue`.
25 |
26 | **`maxCount`** _[Optional]_ - The maximum number of latest versions to keep. If attribute is not present, defaults to `int.MaxValue`.
27 |
28 |
29 | ---
30 |
31 | ### Useful Links
32 |
33 | * [Source Code](https://github.com/umco/umbraco-unversion)
34 | * [Our Umbraco Project Page](https://our.umbraco.org/projects/website-utilities/unversion/)
35 |
--------------------------------------------------------------------------------
/src/.nuget/NuGet.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skttl/umbraco-unversion/3ad56e5f7fc5838910d10bb3c5fe4e03059ac1c3/src/.nuget/NuGet.exe
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion.Tests/Our.Umbraco.UnVersion.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Debug
7 | AnyCPU
8 | {DB4825F3-92CB-44CA-96F1-2680026DAFB1}
9 | Library
10 | Properties
11 | Our.Umbraco.UnVersion.Tests
12 | Our.Umbraco.UnVersion.Tests
13 | v4.7.2
14 | 512
15 | {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
16 | 15.0
17 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
18 | $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
19 | False
20 | UnitTest
21 |
22 |
23 |
24 |
25 | true
26 | full
27 | false
28 | bin\Debug\
29 | DEBUG;TRACE
30 | prompt
31 | 4
32 |
33 |
34 | pdbonly
35 | true
36 | bin\Release\
37 | TRACE
38 | prompt
39 | 4
40 |
41 |
42 |
43 | ..\packages\AutoMapper.8.0.0\lib\net461\AutoMapper.dll
44 |
45 |
46 | ..\packages\Castle.Core.4.4.0\lib\net45\Castle.Core.dll
47 |
48 |
49 | ..\packages\ClientDependency.1.9.8\lib\net45\ClientDependency.Core.dll
50 |
51 |
52 | ..\packages\ClientDependency-Mvc5.1.9.3\lib\net45\ClientDependency.Core.Mvc.dll
53 |
54 |
55 | ..\packages\CSharpTest.Net.Collections.14.906.1403.1082\lib\net40\CSharpTest.Net.Collections.dll
56 |
57 |
58 | ..\packages\Examine.1.0.1\lib\net452\Examine.dll
59 |
60 |
61 | ..\packages\HtmlAgilityPack.1.8.14\lib\Net45\HtmlAgilityPack.dll
62 |
63 |
64 | ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
65 |
66 |
67 | ..\packages\ImageProcessor.2.7.0.100\lib\net452\ImageProcessor.dll
68 |
69 |
70 | ..\packages\LightInject.5.4.0\lib\net46\LightInject.dll
71 |
72 |
73 | ..\packages\LightInject.Annotation.1.1.0\lib\net46\LightInject.Annotation.dll
74 |
75 |
76 | ..\packages\LightInject.Mvc.2.0.0\lib\net46\LightInject.Mvc.dll
77 |
78 |
79 | ..\packages\LightInject.Web.2.0.0\lib\net46\LightInject.Web.dll
80 |
81 |
82 | ..\packages\LightInject.WebApi.2.0.0\lib\net46\LightInject.WebApi.dll
83 |
84 |
85 | ..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll
86 |
87 |
88 | ..\packages\Markdown.2.2.1\lib\net451\Markdown.dll
89 |
90 |
91 | ..\packages\Microsoft.AspNet.Identity.Core.2.2.2\lib\net45\Microsoft.AspNet.Identity.Core.dll
92 |
93 |
94 | ..\packages\Microsoft.AspNet.Identity.Owin.2.2.2\lib\net45\Microsoft.AspNet.Identity.Owin.dll
95 |
96 |
97 | ..\packages\Microsoft.AspNet.SignalR.Core.2.4.0\lib\net45\Microsoft.AspNet.SignalR.Core.dll
98 |
99 |
100 |
101 | ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.2.0.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
102 |
103 |
104 | ..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll
105 |
106 |
107 | ..\packages\Microsoft.Owin.Host.SystemWeb.4.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
108 |
109 |
110 | ..\packages\Microsoft.Owin.Security.4.0.1\lib\net45\Microsoft.Owin.Security.dll
111 |
112 |
113 | ..\packages\Microsoft.Owin.Security.Cookies.4.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll
114 |
115 |
116 | ..\packages\Microsoft.Owin.Security.OAuth.4.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
117 |
118 |
119 | ..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll
120 |
121 |
122 | ..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll
123 |
124 |
125 | ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
126 |
127 |
128 | ..\packages\MiniProfiler.4.0.138\lib\net461\MiniProfiler.dll
129 |
130 |
131 | ..\packages\MiniProfiler.Shared.4.0.138\lib\net461\MiniProfiler.Shared.dll
132 |
133 |
134 | ..\packages\Moq.4.13.1\lib\net45\Moq.dll
135 |
136 |
137 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
138 |
139 |
140 | ..\packages\NPoco.3.9.4\lib\net45\NPoco.dll
141 |
142 |
143 | ..\packages\Owin.1.0\lib\net40\Owin.dll
144 |
145 |
146 | ..\packages\Semver.2.0.4\lib\net452\Semver.dll
147 |
148 |
149 | ..\packages\Serilog.2.8.0\lib\net46\Serilog.dll
150 |
151 |
152 | ..\packages\Serilog.Enrichers.Process.2.0.1\lib\net45\Serilog.Enrichers.Process.dll
153 |
154 |
155 | ..\packages\Serilog.Enrichers.Thread.3.0.0\lib\net45\Serilog.Enrichers.Thread.dll
156 |
157 |
158 | ..\packages\Serilog.Filters.Expressions.2.0.0\lib\net45\Serilog.Filters.Expressions.dll
159 |
160 |
161 | ..\packages\Serilog.Formatting.Compact.1.0.0\lib\net45\Serilog.Formatting.Compact.dll
162 |
163 |
164 | ..\packages\Serilog.Formatting.Compact.Reader.1.0.3\lib\net45\Serilog.Formatting.Compact.Reader.dll
165 |
166 |
167 | ..\packages\Serilog.Settings.AppSettings.2.2.2\lib\net45\Serilog.Settings.AppSettings.dll
168 |
169 |
170 | ..\packages\Serilog.Sinks.Async.1.3.0\lib\net45\Serilog.Sinks.Async.dll
171 |
172 |
173 | ..\packages\Serilog.Sinks.File.4.0.0\lib\net45\Serilog.Sinks.File.dll
174 |
175 |
176 | ..\packages\Serilog.Sinks.Map.1.0.0\lib\netstandard2.0\Serilog.Sinks.Map.dll
177 |
178 |
179 | ..\packages\Superpower.2.0.0\lib\net45\Superpower.dll
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 | ..\packages\Umbraco.SqlServerCE.4.0.0.1\lib\net472\System.Data.SqlServerCe.dll
189 |
190 |
191 | ..\packages\Umbraco.SqlServerCE.4.0.0.1\lib\net472\System.Data.SqlServerCe.Entity.dll
192 |
193 |
194 | ..\packages\System.Diagnostics.DiagnosticSource.4.4.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
195 |
196 |
197 |
198 |
199 |
200 | ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll
201 |
202 |
203 |
204 |
205 | ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
206 |
207 |
208 |
209 |
210 |
211 | ..\packages\System.Threading.Tasks.Dataflow.4.9.0\lib\netstandard2.0\System.Threading.Tasks.Dataflow.dll
212 |
213 |
214 | ..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
215 |
216 |
217 |
218 | ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
219 |
220 |
221 |
222 |
223 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll
224 |
225 |
226 | ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll
227 |
228 |
229 | ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll
230 |
231 |
232 | ..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll
233 |
234 |
235 | ..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll
236 |
237 |
238 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll
239 |
240 |
241 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll
242 |
243 |
244 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll
245 |
246 |
247 |
248 | ..\packages\UmbracoCms.Core.8.4.0\lib\net472\Umbraco.Core.dll
249 |
250 |
251 | ..\packages\UmbracoCms.Web.8.4.0\lib\net472\Umbraco.Examine.dll
252 |
253 |
254 | ..\packages\UmbracoCms.Web.8.4.0\lib\net472\Umbraco.Web.dll
255 |
256 |
257 | ..\packages\UmbracoCms.Web.8.4.0\lib\net472\Umbraco.Web.UI.dll
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 | {a3e6b76a-35ac-415a-bced-971223d63bac}
272 | Our.Umbraco.UnVersion
273 |
274 |
275 |
276 |
277 |
278 |
279 | 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}.
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion.Tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | [assembly: AssemblyTitle("Our.Umbraco.UnVersion.Tests")]
6 | [assembly: AssemblyDescription("")]
7 | [assembly: AssemblyConfiguration("")]
8 | [assembly: AssemblyCompany("")]
9 | [assembly: AssemblyProduct("Our.Umbraco.UnVersion.Tests")]
10 | [assembly: AssemblyCopyright("Copyright © 2019")]
11 | [assembly: AssemblyTrademark("")]
12 | [assembly: AssemblyCulture("")]
13 |
14 | [assembly: ComVisible(false)]
15 |
16 | [assembly: Guid("db4825f3-92cb-44ca-96f1-2680026dafb1")]
17 |
18 | // [assembly: AssemblyVersion("1.0.*")]
19 | [assembly: AssemblyVersion("1.0.0.0")]
20 | [assembly: AssemblyFileVersion("1.0.0.0")]
21 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion.Tests/Services/UnVersionServiceTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Microsoft.VisualStudio.TestTools.UnitTesting;
4 | using Our.Umbraco.UnVersion.Services;
5 | using Umbraco.Core.Models;
6 |
7 | namespace Our.Umbraco.UnVersion.Tests.Services
8 | {
9 | [TestClass]
10 | public class ServiceTests
11 | {
12 | [TestMethod]
13 | public void GetVersions_Returns_Right_Based_On_Date()
14 | {
15 |
16 | var config = new UnVersionConfigEntry() {MaxDays = 10};
17 |
18 | List versions = new List()
19 | {
20 | TestHelper.GetVersionMock(1, new DateTime(2019, 12, 10)).Object, // should be deleted
21 | TestHelper.GetVersionMock(2, new DateTime(2019, 12, 19)).Object, // should be deleted
22 | TestHelper.GetVersionMock(3, new DateTime(2019, 12, 20)).Object // should be kept
23 | };
24 |
25 | var service = new UnVersionService(null,null,null,null);
26 |
27 | var res = service.GetVersionsToDelete(versions, config, new DateTime(2019, 12, 30));
28 |
29 | Assert.IsTrue(res.Contains(1));
30 | Assert.IsTrue(res.Contains(2));
31 | Assert.IsFalse(res.Contains(3));
32 |
33 | }
34 |
35 | [TestMethod]
36 | public void GetVersions_Returns_Right_Based_Max_Count()
37 | {
38 | var config = new UnVersionConfigEntry() { MaxCount = 5 };
39 |
40 | List versions = new List()
41 | {
42 | TestHelper.GetVersionMock(10, new DateTime(2019, 12, 10)).Object, // should be kept
43 | TestHelper.GetVersionMock(20, new DateTime(2019, 12, 19)).Object, // should be kept
44 | TestHelper.GetVersionMock(30, new DateTime(2019, 12, 20)).Object, // should be kept
45 | TestHelper.GetVersionMock(40, new DateTime(2019, 12, 10)).Object, // should be kept
46 | TestHelper.GetVersionMock(50, new DateTime(2019, 12, 19)).Object, // should be kept
47 | TestHelper.GetVersionMock(60, new DateTime(2019, 12, 20)).Object, // should be deleted
48 | TestHelper.GetVersionMock(70, new DateTime(2019, 12, 10)).Object, // should be deleted
49 | TestHelper.GetVersionMock(80, new DateTime(2019, 12, 19)).Object, // should be deleted
50 | TestHelper.GetVersionMock(90, new DateTime(2019, 12, 20)).Object, // should be deleted
51 | };
52 |
53 | var service = new UnVersionService(null,null, null,null);
54 |
55 | var res = service.GetVersionsToDelete(versions, config, new DateTime(2019, 12, 30));
56 |
57 | Assert.IsFalse(res.Contains(50));
58 |
59 | Assert.IsTrue(res.Contains(60));
60 | Assert.IsTrue(res.Contains(70));
61 | Assert.IsTrue(res.Contains(80));
62 | Assert.IsTrue(res.Contains(90));
63 |
64 | }
65 |
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion.Tests/TestHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using Moq;
7 | using Umbraco.Core.Models;
8 |
9 | namespace Our.Umbraco.UnVersion.Tests
10 | {
11 | public static class TestHelper
12 | {
13 | public static Mock GetVersionMock(int versionId, DateTime updateDate)
14 | {
15 | var mock = new Mock();
16 | mock.Setup(x => x.VersionId).Returns(versionId);
17 | mock.Setup(x => x.UpdateDate).Returns(updateDate);
18 | return mock;
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion.Tests/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion.Tests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.29411.108
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Our.Umbraco.UnVersion", "Our.Umbraco.UnVersion\Our.Umbraco.UnVersion.csproj", "{A3E6B76A-35AC-415A-BCED-971223D63BAC}"
7 | EndProject
8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build Package", "Build Package", "{AE05CC62-1E54-4E24-AA99-B7EED3CFFA3C}"
9 | ProjectSection(SolutionItems) = preProject
10 | ..\appveyor.yml = ..\appveyor.yml
11 | ..\build-appveyor.cmd = ..\build-appveyor.cmd
12 | ..\build.cmd = ..\build.cmd
13 | ..\build\package.nuspec = ..\build\package.nuspec
14 | ..\build\package.proj = ..\build\package.proj
15 | ..\build\package.xml = ..\build\package.xml
16 | EndProjectSection
17 | EndProject
18 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E155CD07-7718-4EE8-B51E-FECABE034A33}"
19 | ProjectSection(SolutionItems) = preProject
20 | ..\CONTRIBUTING.md = ..\CONTRIBUTING.md
21 | ..\LICENSE.md = ..\LICENSE.md
22 | ..\README.md = ..\README.md
23 | EndProjectSection
24 | EndProject
25 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{BA0FC6AB-55AD-4AFF-A5EB-AF4A654C7341}"
26 | ProjectSection(SolutionItems) = preProject
27 | ..\docs\developers-guide.md = ..\docs\developers-guide.md
28 | EndProjectSection
29 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Our.Umbraco.UnVersion.Tests", "Our.Umbraco.UnVersion.Tests\Our.Umbraco.UnVersion.Tests.csproj", "{DB4825F3-92CB-44CA-96F1-2680026DAFB1}"
30 | EndProject
31 | Global
32 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
33 | Debug|Any CPU = Debug|Any CPU
34 | Release|Any CPU = Release|Any CPU
35 | EndGlobalSection
36 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
37 | {A3E6B76A-35AC-415A-BCED-971223D63BAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
38 | {A3E6B76A-35AC-415A-BCED-971223D63BAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
39 | {A3E6B76A-35AC-415A-BCED-971223D63BAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
40 | {A3E6B76A-35AC-415A-BCED-971223D63BAC}.Release|Any CPU.Build.0 = Release|Any CPU
41 | {DB4825F3-92CB-44CA-96F1-2680026DAFB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
42 | {DB4825F3-92CB-44CA-96F1-2680026DAFB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
43 | {DB4825F3-92CB-44CA-96F1-2680026DAFB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
44 | {DB4825F3-92CB-44CA-96F1-2680026DAFB1}.Release|Any CPU.Build.0 = Release|Any CPU
45 | EndGlobalSection
46 | GlobalSection(SolutionProperties) = preSolution
47 | HideSolutionNode = FALSE
48 | EndGlobalSection
49 | GlobalSection(NestedProjects) = preSolution
50 | {AE05CC62-1E54-4E24-AA99-B7EED3CFFA3C} = {E155CD07-7718-4EE8-B51E-FECABE034A33}
51 | {BA0FC6AB-55AD-4AFF-A5EB-AF4A654C7341} = {E155CD07-7718-4EE8-B51E-FECABE034A33}
52 | EndGlobalSection
53 | GlobalSection(ExtensibilityGlobals) = postSolution
54 | SolutionGuid = {AAE25AE6-314C-45E6-BD87-04A97F90EE16}
55 | EndGlobalSection
56 | GlobalSection(ExtensibilityGlobals) = postSolution
57 | SolutionGuid = {A3114DD6-96F4-4EB1-B6DA-0811E052F9F9}
58 | EndGlobalSection
59 | EndGlobal
60 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/Our.Umbraco.UnVersion.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {9C419222-B1A9-42F5-850F-6D5804E585D9}
8 | Library
9 | Properties
10 | Our.Umbraco.UnVersion
11 | Our.Umbraco.UnVersion
12 | v4.7.2
13 | 512
14 | true
15 |
16 |
17 |
18 |
19 | true
20 | full
21 | false
22 | bin\Debug\
23 | DEBUG;TRACE
24 | prompt
25 | 4
26 |
27 |
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 |
35 |
36 |
37 | ..\packages\ClientDependency.1.9.8\lib\net45\ClientDependency.Core.dll
38 |
39 |
40 | ..\packages\ClientDependency-Mvc5.1.9.3\lib\net45\ClientDependency.Core.Mvc.dll
41 |
42 |
43 | ..\packages\CSharpTest.Net.Collections.14.906.1403.1082\lib\net40\CSharpTest.Net.Collections.dll
44 |
45 |
46 | ..\packages\Examine.1.0.1\lib\net452\Examine.dll
47 |
48 |
49 | ..\packages\HtmlAgilityPack.1.8.14\lib\Net45\HtmlAgilityPack.dll
50 |
51 |
52 | ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
53 |
54 |
55 | ..\packages\ImageProcessor.2.7.0.100\lib\net452\ImageProcessor.dll
56 |
57 |
58 | ..\packages\LightInject.5.4.0\lib\net46\LightInject.dll
59 |
60 |
61 | ..\packages\LightInject.Annotation.1.1.0\lib\net46\LightInject.Annotation.dll
62 |
63 |
64 | ..\packages\LightInject.Mvc.2.0.0\lib\net46\LightInject.Mvc.dll
65 |
66 |
67 | ..\packages\LightInject.Web.2.0.0\lib\net46\LightInject.Web.dll
68 |
69 |
70 | ..\packages\LightInject.WebApi.2.0.0\lib\net46\LightInject.WebApi.dll
71 |
72 |
73 | ..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll
74 |
75 |
76 | ..\packages\Markdown.2.2.1\lib\net451\Markdown.dll
77 |
78 |
79 | ..\packages\Microsoft.AspNet.Identity.Core.2.2.2\lib\net45\Microsoft.AspNet.Identity.Core.dll
80 |
81 |
82 | ..\packages\Microsoft.AspNet.Identity.Owin.2.2.2\lib\net45\Microsoft.AspNet.Identity.Owin.dll
83 |
84 |
85 | ..\packages\Microsoft.AspNet.SignalR.Core.2.4.0\lib\net45\Microsoft.AspNet.SignalR.Core.dll
86 |
87 |
88 | ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.2.0.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
89 |
90 |
91 | ..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll
92 |
93 |
94 | ..\packages\Microsoft.Owin.Host.SystemWeb.4.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
95 |
96 |
97 | ..\packages\Microsoft.Owin.Security.4.0.1\lib\net45\Microsoft.Owin.Security.dll
98 |
99 |
100 | ..\packages\Microsoft.Owin.Security.Cookies.4.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll
101 |
102 |
103 | ..\packages\Microsoft.Owin.Security.OAuth.4.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
104 |
105 |
106 | ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
107 |
108 |
109 | ..\packages\MiniProfiler.4.0.138\lib\net461\MiniProfiler.dll
110 |
111 |
112 | ..\packages\MiniProfiler.Shared.4.0.138\lib\net461\MiniProfiler.Shared.dll
113 |
114 |
115 | ..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll
116 |
117 |
118 | ..\packages\NPoco.3.9.4\lib\net45\NPoco.dll
119 |
120 |
121 | ..\packages\Owin.1.0\lib\net40\Owin.dll
122 |
123 |
124 | ..\packages\Semver.2.0.4\lib\net452\Semver.dll
125 |
126 |
127 | ..\packages\Serilog.2.8.0\lib\net46\Serilog.dll
128 |
129 |
130 | ..\packages\Serilog.Enrichers.Process.2.0.1\lib\net45\Serilog.Enrichers.Process.dll
131 |
132 |
133 | ..\packages\Serilog.Enrichers.Thread.3.0.0\lib\net45\Serilog.Enrichers.Thread.dll
134 |
135 |
136 | ..\packages\Serilog.Filters.Expressions.2.0.0\lib\net45\Serilog.Filters.Expressions.dll
137 |
138 |
139 | ..\packages\Serilog.Formatting.Compact.1.0.0\lib\net45\Serilog.Formatting.Compact.dll
140 |
141 |
142 | ..\packages\Serilog.Formatting.Compact.Reader.1.0.3\lib\net45\Serilog.Formatting.Compact.Reader.dll
143 |
144 |
145 | ..\packages\Serilog.Settings.AppSettings.2.2.2\lib\net45\Serilog.Settings.AppSettings.dll
146 |
147 |
148 | ..\packages\Serilog.Sinks.Async.1.3.0\lib\net45\Serilog.Sinks.Async.dll
149 |
150 |
151 | ..\packages\Serilog.Sinks.File.4.0.0\lib\net45\Serilog.Sinks.File.dll
152 |
153 |
154 | ..\packages\Serilog.Sinks.Map.1.0.0\lib\netstandard2.0\Serilog.Sinks.Map.dll
155 |
156 |
157 | ..\packages\Superpower.2.0.0\lib\net45\Superpower.dll
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 | ..\packages\Umbraco.SqlServerCE.4.0.0.1\lib\net472\System.Data.SqlServerCe.dll
166 |
167 |
168 | ..\packages\Umbraco.SqlServerCE.4.0.0.1\lib\net472\System.Data.SqlServerCe.Entity.dll
169 |
170 |
171 | ..\packages\System.Diagnostics.DiagnosticSource.4.4.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
172 |
173 |
174 |
175 |
176 | ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 | ..\packages\System.Threading.Tasks.Dataflow.4.9.0\lib\netstandard2.0\System.Threading.Tasks.Dataflow.dll
185 |
186 |
187 |
188 | ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
189 |
190 |
191 |
192 |
193 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll
194 |
195 |
196 | ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll
197 |
198 |
199 | ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll
200 |
201 |
202 | ..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll
203 |
204 |
205 | ..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll
206 |
207 |
208 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll
209 |
210 |
211 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll
212 |
213 |
214 | ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 | ..\packages\UmbracoCms.Core.8.4.0\lib\net472\Umbraco.Core.dll
224 |
225 |
226 | ..\packages\UmbracoCms.Web.8.4.0\lib\net472\Umbraco.Examine.dll
227 |
228 |
229 | ..\packages\UmbracoCms.Web.8.4.0\lib\net472\Umbraco.Web.dll
230 |
231 |
232 | ..\packages\UmbracoCms.Web.8.4.0\lib\net472\Umbraco.Web.UI.dll
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 | 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}.
252 |
253 |
254 |
255 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | [assembly: AssemblyTitle("Our.Umbraco.UnVersion")]
5 | [assembly: AssemblyDescription("")]
6 | [assembly: AssemblyConfiguration("")]
7 | [assembly: AssemblyCompany("The Umbraco Community")]
8 | [assembly: AssemblyProduct("Our.Umbraco.UnVersion")]
9 | [assembly: AssemblyCopyright("Copyright \xa9 The Umbraco Community 2012")]
10 | [assembly: AssemblyTrademark("")]
11 | [assembly: AssemblyCulture("")]
12 |
13 | [assembly: ComVisible(false)]
14 | [assembly: Guid("2DF684D0-107E-4229-BE9A-EFA620ACF770")]
15 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/Properties/VersionInfo.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | using System;
12 | using System.Reflection;
13 | using System.Runtime.CompilerServices;
14 | using System.Runtime.InteropServices;
15 |
16 | [assembly: AssemblyVersion("2.2.*")]
17 | [assembly: AssemblyInformationalVersion("2.2.0-alpha-000123")]
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/Services/IUnVersionService.cs:
--------------------------------------------------------------------------------
1 | using Umbraco.Core.Models;
2 |
3 | namespace Our.Umbraco.UnVersion.Services
4 | {
5 | public interface IUnVersionService
6 | {
7 | void UnVersion(IContent content);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/Services/UnVersionService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using Umbraco.Core.Models;
4 | using Umbraco.Core.Logging;
5 | using Umbraco.Web;
6 | using System.Linq;
7 | using Umbraco.Core.Services;
8 |
9 | namespace Our.Umbraco.UnVersion.Services
10 | {
11 | public class UnVersionService : IUnVersionService
12 | {
13 | private readonly ILogger _logger;
14 | private readonly IUmbracoContextFactory _context;
15 | private readonly IContentService _contentService;
16 | private IUnVersionConfig _config;
17 |
18 | public UnVersionService(IUnVersionConfig config, ILogger logger, IUmbracoContextFactory context, IContentService contentService)
19 | {
20 | _logger = logger;
21 | _config = config;
22 | _context = context;
23 | _contentService = contentService;
24 | }
25 |
26 | public void UnVersion(IContent content)
27 | {
28 |
29 | var configEntries = new List();
30 |
31 | if (_config.ConfigEntries.ContainsKey(content.ContentType.Alias))
32 | configEntries.AddRange(_config.ConfigEntries[content.ContentType.Alias]);
33 |
34 | if (_config.ConfigEntries.ContainsKey(UnVersionConfig.AllDocumentTypesKey))
35 | configEntries.AddRange(_config.ConfigEntries[UnVersionConfig.AllDocumentTypesKey]);
36 |
37 | if (configEntries.Count <= 0)
38 | {
39 | _logger.Debug("No unversion configuration found for type {alias}", content.ContentType.Alias);
40 | return;
41 | }
42 |
43 | foreach (var configEntry in configEntries)
44 | {
45 | var isValid = true;
46 |
47 | // Check the RootXPath if configured
48 | if (!String.IsNullOrEmpty(configEntry.RootXPath))
49 | {
50 | // TODO: Fix in some otherway
51 | if (content.Level > 1 && content.ParentId > 0)
52 | {
53 | var ids = GetNodeIdsFromXpath(configEntry.RootXPath);
54 | isValid = ids.Contains(content.ParentId);
55 | }
56 | }
57 |
58 | if (!isValid)
59 | {
60 | _logger.Debug("Configuration invalid, rootXPath must be {rootXPath}", configEntry.RootXPath);
61 | continue;
62 | }
63 |
64 | var allVersions = _contentService.GetVersionsSlim(content.Id, 0, int.MaxValue).ToList();
65 |
66 | if (!allVersions.Any())
67 | {
68 | _logger.Debug("No versions of content {contentId} found", content.Id);
69 | continue;
70 | }
71 |
72 | var versionIdsToDelete = GetVersionsToDelete(allVersions, configEntry, DateTime.Now);
73 |
74 | foreach (var vid in versionIdsToDelete)
75 | {
76 | _logger.Debug("Deleting version {versionId} of content {contentId}", vid, content.Id);
77 | _contentService.DeleteVersion(content.Id, vid, false);
78 | }
79 |
80 | }
81 |
82 | }
83 |
84 | ///
85 | /// Iterates a list of IContent versions and returns items to be removed based on a configEntry.
86 | ///
87 | ///
88 | ///
89 | ///
90 | ///
91 | public List GetVersionsToDelete(List versions, UnVersionConfigEntry configEntry, DateTime currentDateTime)
92 | {
93 | List versionIdsToDelete = new List();
94 |
95 | int iterationCount = 0;
96 |
97 |
98 | _logger.Debug("Getting versions for config entry. {alias}, {maxCount}, {maxDays}, {rootXpath}", configEntry.DocTypeAlias, configEntry.MaxCount, configEntry.MaxDays, configEntry.RootXPath);
99 |
100 | foreach (var version in versions)
101 | {
102 | iterationCount++;
103 | _logger.Debug("Comparing version {versionId}, iterationCount is {iterationCount}", version.VersionId, iterationCount);
104 |
105 | // If we have a maxCount and the current iteration is above that max-count
106 | if (configEntry.MaxCount > 0 && iterationCount > configEntry.MaxCount)
107 | {
108 | _logger.Debug("Remove version {versionId}, because iterationCount is {iterationCount} and max count is {maxCount}", version.VersionId, iterationCount, configEntry.MaxCount);
109 | versionIdsToDelete.Add(version.VersionId);
110 | // no need to compare dates since we've already added this version for deletion
111 | continue;
112 | }
113 |
114 | // If we have a max days and the current version is older
115 | if (configEntry.MaxDays > 0 && configEntry.MaxDays != int.MaxValue)
116 | {
117 | var dateRemoveBefore = currentDateTime.AddDays(0 - configEntry.MaxDays);
118 | if (version.UpdateDate < dateRemoveBefore)
119 | {
120 | _logger.Debug("Remove version {versionId}, because version is updated {updateDate} and max days is {maxDays} (cutoff: {dateRemoveBefore})", version.VersionId, version.UpdateDate, configEntry.MaxDays, dateRemoveBefore);
121 | versionIdsToDelete.Add(version.VersionId);
122 | }
123 | }
124 |
125 | }
126 |
127 | return versionIdsToDelete;
128 |
129 | }
130 |
131 | private List GetNodeIdsFromXpath(string xpath)
132 | {
133 | using (var ctx = _context.EnsureUmbracoContext())
134 | {
135 | var nodes = ctx.UmbracoContext.Content.GetByXPath(xpath);
136 |
137 | if (nodes == null)
138 | return new List();
139 |
140 | return nodes.Select(x => x.Id).ToList();
141 | }
142 | }
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/UnVersionComponent.cs:
--------------------------------------------------------------------------------
1 | using Our.Umbraco.UnVersion.Services;
2 | using Umbraco.Core.Composing;
3 | using Umbraco.Core.Services.Implement;
4 |
5 | namespace Our.Umbraco.UnVersion
6 | {
7 | public class UnVersionComponent : IComponent
8 | {
9 | private readonly IUnVersionService unVersionService;
10 |
11 | public UnVersionComponent(IUnVersionService _unVersionService)
12 | {
13 | unVersionService = _unVersionService;
14 | }
15 |
16 | public void Initialize()
17 | {
18 | ContentService.Published += ContentService_Published;
19 | }
20 |
21 | private void ContentService_Published(global::Umbraco.Core.Services.IContentService sender, global::Umbraco.Core.Events.ContentPublishedEventArgs e)
22 | {
23 | foreach (var content in e.PublishedEntities) {
24 | unVersionService.UnVersion(content);
25 | }
26 | }
27 |
28 | public void Terminate()
29 | {
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/UnVersionComposer.cs:
--------------------------------------------------------------------------------
1 | using Our.Umbraco.UnVersion.Services;
2 | using Umbraco.Core;
3 | using Umbraco.Core.Composing;
4 |
5 | namespace Our.Umbraco.UnVersion
6 | {
7 | public class UnVersionComposer : IUserComposer
8 | {
9 | public void Compose(Composition composition)
10 | {
11 | composition.Register();
12 | composition.Register();
13 | composition.Components().Append();
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/UnVersionConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Web;
5 | using System.Xml;
6 | using Umbraco.Core.Logging;
7 |
8 | namespace Our.Umbraco.UnVersion
9 | {
10 | public class UnVersionConfig : IUnVersionConfig
11 | {
12 | public const string AllDocumentTypesKey = "$_ALL";
13 | public IDictionary> ConfigEntries { get; set; }
14 |
15 | private ILogger _logger;
16 |
17 | public UnVersionConfig(ILogger logger)
18 | {
19 | _logger = logger;
20 |
21 | ConfigEntries = new Dictionary>();
22 |
23 | try
24 | {
25 | var appPath = HttpRuntime.AppDomainAppPath;
26 | var configFilePath = Path.Combine(appPath, @"config\unVersion.config");
27 | LoadXmlConfig(string.Concat(configFilePath));
28 | }
29 | catch (Exception e)
30 | {
31 | _logger.Error(e, "Error when parsing unVersion.config.");
32 | }
33 |
34 | }
35 |
36 | private void LoadXmlConfig(string configPath)
37 | {
38 | if (!File.Exists(configPath))
39 | {
40 | _logger.Warn("Couldn't find config file " + configPath);
41 | return;
42 | }
43 |
44 | var xmlConfig = new XmlDocument();
45 | xmlConfig.Load(configPath);
46 |
47 | foreach (XmlNode xmlConfigEntry in xmlConfig.SelectNodes("/unVersionConfig/add"))
48 | {
49 | if (xmlConfigEntry.NodeType == XmlNodeType.Element)
50 | {
51 | var configEntry = new UnVersionConfigEntry
52 | {
53 | DocTypeAlias = xmlConfigEntry.Attributes["docTypeAlias"] != null
54 | ? xmlConfigEntry.Attributes["docTypeAlias"].Value
55 | : AllDocumentTypesKey
56 | };
57 |
58 | if (xmlConfigEntry.Attributes["rootXpath"] != null)
59 | configEntry.RootXPath = xmlConfigEntry.Attributes["rootXpath"].Value;
60 |
61 | if (xmlConfigEntry.Attributes["maxDays"] != null)
62 | configEntry.MaxDays = Convert.ToInt32(xmlConfigEntry.Attributes["maxDays"].Value);
63 |
64 | if (xmlConfigEntry.Attributes["maxCount"] != null)
65 | configEntry.MaxCount = Convert.ToInt32(xmlConfigEntry.Attributes["maxCount"].Value);
66 |
67 | if (!ConfigEntries.ContainsKey(configEntry.DocTypeAlias))
68 | ConfigEntries.Add(configEntry.DocTypeAlias, new List());
69 |
70 | ConfigEntries[configEntry.DocTypeAlias].Add(configEntry);
71 | }
72 | }
73 | }
74 | }
75 |
76 | public class UnVersionConfigEntry
77 | {
78 | public UnVersionConfigEntry()
79 | {
80 | MaxDays = MaxCount = int.MaxValue;
81 | }
82 |
83 | public string DocTypeAlias { get; set; }
84 | public string RootXPath { get; set; }
85 | public int MaxDays { get; set; }
86 | public int MaxCount { get; set; }
87 | }
88 |
89 | public interface IUnVersionConfig
90 | {
91 | IDictionary> ConfigEntries { get; }
92 | }
93 | }
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/Web/UI/Config/unVersion.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/Our.Umbraco.UnVersion/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------