Merge branch 'temp8-packaging-view-3996' into temp8

This commit is contained in:
Stephan
2019-01-18 13:04:04 +01:00
49 changed files with 344 additions and 371 deletions
@@ -23,7 +23,7 @@ namespace Umbraco.Core.Models.Packaging
public string Author { get; set; }
public string AuthorUrl { get; set; }
public string Readme { get; set; }
public string Control { get; set; }
public string PackageView { get; set; }
public string IconUrl { get; set; }
public string Actions { get; set; } //fixme: Should we make this strongly typed to IEnumerable<PackageAction> ?
@@ -13,7 +13,12 @@ namespace Umbraco.Core.Models.Packaging
string Author { get; }
string AuthorUrl { get; }
string Readme { get; }
string Control { get; } //fixme - this needs to be an angular view
/// <summary>
/// This is the angular view path that will be loaded when the package installs
/// </summary>
string PackageView { get; }
string IconUrl { get; }
}
}
@@ -25,7 +25,7 @@ namespace Umbraco.Core.Models.Packaging
Actions = compiled.Actions,
Author = compiled.Author,
AuthorUrl = compiled.AuthorUrl,
Control = compiled.Control,
PackageView = compiled.PackageView,
IconUrl = compiled.IconUrl,
License = compiled.License,
LicenseUrl = compiled.LicenseUrl,
@@ -115,9 +115,9 @@ namespace Umbraco.Core.Models.Packaging
[DataMember(Name = "files")]
public IList<string> Files { get; set; } = new List<string>();
//fixme: Change this to angular view
[DataMember(Name = "loadControl")]
public string Control { get; set; } = string.Empty;
/// <inheritdoc />
[DataMember(Name = "packageView")]
public string PackageView { get; set; } = string.Empty;
[DataMember(Name = "actions")]
public string Actions { get; set; } = "<actions></actions>";
@@ -127,38 +127,7 @@ namespace Umbraco.Core.Models.Packaging
[DataMember(Name = "iconUrl")]
public string IconUrl { get; set; } = string.Empty;
public PackageDefinition Clone()
{
return new PackageDefinition
{
Id = Id,
PackagePath = PackagePath,
Name = Name,
Files = new List<string>(Files),
UmbracoVersion = (Version) UmbracoVersion.Clone(),
Version = Version,
Url = Url,
Readme = Readme,
AuthorUrl = AuthorUrl,
Author = Author,
LicenseUrl = LicenseUrl,
Actions = Actions,
PackageId = PackageId,
Control = Control,
DataTypes = new List<string>(DataTypes),
IconUrl = IconUrl,
License = License,
Templates = new List<string>(Templates),
Languages = new List<string>(Languages),
Macros = new List<string>(Macros),
Stylesheets = new List<string>(Stylesheets),
DocumentTypes = new List<string>(DocumentTypes),
DictionaryItems = new List<string>(DictionaryItems),
ContentNodeId = ContentNodeId,
ContentLoadChildNodes = ContentLoadChildNodes
};
}
}
@@ -51,7 +51,7 @@ namespace Umbraco.Core.Packaging
IconUrl = package.Element("iconUrl")?.Value,
UmbracoVersion = new Version((int)requirements.Element("major"), (int)requirements.Element("minor"), (int)requirements.Element("patch")),
UmbracoVersionRequirementsType = requirements.AttributeValue<string>("type").IsNullOrWhiteSpace() ? RequirementsType.Legacy : Enum<RequirementsType>.Parse(requirements.AttributeValue<string>("type"), true),
Control = package.Element("control")?.Value,
PackageView = xml.Root.Element("view")?.Value,
Actions = xml.Root.Element("Actions")?.ToString(SaveOptions.None) ?? "<Actions></Actions>", //take the entire outer xml value
Files = xml.Root.Element("files")?.Elements("file")?.Select(CompiledPackageFile.Create).ToList() ?? new List<CompiledPackageFile>(),
Macros = xml.Root.Element("Macros")?.Elements("macro") ?? Enumerable.Empty<XElement>(),
@@ -34,6 +34,7 @@ namespace Umbraco.Core.Packaging
PackageId = xml.AttributeValue<Guid>("packageGuid"),
IconUrl = xml.AttributeValue<string>("iconUrl") ?? string.Empty,
UmbracoVersion = xml.AttributeValue<Version>("umbVersion"),
PackageView = xml.AttributeValue<string>("view") ?? string.Empty,
License = xml.Element("license")?.Value ?? string.Empty,
LicenseUrl = xml.Element("license")?.AttributeValue<string>("url") ?? string.Empty,
Author = xml.Element("author")?.Value ?? string.Empty,
@@ -49,8 +50,7 @@ namespace Umbraco.Core.Packaging
Languages = xml.Element("languages")?.Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<string>(),
DictionaryItems = xml.Element("dictionaryitems")?.Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<string>(),
DataTypes = xml.Element("datatypes")?.Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList() ?? new List<string>(),
Files = xml.Element("files")?.Elements("file").Select(x => x.Value).ToList() ?? new List<string>(),
Control = xml.Element("loadcontrol")?.Value ?? string.Empty
Files = xml.Element("files")?.Elements("file").Select(x => x.Value).ToList() ?? new List<string>()
};
return retVal;
@@ -77,6 +77,7 @@ namespace Umbraco.Core.Packaging
new XAttribute("iconUrl", def.IconUrl ?? string.Empty),
new XAttribute("umbVersion", def.UmbracoVersion),
new XAttribute("packageGuid", def.PackageId),
new XAttribute("view", def.PackageView ?? string.Empty),
new XElement("license",
new XCData(def.License ?? string.Empty),
@@ -100,8 +101,7 @@ namespace Umbraco.Core.Packaging
new XElement("macros", string.Join(",", def.Macros ?? Array.Empty<string>())),
new XElement("files", (def.Files ?? Array.Empty<string>()).Where(x => !x.IsNullOrWhiteSpace()).Select(x => new XElement("file", x))),
new XElement("languages", string.Join(",", def.Languages ?? Array.Empty<string>())),
new XElement("dictionaryitems", string.Join(",", def.DictionaryItems ?? Array.Empty<string>())),
new XElement("loadcontrol", def.Control ?? string.Empty)); //fixme: no more loadcontrol, needs to be an angular view
new XElement("dictionaryitems", string.Join(",", def.DictionaryItems ?? Array.Empty<string>())));
return packageXml;
}
@@ -161,30 +161,30 @@ namespace Umbraco.Core.Packaging
try
{
//Init package file
var packageManifest = CreatePackageManifest(out var manifestRoot, out var filesXml);
var compiledPackageXml = CreateCompiledPackageXml(out var root, out var filesXml);
//Info section
manifestRoot.Add(GetPackageInfoXml(definition));
root.Add(GetPackageInfoXml(definition));
PackageDocumentsAndTags(definition, manifestRoot);
PackageDocumentTypes(definition, manifestRoot);
PackageTemplates(definition, manifestRoot);
PackageStylesheets(definition, manifestRoot);
PackageMacros(definition, manifestRoot, filesXml, temporaryPath);
PackageDictionaryItems(definition, manifestRoot);
PackageLanguages(definition, manifestRoot);
PackageDataTypes(definition, manifestRoot);
PackageDocumentsAndTags(definition, root);
PackageDocumentTypes(definition, root);
PackageTemplates(definition, root);
PackageStylesheets(definition, root);
PackageMacros(definition, root, filesXml, temporaryPath);
PackageDictionaryItems(definition, root);
PackageLanguages(definition, root);
PackageDataTypes(definition, root);
//Files
foreach (var fileName in definition.Files)
AppendFileToManifest(fileName, temporaryPath, filesXml);
AppendFileToPackage(fileName, temporaryPath, filesXml);
//Load control on install...
if (!string.IsNullOrEmpty(definition.Control))
//Load view on install...
if (!string.IsNullOrEmpty(definition.PackageView))
{
var control = new XElement("control", definition.Control);
AppendFileToManifest(definition.Control, temporaryPath, filesXml);
manifestRoot.Add(control);
var control = new XElement("view", definition.PackageView);
AppendFileToPackage(definition.PackageView, temporaryPath, filesXml);
root.Add(control);
}
//Actions
@@ -196,20 +196,20 @@ namespace Umbraco.Core.Packaging
//this will be formatted like a full xml block like <actions>...</actions> and we want the child nodes
var parsed = XElement.Parse(definition.Actions);
actionsXml.Add(parsed.Elements());
manifestRoot.Add(actionsXml);
root.Add(actionsXml);
}
catch (Exception e)
{
_logger.Warn<PackagesRepository>(e, "Could not add package actions to the package manifest, the xml did not parse");
_logger.Warn<PackagesRepository>(e, "Could not add package actions to the package, the xml did not parse");
}
}
var manifestFileName = temporaryPath + "/package.xml";
var packageXmlFileName = temporaryPath + "/package.xml";
if (File.Exists(manifestFileName))
File.Delete(manifestFileName);
if (File.Exists(packageXmlFileName))
File.Delete(packageXmlFileName);
packageManifest.Save(manifestFileName);
compiledPackageXml.Save(packageXmlFileName);
// check if there's a packages directory below media
@@ -242,7 +242,7 @@ namespace Umbraco.Core.Packaging
throw new InvalidOperationException("Validation failed, there is invalid data on the model: " + string.Join(", ", results.Select(x => x.ErrorMessage)));
}
private void PackageDataTypes(PackageDefinition definition, XContainer manifestRoot)
private void PackageDataTypes(PackageDefinition definition, XContainer root)
{
var dataTypes = new XElement("DataTypes");
foreach (var dtId in definition.DataTypes)
@@ -252,10 +252,10 @@ namespace Umbraco.Core.Packaging
if (dataType == null) continue;
dataTypes.Add(_serializer.Serialize(dataType));
}
manifestRoot.Add(dataTypes);
root.Add(dataTypes);
}
private void PackageLanguages(PackageDefinition definition, XContainer manifestRoot)
private void PackageLanguages(PackageDefinition definition, XContainer root)
{
var languages = new XElement("Languages");
foreach (var langId in definition.Languages)
@@ -265,10 +265,10 @@ namespace Umbraco.Core.Packaging
if (lang == null) continue;
languages.Add(_serializer.Serialize(lang));
}
manifestRoot.Add(languages);
root.Add(languages);
}
private void PackageDictionaryItems(PackageDefinition definition, XContainer manifestRoot)
private void PackageDictionaryItems(PackageDefinition definition, XContainer root)
{
var dictionaryItems = new XElement("DictionaryItems");
foreach (var dictionaryId in definition.DictionaryItems)
@@ -278,10 +278,10 @@ namespace Umbraco.Core.Packaging
if (di == null) continue;
dictionaryItems.Add(_serializer.Serialize(di, false));
}
manifestRoot.Add(dictionaryItems);
root.Add(dictionaryItems);
}
private void PackageMacros(PackageDefinition definition, XContainer manifestRoot, XContainer filesXml, string temporaryPath)
private void PackageMacros(PackageDefinition definition, XContainer root, XContainer filesXml, string temporaryPath)
{
var macros = new XElement("Macros");
foreach (var macroId in definition.Macros)
@@ -291,14 +291,14 @@ namespace Umbraco.Core.Packaging
var macroXml = GetMacroXml(outInt, out var macro);
if (macroXml == null) continue;
macros.Add(macroXml);
//if the macro has a file copy it to the manifest
//if the macro has a file copy it to the xml
if (!string.IsNullOrEmpty(macro.MacroSource))
AppendFileToManifest(macro.MacroSource, temporaryPath, filesXml);
AppendFileToPackage(macro.MacroSource, temporaryPath, filesXml);
}
manifestRoot.Add(macros);
root.Add(macros);
}
private void PackageStylesheets(PackageDefinition definition, XContainer manifestRoot)
private void PackageStylesheets(PackageDefinition definition, XContainer root)
{
var stylesheetsXml = new XElement("Stylesheets");
foreach (var stylesheetName in definition.Stylesheets)
@@ -308,10 +308,10 @@ namespace Umbraco.Core.Packaging
if (xml != null)
stylesheetsXml.Add(xml);
}
manifestRoot.Add(stylesheetsXml);
root.Add(stylesheetsXml);
}
private void PackageTemplates(PackageDefinition definition, XContainer manifestRoot)
private void PackageTemplates(PackageDefinition definition, XContainer root)
{
var templatesXml = new XElement("Templates");
foreach (var templateId in definition.Templates)
@@ -321,10 +321,10 @@ namespace Umbraco.Core.Packaging
if (template == null) continue;
templatesXml.Add(_serializer.Serialize(template));
}
manifestRoot.Add(templatesXml);
root.Add(templatesXml);
}
private void PackageDocumentTypes(PackageDefinition definition, XContainer manifestRoot)
private void PackageDocumentTypes(PackageDefinition definition, XContainer root)
{
var contentTypes = new HashSet<IContentType>();
var docTypesXml = new XElement("DocumentTypes");
@@ -338,10 +338,10 @@ namespace Umbraco.Core.Packaging
foreach (var contentType in contentTypes)
docTypesXml.Add(_serializer.Serialize(contentType));
manifestRoot.Add(docTypesXml);
root.Add(docTypesXml);
}
private void PackageDocumentsAndTags(PackageDefinition definition, XContainer manifestRoot)
private void PackageDocumentsAndTags(PackageDefinition definition, XContainer root)
{
//Documents and tags
if (string.IsNullOrEmpty(definition.ContentNodeId) == false && int.TryParse(definition.ContentNodeId, out var contentNodeId))
@@ -356,7 +356,7 @@ namespace Umbraco.Core.Packaging
//Create the Documents/DocumentSet node
manifestRoot.Add(
root.Add(
new XElement("Documents",
new XElement("DocumentSet",
new XAttribute("importMode", "root"),
@@ -438,12 +438,12 @@ namespace Umbraco.Core.Packaging
}
/// <summary>
/// Appends a file to package manifest and copies the file to the correct folder.
/// Appends a file to package and copies the file to the correct folder.
/// </summary>
/// <param name="path">The path.</param>
/// <param name="packageDirectory">The package directory.</param>
/// <param name="filesXml">The files xml node</param>
private static void AppendFileToManifest(string path, string packageDirectory, XContainer filesXml)
private static void AppendFileToPackage(string path, string packageDirectory, XContainer filesXml)
{
if (!path.StartsWith("~/") && !path.StartsWith("/"))
path = "~/" + path;
@@ -584,12 +584,12 @@ namespace Umbraco.Core.Packaging
return info;
}
private static XDocument CreatePackageManifest(out XElement root, out XElement files)
private static XDocument CreateCompiledPackageXml(out XElement root, out XElement files)
{
files = new XElement("files");
root = new XElement("umbPackage", files);
var packageManifest = new XDocument(root);
return packageManifest;
var compiledPackageXml = new XDocument(root);
return compiledPackageXml;
}
private XDocument EnsureStorage(out string packagesFile)
@@ -453,13 +453,11 @@ angular.module('umbraco.mocks').
"notifications_notifications": "Notifications",
"packager_chooseLocalPackageText": " Choose Package from your machine, by clicking the Browse<br /> button and locating the package. Umbraco packages usually have a '.umb' or '.zip' extension. ",
"packager_packageAuthor": "Author",
"packager_packageDemonstration": "Demonstration",
"packager_packageDocumentation": "Documentation",
"packager_packageMetaData": "Package meta data",
"packager_packageName": "Package name",
"packager_packageNoItemsHeader": "Package doesn't contain any items",
"packager_packageNoItemsText": "This package file doesn't contain any items to uninstall.<br/><br/> You can safely remove this from the system by clicking 'uninstall package' below.",
"packager_packageNoUpgrades": "No upgrades available",
"packager_packageOptions": "Package options",
"packager_packageReadme": "Package readme",
"packager_packageRepository": "Package repository",
@@ -468,12 +466,7 @@ angular.module('umbraco.mocks').
"packager_packageUninstalledText": "The package was successfully uninstalled",
"packager_packageUninstallHeader": "Uninstall package",
"packager_packageUninstallText": "You can unselect items you do not wish to remove, at this time, below. When you click 'confirm uninstall' all checked-off items will be removed.<br /> <span style='color: Red; font-weight: bold;'>Notice:</span> any documents, media etc depending on the items you remove, will stop working, and could lead to system instability, so uninstall with caution. If in doubt, contact the package author.",
"packager_packageUpgradeDownload": "Download update from the repository",
"packager_packageUpgradeHeader": "Upgrade package",
"packager_packageUpgradeInstructions": "Upgrade instructions",
"packager_packageUpgradeText": " There's an upgrade available for this package. You can download it directly from the Umbraco package repository.",
"packager_packageVersion": "Package version",
"packager_viewPackageWebsite": "View package website",
"paste_doNothing": "Paste with full formatting (Not recommended)",
"paste_errorMessage": "The text you're trying to paste contains special characters or formatting. This could be caused by copying text from Microsoft Word. Umbraco can remove special characters or formatting automatically, so the pasted content will be more suitable for the web.",
"paste_removeAll": "Paste as raw text without any formatting at all",
@@ -175,7 +175,17 @@ function packageResource($q, $http, umbDataFormatter, umbRequestHelper) {
umbRequestHelper.getApiUrl(
"packageApiBaseUrl",
"GetCreatedPackageById",
[{ id: id }])),
{ id: id })),
'Failed to get package');
},
getInstalledById: function (id) {
return umbRequestHelper.resourcePromise(
$http.get(
umbRequestHelper.getApiUrl(
"packageApiBaseUrl",
"GetInstalledPackageById",
{ id: id })),
'Failed to get package');
},
+11 -3
View File
@@ -149,14 +149,22 @@ app.config(function ($routeProvider) {
.when('/:section/:tree/:method?', {
//This allows us to dynamically change the template for this route since you cannot inject services into the templateUrl method.
template: "<div ng-include='templateUrl'></div>",
//This controller will execute for this route, then we replace the template dynamnically based on the current tree.
controller: function ($scope, $route, $routeParams, treeService) {
//This controller will execute for this route, then we replace the template dynamically based on the current tree.
controller: function ($scope, $routeParams, treeService) {
if (!$routeParams.method) {
$scope.templateUrl = "views/common/dashboard.html";
return;
}
// Here we need to figure out if this route is for a package tree and if so then we need
//special case for the package section
var packagePages = ["edit", "options"];
if ($routeParams.section.toLowerCase() === "packages" && $routeParams.tree.toLowerCase() === "packages" && packagePages.indexOf($routeParams.method.toLowerCase()) === -1) {
$scope.templateUrl = "views/packages/overview.html";
return;
}
// Here we need to figure out if this route is for a user's package tree and if so then we need
// to change it's convention view path to:
// /App_Plugins/{mypackage}/backoffice/{treetype}/{method}.html
@@ -1,7 +1,7 @@
(function () {
"use strict";
function EditController($scope, $location, $routeParams, umbRequestHelper, entityResource, stylesheetResource, languageResource, packageResource, dictionaryResource, editorService, formHelper) {
function EditController($scope, $location, $routeParams, umbRequestHelper, entityResource, packageResource, editorService, formHelper) {
const vm = this;
@@ -19,8 +19,8 @@
vm.openContentPicker = openContentPicker;
vm.openFilePicker = openFilePicker;
vm.removeFile = removeFile;
vm.openControlPicker = openControlPicker;
vm.removeControl = removeControl;
vm.openViewPicker = openViewPicker;
vm.removePackageView = removePackageView;
vm.downloadFile = downloadFile;
const packageId = $routeParams.id;
@@ -73,7 +73,7 @@
});
// get all stylesheets
stylesheetResource.getAll().then(stylesheets => {
entityResource.getAll("Stylesheet").then(stylesheets => {
vm.stylesheets = stylesheets;
});
@@ -87,7 +87,7 @@
});
// get all languages
languageResource.getAll().then(languages => {
entityResource.getAll("Language").then(languages => {
// a package stores the id as a string so we
// need to convert all ids to string for comparison
languages.forEach(language => {
@@ -97,7 +97,7 @@
});
// get all dictionary items
dictionaryResource.getList().then(dictionaryItems => {
entityResource.getAll("DictionaryItem").then(dictionaryItems => {
// a package stores the id as a string so we
// need to convert all ids to string for comparison
dictionaryItems.forEach(dictionaryItem => {
@@ -130,7 +130,7 @@
}
function back() {
$location.path("packages/packages/overview").search('create', null);;
$location.path("packages/packages/created").search("create", null).search("packageId", null);
}
function createOrUpdatePackage(editPackageForm) {
@@ -148,7 +148,7 @@
if (create) {
//if we are creating, then redirect to the correct url and reload
$location.path("packages/packages/edit/" + vm.package.id).search("subview", "created").search("create", null);
$location.path("packages/packages/edit/" + vm.package.id).search("create", null);
//don't add a browser history for this
$location.replace();
}
@@ -220,16 +220,16 @@
vm.package.files.splice(index, 1);
}
function openControlPicker() {
function openViewPicker() {
const controlPicker = {
title: "Select control",
title: "Select view",
section: "settings",
treeAlias: "files",
entityType: "file",
onlyInitialized: false,
select: function(node) {
const id = unescape(node.id);
vm.package.loadControl = id;
vm.package.packageView = id;
editorService.close();
},
close: function() {
@@ -239,8 +239,8 @@
editorService.treePicker(controlPicker);
}
function removeControl() {
vm.package.loadControl = null;
function removePackageView() {
vm.package.packageView = null;
}
onInit();
@@ -255,23 +255,23 @@
</umb-control-group>
<umb-control-group
label="Control after installation"
description="Load control after installation (ex: /usercontrols/installer.ascx)">
label="Package options view"
description="Load this view after installation (ex: App_Plugins/MyApp/MyPackageOptions.html). It can be used to configure your package at any time by clicking Options on the installed package listing">
<umb-node-preview
ng-if="vm.package.loadControl"
ng-if="vm.package.packageView"
icon="'icon-box'"
name="vm.package.loadControl"
name="vm.package.packageView"
allow-edit="true"
allow-remove="true"
on-edit="vm.openControlPicker()"
on-remove="vm.removeControl()">
on-edit="vm.openViewPicker()"
on-remove="vm.removePackageView()">
</umb-node-preview>
<a href=""
ng-if="!vm.package.loadControl"
ng-show="!vm.package.packageView"
class="umb-node-preview-add"
ng-click="vm.openControlPicker()"
ng-click="vm.openViewPicker()"
prevent-default>
<localize key="general_add">Add</localize>
</a>
@@ -0,0 +1,47 @@
(function () {
"use strict";
function OptionsController($scope, $location, $routeParams, packageResource, umbRequestHelper) {
const vm = this;
vm.showBackButton = true;
vm.loading = true;
vm.back = back;
const packageId = $routeParams.id;
function onInit() {
packageResource.getInstalledById(packageId).then(pck => {
vm.package = pck;
//set the $scope too, packages can then access this if they wanted from their own scope or parent scope
$scope.package = pck;
vm.loading = false;
//make sure the packageView is formatted as a virtual path
pck.packageView = pck.packageView.startsWith("/~")
? pck.packageView
: pck.packageView.startsWith("/")
? "~" + pck.packageView
: "~/" + pck.packageView;
pck.packageView = umbRequestHelper.convertVirtualToAbsolutePath(pck.packageView);
});
}
function back() {
$location.path("packages/packages/installed").search("packageId", null);
}
onInit();
}
angular.module("umbraco").controller("Umbraco.Editors.Packages.OptionsController", OptionsController);
})();
@@ -0,0 +1,40 @@
<div data-element="editor-packages" ng-controller="Umbraco.Editors.Packages.OptionsController as vm">
<form name="editPackageForm" no-validate val-form-manager>
<umb-editor-view>
<umb-editor-header
name="vm.package.name"
name-locked="true"
on-back="vm.back()"
show-back-button="vm.showBackButton"
hide-icon="true"
hide-description="true"
hide-alias="true">
</umb-editor-header>
<umb-editor-container class="form-horizontal">
<umb-load-indicator ng-if="vm.loading"></umb-load-indicator>
<p ng-if="!vm.package.packageView">
This package has no configuration view
</p>
<div ng-if="vm.package.packageView"
ng-include="vm.package.packageView"></div>
</umb-editor-container>
<!--A footer is nice but the developer can't interact with it, hrmmm-->
<!--<umb-editor-footer>
<umb-editor-footer-content-right>
</umb-editor-footer-content-right>
</umb-editor-footer>-->
</umb-editor-view>
</form>
</div>
@@ -1,30 +1,29 @@
(function () {
"use strict";
function PackagesOverviewController($scope, $location, localStorageService) {
function PackagesOverviewController($scope, $location, $routeParams, localStorageService) {
//Hack!
// if there is a cookie value for packageInstallUri then we need to redirect there,
// if there is a local storage value for packageInstallData then we need to redirect there,
// the issue is that we still have webforms and we cannot go to a hash location and then window.reload
// because it will double load it.
// we will refresh and then navigate there.
let installPackageUri = localStorageService.get("packageInstallUri");
let packageUri = $location.search().subview;
let packageInstallData = localStorageService.get("packageInstallData");
let packageUri = $routeParams.method;
if (installPackageUri) {
localStorageService.remove("packageInstallUri");
if (packageInstallData) {
localStorageService.remove("packageInstallData");
}
if (installPackageUri && installPackageUri !== "installed") {
//navigate to the custom installer screen, if it is just "installed", then we'll
//show the installed view
$location.path(installPackageUri).search("");
if (packageInstallData && packageInstallData !== "installed" && packageInstallData.postInstallationPath) {
//navigate to the custom installer screen, if it is just "installed" it means there is no custom installer screen
$location.path(packageInstallData.postInstallationPath).search("packageId", packageInstallData.id);
}
else {
var vm = this;
packageUri = installPackageUri ? installPackageUri : packageUri; //use the path stored in storage over the one in the current path
packageUri = packageInstallData ? packageInstallData : packageUri; //use the path stored in storage over the one in the current path
vm.page = {};
vm.page.name = "Packages";
@@ -33,10 +32,10 @@
"name": "Packages",
"icon": "icon-cloud",
"view": "views/packages/views/repo.html",
"active": !packageUri || packageUri === "navigation",
"active": !packageUri || packageUri === "repo",
"alias": "umbPackages",
"action": function() {
$location.search("subview", "navigation");
"action": function () {
$location.path("/packages/packages/repo");
}
},
{
@@ -45,8 +44,8 @@
"view": "views/packages/views/installed.html",
"active": packageUri === "installed",
"alias": "umbInstalled",
"action": function() {
$location.search("subview", "installed");
"action": function () {
$location.path("/packages/packages/installed");
}
},
{
@@ -55,8 +54,8 @@
"view": "views/packages/views/install-local.html",
"active": packageUri === "local",
"alias": "umbInstallLocal",
"action": function() {
$location.search("subview", "local");
"action": function () {
$location.path("/packages/packages/local");
}
},
{
@@ -65,8 +64,8 @@
"view": "views/packages/views/created.html",
"active": packageUri === "created",
"alias": "umbCreatedPackages",
"action": function() {
$location.search("subview", "created");
"action": function () {
$location.path("/packages/packages/created");
}
}
];
@@ -184,14 +184,8 @@
installError)
.then(function (result) {
if (result.postInstallationPath) {
//Put the redirect Uri in a cookie so we can use after reloading
localStorageService.set("packageInstallUri", result.postInstallationPath);
}
else {
//set to a constant value so it knows to just go to the installed view
localStorageService.set("packageInstallUri", "installed");
}
//Put the package data in local storage so we can use after reloading
localStorageService.set("packageInstallData", result);
vm.installState.status = labels.installStateCompleted;
vm.installCompleted = true;
@@ -7,6 +7,7 @@
vm.confirmUninstall = confirmUninstall;
vm.uninstallPackage = uninstallPackage;
vm.packageOptions = packageOptions;
vm.state = "list";
vm.installState = {
status: ""
@@ -34,6 +35,11 @@
});
}
function packageOptions(pck) {
$location.path("packages/packages/options/" + pck.id)
.search("packageId", null); //ensure the installId flag is gone, it's only available on first install
}
function confirmUninstall(pck) {
vm.state = "packageDetails";
vm.package = pck;
@@ -51,7 +57,7 @@
vm.installState.progress = "100";
//set this flag so that on refresh it shows the installed packages list
localStorageService.set("packageInstallUri", "installed");
localStorageService.set("packageInstallData", "installed");
//reload on next digest (after cookie)
$timeout(function () {
@@ -23,12 +23,19 @@
</div>
</td>
<td style="text-align: right;">
<umb-button
type="button"
button-style="danger"
size="xxs"
label-key="packager_packageUninstallHeader"
action="vm.confirmUninstall(installedPackage)">
<umb-button ng-show="installedPackage.packageView"
type="button"
button-style="info"
size="xxs"
label-key="packager_packageOptions"
action="vm.packageOptions(installedPackage)">
</umb-button>
<umb-button type="button"
button-style="danger"
size="xxs"
label-key="packager_packageUninstallHeader"
action="vm.confirmUninstall(installedPackage)">
</umb-button>
</td>
</tr>
@@ -257,10 +257,8 @@
error)
.then(function (result) {
if (result.postInstallationPath) {
//Put the redirect Uri in a cookie so we can use after reloading
localStorageService.set("packageInstallUri", result.postInstallationPath);
}
//Put the package data in local storage so we can use after reloading
localStorageService.set("packageInstallData", result);
vm.installState.status = labels.installStateCompleted;
vm.installCompleted = true;
@@ -617,14 +617,12 @@
a výběrem balíčku. Balíčky umbraco mají obvykle přípony ".umb" nebo ".zip".
]]></key>
<key alias="packageAuthor">Autor</key>
<key alias="packageDemonstration">Ukázka</key>
<key alias="packageDocumentation">Dokumentace</key>
<key alias="packageMetaData">Meta data balíčku</key>
<key alias="packageName">Název balíčku</key>
<key alias="packageNoItemsHeader">Balíček neobsahuje žádné položky</key>
<key alias="packageNoItemsText"><![CDATA[Tento balíček neobsahuje žádné položky k odinstalování.<br/><br/>
Můžete jej ze systému bezpečně odstranit kliknutím na "odebrat balíček" níže.]]></key>
<key alias="packageNoUpgrades">Žádné aktualizace nejsou dostupné</key>
<key alias="packageOptions">Možnosti balíčku</key>
<key alias="packageReadme">Čti mě balíčku</key>
<key alias="packageRepository">Úložiště balíčku</key>
@@ -635,12 +633,7 @@
<key alias="packageUninstallText"><![CDATA[Níže můžete zrušit zaškrtnutí položek, které si nepřejete nyní odebrat. Jakmile kliknete na "potvrdit odinstalování", všechny zaškrtnuté položky budou odebrány.<br />
<span style="color: Red; font-weight: bold;">Upozornění:</span> všechny dokumenty, media atd. závislé na položkách, které odstraníte, přestanou pracovat a mohou vést k nestabilitě systému,
takže odinstalovávejte opatrně. Jste-li na pochybách, kontaktujte autora balíčku.]]></key>
<key alias="packageUpgradeDownload">Stáhnout aktualizaci z úložiště</key>
<key alias="packageUpgradeHeader">Balíček s aktualizací</key>
<key alias="packageUpgradeInstructions">Pokyny pro aktualizaci</key>
<key alias="packageUpgradeText"> Pro tento balíček je dostupná aktualizace. Můžete si ji stáhnout přímo z úložiště balíčků umbraco.</key>
<key alias="packageVersion">Verze balíčku</key>
<key alias="viewPackageWebsite">Zobrazit web balíčku</key>
</area>
<area alias="paste">
<key alias="doNothing">Vložit s úplným formatováním (nedoporučeno)</key>
@@ -840,13 +840,11 @@ Mange hilsner fra Umbraco robotten
<key alias="packageCompatibilityDescription">Denne pakke er kompatibel med de følgende versioner af Umbraco, som rapporteret af community-medlemmer. Fuld kompatibilitet kan ikke garanteres for versioner rapporteret nedenfor 100%</key>
<key alias="packageExternalSources">Eksterne kilder</key>
<key alias="packageAuthor">Forfatter</key>
<key alias="packageDemonstration">Demonstration</key>
<key alias="packageDocumentation">Dokumentation</key>
<key alias="packageMetaData">Pakke meta data</key>
<key alias="packageName">Pakkenavn</key>
<key alias="packageNoItemsHeader">Pakken indeholder ingen elementer</key>
<key alias="packageNoItemsText"><![CDATA[Denne pakkefil indeholder ingen elementer som kan af-installeres.<br/><br/>Du kan roligt fjerne denne fra systemet ved at klikke på "Fjern pakke" nedenfor.]]></key>
<key alias="packageNoUpgrades">Ingen opdateringer tilgængelige</key>
<key alias="packageOptions">Pakkevalg</key>
<key alias="packageReadme">Pakke læs mig</key>
<key alias="packageRepository">Pakke opbevaringsbase</key>
@@ -856,12 +854,7 @@ Mange hilsner fra Umbraco robotten
<key alias="packageUninstallHeader">Afinstallér pakke</key>
<key alias="packageUninstallText"><![CDATA[Du kan fjerne markeringen på elementer du ikke ønsker at fjerne, på dette tidspunkt, nedenfor. Når du klikker 'bekræft' vil alle afkrydsede elemenet blive fjernet <br/>
<span style="color: Red; font-weight: bold;">Bemærk:</span> at dokumenter og medier som afhænger af denne pakke vil muligvis holde op med at virke, så vær forsigtig. Hvis i tvivl, kontakt personen som har udviklet pakken.]]></key>
<key alias="packageUpgradeDownload">Download opdatering fra opbevaringsbasen</key>
<key alias="packageUpgradeHeader">Opdatér pakke</key>
<key alias="packageUpgradeInstructions">Opdateringsinstrukser</key>
<key alias="packageUpgradeText">Der er en tilgængelig opdatering til denne pakke. Du kan downloade den direkte fra Umbracos pakke opbevaringsbase.</key>
<key alias="packageVersion">Pakke version</key>
<key alias="viewPackageWebsite">Se pakkeudviklerens website</key>
<key alias="packageAlreadyInstalled">Pakke allerede installeret</key>
<key alias="targetVersionMismatch">Denne pakke kan ikke installeres, den kræver en minimum Umbraco version af</key>
<key alias="installStateUninstalling">Afinstallerer...</key>
@@ -610,13 +610,11 @@ Wenn Sie sich für Runway entscheiden, können Sie optional Blöcke nutzen, die
<area alias="packager">
<key alias="chooseLocalPackageText">Wählen Sie ein Paket auf Ihrem lokalen Computer über "Datei auswählen" aus. &lt;br /&gt;Umbraco-Pakete besitzen üblicherweise die Dateiendungen ".umb" oder ".zip".</key>
<key alias="packageAuthor">Autor</key>
<key alias="packageDemonstration">Demonstration</key>
<key alias="packageDocumentation">Dokumentation</key>
<key alias="packageMetaData">Paket-Meta-Daten</key>
<key alias="packageName">Name des Pakets</key>
<key alias="packageNoItemsHeader">Paket enthält keine Elemente</key>
<key alias="packageNoItemsText">Die Paket-Datei enthält keine Elemente die deinstalliert werden können.&lt;br/&gt;&lt;br/&gt;Sie können das Paket ohne Gefahr deinstallieren indem Sie "Paket deinstallieren" anklicken.</key>
<key alias="packageNoUpgrades">Keine Updates für das Paket verfügbar</key>
<key alias="packageOptions">Paket-Optionen</key>
<key alias="packageReadme">Informationen zum Paket</key>
<key alias="packageRepository">Paket-Repository</key>
@@ -625,12 +623,7 @@ Wenn Sie sich für Runway entscheiden, können Sie optional Blöcke nutzen, die
<key alias="packageUninstalledText">Das Paket wurde erfolgreich deinstalliert</key>
<key alias="packageUninstallHeader">Paket deinstallieren</key>
<key alias="packageUninstallText">Sie können einzelne Elemente, die Sie nicht deinstallieren möchten, unten abwählen. Wenn Sie "Deinstallation bestätigen" klicken, werden alle markierten Elemente entfernt.&lt;br /&gt;&lt;span style="color: Red; font-weight: bold;"&gt;Achtung:&lt;/span&gt; alle Dokumente, Medien, etc, die von den zu entfernenden Elementen abhängen, werden nicht mehr funktionieren und im Zweifelsfall kann dass gesamte CMS instabil werden. Bitte deinstallieren Sie also mit Vorsicht. Falls Sie unsicher sind, kontaktieren Sie den Autor des Pakets.</key>
<key alias="packageUpgradeDownload">Update vom Paket-Repository herunterladen</key>
<key alias="packageUpgradeHeader">Paket-Update</key>
<key alias="packageUpgradeInstructions">Hinweise für die Durchführung des Updates</key>
<key alias="packageUpgradeText"> Es ist ein Update für dieses Paket verfügbar. Sie können es direkt vom Umbraco-Paket-Repository herunterladen.</key>
<key alias="packageVersion">Version des Pakets</key>
<key alias="viewPackageWebsite">Paket-Webseite aufrufen</key>
</area>
<area alias="paste">
<key alias="doNothing">Einfügen mit Formatierung (Nicht empfohlen)</key>
@@ -1090,14 +1090,12 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="packageCompatibilityDescription">This package is compatible with the following versions of Umbraco, as reported by community members. Full compatability cannot be gauranteed for versions reported below 100%</key>
<key alias="packageExternalSources">External sources</key>
<key alias="packageAuthor">Author</key>
<key alias="packageDemonstration">Demonstration</key>
<key alias="packageDocumentation">Documentation</key>
<key alias="packageMetaData">Package meta data</key>
<key alias="packageName">Package name</key>
<key alias="packageNoItemsHeader">Package doesn't contain any items</key>
<key alias="packageNoItemsText"><![CDATA[This package file doesn't contain any items to uninstall.<br/><br/>
You can safely remove this from the system by clicking "uninstall package" below.]]></key>
<key alias="packageNoUpgrades">No upgrades available</key>
<key alias="packageOptions">Package options</key>
<key alias="packageReadme">Package readme</key>
<key alias="packageRepository">Package repository</key>
@@ -1108,12 +1106,7 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="packageUninstallText"><![CDATA[You can unselect items you do not wish to remove, at this time, below. When you click "confirm uninstall" all checked-off items will be removed.<br />
<span style="color: Red; font-weight: bold;">Notice:</span> any documents, media etc depending on the items you remove, will stop working, and could lead to system instability,
so uninstall with caution. If in doubt, contact the package author.]]></key>
<key alias="packageUpgradeDownload">Download update from the repository</key>
<key alias="packageUpgradeHeader">Upgrade package</key>
<key alias="packageUpgradeInstructions">Upgrade instructions</key>
<key alias="packageUpgradeText"> There's an upgrade available for this package. You can download it directly from the Umbraco package repository.</key>
<key alias="packageVersion">Package version</key>
<key alias="viewPackageWebsite">View package website</key>
<key alias="packageAlreadyInstalled">Package already installed</key>
<key alias="targetVersionMismatch">This package cannot be installed, it requires a minimum Umbraco version of</key>
<key alias="installStateUninstalling">Uninstalling...</key>
@@ -1117,14 +1117,12 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="packageCompatibilityDescription">This package is compatible with the following versions of Umbraco, as reported by community members. Full compatability cannot be gauranteed for versions reported below 100%</key>
<key alias="packageExternalSources">External sources</key>
<key alias="packageAuthor">Author</key>
<key alias="packageDemonstration">Demonstration</key>
<key alias="packageDocumentation">Documentation</key>
<key alias="packageMetaData">Package meta data</key>
<key alias="packageName">Package name</key>
<key alias="packageNoItemsHeader">Package doesn't contain any items</key>
<key alias="packageNoItemsText"><![CDATA[This package file doesn't contain any items to uninstall.<br/><br/>
You can safely remove this from the system by clicking "uninstall package" below.]]></key>
<key alias="packageNoUpgrades">No upgrades available</key>
<key alias="packageOptions">Package options</key>
<key alias="packageReadme">Package readme</key>
<key alias="packageRepository">Package repository</key>
@@ -1135,13 +1133,8 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="packageUninstallText"><![CDATA[You can unselect items you do not wish to remove, at this time, below. When you click "confirm uninstall" all checked-off items will be removed.<br />
<span style="color: Red; font-weight: bold;">Notice:</span> any documents, media etc depending on the items you remove, will stop working, and could lead to system instability,
so uninstall with caution. If in doubt, contact the package author.]]></key>
<key alias="packageUpgradeDownload">Download update from the repository</key>
<key alias="packageUpgradeHeader">Upgrade package</key>
<key alias="packageUpgradeInstructions">Upgrade instructions</key>
<key alias="packageUpgradeText"> There's an upgrade available for this package. You can download it directly from the Umbraco package repository.</key>
<key alias="packageVersion">Package version</key>
<key alias="packageVersionUpgrade">Upgrading from version</key>
<key alias="viewPackageWebsite">View package website</key>
<key alias="packageAlreadyInstalled">Package already installed</key>
<key alias="targetVersionMismatch">This package cannot be installed, it requires a minimum Umbraco version of</key>
<key alias="installStateUninstalling">Uninstalling...</key>
@@ -863,14 +863,11 @@
<key alias="packageCompatibilityDescription">Este paquete es compatible con las siguientes versiones de Umbraco, declaradas según miembros de la comunidad. No se puede garantizar compatibilidad completa para versiones declaradas debajo del 100%</key>
<key alias="packageExternalSources">Fuentes externas</key>
<key alias="packageAuthor">Autor</key>
<key alias="packageDemonstration"><![CDATA[Demostración
]]></key>
<key alias="packageDocumentation">Documentación</key>
<key alias="packageMetaData">Meta datos del paquete</key>
<key alias="packageName">Nombre del paquete</key>
<key alias="packageNoItemsHeader">El paquete no contiene ningún elemento</key>
<key alias="packageNoItemsText"><![CDATA[Este archivo de paquete no contiene ningún elemento para desinstalar.<br /><br />Puedes eliminarlo del sistema de forma segura seleccionando la opción "desinstalar paquete" de abajo.]]></key>
<key alias="packageNoUpgrades">No hay actualizaciones disponibles</key>
<key alias="packageOptions">Opciones del paquete</key>
<key alias="packageReadme">Léeme del paquete</key>
<key alias="packageRepository">Repositorio de paquetes</key>
@@ -879,12 +876,7 @@
<key alias="packageUninstalledText">El paquete se ha desinstalado correctamente</key>
<key alias="packageUninstallHeader">Desinstalar paquete</key>
<key alias="packageUninstallText"><![CDATA[Debajo puedes deseleccionar elementos que no desees eliminar en este momento. Cuando eliges "confirmar la desinstalación" todos los elementos marcados serán eliminados.<br /> <span style="color: Red; font-weight: bold;">Nota:</span> cualquier documento, archivo etc dependiente de los elementos eliminados, dejará de funcionar, y puede conllevar inestabilidad en el sistema, por lo que lleva cuidado al desinstalar elementos. En caso de duda, contacta con el autor del paquete.]]></key>
<key alias="packageUpgradeDownload">Descargar actualización del repositorio</key>
<key alias="packageUpgradeHeader">Actualizar paquete</key>
<key alias="packageUpgradeInstructions">Instrucciones de actualización</key>
<key alias="packageUpgradeText">Hay una actualización disponible para este paquete. Puedes descargarla directamente del repositorio de paquetes de Umbraco.</key>
<key alias="packageVersion">Versión del paquete</key>
<key alias="viewPackageWebsite">Ver página web del paquete</key>
<key alias="packageAlreadyInstalled">Paquete ya instalado</key>
<key alias="targetVersionMismatch">Este paquete no se puede instalar, requiere un versión mínima de Umbraco de </key>
<key alias="installStateUninstalling">Desinstalando...</key>
@@ -1025,14 +1025,12 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
<key alias="packageCompatibilityDescription">Ce package est compatible avec les versions suivantes de Umbraco, selon les rapports des membres de la communauté. Une compatibilité complète ne peut pas être garantie pour les versions rapportées sous 100%</key>
<key alias="packageExternalSources">Sources externes</key>
<key alias="packageAuthor">Auteur</key>
<key alias="packageDemonstration">Démo</key>
<key alias="packageDocumentation">Documentation</key>
<key alias="packageMetaData">Meta data du package</key>
<key alias="packageName">Nom du package</key>
<key alias="packageNoItemsHeader">Le package ne contient aucun élément</key>
<key alias="packageNoItemsText"><![CDATA[Ce fichier de package ne contient aucun élément à désinstaller.<br/><br/>
Vous pouvez supprimer tranquillement ce package de votre installation en cliquant sur "Désinstaller le package" ci-dessous.]]></key>
<key alias="packageNoUpgrades">Aucune mise à jour disponible</key>
<key alias="packageOptions">Options du package</key>
<key alias="packageReadme">Package readme</key>
<key alias="packageRepository">Repository des packages</key>
@@ -1043,12 +1041,7 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
<key alias="packageUninstallText"><![CDATA[Vous pouvez désélectionner ci-dessous les éléments que vous ne souhaitez pas supprimer pour le moment. Lorsque vous cliquerez sur "Confirmer la désinstallation", tous les éléments cochés seront supprimés.<br />
<span style="color: Red; font-weight: bold;">Remarque :</span> tous les documents, media etc. dépendant des éléments que vous supprimez vont cesser de fonctionner, ce qui peut provoquer une instabilité du système,
désinstallez donc avec prudence. En cas de doute, contactez l'auteur du package.]]></key>
<key alias="packageUpgradeDownload">Télécharger la mise à jour depuis le repository</key>
<key alias="packageUpgradeHeader">Mettre à jour le package</key>
<key alias="packageUpgradeInstructions">Instructions de mise à jour</key>
<key alias="packageUpgradeText">Il y a une mise à jour disponible pour ce package. Vous pouvez la télécharger directement depuis le repository des packages Umbraco.</key>
<key alias="packageVersion">Version du package</key>
<key alias="viewPackageWebsite">Voir le site internet du package</key>
<key alias="packageAlreadyInstalled">Package déjà installé</key>
<key alias="targetVersionMismatch">Ce package ne peut pas être installé, il nécessite au minimum la version Umbraco %0%</key>
<key alias="installStateUninstalling">Désinstallation...</key>
@@ -548,14 +548,12 @@ To manage your website, simply open the Umbraco back office and start adding con
ויש לבחור את החבילה הרצויה. לחבילות Umbraco יש בד"כ יש סיומות בשם ".umb" או ".zip".
]]></key>
<key alias="packageAuthor">יוצר החבילה</key>
<key alias="packageDemonstration">הדגמה</key>
<key alias="packageDocumentation">תיעוד</key>
<key alias="packageMetaData">מטה דטה עבור החבילה</key>
<key alias="packageName">שם החבילה</key>
<key alias="packageNoItemsHeader">החבילה לא מכילה אף פריט</key>
<key alias="packageNoItemsText"><![CDATA[החבילה אינה מכילה פריטים למחיקה.<br/><br/>
ניתן למחוק בבטיחות רבה את החבילה מהמערכת על ידי לחיצה על "הסר חבילה".]]></key>
<key alias="packageNoUpgrades">אין עידכונים זמינים</key>
<key alias="packageOptions">אפשרויות חבילה</key>
<key alias="packageReadme">תיאור החבילה</key>
<key alias="packageRepository">מאגר חבילות</key>
@@ -566,12 +564,7 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="packageUninstallText"><![CDATA[ניתן להוריד סימון מפריטים שאותם אינך רוצה להסיר, בזמן זה. כשילחץ כפתור "אשר הסרה" כל הפריטים המסומנים ימחקו.<br />
<span style="color: Red; font-weight: bold;">הערה:</span>כל מסמך, מדיה וכו' התלוים בפריטים שהסרת יפסיקו לעבוד, ויכולים להביא למצב של אי יציבות למערכת,
יש למחוק קבצים עם זהירות יתרה, אם יש ספק יש לפנות ליוצר החבילה.]]></key>
<key alias="packageUpgradeDownload">הורד עידכון מהמאגר</key>
<key alias="packageUpgradeHeader">שידרוג חבילה</key>
<key alias="packageUpgradeInstructions">הורדות שידרוג</key>
<key alias="packageUpgradeText"> קיים עידכון זמין עבור חבילה זו. ניתן להוריד אותו ישירות ממאגר החבילות של אומברקו.</key>
<key alias="packageVersion">גירסת החבילה</key>
<key alias="viewPackageWebsite">צפה באתר החבילה</key>
</area>
<area alias="paste">
<key alias="doNothing">שמור עיצוב בהדבקה (לא מומלץ)</key>
@@ -524,14 +524,12 @@ Per gestire il tuo sito web, è sufficiente aprire il back office di Umbraco e i
e selezionando il pacchetto. I pacchetti Umbraco generalmente hanno l'estensione ".umb" o ".zip".
]]></key>
<key alias="packageAuthor">Autore</key>
<key alias="packageDemonstration">Dimostrazione</key>
<key alias="packageDocumentation">Documentazione</key>
<key alias="packageMetaData">Meta dati pacchetto</key>
<key alias="packageName">Nome del pacchetto</key>
<key alias="packageNoItemsHeader">Il pacchetto non contiene tutti gli elementi</key>
<key alias="packageNoItemsText"><![CDATA[Questo pacchetto non contiene elementi da disinstallare.<br/><br/>
E' possibile rimuovere questo pacchetto dal sistema cliccando "rimuovi pacchetto" in basso.]]></key>
<key alias="packageNoUpgrades">Non ci sono aggiornamenti disponibili</key>
<key alias="packageOptions">Opzioni pacchetto</key>
<key alias="packageReadme">Pacchetto leggimi</key>
<key alias="packageRepository">Pacchetto repository</key>
@@ -542,12 +540,7 @@ Per gestire il tuo sito web, è sufficiente aprire il back office di Umbraco e i
<key alias="packageUninstallText"><![CDATA[È possibile deselezionare gli elementi che non si desidera rimuovere, in questo momento, in basso. Quando si fa click su "Conferma eliminazione" verranno rimossi tutti gli elementi selezionati.<br />
<span style="color: Red; font-weight: bold;">Avviso:</span> tutti i documenti, i media, etc a seconda degli elementi che rimuoverai, smetteranno di funzionare, e potrebbero portare a un'instabilità del sistema,
perciò disinstalla con cautela. In caso di dubbio contattare l'autore del pacchetto.]]></key>
<key alias="packageUpgradeDownload"><![CDATA[Scarica l'aggiornamento dal repository]]></key>
<key alias="packageUpgradeHeader">Aggiorna pacchetto</key>
<key alias="packageUpgradeInstructions"><![CDATA[Istruzioni per l'aggiornamento]]></key>
<key alias="packageUpgradeText"><![CDATA[C'è un aggiornamento disponibile per questo pacchetto. Potete scaricarlo direttamente dal repository dei pacchetti Umbraco.]]></key>
<key alias="packageVersion">Versione del pacchetto</key>
<key alias="viewPackageWebsite">Vedi sito web pacchetto</key>
</area>
<area alias="paste">
<key alias="doNothing"><![CDATA[Incolla con tutte le formattazioni (Non consigliato)]]></key>
@@ -692,14 +692,12 @@ Runwayをインストールして作られた新しいウェブサイトがど
パッケージを選択できます。Umbracoのパッケージは概ね".zip"ないしは".umb"といった拡張子です。
]]></key>
<key alias="packageAuthor">作成者</key>
<key alias="packageDemonstration">デモ</key>
<key alias="packageDocumentation">ヘルプ</key>
<key alias="packageMetaData">パッケージのメタデータ</key>
<key alias="packageName">パッケージ名</key>
<key alias="packageNoItemsHeader">パッケージには何も含まれません</key>
<key alias="packageNoItemsText"><![CDATA[このパッケージファイルにはアンインストールするアイテムが含まれません。<br/><br/>
"パッケージのアンインストール"をクリックしてシステムから安全に削除できます。]]></key>
<key alias="packageNoUpgrades">更新はありません</key>
<key alias="packageOptions">パッケージのオプション</key>
<key alias="packageReadme">パッケージの取扱説明書</key>
<key alias="packageRepository">パッケージリポジトリ</key>
@@ -710,12 +708,7 @@ Runwayをインストールして作られた新しいウェブサイトがど
<key alias="packageUninstallText"><![CDATA[今はまだ削除したくない項目の選択を解除できます。"アンインストールの確認"をクリックすると全てのチェックの外された項目を削除します。<br />
<span style="color: Red; font-weight: bold;">注意:</span> 全ての、文書やメディアなどに依存したアイテムを削除する場合はそれらの作業を一端止めてからアンインストールしなければシステムが不安定になる恐れがあります。
疑問点などあればパッケージの作者へ連絡してください。]]></key>
<key alias="packageUpgradeDownload">リポジトリからアップデートをダウンロード</key>
<key alias="packageUpgradeHeader">パッケージのアップグレード</key>
<key alias="packageUpgradeInstructions">更新の手順</key>
<key alias="packageUpgradeText"> このパッケージの更新があります。Umbracoのパッケージリポジトリから直接ダウンロードできます。</key>
<key alias="packageVersion">パッケージのバージョン</key>
<key alias="viewPackageWebsite">パッケージのウェブサイトを見る</key>
</area>
<area alias="paste">
<key alias="doNothing">完全な書式を含んだまま貼り付け (非推奨)</key>
@@ -532,14 +532,12 @@
Umbraco 패키지는 보통 ".umb" 나 ".zip" 확장자를 가집니다.
]]></key>
<key alias="packageAuthor">저자</key>
<key alias="packageDemonstration">데모</key>
<key alias="packageDocumentation">문서화</key>
<key alias="packageMetaData">패키지 메타데이터</key>
<key alias="packageName">패키지 이름</key>
<key alias="packageNoItemsHeader">패키지가 포함한 아이템이 없습니다.</key>
<key alias="packageNoItemsText"><![CDATA[이 패키지엔 삭제할 아이템이 포함되어 있지 않습니다.<br/><br/>
아래 "패키지 삭제"를 클릭하시면 안전하게 시스템에서 삭제하실 수 있습니다.]]></key>
<key alias="packageNoUpgrades">업그레이드할 패키지가 없습니다.</key>
<key alias="packageOptions">패키지 옵션</key>
<key alias="packageReadme">패키지 정보</key>
<key alias="packageRepository">패키지 저장소</key>
@@ -550,12 +548,7 @@
<key alias="packageUninstallText"><![CDATA[삭제하시려는 항목은 선택하지 않을 수 있습니다. "삭제 확인" 버튼을 누를때 체크되어있지 항목은 모두 삭제됩니다.<br />
<span style="color: Red; font-weight: bold;">알림:</span> 문서, 미디어등 삭제항목에 관련된 모든 항목이 삭제됩니다, 작업을 중단하면 시스템이 불안정적으로 동작할 수 있습니다.
삭제는 매우 주의를 요하기 때문에 의심스러운항목은 패키지 제작자에게 문의하시기 바랍니다.]]></key>
<key alias="packageUpgradeDownload">저장소에서 업데이트 다운로드</key>
<key alias="packageUpgradeHeader">업그레이드 패키지</key>
<key alias="packageUpgradeInstructions">업그레이드 지시사항</key>
<key alias="packageUpgradeText">업그레이드할 패키지가 없습니다. Umbraco패키지 저장소에서 직접다운로드하실 수 있습니다.</key>
<key alias="packageVersion">패키지 버전</key>
<key alias="viewPackageWebsite">패키지 웹사이트 보기</key>
</area>
<area alias="paste">
<key alias="doNothing">포맷을 포함여하 붙여넣기(권장하지 않음)</key>
@@ -589,13 +589,11 @@ Vennlig hilsen Umbraco roboten
<area alias="packager">
<key alias="chooseLocalPackageText"><![CDATA[Klikk browse og velg pakke fra lokal disk.<br/> Umbraco-pakker har vanligvis endelsen ".umb" eller ".zip".]]></key>
<key alias="packageAuthor">Utvikler</key>
<key alias="packageDemonstration">Demonstrasjon</key>
<key alias="packageDocumentation">Dokumentasjon</key>
<key alias="packageMetaData">Metadata</key>
<key alias="packageName">Pakkenavn</key>
<key alias="packageNoItemsHeader">Pakken inneholder ingen elementer</key>
<key alias="packageNoItemsText"><![CDATA[Denne pakkefilen inneholder ingen elementer å avinstallere.<br/><br/>Du kan trygt fjerne pakken fra systemet ved å klikke "avinstaller pakke" nedenfor.]]></key>
<key alias="packageNoUpgrades">Ingen oppdateringer tilgjengelig</key>
<key alias="packageOptions">Alternativer for pakke</key>
<key alias="packageReadme">Lesmeg for pakke</key>
<key alias="packageRepository">Pakkebrønn</key>
@@ -604,12 +602,7 @@ Vennlig hilsen Umbraco roboten
<key alias="packageUninstalledText">Pakken ble vellykket avinstallert</key>
<key alias="packageUninstallHeader">Avinstaller pakke</key>
<key alias="packageUninstallText"><![CDATA[Du kan velge bort elementer du ikke vil slette på dette tidspunkt, nedenfor. Når du klikker "bekreft avinstallering" vil alle elementer som er krysset av bli slettet.<br/> <span style="color:red;font-weight:bold;">Advarsel:</span> alle dokumenter, media, etc. som som er avhengig av elementene du sletter, vil slutte å virke, noe som kan føre til ustabilitet, så avinstaller med forsiktighet. Hvis du er i tvil, kontakt pakkeutvikleren.]]></key>
<key alias="packageUpgradeDownload">Last ned oppdatering fra pakkeregisteret</key>
<key alias="packageUpgradeHeader">Oppgrader pakke</key>
<key alias="packageUpgradeInstructions">Oppgraderingsinstrukser</key>
<key alias="packageUpgradeText">Det er en oppdatering tilgjengelig for denne pakken. Du kan laste den ned direkte fra pakkebrønnen.</key>
<key alias="packageVersion">Pakkeversjon</key>
<key alias="viewPackageWebsite">Se pakkens nettsted</key>
</area>
<area alias="paste">
<key alias="doNothing">Lim inn med full formattering (Anbefales ikke)</key>
@@ -698,7 +698,6 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<area alias="packager">
<key alias="chooseLocalPackageText">Kies een package op je computer door op "Bladeren" te klikken en de package te selecteren. Umbraco packages hebben meestal ".umb" of ".zip" als extensie.</key>
<key alias="packageAuthor">Auteur</key>
<key alias="packageDemonstration">Demonstratie</key>
<key alias="packageDocumentation">Documentatie</key>
<key alias="packageMetaData">Package meta data</key>
<key alias="packageName">Package naam</key>
@@ -706,7 +705,6 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<key alias="packageNoItemsText"><![CDATA[Deze package bevat geen inhoud om te verwijderen.<br/><br/>
Je kunt deze package veilig verwijderen door op 'verwijder package' te klikken.
]]></key>
<key alias="packageNoUpgrades">Geen upgrades beschikbaar</key>
<key alias="packageOptions">Package opties</key>
<key alias="packageReadme">Package lees mij</key>
<key alias="packageRepository">Package repository</key>
@@ -718,12 +716,7 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je
<span style="color: Red; font-weight: bold;">Waarschuwing:</span> alle documenten, media etc, die afhankelijk zijn van de items die je verwijderd, zullen niet meer werken en kan leiden tot een instabiele installatie,
wees dus voorzichtig met verwijderen. Als je het niet zeker weet, neem dan contact op met de auteur van de package.
]]></key>
<key alias="packageUpgradeDownload">Download update uit de repository</key>
<key alias="packageUpgradeHeader">Upgrade package</key>
<key alias="packageUpgradeInstructions">Upgrade instructies</key>
<key alias="packageUpgradeText"> Er is een upgrade beschikbaar voor deze package. Je kunt het direct downloaden uit de Umbraco package repository.</key>
<key alias="packageVersion">Package versie</key>
<key alias="viewPackageWebsite">Bekijk de package website</key>
<key alias="packageAlreadyInstalled">Package reeds geinstalleerd</key>
<key alias="targetVersionMismatch">Deze package kan niet worden geinstalleerd omdat minimaal Umbraco versie %0% benodigd is.</key>
<key alias="installStateUninstalling">Aan het deinstalleren...</key>
@@ -859,14 +859,12 @@ Naciśnij przycisk <strong>instaluj</strong>, aby zainstalować bazę danych Umb
<key alias="packageCompatibilityDescription">Według raportów członków społeczności, ten pakiet jest zgodny z następującymi wersjami Umbraco. Pełna zgodność nie może być zagwarantowana dla wersji zaraportowanych poniżej 100%</key>
<key alias="packageExternalSources">Zewnętrzne źródła</key>
<key alias="packageAuthor">Autor</key>
<key alias="packageDemonstration">Demonstracja</key>
<key alias="packageDocumentation">Dokumentacja</key>
<key alias="packageMetaData">Metadane pakietu</key>
<key alias="packageName">Nazwa pakietu</key>
<key alias="packageNoItemsHeader">Pakiet nie zawiera żadnych elementów</key>
<key alias="packageNoItemsText"><![CDATA[Ten plik pakietu nie zawiera żadnych elementów do odinstalowania<br/><br/>
Możesz bezpiecznie go usunąć z systemu poprzez kliknięcie na przycisku "odinstaluj pakiet"]]></key>
<key alias="packageNoUpgrades">Nie ma dostępnych aktualizacji</key>
<key alias="packageOptions">Opcje pakietu</key>
<key alias="packageReadme">Opis pakietu</key>
<key alias="packageRepository">Repozytorium pakietu</key>
@@ -877,12 +875,7 @@ Naciśnij przycisk <strong>instaluj</strong>, aby zainstalować bazę danych Umb
<key alias="packageUninstallText"><![CDATA[Poniżej możesz odznaczyć elementy, których nie chcesz usunąć tym razem. Kiedy klikniesz "potwierdź odinstalowanie", wszystkie zaznaczone elementy zostaną usunięte.<br/>
<span style="color: Red; font-weight: bold;">Uwaga:</span> wszystkie elementy, media, itp. w zależności od elementów, które usuwasz, przestaną działać i mogą spowodować niestabilność systemu,
więc odinstalowuj z uwagą. W przypadku problemów skontaktuj się z autorem pakietu.]]></key>
<key alias="packageUpgradeDownload">Pobierz aktualizację z repozytorium</key>
<key alias="packageUpgradeHeader">Aktualizuj pakiet</key>
<key alias="packageUpgradeInstructions">Instrukcja aktualizacji</key>
<key alias="packageUpgradeText">Jest dostępna aktualizacja dla tego pakietu. Możesz ją pobrać wprost z repozytorium pakietów Umbraco.</key>
<key alias="packageVersion">Wersja pakietu</key>
<key alias="viewPackageWebsite">Odwiedź stronę pakietu</key>
<key alias="packageAlreadyInstalled">Pakiet jest już zainstalowany</key>
<key alias="targetVersionMismatch">Ten pakiet nie może być zainstalowany, ponieważ wymaga Umbraco w wersji przynajmniej %0%</key>
<key alias="installStateUninstalling">Odinstalowywanie...</key>
@@ -522,14 +522,12 @@ Vá até http://%4%/#/content/content/edit/%5% para editar.
<area alias="packager">
<key alias="chooseLocalPackageText"><![CDATA[Selecione o pacote em sua máquina clicando no botão Navegar <br /> e localizando o pacote. Pacotes Umbraco tem extensão ".umb" ou ".zip".]]></key>
<key alias="packageAuthor">Autor</key>
<key alias="packageDemonstration">Demonstração</key>
<key alias="packageDocumentation">Documentação</key>
<key alias="packageMetaData">Dado meta do pacote</key>
<key alias="packageName">Nome do pacote</key>
<key alias="packageNoItemsHeader">Pacote não contém nenhum item</key>
<key alias="packageNoItemsText"><![CDATA[Este arquivo de pacote não contém nenhum item a ser desinstalado. <br /><br />
Você pode remover com segurança do seu sistema clicando em "desinstalar pacote" abaixo.]]></key>
<key alias="packageNoUpgrades">Nenhuma atualização disponível</key>
<key alias="packageOptions">Oções do pacote</key>
<key alias="packageReadme">Leia-me do pacote</key>
<key alias="packageRepository">Repositório do pacote</key>
@@ -539,12 +537,7 @@ Você pode remover com segurança do seu sistema clicando em "desinstalar pacote
<key alias="packageUninstallHeader">Desinstalar pacote</key>
<key alias="packageUninstallText"><![CDATA[Você pode de-selecionar itens que não deseja remover neste momento, abaixo. Quando clicar em "confirmar desinstalação" todos os itens selecionados serão removido. <br />
<span style="color: Red; font-weight: bold;">Aviso:</span> quaisquer documentos, mídia, etc dependentes dos itens que forem removidos vão parar de funcionar e podem levar à instabilidade do sistema. Então desinstale com cuidado. Se tiver dúvidas, contate o autor do pacote]]></key>
<key alias="packageUpgradeDownload">Baixar atualização pelo repositório</key>
<key alias="packageUpgradeHeader">Atualizar pacote</key>
<key alias="packageUpgradeInstructions">Instruções de atualização</key>
<key alias="packageUpgradeText">Há uma atualizaçào disponível para este pacote. Você pode baixá-lo diretamente do repositório de pacotes do Umbraco.</key>
<key alias="packageVersion">Versão do pacote</key>
<key alias="viewPackageWebsite">Ver website do pacote</key>
</area>
<area alias="paste">
<key alias="doNothing">Colar com formatação completa (Não recomendado)</key>
@@ -1182,14 +1182,12 @@
<key alias="packageCompatibilityDescription">Этот пакет совместим со следующими версиями Umbraco, по сообщениям участников сообщества. Полная совместимость не гарантируется для версий со значением ниже 100%</key>
<key alias="packageExternalSources">Внешние источники</key>
<key alias="packageAuthor">Автор</key>
<key alias="packageDemonstration">Демонстрация</key>
<key alias="packageDocumentation">Документация (описание)</key>
<key alias="packageMetaData">Мета-данные пакета</key>
<key alias="packageName">Название пакета</key>
<key alias="packageNoItemsHeader">Пакет ничего не содержит</key>
<key alias="packageNoItemsText"><![CDATA[Этот файл пакета не содержит ни одного элемента
для удаления.<br/><br/>Вы можете безопасно удалить данный пакет из системы, нажав на кнопку "Деинсталлировать пакет".]]></key>
<key alias="packageNoUpgrades">Нет доступных обновлений</key>
<key alias="packageOptions">Опции пакета</key>
<key alias="packageReadme">Краткий обзор пакета</key>
<key alias="packageRepository">Репозиторий пакета</key>
@@ -1200,12 +1198,7 @@
<key alias="packageUninstallText"><![CDATA[Сейчас Вы можете снять отметки с тех опций пакета, которые НЕ хотите удалять. После нажатия кнопки "Подтверждение деинсталляции" все отмеченные опции будут удалены.<br />
<span style="color: Red; font-weight: bold;">Обратите внимание:</span> все документы, медиа-файлы и другой контент, зависящий от этого пакета, перестанет нормально работать, что может привести к нестабильному поведению системы,
поэтому удаляйте пакеты очень осторожно. При наличии сомнений, свяжитесь с автором пакета.]]></key>
<key alias="packageUpgradeDownload">Скачать обновление из репозитория</key>
<key alias="packageUpgradeHeader">Обновление пакета</key>
<key alias="packageUpgradeInstructions">Руководство по обновлению</key>
<key alias="packageUpgradeText">Для данного пакета доступно обновление. Вы можете загрузить это обновление непосредственно из центрального репозитория пакетов Umbraco.</key>
<key alias="packageVersion">Версия пакета</key>
<key alias="viewPackageWebsite">Перейти на веб-сайт пакета</key>
<key alias="packageAlreadyInstalled">Этот пакет уже установлен в системе</key>
<key alias="targetVersionMismatch">Этот пакет не может быть установлен, он требует наличия Umbraco версии как минимум</key>
<key alias="installStateUninstalling">Удаление...</key>
@@ -544,13 +544,11 @@
<area alias="packager">
<key alias="chooseLocalPackageText"><![CDATA[Välj ett installationspaket, genom att klicka på utforska<br />och leta upp paketet. Umbracos installationspaket har oftast filändelsen ".umb" eller ".zip".]]></key>
<key alias="packageAuthor">Utvecklare</key>
<key alias="packageDemonstration">Demonstration</key>
<key alias="packageDocumentation">Dokumentation</key>
<key alias="packageMetaData">Paket metadata</key>
<key alias="packageName">Paketnamn</key>
<key alias="packageNoItemsHeader">Paketet innehåller inga poster</key>
<key alias="packageNoItemsText"><![CDATA[Paketfilen innehåller inga poster som kan avinstalleras.<br/><br/>Det är säkert att ta bort den ur systemet genom att klicka på "avinstallera paket" nedan.]]></key>
<key alias="packageNoUpgrades">Inga uppdateringar tillgängliga</key>
<key alias="packageOptions">Paketalternativ</key>
<key alias="packageReadme">Paket läsmig</key>
<key alias="packageRepository">Paketvalv</key>
@@ -559,12 +557,7 @@
<key alias="packageUninstalledText">Paketet har avinstallerats utan problem</key>
<key alias="packageUninstallHeader">Avinstallera paket</key>
<key alias="packageUninstallText"><![CDATA[Nedan kan du avmarkera de poster du inte vill avinstallera just nu. När du klickar på "bekräfta avinstallation" kommer alla markerade poster att avinstalleras.<br/><span style="color: Red; font-weight: bold;">OBS!</span> dokument, media osv som använder de borttagna posterna kommer sluta fungera vilket kan leda till att systemet blir instabilt. Avinstallera därför med försiktighet. Om du är osäker, kontakta personen som skapat paketet.]]></key>
<key alias="packageUpgradeDownload">Hämta uppdatering från paketvalvet</key>
<key alias="packageUpgradeHeader">Uppdatera paket</key>
<key alias="packageUpgradeInstructions">Uppdateringsinstruktioner</key>
<key alias="packageUpgradeText">Det finns an uppdaterad version av paketet. Du kan hämta den direkt från Umbracos paketvalv.</key>
<key alias="packageVersion">Paketversion</key>
<key alias="viewPackageWebsite">Besök paketets webbplats</key>
</area>
<area alias="paste">
<key alias="doNothing">Klistra in med helt bibehållen formatering (rekommenderas ej)</key>
@@ -609,14 +609,12 @@ To manage your website, simply open the Umbraco back office and start adding con
button and locating the package. Umbraco packages usually have a ".umb" or ".zip" extension.
]]></key>
<key alias="packageAuthor">Author</key>
<key alias="packageDemonstration">Demonstration</key>
<key alias="packageDocumentation">Documentation</key>
<key alias="packageMetaData">Package meta data</key>
<key alias="packageName">Package name</key>
<key alias="packageNoItemsHeader">Package doesn't contain any items</key>
<key alias="packageNoItemsText"><![CDATA[This package file doesn't contain any items to uninstall.<br/><br/>
You can safely remove this from the system by clicking "uninstall package" below.]]></key>
<key alias="packageNoUpgrades">No upgrades available</key>
<key alias="packageOptions">Package options</key>
<key alias="packageReadme">Package readme</key>
<key alias="packageRepository">Package repository</key>
@@ -627,12 +625,7 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="packageUninstallText"><![CDATA[You can unselect items you do not wish to remove, at this time, below. When you click "confirm uninstall" all checked-off items will be removed.<br />
<span style="color: Red; font-weight: bold;">Notice:</span> any documents, media etc depending on the items you remove, will stop working, and could lead to system instability,
so uninstall with caution. If in doubt, contact the package author.]]></key>
<key alias="packageUpgradeDownload">Download update from the repository</key>
<key alias="packageUpgradeHeader">Upgrade package</key>
<key alias="packageUpgradeInstructions">Upgrade instructions</key>
<key alias="packageUpgradeText"> There's an upgrade available for this package. You can download it directly from the Umbraco package repository.</key>
<key alias="packageVersion">Package version</key>
<key alias="viewPackageWebsite">View package website</key>
</area>
<area alias="paste">
<key alias="doNothing">Paste with full formatting (Not recommended)</key>
@@ -728,14 +728,12 @@
选择 ".umb" 或者 ".zip" 文件
]]></key>
<key alias="packageAuthor">作者</key>
<key alias="packageDemonstration">演示</key>
<key alias="packageDocumentation">文档</key>
<key alias="packageMetaData">元数据</key>
<key alias="packageName">名称</key>
<key alias="packageNoItemsHeader">扩展包不含任何项</key>
<key alias="packageNoItemsText"><![CDATA[该扩展包不包含任何项<br/><br/>
点击下面的“卸载”,您可以安全的删除。]]></key>
<key alias="packageNoUpgrades">无可用更新</key>
<key alias="packageOptions">选项</key>
<key alias="packageReadme">说明</key>
<key alias="packageRepository">程序库</key>
@@ -746,12 +744,7 @@
<key alias="packageUninstallText"><![CDATA[选择想要卸载的项目,点击“卸载”<br />
<span style="color: Red; font-weight: bold;">注意:</span>
卸载包将导致所有依赖该包的东西失效,请确认。 ]]></key>
<key alias="packageUpgradeDownload">从程序库下载更新</key>
<key alias="packageUpgradeHeader">更新扩展包</key>
<key alias="packageUpgradeInstructions">更新说明</key>
<key alias="packageUpgradeText">此软件包有一个可用的升级。您可以直接从 Umbraco 软件包存储库下载。</key>
<key alias="packageVersion">版本</key>
<key alias="viewPackageWebsite">访问扩展包网站</key>
<key alias="packageAlreadyInstalled">已安装软件包</key>
<key alias="targetVersionMismatch">此软件包无法安装, 它需要一个最小的 Umbraco 版本的%0%</key>
<key alias="installStateUninstalling">卸载中...</key>
@@ -714,14 +714,12 @@
按鈕並點選該檔案。Umbraco擴展包通常有「.zip」的副檔名。
]]></key>
<key alias="packageAuthor">作者</key>
<key alias="packageDemonstration">演示</key>
<key alias="packageDocumentation">文檔</key>
<key alias="packageMetaData">中繼資料</key>
<key alias="packageName">名稱</key>
<key alias="packageNoItemsHeader">擴展包不含任何項</key>
<key alias="packageNoItemsText"><![CDATA[這個擴展包檔案裡面沒有任何移除項目資訊。<br/><br/>
您可以點選下方「移除擴展包」來安全地移除此項目。]]></key>
<key alias="packageNoUpgrades">無可用更新</key>
<key alias="packageOptions">選項</key>
<key alias="packageReadme">說明</key>
<key alias="packageRepository">程式庫</key>
@@ -732,12 +730,7 @@
<key alias="packageUninstallText"><![CDATA[您可以取消選取任何不想要現在移除的項目。當您點選「確認移除」按鈕後,所有點選項目將被移除。<br />
<span style="color: Red; font-weight: bold;">注意:</span> 任何文檔,媒體或需要這些項目才能運作的物件將會停止運作,並可能使得系統不穩定,
請小心移除。若有疑慮,請聯絡擴展包作者。]]></key>
<key alias="packageUpgradeDownload">從程式庫下載更新</key>
<key alias="packageUpgradeHeader">更新擴展包</key>
<key alias="packageUpgradeInstructions">更新說明</key>
<key alias="packageUpgradeText">擴展包有可用的更新,您可以從程式庫網站更新。</key>
<key alias="packageVersion">版本</key>
<key alias="viewPackageWebsite">訪問擴展包網站</key>
<key alias="packageAlreadyInstalled">擴展包已安裝</key>
<key alias="targetVersionMismatch">這個擴展包無法安裝,它需要Umbraco至少是版本 %0%</key>
<key alias="installStateUninstalling">移除中...</key>
@@ -219,7 +219,7 @@ namespace Umbraco.Web.Editors
/// <param name="list">
/// The list.
/// </param>
private void GetChildItemsForList(IDictionaryItem dictionaryItem, int level, List<DictionaryOverviewDisplay> list)
private void GetChildItemsForList(IDictionaryItem dictionaryItem, int level, ICollection<DictionaryOverviewDisplay> list)
{
foreach (var childItem in Services.LocalizationService.GetDictionaryItemChildren(dictionaryItem.Key).OrderBy(ItemSort()))
{
@@ -231,6 +231,6 @@ namespace Umbraco.Web.Editors
}
}
private Func<IDictionaryItem, string> ItemSort() => item => item.ItemKey;
private static Func<IDictionaryItem, string> ItemSort() => item => item.ItemKey;
}
}
+52 -5
View File
@@ -853,8 +853,6 @@ namespace Umbraco.Web.Editors
return UmbracoObjectTypes.MediaType;
case UmbracoEntityTypes.DocumentType:
return UmbracoObjectTypes.DocumentType;
case UmbracoEntityTypes.Stylesheet:
return UmbracoObjectTypes.Stylesheet;
case UmbracoEntityTypes.Member:
return UmbracoObjectTypes.Member;
case UmbracoEntityTypes.DataType:
@@ -926,13 +924,31 @@ namespace Umbraco.Web.Editors
case UmbracoEntityTypes.User:
long total;
var users = Services.UserService.GetAll(0, int.MaxValue, out total);
var users = Services.UserService.GetAll(0, int.MaxValue, out _);
var filteredUsers = ExecutePostFilter(users, postFilter, postFilterParams);
return Mapper.Map<IEnumerable<IUser>, IEnumerable<EntityBasic>>(filteredUsers);
case UmbracoEntityTypes.Domain:
case UmbracoEntityTypes.Stylesheet:
if (!postFilter.IsNullOrWhiteSpace() || (postFilterParams != null && postFilterParams.Count > 0))
throw new NotSupportedException("Filtering on stylesheets is not currently supported");
return Services.FileService.GetStylesheets().Select(Mapper.Map<EntityBasic>);
case UmbracoEntityTypes.Language:
if (!postFilter.IsNullOrWhiteSpace() || (postFilterParams != null && postFilterParams.Count > 0))
throw new NotSupportedException("Filtering on languages is not currently supported");
return Services.LocalizationService.GetAllLanguages().Select(Mapper.Map<EntityBasic>);
case UmbracoEntityTypes.DictionaryItem:
if (!postFilter.IsNullOrWhiteSpace() || (postFilterParams != null && postFilterParams.Count > 0))
throw new NotSupportedException("Filtering on languages is not currently supported");
return GetAllDictionaryItems();
case UmbracoEntityTypes.Domain:
default:
throw new NotSupportedException("The " + typeof(EntityController) + " does not currently support data for the type " + entityType);
}
@@ -951,5 +967,36 @@ namespace Umbraco.Web.Editors
}
return entities;
}
#region Methods to get all dictionary items
private IEnumerable<EntityBasic> GetAllDictionaryItems()
{
var list = new List<EntityBasic>();
foreach (var dictionaryItem in Services.LocalizationService.GetRootDictionaryItems().OrderBy(DictionaryItemSort()))
{
var item = Mapper.Map<IDictionaryItem, EntityBasic>(dictionaryItem);
list.Add(item);
GetChildItemsForList(dictionaryItem, list);
}
return list;
}
private static Func<IDictionaryItem, string> DictionaryItemSort() => item => item.ItemKey;
private void GetChildItemsForList(IDictionaryItem dictionaryItem, ICollection<EntityBasic> list)
{
foreach (var childItem in Services.LocalizationService.GetDictionaryItemChildren(dictionaryItem.Key).OrderBy(DictionaryItemSort()))
{
var item = Mapper.Map<IDictionaryItem, EntityBasic>(childItem);
list.Add(item);
GetChildItemsForList(childItem, list);
}
}
#endregion
}
}
+8 -14
View File
@@ -115,11 +115,18 @@ namespace Umbraco.Web.Editors
return response;
}
public PackageDefinition GetInstalledPackageById(int id)
{
var pack = Services.PackagingService.GetInstalledPackageById(id);
if (pack == null) throw new HttpResponseException(HttpStatusCode.NotFound);
return pack;
}
/// <summary>
/// Returns all installed packages - only shows their latest versions
/// </summary>
/// <returns></returns>
public IEnumerable<InstalledPackageModel> GetInstalled()
public IEnumerable<PackageDefinition> GetInstalled()
{
return Services.PackagingService.GetAllInstalledPackages()
.GroupBy(
@@ -136,19 +143,6 @@ namespace Umbraco.Web.Editors
//only return the first package with this version
return grouping.First(x => x.version == maxVersion).package;
})
.Select(pack => new InstalledPackageModel
{
Name = pack.Name,
Id = pack.Id,
Author = pack.Author,
Version = pack.Version,
Url = pack.Url,
License = pack.License,
LicenseUrl = pack.LicenseUrl,
Files = pack.Files,
IconUrl = pack.IconUrl,
Readme = pack.Readme
})
.ToList();
}
}
@@ -369,19 +369,17 @@ namespace Umbraco.Web.Editors
var packageInfo = Services.PackagingService.GetCompiledPackageInfo(zipFile);
zipFile.Delete();
//bump cdf to be safe
var clientDependencyConfig = new ClientDependencyConfiguration(Logger);
var clientDependencyUpdated = clientDependencyConfig.UpdateVersionNumber(
UmbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd");
zipFile.Delete();
var redirectUrl = "";
if (packageInfo.Control.IsNullOrWhiteSpace() == false)
if (!packageInfo.PackageView.IsNullOrWhiteSpace())
{
//fixme: this needs to be replaced with an angular view the installer.aspx no longer exists.
//redirectUrl = string.Format("/developer/framed/{0}",
// Uri.EscapeDataString(
// string.Format("/umbraco/developer/Packages/installer.aspx?installing=custominstaller&dir={0}&pId={1}&customControl={2}&customUrl={3}", tempDir, model.Id, ins.Control, ins.Url)));
redirectUrl = $"/packages/packages/options/{model.Id}";
}
return new PackageInstallResult
@@ -1,39 +0,0 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Umbraco.Web.Models.ContentEditing
{
[DataContract]
public class InstalledPackageModel
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "author")]
public string Author { get; set; }
[DataMember(Name = "files")]
public IEnumerable<string> Files { get; set; }
[DataMember(Name = "version")]
public string Version { get; set; }
[DataMember(Name = "url")]
public string Url { get; set; }
[DataMember(Name = "license")]
public string License { get; set; }
[DataMember(Name = "licenseUrl")]
public string LicenseUrl { get; set; }
[DataMember(Name = "iconUrl")]
public string IconUrl { get; set; }
[DataMember(Name = "readme")]
public string Readme { get; set; }
}
}
@@ -86,8 +86,11 @@ namespace Umbraco.Web.Models.ContentEditing
/// <summary>
/// Property Group
/// </summary>
PropertyGroup
PropertyGroup,
//TODO: Dictionary?
/// <summary>
/// Dictionary Item
/// </summary>
DictionaryItem
}
}
@@ -9,6 +9,18 @@ namespace Umbraco.Web.Models.Mapping
{
public CodeFileMapperProfile()
{
CreateMap<Stylesheet, EntityBasic>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(sheet => sheet.Id))
.ForMember(dest => dest.Alias, opt => opt.MapFrom(sheet => sheet.Alias))
.ForMember(dest => dest.Key, opt => opt.MapFrom(sheet => sheet.Key))
.ForMember(dest => dest.Name, opt => opt.MapFrom(sheet => sheet.Name))
.ForMember(dest => dest.ParentId, opt => opt.UseValue(-1))
.ForMember(dest => dest.Path, opt => opt.MapFrom(sheet => sheet.Path))
.ForMember(dest => dest.Trashed, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.ForMember(dest => dest.Udi, opt => opt.Ignore())
.ForMember(dest => dest.Icon, opt => opt.Ignore());
CreateMap<IPartialView, CodeFileDisplay>()
.ForMember(dest => dest.FileType, opt => opt.Ignore())
.ForMember(dest => dest.Notifications, opt => opt.Ignore())
@@ -17,6 +17,18 @@ namespace Umbraco.Web.Models.Mapping
{
public DictionaryMapperProfile(ILocalizationService localizationService)
{
CreateMap<IDictionaryItem, EntityBasic>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(sheet => sheet.Id))
.ForMember(dest => dest.Alias, opt => opt.MapFrom(sheet => sheet.ItemKey))
.ForMember(dest => dest.Key, opt => opt.MapFrom(sheet => sheet.Key))
.ForMember(dest => dest.Name, opt => opt.MapFrom(sheet => sheet.ItemKey))
.ForMember(dest => dest.ParentId, opt => opt.Ignore())
.ForMember(dest => dest.Path, opt => opt.Ignore())
.ForMember(dest => dest.Trashed, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.ForMember(dest => dest.Udi, opt => opt.Ignore())
.ForMember(dest => dest.Icon, opt => opt.Ignore());
CreateMap<IDictionaryItem, DictionaryDisplay>()
.ForMember(x => x.Translations, expression => expression.Ignore())
.ForMember(x => x.Notifications, expression => expression.Ignore())
@@ -12,6 +12,18 @@ namespace Umbraco.Web.Models.Mapping
{
public LanguageMapperProfile()
{
CreateMap<ILanguage, EntityBasic>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(x => x.Id))
.ForMember(dest => dest.Name, opt => opt.MapFrom(x => x.CultureName))
.ForMember(dest => dest.Key, opt => opt.MapFrom(x => x.Key))
.ForMember(dest => dest.Alias, opt => opt.MapFrom(x => x.IsoCode))
.ForMember(dest => dest.ParentId, opt => opt.UseValue(-1))
.ForMember(dest => dest.Path, opt => opt.Ignore())
.ForMember(dest => dest.Trashed, opt => opt.Ignore())
.ForMember(dest => dest.AdditionalData, opt => opt.Ignore())
.ForMember(dest => dest.Udi, opt => opt.Ignore())
.ForMember(dest => dest.Icon, opt => opt.Ignore());
CreateMap<ILanguage, Language>()
.ForMember(l => l.Name, expression => expression.MapFrom(x => x.CultureInfo.DisplayName));
@@ -22,7 +22,7 @@ namespace Umbraco.Web.Trees
var root = base.CreateRootNode(queryStrings);
//this will load in a custom UI instead of the dashboard for the root node
root.RoutePath = $"{Constants.Applications.Packages}/{Constants.Trees.Packages}/overview";
root.RoutePath = $"{Constants.Applications.Packages}/{Constants.Trees.Packages}/repo";
root.Icon = "icon-box";
root.HasChildren = false;
-1
View File
@@ -607,7 +607,6 @@
<Compile Include="Models\ContentEditing\ContentTypeCompositionDisplay.cs" />
<Compile Include="Models\ContentEditing\ContentTypeSave.cs" />
<Compile Include="Models\ContentEditing\DocumentTypeSave.cs" />
<Compile Include="Models\ContentEditing\InstalledPackageModel.cs" />
<Compile Include="Models\ContentEditing\MediaTypeDisplay.cs" />
<Compile Include="Models\ContentEditing\MediaTypeSave.cs" />
<Compile Include="Models\ContentEditing\MemberPropertyTypeBasic.cs" />