Update Umbraco to 7.12.2

This commit is contained in:
2018-09-16 15:08:47 -04:00
parent 7ed7776432
commit 616ab81bad
764 changed files with 142787 additions and 66790 deletions
+2 -3
View File
@@ -52,9 +52,8 @@
<HintPath>..\packages\fasterflect.2.1.3\lib\net40\Fasterflect.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\References\log4net.dll</HintPath>
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
</Reference>
<Reference Include="MathNet.Numerics, Version=4.5.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MathNet.Numerics.4.5.1\lib\net40\MathNet.Numerics.dll</HintPath>
+1 -1
View File
@@ -4,7 +4,7 @@
<package id="CsvHelper" version="2.14.2" targetFramework="net45" />
<package id="EntityFramework" version="6.2.0" targetFramework="net45" />
<package id="fasterflect" version="2.1.3" targetFramework="net45" />
<package id="log4net" version="1.2.10" targetFramework="net45" />
<package id="log4net" version="2.0.8" targetFramework="net45" />
<package id="MathNet.Numerics" version="4.5.1" targetFramework="net45" />
<package id="MlkPwgen" version="0.2.0.0" targetFramework="net45" />
<package id="SSH.NET" version="2013.4.7" targetFramework="net45" />
+9 -5
View File
@@ -8,23 +8,23 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
@@ -50,6 +50,10 @@
<assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.6.0" newVersion="5.2.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+1 -1
View File
@@ -1 +1 @@
C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.kym3i-lp.dll
C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.z8ixywcx.dll
+6 -6
View File
@@ -8,7 +8,7 @@ using Umbraco.Web;
using Umbraco.ModelsBuilder;
using Umbraco.ModelsBuilder.Umbraco;
[assembly: PureLiveAssembly]
[assembly:ModelsBuilderAssembly(PureLive = true, SourceHash = "c5118162be4a0dc0")]
[assembly:ModelsBuilderAssembly(PureLive = true, SourceHash = "79624ab1619e0f80")]
[assembly:System.Reflection.AssemblyVersion("0.0.0.1")]
@@ -18,7 +18,7 @@ using Umbraco.ModelsBuilder.Umbraco;
// <auto-generated>
// This code was generated by a tool.
//
// Umbraco.ModelsBuilder v3.0.5.96
// Umbraco.ModelsBuilder v3.0.10.102
//
// Changes to this file will be lost if the code is regenerated.
// </auto-generated>
@@ -166,9 +166,9 @@ namespace Umbraco.Web.PublishedContentModels
/// Site Logo
///</summary>
[ImplementPropertyType("siteLogo")]
public object SiteLogo
public string SiteLogo
{
get { return this.GetPropertyValue("siteLogo"); }
get { return this.GetPropertyValue<string>("siteLogo"); }
}
///<summary>
@@ -475,9 +475,9 @@ namespace Umbraco.Web.PublishedContentModels
/// Upload file
///</summary>
[ImplementPropertyType("umbracoFile")]
public object UmbracoFile
public string UmbracoFile
{
get { return this.GetPropertyValue("umbracoFile"); }
get { return this.GetPropertyValue<string>("umbracoFile"); }
}
}
+6 -6
View File
@@ -2,7 +2,7 @@
// <auto-generated>
// This code was generated by a tool.
//
// Umbraco.ModelsBuilder v3.0.5.96
// Umbraco.ModelsBuilder v3.0.10.102
//
// Changes to this file will be lost if the code is regenerated.
// </auto-generated>
@@ -19,7 +19,7 @@ using Umbraco.ModelsBuilder;
using Umbraco.ModelsBuilder.Umbraco;
[assembly: PureLiveAssembly]
[assembly:ModelsBuilderAssembly(PureLive = true, SourceHash = "c5118162be4a0dc0")]
[assembly:ModelsBuilderAssembly(PureLive = true, SourceHash = "79624ab1619e0f80")]
[assembly:System.Reflection.AssemblyVersion("0.0.0.1")]
namespace Umbraco.Web.PublishedContentModels
@@ -150,9 +150,9 @@ namespace Umbraco.Web.PublishedContentModels
/// Site Logo
///</summary>
[ImplementPropertyType("siteLogo")]
public object SiteLogo
public string SiteLogo
{
get { return this.GetPropertyValue("siteLogo"); }
get { return this.GetPropertyValue<string>("siteLogo"); }
}
///<summary>
@@ -459,9 +459,9 @@ namespace Umbraco.Web.PublishedContentModels
/// Upload file
///</summary>
[ImplementPropertyType("umbracoFile")]
public object UmbracoFile
public string UmbracoFile
{
get { return this.GetPropertyValue("umbracoFile"); }
get { return this.GetPropertyValue<string>("umbracoFile"); }
}
}
+1 -1
View File
@@ -1 +1 @@
c5118162be4a0dc0
79624ab1619e0f80
@@ -0,0 +1,493 @@
[
{
"name": "Introduction",
"alias": "umbIntroIntroduction",
"group": "Getting Started",
"groupOrder": 100,
"allowDisable": true,
"requiredSections": [
"content",
"media",
"settings",
"developer",
"users",
"member",
"forms"
],
"steps": [
{
"title": "Welcome to Umbraco - The Friendly CMS",
"content": "<p>Thank you for choosing Umbraco - we think this could be the beginning of something beautiful. While it may feel overwhelming at first, we've done a lot to make the learning curve as smooth and fast as possible.</p><p>In this quick tour we will introduce you to the main areas of Umbraco and show you how to best get started.</p><p><em>If you don't want to take the tour now you can always start it by opening the Help drawer in the bottom left corner.<em></p>",
"type": "intro"
},
{
"element": "#applications",
"elementPreventClick": true,
"title": "Main Menu",
"content": "This is the main menu in Umbraco backoffice. Here you can navigate between the different sections, see your user profile and open the help drawer.",
"backdropOpacity": 0.6
},
{
"element": "[data-element='section-content']",
"elementPreventClick": true,
"title": "Sections",
"content": "Each area in Umbraco is called a <b>Section</b>. Right now you are in the Content section, when you want to go to another section simply click on the appropriate icon in the main menu and you'll be there in no time.",
"backdropOpacity": 0.6
},
{
"element": "#tree",
"elementPreventClick": true,
"title": "The Tree",
"content": "<p>This is the <b>Tree</b> and it is the main navigation inside a section.</p><p>In the Content section the tree is called the <b>Content tree</b> and here you can navigate the content of your website.</p>"
},
{
"element": "[data-element='editor-container']",
"elementPreventClick": true,
"title": "Dashboards",
"content": "<p>A dashboard is the main view you are presented with when entering a section within the backoffice, and can be used to show valuable information to the users of the system.</p><p>Notice that some sections have multiple dashboards.</p>"
},
{
"element": "[data-element='global-search-field']",
"title": "Search",
"content": "The search allows you to quickly find whatever you're looking for across sections within Umbraco."
},
{
"element": "#applications [data-element='section-user']",
"title": "User profile",
"content": "Now click on your <b>user avatar</b> to open the user profile dialog.",
"event": "click",
"backdropOpacity": 0.6
},
{
"element": "[data-element~='overlay-user']",
"elementPreventClick": true,
"title": "User profile",
"content": "<p>Here you can see details about your user, what Umbraco version the site is running, change your password and log out of Umbraco.</p><p>In the <b>User section</b> you will be able to do more advanced user management.</p>"
},
{
"element": "[data-element~='overlay-user'] [data-element='button-overlayClose']",
"title": "User profile",
"content": "Let's close the user profile again.",
"event": "click"
},
{
"element": "#applications [data-element='section-help']",
"title": "Help",
"content": "If you ever find yourself in trouble click here to open the Help drawer.",
"event": "click",
"backdropOpacity": 0.6
},
{
"element": "[data-element='drawer']",
"elementPreventClick": true,
"title": "Help",
"content": "<p>In the help drawer you will find articles and videos related to the section you are using.</p><p>This is also where you will find the next tour on how to get started with Umbraco.</p>",
"backdropOpacity": 0.6
},
{
"element": "[data-element='drawer'] [data-element='help-tours']",
"title": "Tours",
"content": "To continue your journey on getting started with Umbraco, you can find more tours right here."
}
]
},
{
"name": "Create document type",
"alias": "umbIntroCreateDocType",
"group": "Getting Started",
"groupOrder": 100,
"requiredSections": [
"content",
"media",
"settings",
"developer",
"users",
"member",
"forms"
],
"steps": [
{
"title": "Create your first Document Type",
"content": "<p>Step 1 of any site is to create a <strong>Document Type</strong>.<br> A Document Type is a template for content. For each <em>type</em> of content you want to create you'll create a Document Type. This will define where content based on this Document Type can be created, how many properties it holds and what the input method should be for these properties.</p><p>When you have at least one Document Type in place you can start creating content and this content can then be used in a template.</p><p>In this tour you will learn how to set up a basic Document Type with a property to enter a short text.</p>",
"type": "intro"
},
{
"element": "#applications [data-element='section-settings']",
"title": "Navigate to the Settings sections",
"content": "In the <b>Settings section</b> you can create and manage Document types.",
"event": "click",
"backdropOpacity": 0.6
},
{
"element": "#tree [data-element='tree-item-documentTypes']",
"title": "Create Document Type",
"content": "<p>Hover over the Document Type tree and click the <b>three small dots</b> to open the <b>context menu</b>.</p>",
"event": "click",
"eventElement": "#tree [data-element='tree-item-documentTypes'] [data-element='tree-item-options']"
},
{
"element": "#dialog [data-element='action-documentType']",
"title": "Create Document Type",
"content": "<p>Click <b>Document Type</b> to create a new document type with a template. The template will be automatically created and set as the default template for this Document Type.</p><p>You will use the template in a later tour to render content.</p>",
"event": "click"
},
{
"element": "[data-element='editor-name-field']",
"title": "Enter a name",
"content": "<p>Your Document Type needs a name. Enter <code>Home Page</code> in the field and click <b>Next</b>.",
"view": "doctypename"
},
{
"element": "[data-element='editor-description']",
"title": "Enter a description",
"content": "<p>A description helps to pick the right document type when creating content.</p><p>Write a description for our Home page. It could be: <br/><pre>The home page of the website</pre></p>"
},
{
"element": "[data-element='group-add']",
"title": "Add tab",
"content": "Tabs are used to organize properties on content in the Content section. Click <b>Add new tab</b> to add a tab.",
"event": "click"
},
{
"element": "[data-element='group-name-field']",
"title": "Name the tab",
"content": "<p>Enter <code>Home</code> in the tab name.</p><p><em>You can name a tab anything you want and if you have a lot of properties it can be useful to add multiple tabs.</em></p>",
"view": "tabName"
},
{
"element": "[data-element='property-add']",
"title": "Add a property",
"content": "<p>Properties are the different input fields on a content page.</p><p>On our Home Page we want to add a welcome text.</p><p>Click <b>Add property</b> to open the property dialog.</p>",
"event": "click"
},
{
"element": "[data-element~='overlay-property-settings'] [data-element='property-name']",
"title": "Name the property",
"content": "Enter <code>Welcome Text</code> as the name for the property.",
"view": "propertyname"
},
{
"element": "[data-element~='overlay-property-settings'] [data-element='property-description']",
"title": "Enter a description",
"content": "<p>A description will help your editor fill in the right content.</p><p>Enter a description for the property editor. It could be:<br/> <pre>Write a nice introduction text so the visitors feel welcome</pre></p>"
},
{
"element": "[data-element~='overlay-property-settings'] [data-element='editor-add']",
"title": "Add editor",
"content": "When you add an editor you choose what the input method for this property will be. Click <b>Add editor</b> to open the editor picker dialog.",
"event": "click"
},
{
"element": "[data-element~='overlay-editor-picker']",
"elementPreventClick": true,
"title": "Editor picker",
"content": "<p>In the editor picker dialog we can pick one of the many built-in editors.</p><p><em>You can choose from preconfigured data types (Reuse) or create a new configuration (Available editors)</em>.</p>"
},
{
"element": "[data-element~='overlay-editor-picker'] [data-element='editor-Textarea']",
"title": "Select editor",
"content": "Select the <b>Textarea</b> editor. This will add a textarea to the Welcome Text property.",
"event": "click"
},
{
"element": "[data-element~='overlay-editor-settings']",
"elementPreventClick": true,
"title": "Editor settings",
"content": "Each property editor can have individual settings. For the textarea editor you can set a character limit but in this case it is not needed."
},
{
"element": "[data-element~='overlay-editor-settings'] [data-element='button-overlaySubmit']",
"title": "Save editor",
"content": "Click <b>Submit</b> to save the changes.",
"event": "click"
},
{
"element": "[data-element~='overlay-property-settings'] [data-element='button-overlaySubmit']",
"title": "Add property to document type",
"content": "Click <b>Submit</b> to add the property to the document type.",
"event": "click"
},
{
"element": "[data-element~='sub-view-permissions']",
"title": "Check the document type permissions",
"content": "Click <b>Permissions</b> to view the permissions page.",
"event": "click"
},
{
"element": "[data-element~='permissions-allow-as-root']",
"title": "Allow this document type to work at the root of your site",
"content": "Toggle the switch <b>Allow as root</b> to allow new content pages based on this document type to be created at the root of your site",
"event": "click"
},
{
"element": "[data-element='button-save']",
"title": "Save the document type",
"content": "All we need now is to save the document type. Click <b>Save</b> to create and save your new document type.",
"event": "click"
}
]
},
{
"name": "Create Content",
"alias": "umbIntroCreateContent",
"group": "Getting Started",
"groupOrder": 100,
"requiredSections": [
"content",
"media",
"settings",
"developer",
"users",
"member",
"forms"
],
"steps": [
{
"title": "Creating your first content node",
"content": "<p>In this tour you will learn how to create the home page for your website. It will use the <b>Home Page</b> Document type you created in the previous tour.</p>",
"type": "intro"
},
{
"element": "#applications [data-element='section-content']",
"title": "Navigate to the Content section",
"content": "<p>In the <b>Content section</b> you can create and manage the content of the website.</p><p>The <b>Content section</b> contains the content of your website. Content is displayed as <b>nodes</b> in the content tree.</p>",
"event": "click",
"backdropOpacity": 0.6
},
{
"element": "[data-element='tree-root']",
"title": "Open context menu",
"content": "<p>Open the context menu by hovering over the root of the content section.</p><p>Now click the <b>three small dots</b> to the right.</p>",
"event": "click",
"eventElement": "#tree [data-element='tree-root'] [data-element='tree-item-options']"
},
{
"element": "[data-element='action-create-homePage']",
"title": "Create Home page",
"content": "<p>The context menu shows you all the actions that are available on a node</p><p>Click on <b>Home Page</b> to create a new page of type <b>Home Page</b>.</p>",
"event": "click"
},
{
"element": "[data-element='editor-content'] [data-element='editor-name-field']",
"title": "Give your new page a name",
"content": "<p>Our new page needs a name. Enter <code>Home</code> in the field and click <b>Next</b>.</p>",
"view": "nodename"
},
{
"element": "[data-element='editor-content'] [data-element='property-welcomeText']",
"title": "Add a welcome text",
"content": "<p>Add content to the <b>Welcome Text</b> field.</p><p>If you don't have any ideas here is a start:<br/> <pre>I am learning Umbraco. High Five I Rock #H5IR</pre>.</p>"
},
{
"element": "[data-element='editor-content'] [data-element='button-saveAndPublish']",
"title": "Save and Publish",
"content": "<p>Now click the <b>Save and publish</b> button to save and publish your changes.</p>",
"event": "click"
}
]
},
{
"name": "Render in template",
"alias": "umbIntroRenderInTemplate",
"group": "Getting Started",
"groupOrder": 100,
"requiredSections": [
"content",
"media",
"settings",
"developer",
"users",
"member",
"forms"
],
"steps": [
{
"title": "Render your content in a template",
"content": "<p>Templating in Umbraco builds on the concept of <b>Razor Views</b> from ASP.NET MVC. This tour is a sneak peak on how to write templates in Umbraco.</p><p>In this tour you will learn how to render content from the <b>Home Page</b> document type so you can see the content added to our <b>Home</b> content page.</p>",
"type": "intro"
},
{
"element": "#applications [data-element='section-settings']",
"title": "Navigate to the Settings section",
"content": "<p>In the <b>Settings</b> section you will find all the templates.</p><p>It is of course also possible to edit all your code files in your favorite code editor.</p>",
"event": "click",
"backdropOpacity": 0.6
},
{
"element": "#tree [data-element='tree-item-templates']",
"title": "Expand the Templates node",
"content": "<p>To see all our templates click the <b>small triangle</b> to the left of the templates node.</p>",
"event": "click",
"eventElement": "#tree [data-element='tree-item-templates'] [data-element='tree-item-expand']",
"view": "templatetree"
},
{
"element": "#tree [data-element='tree-item-templates'] [data-element='tree-item-Home Page']",
"title": "Open Home template",
"content": "<p>Click the <b>Home Page</b> template to open and edit it.</p>",
"eventElement": "#tree [data-element='tree-item-templates'] [data-element='tree-item-Home Page'] a.umb-tree-item__label",
"event": "click"
},
{
"element": "[data-element='editor-templates'] [data-element='code-editor']",
"title": "Edit template",
"content": "<p>The template can be edited here or in your favorite code editor.</p><p>To render the field from the document type add the following to the template:<br/> <pre>&#60;h1&#62;@Model.Content.Name&#60;/h1&#62;<br>&#60;p&#62;@Model.Content.WelcomeText&#60;/p&#62;</pre></p>"
},
{
"element": "[data-element='editor-templates'] [data-element='button-save']",
"title": "Save the template",
"content": "Click the <b>Save button</b> and your template will be saved.",
"event": "click"
}
]
},
{
"name": "View Home page",
"alias": "umbIntroViewHomePage",
"group": "Getting Started",
"groupOrder": 100,
"requiredSections": [
"content",
"media",
"settings",
"developer",
"users",
"member",
"forms"
],
"steps": [
{
"title": "View your Umbraco site",
"content": "<p>Our three main components for a page are done: <b>Document type, Template, and Content</b>. It is now time to see the result.</p><p>In this tour you will learn how to see your published website.</p>",
"type": "intro"
},
{
"element": "#applications [data-element='section-content']",
"title": "Navigate to the content sections",
"content": "In the <b>Content section</b> you will find the content of our website.",
"event": "click",
"backdropOpacity": 0.6
},
{
"element": "#tree [data-element='tree-item-Home']",
"title": "Open the Home page",
"content": "<p>Click the <b>Home</b> page to open it.</p>",
"event": "click",
"eventElement": "#tree [data-element='tree-item-Home'] a.umb-tree-item__label"
},
{
"element": "[data-element='editor-content'] [data-element='tab-_umb_infoTab']",
"title": "Info",
"content": "<p>Under the info tab you will find the default information about a content item.</p>",
"event": "click"
},
{
"element": "[data-element='editor-content'] [data-element='node-info-urls']",
"title": "Open page",
"content": "<p>Click the <b>Link to document</b> <i class='icon-out'></i> to view your page.</p><p>Tip: Click the preview button in the bottom right corner to preview changes without publishing them.</p>",
"event": "click",
"eventElement": "[data-element='editor-content'] [data-element='node-info-urls'] a[target='_blank']"
}
]
},
{
"name": "The Media library",
"alias": "umbIntroMediaSection",
"group": "Getting Started",
"groupOrder": 100,
"requiredSections": [
"content",
"media",
"settings",
"developer",
"users",
"member",
"forms"
],
"steps": [
{
"title": "How to use the media library",
"content": "<p>A website would be boring without media content. In Umbraco you can manage all your images, documents, videos etc. in the <b>Media section</b>. Here you can upload and organise your media items and see details about each item.</p><p>In this tour you will learn how to upload and organise your Media library in Umbraco. It will also show you how to view details about a specific media item.</p>",
"type": "intro"
},
{
"element": "#applications [data-element='section-media']",
"title": "Navigate to the Media section",
"content": "The <b>media</b> section is where you manage all your media items.",
"event": "click",
"backdropOpacity": 0.6
},
{
"element": "#tree [data-element='tree-root']",
"title": "Create a new folder",
"content": "<p>First create a folder for your images. Hover over the media root node and click the <b>three small dots</b> on the right side of the item.</p>",
"event": "click",
"eventElement": "#tree [data-element='tree-root'] [data-element='tree-item-options']"
},
{
"element": "#dialog [data-element='action-Folder']",
"title": "Create a new folder",
"content": "<p>Select the <b>Folder</b> option to select the type folder.</p>",
"event": "click"
},
{
"element": "[data-element='editor-media'] [data-element='editor-name-field']",
"title": "Enter a name",
"content": "<p>Enter <code>My Images</code> in the field.</p>",
"view": "foldername"
},
{
"element": "[data-element='editor-media'] [data-element='button-save']",
"title": "Save the folder",
"content": "<p>Click the <b>Save</b> button to create the new folder.</p>",
"event": "click"
},
{
"element": "[data-element='editor-media'] [data-element='dropzone']",
"title": "Upload images",
"content": "<p>In the upload area you can upload your media items.</p><p>Click the <b>Click here to choose files</b> button and select a couple of images on your computer and upload them.</p>",
"view": "uploadimages"
},
{
"element": "[data-element='editor-media'] [data-element='media-grid-item-0']",
"title": "View media item details",
"content": "Hover over the media item and <b>Click the purple bar</b> to view details about the media item.",
"event": "click",
"eventElement": "[data-element='editor-media'] [data-element='media-grid-item-0'] [data-element='media-grid-item-edit']"
},
{
"element": "[data-element='editor-media'] [data-element='property-umbracoFile']",
"elementPreventClick": true,
"title": "The uploaded image",
"content": "<p>Here you can see the image you have uploaded.</p>"
},
{
"element": "[data-element='editor-media'] [data-element='property-umbracoBytes']",
"title": "Image size",
"content": "<p>You will also find other details about the image, like the size.</p><p>Media items work in much the same way as content. So you can add extra properties to an image by creating or editing the <b>Media types</b> in the Settings section.</p>"
},
{
"element": "[data-element='editor-media'] [data-element='tab-_umb_infoTab']",
"title": "Info",
"content": "Like the content section you can also find default information about the media item. You will find these under the info tab.",
"event": "click"
},
{
"element": "[data-element='editor-media'] [data-element='node-info-urls']",
"title": "Link to media",
"content": "The path to the media item..."
},
{
"element": "[data-element='editor-media'] [data-element='node-info-update-date']",
"title": "Last edited",
"content": "...and information about when the media item has been created and edited."
},
{
"element": "[data-element='editor-container']",
"elementPreventClick": true,
"title": "Using media items",
"content": "You can reference a media item directly in a template by using the path or try adding a Media Picker to a document type property so you can select media items from the content section."
}
]
}
]
+1 -1
View File
@@ -10,7 +10,7 @@ NOTES:
* Compression/Combination/Minification is not enabled unless debug="false" is specified on the 'compiliation' element in the web.config
* A new version will invalidate both client and server cache and create new persisted files
-->
<clientDependency version="1978073806" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">
<clientDependency version="1550335859" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">
<!--
This section is used for Web Forms only, the enableCompositeFiles="true" is optional and by default is set to true.
+21 -6
View File
@@ -26,37 +26,45 @@
<apiEndpoint><![CDATA[http://embed.gettyimages.com/oembed]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco"></requestParams>
</provider>
<!-- Poll Everywhere Settigs -->
<!-- Poll Everywhere Settings -->
<provider name="PollEverywhere" type="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco">
<urlShemeRegex><![CDATA[polleverywhere\.com/]]></urlShemeRegex>
<apiEndpoint><![CDATA[http://www.polleverywhere.com/services/oembed/]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco"></requestParams>
</provider>
<!-- Poll Daddy Settigs -->
<!-- Poll Daddy Settings -->
<provider name="PollDaddy" type="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco">
<urlShemeRegex><![CDATA[polldaddy\.com/]]></urlShemeRegex>
<apiEndpoint><![CDATA[http://polldaddy.com/oembed/]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco"></requestParams>
</provider>
<!-- IFTTT Settigs -->
<!-- IFTTT Settings -->
<provider name="IFTTT" type="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco">
<urlShemeRegex><![CDATA[ifttt\.com/]]></urlShemeRegex>
<apiEndpoint><![CDATA[http://www.ifttt.com/oembed/]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco"></requestParams>
</provider>
<!-- Instagram Settigs -->
<!-- Instagram Settings -->
<provider name="Instagram" type="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco">
<urlShemeRegex><![CDATA[instagram\.com/]]></urlShemeRegex>
<apiEndpoint><![CDATA[http://api.instagram.com/oembed]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco"></requestParams>
</provider>
<!-- Rdio Settigs -->
<!-- Issuu Settings-->
<provider name="Issuu" type="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco">
<urlShemeRegex><![CDATA[issuu.com/(?:.*)/docs]]></urlShemeRegex>
<apiEndpoint><![CDATA[https://issuu.com/oembed]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco">
<param name="format">json</param>
</requestParams>
</provider>
<!-- Rdio Settings -->
<provider name="Rdio" type="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco">
<urlShemeRegex><![CDATA[rdio\.com/]]></urlShemeRegex>
<apiEndpoint><![CDATA[http://www.rdio.com/api/oembed/]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco"></requestParams>
</provider>
<!-- SoundCloud Settigs -->
<!-- SoundCloud Settings -->
<provider name="SoundCloud" type="Umbraco.Web.Media.EmbedProviders.OEmbedRich, umbraco">
<urlShemeRegex><![CDATA[soundcloud\.com/]]></urlShemeRegex>
<apiEndpoint><![CDATA[http://soundcloud.com/oembed]]></apiEndpoint>
@@ -116,4 +124,11 @@
<provider name="Twitgoo" type="Umbraco.Web.Media.EmbedProviders.Twitgoo, umbraco">
<urlShemeRegex><![CDATA[twitgoo\.com/]]></urlShemeRegex>
</provider>
<!-- Twitter Settigs -->
<provider name="Twitter" type="Umbraco.Web.Media.EmbedProviders.OEmbedJson, umbraco">
<urlShemeRegex><![CDATA[twitter\.com/]]></urlShemeRegex>
<apiEndpoint><![CDATA[https://publish.twitter.com/oembed]]></apiEndpoint>
<requestParams type="Umbraco.Web.Media.EmbedProviders.Settings.Dictionary, umbraco">
</requestParams>
</provider>
</embed>
+3 -3
View File
@@ -8,10 +8,10 @@ More information and documentation can be found on GitHub: https://github.com/Sh
-->
<ExamineLuceneIndexSets>
<!-- The internal index set used by Umbraco back-office - DO NOT REMOVE -->
<IndexSet SetName="InternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/{machinename}/Internal/"/>
<IndexSet SetName="InternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/Internal/"/>
<!-- The internal index set used by Umbraco back-office for indexing members - DO NOT REMOVE -->
<IndexSet SetName="InternalMemberIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/{machinename}/InternalMember/">
<IndexSet SetName="InternalMemberIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/InternalMember/">
<IndexAttributeFields>
<add Name="id" />
<add Name="nodeName"/>
@@ -24,5 +24,5 @@ More information and documentation can be found on GitHub: https://github.com/Sh
</IndexSet>
<!-- Default Indexset for external searches, this indexes all fields on all types of nodes-->
<IndexSet SetName="ExternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/{machinename}/External/" />
<IndexSet SetName="ExternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/External/" />
</ExamineLuceneIndexSets>
+28
View File
@@ -0,0 +1,28 @@
<?xml version ="1.0" encoding="utf-8" ?>
<!--
Please note: to use healthcheck notifications you must ensure to set the umbracoApplicationUrl value
in umbracoSettings.config. For more information on this setting, please see:
https://our.umbraco.com/documentation/reference/config/umbracosettings/#web-routing
For details on the format of this configuration file see:
https://our.umbraco.com/documentation/reference/config/healthchecks
-->
<HealthChecks>
<disabledChecks>
<!--<check id="1B5D221B-CE99-4193-97CB-5F3261EC73DF" disabledOn="" disabledBy="0" />-->
</disabledChecks>
<notificationSettings enabled="false" firstRunTime="" periodInHours="24">
<notificationMethods>
<!--<notificationMethod alias="email" enabled="true" verbosity="Summary" failureOnly="true">
<settings>
<add key="recipientEmail" value="" />
</settings>
</notificationMethod>-->
</notificationMethods>
<disabledChecks>
<!--<check id="EB66BB3B-1BCD-4314-9531-9DA2C1D6D9A7" disabledOn="" disabledBy="0" />-->
</disabledChecks>
</notificationSettings>
</HealthChecks>
-10
View File
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<urlrewritingnet xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
<rewrites>
<!--
URLRewriting.net is obsolete and will be removed from Umbraco in the future.
If you want to do rewrites, make sure to use IIS URL rewrite: https://www.iis.net/downloads/microsoft/url-rewrite
The advantage of using IIS rewrite is that it is much faster, much less CPU intensive and much less memory intensive.
-->
</rewrites>
</urlrewritingnet>
+1
View File
@@ -8,4 +8,5 @@
<allow host="umbraco.org" />
<allow host="umbraco.tv" />
<allow host="our.umbraco.org" />
<allow host="our.umbraco.com" />
</feedProxy>
+27 -132
View File
@@ -1,82 +1,27 @@
[
{
"name": "Rich text editor",
"alias": "rte",
"view": "rte",
"icon": "icon-article"
},
{
"name": "Image",
"alias": "media",
"view": "media",
"icon": "icon-picture"
},
{
"name": "Image wide",
"alias": "media_wide",
"view": "media",
"render": "/App_Plugins/Grid/Editors/Render/media_wide.cshtml",
"icon": "icon-picture"
},
{
"name": "Image wide cropped",
"alias": "media_wide_cropped",
"view": "media",
"render": "media",
"icon": "icon-picture",
"config": {
"size": {
"width": 1920,
"height": 700
}
}
},
{
"name": "Image rounded",
"alias": "media_round",
"view": "media",
"render": "/App_Plugins/Grid/Editors/Render/media_round.cshtml",
"icon": "icon-picture"
},
{
"name": "Image w/ text right",
"alias": "media_text_right",
"view": "/App_Plugins/Grid/Editors/Views/media_with_description.html",
"render": "/App_Plugins/Grid/Editors/Render/media_text_right.cshtml",
"icon": "icon-picture"
},
{
"name": "Macro",
"alias": "macro",
"view": "macro",
"icon": "icon-settings-alt"
},
{
"name": "Embed",
"alias": "embed",
"view": "embed",
"render": "/App_Plugins/Grid/Editors/Render/embed_videowrapper.cshtml",
"icon": "icon-movie-alt"
},
{
"name": "Banner Headline",
"alias": "banner_headline",
"view": "textstring",
"icon": "icon-coin",
"config": {
"style": "font-size: 36px; line-height: 45px; font-weight: bold; text-align:center",
"markup": "<h1 style='font-size:62px;text-align:center'>#value#</h1>"
}
{
"name": "Rich text editor",
"alias": "rte",
"view": "rte",
"icon": "icon-article"
},
{
"name": "Banner Tagline",
"alias": "banner_tagline",
"view": "textstring",
"icon": "icon-coin",
"config": {
"style": "font-size: 25px; line-height: 35px; font-weight: normal; text-align:center",
"markup": "<h2 style='font-weight: 100; font-size: 40px;text-align:center'>#value#</h2>"
}
"name": "Image",
"alias": "media",
"view": "media",
"icon": "icon-picture"
},
{
"name": "Macro",
"alias": "macro",
"view": "macro",
"icon": "icon-settings-alt"
},
{
"name": "Embed",
"alias": "embed",
"view": "embed",
"icon": "icon-movie-alt"
},
{
"name": "Headline",
@@ -89,63 +34,13 @@
}
},
{
"name": "Headline centered",
"alias": "headline_centered",
"name": "Quote",
"alias": "quote",
"view": "textstring",
"icon": "icon-coin",
"icon": "icon-quote",
"config": {
"style": "font-size: 30px; line-height: 45px; font-weight: bold; text-align:center;",
"markup": "<h1 style='text-align:center;'>#value#</h1>"
"style": "border-left: 3px solid #ccc; padding: 10px; color: #ccc; font-family: serif; font-style: italic; font-size: 18px",
"markup": "<blockquote>#value#</blockquote>"
}
},
{
"name": "Abstract",
"alias": "abstract",
"view": "textstring",
"icon": "icon-coin",
"config": {
"style": "font-size: 16px; line-height: 20px; font-weight: bold;",
"markup": "<h3>#value#</h3>"
}
},
{
"name": "Paragraph",
"alias": "paragraph",
"view": "textstring",
"icon": "icon-font",
"config": {
"style": "font-size: 16px; line-height: 20px; font-weight: light;",
"markup": "<p>#value#</p>"
}
},
{
"name": "Quote",
"alias": "quote",
"view": "textstring",
"icon": "icon-quote",
"config": {
"style": "border-left: 3px solid #ccc; padding: 10px; color: #ccc; font-family: serif; font-variant: italic; font-size: 18px",
"markup": "<blockquote>#value#</blockquote>"
}
},
{
"name": "Quote with description",
"alias": "quote_D",
"view": "/App_Plugins/Grid/Editors/Views/quote_with_description.html",
"render": "/App_Plugins/Grid/Editors/Render/quote_with_description.cshtml",
"icon": "icon-quote",
"config": {
"style": "border-left: 3px solid #ccc; padding: 10px; color: #ccc; font-family: serif; font-variant: italic; font-size: 18px"
}
},
{
"name": "Code",
"alias": "code",
"view": "textstring",
"icon": "icon-code",
"config": {
"style": "overflow: auto;padding: 6px 10px;border: 1px solid #ddd;border-radius: 3px;background-color: #f8f8f8;font-size: .9rem;font-family: 'Courier 10 Pitch', Courier, monospace;line-height: 19px;",
"markup": "<pre>#value#</pre>"
}
}
}
]
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<caching currentCache="DiskCache">
<caches>
<cache name="DiskCache" type="ImageProcessor.Web.Caching.DiskCache, ImageProcessor.Web" maxDays="365" browserMaxDays="7" trimCache="false">
<settings>
<setting key="VirtualCachePath" value="~/app_data/cache"/>
</settings>
</cache>
</caches>
</caching>
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<processing preserveExifMetaData="true" fixGamma="false" interceptAllRequests="false" allowCacheBuster="true">
<presets>
</presets>
<plugins>
<plugin name="Alpha" type="ImageProcessor.Web.Processors.Alpha, ImageProcessor.Web"/>
<plugin name="AutoRotate" type="ImageProcessor.Web.Processors.AutoRotate, ImageProcessor.Web" enabled="true"/>
<plugin name="BackgroundColor" type="ImageProcessor.Web.Processors.BackgroundColor, ImageProcessor.Web" enabled="true"/>
<plugin name="Brightness" type="ImageProcessor.Web.Processors.Brightness, ImageProcessor.Web"/>
<plugin name="Contrast" type="ImageProcessor.Web.Processors.Contrast, ImageProcessor.Web"/>
<plugin name="Crop" type="ImageProcessor.Web.Processors.Crop, ImageProcessor.Web" enabled="true"/>
<plugin name="DetectEdges" type="ImageProcessor.Web.Processors.DetectEdges, ImageProcessor.Web"/>
<plugin name="EntropyCrop" type="ImageProcessor.Web.Processors.EntropyCrop, ImageProcessor.Web"/>
<plugin name="Filter" type="ImageProcessor.Web.Processors.Filter, ImageProcessor.Web"/>
<plugin name="Flip" type="ImageProcessor.Web.Processors.Flip, ImageProcessor.Web"/>
<plugin name="Format" type="ImageProcessor.Web.Processors.Format, ImageProcessor.Web" enabled="true"/>
<plugin name="Gamma" type="ImageProcessor.Web.Processors.Gamma, ImageProcessor.Web"/>
<plugin name="GaussianBlur" type="ImageProcessor.Web.Processors.GaussianBlur, ImageProcessor.Web">
<settings>
<setting key="MaxSize" value="22"/>
<setting key="MaxSigma" value="5.1"/>
<setting key="MaxThreshold" value="100"/>
</settings>
</plugin>
<plugin name="GaussianSharpen" type="ImageProcessor.Web.Processors.GaussianSharpen, ImageProcessor.Web">
<settings>
<setting key="MaxSize" value="22"/>
<setting key="MaxSigma" value="5.1"/>
<setting key="MaxThreshold" value="100"/>
</settings>
</plugin>
<plugin name="Halftone" type="ImageProcessor.Web.Processors.Halftone, ImageProcessor.Web"/>
<plugin name="Hue" type="ImageProcessor.Web.Processors.Hue, ImageProcessor.Web"/>
<plugin name="Mask" type="ImageProcessor.Web.Processors.Mask, ImageProcessor.Web">
<settings>
<setting key="VirtualPath" value="~/images/imageprocessor/mask/"/>
</settings>
</plugin>
<plugin name="Meta" type="ImageProcessor.Web.Processors.Meta, ImageProcessor.Web"/>
<plugin name="Overlay" type="ImageProcessor.Web.Processors.Overlay, ImageProcessor.Web">
<settings>
<setting key="VirtualPath" value="~/images/imageprocessor/overlay/"/>
</settings>
</plugin>
<plugin name="Pixelate" type="ImageProcessor.Web.Processors.Pixelate, ImageProcessor.Web"/>
<plugin name="Quality" type="ImageProcessor.Web.Processors.Quality, ImageProcessor.Web" enabled="true"/>
<plugin name="ReplaceColor" type="ImageProcessor.Web.Processors.ReplaceColor, ImageProcessor.Web"/>
<plugin name="Resize" type="ImageProcessor.Web.Processors.Resize, ImageProcessor.Web" enabled="true">
<settings>
<setting key="MaxWidth" value="5000"/>
<setting key="MaxHeight" value="5000"/>
</settings>
</plugin>
<plugin name="Rotate" type="ImageProcessor.Web.Processors.Rotate, ImageProcessor.Web"/>
<plugin name="RotateBounded" type="ImageProcessor.Web.Processors.RotateBounded, ImageProcessor.Web"/>
<plugin name="RoundedCorners" type="ImageProcessor.Web.Processors.RoundedCorners, ImageProcessor.Web"/>
<plugin name="Saturation" type="ImageProcessor.Web.Processors.Saturation, ImageProcessor.Web"/>
<plugin name="Tint" type="ImageProcessor.Web.Processors.Tint, ImageProcessor.Web"/>
<plugin name="Vignette" type="ImageProcessor.Web.Processors.Vignette, ImageProcessor.Web"/>
<plugin name="Watermark" type="ImageProcessor.Web.Processors.Watermark, ImageProcessor.Web"/>
</plugins>
</processing>
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<security>
<services>
<service name="LocalFileImageService" type="ImageProcessor.Web.Services.LocalFileImageService, ImageProcessor.Web" />
<!--Disable the LocalFileImageService and enable this one when using virtual paths. -->
<!--<service name="CloudImageService" type="ImageProcessor.Web.Services.CloudImageService, ImageProcessor.Web">
<settings>
<setting key="Container" value=""/>
<setting key="MaxBytes" value="8194304"/>
<setting key="Timeout" value="30000"/>
<setting key="Host" value="http://yourhost.com/"/>
</settings>
</service>-->
<service prefix="remote.axd" name="RemoteImageService" type="ImageProcessor.Web.Services.RemoteImageService, ImageProcessor.Web">
<settings>
<setting key="MaxBytes" value="4194304" />
<setting key="Timeout" value="3000" />
<setting key="Protocol" value="http" />
</settings>
<whitelist>
</whitelist>
</service>
</services>
</security>
+2 -4
View File
@@ -27,7 +27,6 @@
<command>
<umbracoAlias>undo</umbracoAlias>
<name>Undo</name>
<name>Remove Format</name>
<icon>images/editor/undo.gif</icon>
<tinyMceCommand value="" userInterface="false" frontendCommand="undo">undo</tinyMceCommand>
<priority>11</priority>
@@ -233,7 +232,6 @@
<plugin loadOnFrontend="true">code</plugin>
<plugin loadOnFrontend="true">codemirror</plugin>
<plugin loadOnFrontend="true">paste</plugin>
<plugin loadOnFrontend="true">umbracolink</plugin>
<plugin loadOnFrontend="true">anchor</plugin>
<plugin loadOnFrontend="true">charmap</plugin>
<plugin loadOnFrontend="true">table</plugin>
@@ -241,7 +239,7 @@
<plugin loadOnFrontend="true">hr</plugin>
</plugins>
<validElements>
<![CDATA[+a[id|style|rel|data-id|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|
<![CDATA[+a[id|style|rel|data-id|data-udi|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|
ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],
-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|reversed|start|style|type],-ul[class|style],-li[class|style],br[class],
img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align|umbracoorgwidth|umbracoorgheight|onresize|onresizestart|onresizeend|rel|data-id],
@@ -250,7 +248,7 @@ img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|al
thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],
-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],
-span[class|align|style],-pre[class|align|style],address[class|align|style],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],
-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],
-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],small[class|style],
dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],object[class|id|width|height|codebase|*],
param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|class],area[shape|coords|href|alt|target|class],bdo[class],button[class],iframe[*]]]>
</validElements>
+10 -10
View File
@@ -11,27 +11,27 @@
<!--Settings-->
<add initialize="true" sortOrder="0" alias="documentTypes" application="settings" title="Document Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.ContentTypeTreeController, umbraco" />
<add application="settings" alias="templates" title="Templates" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.TemplatesTreeController, umbraco" initialize="true" sortOrder="1" />
<add application="settings" alias="partialViews" title="Partial Views" silent="false" initialize="true" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.PartialViewsTree, umbraco" sortOrder="2" />
<add application="settings" alias="partialViews" title="Partial Views" silent="false" initialize="true" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.PartialViewsTreeController, umbraco" sortOrder="2" />
<add application="settings" alias="stylesheets" title="Stylesheets" type="umbraco.loadStylesheets, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="3" />
<add application="settings" alias="stylesheetProperty" title="Stylesheet Property" type="umbraco.loadStylesheetProperty, umbraco" iconClosed="" iconOpen="" initialize="false" sortOrder="0" />
<add application="settings" alias="scripts" title="Scripts" type="umbraco.loadScripts, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4" />
<add application="settings" alias="scripts" title="Scripts" type="Umbraco.Web.Trees.ScriptTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4" />
<add application="settings" alias="languages" title="Languages" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.LanguageTreeController, umbraco" sortOrder="5" />
<add application="settings" alias="dictionary" title="Dictionary" type="umbraco.loadDictionary, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="6" />
<add application="settings" alias="dictionary" title="Dictionary" type="Umbraco.Web.Trees.DictionaryTreeController, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="6" />
<add initialize="true" sortOrder="7" alias="mediaTypes" application="settings" title="Media Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MediaTypeTreeController, umbraco" />
<add initialize="true" sortOrder="8" alias="contentBlueprints" application="settings" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.ContentBlueprintTreeController, umbraco" />
<!--Developer-->
<add initialize="true" sortOrder="0" alias="packager" application="developer" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.PackagesTreeController, umbraco" />
<add initialize="true" sortOrder="1" alias="dataTypes" application="developer" title="Data Types" iconClosed="icon-folder" iconOpen="icon-folder" type="Umbraco.Web.Trees.DataTypeTreeController, umbraco" />
<add application="developer" alias="macros" title="Macros" type="umbraco.loadMacros, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" />
<add initialize="true" sortOrder="2" alias="macros" application="developer" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MacroTreeController, umbraco" />
<add application="developer" alias="relationTypes" title="Relation Types" type="umbraco.loadRelationTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="4" />
<add application="developer" alias="xslt" title="XSLT Files" type="umbraco.loadXslt, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="5" />
<add application="developer" alias="partialViewMacros" type="Umbraco.Web.Trees.PartialViewMacrosTree, umbraco" silent="false" initialize="true" sortOrder="6" title="Partial View Macro Files" iconClosed="icon-folder" iconOpen="icon-folder" />
<add initialize="true" sortOrder="5" alias="xslt" application="developer" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.XsltTreeController, umbraco" />
<add application="developer" alias="partialViewMacros" type="Umbraco.Web.Trees.PartialViewMacrosTreeController, umbraco" silent="false" initialize="true" sortOrder="6" title="Partial View Macro Files" iconClosed="icon-folder" iconOpen="icon-folder" />
<!--Users-->
<add application="users" alias="users" title="Users" type="umbraco.loadUsers, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="0" />
<add application="users" alias="userTypes" title="User Types" type="umbraco.cms.presentation.Trees.UserTypes, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="1" />
<add application="users" alias="userPermissions" title="User Permissions" type="umbraco.cms.presentation.Trees.UserPermissions, umbraco" iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="2" />
<add initialize="true" sortOrder="0" alias="users" application="users" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.UserTreeController, umbraco" />
<!--Members-->
<add initialize="true" sortOrder="0" alias="member" application="member" title="Members" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTreeController, umbraco" />
<add initialize="true" sortOrder="1" alias="memberTypes" application="member" title="Member Types" iconClosed="icon-folder" iconOpen="icon-folder-open" type="Umbraco.Web.Trees.MemberTypeTreeController, umbraco" />
@@ -45,4 +45,4 @@
<!--<add application="myApplication" alias="myTree" title="Me Tree" type="MyNamespace.myTree, MyAssembly"
iconClosed="icon-folder" iconOpen="icon-folder" sortOrder="10" />-->
</trees>
</trees>
+22 -10
View File
@@ -1,13 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<!--
umbracoSettings.config configuration documentation can be found here:
http://our.umbraco.org/documentation/using-umbraco/config-files/umbracoSettings/
https://our.umbraco.com/documentation/using-umbraco/config-files/umbracoSettings/
Many of the optional settings are not explicitly listed here
but can be found in the online documentation.
-->
<backOffice>
<tours enable="false"></tours>
</backOffice>
<content>
<errors>
@@ -36,11 +40,7 @@
<!-- The html injected into a (x)html page if Umbraco is running in preview mode -->
<PreviewBadge>
<![CDATA[<a id="umbracoPreviewBadge" style="position: absolute; top: 0; right: 0; border: 0; width: 149px; height: 149px; background: url('{1}/preview/previewModeBadge.png') no-repeat;z-index: 9999999;" href="#" OnClick="javascript:window.top.location.href = '{0}/endPreview.aspx?redir={2}'"><span style="display:none;">In Preview Mode - click to end</span></a>]]></PreviewBadge>
<!-- Cache cycle of Media and Member data fetched from the umbraco.library methods -->
<!-- In seconds. 0 will disable cache -->
<UmbracoLibraryCacheDuration>1800</UmbracoLibraryCacheDuration>
<![CDATA[<a id="umbracoPreviewBadge" style="z-index:99999; position: absolute; top: 0; right: 0; border: 0; width: 149px; height: 149px; background: url('{1}/preview/previewModeBadge.png') no-repeat;z-index: 9999999;" href="#" OnClick="javascript:window.top.location.href = '{0}/endPreview.aspx?redir={2}'"><span style="display:none;">In Preview Mode - click to end</span></a>]]></PreviewBadge>
<!-- How Umbraco should handle errors during macro execution. Can be one of the following values:
- inline - show an inline error within the macro but allow the page to continue rendering. Historial Umbraco behaviour.
@@ -51,15 +51,24 @@
<MacroErrors>inline</MacroErrors>
<!-- These file types will not be allowed to be uploaded via the upload control for media and content -->
<disallowedUploadFiles>ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd,swf,xml,html,htm,svg,php,htaccess</disallowedUploadFiles>
<disallowedUploadFiles>ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd,swf,xml,xhtml,html,htm,svg,php,htaccess</disallowedUploadFiles>
<!-- Defines the default document type property used when adding properties in the back-office (if missing or empty, defaults to Textstring -->
<defaultDocumentTypeProperty>Textstring</defaultDocumentTypeProperty>
<!-- Enables value converters for all built in property editors so that they return strongly typed object, recommended for use with Models Builder -->
<EnablePropertyValueConverters>true</EnablePropertyValueConverters>
<!-- You can specify your own background image for the login screen here. The image will automatically get an overlay to match back office colors - this path is relative to the ~/umbraco path. The default location is: /umbraco/assets/img/installer.jpg -->
<loginBackgroundImage>assets/img/installer.jpg</loginBackgroundImage>
</content>
<security>
<!-- set to true to auto update login interval (and there by disabling the lock screen -->
<keepUserLoggedIn>false</keepUserLoggedIn>
<!-- by default this is true and if not specified in config will be true. set to false to always show a separate username field in the back office user editor -->
<usernameIsEmail>true</usernameIsEmail>
<!-- change in 4.8: Disabled users are now showed dimmed and last in the tree. If you prefer not to display them set this to true -->
<hideDisabledUsersInBackoffice>false</hideDisabledUsersInBackoffice>
</security>
@@ -152,7 +161,10 @@
Configure it here if you need anything specific. Needs to be a complete url with scheme and umbraco
path, eg http://mysite.com/umbraco. NOT just "mysite.com" or "mysite.com/umbraco" or "http://mysite.com".
-->
<web.routing trySkipIisCustomErrors="true" internalRedirectPreservesTemplate="false" disableAlternativeTemplates="false" disableFindContentByIdPath="false" umbracoApplicationUrl="">
<web.routing
trySkipIisCustomErrors="false"
internalRedirectPreservesTemplate="false" disableAlternativeTemplates="false" disableFindContentByIdPath="false"
umbracoApplicationUrl="">
</web.routing>
</settings>
+1 -1
View File
@@ -6,4 +6,4 @@
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
</system.webServer>
</configuration>
</configuration>
+2 -2
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<createUI>
<nodeType alias="templates">
<header>Template</header>
@@ -27,7 +27,7 @@
<usercontrol>/create/simple.ascx</usercontrol>
<tasks>
<delete assembly="umbraco" type="macroTasks" />
</tasks>
<create assembly="umbraco" type="macroTasks" /></tasks>
</nodeType>
<nodeType alias="xslt">
<header>Macro</header>
+8 -16
View File
@@ -32,10 +32,8 @@
<key alias="sendtopublish">Odeslat k publikování</key>
<key alias="sendToTranslate">Odeslat k překladu</key>
<key alias="sort">Seřadit</key>
<key alias="toPublish">Odeslat k publikování</key>
<key alias="translate">Přeložit</key>
<key alias="update">Aktualizovat</key>
<key alias="defaultValue">Výchozí hodnota</key>
</area>
<area alias="assignDomain">
<key alias="permissionDenied">Přístup zakázán.</key>
@@ -469,14 +467,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>Výchozí uživatel byl deaktivován, nebo nemá přístup k umbracu!</strong></p><p>Netřeba nic dalšího dělat. Klikněte na <b>Následující</b> pro pokračování.]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>Heslo výchozího uživatele bylo úspěšně změněno od doby instalace!</strong></p><p>Netřeba nic dalšího dělat. Klikněte na <b>Následující</b> pro pokračování.]]></key>
<key alias="defaultUserPasswordChanged">Heslo je změněno!</key>
<key alias="defaultUserText"><![CDATA[
<p>
umbraco vytváří výchozího uživatele s uživatelským jménem <strong>('admin')</strong> a heslem <strong>('default')</strong>. Je <strong>důležité</strong> změnit toto heslo na jiné.
</p>
<p>
Tento krok zkontroluje heslo výchozího uživatele a doporučí, má-li být změněno.
</p>
]]></key>
<key alias="greatStart">Mějte skvělý start, sledujte naše uváděcí videa</key>
<key alias="licenseText">Kliknutím na tlačítko následující (nebo modifikováním umbracoConfigurationStatus v souboru web.config) přijímáte licenci tohoto software tak, jak je uvedena v poli níže. Upozorňujeme, že tato distribuce umbraca se skládá ze dvou různých licencí, open source MIT licence pro framework a umbraco freeware licence, která pokrývá UI.</key>
<key alias="None">Není nainstalováno.</key>
@@ -676,7 +666,7 @@
<area alias="publicAccess">
<key alias="paAdvanced">Ochrana prostřednictvím rolí</key>
<key alias="paAdvancedHelp"><![CDATA[Pokud si přejete řídit přístup ke stránce za použití autentizace prostřednictvím rolí,<br /> použijte členské skupiny umbraca.]]></key>
<key alias="paAdvancedNoGroups"><![CDATA[Musíte vytvořit členskou skupinu před tím, než můžete použít <br />autentizaci prostřednictvím rolí]]></key>
<key alias="paAdvancedNoGroups">Musíte vytvořit členskou skupinu před tím, než můžete použít autentizaci prostřednictvím rolí</key>
<key alias="paErrorPage">Chybová stránka</key>
<key alias="paErrorPageHelp">Použita, když jsou lidé přihlášení, ale nemají přístup</key>
<key alias="paHowWould">Vyberte, jak omezit přístup k této stránce</key>
@@ -781,7 +771,7 @@
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone">Třídění bylo ukončeno.</key>
<key alias="sortHelp">Abyste nastavili, jak mají být položky seřazeny, přetáhněte jednotlivé z nich nahoru či dolů. Anebo klikněte na hlavičku sloupce pro setřídění celé kolekce</key>
<key alias="sortPleaseWait"><![CDATA[ Čekejte, prosím. Položky jsou tříděny a může to chvíli trvat.<br/> <br/> Během třídění nezavírejte toto okno]]></key>
<key alias="sortPleaseWait"><![CDATA[ Čekejte, prosím. Položky jsou tříděny a může to chvíli trvat.]]></key>
</area>
<area alias="speechBubbles">
<key alias="contentPublishedFailedByEvent">Publikování bylo zrušeno doplňkem třetí strany</key>
@@ -858,6 +848,12 @@
<key alias="template">Šablona</key>
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Choose type of content</key>
<key alias="chooseLayout">Choose a layout</key>
<key alias="addRows">Add a row</key>
@@ -911,8 +907,6 @@
<key alias="postContent">Vložit za polem</key>
<key alias="preContent">Vložit před polem</key>
<key alias="recursive">Rekurzivní</key>
<key alias="removeParagraph">Odstranit tagy odstavce</key>
<key alias="removeParagraphHelp">Odstraní jakékoliv &amp;lt;P&amp;gt; na začátku a na konci textu</key>
<key alias="standardFields">Standardní pole</key>
<key alias="uppercase">Velká písmena</key>
<key alias="urlEncode">Kódování URL</key>
@@ -1039,8 +1033,6 @@
<key alias="startnode">Úvodní uzel v obsahu</key>
<key alias="username">Uživatelské jméno</key>
<key alias="userPermissions">Oprávnění uživatele</key>
<key alias="usertype">Typ uživatele</key>
<key alias="userTypes">Typy uživatelů</key>
<key alias="writer">Spisovatel</key>
<key alias="yourProfile" version="7.0">Váš profil</key>
<key alias="yourHistory" version="7.0">Vaše nedávná historie</key>
File diff suppressed because it is too large Load Diff
+14 -17
View File
@@ -2,7 +2,7 @@
<language alias="de" intName="German (DE)" localName="Deutsch (DE)" lcid="7" culture="de-DE">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">Hostnamen verwalten</key>
@@ -33,10 +33,8 @@
<key alias="sendtopublish">Zur Veröffentlichung einreichen</key>
<key alias="sendToTranslate">Zur Übersetzung senden</key>
<key alias="sort">Sortieren</key>
<key alias="toPublish">Zur Veröffentlichung einreichen</key>
<key alias="translate">Übersetzen</key>
<key alias="update">Aktualisieren</key>
<key alias="defaultValue">Standardwert</key>
</area>
<area alias="assignDomain">
<key alias="permissionDenied">Erlaubnis verweigert.</key>
@@ -85,6 +83,7 @@
<key alias="returnToList">Zurück zur Liste</key>
<key alias="save">Speichern</key>
<key alias="saveAndPublish">Speichern und veröffentlichen</key>
<key alias="saveAndSchedule">Speichern und planen</key>
<key alias="saveToPublish">Speichern und zur Abnahme übergeben</key>
<key alias="showPage">Vorschau</key>
<key alias="showPageDisabled">Die Vorschaufunktion ist deaktiviert, da keine Vorlage zugewiesen ist</key>
@@ -221,6 +220,8 @@
<key alias="copiedItemOfItems">Copied %0% out of %1% items</key>
</area>
<area alias="defaultdialogs">
<key alias="nodeNameLinkPicker">Name des Link</key>
<key alias="urlLinkPicker">Link</key>
<key alias="anchorInsert">Name</key>
<key alias="assignDomain">Hostnamen verwalten</key>
<key alias="closeThisWindow">Fenster schließen</key>
@@ -278,6 +279,7 @@
<key alias="search">Durchsuchen ...</key>
<key alias="filter">Filtern ...</key>
<key alias="enterTags">Tippen, um Tags hinzuzufügen (nach jedem Tag die Eingabetaste drücken) ...</key>
<key alias="usernameHint">Der Benutzername ist normalerweise Ihre E-Mail-Adresse</key>
</area>
<area alias="editcontenttype">
<key alias="allowAtRoot" version="7.2">Auf oberster Ebene erlauben</key>
@@ -463,7 +465,7 @@
<key alias="databaseInstallDone">Die Datenbank wurde für Umbraco %0% konfiguriert. Klicken Sie auf &lt;strong&gt;weiter&lt;/strong&gt;, um fortzufahren.</key>
<key alias="databaseNotFound">&lt;p&gt;Die angegebene Datenbank ist leider nicht erreichbar. Bitte prüfen Sie die Verbindungszeichenfolge ("Connection String") in der "web.config"-Datei.&lt;/p&gt;
&lt;p&gt;Um fortzufahren, passen Sie bitte die "web.config"-Datei mit einem beliebigen Text-Editor an. Scrollen Sie dazu nach unten, fügen Sie die Verbindungszeichenfolge für die zuverbindende Datenbank als Eintrag "UmbracoDbDSN" hinzu und speichern Sie die Datei.&lt;/p&gt;
&lt;p&gt;Klicken Sie nach erfolgter Anpassung auf &lt;strong&gt;Wiederholen&lt;/strong&gt;.&lt;br /&gt;Wenn Sie weitere technische Informationen benötigen, besuchen Sie &lt;a href="http://our.Umbraco.org/wiki" target="_blank"&gt;The Umbraco documentation wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Klicken Sie nach erfolgter Anpassung auf &lt;strong&gt;Wiederholen&lt;/strong&gt;.&lt;br /&gt;Wenn Sie weitere technische Informationen benötigen, besuchen Sie &lt;a href="https://our.umbraco.com/wiki" target="_blank"&gt;The Umbraco documentation wiki&lt;/a&gt;.&lt;/p&gt;
</key>
<key alias="databaseText">Um diesen Schritt abzuschließen, müssen Sie die notwendigen Informationen zur Datenbankverbindung angeben.&lt;br /&gt;Bitte kontaktieren Sie Ihren Provider bzw. Server-Administrator für weitere Informationen.</key>
<key alias="databaseUpgrade">
@@ -479,13 +481,6 @@
<key alias="defaultUserDisabled">&lt;strong&gt;Der Standard-Benutzer wurde deaktiviert oder hat keinen Zugriff auf Umbraco.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Es sind keine weiteren Aktionen notwendig. Klicken Sie auf &lt;b&gt;Weiter&lt;/b&gt; um fortzufahren.</key>
<key alias="defaultUserPassChanged">&lt;strong&gt;Das Kennwort des Standard-Benutzers wurde seit der Installation verändert.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Es sind keine weiteren Aktionen notwendig. Klicken Sie auf &lt;b&gt;Weiter&lt;/b&gt; um fortzufahren.</key>
<key alias="defaultUserPasswordChanged">Das Kennwort wurde geändert!</key>
<key alias="defaultUserText">&lt;p&gt;
Bei der Installation von Umbraco wurde ein Standard-Benutzer mit dem Login-Namen &lt;strong&gt;'admin'&lt;/strong&gt; und dem Kennwort &lt;strong&gt;'default'&lt;/strong&gt; erstellt.
&lt;strong&gt;WICHTIG:&lt;/strong&gt; Das Kennwort sollte auf ein sicheres, eigenes Kennwort geändert werden.
&lt;/p&gt;
&lt;p&gt;
Das Kennwort des Standard-Benutzers wird jetzt geprüft und im Anschluss werden eventuell notwendige Änderungen vorschlagen.
&lt;/p&gt;</key>
<key alias="greatStart">Schauen Sie sich die Einführungsvideos für einen schnellen und einfachen Start an.</key>
<key alias="licenseText">Mit der Installation stimmen Sie der angezeigten Lizenz für diese Software zu. Bitte beachten Sie, dass diese Umbraco-Distribution aus zwei Lizenzen besteht. Einer freien Open-Source MIT-Lizenz für das Framework und der Umbraco-Freeware-Lizenz für die Verwaltungsoberfläche.</key>
<key alias="None">Noch nicht installiert.</key>
@@ -770,7 +765,7 @@ Wenn Sie sich für Runway entscheiden, können Sie optional Blöcke nutzen, die
<key alias="sortCreationDate">Erstellungsdatum</key>
<key alias="sortDone">Sortierung abgeschlossen.</key>
<key alias="sortHelp">Ziehen Sie die Elemente an ihre gewünschte neue Position.</key>
<key alias="sortPleaseWait">Bitte warten, die Seiten werden sortiert. Das kann einen Moment dauern. Bitte schließen Sie dieses Fenster nicht, bis der Sortiervorgang abgeschlossen ist.</key>
<key alias="sortPleaseWait">Bitte warten, die Seiten werden sortiert. Das kann einen Moment dauern.</key>
</area>
<area alias="speechBubbles">
<key alias="operationFailedHeader">Fehlgeschlagen</key>
@@ -856,9 +851,15 @@ Wenn Sie sich für Runway entscheiden, können Sie optional Blöcke nutzen, die
<key alias="template">Vorlage</key>
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Element hinzufügen</key>
<key alias="addRows">Zeilenlayout auswählen</key>
<key alias="addElement">Einfach auf &lt;i class="icon icon-add blue"&gt;&lt;/i&gt; klicken, um das erste Element anzulegen</key>
<key alias="addElement">Element mit &lt;i class="icon icon-add blue"&gt;&lt;/i&gt; hinzugen</key>
<key alias="dropElement">Drop content</key>
<key alias="clickToEmbed">Klicken, um Inhalt einzubetten</key>
<key alias="clickToInsertImage">Klicken, um Abbildung einzufügen</key>
@@ -902,8 +903,6 @@ Wenn Sie sich für Runway entscheiden, können Sie optional Blöcke nutzen, die
<key alias="postContent">An den Feldinhalt anhängen</key>
<key alias="preContent">Dem Feldinhalt voranstellen</key>
<key alias="recursive">Rekursiv</key>
<key alias="removeParagraph">Textabsatz entfernen</key>
<key alias="removeParagraphHelp">Alle &lt;p&gt; am Anfang und am Ende des Feldinhalts werden entfernt</key>
<key alias="standardFields">Standardfelder</key>
<key alias="uppercase">Großbuchstaben</key>
<key alias="urlEncode">URL kodieren</key>
@@ -1023,8 +1022,6 @@ Ihr freundlicher Umbraco-Robot
<key alias="startnode">Startelement in den Inhalten</key>
<key alias="username">Benutzername</key>
<key alias="userPermissions">Berechtigungen</key>
<key alias="usertype">Rolle</key>
<key alias="userTypes">Rollen</key>
<key alias="writer">Autor</key>
<key alias="translator">Übersetzer</key>
<key alias="yourProfile" version="7.0">Ihr Profil</key>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+9 -24
View File
@@ -2,7 +2,7 @@
<language alias="he" intName="Hebrew (Israel)" localName="Hebrew" lcid="" culture="he-IL">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">נהל שמות מתחם</key>
@@ -15,8 +15,6 @@
<key alias="disable">נטרל</key>
<key alias="emptyTrashcan">רוקן סל מיחזור</key>
<key alias="exportDocumentType">ייצא סוג קובץ</key>
<key alias="exportDocumentTypeAsCode">ייצא אל.NET</key>
<key alias="exportDocumentTypeAsCode-Full">ייצא אל .NET</key>
<key alias="importDocumentType">ייבא סוג מסמך</key>
<key alias="importPackage">ייבא חבילה</key>
<key alias="liveEdit">ערוך במצב "קנבס"</key>
@@ -32,14 +30,8 @@
<key alias="sendtopublish">שלח לפירסום</key>
<key alias="sendToTranslate">שלח לתירגום</key>
<key alias="sort">מיין</key>
<key alias="toPublish">שלח לפירסום</key>
<key alias="translate">תרגם</key>
<key alias="update">עדכן</key>
<key alias="DeleteCMSImportAction">מחק</key>
<key alias="ExecuteCMSImportWizardAction">בצע</key>
<key alias="ScheduleCMSImportWizardAction">תזמן</key>
<key alias="StartCMSImportWizardAction">ייבא נתונים</key>
<key alias="StartCMSImportChildDefinitionAction">צור הגדרות ילדים</key>
<key alias="LastRunInfoAction">יומן משימות מתוזמנות</key>
</area>
<area alias="assignDomain">
@@ -391,7 +383,7 @@
<p>To proceed, please edit the "web.config" file (using Visual Studio or your favourite text editor), scroll to the bottom, add the connection string for your database in the key named "UmbracoDbDSN" and save the file. </p>
<p>
Click the <strong>retry</strong> button when
done.<br /><a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">
done.<br /><a href="https://our.umbraco.com/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">
More information on editing web.config here.</a></p>]]></key>
<key alias="databaseText"><![CDATA[To complete this step, you must know some information regarding your database server ("connection string").<br />
Please contact your ISP if necessary.
@@ -410,15 +402,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>The Default user has been disabled or has no access to Umbraco!</strong></p><p>No further actions needs to be taken. Click <b>Next</b> to proceed.]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>The Default user's password has been successfully changed since the installation!</strong></p><p>No further actions needs to be taken. Click <strong>Next</strong> to proceed.]]></key>
<key alias="defaultUserPasswordChanged">הסיסמה שונתה!</key>
<key alias="defaultUserText"><![CDATA[
<p>
Umbraco creates a default user with a login <strong>('admin')</strong> and password <strong>('default')</strong>. It's <strong>important</strong> that the password is
changed to something unique.
</p>
<p>
This step will check the default user's password and suggest if it needs to be changed.
</p>
]]></key>
<key alias="greatStart">התחל מכאן, צפה בסרטוני ההדרכה עבור אומברקו</key>
<key alias="licenseText">על ידי לחיצה על 'הבא', הנך מאשר את פרטי התקנון כפי שמפורט בתיבת הטקטס למטה. שים לב, הפצה זו של אומברקו כוללת שני גירסאות שונות של רשיון,קוד פתוח ברשיון MIT עבור ה- framework ורשיון Umbraco freeware המכסה את ה- UI.</key>
<key alias="None">לא הותקן עדיין.</key>
@@ -693,7 +676,7 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone">המיון הושלם.</key>
<key alias="sortHelp">יש לגרור את הפריטים מעלה או מטה כדי להגדיר את סדר התוכן. או לחץ על כותרת העמודה כדי למיין את כל פריטי התוכן</key>
<key alias="sortPleaseWait"><![CDATA[פריטי התוכן ממיונים ברגע זה, תהליך זה לוקח זמן מה.<br/> <br/> נא לא לסגור את החלון בזמן המיון]]></key>
<key alias="sortPleaseWait"><![CDATA[פריטי התוכן ממיונים ברגע זה, תהליך זה לוקח זמן מה.]]></key>
</area>
<area alias="speechBubbles">
<key alias="contentPublishedFailedByEvent">הפירסום בוטל על ידי תוסף צד שלישי</key>
@@ -762,6 +745,12 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="template">תבנית</key>
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Choose type of content</key>
<key alias="chooseLayout">Choose a layout</key>
<key alias="addRows">Add a row</key>
@@ -818,8 +807,6 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="postContent">הוסף אחרי השדה</key>
<key alias="preContent">הוסף לפני השדה</key>
<key alias="recursive">רקורסיבי</key>
<key alias="removeParagraph">הסר תגי פסקה</key>
<key alias="removeParagraphHelp">מסיר את כל ה- &amp;lt;P&amp;gt; בתחילת ובסוף הטקסט</key>
<key alias="uppercase">אותיות גדולות</key>
<key alias="urlEncode">קידוד URL</key>
<key alias="urlEncodeHelp">תווים מיוחדים יעוצבו ב- URL</key>
@@ -940,8 +927,6 @@ To manage your website, simply open the Umbraco back office and start adding con
<key alias="startnode">התחלה בפריט התוכן</key>
<key alias="username">שם תצוגה</key>
<key alias="userPermissions">הרשאות משתמש</key>
<key alias="usertype">סוג משתמש</key>
<key alias="userTypes">סוגי משתמש</key>
<key alias="writer">כותב</key>
</area>
</language>
+66 -64
View File
@@ -2,7 +2,7 @@
<language alias="it" intName="Italian" localName="italiano" lcid="16" culture="it-IT">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">Gestisci hostnames</key>
@@ -30,7 +30,6 @@
<key alias="sendtopublish">Invia per la pubblicazione</key>
<key alias="sendToTranslate">Invia per la traduzione</key>
<key alias="sort">Ordina</key>
<key alias="toPublish">Invia la pubblicazione</key>
<key alias="translate">Traduci</key>
<key alias="unpublish">Annulla pubblicazione</key>
<key alias="update">Aggiorna</key>
@@ -128,40 +127,42 @@
<key alias="welcome">Benvenuto</key>
</area>
<area alias="prompt">
<key alias="stay">Stay</key>
<key alias="discardChanges">Discard changes</key>
<key alias="unsavedChanges">You have unsaved changes</key>
<key alias="unsavedChangesWarning">Are you sure you want to navigate away from this page? - you have unsaved changes</key>
<key alias="stay">Rimani</key>
<key alias="discardChanges">Scarta le modifiche</key>
<key alias="unsavedChanges">Hai delle modifiche non salvate</key>
<key alias="unsavedChangesWarning">Sei sicuro di voler lasciare questa pagina? - hai delle modifiche non salvate</key>
</area>
<area alias="bulk">
<key alias="done">Done</key>
<key alias="done">Fatto</key>
<key alias="deletedItem">Deleted %0% item</key>
<key alias="deletedItems">Deleted %0% items</key>
<key alias="deletedItemOfItem">Deleted %0% out of %1% item</key>
<key alias="deletedItemOfItems">Deleted %0% out of %1% items</key>
<key alias="deletedItem">Elimianto %0% elemento</key>
<key alias="deletedItems">Elimianto %0% elementi</key>
<key alias="deletedItemOfItem">Eliminato %0% su %1% elemento</key>
<key alias="deletedItemOfItems">Eliminato %0% su %1% elementi</key>
<key alias="publishedItem">Published %0% item</key>
<key alias="publishedItems">Published %0% items</key>
<key alias="publishedItemOfItem">Published %0% out of %1% item</key>
<key alias="publishedItemOfItems">Published %0% out of %1% items</key>
<key alias="publishedItem">Pubblicato %0% elemento</key>
<key alias="publishedItems">Pubblicato %0% elementi</key>
<key alias="publishedItemOfItem">Pubblicato %0% su %1% elemento</key>
<key alias="publishedItemOfItems">Pubblicato %0% su %1% elementi</key>
<key alias="unpublishedItem">Unpublished %0% item</key>
<key alias="unpublishedItems">Unpublished %0% items</key>
<key alias="unpublishedItemOfItem">Unpublished %0% out of %1% item</key>
<key alias="unpublishedItemOfItems">Unpublished %0% out of %1% items</key>
<key alias="unpublishedItem">%0% elemento non pubblicato</key>
<key alias="unpublishedItems">%0% elementi non pubblicati</key>
<key alias="unpublishedItemOfItem">Elementi non pubblicati - %0% su %1%</key>
<key alias="unpublishedItemOfItems">Elementi non pubblicati - %0% su %1%</key>
<key alias="movedItem">Moved %0% item</key>
<key alias="movedItems">Moved %0% items</key>
<key alias="movedItemOfItem">Moved %0% out of %1% item</key>
<key alias="movedItemOfItems">Moved %0% out of %1% items</key>
<key alias="movedItem">Spostato %0% elemento</key>
<key alias="movedItems">Spsotato %0% elementi</key>
<key alias="movedItemOfItem">Spostato %0% su %1% elemento</key>
<key alias="movedItemOfItems">Spostato %0% su %1% elementi</key>
<key alias="copiedItem">Copied %0% item</key>
<key alias="copiedItems">Copied %0% items</key>
<key alias="copiedItemOfItem">Copied %0% out of %1% item</key>
<key alias="copiedItemOfItems">Copied %0% out of %1% items</key>
<key alias="copiedItem">Copiato %0% elemento</key>
<key alias="copiedItems">Copiato %0% elementi</key>
<key alias="copiedItemOfItem">Copiato %0% su %1% elemento</key>
<key alias="copiedItemOfItems">Copiato %0% su %1% elementi</key>
</area>
<area alias="defaultdialogs">
<key alias="nodeNameLinkPicker">Titolo del Link</key>
<key alias="urlLinkPicker">Link</key>
<key alias="anchorInsert">Nome</key>
<key alias="assignDomain">Gestione alias Hostnames</key>
<key alias="closeThisWindow">Chiudi questa finestra</key>
@@ -380,7 +381,7 @@
<key alias="databaseInstallDone"><![CDATA[Umbraco %0% è stato copiato nel tuo database. Premi <strong>Avanti</strong> per proseguire.]]></key>
<key alias="databaseNotFound">
<![CDATA[<p>Database non trovato! Perfavore, controlla che le informazioni della stringa di connessione nel file "web.config" siano corrette.</p>
<p>Per procedere, edita il file "web.config" (utilizzando Visual Studio o l'editor di testo che preferisci), scorri in basso, aggiungi la stringa di connessione per il database chiamato "umbracoDbDSN" e salva il file.</p><p>Clicca il tasto <strong>riprova</strong> quando hai finito.<br /><a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank"> Maggiori dettagli per la modifica del file web.config qui.</a></p>]]>
<p>Per procedere, edita il file "web.config" (utilizzando Visual Studio o l'editor di testo che preferisci), scorri in basso, aggiungi la stringa di connessione per il database chiamato "umbracoDbDSN" e salva il file.</p><p>Clicca il tasto <strong>riprova</strong> quando hai finito.<br /><a href="https://our.umbraco.com/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank"> Maggiori dettagli per la modifica del file web.config qui.</a></p>]]>
</key>
<key alias="databaseText"><![CDATA[Per completare questo passaggio, devi conoscere alcune informazioni riguardanti il tuo database server ("connection string"). Se è necessario contatta il tuo ISP per reperire le informazioni necessarie. Se stai effettuando l'installazione in locale o su un server, puoi richiederle al tuo amministratore di sistema]]></key>
<key alias="databaseUpgrade"><![CDATA[<p>Premi il tasto <strong>aggiorna</strong> per aggiornare il database ad Umbraco %0%</p><p>Non preoccuparti, il contenuto non verrà perso e tutto continuerà a funzionare dopo l'aggiornamento!</p>]]></key>
@@ -390,7 +391,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>L'utente di default è stato disabilitato o non ha accesso ad Umbraco!</strong></p><p>Non è necessario eseguire altre operazioni. Clicca il tasto <strong>Avanti</strong> per continuare.]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>La password è stata modificata con successo</strong></p><p>Non è necessario eseguire altre operazioni. Clicca il tasto <strong>Avanti</strong> per continuare.]]></key>
<key alias="defaultUserPasswordChanged"><![CDATA[La password è stata modificata!]]></key>
<key alias="defaultUserText"><![CDATA[<p>Umbraco crea un utente <strong>('admin')</strong>predefinito e password <strong>('default')</strong>. E' <strong>importante</strong> modificare la password con una personale.</p><p>Questo passaggio controlla la password predefinita e ricorda, se necessario, di modificarla.</p>]]></key>
<key alias="greatStart"><![CDATA[Parti alla grande, guarda i nostri video introduttivi]]></key>
<key alias="licenseText"><![CDATA[Cliccando il pulsante Avanti (o modificando la voce UmbracoConfigurationStatus nel file web.config), accettti le condizioni di licenza specificate nel box sottostante. Nota che questa distribuzione di Umbraco è composta da due differenti licenze, la MIT open source per il framework e la Umbraco freeware per la UI.]]></key>
<key alias="None"><![CDATA[Ancora non installato.]]></key>
@@ -572,7 +572,7 @@ Per gestire il tuo sito web, è sufficiente aprire il back office di Umbraco e i
<area alias="publicAccess">
<key alias="paAdvanced"><![CDATA[Protezione basata su ruoli]]></key>
<key alias="paAdvancedHelp"><![CDATA[Se vuoi controllare gli accessi alla pagina tramite l'autenticazione basata sui ruoli,<br /> usando i gruppi di membri di Umbraco.]]></key>
<key alias="paAdvancedNoGroups"><![CDATA[Devi creare un gruppo di membri prima di utilizzare <br />l'autenticazione basata sui ruoli.]]></key>
<key alias="paAdvancedNoGroups">Devi creare un gruppo di membri prima di utilizzare l'autenticazione basata sui ruoli</key>
<key alias="paErrorPage"><![CDATA[Pagina di Errore]]></key>
<key alias="paErrorPageHelp"><![CDATA[Usato quando qualcuno è connesso, ma non ha accesso]]></key>
<key alias="paHowWould"><![CDATA[Vuoi restringere l'accesso a questa pagina?]]></key>
@@ -657,7 +657,7 @@ Per gestire il tuo sito web, è sufficiente aprire il back office di Umbraco e i
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone"><![CDATA[Ordinamento completato.]]></key>
<key alias="sortHelp"><![CDATA[Sposta su o giù le pagine trascinandole per determinarne l'ordinamento. Oppure clicca la testata della colonna per ordinare l'intero gruppo di pagine]]></key>
<key alias="sortPleaseWait"><![CDATA[Si prega di attendere. Gli elementi sono in fase di ordinamento, questo può richiedere del tempo.<br/> <br/>Non chiudere questa finestra durante l'operazione]]></key>
<key alias="sortPleaseWait"><![CDATA[Si prega di attendere. Gli elementi sono in fase di ordinamento, questo può richiedere del tempo.]]></key>
</area>
<area alias="speechBubbles">
<key alias="contentPublishedFailedByEvent"><![CDATA[La pubblicazione è stata cancellata da un add-in di terze parti.]]></key>
@@ -732,43 +732,49 @@ Per gestire il tuo sito web, è sufficiente aprire il back office di Umbraco e i
<key alias="template">Template</key>
</area>
<area alias="grid">
<key alias="insertControl">Choose type of content</key>
<key alias="chooseLayout">Choose a layout</key>
<key alias="addRows">Add a row</key>
<key alias="addElement">Add content</key>
<key alias="dropElement">Drop content</key>
<key alias="settingsApplied">Settings applied</key>
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Seleziona il tipo di contenuto</key>
<key alias="chooseLayout">Seleziona un layout</key>
<key alias="addRows">Aggiungi una riga</key>
<key alias="addElement">Aggiungi contenuto</key>
<key alias="dropElement">Elimina contenuto</key>
<key alias="settingsApplied">Impostazioni applicati</key>
<key alias="contentNotAllowed">This content is not allowed here</key>
<key alias="contentAllowed">This content is allowed here</key>
<key alias="contentNotAllowed">Questo contenuto non è consentito qui</key>
<key alias="contentAllowed">Questo contenuto è consentito qui</key>
<key alias="clickToEmbed">Click to embed</key>
<key alias="clickToInsertImage">Click to insert image</key>
<key alias="placeholderImageCaption">Image caption...</key>
<key alias="placeholderWriteHere">Write here...</key>
<key alias="clickToEmbed">Clicca per incorporare</key>
<key alias="clickToInsertImage">Clicca per inserire l'immagine</key>
<key alias="placeholderImageCaption">Didascalia dell'immagine...</key>
<key alias="placeholderWriteHere">Scrivi qui...</key>
<key alias="gridLayouts">Grid Layouts</key>
<key alias="gridLayoutsDetail">Layouts are the overall work area for the grid editor, usually you only need one or two different layouts</key>
<key alias="addGridLayout">Add Grid Layout</key>
<key alias="addGridLayoutDetail">Adjust the layout by setting column widths and adding additional sections</key>
<key alias="rowConfigurations">Row configurations</key>
<key alias="rowConfigurationsDetail">Rows are predefined cells arranged horizontally</key>
<key alias="addRowConfiguration">Add row configuration</key>
<key alias="addRowConfigurationDetail">Adjust the row by setting cell widths and adding additional cells</key>
<key alias="gridLayouts">I Grid Layout</key>
<key alias="gridLayoutsDetail">I layout sono l'area globale di lavoro per il grid editor, di solito ti serve solo uno o due layout differenti</key>
<key alias="addGridLayout">Aggiungi un Grid Layout</key>
<key alias="addGridLayoutDetail">Sistema il layout impostando la larghezza della colonna ed aggiungendo ulteriori sezioni</key>
<key alias="rowConfigurations">Configurazioni della riga</key>
<key alias="rowConfigurationsDetail">Le righe sono le colonne predefinite disposte orizzontalmente</key>
<key alias="addRowConfiguration">Aggiungi configurazione della riga</key>
<key alias="addRowConfigurationDetail">Sistema la riga impostando la larghezza della colonna ed aggiungendo ulteriori colonne</key>
<key alias="columns">Columns</key>
<key alias="columnsDetails">Total combined number of columns in the grid layout</key>
<key alias="columns">Colonne</key>
<key alias="columnsDetails">Totale combinazioni delle colonne nel grid layout</key>
<key alias="settings">Settings</key>
<key alias="settingsDetails">Configure what settings editors can change</key>
<key alias="settings">Impostazioni</key>
<key alias="settingsDetails">Configura le impostazioni che possono essere cambiate dai editori</key>
<key alias="styles">Styles</key>
<key alias="stylesDetails">Configure what styling editors can change</key>
<key alias="styles">Stili</key>
<key alias="stylesDetails">Configura i stili che possono essere cambiati dai editori</key>
<key alias="settingDialogDetails">Settings will only save if the entered json configuration is valid</key>
<key alias="settingDialogDetails">Le impostazioni verranno salvate soltanto se è valido il json inserito</key>
<key alias="allowAllEditors">Allow all editors</key>
<key alias="allowAllRowConfigurations">Allow all row configurations</key>
<key alias="allowAllEditors">Permetti tutti i editor</key>
<key alias="allowAllRowConfigurations">Permetti tutte le configurazioni della riga</key>
</area>
<area alias="templateEditor">
<key alias="alternativeField"><![CDATA[Campo alternativo]]></key>
@@ -789,8 +795,6 @@ Per gestire il tuo sito web, è sufficiente aprire il back office di Umbraco e i
<key alias="postContent"><![CDATA[Inserisci dopo il campo]]></key>
<key alias="preContent"><![CDATA[Inserisci prima il campo]]></key>
<key alias="recursive">Ricorsivo</key>
<key alias="removeParagraph"><![CDATA[Rimuovi i tag paragrafo]]></key>
<key alias="removeParagraphHelp"><![CDATA[Rimuoverà &lt;P&gt; all'inizio e alla fine del testo]]></key>
<key alias="standardFields">Campi Standard</key>
<key alias="uppercase">Maiuscolo</key>
<key alias="urlEncode"><![CDATA[Codifica URL]]></key>
@@ -917,8 +921,6 @@ Per gestire il tuo sito web, è sufficiente aprire il back office di Umbraco e i
<key alias="startnode"><![CDATA[Nodo di inizio della sezione Contenuto]]></key>
<key alias="username">Username</key>
<key alias="userPermissions"><![CDATA[Permessi Utente]]></key>
<key alias="usertype"><![CDATA[Tipo di utente]]></key>
<key alias="userTypes"><![CDATA[Tipi Utente]]></key>
<key alias="writer">Writer</key>
</area>
</language>
+8 -17
View File
@@ -2,7 +2,7 @@
<language alias="ja" intName="Japanese" localName="日本語" lcid="17" culture="ja-JP">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">ドメインの割り当て</key>
@@ -33,10 +33,8 @@
<key alias="sendtopublish">公開に送る</key>
<key alias="sendToTranslate">翻訳に送る</key>
<key alias="sort">並べ替え</key>
<key alias="toPublish">公開する</key>
<key alias="translate">翻訳</key>
<key alias="update">更新</key>
<key alias="defaultValue">初期値</key>
</area>
<area alias="assignDomain">
<key alias="permissionDenied">アクセスが拒否されました</key>
@@ -569,15 +567,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>デフォルトユーザーは無効化されているかUmbracoにアクセスできない状態になっています!</strong></p><p>これ以上のアクションは必要ありません。<b>次へ</b>をクリックして続行してください。]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>インストール後にデフォルトユーザーのパスワードが変更されています!</strong></p><p>これ以上のアクションは必要ありません。<strong>次へ</strong>をクリックして続行してください。]]></key>
<key alias="defaultUserPasswordChanged">パスワードは変更されました!</key>
<key alias="defaultUserText"><![CDATA[
<p>
Umbracoはデフォルトユーザーとしてユーザー名 <strong>('admin')</strong> 、パスワード <strong>('default')</strong>を作成します。このパスワードを独自のものに変更する事は<strong>重要</strong>
なことです。
</p>
<p>
ここではデフォルトのユーザーのパスワードを確認し、必要ならば変更しておく事をお勧めします。
</p>
]]></key>
<key alias="greatStart">始めに、ビデオによる解説を見ましょう</key>
<key alias="licenseText">次へボタンをクリック(またはweb.configのumbracoConfigurationStatusを編集)すると、あなたはここに示されるこのソフトウェアのライセンスを承諾したと見做されます。注意として、UmbracoはMITライセンスをフレームワークへ、フリーウェアライセンスをUIへ、それぞれ異なる2つのライセンスを採用しています。</key>
<key alias="None">まだインストールは完了していません。</key>
@@ -898,7 +887,7 @@ Runwayをインストールして作られた新しいウェブサイトがど
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone">ソートが完了しました。</key>
<key alias="sortHelp">上下にアイテムをドラッグするなどして適当に配置したり、列のヘッダーをクリックしてコレクション全体をソートできます</key>
<key alias="sortPleaseWait"><![CDATA[ 項目の並べ替えには少し時間がかかります。しばらくお待ちください。<br/> <br/> 並び替え中はウィンドウを閉じないでください。]]></key>
<key alias="sortPleaseWait"><![CDATA[ 項目の並べ替えには少し時間がかかります。しばらくお待ちください。]]></key>
</area>
<area alias="speechBubbles">
<key alias="validationFailedHeader">検証</key>
@@ -987,6 +976,12 @@ Runwayをインストールして作られた新しいウェブサイトがど
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">挿入するアイテムを選択する</key>
<key alias="addLayout">レイアウトを選択</key>
<key alias="addRows">行の追加</key>
@@ -1108,8 +1103,6 @@ Runwayをインストールして作られた新しいウェブサイトがど
<key alias="postContent">フィールド値の後ろ追加</key>
<key alias="preContent">フィールド値の前に追加</key>
<key alias="recursive">再帰的</key>
<key alias="removeParagraph">段落タグの消去</key>
<key alias="removeParagraphHelp">段落タグ &amp;lt;P&amp;gt; を消去します</key>
<key alias="standardFields">標準フィールド</key>
<key alias="uppercase">大文字変換</key>
<key alias="urlEncode">URLエンコード</key>
@@ -1237,8 +1230,6 @@ Runwayをインストールして作られた新しいウェブサイトがど
<key alias="startnode">コンテンツの開始ノード</key>
<key alias="username">ユーザー名</key>
<key alias="userPermissions">ユーザーの権限</key>
<key alias="usertype">ユーザーの種類</key>
<key alias="userTypes">ユーザーの種類</key>
<key alias="writer">投稿者</key>
<key alias="translator">翻訳者</key>
<key alias="change">変更</key>
+9 -18
View File
@@ -2,7 +2,7 @@
<language alias="ko" intName="Korean" localName="한국어" lcid="18" culture="ko-KR">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">호스트명 관리</key>
@@ -15,8 +15,6 @@
<key alias="disable">비활성</key>
<key alias="emptyTrashcan">휴지통 비우기</key>
<key alias="exportDocumentType">추출 문서 유형</key>
<key alias="exportDocumentTypeAsCode">.NET으로 추출</key>
<key alias="exportDocumentTypeAsCode-Full">.NET으로 추출</key>
<key alias="importDocumentType">등록 문서 유형</key>
<key alias="importPackage">패키지 등록</key>
<key alias="liveEdit">캔버스 내용 편집</key>
@@ -32,7 +30,6 @@
<key alias="sendtopublish">발행 항목으로 전달</key>
<key alias="sendToTranslate">번역 항목으로 전달</key>
<key alias="sort">정렬</key>
<key alias="toPublish">발행 항목으로 전달</key>
<key alias="translate">번역</key>
<key alias="update">업데이트</key>
</area>
@@ -381,7 +378,7 @@
<key alias="databaseNotFound"><![CDATA[<p>데이터베이스를 찾을 수 없습니다. “web.config”파일의 "connection string"이 바르게 설정되었는지 확인하세요.</p>
<p>"web.config" 파일에 맨아래에 ,키네임을 "UmbracoDbDSN"로 하여 사용하시는 데이터베이스의 connection string 정보를 입력하시고 파일을 저장하세요. </p>
<p>
완료 후<strong>재시도</strong>버튼을 누르세요.<br /><a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">
완료 후<strong>재시도</strong>버튼을 누르세요.<br /><a href="https://our.umbraco.com/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">
web.config의 더많은 정보는 여기에 있습니다.</a></p>]]></key>
<key alias="databaseText"><![CDATA[이과정을 위해선, 당신의 DB서버 정보에 대해서 알고 계셔야합니다.("connection string").<br />
필요하시다면 사용하시는 ISP쪽에 문의하시기 바랍니다..
@@ -393,14 +390,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>기본 사용자가 비활성화되었거나 Umbraco에 접근할 수 없습니다!</strong></p><p>더 이상 과정이 필요없으시면 <b>다음</b>을 눌러주세요.]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>설치후 기본사용자의 암호가 성공적으로 변경되었습니다!</strong></p><p>더 이상 과정이 필요없으시면 <strong>다음</strong>을 눌러주세요.]]></key>
<key alias="defaultUserPasswordChanged">비밀번호가 변경되었습니다!</key>
<key alias="defaultUserText"><![CDATA[
<p>
Umbraco 는 로긴을 위한 기본 <strong>('admin')</strong> 사용자를 만들고 암호를 <strong>('default')</strong>로 설정합니다. 암호를 <strong>꼭</strong>변경하셔야 합니다.
</p>
<p>
이 과정은 기본 사용자의 암호를 체크하고 변경이 필요한 부분을 제안합니다.
</p>
]]></key>
<key alias="greatStart">편리한 시작을 위해, 소개 Video를 시청하세요</key>
<key alias="licenseText">다음버튼을 누르시면 (또는Web.config에 UmbracoConfigurationStatus를 수정하시면), 여러분은 아래에 명시된 소프트웨어 라이센스를 수락합니다. Umbraco 배포는 2가지 다른 라이센스로 구성되어 있습니다. 프레임워크에는 오픈소스 MIT라이센스가 UI에는 Umbraco 프리웨어 라이센스가 적용됩니다.</key>
<key alias="None">아직 설치되지 않았습니다.</key>
@@ -669,7 +658,7 @@
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone">정렬 완료</key>
<key alias="sortHelp">다른 아이템을 마우스로 위,아래로 드래그 하여 이동하거나 열의 헤더를 클릭하여 아이템을 정렬할 수 있습니다</key>
<key alias="sortPleaseWait"><![CDATA[잠시 기다리십시오. 아이템을 정렬 하는데 잠시 시간이 소요될 수 있습니다<br/><br/>정렬하는 동안 이 창을 닫지 마십시오]]></key>
<key alias="sortPleaseWait"><![CDATA[잠시 기다리십시오. 아이템을 정렬 하는데 잠시 시간이 소요될 수 있습니다]]></key>
</area>
<area alias="speechBubbles">
<key alias="contentPublishedFailedByEvent">3rd party add-in 때문에 발행이 취소되었습니다.</key>
@@ -738,6 +727,12 @@
<key alias="template">템플릿</key>
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Choose type of content</key>
<key alias="chooseLayout">Choose a layout</key>
<key alias="addRows">Add a row</key>
@@ -794,8 +789,6 @@
<key alias="postContent">필드뒤에 삽입</key>
<key alias="preContent">필드앞에 삽입</key>
<key alias="recursive">Recursive</key>
<key alias="removeParagraph">단락 태그삭제</key>
<key alias="removeParagraphHelp">문서 시작과 끝의 &amp;amp;lt;P&amp;amp;gt; 를 삭제하시겠습니까</key>
<key alias="uppercase">대문자</key>
<key alias="urlEncode">URL 인코딩</key>
<key alias="urlEncodeHelp">URL의 특수문자를 포맷하겠습니까</key>
@@ -917,8 +910,6 @@
<key alias="startnode">컨텐츠의 시작노드</key>
<key alias="username">사용자명</key>
<key alias="userPermissions">사용자권한</key>
<key alias="usertype">사용자 타입</key>
<key alias="userTypes">사용자 타입</key>
<key alias="writer">작성자</key>
</area>
</language>
+23 -12
View File
@@ -2,7 +2,7 @@
<language alias="no" intName="Norwegian" localName="norsk" lcid="20" culture="nb-NO">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">Angi domene</key>
@@ -33,10 +33,8 @@
<key alias="sendtopublish">Send til publisering</key>
<key alias="sendToTranslate">Send til oversetting</key>
<key alias="sort">Sorter</key>
<key alias="toPublish">Send til publisering</key>
<key alias="translate">Oversett</key>
<key alias="update">Oppdater</key>
<key alias="defaultValue">Standard verdi</key>
</area>
<area alias="assignDomain">
<key alias="permissionDenied">Ingen tilgang.</key>
@@ -85,6 +83,7 @@
<key alias="returnToList">Tilbake til listen</key>
<key alias="save">Lagre</key>
<key alias="saveAndPublish">Lagre og publiser</key>
<key alias="saveAndSchedule">Lagre og planlegge</key>
<key alias="saveToPublish">Lagre og send til publisering</key>
<key alias="showPage">Forhåndsvis</key>
<key alias="showPageDisabled">Forhåndsvisning er deaktivert siden det ikke er angitt noen mal</key>
@@ -424,7 +423,7 @@
<key alias="showPageOnSend">Hvilken side skal vises etter at skjemaet er sendt</key>
<key alias="size">Størrelse</key>
<key alias="sort">Sorter</key>
<key alias="submit">Submit</key> <!-- TODO: Translate this -->
<key alias="submit">Send</key>
<key alias="type">Type</key>
<key alias="typeToSearch">Søk...</key>
<key alias="up">Opp</key>
@@ -441,6 +440,17 @@
<key alias="yes">Ja</key>
<key alias="folder">Mappe</key>
<key alias="searchResults">Søkeresultater</key>
<key alias="reorder">Sorter</key>
<key alias="reorderDone">Avslutt sortering</key>
<key alias="preview">Eksempel</key>
<key alias="changePassword">Bytt passord</key>
<key alias="to">til</key>
<key alias="listView">Listevisning</key>
<key alias="saving">Lagrer...</key>
<key alias="current">nåværende</key>
<key alias="embed">Innbygging</key>
<key alias="retrieve">Hent</key>
<key alias="selected">valgt</key>
</area>
<area alias="graphicheadline">
<key alias="backgroundcolor">Bakgrunnsfarge</key>
@@ -459,7 +469,7 @@
<key alias="databaseHeader">Databasekonfigurasjon</key>
<key alias="databaseInstall"><![CDATA[Klikk <strong>installer</strong>-knappen for å installere Umbraco %0% databasen]]></key>
<key alias="databaseInstallDone"><![CDATA[Umbraco %0% har nå blitt kopiert til din database. Trykk <strong>Neste</strong> for å fortsette.]]></key>
<key alias="databaseNotFound"><![CDATA[<p>Databasen ble ikke funnet! Vennligst sjekk at informasjonen i "connection string" i "web.config"-filen er korrekt.</p><p>For å fortsette, vennligst rediger "web.config"-filen (bruk Visual Studio eller din favoritteditor), rull ned til bunnen, og legg til tilkoblingsstrengen for din database i nøkkelen "umbracoDbDSN" og lagre filen.</p><p>Klikk <strong>prøv på nytt</strong> når du er ferdig.<br /> <a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">Mer informasjon om redigering av web.config her.</a></p>]]></key>
<key alias="databaseNotFound"><![CDATA[<p>Databasen ble ikke funnet! Vennligst sjekk at informasjonen i "connection string" i "web.config"-filen er korrekt.</p><p>For å fortsette, vennligst rediger "web.config"-filen (bruk Visual Studio eller din favoritteditor), rull ned til bunnen, og legg til tilkoblingsstrengen for din database i nøkkelen "umbracoDbDSN" og lagre filen.</p><p>Klikk <strong>prøv på nytt</strong> når du er ferdig.<br /> <a href="https://our.umbraco.com/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">Mer informasjon om redigering av web.config her.</a></p>]]></key>
<key alias="databaseText"><![CDATA[For å fullføre dette steget, må du vite en del informasjon om din database server ("tilkoblingsstreng").<br/> Vennligst kontakt din ISP om nødvendig. Hvis du installerer på en lokal maskin eller server, må du kanskje skaffe informasjonen fra din systemadministrator.]]></key>
<key alias="databaseUpgrade"><![CDATA[<p> Trykk på knappen <strong>oppgrader</strong> for å oppgradere databasen din til Umbraco %0%</p> <p> Ikke vær urolig - intet innhold vil bli slettet og alt vil fortsette å virke etterpå! </p>]]></key>
<key alias="databaseUpgradeDone"><![CDATA[Databasen din har blitt oppgradert til den siste utgaven, %0%.<br/>Trykk <strong>Neste</strong> for å fortsette.]]></key>
@@ -468,7 +478,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>Standardbrukeren har blitt deaktivert eller har ingen tilgang til Umbraco!</strong></p><p>Ingen videre handling er nødvendig. Klikk <b>neste</b> for å fortsette.]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>Passordet til standardbrukeren har blitt forandret etter installasjonen!</strong></p><p>Ingen videre handling er nødvendig. Klikk <strong>Neste</strong> for å fortsette.]]></key>
<key alias="defaultUserPasswordChanged">Passordet er blitt endret!</key>
<key alias="defaultUserText"><![CDATA[<p> Umbraco skaper en standard bruker med login <strong> ( "admin") </ strong> og passord <strong> ( "default") </ strong>. Det er <strong> viktig </ strong> at passordet er endret til noe unikt. </ p> <p> Dette trinnet vil sjekke standard brukerens passord og foreslår hvis det må skiftes </ p>]]></key>
<key alias="greatStart">Få en god start med våre introduksjonsvideoer</key>
<key alias="licenseText">Ved å klikke på Neste-knappen (eller endre UmbracoConfigurationStatus i Web.config), godtar du lisensen for denne programvaren som angitt i boksen nedenfor. Legg merke til at denne Umbraco distribusjon består av to ulike lisenser, åpen kilde MIT lisens for rammen og Umbraco frivareverktøy lisens som dekker brukergrensesnittet.</key>
<key alias="None">Ikke installert.</key>
@@ -633,7 +642,7 @@ Vennlig hilsen Umbraco roboten
<area alias="publicAccess">
<key alias="paAdvanced">Avansert: Beskytt ved å velge hvilke brukergrupper som har tilgang til siden</key>
<key alias="paAdvancedHelp"><![CDATA[Om du ønsker å kontrollere tilgang til siden ved å bruke rolle-basert autentisering,<br /> ved å bruke Umbraco's medlems-grupper]]></key>
<key alias="paAdvancedNoGroups"><![CDATA[Du må opprette en medlemsgruppe før du kan bruke <br /> rollebasert autentikasjon.]]></key>
<key alias="paAdvancedNoGroups">Du må opprette en medlemsgruppe før du kan bruke rollebasert autentikasjon.</key>
<key alias="paErrorPage">Feilside</key>
<key alias="paErrorPageHelp">Brukt når personer logger på, men ikke har tilgang</key>
<key alias="paHowWould">Hvordan vil du beskytte siden din?</key>
@@ -736,7 +745,7 @@ Vennlig hilsen Umbraco roboten
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone">Sortering ferdig.</key>
<key alias="sortHelp">Dra elementene opp eller ned for å arrangere dem. Du kan også klikke kolonneoverskriftene for å sortere alt på en gang.</key>
<key alias="sortPleaseWait"><![CDATA[Vennligst vent. Elementene blir sortert, dette kan ta litt tid.<br/> <br/> Ikke lukk dette vinduet under sortering]]></key>
<key alias="sortPleaseWait"><![CDATA[Vennligst vent. Elementene blir sortert, dette kan ta litt tid.]]></key>
</area>
<area alias="speechBubbles">
<key alias="operationFailedHeader">En feil oppsto</key>
@@ -822,6 +831,12 @@ Vennlig hilsen Umbraco roboten
<key alias="template">Mal</key>
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Sett inn element</key>
<key alias="chooseLayout">Velg layout</key>
<key alias="addRows">Legg til rad</key>
@@ -884,8 +899,6 @@ Vennlig hilsen Umbraco roboten
<key alias="postContent">Sett inn etter felt</key>
<key alias="preContent">Sett inn før felt</key>
<key alias="recursive">Rekursivt</key>
<key alias="removeParagraph">Fjern paragraftagger</key>
<key alias="removeParagraphHelp">Fjerner eventuelle &lt;P&gt; rundt teksten</key>
<key alias="standardFields">Standardfelter</key>
<key alias="uppercase">Store bokstaver</key>
<key alias="urlEncode">URL koding</key>
@@ -1005,8 +1018,6 @@ Vennlig hilsen Umbraco roboten
<key alias="startnode">Startnode</key>
<key alias="username">Navn</key>
<key alias="userPermissions">Brukertillatelser</key>
<key alias="usertype">Brukertype</key>
<key alias="userTypes">Brukertyper</key>
<key alias="writer">Forfatter</key>
<key alias="translator">Oversetter</key>
<key alias="change">Endre</key>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+10 -20
View File
@@ -2,7 +2,7 @@
<language alias="pt" intName="Portuguese Brazil" localName="Portuguese Brazil" lcid="" culture="pt-BR">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">Gerenciar hostnames</key>
@@ -15,8 +15,6 @@
<key alias="disable">Desabilitar</key>
<key alias="emptyTrashcan">Esvaziar Lixeira</key>
<key alias="exportDocumentType">Exportar Tipo de Documento</key>
<key alias="exportDocumentTypeAsCode">Exportar para .NET</key>
<key alias="exportDocumentTypeAsCode-Full">Exportar para .NET</key>
<key alias="importDocumentType">Importar Tipo de Documento</key>
<key alias="importPackage">Importar Pacote</key>
<key alias="liveEdit">Editar na Tela</key>
@@ -32,7 +30,6 @@
<key alias="sendtopublish">Enviar para Publicação</key>
<key alias="sendToTranslate">Enviar para Tradução</key>
<key alias="sort">Classificar</key>
<key alias="toPublish">Enviar para publicação</key>
<key alias="translate">Traduzir</key>
<key alias="update">Atualizar</key>
</area>
@@ -377,7 +374,7 @@
<key alias="databaseInstallDone"><![CDATA[Umbraco %0% agora foi copiado para seu banco de dados. Pressione <strong>Próximo</strong> para prosseguir.]]></key>
<key alias="databaseNotFound"><![CDATA[<p>Banco de dados não encontrado! Favor checar se a informação no "connection string" do "web.config" esteja correta. </p>
<p>Para prosseguir, favor editar o arquivo "web.config" (usando Visual Studio ou seu editor de texto favorito), role até embaixo, adicione a connection string para seu banco de dados com a chave de nome "UmbracoDbDSN" e salve o arquivo </p>
<p>Clique o botão <strong>tentar novamente</strong> quando terminar. <br /><a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">
<p>Clique o botão <strong>tentar novamente</strong> quando terminar. <br /><a href="https://our.umbraco.com/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank">
Mais informações em como editar o web.config aqui.</a></p>]]></key>
<key alias="databaseText"><![CDATA[Para completar este passo, você deve saber algumas informações relativas ao seu servidor de banco de dados ("connection string"). <br /> Favor contatar seu provedor de internet ou hospedagem web se necessário. Se você estiver instalando em uma máquina ou servidor local é possível que você precise dessas informações por um administrador de sistema.]]></key>
<key alias="databaseUpgrade"><![CDATA[<p>
@@ -392,15 +389,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>O usuário padrão foi desabilitado ou não tem acesso à Umbraco!</strong></p><p>Nenhuma ação posterior precisa ser tomada. Clique <b>Próximo</b> para prosseguir.]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>A senha do usuário padrão foi alterada com sucesso desde a instalação!</strong></p><p>Nenhuma ação posterior é necessária. Clique <strong>Próximo</strong> para prosseguir.]]></key>
<key alias="defaultUserPasswordChanged">Senha foi alterada!</key>
<key alias="defaultUserText"><![CDATA[
<p>
Umbraco cria um usuário padrão com o login <strong>('admin')</strong> e senha <strong>('default')</strong>. É <strong>importante</strong> que a senha seja alterada para algo único.
</p>
<p>
Este passo irá checar a senha do usuário padrão e sugerir uma alteração se necessário.
</p>
]]></key>
<key alias="greatStart">Comece com o pé direito, assista nossos vídeos introdutórios</key>
<key alias="licenseText">Ao clicar no próximo botão (ou modificando o UmbracoConfigurationStatus no web.config), você aceita a licença deste software cmo especificado na caixa abaixo. Note que esta distribuição de Umbraco consiste em duas licenças diferentes, a licença aberta MIT para a framework e a licença de software livre (freeware) Umbraco que cobre o UI.</key>
<key alias="None">Nenhum instalado ainda.</key>
@@ -576,7 +564,7 @@ Você pode remover com segurança do seu sistema clicando em "desinstalar pacote
<area alias="publicAccess">
<key alias="paAdvanced">Proteção baseada em função</key>
<key alias="paAdvancedHelp"><![CDATA[Se você deseja controlar o acesso à página usando autenticação baseada em funções, <br /> usando grupos de membros do Umbraco.]]></key>
<key alias="paAdvancedNoGroups"><![CDATA[Você precisa criar um grupo de membros antes que possa usar <br /> autenticação baseada em função.]]></key>
<key alias="paAdvancedNoGroups">Você precisa criar um grupo de membros antes que possa usar autenticação baseada em função.</key>
<key alias="paErrorPage">Página de Erro</key>
<key alias="paErrorPageHelp">Usado quando as pessoas estão logadas, mas não para ter acesso</key>
<key alias="paHowWould">Escolha como restringir o acesso à esta página</key>
@@ -658,7 +646,7 @@ Você pode publicar esta página e todas suas sub-páginas ao selecionar <em>pub
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone">Classificação concluída.</key>
<key alias="sortHelp">Arraste os diferentes itens para cima ou para baixo para definir como os mesmos serão arranjados. Ou clique no título da coluna para classificar a coleção completa de itens</key>
<key alias="sortPleaseWait"><![CDATA[Favor esperar. Itens estão sendo classificados, isto pode demorar um tempo. <br /><br /> Não feche esta janela durante a classificação]]></key>
<key alias="sortPleaseWait"><![CDATA[Favor esperar. Itens estão sendo classificados, isto pode demorar um tempo.]]></key>
</area>
<area alias="speechBubbles">
<key alias="contentPublishedFailedByEvent">Publicação foi cancelada por add-in de terceiros</key>
@@ -727,6 +715,12 @@ Você pode publicar esta página e todas suas sub-páginas ao selecionar <em>pub
<key alias="template">Modelo</key>
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Choose type of content</key>
<key alias="chooseLayout">Choose a layout</key>
<key alias="addRows">Add a row</key>
@@ -783,8 +777,6 @@ Você pode publicar esta página e todas suas sub-páginas ao selecionar <em>pub
<key alias="postContent">Inserir após campo</key>
<key alias="preContent">Inserir antes do campo</key>
<key alias="recursive">Recursivo</key>
<key alias="removeParagraph">Remover etiquetas de parágrafo</key>
<key alias="removeParagraphHelp">Removerá quaisquer &amp;lt;P&amp;gt; do começo ao fim do texto</key>
<key alias="uppercase">Maiúscula</key>
<key alias="urlEncode">Codificar URL</key>
<key alias="urlEncodeHelp">Vai formatar caracteres especiais em URLs</key>
@@ -901,8 +893,6 @@ Para fechar a tarefa de tradução vá até os detalhes e clique no botão "Fech
<key alias="startnode">Nó Inicial do Conteúdo</key>
<key alias="username">Nome de Usuário</key>
<key alias="userPermissions">Permissões de usuário</key>
<key alias="usertype">Tipo de usuário</key>
<key alias="userTypes">Tipos de usuários</key>
<key alias="writer">Escrevente</key>
</area>
</language>
File diff suppressed because it is too large Load Diff
+32 -17
View File
@@ -2,7 +2,7 @@
<language alias="sv" intName="Swedish" localName="Svenska" lcid="29" culture="sv-SE">
<creator>
<name>The Umbraco community</name>
<link>http://our.umbraco.org/documentation/Extending-Umbraco/Language-Files</link>
<link>https://our.umbraco.com/documentation/Extending-Umbraco/Language-Files</link>
</creator>
<area alias="actions">
<key alias="assignDomain">Hantera domännamn</key>
@@ -12,7 +12,6 @@
<key alias="copy">Kopiera</key>
<key alias="create">Skapa</key>
<key alias="createPackage">Skapa paket</key>
<key alias="defaultValue">Standardvärde</key>
<key alias="delete">Ta bort</key>
<key alias="disable">Avaktivera</key>
<key alias="emptyTrashcan">Töm papperskorgen</key>
@@ -32,7 +31,6 @@
<key alias="sendtopublish">Skicka för publicering</key>
<key alias="sendToTranslate">Skicka för översättning</key>
<key alias="sort">Sortera</key>
<key alias="toPublish">Skicka för publicering</key>
<key alias="translate">Översätt</key>
<key alias="unpublish">Avpublicera</key>
<key alias="update">Uppdatera</key>
@@ -82,12 +80,13 @@
<key alias="returnToList">Återvänd till lista</key>
<key alias="save">Spara</key>
<key alias="saveAndPublish">Spara och publicera</key>
<key alias="saveAndSchedule">Spara och schemalägg</key>
<key alias="saveToPublish">Spara och skicka för godkännande</key>
<key alias="select">Välj</key>
<key alias="selectCurrentFolder">Välj aktuell mapp</key>
<key alias="showPage">Förhandsgranska</key>
<key alias="showPageDisabled">Förhandsgranskning är avstängt på grund av att det inte finns någon mall tilldelad</key>
<key alias="somethingElse">Ångra</key>
<key alias="somethingElse">Annat</key>
<key alias="styleChoose">Välj stil</key>
<key alias="styleShow">Visa stil</key>
<key alias="tableInsert">Infoga tabell</key>
@@ -171,6 +170,7 @@
<key alias="noDocumentTypes"><![CDATA[Det finns inga giltiga dokumenttyper tillgängliga. Du måste aktivera dessa under sektionen inställningar och under <strong>"dokumenttyper"</strong>.]]></key>
<key alias="noMediaTypes"><![CDATA[Det finns inga giltiga mediatyper tillgängliga. Du måste aktivera dessa under sektionen inställningar och under <strong>"mediatyper"</strong>.]]></key>
<key alias="updateData">Välj typ och rubrik</key>
<key alias="documentTypeWithoutTemplate">Dokumenttyp utan sidmall</key>
</area>
<area alias="dashboard">
<key alias="browser">Surfa på din webbplats</key>
@@ -412,7 +412,7 @@
<key alias="showPageOnSend">Vilken sida skall visas när formuläret är skickat</key>
<key alias="size">Storlek</key>
<key alias="sort">Sortera</key>
<key alias="submit">Submit</key> <!-- TODO: Translate this -->
<key alias="submit">Skicka</key>
<key alias="type">Skriv</key>
<key alias="typeToSearch">Skriv för att söka...</key>
<key alias="up">Upp</key>
@@ -427,8 +427,17 @@
<key alias="width">Bredd</key>
<key alias="view">Titta på</key>
<key alias="yes">Ja</key>
<key alias="reorder">Reorder</key>
<key alias="reorderDone">I am done reordering</key>
<key alias="reorder">Sortera</key>
<key alias="reorderDone">Avsluta sortering</key>
<key alias="preview">Förhandsvisning</key>
<key alias="changePassword">Ändra lösenord</key>
<key alias="to">till</key>
<key alias="listView">Listvy</key>
<key alias="saving">Sparar...</key>
<key alias="current">nuvarande</key>
<key alias="embed">Inbäddning</key>
<key alias="retrieve">Hämta</key>
<key alias="selected">valgt</key>
</area>
<area alias="graphicheadline">
<key alias="backgroundcolor">Bakgrundsfärg</key>
@@ -447,7 +456,7 @@
<key alias="databaseHeader">Databaskonfiguration</key>
<key alias="databaseInstall"><![CDATA[För att installera Umbraco %0% databasen, tryck på knappen <strong>installera</strong>]]></key>
<key alias="databaseInstallDone"><![CDATA[Nu har Umbraco %0% kopierats till din databas. Tryck <strong>Nästa</strong> för att fortsätta.]]></key>
<key alias="databaseNotFound"><![CDATA[<p>Databasen kunde inte hittas! Kontrollera att informationen i databasanslutnings-inställningarna i filen "web.config" är rätt.</p> <p>För att fortsätta måste du redigera filen "web.config" (du kan använda Visual Studio eller din favorit text-redigerare), bläddra till slutet, lägg till databasanslutnings-inställningarna för din databas i fältet som heter "umbracoDbDSN" och spara filen. </p> <p> Klicka på <strong>Försök igen</strong> knappen när du är klar.<br />><a href="http://our.umbraco.org/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank"> Mer information om att redigera web.config hittar du här.</a></p>]]></key>
<key alias="databaseNotFound"><![CDATA[<p>Databasen kunde inte hittas! Kontrollera att informationen i databasanslutnings-inställningarna i filen "web.config" är rätt.</p> <p>För att fortsätta måste du redigera filen "web.config" (du kan använda Visual Studio eller din favorit text-redigerare), bläddra till slutet, lägg till databasanslutnings-inställningarna för din databas i fältet som heter "umbracoDbDSN" och spara filen. </p> <p> Klicka på <strong>Försök igen</strong> knappen när du är klar.<br />><a href="https://our.umbraco.com/documentation/Using-Umbraco/Config-files/webconfig7" target="_blank"> Mer information om att redigera web.config hittar du här.</a></p>]]></key>
<key alias="databaseText"><![CDATA[För att avsluta det här steget måste du veta lite information om din databasserver ("connection string").<br /> Eventuellt kan du behöva kontakta ditt webb-hotell. Om du installerar på en lokal maskin eller server kan du få informationen från din systemadministratör.]]></key>
<key alias="databaseUpgrade"><![CDATA[<p> Tryck <strong>Uppgradera</strong> knappen för att uppgradera din databas till Umbraco %0%</p> <p> Du behöver inte vara orolig. Inget innehåll kommer att raderas och efteråt kommer allt att fungera som vanligt! </p>]]></key>
<key alias="databaseUpgradeDone"><![CDATA[Din databas har nu uppgraderats till den senaste versionen %0%.<br />Tryck <strong>Nästa</strong> för att fortsätta.]]></key>
@@ -456,7 +465,6 @@
<key alias="defaultUserDisabled"><![CDATA[<strong>Standardanvändaren har avaktiverats eller har inte åtkomst till Umbraco!</strong></p><p>Du behöver inte göra något ytterligare här. Klicka <b>Next</b> för att fortsätta.]]></key>
<key alias="defaultUserPassChanged"><![CDATA[<strong>Standardanvändarens lösenord har ändrats sedan installationen!</strong></p><p>Du behöver inte göra något ytterligare här. Klicka <strong>Nästa</strong> för att fortsätta.]]></key>
<key alias="defaultUserPasswordChanged">Lösenordet är ändrat!</key>
<key alias="defaultUserText"><![CDATA[<p> Umbraco skapar en standardanvändare med login <strong>('admin')</strong> och lösenordet <strong>('default')</strong>. Det är <strong>viktigt</strong> att lösenordet ändras till något unikt. </p> <p> Det här steget kommer kontrollera standardanvändarens lösenord och låta dig vet om det behöver ändras. </p>]]></key>
<key alias="greatStart">Få en flygande start, kolla på våra introduktionsvideor</key>
<key alias="licenseText">Genom att klicka på Nästa knappen (eller redigera UmbracoConfigurationStatus i web.config), accepterar du licensavtalet för den här mjukvaran som det är skrivet i rutan nedan. Observera att den här Umbracodistributionen består av två olika licensavtal, "the open source MIT license" för ramverket och "the Umbraco freeware license" som täcker användargränssnittet.</key>
<key alias="None">Inte installerad än.</key>
@@ -593,11 +601,12 @@
<key alias="search">Skriv för att söka...</key>
<key alias="username">Fyll i ditt lösenord</key>
<key alias="enterTags">Skriv för att lägga till taggar (och tryck enter efter varje tagg)...</key>
<key alias="usernamehint">Ditt användarnamn är vanligtvis din e-postadress</key>
</area>
<area alias="publicAccess">
<key alias="paAdvanced">Rollbaserat lösenordsskydd</key>
<key alias="paAdvancedHelp"><![CDATA[Välj detta alternativ om du vill skydda sidan med hjälp av rollbaserat lösenordsskydd.<br /> Då används Umbracos medlemsgrupper.]]></key>
<key alias="paAdvancedNoGroups"><![CDATA[Du måste skapa en medlemsgrupp innan du kan använda <br />rollbaserat lösenordsskydd.]]></key>
<key alias="paAdvancedNoGroups">Du måste skapa en medlemsgrupp innan du kan använda rollbaserat lösenordsskydd.</key>
<key alias="paErrorPage">Sida med felmeddelande</key>
<key alias="paErrorPageHelp">Används när en användare är inloggad, men saknar rättigheter att se sidan</key>
<key alias="paHowWould">Välj hur du vill lösenordsskydda sidan</key>
@@ -636,8 +645,12 @@
</area>
<area alias="imagecropper">
<key alias="reset">Återställ</key>
<key alias="defineCrop">Definiera beskräning</key>
<key alias="defineCropDescription">Ge beskärningen ett alias och dess standardbredd och -höjd</key>
<key alias="saveCrop">spara beskärning</key>
<key alias="addCrop">Lägg till ny beskärning</key>
</area>
<area alias="rollback">
<area alias="rollback">
<key alias="currentVersion">Nuvarande version</key>
<key alias="diffHelp"><![CDATA[Här visas skillnaderna mellan nuvarande version och vald version<br /><del>Röd</del> text kommer inte att synas i den valda versionen. , <ins>Grön betyder att den har tillkommit</ins>]]></key>
<key alias="documentRolledBack">Dokumentet har återgått till en tidigare version</key>
@@ -691,7 +704,7 @@
<key alias="sortCreationDate">Creation date</key>
<key alias="sortDone">Sortering klar</key>
<key alias="sortHelp">Välj i vilken ordning du vill ha sidorna genom att dra dem upp eller ner i listan. Du kan också klicka på kolumnrubrikerna för att sortera grupper av sidor</key>
<key alias="sortPleaseWait"><![CDATA[Vänta medan sidorna sorteras. Det kan ta en stund.<br/><br/>Stäng inte fönstret under tiden sidorna sorteras.]]></key>
<key alias="sortPleaseWait"><![CDATA[Vänta medan sidorna sorteras. Det kan ta en stund.]]></key>
</area>
<area alias="speechBubbles">
<key alias="contentPublishedFailedByEvent">Publiceringen avbröts av ett tredjepartstillägg</key>
@@ -768,6 +781,12 @@
<key alias="template">Sidmall</key>
</area>
<area alias="grid">
<key alias="rte">Rich Text Editor</key>
<key alias="media">Image</key>
<key alias="macro">Macro</key>
<key alias="embed">Embed</key>
<key alias="headline">Headline</key>
<key alias="quote">Quote</key>
<key alias="insertControl">Lägg till</key>
<key alias="chooseLayout">Choose layout</key>
<key alias="addRows">Lägg till rad</key>
@@ -818,8 +837,6 @@
<key alias="postContent">Infoga efter fält</key>
<key alias="preContent">Infoga före fält</key>
<key alias="recursive">Rekursiv</key>
<key alias="removeParagraph">Avlägsna stycke-taggar</key>
<key alias="removeParagraphHelp">Kommer att avlägsna alla &amp;lt;P&amp;gt; i början och slutet av texten</key>
<key alias="standardFields">Standardfält</key>
<key alias="uppercase">Versaler</key>
<key alias="urlEncode">URL-koda</key>
@@ -929,11 +946,9 @@
<key alias="startnode">Startnod i innehåll</key>
<key alias="username">Användarens namn</key>
<key alias="userPermissions">Användarrättigheter</key>
<key alias="usertype">Användartyp</key>
<key alias="userTypes">Användartyper</key>
<key alias="writer">Skribent</key>
<key alias="yourHistory">Din nuvarande historik</key>
<key alias="translator">Översättare</key>
<key alias="yourProfile">Din profil</key>
</area>
</language>
</language>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -13,6 +13,7 @@
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="Application/NamespaceManager.js" PathNameAlias="UmbracoClient" Priority="0" />
<umb:JsInclude ID="JsInclude3" runat="server" FilePath="ui/jquery.js" PathNameAlias="UmbracoClient" Priority="1" />
<umb:JsInclude ID="JsInclude4" runat="server" FilePath="lib/jquery-migrate/jquery-migrate.min.js" PathNameAlias="UmbracoRoot" Priority="1" />
<umb:JsInclude ID="JsInclude6" runat="server" FilePath="ui/base2.js" PathNameAlias="UmbracoClient" Priority="1" />
<umb:JsInclude ID="JsInclude11" runat="server" FilePath="UI/knockout.js" PathNameAlias="UmbracoClient" Priority="3" />
<umb:JsInclude ID="JsInclude12" runat="server" FilePath="UI/knockout.mapping.js" PathNameAlias="UmbracoClient" Priority="4" />
@@ -58,6 +58,9 @@
<cc1:PropertyPanel runat="server" Text="Alias">
<asp:TextBox ID="macroAlias" runat="server" CssClass="guiInputText"></asp:TextBox>
</cc1:PropertyPanel>
<cc1:PropertyPanel runat="server" Text="Key">
<asp:Label ID="macroKey" runat="server" CssClass="guiLabel"></asp:Label>
</cc1:PropertyPanel>
</cc1:Pane>
@@ -39,7 +39,6 @@
<asp:TextBox ID="iconUrl" runat="server" Width="230px" CssClass="guiInputText"></asp:TextBox>
</cc2:PropertyPanel>
<cc2:PropertyPanel runat="server" ID="pp_file" Text="Package file (.zip):">
<asp:Button ID="bt_submitButton" runat="server" Text="Submit to repository" Visible="false" />
<asp:Literal ID="packageUmbFile" runat="server" />
</cc2:PropertyPanel>
@@ -191,6 +190,7 @@
<a href="#" onclick="UmbClientMgr.openModalWindow('developer/packages/directoryBrowser.aspx?target=<%= packageControlPath.ClientID %>','Choose a file or a folder', true, 500, 400); return false;"
style="border: none;">
<i class="icon icon-folder"></i>
</a>
</td>
</tr>
</table>
@@ -204,7 +204,7 @@
during installation and uninstallation.
<br />
All actions are formed as a xml node, containing data for the action to be performed.
<a href="http://our.umbraco.org/wiki/reference/packaging/package-actions
<a href="https://our.umbraco.com/documentation/Reference/Packaging/
" target="_blank">Package actions documentation</a>
</p>
<asp:CustomValidator ID="actionsVal" runat="server" OnServerValidate="validateActions"
@@ -1,346 +1,10 @@
<%@ Page Language="c#" MasterPageFile="../../masterpages/umbracoPage.Master"
AutoEventWireup="True" Inherits="umbraco.presentation.developer.packages.Installer"
Trace="false" ValidateRequest="false" %>
<%@ Import Namespace="umbraco" %>
<%@ Page Language="c#" MasterPageFile="../../masterpages/umbracoPage.Master"
AutoEventWireup="True" Inherits="umbraco.presentation.developer.packages.Installer" Trace="false" ValidateRequest="false" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<asp:Content ContentPlaceHolderID="head" runat="server">
<script type="text/javascript">
function enableButton() {
var f = jQuery("#<%= file1.ClientID %>");
var b = jQuery("#<%= ButtonLoadPackage.ClientID %>");
var cb = jQuery("#cb");
if (f.val() != "" && cb.attr("checked"))
b.attr("disabled", false);
else
b.attr("disabled", true);
}
$(document).ready(function () {
$('.toggle-report').click(function () {
$(this).next().toggle();
});
});
</script>
</asp:Content>
<asp:Content ContentPlaceHolderID="body" runat="server">
<cc1:UmbracoPanel ID="Panel1" Text="Install package" runat="server" Width="496px"
Height="584px">
<cc1:Feedback ID="fb" Style="margin-top: 7px;" runat="server" />
<cc1:Pane ID="pane_upload" runat="server" Text="Install from local package file">
<cc1:PropertyPanel runat="server" Text="">
<div class="alert alert-warning">
<h4>
Only install packages from sources you know and trust!</h4>
<p>
When installing an Umbraco package you should use the same caution as when you install
an application on your computer.</p>
<p>
A malicious package could damage your Umbraco installation just like a malicious
application can damage your computer.
</p>
<p>
It is <strong>recommended</strong> to install from the official Umbraco package
repository or a custom repository whenever it's possible.
</p>
<p>
<input type="checkbox" id="cb" onchange="enableButton();" />
<label for="cb" style="font-weight: bold">
I understand the security risks associated with installing a local package</label>
</p>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel9" Text="Choose a file" runat="server">
<p>
<input id="file1" type="file" class="btn" name="file1" onchange="enableButton();"
runat="server" />
<br />
<small>
<%= umbraco.ui.Text("packager", "chooseLocalPackageText") %>
</small>
</p>
</cc1:PropertyPanel>
<cc1:PropertyPanel runat="server" Text="&nbsp;">
<asp:Button ID="ButtonLoadPackage" runat="server" Enabled="false" Text="Load Package"
OnClick="uploadFile"></asp:Button>
<div id="loadingbar" style="display: none;">
<div class="umb-loader-wrapper">
<cc1:ProgressBar ID="progbar1" runat="server" Title="Please wait..." />
</div>
</div>
</cc1:PropertyPanel>
</cc1:Pane>
<cc1:Pane ID="pane_authenticate" runat="server" Visible="false" Text="Repository authentication">
<cc1:PropertyPanel runat="server">
<div class="alert alert-warning">
<p>
This repository requires authentication before you can download any packages from
it.<br />
Please enter email and password to login.
</p>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel runat="server" Text="Email">
<asp:TextBox ID="tb_email" runat="server" /></cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel1" runat="server" Text="Password">
<asp:TextBox ID="tb_password" TextMode="Password" runat="server" /></cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel2" runat="server">
<asp:Button ID="Button1" OnClick="fetchProtectedPackage" Text="Login" runat="server" /></cc1:PropertyPanel>
</cc1:Pane>
<asp:Panel ID="pane_acceptLicense" runat="server" Visible="false">
<cc1:Pane ID="pane_acceptLicenseInner" runat="server">
<div class="alert alert-warning">
<p>
<strong>Please note:</strong> Installing a package containing several items and
files can take some time. Do not refresh the page or navigate away before, the installer
notifies you once the install is completed.
</p>
</div>
<cc1:PropertyPanel ID="PropertyPanel3" runat="server" Text="Name">
<asp:Label ID="LabelName" runat="server" /></cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel5" runat="server" Text="Author">
<asp:Label ID="LabelAuthor" runat="server" /></cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel4" runat="server" Text="More info">
<asp:Label ID="LabelMore" runat="server" /></cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel6" runat="server" Text="License">
<asp:Label ID="LabelLicense" runat="server" /></cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel7" runat="server" Text="Accept license">
<asp:CheckBox Text="Accept license" runat="server" ID="acceptCheckbox" /></cc1:PropertyPanel>
<cc1:PropertyPanel ID="PropertyPanel8" runat="server" Text="Read me">
<asp:Literal ID="readme" runat="server"></asp:Literal>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_unsecureFiles" runat="server" Visible="false" Text="&nbsp;">
<div class="alert alert-error" style="width: 370px;">
<h4>Binary files in the package!</h4>
<a class="toggle-report" href="#">Read more...</a>
<div style="display:none;">
<p>
This package contains .NET code. This is <strong>not unusual</strong> as .NET code
is used for any advanced functionality on an Umbraco powered website.</p>
<p>
However, if you <strong>don't know the author</strong> of the package or are unsure why this package
contains these files, it is adviced <strong>not to continue the installation</strong>.
</p>
<p>
<strong>The Files in question:</strong><br />
<ul>
<asp:Literal ID="lt_files" runat="server" />
</ul>
</p>
</div>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="LegacyPropertyEditorPanel" runat="server" Visible="false" Text="&nbsp;">
<div class="alert alert-error" style="width: 370px;">
<h4>
Legacy Property editors detected</h4>
<a class="toggle-report" href="#">Read more...</a>
<div style="display:none;">
<p>
This package contains legacy property editors which are not compatible with Umbraco 7</p>
<p>
This package may not function correctly if the package developer has not indicated that
it is compatible with version 7. Any DataTypes this package creates that do not have
a Version 7 compatible property editor will be converted to use a Label/NoEdit property editor.
</p>
</div>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="BinaryFileErrorsPanel" runat="server" Visible="false" Text="&nbsp;">
<div class="alert alert-error" style="width: 370px;">
<h4>
Binary file errors detected</h4>
<a class="toggle-report" href="#">Read more...</a>
<div style="display:none;">
<p>
This package contains .NET binary files that might not be compatible with this version of Umbraco.
If you aren't sure what these errors mean or why they are listed please contact the package creator.
</p>
<p>
<strong>Error report</strong><br />
<ul>
<asp:Literal ID="BinaryFileErrorReport" runat="server" />
</ul>
</p>
</div>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_macroConflicts" runat="server" Visible="false" Text="&nbsp;">
<div class="alert alert-error" style="width: 370px;">
<h4>
Macro Conflicts in the package!</h4>
<a class="toggle-report" href="#">Read more...</a>
<div style="display:none">
<p>
This package contains one or more macros which have the same alias as an existing one on your site, based on the Macro Alias.
</p>
<p>
If you choose to continue your existing macros will be replaced with the ones from this package. If you do not want to overwrite your existing macros you will need to change their alias.
</p>
<p>
<strong>The Macros in question:</strong><br />
<ul>
<asp:Literal ID="ltrMacroAlias" runat="server" />
</ul>
</p>
</div>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_templateConflicts" runat="server" Visible="false" Text="&nbsp;">
<div class="alert alert-error" style="width: 370px;">
<h4>
Template Conflicts in the package!</h4>
<a class="toggle-report" href="#">Read more...</a>
<div style="display:none">
<p>
This package contains one or more templates which have the same alias as an existing one on your site, based on the Template Alias.
</p>
<p>
If you choose to continue your existing template will be replaced with the ones from this package. If you do not want to overwrite your existing templates you will need to change their alias.
</p>
<p>
<strong>The Templates in question:</strong><br />
<ul>
<asp:Literal ID="ltrTemplateAlias" runat="server" />
</ul>
</p>
</div>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_stylesheetConflicts" runat="server" Visible="false" Text="&nbsp;">
<div class="alert alert-error" style="width: 370px;">
<h4>
Stylesheet Conflicts in the package!</h4>
<a class="toggle-report" href="#">Read more...</a>
<div style="display:none">
<p>
This package contains one or more stylesheets which have the same alias as an existing one on your site, based on the Stylesheet Name.
</p>
<p>
If you choose to continue your existing stylesheets will be replaced with the ones from this package. If you do not want to overwrite your existing stylesheets you will need to change their name.
</p>
<p>
<strong>The Stylesheets in question:</strong><br />
<ul>
<asp:Literal ID="ltrStylesheetNames" runat="server" />
</ul>
</p>
</div>
</div>
</cc1:PropertyPanel>
<cc1:PropertyPanel runat="server" Text=" ">
<br />
<div id="installingMessage" style="display: none;">
<div class="umb-loader-wrapper">
<cc1:ProgressBar runat="server" ID="_progbar1" />
</div>
<br />
<em>Installing package, please wait...</em><br /><br />
</div>
<asp:Button ID="ButtonInstall" runat="server" Text="Install Package" CssClass="btn btn-primary" Enabled="False"
OnClick="startInstall"></asp:Button>
</cc1:PropertyPanel>
</cc1:Pane>
</asp:Panel>
<cc1:Pane ID="pane_installing" runat="server" Visible="false" Text="Installing package">
<cc1:PropertyPanel runat="server">
<cc1:ProgressBar runat="server" ID="progBar2" />
<asp:Literal ID="lit_installStatus" runat="server" />
</cc1:PropertyPanel>
</cc1:Pane>
<cc1:UmbracoPanel ID="Panel1" Text="Install package" runat="server" Width="496px" Height="584px">
<cc1:Pane ID="pane_installing" runat="server" Visible="false" Text=""></cc1:Pane>
<cc1:Pane ID="pane_optional" runat="server" Visible="false" />
<cc1:Pane ID="pane_success" runat="server" Text="Package is installed" Visible="false">
<cc1:PropertyPanel runat="server">
<p>
All items in the package have been installed</p>
<p>
Overview of what was installed can be found under "installed package" in the developer
section.</p>
<p>
Uninstall is available at the same location.</p>
<p>
<asp:Button Text="View installed package" ID="bt_viewInstalledPackage" runat="server" />
<asp:Literal ID="lit_authorUrl" runat="server" />
</p>
</cc1:PropertyPanel>
</cc1:Pane>
<cc1:Pane ID="pane_uninstalled" runat="server" Text="Package has been uninstalled" Visible="false">
<cc1:PropertyPanel runat="server">
<p><%= umbraco.ui.Text("packager", "packageUninstalledText") %></p>
</cc1:PropertyPanel>
</cc1:Pane>
<cc1:Pane ID="pane_refresh" runat="server" Text="Browser is reloading" Visible="false">
<cc1:PropertyPanel runat="server">
<div class="alert alert-block">
Please wait while the browser is reloaded...
</div>
<script type="text/javascript">
//This is all a bit zany with double encoding because we have a URL in a hash (#) url part
// but it works and maintains query strings
var refreshQuery = decodeURIComponent("<%=RefreshQueryString%>");
var umbPath = "<%=GlobalSettings.Path%>";
setTimeout(function () {
var mainWindow = UmbClientMgr.mainWindow();
//kill the tree and template cache
if (mainWindow.UmbClientMgr) {
mainWindow.UmbClientMgr._packageInstalled();
}
var baseUrl = mainWindow.location.href.substr(0, mainWindow.location.href.indexOf("#/developer/framed/"));
var framedUrl = baseUrl + "#/developer/framed/";
var refreshUrl = framedUrl + encodeURIComponent(encodeURIComponent(umbPath + "/developer/packages/installer.aspx?" + refreshQuery));
var redirectUrl = umbPath + "/ClientRedirect.aspx?redirectUrl=" + refreshUrl;
mainWindow.location.href = redirectUrl;
}, 2000);
</script>
</cc1:PropertyPanel>
</cc1:Pane>
<input id="tempFile" type="hidden" name="tempFile" runat="server" /><input id="processState"
type="hidden" name="processState" runat="server" />
</cc1:UmbracoPanel>
</asp:Content>
+5 -9
View File
@@ -9,7 +9,7 @@
</asp:Content>
<asp:Content ContentPlaceHolderID="head" runat="server" ID="cp2">
<umb:JsInclude ID="JsInclude2" runat="server" FilePath="Editors/EditXslt.js" PathNameAlias="UmbracoClient" />
<umb:CssInclude ID="CssInclude1" runat="server" FilePath="Editors/EditXslt.css" PathNameAlias="UmbracoClient" />
@@ -21,8 +21,7 @@
nameTxtBox: $('#<%= xsltFileName.ClientID %>'),
originalFileName: '<%= xsltFileName.Text %>',
saveButton: $("#<%= ((Control)SaveButton).ClientID %>"),
editorSourceElement: $('#<%= editorSource.ClientID %>'),
skipTestingCheckBox: $("#<%= SkipTesting.ClientID %>"),
editorSourceElement: $('#<%= editorSource.ClientID %>')
});
editor.init();
@@ -32,7 +31,7 @@
})(jQuery);
//TODO: Move these to EditXslt.js one day
var xsltSnippet = "";
var xsltSnippet = "";
function xsltVisualize() {
xsltSnippet = UmbEditor.IsSimpleEditor
@@ -46,7 +45,7 @@
}
UmbClientMgr.openModalWindow('<%= Umbraco.Core.IO.IOHelper.ResolveUrl(Umbraco.Core.IO.SystemDirectories.Umbraco) %>/developer/xslt/xsltVisualize.aspx', 'Visualize XSLT', true, 550, 650);
}
}
</script>
<umb:JsInclude ID="JsInclude1" runat="server" FilePath="Application/jQuery/jquery-fieldselection.js"
PathNameAlias="UmbracoClient" />
@@ -56,14 +55,11 @@
<cc1:Pane runat="server" ID="pane1">
<cc1:CodeArea ID="editorSource" CodeBase="XML" runat="server" AutoResize="false" />
</cc1:Pane>
<cc1:Pane runat="server" ID="pane2">
<cc1:PropertyPanel ID="pp_filename" runat="server" Text="Filename">
<asp:TextBox ID="xsltFileName" runat="server" CssClass="guiInputText"></asp:TextBox>
</cc1:PropertyPanel>
<cc1:PropertyPanel ID="pp_testing" runat="server" Text="Skip testing (ignore errors)">
<asp:CheckBox ID="SkipTesting" runat="server"></asp:CheckBox>
</cc1:PropertyPanel>
</cc1:Pane>
</cc1:TabView>
</asp:Content>
+18 -13
View File
@@ -1,13 +1,18 @@
<%@ Page language="c#" Codebehind="SendPublish.aspx.cs" AutoEventWireup="True" Inherits="umbraco.dialogs.SendPublish" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>umbraco - <%=umbraco.ui.Text("editContentSendToPublish")%></title>
<link href="../css/umbracoGui.css" type="text/css" rel="stylesheet"/>
</head>
<body style="padding: 10px;">
<h3><img src="../images/publish.gif" alt="Republish" align="absmiddle" style="float:left; margin-top: 3px; margin-right: 5px"/> <%=umbraco.ui.Text("editContentSendToPublishText")%></h3>
<br/>
<a href="#" onclick="javascript:UmbClientMgr.closeModalWindow();" style="margin-left: 30px" class="guiDialogNormal"><%=umbraco.ui.Text("closewindow")%></a>
</body>
</html>
<%@ Page language="c#" MasterPageFile="../masterpages/umbracoDialog.Master" AutoEventWireup="True" Inherits="umbraco.dialogs.SendPublish" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<asp:Content ContentPlaceHolderID="body" runat="server">
<div class="umb-dialog-body form-horizontal">
<cc1:Pane ID="pane_form" runat="server">
<h5><%=umbraco.ui.Text("editContentSendToPublishText")%></h5>
</cc1:Pane>
</div>
<div class="umb-dialog-footer btn-toolbar umb-btn-toolbar">
<a href="#" class="btn btn-link" onclick="UmbClientMgr.closeModalWindow()"><%=umbraco.ui.Text("closewindow")%></a>
</div>
</asp:Content>
+4 -5
View File
@@ -103,11 +103,10 @@
<label for="body_rb_advanced">
<h4 class="pa-access-header"><%= umbraco.ui.Text("publicAccess", "paAdvanced", base.getUser())%></h4>
<p class="pa-access-description"><%= umbraco.ui.Text("publicAccess", "paAdvancedHelp", base.getUser())%></p>
<br />
<asp:Panel runat="server" Visible="false" ID="p_noGroupsFound" CssClass="error">
<p>
<%= umbraco.ui.Text("publicAccess", "paAdvancedNoGroups", UmbracoUser)%>
</p>
<asp:Panel runat="server" Visible="false" ID="p_noGroupsFound" CssClass="alert alert-danger">
<span><%= umbraco.ui.Text("publicAccess", "paAdvancedNoGroups", UmbracoUser)%></span>
</asp:Panel>
</label>
</div>
@@ -137,7 +136,7 @@
</cc1:PropertyPanel>
</div>
<asp:CustomValidator CssClass="pa-validation-message error" runat="server" ID="SimpleLoginNameValidator" Display="Dynamic" EnableViewState="False">
<asp:CustomValidator CssClass="alert alert-danger" runat="server" ID="SimpleLoginNameValidator" Display="Dynamic" EnableViewState="False">
<p class="alert">Member name already exists, click <asp:LinkButton runat="server" OnClick="ChangeOnClick" CssClass="btn btn-mini btn-warning">Change</asp:LinkButton> to use a different name or Update to continue</p>
</asp:CustomValidator>
</cc1:Pane>
+1 -1
View File
@@ -80,7 +80,7 @@
<div id="feedbackMsg" data-bind="visible: processStatus() == 'complete'">
<div data-bind="css: { success: isSuccessful(), error: !isSuccessful() }">
<div data-bind="css: { 'text-success': isSuccessful(), 'text-error': !isSuccessful() }">
<span data-bind="text: resultMessage, visible: resultMessages().length == 0"></span>
<ul data-bind="foreach: resultMessages, visible: resultMessages().length > 1">
<li data-bind="text: message"></li>
+1 -1
View File
@@ -1,4 +1,4 @@
<%@ Page Language="c#" Codebehind="rollBack.aspx.cs" MasterPageFile="../masterpages/umbracoDialog.Master"AutoEventWireup="True" Inherits="umbraco.presentation.dialogs.rollBack" %>
<%@ Page Language="c#" MasterPageFile="../masterpages/umbracoDialog.Master" AutoEventWireup="True" Inherits="umbraco.presentation.dialogs.rollBack" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %>
@@ -7,6 +7,7 @@
<style type="text/css">
.gridHeader{border-bottom:2px solid #D9D7D7;}
.gridItem{border-color: #D9D7D7;}
html, body {overflow: initial;}
</style>
<umb:CssInclude ID="CssInclude2" runat="server" FilePath="Tree/treeIcons.css" PathNameAlias="UmbracoClient" />
+2 -1
View File
@@ -1,4 +1,5 @@
@using Umbraco.Web
@using Umbraco.Core.Configuration
@using Umbraco.Web
@using Umbraco.Web.Install.Controllers
@{
Layout = null;
+48 -48
View File
@@ -1,58 +1,58 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
+17
View File
@@ -0,0 +1,17 @@
var app = angular.module('umbraco', [
'umbraco.filters',
'umbraco.directives',
'umbraco.resources',
'umbraco.services',
'umbraco.httpbackend',
'ngCookies',
'ngMobile',
'ngSanitize',
'tmh.dynamicLocale'
]);
/* For Angular 1.4: we need to load in Route, animate and touch seperately
'ngRoute',
'ngAnimate',
'ngTouch'
*/
+12 -3
View File
@@ -11,7 +11,7 @@ var app = angular.module('umbraco', [
'ngMobile',
'tmh.dynamicLocale',
'ngFileUpload',
'LocalStorageModule'
'LocalStorageModule'
]);
var packages = angular.module("umbraco.packages", []);
@@ -22,12 +22,21 @@ var packages = angular.module("umbraco.packages", []);
//module is initilized.
angular.module("umbraco.views", ["umbraco.viewcache"]);
angular.module("umbraco.viewcache", [])
.run(function($rootScope, $templateCache) {
.run(function ($rootScope, $templateCache, localStorageService) {
/** For debug mode, always clear template cache to cut down on
dev frustration and chrome cache on templates */
if (Umbraco.Sys.ServerVariables.isDebuggingEnabled) {
$templateCache.removeAll();
}
else {
var storedVersion = localStorageService.get("umbVersion");
if (!storedVersion || storedVersion !== Umbraco.Sys.ServerVariables.application.cacheBuster) {
//if the stored version doesn't match our cache bust version, clear the template cache
$templateCache.removeAll();
//store the current version
localStorageService.set("umbVersion", Umbraco.Sys.ServerVariables.application.cacheBuster);
}
}
})
.config([
//This ensures that all of our angular views are cache busted, if the path starts with views/ and ends with .html, then
@@ -39,7 +48,7 @@ angular.module("umbraco.viewcache", [])
$delegate.get = function (url, config) {
if (Umbraco.Sys.ServerVariables.application && url.startsWith("views/") && url.endsWith(".html")) {
var rnd = Umbraco.Sys.ServerVariables.application.version + "." + Umbraco.Sys.ServerVariables.application.cdf;
var rnd = Umbraco.Sys.ServerVariables.application.cacheBuster;
var _op = (url.indexOf("?") > 0) ? "&" : "?";
url += _op + "umb__rnd=" + rnd;
}
+2 -2
View File
@@ -11,8 +11,8 @@ LazyLoad.js([
'../js/umbraco.security.js',
'../ServerVariables',
'../lib/spectrum/spectrum.js',
'../js/canvasdesigner.panel.js',
'../js/umbraco.canvasdesigner.js',
'../js/canvasdesigner.panel.js'
], function () {
jQuery(document).ready(function () {
angular.bootstrap(document, ['Umbraco.canvasdesigner']);
+63 -10
View File
@@ -1,34 +1,86 @@
/** Executed when the application starts, binds to events and set global state */
app.run(['userService', '$log', '$rootScope', '$location', 'navigationService', 'appState', 'editorState', 'fileManager', 'assetsService', 'eventsService', '$cookies', '$templateCache',
function (userService, $log, $rootScope, $location, navigationService, appState, editorState, fileManager, assetsService, eventsService, $cookies, $templateCache) {
app.run(['userService', '$log', '$rootScope', '$location', 'queryStrings', 'navigationService', 'appState', 'editorState', 'fileManager', 'assetsService', 'eventsService', '$cookies', '$templateCache', 'localStorageService', 'tourService', 'dashboardResource',
function (userService, $log, $rootScope, $location, queryStrings, navigationService, appState, editorState, fileManager, assetsService, eventsService, $cookies, $templateCache, localStorageService, tourService, dashboardResource) {
//This sets the default jquery ajax headers to include our csrf token, we
// need to user the beforeSend method because our token changes per user/login so
// it cannot be static
$.ajaxSetup({
beforeSend: function (xhr) {
xhr.setRequestHeader("X-XSRF-TOKEN", $cookies["XSRF-TOKEN"]);
xhr.setRequestHeader("X-UMB-XSRF-TOKEN", $cookies["UMB-XSRF-TOKEN"]);
if (queryStrings.getParams().umbDebug === "true" || queryStrings.getParams().umbdebug === "true") {
xhr.setRequestHeader("X-UMB-DEBUG", "true");
}
}
});
/** Listens for authentication and checks if our required assets are loaded, if/once they are we'll broadcast a ready event */
eventsService.on("app.authenticated", function(evt, data) {
assetsService._loadInitAssets().then(function() {
appState.setGlobalState("isReady", true);
//send the ready event with the included returnToPath,returnToSearch data
eventsService.emit("app.ready", data);
returnToPath = null, returnToSearch = null;
// Loads the user's locale settings for Moment.
userService.loadMomentLocaleForCurrentUser().then(function() {
//Register all of the tours on the server
tourService.registerAllTours().then(function () {
appReady(data);
// Auto start intro tour
tourService.getTourByAlias("umbIntroIntroduction").then(function (introTour) {
// start intro tour if it hasn't been completed or disabled
if (introTour && introTour.disabled !== true && introTour.completed !== true) {
tourService.startTour(introTour);
}
});
}, function(){
appReady(data);
});
});
});
});
function appReady(data) {
appState.setGlobalState("isReady", true);
//send the ready event with the included returnToPath,returnToSearch data
eventsService.emit("app.ready", data);
returnToPath = null, returnToSearch = null;
}
/** execute code on each successful route */
$rootScope.$on('$routeChangeSuccess', function(event, current, previous) {
if(current.params.section){
$rootScope.locationTitle = current.params.section + " - " + $location.$$host;
var deployConfig = Umbraco.Sys.ServerVariables.deploy;
var deployEnv, deployEnvTitle;
if (deployConfig) {
deployEnv = Umbraco.Sys.ServerVariables.deploy.CurrentWorkspace;
deployEnvTitle = "(" + deployEnv + ") ";
}
if(current.params.section) {
//Uppercase the current section, content, media, settings, developer, forms
var currentSection = current.params.section.charAt(0).toUpperCase() + current.params.section.slice(1);
var baseTitle = currentSection + " - " + $location.$$host;
//Check deploy for Global Umbraco.Sys obj workspace
if(deployEnv){
$rootScope.locationTitle = deployEnvTitle + baseTitle;
}
else {
$rootScope.locationTitle = baseTitle;
}
}
else {
if(deployEnv) {
$rootScope.locationTitle = deployEnvTitle + "Umbraco - " + $location.$$host;
}
$rootScope.locationTitle = "Umbraco - " + $location.$$host;
}
@@ -67,4 +119,5 @@ app.run(['userService', '$log', '$rootScope', '$location', 'navigationService',
//var touchDevice = ("ontouchstart" in window || window.touch || window.navigator.msMaxTouchPoints === 5 || window.DocumentTouch && document instanceof DocumentTouch);
var touchDevice = /android|webos|iphone|ipad|ipod|blackberry|iemobile|touch/i.test(navigator.userAgent.toLowerCase());
appState.setGlobalState("touchDevice", touchDevice);
}]);
+18 -16
View File
@@ -1,17 +1,19 @@
LazyLoad.js( [
'lib/jquery/jquery.min.js',
/* 1.1.5 */
'lib/angular/1.1.5/angular.min.js',
'lib/angular/1.1.5/angular-cookies.min.js',
'lib/angular/1.1.5/angular-mobile.min.js',
'lib/angular/1.1.5/angular-mocks.js',
'lib/angular/1.1.5/angular-sanitize.min.js',
'lib/underscore/underscore-min.js',
'js/umbraco.installer.js',
'js/umbraco.directives.js'
], function () {
jQuery(document).ready(function () {
angular.bootstrap(document, ['ngSanitize', 'umbraco.install', 'umbraco.directives.validation']);
});
}
LazyLoad.js([
'lib/jquery/jquery.min.js',
/* 1.1.5 */
'lib/angular/1.1.5/angular.min.js',
'lib/angular/1.1.5/angular-cookies.min.js',
'lib/angular/1.1.5/angular-mobile.min.js',
'lib/angular/1.1.5/angular-mocks.js',
'lib/angular/1.1.5/angular-sanitize.min.js',
'lib/underscore/underscore-min.js',
'lib/angular/angular-ui-sortable.js',
'js/installer.app.js',
'js/umbraco.directives.js',
'js/umbraco.installer.js'
], function () {
jQuery(document).ready(function () {
angular.bootstrap(document, ['umbraco']);
});
}
);
+7
View File
@@ -0,0 +1,7 @@
var app = angular.module('umbraco', [
'umbraco.directives',
'umbraco.install',
'ngCookies',
'ngMobile',
'ngSanitize'
]);
+49
View File
@@ -0,0 +1,49 @@
LazyLoad.js(
[
'lib/jquery/jquery.min.js',
'lib/jquery-ui/jquery-ui.min.js',
/* 1.1.5 */
'lib/angular/1.1.5/angular.min.js',
'lib/angular/1.1.5/angular-cookies.min.js',
'lib/angular/1.1.5/angular-sanitize.min.js',
'lib/angular/angular-ui-sortable.js',
'lib/angular/1.1.5/angular-mocks.js',
'lib/angular/1.1.5/angular-mobile.min.js',
'lib/underscore/underscore-min.js',
'lib/angular-dynamic-locale/tmhDynamicLocale.min.js',
'lib/bootstrap/js/bootstrap.2.3.2.min.js',
'lib/bootstrap-tabdrop/bootstrap-tabdrop.min.js',
'lib/umbraco/Extensions.js',
'lib/umbraco/NamespaceManager.js',
'lib/umbraco/LegacyUmbClientMgr.js',
'lib/umbraco/LegacySpeechBubble.js',
'js/umbraco.servervariables.js',
'js/app.dev.js',
'js/umbraco.httpbackend.js',
'js/umbraco.testing.js',
'js/umbraco.directives.js',
'js/umbraco.filters.js',
'js/umbraco.resources.js',
'js/umbraco.services.js',
'js/umbraco.security.js',
'js/umbraco.controllers.js',
'js/routes.js',
'js/init.js'
],
function () {
jQuery(document).ready(function () {
angular.bootstrap(document, ['umbraco']);
});
}
);
+53 -17
View File
@@ -31,6 +31,12 @@ app.config(function ($routeProvider) {
userService.getCurrentUser({ broadcastEvent: broadcast }).then(function (user) {
//is auth, check if we allow or reject
if (isRequired) {
//This checks the current section and will force a redirect to 'content' as the default
if ($route.current.params.section.toLowerCase() === "default" || $route.current.params.section.toLowerCase() === "umbraco" || $route.current.params.section === "") {
$route.current.params.section = "content";
}
// U4-5430, Benjamin Howarth
// We need to change the current route params if the user only has access to a single section
// To do this we need to grab the current user's allowed sections, then reject the promise with the correct path.
@@ -98,14 +104,29 @@ app.config(function ($routeProvider) {
resolve: doLogout()
})
.when('/:section', {
templateUrl: function (rp) {
if (rp.section.toLowerCase() === "default" || rp.section.toLowerCase() === "umbraco" || rp.section === "")
{
rp.section = "content";
}
rp.url = "dashboard.aspx?app=" + rp.section;
return 'views/common/dashboard.html';
//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 can execute some code in order to set the template Url
controller: function ($scope, $route, $routeParams, $location, sectionService) {
//We are going to check the currently loaded sections for the user and if the section we are navigating
//to has a custom route path we'll use that
sectionService.getSectionsForUser().then(function(sections) {
//find the one we're requesting
var found = _.find(sections, function(s) {
return s.alias === $routeParams.section;
})
if (found && found.routePath) {
//there's a custom route path so redirect
$location.path(found.routePath);
}
else {
//there's no custom route path so continue as normal
$routeParams.url = "dashboard.aspx?app=" + $routeParams.section;
$scope.templateUrl = 'views/common/dashboard.html';
}
});
},
resolve: canRoute(true)
})
@@ -120,17 +141,32 @@ app.config(function ($routeProvider) {
resolve: canRoute(true)
})
.when('/:section/:tree/:method', {
templateUrl: function (rp) {
if (!rp.method)
return "views/common/dashboard.html";
//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) {
//NOTE: This current isn't utilized by anything but does open up some cool opportunities for
// us since we'll be able to have specialized views for individual sections which is something
// we've never had before. So could utilize this for a new dashboard model when we get native
// angular dashboards working. Perhaps a normal section dashboard would list out the registered
// dashboards (as tabs if we wanted) and each tab could actually be a route link to one of these views?
if (!$routeParams.method) {
$scope.templateUrl = "views/common/dashboard.html";
}
return ('views/' + rp.tree + '/' + rp.method + '.html');
// Here we need to figure out if this route is for a package tree and if so then we need
// to change it's convention view path to:
// /App_Plugins/{mypackage}/backoffice/{treetype}/{method}.html
// otherwise if it is a core tree we use the core paths:
// views/{treetype}/{method}.html
var packageTreeFolder = treeService.getTreePackageFolder($routeParams.tree);
if (packageTreeFolder) {
$scope.templateUrl = (Umbraco.Sys.ServerVariables.umbracoSettings.appPluginsPath +
"/" + packageTreeFolder +
"/backoffice/" + $routeParams.tree + "/" + $routeParams.method + ".html");
}
else {
$scope.templateUrl = ('views/' + $routeParams.tree + '/' + $routeParams.method + '.html');
}
},
resolve: canRoute(true)
})
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+116 -41
View File
@@ -1,53 +1,128 @@
/*! umbraco
* https://github.com/umbraco/umbraco-cms/
* Copyright (c) 2016 Umbraco HQ;
* Licensed
*/
(function() {
angular.module('umbraco.filters', []);
angular.module("umbraco.filters")
.filter('compareArrays', function() {
(function () {
angular.module('umbraco.filters', []);
angular.module('umbraco.filters').filter('compareArrays', function () {
return function inArray(array, compareArray, compareProperty) {
var result = [];
angular.forEach(array, function(arrayItem){
angular.forEach(array, function (arrayItem) {
var exists = false;
angular.forEach(compareArray, function(compareItem){
if( arrayItem[compareProperty] === compareItem[compareProperty]) {
angular.forEach(compareArray, function (compareItem) {
if (arrayItem[compareProperty] === compareItem[compareProperty]) {
exists = true;
}
});
if(!exists) {
if (!exists) {
result.push(arrayItem);
}
});
return result;
};
});
angular.module("umbraco.filters").filter('timespan', function() {
return function(input) {
var sec_num = parseInt(input, 10);
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (hours * 3600) - (minutes * 60);
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
var time = hours+':'+minutes+':'+seconds;
return time;
});
// Filter to take a node id and grab it's name instead
// Usage: {{ pickerAlias | ncNodeName }}
// Cache for node names so we don't make a ton of requests
var ncNodeNameCache = {
id: '',
keys: {}
};
});
})();
angular.module('umbraco.filters').filter('ncNodeName', function (editorState, entityResource) {
function formatLabel(firstNodeName, totalNodes) {
return totalNodes <= 1 ? firstNodeName // If there is more than one item selected, append the additional number of items selected to hint that
: firstNodeName + ' (+' + (totalNodes - 1) + ')';
}
return function (input) {
// Check we have a value at all
if (input === '' || input.toString() === '0') {
return '';
}
var currentNode = editorState.getCurrent();
// Ensure a unique cache per editor instance
var key = 'ncNodeName_' + currentNode.key;
if (ncNodeNameCache.id !== key) {
ncNodeNameCache.id = key;
ncNodeNameCache.keys = {};
}
// MNTP values are comma separated IDs. We'll only fetch the first one for the NC header.
var ids = input.split(',');
var lookupId = ids[0];
// See if there is a value in the cache and use that
if (ncNodeNameCache.keys[lookupId]) {
return formatLabel(ncNodeNameCache.keys[lookupId], ids.length);
}
// No value, so go fetch one
// We'll put a temp value in the cache though so we don't
// make a load of requests while we wait for a response
ncNodeNameCache.keys[lookupId] = 'Loading...';
var type = lookupId.indexOf('umb://media/') === 0 ? 'Media' : lookupId.indexOf('umb://member/') === 0 ? 'Member' : 'Document';
entityResource.getById(lookupId, type).then(function (ent) {
ncNodeNameCache.keys[lookupId] = ent.name;
});
// Return the current value for now
return formatLabel(ncNodeNameCache.keys[lookupId], ids.length);
};
}).filter('ncRichText', function () {
return function (input) {
return $('<div/>').html(input).text();
};
});
/**
* @ngdoc filter
* @name umbraco.filters.preserveNewLineInHtml
* @description
* Used when rendering a string as HTML (i.e. with ng-bind-html) to convert line-breaks to <br /> tags
**/
angular.module('umbraco.filters').filter('preserveNewLineInHtml', function () {
return function (text) {
if (!text) {
return '';
}
return text.replace(/\n/g, '<br />');
};
});
angular.module('umbraco.filters').filter('timespan', function () {
return function (input) {
var sec_num = parseInt(input, 10);
var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - hours * 3600) / 60);
var seconds = sec_num - hours * 3600 - minutes * 60;
if (hours < 10) {
hours = '0' + hours;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds < 10) {
seconds = '0' + seconds;
}
var time = hours + ':' + minutes + ':' + seconds;
return time;
};
});
/**
* @ngdoc filter
* @name umbraco.filters.filter:umbWordLimit
* @namespace umbWordLimitFilter
*
* @description
* Limits the number of words in a string to the passed in value
*/
(function () {
'use strict';
function umbWordLimitFilter() {
return function (collection, property) {
if (!angular.isString(collection)) {
return collection;
}
if (angular.isUndefined(property)) {
return collection;
}
var newString = '';
var array = [];
array = collection.split(' ', property);
array.length = property;
newString = array.join(' ');
return newString;
};
}
angular.module('umbraco.filters').filter('umbWordLimit', umbWordLimitFilter);
}());
}());
+398 -454
View File
@@ -1,468 +1,412 @@
/*! umbraco
* https://github.com/umbraco/umbraco-cms/
* Copyright (c) 2016 Umbraco HQ;
* Licensed
*/
(function() {
angular.module('umbraco.install', []);
angular.module("umbraco.install").controller("Umbraco.InstallerController",
function ($scope, installerService) {
//TODO: Decouple the service from the controller - the controller should be responsible
// for the model (state) and the service should be responsible for helping the controller,
// the controller should be passing the model into it's methods for manipulation and not hold
// state. We should not be assigning properties from a service to a controller's scope.
// see: https://github.com/umbraco/Umbraco-CMS/commit/b86ef0d7ac83f699aee35d807f7f7ebb6dd0ed2c#commitcomment-5721204
$scope.stepIndex = 0;
//comment this out if you just want to see tips
installerService.init();
//uncomment this to see tips
//installerService.switchToFeedback();
$scope.installer = installerService.status;
$scope.forward = function () {
installerService.forward();
};
$scope.backward = function () {
installerService.backward();
};
$scope.install = function () {
installerService.install();
};
$scope.gotoStep = function (step) {
installerService.gotoNamedStep(step);
};
$scope.restart = function () {
installerService.gotoStep(0);
};
});
//this ensure that we start with a clean slate on every install and upgrade
angular.module("umbraco.install").run(function ($templateCache) {
$templateCache.removeAll();
});
angular.module("umbraco.install").factory('installerService', function($rootScope, $q, $timeout, $http, $location, $log){
var _status = {
index: 0,
current: undefined,
steps: undefined,
loading: true,
progress: "100%"
};
var factTimer = undefined;
var _installerModel = {
installId: undefined,
instructions: {
}
};
//add to umbraco installer facts here
var facts = ['Umbraco helped millions of people watch a man jump from the edge of space',
'Over 370 000 websites are currently powered by Umbraco',
"At least 2 people have named their cat 'Umbraco'",
'On an average day, more than 1000 people download Umbraco',
'<a target="_blank" href="http://umbraco.tv">umbraco.tv</a> is the premier source of Umbraco video tutorials to get you started',
'You can find the world\'s friendliest CMS community at <a target="_blank" href="http://our.umbraco.org">our.umbraco.org</a>',
'You can become a certified Umbraco developer by attending one of the official courses',
'Umbraco works really well on tablets',
'You have 100% control over your markup and design when crafting a website in Umbraco',
'Umbraco is the best of both worlds: 100% free and open source, and backed by a professional and profitable company',
"There's a pretty big chance, you've visited a website powered by Umbraco today",
"'Umbraco-spotting' is the game of spotting big brands running Umbraco",
"At least 4 people have the Umbraco logo tattooed on them",
"'Umbraco' is the danish name for an allen key",
"Umbraco has been around since 2005, that's a looong time in IT",
"More than 400 people from all over the world meet each year in Denmark in June for our annual conference <a target='_blank' href='http://codegarden15.com'>CodeGarden</a>",
"While you are installing Umbraco someone else on the other side of the planet is probably doing it too",
"You can extend Umbraco without modifying the source code using either JavaScript or C#",
"Umbraco was installed in more than 165 countries in 2015"
];
/**
(function () {
angular.module('umbraco.install', ['umbraco.directives']);
angular.module('umbraco.install').controller('Umbraco.InstallerController', function ($scope, installerService) {
//TODO: Decouple the service from the controller - the controller should be responsible
// for the model (state) and the service should be responsible for helping the controller,
// the controller should be passing the model into it's methods for manipulation and not hold
// state. We should not be assigning properties from a service to a controller's scope.
// see: https://github.com/umbraco/Umbraco-CMS/commit/b86ef0d7ac83f699aee35d807f7f7ebb6dd0ed2c#commitcomment-5721204
$scope.stepIndex = 0;
//comment this out if you just want to see tips
installerService.init();
//uncomment this to see tips
//installerService.switchToFeedback();
$scope.installer = installerService.status;
$scope.forward = function () {
installerService.forward();
};
$scope.backward = function () {
installerService.backward();
};
$scope.install = function () {
installerService.install();
};
$scope.gotoStep = function (step) {
installerService.gotoNamedStep(step);
};
$scope.restart = function () {
installerService.gotoStep(0);
};
});
//this ensure that we start with a clean slate on every install and upgrade
angular.module('umbraco.install').run(function ($templateCache) {
$templateCache.removeAll();
});
angular.module('umbraco.install').factory('installerService', function ($rootScope, $q, $timeout, $http, $location, $log) {
var _status = {
index: 0,
current: undefined,
steps: undefined,
loading: true,
progress: '100%'
};
var factTimer = undefined;
var _installerModel = {
installId: undefined,
instructions: {}
};
//add to umbraco installer facts here
var facts = [
'Umbraco helped millions of people watch a man jump from the edge of space',
'Over 440 000 websites are currently powered by Umbraco',
'At least 2 people have named their cat \'Umbraco\'',
'On an average day, more than 1000 people download Umbraco',
'<a target="_blank" href="https://umbraco.tv">umbraco.tv</a> is the premier source of Umbraco video tutorials to get you started',
'You can find the world\'s friendliest CMS community at <a target="_blank" href="https://our.umbraco.com">our.umbraco.com</a>',
'You can become a certified Umbraco developer by attending one of the official courses',
'Umbraco works really well on tablets',
'You have 100% control over your markup and design when crafting a website in Umbraco',
'Umbraco is the best of both worlds: 100% free and open source, and backed by a professional and profitable company',
'There\'s a pretty big chance, you\'ve visited a website powered by Umbraco today',
'\'Umbraco-spotting\' is the game of spotting big brands running Umbraco',
'At least 4 people have the Umbraco logo tattooed on them',
'\'Umbraco\' is the Danish name for an allen key',
'Umbraco has been around since 2005, that\'s a looong time in IT',
'More than 600 people from all over the world meet each year in Denmark in May for our annual conference <a target=\'_blank\' href=\'https://umbra.co/codegarden\'>CodeGarden</a>',
'While you are installing Umbraco someone else on the other side of the planet is probably doing it too',
'You can extend Umbraco without modifying the source code using either JavaScript or C#',
'Umbraco has been installed in more than 198 countries'
];
/**
Returns the description for the step at a given index based on the order of the serverOrder of steps
Since they don't execute on the server in the order that they are displayed in the UI.
*/
function getDescriptionForStepAtIndex(steps, index) {
var sorted = _.sortBy(steps, "serverOrder");
if (sorted[index]) {
return sorted[index].description;
}
return null;
}
/* Returns the description for the given step name */
function getDescriptionForStepName(steps, name) {
var found = _.find(steps, function(i) {
return i.name == name;
});
return (found) ? found.description : null;
}
//calculates the offset of the progressbar on the installer
function calculateProgress(steps, next) {
var sorted = _.sortBy(steps, "serverOrder");
var pct = "100%";
for (var i = sorted.length - 1; i >= 0; i--) {
if(sorted[i].name == next){
pct = Math.floor((i+1) / steps.length * 100) + "%";
break;
}
}
return pct;
}
//helpful defaults for the view loading
function resolveView(view){
if(view.indexOf(".html") < 0){
view = view + ".html";
}
if(view.indexOf("/") < 0){
view = "views/install/" + view;
}
return view;
}
/** Have put this here because we are not referencing our other modules */
function safeApply (scope, fn) {
if (scope.$$phase || scope.$root.$$phase) {
if (angular.isFunction(fn)) {
fn();
}
}
else {
if (angular.isFunction(fn)) {
scope.$apply(fn);
}
else {
scope.$apply();
}
}
}
var service = {
status : _status,
//loads the needed steps and sets the intial state
init : function(){
service.status.loading = true;
if(!_status.all){
service.getSteps().then(function(response){
service.status.steps = response.data.steps;
service.status.index = 0;
_installerModel.installId = response.data.installId;
service.findNextStep();
$timeout(function(){
service.status.loading = false;
service.status.configuring = true;
}, 2000);
});
}
},
//loads available packages from our.umbraco.org
getPackages : function(){
return $http.get(Umbraco.Sys.ServerVariables.installApiBaseUrl + "GetPackages");
},
getSteps : function(){
return $http.get(Umbraco.Sys.ServerVariables.installApiBaseUrl + "GetSetup");
},
gotoStep : function(index){
var step = service.status.steps[index];
step.view = resolveView(step.view);
if(!step.model){
step.model = {};
}
service.status.index = index;
service.status.current = step;
service.retrieveCurrentStep();
},
gotoNamedStep : function(stepName){
var step = _.find(service.status.steps, function(s, index){
if (s.view && s.name === stepName) {
service.status.index = index;
return true;
}
return false;
});
step.view = resolveView(step.view);
if(!step.model){
step.model = {};
}
service.retrieveCurrentStep();
service.status.current = step;
},
/**
Finds the next step containing a view. If one is found it stores it as the current step
and retreives the step information and returns it, otherwise returns null .
*/
findNextStep : function(){
var step = _.find(service.status.steps, function(s, index){
if(s.view && index >= service.status.index){
service.status.index = index;
return true;
}
return false;
});
if (step) {
if (step.view.indexOf(".html") < 0) {
step.view = step.view + ".html";
function getDescriptionForStepAtIndex(steps, index) {
var sorted = _.sortBy(steps, 'serverOrder');
if (sorted[index]) {
return sorted[index].description;
}
return null;
}
/* Returns the description for the given step name */
function getDescriptionForStepName(steps, name) {
var found = _.find(steps, function (i) {
return i.name == name;
});
return found ? found.description : null;
}
//calculates the offset of the progressbar on the installer
function calculateProgress(steps, next) {
var sorted = _.sortBy(steps, 'serverOrder');
var pct = '100%';
for (var i = sorted.length - 1; i >= 0; i--) {
if (sorted[i].name == next) {
pct = Math.floor((i + 1) / steps.length * 100) + '%';
break;
}
if (step.view.indexOf("/") < 0) {
step.view = "views/install/" + step.view;
}
return pct;
}
//helpful defaults for the view loading
function resolveView(view) {
if (view.indexOf('.html') < 0) {
view = view + '.html';
}
if (view.indexOf('/') < 0) {
view = 'views/install/' + view;
}
return view;
}
/** Have put this here because we are not referencing our other modules */
function safeApply(scope, fn) {
if (scope.$$phase || scope.$root.$$phase) {
if (angular.isFunction(fn)) {
fn();
}
} else {
if (angular.isFunction(fn)) {
scope.$apply(fn);
} else {
scope.$apply();
}
}
}
var service = {
status: _status,
//loads the needed steps and sets the intial state
init: function () {
service.status.loading = true;
if (!_status.all) {
service.getSteps().then(function (response) {
service.status.steps = response.data.steps;
service.status.index = 0;
_installerModel.installId = response.data.installId;
service.findNextStep();
$timeout(function () {
service.status.loading = false;
service.status.configuring = true;
}, 2000);
});
}
},
//loads available packages from our.umbraco.com
getPackages: function () {
return $http.get(Umbraco.Sys.ServerVariables.installApiBaseUrl + 'GetPackages');
},
getSteps: function () {
return $http.get(Umbraco.Sys.ServerVariables.installApiBaseUrl + 'GetSetup');
},
gotoStep: function (index) {
var step = service.status.steps[index];
step.view = resolveView(step.view);
if (!step.model) {
step.model = {};
}
service.status.index = index;
service.status.current = step;
service.retrieveCurrentStep();
//returns the next found step
return step;
}
else {
//there are no more steps found containing a view so return null
return null;
}
},
storeCurrentStep : function(){
_installerModel.instructions[service.status.current.name] = service.status.current.model;
},
retrieveCurrentStep : function(){
if(_installerModel.instructions[service.status.current.name]){
service.status.current.model = _installerModel.instructions[service.status.current.name];
}
},
/** Moves the installer forward to the next view, if there are not more views than the installation will commence */
forward : function(){
service.storeCurrentStep();
service.status.index++;
var found = service.findNextStep();
if (!found) {
//no more steps were found so start the installation process
service.install();
}
},
backwards : function(){
service.storeCurrentStep();
service.gotoStep(service.status.index--);
},
install : function(){
service.storeCurrentStep();
service.switchToFeedback();
service.status.feedback = getDescriptionForStepAtIndex(service.status.steps, 0);
service.status.progress = 0;
function processInstallStep() {
$http.post(Umbraco.Sys.ServerVariables.installApiBaseUrl + "PostPerformInstall", _installerModel)
.success(function(data, status, headers, config) {
if (!data.complete) {
//progress feedback
service.status.progress = calculateProgress(service.status.steps, data.nextStep);
if (data.view) {
//set the current view and model to whatever the process returns, the view is responsible for retriggering install();
var v = resolveView(data.view);
service.status.current = { view: v, model: data.model };
//turn off loading bar and feedback
service.switchToConfiguration();
}
else {
var desc = getDescriptionForStepName(service.status.steps, data.nextStep);
if (desc) {
service.status.feedback = desc;
}
processInstallStep();
}
}
else {
service.complete();
}
}).error(function(data, status, headers, config) {
//need to handle 500's separately, this will happen if something goes wrong outside
// of the installer (like app startup events or something) and these will get returned as text/html
// not as json. If this happens we can't actually load in external views since they will YSOD as well!
},
gotoNamedStep: function (stepName) {
var step = _.find(service.status.steps, function (s, index) {
if (s.view && s.name === stepName) {
service.status.index = index;
return true;
}
return false;
});
step.view = resolveView(step.view);
if (!step.model) {
step.model = {};
}
service.retrieveCurrentStep();
service.status.current = step;
},
/**
Finds the next step containing a view. If one is found it stores it as the current step
and retreives the step information and returns it, otherwise returns null .
*/
findNextStep: function () {
var step = _.find(service.status.steps, function (s, index) {
if (s.view && index >= service.status.index) {
service.status.index = index;
return true;
}
return false;
});
if (step) {
if (step.view.indexOf('.html') < 0) {
step.view = step.view + '.html';
}
if (step.view.indexOf('/') < 0) {
step.view = 'views/install/' + step.view;
}
if (!step.model) {
step.model = {};
}
service.status.current = step;
service.retrieveCurrentStep();
//returns the next found step
return step;
} else {
//there are no more steps found containing a view so return null
return null;
}
},
storeCurrentStep: function () {
_installerModel.instructions[service.status.current.name] = service.status.current.model;
},
retrieveCurrentStep: function () {
if (_installerModel.instructions[service.status.current.name]) {
service.status.current.model = _installerModel.instructions[service.status.current.name];
}
},
/** Moves the installer forward to the next view, if there are not more views than the installation will commence */
forward: function () {
service.storeCurrentStep();
service.status.index++;
var found = service.findNextStep();
if (!found) {
//no more steps were found so start the installation process
service.install();
}
},
backwards: function () {
service.storeCurrentStep();
service.gotoStep(service.status.index--);
},
install: function () {
service.storeCurrentStep();
service.switchToFeedback();
service.status.feedback = getDescriptionForStepAtIndex(service.status.steps, 0);
service.status.progress = 0;
function processInstallStep() {
$http.post(Umbraco.Sys.ServerVariables.installApiBaseUrl + 'PostPerformInstall', _installerModel).success(function (data, status, headers, config) {
if (!data.complete) {
//progress feedback
service.status.progress = calculateProgress(service.status.steps, data.nextStep);
if (data.view) {
//set the current view and model to whatever the process returns, the view is responsible for retriggering install();
var v = resolveView(data.view);
service.status.current = {
view: v,
model: data.model
};
//turn off loading bar and feedback
service.switchToConfiguration();
} else {
var desc = getDescriptionForStepName(service.status.steps, data.nextStep);
if (desc) {
service.status.feedback = desc;
}
processInstallStep();
}
} else {
service.complete();
}
}).error(function (data, status, headers, config) {
//need to handle 500's separately, this will happen if something goes wrong outside
// of the installer (like app startup events or something) and these will get returned as text/html
// not as json. If this happens we can't actually load in external views since they will YSOD as well!
// so we need to display this in our own internal way
if (status >= 500 && status < 600) {
service.status.current = { view: "ysod", model: null };
var ysod = data;
if (status >= 500 && status < 600) {
service.status.current = {
view: 'ysod',
model: null
};
var ysod = data;
//we need to manually write the html to the iframe - the html contains full html markup
$timeout(function () {
document.getElementById('ysod').contentDocument.write(ysod);
}, 500);
}
else {
//this is where we handle installer error
var v = data.view ? resolveView(data.view) : resolveView("error");
var model = data.model ? data.model : data;
service.status.current = { view: v, model: model };
}
service.switchToConfiguration();
});
}
processInstallStep();
},
randomFact: function () {
safeApply($rootScope, function() {
service.status.fact = facts[_.random(facts.length - 1)];
});
},
switchToFeedback : function(){
service.status.current = undefined;
service.status.loading = true;
service.status.configuring = false;
//initial fact
service.randomFact();
//timed facts
factTimer = window.setInterval(function(){
service.randomFact();
},6000);
},
switchToConfiguration : function(){
service.status.loading = false;
service.status.configuring = true;
service.status.feedback = undefined;
service.status.fact = undefined;
if(factTimer){
clearInterval(factTimer);
}
},
complete : function(){
service.status.progress = "100%";
service.status.done = true;
service.status.feedback = "Redirecting you to Umbraco, please wait";
service.status.loading = false;
if(factTimer){
clearInterval(factTimer);
}
$timeout(function(){
window.location.href = Umbraco.Sys.ServerVariables.umbracoBaseUrl;
}, 1500);
}
};
return service;
});
angular.module("umbraco.install").controller("Umbraco.Installer.DataBaseController", function($scope, $http, installerService){
$scope.checking = false;
$scope.dbs = [
{name: 'Microsoft SQL Server Compact (SQL CE)', id: 0},
{name: 'Microsoft SQL Server', id: 1},
{ name: 'Microsoft SQL Azure', id: 3 },
{ name: 'MySQL', id: 2 },
{name: 'Custom connection string', id: -1}];
if(installerService.status.current.model.dbType === undefined){
installerService.status.current.model.dbType = 0;
}
$scope.validateAndForward = function(){
if(!$scope.checking && this.myForm.$valid){
$scope.checking = true;
var model = installerService.status.current.model;
$http.post(Umbraco.Sys.ServerVariables.installApiBaseUrl + "PostValidateDatabaseConnection",
model).then(function(response){
if(response.data === "true"){
installerService.forward();
}else{
$scope.invalidDbDns = true;
}
$scope.checking = false;
}, function(){
$scope.invalidDbDns = true;
$scope.checking = false;
});
}
};
});
angular.module("umbraco.install").controller("Umbraco.Installer.PackagesController", function ($scope, installerService) {
installerService.getPackages().then(function (response) {
$scope.packages = response.data;
$timeout(function () {
document.getElementById('ysod').contentDocument.write(ysod);
}, 500);
} else {
//this is where we handle installer error
var v = data.view ? resolveView(data.view) : resolveView('error');
var model = data.model ? data.model : data;
service.status.current = {
view: v,
model: model
};
}
service.switchToConfiguration();
});
}
processInstallStep();
},
randomFact: function () {
safeApply($rootScope, function () {
service.status.fact = facts[_.random(facts.length - 1)];
});
},
switchToFeedback: function () {
service.status.current = undefined;
service.status.loading = true;
service.status.configuring = false;
//initial fact
service.randomFact();
//timed facts
factTimer = window.setInterval(function () {
service.randomFact();
}, 6000);
},
switchToConfiguration: function () {
service.status.loading = false;
service.status.configuring = true;
service.status.feedback = undefined;
service.status.fact = undefined;
if (factTimer) {
clearInterval(factTimer);
}
},
complete: function () {
service.status.progress = '100%';
service.status.done = true;
service.status.feedback = 'Redirecting you to Umbraco, please wait';
service.status.loading = false;
if (factTimer) {
clearInterval(factTimer);
}
$timeout(function () {
window.location.href = Umbraco.Sys.ServerVariables.umbracoBaseUrl;
}, 1500);
}
};
return service;
});
$scope.setPackageAndContinue = function (pckId) {
installerService.status.current.model = pckId;
installerService.forward();
};
});
angular.module("umbraco.install").controller("Umbraco.Install.UserController", function($scope, installerService) {
$scope.passwordPattern = /.*/;
$scope.installer.current.model.subscribeToNewsLetter = true;
if ($scope.installer.current.model.minNonAlphaNumericLength > 0) {
var exp = "";
for (var i = 0; i < $scope.installer.current.model.minNonAlphaNumericLength; i++) {
exp += ".*[\\W].*";
angular.module('umbraco.install').controller('Umbraco.Installer.DataBaseController', function ($scope, $http, installerService) {
$scope.checking = false;
$scope.invalidDbDns = false;
$scope.dbs = [
{
name: 'Microsoft SQL Server Compact (SQL CE)',
id: 0
},
{
name: 'Microsoft SQL Server',
id: 1
},
{
name: 'Microsoft SQL Azure',
id: 3
},
{
name: 'MySQL',
id: 2
},
{
name: 'Custom connection string',
id: -1
}
];
if (installerService.status.current.model.dbType === undefined) {
installerService.status.current.model.dbType = 0;
}
//replace duplicates
exp = exp.replace(".*.*", ".*");
$scope.passwordPattern = new RegExp(exp);
}
$scope.validateAndInstall = function(){
installerService.install();
};
$scope.validateAndForward = function(){
if(this.myForm.$valid){
installerService.forward();
}
};
});
})();
$scope.validateAndForward = function () {
if (!$scope.checking && this.myForm.$valid) {
$scope.checking = true;
$scope.invalidDbDns = false;
var model = installerService.status.current.model;
$http.post(Umbraco.Sys.ServerVariables.installApiBaseUrl + 'PostValidateDatabaseConnection', model).then(function (response) {
if (response.data === 'true') {
installerService.forward();
} else {
$scope.invalidDbDns = true;
}
$scope.checking = false;
}, function () {
$scope.invalidDbDns = true;
$scope.checking = false;
});
}
};
});
angular.module('umbraco.install').controller('Umbraco.Installer.MachineKeyController', function ($scope, installerService) {
$scope.continue = function () {
installerService.status.current.model = true;
installerService.forward();
};
$scope.ignoreKey = function () {
installerService.status.current.model = false;
installerService.forward();
};
});
angular.module('umbraco.install').controller('Umbraco.Installer.PackagesController', function ($scope, installerService) {
installerService.getPackages().then(function (response) {
$scope.packages = response.data;
});
$scope.setPackageAndContinue = function (pckId) {
installerService.status.current.model = pckId;
installerService.forward();
};
});
angular.module('umbraco.install').controller('Umbraco.Install.UserController', function ($scope, installerService) {
$scope.passwordPattern = /.*/;
$scope.installer.current.model.subscribeToNewsLetter = false;
if ($scope.installer.current.model.minNonAlphaNumericLength > 0) {
var exp = '';
for (var i = 0; i < $scope.installer.current.model.minNonAlphaNumericLength; i++) {
exp += '.*[\\W].*';
}
//replace duplicates
exp = exp.replace('.*.*', '.*');
$scope.passwordPattern = new RegExp(exp);
}
$scope.validateAndInstall = function () {
installerService.install();
};
$scope.validateAndForward = function () {
if (this.myForm.$valid) {
installerService.forward();
}
};
});
}());
File diff suppressed because it is too large Load Diff
+160 -169
View File
@@ -1,206 +1,197 @@
/*! umbraco
* https://github.com/umbraco/umbraco-cms/
* Copyright (c) 2016 Umbraco HQ;
* Licensed
*/
(function() {
//TODO: This is silly and unecessary to have a separate module for this
angular.module('umbraco.security.retryQueue', []);
angular.module('umbraco.security.interceptor', ['umbraco.security.retryQueue']);
angular.module('umbraco.security', ['umbraco.security.retryQueue', 'umbraco.security.interceptor']);
//TODO: This is silly and unecessary to have a separate module for this
angular.module('umbraco.security.retryQueue', [])
// This is a generic retry queue for security failures. Each item is expected to expose two functions: retry and cancel.
.factory('securityRetryQueue', ['$q', '$log', function ($q, $log) {
var retryQueue = [];
var retryUser = null;
var service = {
// The security service puts its own handler in here!
onItemAddedCallbacks: [],
hasMore: function() {
return retryQueue.length > 0;
},
push: function(retryItem) {
retryQueue.push(retryItem);
// Call all the onItemAdded callbacks
angular.forEach(service.onItemAddedCallbacks, function(cb) {
try {
cb(retryItem);
} catch(e) {
$log.error('securityRetryQueue.push(retryItem): callback threw an error' + e);
(function () {
angular.module('umbraco.security.retryQueue', []);
angular.module('umbraco.security.interceptor', ['umbraco.security.retryQueue']);
angular.module('umbraco.security', [
'umbraco.security.retryQueue',
'umbraco.security.interceptor'
]);
//TODO: This is silly and unecessary to have a separate module for this
angular.module('umbraco.security.retryQueue', []) // This is a generic retry queue for security failures. Each item is expected to expose two functions: retry and cancel.
.factory('securityRetryQueue', [
'$q',
'$log',
function ($q, $log) {
var retryQueue = [];
var retryUser = null;
var service = {
// The security service puts its own handler in here!
onItemAddedCallbacks: [],
hasMore: function () {
return retryQueue.length > 0;
},
push: function (retryItem) {
retryQueue.push(retryItem);
// Call all the onItemAdded callbacks
angular.forEach(service.onItemAddedCallbacks, function (cb) {
try {
cb(retryItem);
} catch (e) {
$log.error('securityRetryQueue.push(retryItem): callback threw an error' + e);
}
});
},
pushRetryFn: function (reason, userName, retryFn) {
// The reason parameter is optional
if (arguments.length === 2) {
retryFn = userName;
userName = reason;
reason = undefined;
}
if (retryUser && retryUser !== userName || userName === null) {
throw new Error('invalid user');
}
retryUser = userName;
// The deferred object that will be resolved or rejected by calling retry or cancel
var deferred = $q.defer();
var retryItem = {
reason: reason,
retry: function () {
// Wrap the result of the retryFn into a promise if it is not already
$q.when(retryFn()).then(function (value) {
// If it was successful then resolve our deferred
deferred.resolve(value);
}, function (value) {
// Othewise reject it
deferred.reject(value);
});
},
cancel: function () {
// Give up on retrying and reject our deferred
deferred.reject();
}
};
service.push(retryItem);
return deferred.promise;
},
retryReason: function () {
return service.hasMore() && retryQueue[0].reason;
},
cancelAll: function () {
while (service.hasMore()) {
retryQueue.shift().cancel();
}
retryUser = null;
},
retryAll: function (userName) {
if (retryUser == null) {
return;
}
if (retryUser !== userName) {
service.cancelAll();
return;
}
while (service.hasMore()) {
retryQueue.shift().retry();
}
}
};
return service;
}
});
},
pushRetryFn: function(reason, userName, retryFn) {
// The reason parameter is optional
if ( arguments.length === 2) {
retryFn = userName;
userName = reason;
reason = undefined;
}
if ((retryUser && retryUser !== userName) || userName === null) {
throw new Error('invalid user');
}
retryUser = userName;
// The deferred object that will be resolved or rejected by calling retry or cancel
var deferred = $q.defer();
var retryItem = {
reason: reason,
retry: function() {
// Wrap the result of the retryFn into a promise if it is not already
$q.when(retryFn()).then(function(value) {
// If it was successful then resolve our deferred
deferred.resolve(value);
}, function(value) {
// Othewise reject it
deferred.reject(value);
});
},
cancel: function() {
// Give up on retrying and reject our deferred
deferred.reject();
}
};
service.push(retryItem);
return deferred.promise;
},
retryReason: function() {
return service.hasMore() && retryQueue[0].reason;
},
cancelAll: function() {
while(service.hasMore()) {
retryQueue.shift().cancel();
}
retryUser = null;
},
retryAll: function (userName) {
if (retryUser == null) {
return;
}
if (retryUser !== userName) {
service.cancelAll();
return;
}
while(service.hasMore()) {
retryQueue.shift().retry();
}
}
};
return service;
}]);
angular.module('umbraco.security.interceptor')
// This http interceptor listens for authentication successes and failures
.factory('securityInterceptor', ['$injector', 'securityRetryQueue', 'notificationsService', 'requestInterceptorFilter', function ($injector, queue, notifications, requestInterceptorFilter) {
return function(promise) {
return promise.then(
function(originalResponse) {
]);
angular.module('umbraco.security.interceptor') // This http interceptor listens for authentication successes and failures
.factory('securityInterceptor', [
'$injector',
'securityRetryQueue',
'notificationsService',
'eventsService',
'requestInterceptorFilter',
function ($injector, queue, notifications, eventsService, requestInterceptorFilter) {
return function (promise) {
return promise.then(function (originalResponse) {
// Intercept successful requests
//Here we'll check if our custom header is in the response which indicates how many seconds the user's session has before it
//expires. Then we'll update the user in the user service accordingly.
var headers = originalResponse.headers();
if (headers["x-umb-user-seconds"]) {
if (headers['x-umb-user-seconds']) {
// We must use $injector to get the $http service to prevent circular dependency
var userService = $injector.get('userService');
userService.setUserTimeout(headers["x-umb-user-seconds"]);
userService.setUserTimeout(headers['x-umb-user-seconds']);
}
//this checks if the user's values have changed, in which case we need to update the user details throughout
//the back office similar to how we do when a user logs in
if (headers['x-umb-user-modified']) {
eventsService.emit('app.userRefresh');
}
return promise;
}, function(originalResponse) {
}, function (originalResponse) {
// Intercept failed requests
//Here we'll check if we should ignore the error, this will be based on an original header set
var headers = originalResponse.config ? originalResponse.config.headers : {};
if (headers["x-umb-ignore-error"] === "ignore") {
// Make sure we have the configuration of the request (don't we always?)
var config = originalResponse.config ? originalResponse.config : {};
// Make sure we have an object for the headers of the request
var headers = config.headers ? config.headers : {};
//Here we'll check if we should ignore the error (either based on the original header set or the request configuration)
if (headers['x-umb-ignore-error'] === 'ignore' || config.umbIgnoreErrors === true || angular.isArray(config.umbIgnoreStatus) && config.umbIgnoreStatus.indexOf(originalResponse.status) !== -1) {
//exit/ignore
return promise;
}
var filtered = _.find(requestInterceptorFilter(), function(val) {
return originalResponse.config.url.indexOf(val) > 0;
var filtered = _.find(requestInterceptorFilter(), function (val) {
return config.url.indexOf(val) > 0;
});
if (filtered) {
return promise;
}
//A 401 means that the user is not logged in
if (originalResponse.status === 401) {
var userService = $injector.get('userService'); // see above
//Associate the user name with the retry to ensure we retry for the right user
promise = userService.getCurrentUser()
.then(function (user) {
var userName = user ? user.name : null;
//The request bounced because it was not authorized - add a new request to the retry queue
return queue.pushRetryFn('unauthorized-server', userName, function retryRequest() {
// We must use $injector to get the $http service to prevent circular dependency
return $injector.get('$http')(originalResponse.config);
});
if (originalResponse.status === 401 && !originalResponse.config.url.endsWith('umbraco/backoffice/UmbracoApi/Authentication/GetCurrentUser')) {
var userService = $injector.get('userService');
// see above
//Associate the user name with the retry to ensure we retry for the right user
promise = userService.getCurrentUser().then(function (user) {
var userName = user ? user.name : null;
//The request bounced because it was not authorized - add a new request to the retry queue
return queue.pushRetryFn('unauthorized-server', userName, function retryRequest() {
// We must use $injector to get the $http service to prevent circular dependency
return $injector.get('$http')(originalResponse.config);
});
});
}
else if (originalResponse.status === 404) {
} else if (originalResponse.status === 404) {
//a 404 indicates that the request was not found - this could be due to a non existing url, or it could
//be due to accessing a url with a parameter that doesn't exist, either way we should notifiy the user about it
var errMsg = "The URL returned a 404 (not found): <br/><i>" + originalResponse.config.url.split('?')[0] + "</i>";
var errMsg = 'The URL returned a 404 (not found): <br/><i>' + originalResponse.config.url.split('?')[0] + '</i>';
if (originalResponse.data && originalResponse.data.ExceptionMessage) {
errMsg += "<br/> with error: <br/><i>" + originalResponse.data.ExceptionMessage + "</i>";
errMsg += '<br/> with error: <br/><i>' + originalResponse.data.ExceptionMessage + '</i>';
}
if (originalResponse.config.data) {
errMsg += "<br/> with data: <br/><i>" + angular.toJson(originalResponse.config.data) + "</i><br/>Contact your administrator for information.";
errMsg += '<br/> with data: <br/><i>' + angular.toJson(originalResponse.config.data) + '</i><br/>Contact your administrator for information.';
}
notifications.error(
"Request error",
errMsg);
}
else if (originalResponse.status === 403) {
notifications.error('Request error', errMsg);
} else if (originalResponse.status === 403) {
//if the status was a 403 it means the user didn't have permission to do what the request was trying to do.
//How do we deal with this now, need to tell the user somehow that they don't have permission to do the thing that was
//requested. We can either deal with this globally here, or we can deal with it globally for individual requests on the umbRequestHelper,
// or completely custom for services calling resources.
//http://issues.umbraco.org/issue/U4-2749
//It was decided to just put these messages into the normal status messages.
var msg = "Unauthorized access to URL: <br/><i>" + originalResponse.config.url.split('?')[0] + "</i>";
var msg = 'Unauthorized access to URL: <br/><i>' + originalResponse.config.url.split('?')[0] + '</i>';
if (originalResponse.config.data) {
msg += "<br/> with data: <br/><i>" + angular.toJson(originalResponse.config.data) + "</i><br/>Contact your administrator for information.";
msg += '<br/> with data: <br/><i>' + angular.toJson(originalResponse.config.data) + '</i><br/>Contact your administrator for information.';
}
notifications.error(
"Authorization error",
msg);
notifications.error('Authorization error', msg);
}
return promise;
});
};
}
]) //used to set headers on all requests where necessary
.factory('umbracoRequestInterceptor', function ($q, queryStrings) {
return {
//dealing with requests:
'request': function (config) {
if (queryStrings.getParams().umbDebug === 'true' || queryStrings.getParams().umbdebug === 'true') {
config.headers['X-UMB-DEBUG'] = 'true';
}
return config;
}
};
}])
.value('requestInterceptorFilter', function() {
return ["www.gravatar.com"];
})
// We have to add the interceptor to the queue as a string because the interceptor depends upon service instances that are not available in the config block.
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.responseInterceptors.push('securityInterceptor');
}]);
})();
}).value('requestInterceptorFilter', function () {
return ['www.gravatar.com'];
}) // We have to add the interceptor to the queue as a string because the interceptor depends upon service instances that are not available in the config block.
.config([
'$httpProvider',
function ($httpProvider) {
$httpProvider.defaults.xsrfHeaderName = 'X-UMB-XSRF-TOKEN';
$httpProvider.defaults.xsrfCookieName = 'UMB-XSRF-TOKEN';
$httpProvider.responseInterceptors.push('securityInterceptor');
$httpProvider.interceptors.push('umbracoRequestInterceptor');
}
]);
}());
File diff suppressed because it is too large Load Diff
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlCustom="private" cacheControlMode="UseMaxAge" cacheControlMaxAge="3.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
@@ -1,24 +1,25 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
This snippet makes a breadcrumb of parents using an unordered html list.
This snippet makes a breadcrumb of parents using an unordered HTML list.
How it works:
- It uses the Ancestors() method to get all parents and then generates links so the visitor can go back
- Finally it outputs the name of the current page (without a link)
*@
@{ var selection = CurrentPage.Ancestors(); }
@{ var selection = Model.Content.Ancestors().ToArray(); }
@if (selection.Any())
@if (selection.Length > 0)
{
<ul class="breadcrumb">
@* For each page in the ancestors collection which have been ordered by Level (so we start with the highest top node first) *@
@foreach (var item in selection.OrderBy("Level"))
@foreach (var item in selection.OrderBy(x => x.Level))
{
<li><a href="@item.Url">@item.Name</a> <span class="divider">/</span></li>
}
@* Display the current page as the last item in the list *@
<li class="active">@CurrentPage.Name</li>
<li class="active">@Model.Content.Name</li>
</ul>
}
@@ -1,50 +1,47 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
Macro to display a gallery of images from media the media section.
Macro to display a gallery of images from the Media section.
Works with either a 'Single Media Picker' or a 'Multiple Media Picker' macro parameter (see below).
How it works:
- Confirm the macro parameter has been passed in with a value
- Loop through all the media Id's passed in (might be a single item, might be many)
- Loop through all the media Ids passed in (might be a single item, might be many)
- Display any individual images, as well as any folders of images
Macro Parameters To Create, for this macro to work:
Alias:mediaIds Name:Select folders and/or images Type: Multiple Media Picker
Type: (note: you can use a Single Media Picker if that's more appropriate to your needs)
Type: (note: You can use a Single Media Picker if that's more appropriate to your needs)
*@
@{ var mediaIds = Model.MacroParameters["mediaIds"]; }
@{ var mediaIds = Model.MacroParameters["mediaIds"] as string; }
@if (mediaIds != null)
{
<ul class="thumbnails">
@foreach (var mediaId in mediaIds.ToString().Split(','))
<div class="row">
@foreach (var mediaId in mediaIds.Split(','))
{
var media = Umbraco.Media(mediaId);
var media = Umbraco.TypedMedia(mediaId);
@* a single image *@
if (media.DocumentTypeAlias == "Image")
{
@Render(media);
@Render(media as Image);
}
@* a folder with images under it *@
if (media.Children("Image").Any())
foreach (var image in media.Children<Image>())
{
foreach (var image in media.Children("Image"))
{
@Render(image);
}
@Render(image);
}
}
</ul>
</div>
}
@helper Render(dynamic item)
@helper Render(Image item)
{
<li class="span2">
<a href="@item.umbracoFile.src" class="thumbnail">
<img src="@item.umbracoFile.src" alt="@item.Name" />
<div class="col-xs-6 col-md-3">
<a href="@item.Url" class="thumbnail">
<img src="@item.GetCropUrl(width:200, height:200)" alt="@item.Name" />
</a>
</li>
</div>
}
@@ -1,24 +1,25 @@
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
This snippet makes a list of links to the of parents of the current page using an unordered html list.
This snippet makes a list of links to the of parents of the current page using an unordered HTML list.
How it works:
- It uses the Ancestors() method to get all parents and then generates links so the visitor can go back
- Finally it outputs the name of the current page (without a link)
*@
@{ var selection = CurrentPage.Ancestors(); }
@{ var selection = Model.Content.Ancestors().ToArray(); }
@if (selection.Any())
@if (selection.Length > 0)
{
<ul>
@* For each page in the ancestors collection which have been ordered by Level (so we start with the highest top node first) *@
@foreach (var item in selection.OrderBy("Level"))
@foreach (var item in selection.OrderBy(x => x.Level))
{
<li><a href="@item.Url">@item.Name</a> &raquo;</li>
}
@* Display the current page as the last item in the list *@
<li>@CurrentPage.Name</li>
<li>@Model.Content.Name</li>
</ul>
}
@@ -1,3 +1,4 @@
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
@@ -13,20 +14,19 @@
*@
@{ var startNodeId = Model.MacroParameters["startNodeId"]; }
@if (startNodeId != null)
{
@* Get the starting page *@
var startNode = Umbraco.Content(startNodeId);
var selection = startNode.Children.Where("Visible");
var startNode = Umbraco.TypedContent(startNodeId);
var selection = startNode.Children.Where(x => x.IsVisible()).ToArray();
if (selection.Any())
if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li>
<a href="@item.Url">@item.Name</a>
</li>
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
}
@@ -1,8 +1,17 @@
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{ var selection = CurrentPage.Children.Where("Visible"); }
@*
This snippet makes a list of links to the of children of the current page using an unordered HTML list.
@if (selection.Any())
How it works:
- It uses the Children method to get all child pages
- It then generates links so the visitor can go to each page
*@
@{ var selection = Model.Content.Children.Where(x => x.IsVisible()).ToArray(); }
@if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
@@ -1,11 +1,23 @@
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{ var selection = CurrentPage.Children.Where("Visible").OrderBy("CreateDate desc"); }
@* OrderBy() takes the property to sort by and optionally order desc/asc *@
@*
This snippet makes a list of links to the of children of the current page using an unordered HTML list.
<ul>
@foreach (var item in selection)
{
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
How it works:
- It uses the Children method to get all child pages
- It then uses the OrderByDescending() method, which takes the property to sort. In this case the page's creation date.
- It then generates links so the visitor can go to each page
*@
@{ var selection = Model.Content.Children.Where(x => x.IsVisible()).OrderByDescending(x => x.CreateDate).ToArray(); }
@if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
}
@@ -1,11 +1,23 @@
@using Umbraco.Web
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{ var selection = CurrentPage.Children.Where("Visible").OrderBy("Name"); }
@* OrderBy() takes the property to sort by *@
@*
This snippet makes a list of links to the of children of the current page using an unordered HTML list.
<ul>
@foreach (var item in selection)
{
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
How it works:
- It uses the Children method to get all child pages
- It then uses the OrderBy() method, which takes the property to sort. In this case, the page's name.
- It then generates links so the visitor can go to each page
*@
@{ var selection = Model.Content.Children.Where(x => x.IsVisible()).OrderBy(x => x.Name).ToArray(); }
@if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
}
@@ -1,3 +1,4 @@
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
@@ -15,12 +16,15 @@
@{ var propertyAlias = Model.MacroParameters["propertyAlias"]; }
@if (propertyAlias != null)
{
var selection = CurrentPage.Children.Where("Visible").OrderBy(propertyAlias);
var selection = Model.Content.Children.Where(x => x.IsVisible()).OrderBy(x => x.GetPropertyValue(propertyAlias.ToString())).ToArray();
<ul>
@foreach (var item in selection)
{
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li><a href="@item.Url">@item.Name</a></li>
}
</ul>
}
}
@@ -1,19 +1,17 @@
@using Umbraco.Core.Models
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
This snippet shows how simple it is to fetch only children of a certain Document Type using Razor.
Be sure to change "DocumentTypeAlias" below to match your needs, such as "TextPage" or "NewsItems".
This snippet shows how simple it is to fetch only children of a certain Document Type.
Be sure to change "IPublishedContent" below to match your needs, such as "TextPage" or "NewsItem".
(You can find the alias of your Document Type by editing it in the Settings section)
*@
@{ var selection = CurrentPage.Children("DocumentTypeAlias").Where("Visible"); }
@*
As an example of more querying, if you have a true/false property with the alias of shouldBeFeatured:
var selection= CurrentPage.Children("DocumentTypeAlias").Where("shouldBeFeatured == true").Where("Visible");
*@
@{ var selection = Model.Content.Children<IPublishedContent>().Where(x => x.IsVisible()).ToArray(); }
@if (selection.Any())
@if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
@@ -1,31 +1,36 @@
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using Umbraco.Core.Models
@using Umbraco.Web
@*
This snippet creates links for every single page (no matter how deep) below
the page currently being viewed by the website visitor, displayed as nested unordered html lists.
the page currently being viewed by the website visitor, displayed as nested unordered HTML lists.
*@
@{ var selection = CurrentPage.Children.Where("Visible"); }
@{ var selection = Model.Content.Children.Where(x => x.IsVisible()).ToArray(); }
@* Ensure that the Current Page has children *@
@if (selection.Any())
@if (selection.Length > 0)
{
@* Get the first page in the children, where the property umbracoNaviHide is not True *@
var naviLevel = CurrentPage.FirstChild().Where("Visible").Level;
var naviLevel = selection[0].Level;
@* Add in level for a CSS hook *@
<ul class="level-@naviLevel">
@* For each child page where the property umbracoNaviHide is not True *@
<ul class="level-@(naviLevel)">
@* Loop through the selection *@
@foreach (var item in selection)
{
<li>
<a href="@item.Url">@item.Name</a>
@* if this child page has any children, where the property umbracoNaviHide is not True *@
@if (item.Children.Where("Visible").Any())
{
@* Call our helper to display the children *@
@childPages(item.Children)
@{
var children = item.Children.Where(x => x.IsVisible()).ToArray();
if (children.Length > 0)
{
@* Call our helper to display the children *@
@ChildPages(children)
}
}
</li>
}
@@ -33,26 +38,29 @@
}
@helper childPages(dynamic selection)
@helper ChildPages(IPublishedContent[] selection)
{
@* Ensure that we have a collection of pages *@
if (selection.Any())
if (selection.Length > 0)
{
@* Get the first page in pages and get the level *@
var naviLevel = selection.First().Level;
@* Get the first page in pages and get the level *@
var naviLevel = selection[0].Level;
@* Add in level for a CSS hook *@
@* Add in level for a CSS hook *@
<ul class="level-@(naviLevel)">
@foreach (var item in selection.Where("Visible"))
@foreach (var item in selection)
{
<li>
<a href="@item.Url">@item.Name</a>
@* if the this page has any children, where the property umbracoNaviHide is not True *@
@if (item.Children.Where("Visible").Any())
{
@* Call our helper to display the children *@
@childPages(item.Children)
@* if the page has any children, where the property umbracoNaviHide is not True *@
@{
var children = item.Children.Where(x => x.IsVisible()).ToArray();
if (children.Length > 0)
{
@* Recurse and call our helper to display the children *@
@ChildPages(children)
}
}
</li>
}
@@ -5,7 +5,7 @@
How it works:
- Confirm the macro parameter has been passed in with a value
- Loop through all the media Id's passed in (might be a single item, might be many)
- Loop through all the media Ids passed in (might be a single item, might be many)
- Display any individual images, as well as any folders of images
Macro Parameters To Create, for this macro to work:
@@ -15,17 +15,17 @@
@{ var mediaId = Model.MacroParameters["mediaId"]; }
@if (mediaId != null)
{
@* Get all the media item associated with the id passed in *@
var media = Umbraco.Media(mediaId);
var selection = media.Children("Image");
@* Get the media item associated with the id passed in *@
var media = Umbraco.TypedMedia(mediaId);
var selection = media.Children<Image>().ToArray();
if (selection.Any())
if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li>
<img src="@item.umbracoFile" alt="@item.Name" />
<img src="@item.Url" alt="@item.Name" />
</li>
}
</ul>
@@ -1,21 +1,25 @@
@using Umbraco.Core.Models
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
This snippet lists the items from a Multinode tree picker, using the pickers default settings.
Content Values stored as xml.
This snippet lists the items from a Multinode tree picker, using the picker's default settings.
Content Values stored as XML.
To get it working with any site's data structure, set the selection equal to the property which has the
multinode treepicker (so: replace "PropertyWithPicker" with the alias of your property).
*@
@{ var selection = CurrentPage.PropertyWithPicker.Split(','); }
@{ var selection = Model.Content.GetPropertyValue<IEnumerable<IPublishedContent>>("PropertyWithPicker").ToArray(); }
<ul>
@foreach (var id in selection)
{
var item = Umbraco.Content(id);
<li>
<a href="@item.Url">@item.Name</a>
</li>
}
</ul>
@if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li>
<a href="@item.Url">@item.Name</a>
</li>
}
</ul>
}
@@ -1,18 +1,22 @@
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
This snippet displays a list of links of the pages immediately under the top-most page in the content tree.
This is the home page for a standard website.
It also highlights the current active page/section in the navigation with the css class "current".
It also highlights the current active page/section in the navigation with the CSS class "current".
*@
@{ var selection = CurrentPage.Site().Children.Where("Visible"); }
@{ var selection = Model.Content.Site().Children.Where(x => x.IsVisible()).ToArray(); }
<ul>
@foreach (var item in selection)
{
<li class="@(item.IsAncestorOrSelf(CurrentPage) ? "current" : null)">
<a href="@item.Url">@item.Name</a>
</li>
}
</ul>
@if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
{
<li class="@(item.IsAncestorOrSelf(Model.Content) ? "current" : null)">
<a href="@item.Url">@item.Name</a>
</li>
}
</ul>
}
@@ -47,7 +47,7 @@
@if (success)
{
@* This message will show if RedirectOnSucces is set to false (default) *@
<p>Registration succeeeded.</p>
<p>Registration succeeded.</p>
}
else
{
@@ -101,4 +101,4 @@ else
<button>Register</button>
</fieldset>
}
}
}
@@ -1,13 +1,15 @@
@using Umbraco.Core.Models
@using Umbraco.Web
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
This snippet makes a list of links of all visible pages of the site, as nested unordered html lists.
This snippet makes a list of links of all visible pages of the site, as nested unordered HTML lists.
How it works:
- It uses a custom Razor helper called Traverse() to select and display the markup and links.
*@
@{ var selection = CurrentPage.Site(); }
@{ var selection = Model.Content.Site(); }
<div class="sitemap">
@* Render the sitemap by passing the root node to the traverse helper, below *@
@@ -15,17 +17,17 @@
</div>
@* Helper method to travers through all descendants *@
@helper Traverse(dynamic node)
@* Helper method to traverse through all descendants *@
@helper Traverse(IPublishedContent node)
{
@* Update the level to reflect how deep you want the sitemap to go *@
var maxLevelForSitemap = 4;
const int maxLevelForSitemap = 4;
@* Select visible children *@
var selection = node.Children.Where("Visible").Where("Level <= " + maxLevelForSitemap);
var selection = node.Children.Where(x => x.IsVisible() && x.Level <= maxLevelForSitemap).ToArray();
@* If any items are returned, render a list *@
if (selection.Any())
if (selection.Length > 0)
{
<ul>
@foreach (var item in selection)
+1 -1
View File
@@ -16,7 +16,7 @@
<cc1:Pane ID="pane_uploadFile" runat="server" Text="Upload translation file">
<p>
When you have completed the translation. Upload the edited XML file here. The related translation tasks will automaticly be closed when a file is uploaded.
When you have completed the translation. Upload the edited XML file here. The related translation tasks will automatically be closed when a file is uploaded.
</p>
<cc1:PropertyPanel runat="server">
+54 -42
View File
@@ -1,19 +1,10 @@
@using System.Collections
@using System.Net.Http
@using System.Web.Mvc.Html
@using Umbraco.Core
@using Umbraco.Core
@using ClientDependency.Core
@using ClientDependency.Core.Mvc
@using Microsoft.Owin.Security
@using Newtonsoft.Json
@using Newtonsoft.Json.Linq
@using Umbraco.Core.IO
@using Umbraco.Web
@using Umbraco.Web.Editors
@using umbraco
@inherits System.Web.Mvc.WebViewPage
@{
var isDebug = false;
if (Request.RawUrl.IndexOf('?') >= 0)
@@ -32,9 +23,7 @@
.RequiresCss("lib/bootstrap-social/bootstrap-social.css", "Umbraco")
.RequiresCss("lib/font-awesome/css/font-awesome.min.css", "Umbraco");
}
<!DOCTYPE html>
<html lang="en">
<head>
<base href="@GlobalSettings.Path.EnsureEndsWith('/')" />
@@ -43,49 +32,55 @@
<meta name="apple-mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="robots" content="noindex, nofollow">
<meta name="pinterest" content="nopin" />
<title ng-bind="$root.locationTitle">Umbraco</title>
@Html.RenderCssHere(
new BasicPath("Umbraco", IOHelper.ResolveUrl(SystemDirectories.Umbraco)),
new BasicPath("UmbracoClient", IOHelper.ResolveUrl(SystemDirectories.UmbracoClient)))
</head>
<noscript><h5><strong>&nbsp; JavaScript is disabled. Please enable to continue!</strong></h5></noscript>
<body ng-class="{touch:touchDevice,emptySection:emptySection}" ng-controller="Umbraco.MainController" id="umbracoMainPageBody">
<div ng-hide="!authenticated" ng-cloak id="mainwrapper" class="clearfix" ng-click="closeDialogs($event)">
<body ng-class="{'touch':touchDevice, 'emptySection':emptySection, 'umb-drawer-is-visible':drawer.show}" ng-controller="Umbraco.MainController" id="umbracoMainPageBody">
<umb-navigation></umb-navigation>
<div ng-hide="!authenticated" ng-cloak>
<section id="contentwrapper">
<div id="contentcolumn" ng-view>
</div>
</section>
<!-- help dialog controller by the help button - this also forces the backoffice UI to shift 400px -->
<umb-drawer data-element="drawer" ng-if="drawer.show" model="drawer.model" view="drawer.view"></umb-drawer>
<umb-notifications></umb-notifications>
<div id="mainwrapper" class="clearfix" ng-click="closeDialogs($event)">
<umb-navigation></umb-navigation>
<section id="contentwrapper">
<div id="contentcolumn" ng-view>
<noscript>
<div>
<h3><img src="assets/img/application/logo.png" alt="Umbraco logo" style="vertical-align: text-bottom;" /> Umbraco</h3>
<p>For full functionality of Umbraco CMS it is necessary to enable JavaScript.</p>
<p>Here are the <a href="https://www.enable-javascript.com/" target="_blank" style="text-decoration: underline;">instructions how to enable JavaScript in your web browser</a>.</p>
</div>
</noscript>
</div>
</section>
<umb-tour
ng-if="tour.show"
model="tour">
</umb-tour>
<umb-notifications></umb-notifications>
</div>
</div>
@Html.BareMinimumServerVariablesScript(Url, Url.Action("ExternalLogin", "BackOffice", new { area = ViewBag.UmbracoPath }))
<script type="text/javascript">
document.angularReady = function(app) {
@Html.AngularValueExternalLoginInfoScript((IEnumerable<string>)ViewBag.ExternalSignInError)
@Html.AngularValueResetPasswordCodeInfoScript(ViewData["PasswordResetCode"])
}
</script>
@*And finally we can load in our angular app*@
<script type="text/javascript" src="lib/rgrove-lazyload/lazyload.js"></script>
<script type="text/javascript" src="@Url.GetUrlWithCacheBust("Application", "BackOffice")"></script>
@if (isDebug)
{
@Html.RenderProfiler()
}
<umb-backdrop
ng-if="backdrop.show"
backdrop-opacity="backdrop.opacity"
highlight-element="backdrop.element"
highlight-prevent-click="backdrop.elementPreventClick"
disable-events-on-click="backdrop.disableEventsOnClick">
</umb-backdrop>
<umb-overlay
ng-if="ysodOverlay.show"
@@ -94,5 +89,22 @@
view="ysodOverlay.view">
</umb-overlay>
@Html.BareMinimumServerVariablesScript(Url, ApplicationContext.Current, Url.Action("ExternalLogin", "BackOffice", new { area = ViewBag.UmbracoPath }))
<script>
document.angularReady = function(app) {
@Html.AngularValueExternalLoginInfoScript((IEnumerable<string>)ViewBag.ExternalSignInError)
@Html.AngularValueResetPasswordCodeInfoScript(ViewData["PasswordResetCode"])
}
</script>
<script src="lib/rgrove-lazyload/lazyload.js"></script>
<script src="@Url.GetUrlWithCacheBust("Application", "BackOffice")"></script>
@if (isDebug)
{
<script src="lib/jquery/jquery.min.js"></script>
@Html.RenderProfiler()
}
</body>
</html>
@@ -0,0 +1,57 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.background">
<div class="box-slider">
<div colorpicker ng-model="item.values.color"></div>
</div>
<div class="box-slider">
<div class="imagePickerPreview" ng-click="open(item.values)" style="background-image:{{ item.values.imageorpattern }}">
<i ng-if="item.values.imageorpattern == ''" class="icon icon-picture"></i>
<i ng-if="item.values.imageorpattern != ''" class="icon icon-delete" ng-click="item.values.imageorpattern = ''"></i>
</div>
</div>
</div>
<script type="text/ng-template" id="mediaPickerModal.html">
<div ng-controller="canvasdesigner.mediaPickerModal">
<div class="modal-header bodyCanvasdesignerImagePicker ng-scope">
<ul class="breadcrumb">
<li ng-if="startNodeId == -1">
<a href="" ng-click="gotoFolder()">Media</a>
</li>
<!-- ngRepeat: item in path -->
<li ng-repeat="item in currentPath" class="ng-scope">
/ <a ng-if="currentFolder.id == item.id" href="" ng-class="{disabled:currentFolder.id == item.id}">{{ item.name }}</a>
<a ng-if="currentFolder.id != item.id" ng-click="gotoFolder(item)">{{ item.name }}</a>
</li>
</ul>
</div>
<div class="modal-body bodyCanvasdesignerImagePicker">
<ul class="canvasdesignerImagePicker">
<li>
<ul class="media-items">
<li ng-repeat="child in currentFolder.children | orderBy:'isFolder':true">
<div ng-if="!child.isFolder" class="media-preview" ng-class="{selected:selectedMedia.id == child.id}" ng-click="selectMedia(child)" style="background-image: url({{ child.thumbnail }})"></div>
<div ng-if="child.isFolder" class="media-preview" ng-click="selectMedia(child)">
<i class="icon icon-folder folder"><p class="folder-name">{{child.name}}</p></i>
</div>
</li>
</ul>
</li>
</ul>
</div>
<div class="right">
<a class="btn" href="#" ng-click="cancelAndClose()">Cancel</a>
<a class="btn btn-success" href="#" ng-click="submitAndClose()">Done</a>
</div>
</div>
</script>
@@ -0,0 +1,20 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.border" class="bordereditor">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="border in borderList" class="border-{{border}}" ng-class="{selected: selectedBorder.name == border}" ng-click="setselectedBorder(border)"></li>
</ul>
</div>
<div class="box-slider" ng-repeat="border in borderList" ng-show="selectedBorder.name == border">
<div colorpicker ng-model="item.values[(border !== 'all' ? border : '') + 'bordercolor']"></div>
<select class="borderStyleSelect" ng-model="selectedBorder.type" ng-options="bordertype for bordertype in bordertypes"></select>
<!--<i ng-if="selectedBorder.color != ''" ng-click="selectedBorder.color= ''" class="icon icon-delete colorPickerDelete"></i>-->
</div>
<div class="box-slider">
<div ui-slider min="0" max="40" step="1" ng-model="selectedBorder.size"></div>
</div>
</div>
@@ -0,0 +1,4 @@
@inherits System.Web.Mvc.WebViewPage
<div class="box-slider">
<div colorpicker ng-model="item.values.color"></div>
</div>
@@ -0,0 +1,34 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.googlefontpicker">
<div class="box-slider">
<div class="fontFamilyPickerPreview" ng-click="open(item.values)" ng-style="setStyleVariant()">
<span>Aa</span>
{{ item.values.fontFamily }}
<i ng-if="item.values.fontFamily != ''" ng-click="item.values.fontFamily = ''" class="icon icon-delete fontPickerDelete"></i>
</div>
</div>
</div>
<script type="text/ng-template" id="googlefontdialog.html">
<div ng-controller="googlefontdialog.controller">
<div class="modal-header canvasdesigner-fontfamilypicker">
<select class="font-list" ng-model="selectedFont" ng-change="showFontPreview(selectedFont)" ng-options="font as font.fontFamily group by font.fontType for font in fonts"></select>
<select class="variant-list" ng-model="selectedFont.variant" ng-change="showFontPreview(selectedFont,selectedFont.variant)" ng-options="variant for variant in selectedFont.variants" />
</div>
<div class="modal-body canvasdesigner-fontfamilypicker">
<span class="show" ng-style="setStyleVariant()">Aa Bb Cc 1 2 3 4&hellip; <br />The quick brown fox jumps over the lazy dog&hellip;</span>
</div>
<div class="right">
<a class="btn" href="#" ng-click="cancelAndClose()">Cancel</a>
<a class="btn btn-success" href="#" ng-click="submitAndClose()">Done</a>
</div>
</div>
</script>
@@ -0,0 +1,8 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.gridRow">
<div class="box-slider">
<input type="checkbox" ng-model="item.values.fullsize" /><label>Full size</label>
</div>
</div>
+151
View File
@@ -0,0 +1,151 @@
@using System.Web.Mvc.Html
@inherits System.Web.Mvc.WebViewPage<Umbraco.Web.Models.ContentEditing.BackOfficePreview>
@{
var disableDevicePreview = Model.DisableDevicePreview.ToString().ToLowerInvariant();
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Umbraco Canvas Designer</title>
<link href="../assets/css/canvasdesigner.css" type="text/css" rel="stylesheet" />
<link href="../lib/spectrum/spectrum.css" type="text/css" rel="stylesheet" />
<link href="../lib/jquery-ui/jquery-ui-1.10.4.custom.min.css" type="text/css" rel="stylesheet" />
<meta name="robots" content="noindex, nofollow">
</head>
<body id="canvasdesignerPanel" ng-mouseover="outlinePositionHide()" ng-class="{ leftOpen: (showStyleEditor || showPalettePicker) && !showDevicesPreview }" ng-controller="Umbraco.canvasdesignerController">
<div class="wait" ng-show="!frameLoaded"></div>
@if (string.IsNullOrWhiteSpace(Model.PreviewExtendedHeaderView) == false)
{
@Html.Partial(Model.PreviewExtendedHeaderView)
}
<div id="demo-iframe-wrapper" ng-show="frameLoaded" class="{{previewDevice.css}}">
<iframe id="resultFrame" ng-src="{{pageUrl}}" frameborder="0" iframe-is-loaded></iframe>
</div>
<div class="canvasdesigner" ng-init="showDevicesPreview = true; showDevices = !@(disableDevicePreview); showPalettePicker = true" ng-mouseenter="positionSelectedHide()">
<div class="fix-left-menu selected">
<div class="avatar">
<img ng-src="../assets/img/application/logo.png"
ng-srcset="../assets/img/application/logo@2x.png 2x,
../assets/img/application/logo@3x.png 3x" />
</div>
<ul class="sections" ng-class="{selected: showDevicesPreview && showDevices}">
<li ng-repeat="device in devices" ng-class="{ current:previewDevice==device }" ng-click="updatePreviewDevice(device)">
<a href="#"><i class="icon {{device.icon}}" title="{{device.title}}"></i><span></span></a>
</li>
<li ng-click="closePreviewDevice()" ng-if="enableCanvasdesigner > 0">
<a href="" class="more-options">
<i></i>
<i></i>
<i></i>
</a>
</li>
<li ng-click="exitPreview()">
<a href="#" title="Exit Preview"><i class="icon icon-wrong"></i><span> </span></a>
</li>
</ul>
<ul class="sections" ng-class="{selected: !showDevicesPreview}" ng-if="enableCanvasdesigner > 0">
<li ng-click="openPreviewDevice()">
<a href="#"><i class="icon {{previewDevice.icon}}"></i><span>Preview</span></a>
</li>
<li ng-click="openPalettePicker()" ng-class=" { current:showPalettePicker }">
<a href="#"><i class="icon icon-palette"></i><span>Palette</span></a>
</li>
<li ng-click="openStyleEditor()" ng-class=" { current:showStyleEditor }">
<a href="#"><i class="icon icon-paint-roller"></i><span>UI Designer</span></a>
</li>
</ul>
</div>
<div class="main-panel" ng-class="{selected: !showDevicesPreview && ( showPalettePicker || showStyleEditor )}">
<div class="header">
<h3>Palette Style</h3>
</div>
<div class="content">
<ul class="samples">
<li ng-repeat="palette in canvasdesignerPalette">
<a href="#" ng-click="refreshCanvasdesignerByPalette(palette)">
<h4>{{palette.name}}</h4>
<ul class="samples">
<li style="background-color:{{palette.color1}}"></li>
<li style="background-color:{{palette.color2}}"></li>
<li style="background-color:{{palette.color3}}"></li>
<li style="background-color:{{palette.color4}}"></li>
<li style="background-color:{{palette.color5}}"></li>
</ul>
</a>
</li>
</ul>
</div>
<div class="btn-group">
<a class="btn btn-success" ng-click="saveStyle()">Save Style</a>
<a class="btn btn-success dropdown-toggle" ng-click="opendropdown = !opendropdown">
<span class="caret"></span>
</a>
<ul class="dropdown-menu" ng-init="opendropdown = false" ng-show="opendropdown">
<li><a ng-click="createStyle();opendropdown = false">Create Page Style</a></li>
<li><a ng-click="deleteCanvasdesigner();opendropdown = false">Reset page style</a></li>
<li><a ng-click="makePreset();opendropdown = false">Make preset</a></li>
</ul>
</div>
</div>
<div class="main-panel" ng-class="{selected: !showDevicesPreview && showStyleEditor}">
<div ng-show="!currentSelected">
<div class="header">
<h3>Select</h3>
</div>
<div class="content">
<ul class="samples">
<li ng-repeat="configItem in canvasdesignerModel.configs"
ng-mousemove="refreshOutlinePosition(configItem)"
ng-class="{hover: configItem.highlighted == true}"
ng-mouseenter="setCurrentHighlighted(configItem)"
ng-mouseleave="configItem.highlighted = false"
ng-click="setCurrentSelected(configItem)">
{{configItem.name}}
</li>
</ul>
</div>
</div>
<div ng-repeat="configItem in canvasdesignerModel.configs" ng-show="currentSelected && currentSelected.name.toLowerCase() == configItem.name.toLowerCase()
&& currentSelected.schema.toLowerCase() == configItem.schema.toLowerCase()" on-finish-render-filters>
<div class="header">
<h3><i class="icon icon-list" ng-click="outlineSelectedHide()"></i> {{configItem.name}}</h3>
</div>
<div class="content">
<div class="editor-category" ng-repeat="category in getCategories(configItem)" ng-show="hasEditor(configItem.editors, category)">
<h4 class="panel-title" ng-click="setSelectedCategory(category)">
{{category}}
<i class="icon icon-remove small right" ng-show="categoriesVisibility[category] === true"></i>
<i class="icon icon-add small right" ng-hide="categoriesVisibility[category] === true"></i>
</h4>
<div class="canvasdesigner-panel-container" ng-show="categoriesVisibility[category] === true">
<div class="canvasdesigner-panel-property" ng-repeat="item in configItem.editors" ng-show="item.category == category">
<h5>{{item.name}} <i class="icon icon-help-alt"></i></h5>
<div ng-include="'../preview/editors/' + item.type + '.html'"></div>
</div>
</div>
</div>
</div>
</div>
<div class="btn-group">
<a class="btn btn-success" ng-click="saveStyle()">Save Style</a>
<a class="btn btn-success dropdown-toggle" ng-click="opendropdown = !opendropdown">
<span class="caret"></span>
</a>
<ul class="dropdown-menu" ng-init="opendropdown = false" ng-show="opendropdown">
<li><a ng-click="createStyle();opendropdown = false">Create Page Style</a></li>
<li><a ng-click="deleteCanvasdesigner();opendropdown = false">Reset page style</a></li>
<li><a ng-click="makePreset();opendropdown = false">Make preset</a></li>
</ul>
</div>
</div>
<div class="float-panel"></div>
</div>
<div id="speechbubble">
<p>Styles saved and published</p>
</div>
<script src="../lib/rgrove-lazyload/lazyload.js"></script>
<script src="../js/canvasdesigner.loader.js"></script>
</body>
</html>
@@ -0,0 +1,10 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.layout">
<div class="box-slider">
<input type="radio" ng-model="item.values.layout" value="box"> Box
<input type="radio" ng-model="item.values.layout" value="wide"> Wide
<input type="radio" ng-model="item.values.layout" value="full"> Full
</div>
</div>
@@ -0,0 +1,14 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.margin">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="margin in marginList" class="border-{{margin}}" ng-class="{selected: selectedmargin.name == margin}" ng-click="setSelectedmargin(margin)"></li>
</ul>
</div>
<div class="box-slider">
<div ui-slider min="0" max="400" step="1" ng-model="selectedmargin.value"></div>
</div>
</div>
@@ -0,0 +1,14 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.padding">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="padding in paddingList" class="border-{{padding}}" ng-class="{selected: selectedpadding.name == padding}" ng-click="setSelectedpadding(padding)"></li>
</ul>
</div>
<div class="box-slider">
<div ui-slider min="0" max="400" step="1" ng-model="selectedpadding.value"></div>
</div>
</div>
@@ -0,0 +1,21 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.radius">
<div class="box-slider">
<ul class="box-preview">
<li ng-repeat="radius in radiusList" ng-class="{selected: selectedradius.name == radius}" ng-click="setSelectedradius(radius)">
<span ng-show="radius == 'topleft' || radius == 'all'" class="radius-top-left"></span>
<span ng-show="radius == 'topright' || radius == 'all'" class="radius-top-right"></span>
<span ng-show="radius == 'bottomleft' || radius == 'all'" class="radius-bottom-left"></span>
<span ng-show="radius == 'bottomright' || radius == 'all'" class="radius-bottom-right"></span>
</li>
</ul>
</div>
<div class="box-slider">
<div ui-slider min="0" max="40" step="1" ng-model="selectedradius.value"></div>
</div>
</div>
@@ -0,0 +1,8 @@
@inherits System.Web.Mvc.WebViewPage
<div ng-controller="Umbraco.canvasdesigner.shadow">
<div class="box-slider">
<div ui-slider min="0" max="100" step="1" ng-model="item.values.shadow"></div>
</div>
</div>

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