diff --git a/README.md b/README.md
index 0fca3978b..8eedcc7af 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# Welcome to sensenet ECM
-The first Open Source Enterprise Content Management platform for .NET!
+The first Open Source Enterprise Content Management platform for .NET!
+
+> [Try it online](http://www.sensenet.com/try-it) without installation!
[![Join the chat at https://gitter.im/SenseNet/sensenet](https://badges.gitter.im/SenseNet/sensenet.svg)](https://gitter.im/SenseNet/sensenet?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
diff --git a/docs/cors.md b/docs/cors.md
index 43a3347e6..4b31896cc 100644
--- a/docs/cors.md
+++ b/docs/cors.md
@@ -1,3 +1,11 @@
+---
+title: "Cross-origin resource sharing"
+source_url: 'https://github.com/SenseNet/sensenet/docs/cors.md'
+category: Development
+version: v7.0
+tags: [CORS, authentication, jwt, login, origin, http headers, preflight, OData, REST]
+---
+
# Cross-origin resource sharing
[Cross-origin resource sharing](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) (CORS) is a technique that allows client-side web developers to access resources from a *different domain*. Shared JavaScript files or images are good examples for this. However cross-origin requests can also be used by hackers and malicious sites to access confidential information if a site is not protected against [Cross Site Request Forgery](http://hu.wikipedia.org/wiki/Cross-site_request_forgery) (CSRF) attacks. This is why browsers apply strict rules for these operations to prevent hackers from accessing the portal from external sites.
diff --git a/docs/install-sn-from-nuget.md b/docs/install-sn-from-nuget.md
index 22f5cc30d..b35e97f5d 100644
--- a/docs/install-sn-from-nuget.md
+++ b/docs/install-sn-from-nuget.md
@@ -53,15 +53,11 @@ This is why we decided to publish two types of packages for our components:
### Web app changes
> The install process described below is the same that you will see in the _readme.txt_ that appears in *Visual Studio* after adding the install package.
-1. Please copy the contents of the **runtime** section from your *Web.config* to the *[web]\Tools\SnAdminRuntime.exe.config* file.
-
-> See the placeholder comment at the end of SnAdminRuntime.exe.config.
-
-2. Change the *Global.asax* **markup** file's (not the cs file's) first line to contain a new parent type:
+1. Change the *Global.asax* **markup** file's (not the cs file's) first line to contain a new parent type:
`Inherits="SenseNet.Portal.Global"`
-3. Change the *Global.asax.cs* **codebehind** (the c# class):
+2. Change the *Global.asax.cs* **codebehind** (the c# class):
- the application class should inherit from **SenseNet.Services.SenseNetGlobal**
- change the *Application_Start* **method header** and call the **base method** before all generated and custom method calls:
@@ -77,7 +73,7 @@ This is why we decided to publish two types of packages for our components:
Please do not override the whole method (!), just the header, and add the base method call as seen above.
-4. Optional: update your **Razor views** (you can do this later at any time).
+3. Optional: update your **Razor views** (you can do this later at any time).
If you use the built-in *@Html.ActionLink* method to render actions (as it is the case with the default project templates), you have to replace those calls in your *.cshtml* files with a new extension method added by this package:
@@ -85,7 +81,7 @@ Please do not override the whole method (!), just the header, and add the base m
(the parameters are the same, only the method name changes)
-5. **Build your solution**, make sure that there are no build errors.
+4. **Build your solution**, make sure that there are no build errors.
### Create the database
Before installing the sensenet ECM Content Repository database, please make sure that you have access to a *SQL database server*.
diff --git a/docs/sensenet-components.md b/docs/sensenet-components.md
index d06cf06a4..0a96fc92f 100644
--- a/docs/sensenet-components.md
+++ b/docs/sensenet-components.md
@@ -11,9 +11,9 @@ This is a list of the main components we published so far. To see an expanded, c
- [Services](#Services): core layer, mother of all components, all other packages are optional.
- [WebPages](#WebPages): admin UI and built-in building blocks for WebForms enthusiasts.
-###### Feature packages (coming soon)
-- Workspaces
-- Workflows
+###### Feature packages
+- [Workspaces](#Workspaces): Workspace-related items (content types and templates, workspace dashboards and views) for sensenet ECM.
+- [Workflow](#Workflow): Windows Workflow Foundation (WWF 4.5) integration into sensenet ECM.
- Content templates
- Notification
- ...and more!
@@ -70,3 +70,11 @@ This library connects to the sensenet ECM REST API (it is compatible with SN 6.5
Speed up your development process and focus on your business logic (either in a custom import or migration tool, or a rich WPF desktop client)!
![sensenet .Net client](https://github.com/SenseNet/sn-resources/raw/master/images/sn-components/sn-components_netclient.png "sensenet .Net client")
+
+
+## Workspaces
+The [Workspaces component](https://github.com/SenseNet/sn-workspaces) is useful for document management or project-oriented scenarios. It gives you predefined workspace structures and dashboards to help organizing different types of content that are related to a project or a client in a unified environment.
+
+
+## Workflow
+Integrating **Windows Workflow Foundation (WWF 4.5)** into sensenet ECM provides many possibilities for creating content-driven workflows. The [Workflow component](https://github.com/SenseNet/sn-workflow) adds a robust and customizable workflow engine to sensenet ECM.
\ No newline at end of file
diff --git a/src/Configuration/Properties/AssemblyInfo.cs b/src/Configuration/Properties/AssemblyInfo.cs
index ee73b61d0..fe468c464 100644
--- a/src/Configuration/Properties/AssemblyInfo.cs
+++ b/src/Configuration/Properties/AssemblyInfo.cs
@@ -19,7 +19,7 @@
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
[assembly: ComVisible(false)]
[assembly: Guid("dfbdb163-d9bb-481c-b3fd-e9eb0e37d27d")]
diff --git a/src/ContentRepository/Properties/AssemblyInfo.cs b/src/ContentRepository/Properties/AssemblyInfo.cs
index c9513280c..a69d8c408 100644
--- a/src/ContentRepository/Properties/AssemblyInfo.cs
+++ b/src/ContentRepository/Properties/AssemblyInfo.cs
@@ -20,4 +20,4 @@
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
\ No newline at end of file
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Services/ApplicationModel/WebdavOpenAction.cs b/src/Services/ApplicationModel/WebdavOpenAction.cs
index 5a1e21128..7ffc38267 100644
--- a/src/Services/ApplicationModel/WebdavOpenAction.cs
+++ b/src/Services/ApplicationModel/WebdavOpenAction.cs
@@ -1,6 +1,6 @@
using System;
+using System.Collections.Generic;
using System.Linq;
-using Lucene.Net.Support;
using SenseNet.Configuration;
using SenseNet.ContentRepository;
using SenseNet.Portal.Virtualization;
@@ -88,7 +88,7 @@ public override void Initialize(Content context, string backUri, Application app
this.Forbidden = true;
}
- if (!Webdav.WebdavEditExtensions.Any(extension => context.Name.EndsWith(extension)))
+ if (!Webdav.WebdavEditExtensions.Any(extension => context.Name.EndsWith(extension, StringComparison.InvariantCultureIgnoreCase)))
this.Visible = false;
}
}
diff --git a/src/Services/OData/ODataHandler.cs b/src/Services/OData/ODataHandler.cs
index c1beb693c..dcfaa9fa4 100644
--- a/src/Services/OData/ODataHandler.cs
+++ b/src/Services/OData/ODataHandler.cs
@@ -108,11 +108,6 @@ public void ProcessRequest(HttpContext context, string httpMethod, Stream inputS
odataReq.Format = formatter.FormatName;
formatter.Initialize(odataReq);
- // Cross-Origin Resource Sharing (CORS)
- // Do this after the formatter was initialized to be able to provide a proper error message.
- if (!HttpHeaderTools.IsOriginHeaderAllowed())
- throw new ODataException(ODataExceptionCode.Forbidden);
-
var exists = Node.Exists(odataReq.RepositoryPath);
if (!exists && !odataReq.IsServiceDocumentRequest && !odataReq.IsMetadataRequest && !AllowedMethodNamesWithoutContent.Contains(httpMethod))
{
@@ -220,10 +215,6 @@ public void ProcessRequest(HttpContext context, string httpMethod, Stream inputS
content.Delete();
}
break;
- case "OPTIONS":
- // set allowed methods and headers
- HttpHeaderTools.SetPreflightResponse();
- break;
}
}
catch (ContentNotFoundException e)
diff --git a/src/Services/OData/Typescript/TypescriptClassesVisitor.cs b/src/Services/OData/Typescript/TypescriptClassesVisitor.cs
index 19c050f2c..254d3be02 100644
--- a/src/Services/OData/Typescript/TypescriptClassesVisitor.cs
+++ b/src/Services/OData/Typescript/TypescriptClassesVisitor.cs
@@ -1,9 +1,6 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using SenseNet.ContentRepository.Schema.Metadata;
namespace SenseNet.Portal.OData.Typescript
@@ -49,8 +46,7 @@ protected override IMetaNode VisitClass(Class @class)
var propertyLines = new List();
foreach (var property in visitedProperties)
{
- var required = property.Type.Required ? "" : "?";
- propertyLines.Add($"{property.Name}{required}: {GetPropertyTypeName(property)};");
+ propertyLines.Add($"{property.Name}?: {GetPropertyTypeName(property)};");
}
var type = @class.Name;
@@ -70,12 +66,10 @@ protected override IMetaNode VisitClass(Class @class)
WriteLine($" * @constructs {type}");
WriteLine($" * @param options {{object}} An object implementing {{@link I{type}Options" + "} interface");
WriteLine($" */");
- WriteLine($"constructor(options: I{type}Options, repository: IRepository) {{");
+ WriteLine($"constructor(public readonly options: I{type}Options, repository: IRepository) {{");
WriteLine($" super(options, repository);");
_indentCount++;
- foreach (var property in visitedProperties)
- WriteLine($"this.{property.Name} = options.{property.Name};");
_indentCount--;
WriteLine("}");
WriteLine();
@@ -87,7 +81,7 @@ protected override IMetaNode VisitClass(Class @class)
WriteLine($" * @interface I{type}Options");
WriteLine($" * @extends {{@link I{parentName}Options" + "}");
WriteLine($" */");
- WriteLine($"interface I{type}Options extends I{parentName}Options {{");
+ WriteLine($"export interface I{type}Options extends I{parentName}Options {{");
_indentCount++;
foreach (var propertyLine in propertyLines)
WriteLine(propertyLine);
diff --git a/src/Services/OData/Typescript/TypescriptComplexTypesVisitor.cs b/src/Services/OData/Typescript/TypescriptComplexTypesVisitor.cs
index 646bb23ef..d9258c155 100644
--- a/src/Services/OData/Typescript/TypescriptComplexTypesVisitor.cs
+++ b/src/Services/OData/Typescript/TypescriptComplexTypesVisitor.cs
@@ -54,9 +54,9 @@ protected override IMetaNode VisitSchema(ContentRepository.Schema.Metadata.Schem
#region Write fileend
_writer.WriteLine(@"export class ChoiceOption {
Value: string;
- Text: string;
- Enabled: boolean;
- Selected: boolean;
+ Text?: string;
+ Enabled?: boolean;
+ Selected?: boolean;
constructor(value: string, text?: string, enabled?: boolean, selected?: boolean) {
this.Value = value;
diff --git a/src/Services/OData/Typescript/TypescriptCtdVisitor.cs b/src/Services/OData/Typescript/TypescriptCtdVisitor.cs
index 19ff6ecf6..eccb690d6 100644
--- a/src/Services/OData/Typescript/TypescriptCtdVisitor.cs
+++ b/src/Services/OData/Typescript/TypescriptCtdVisitor.cs
@@ -1,9 +1,6 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using SenseNet.ContentRepository.Schema.Metadata;
namespace SenseNet.Portal.OData.Typescript
@@ -29,14 +26,15 @@ protected override IMetaNode VisitSchema(ContentRepository.Schema.Metadata.Schem
* The ```Schema``` class represents an object that holds the basic information about the Content Type (name, icon, ect.) and an array of its ```FieldSettings``` and their full configuration.
*/ /** */
-import { FieldSettings } from './SN';
+import { FieldSettings, Content, ContentTypes } from './SN';
/**
* Class that represents a Schema.
*
* It represents an object that holds the basic information about the Content Type (name, icon, ect.) and an array of its ```FieldSettings``` and their full configuration.
*/
- export class Schema {
+ export class Schema {
+ ContentType: {new(...args): TContentType}
Icon: string;
DisplayName: string;
Description: string;
@@ -44,35 +42,13 @@ export class Schema {
AllowIncrementalNaming: boolean;
AllowedChildTypes: string[];
FieldSettings: FieldSettings.FieldSetting[];
- /**
- * @constructs Schema
- * @param options {Object} An object implementing ISchemaOptions interface;
- */
- constructor(options: ISchemaOptions) {
- this.Icon = options.Icon;
- this.DisplayName = options.DisplayName;
- this.Description = options.Description;
- this.FieldSettings = options.FieldSettings;
- this.AllowIndexing = options.AllowIndexing;
- this.AllowIncrementalNaming = options.AllowIncrementalNaming;
- this.AllowedChildTypes = options.AllowedChildTypes;
+
+ constructor(schema: Partial>){
+ Object.assign(this, schema);
}
}
- /**
- * Interface for classes that represent a Schema.
- *
- * @interface ISchemaOptions
- */
- export interface ISchemaOptions {
- Icon?: string;
- DisplayName?: string;
- Description?: string;
- AllowIndexing?: boolean;
- AllowIncrementalNaming?: boolean;
- AllowedChildTypes?: string[];
- FieldSettings?: FieldSettings.FieldSetting[];
- }
+ export const SchemaStore: Schema[] = [
");
#endregion
@@ -80,6 +56,8 @@ export interface ISchemaOptions {
_indentCount++;
Visit(schema.Classes);
_indentCount--;
+
+ _writer.WriteLine(@"]");
return schema;
}
@@ -94,27 +72,25 @@ protected override IMetaNode VisitClass(Class @class)
WriteLine($" * Method that returns the Content Type Definition of the {contentType.Name}");
WriteLine(" * @returns {Schema}");
WriteLine(" */");
- WriteLine($"export function {contentType.Name}CTD(): Schema {{");
+ WriteLine($"new Schema({{");
_indentCount++;
- WriteLine($"let options: ISchemaOptions = {{");
+ WriteLine($" ContentType: ContentTypes.{contentType.Name},");
WriteLine($" DisplayName: '{contentType.DisplayName}',");
WriteLine($" Description: '{contentType.Description}',");
WriteLine($" Icon: '{contentType.Icon}',");
WriteLine($" AllowIndexing: {contentType.IndexingEnabled.ToString().ToLowerInvariant()},");
WriteLine($" AllowIncrementalNaming: {contentType.AllowIncrementalNaming.ToString().ToLowerInvariant()},");
WriteLine($" AllowedChildTypes: [{allowedChildTypes}],");
- WriteLine($" FieldSettings: []");
- WriteLine($"}};");
- WriteLine();
- WriteLine($"let schema = new Schema(options);");
- WriteLine();
+ WriteLine($" FieldSettings: [");
var visitedClass = base.VisitClass(@class);
- WriteLine($"return schema;");
+ WriteLine($"]");
+ WriteLine($"}}),");
+ WriteLine();
+
_indentCount--;
- WriteLine("}");
return visitedClass;
}
@@ -136,9 +112,6 @@ protected override IMetaNode VisitProperty(Property property)
if (value != null)
propertyLines.Add(name.ToCamelCase() + ": " + value);
}
-
-
- WriteLine("schema.FieldSettings.push(");
_indentCount++;
WriteLine($"new FieldSettings.{property.FieldSetting.GetType().Name}({{");
_indentCount++;
@@ -148,7 +121,7 @@ protected override IMetaNode VisitProperty(Property property)
WriteLine($"{propertyLines[i]}{comma}");
}
_indentCount--;
- WriteLine("}));");
+ WriteLine("}),");
_indentCount--;
return base.VisitProperty(property);
}
diff --git a/src/Services/OData/Typescript/TypescriptFieldSettingsVisitor.cs b/src/Services/OData/Typescript/TypescriptFieldSettingsVisitor.cs
index 587ddc0bf..46e498795 100644
--- a/src/Services/OData/Typescript/TypescriptFieldSettingsVisitor.cs
+++ b/src/Services/OData/Typescript/TypescriptFieldSettingsVisitor.cs
@@ -63,7 +63,7 @@ protected override IMetaNode VisitSchema(ContentRepository.Schema.Metadata.Schem
export enum UrlFormat { Hyperlink, Picture }
export class FieldSetting {
- Name: string = 'Content';
+ Name: string;
DisplayName?: string;
Description?: string;
Icon?: string;
@@ -79,7 +79,7 @@ export class FieldSetting {
ControlHint?: string;
constructor(options: IFieldSettingOptions) {
- this.Name = options.name;
+ this.Name = options.name || 'Content';
this.DisplayName = options.displayName;
this.Icon = options.icon;
this.ReadOnly = options.readOnly;
@@ -152,7 +152,7 @@ private void WriteFieldSettingType(Type type, List occurence)
WriteLine($"export class {type.Name} extends {parentTypeName} {{");
_indentCount++;
foreach (var item in propertyInfos)
- WriteLine($"{item.Key}: {item.Value};");
+ WriteLine($"{item.Key}?: {item.Value};");
WriteLine();
WriteLine($"constructor(options: I{type.Name}Options) {{");
diff --git a/src/Services/OData/Typescript/TypescriptModuleWriter.cs b/src/Services/OData/Typescript/TypescriptModuleWriter.cs
index 3c4bcdd73..1774c7c4e 100644
--- a/src/Services/OData/Typescript/TypescriptModuleWriter.cs
+++ b/src/Services/OData/Typescript/TypescriptModuleWriter.cs
@@ -147,7 +147,7 @@ protected virtual string GetPropertyTypeName(Type type)
case "String": return STRING;
case "Guid": return STRING;
case "Boolean": return "boolean";
- case "DateTime": return "Date";
+ case "DateTime": return STRING;
case "Currency": return NUMBER;
case "Byte": return NUMBER;
case "SByte": return NUMBER;
diff --git a/src/Services/Properties/AssemblyInfo.cs b/src/Services/Properties/AssemblyInfo.cs
index aa38535c9..b526be121 100644
--- a/src/Services/Properties/AssemblyInfo.cs
+++ b/src/Services/Properties/AssemblyInfo.cs
@@ -24,4 +24,4 @@
// This attribute is used by NuGet to determine the package file name and version.
// It may contain a SemVer value.
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Services/Services.Install.nuspec b/src/Services/Services.Install.nuspec
index 88e231637..fffacc19e 100644
--- a/src/Services/Services.Install.nuspec
+++ b/src/Services/Services.Install.nuspec
@@ -2,7 +2,7 @@
SenseNet.Services.Install
- 7.0.0-beta2.1
+ 7.0.0-beta3
sensenet ECM Services install package
kavics,aniko,laci,borsi,lajos,tusmester
Sense/Net
@@ -15,8 +15,8 @@
Copyright © Sense/Net Inc.
sensenet ecm ecms
-
-
+
+
diff --git a/src/Services/Services.csproj b/src/Services/Services.csproj
index 3d61fe8aa..7e87268a2 100644
--- a/src/Services/Services.csproj
+++ b/src/Services/Services.csproj
@@ -59,10 +59,6 @@
false
-
- False
- ..\References\Lucene.Net.dll
-
False
..\References\Microsoft.Exchange.WebServices.dll
diff --git a/src/Services/Services.nuspec b/src/Services/Services.nuspec
index 65db79c23..b27c06068 100644
--- a/src/Services/Services.nuspec
+++ b/src/Services/Services.nuspec
@@ -2,7 +2,7 @@
SenseNet.Services
- 7.0.0-beta2.1
+ 7.0.0-beta3
sensenet ECM Services
kavics,aniko,laci,borsi,lajos,tusmester
Sense/Net
diff --git a/src/Services/Virtualization/HttpHeaderTools.cs b/src/Services/Virtualization/HttpHeaderTools.cs
index 9953aefd3..4d2855030 100644
--- a/src/Services/Virtualization/HttpHeaderTools.cs
+++ b/src/Services/Virtualization/HttpHeaderTools.cs
@@ -277,7 +277,7 @@ public static void SetPreflightResponse(string[] httpVerbs = null, string[] http
/// same that the request was sent to, OR it has to be among the whitelisted external
/// domains that are allowed to access the Content Repository.
///
- public static bool IsOriginHeaderAllowed()
+ public static bool TrySetAllowedOriginHeader()
{
if (HttpContext.Current == null)
return true;
diff --git a/src/Services/Virtualization/PortalAuthenticationModule.cs b/src/Services/Virtualization/PortalAuthenticationModule.cs
index 27582ff55..cd40a5178 100644
--- a/src/Services/Virtualization/PortalAuthenticationModule.cs
+++ b/src/Services/Virtualization/PortalAuthenticationModule.cs
@@ -128,22 +128,11 @@ public void OnAuthenticateRequest(object sender, EventArgs e)
var context = GetContext(sender); //HttpContext.Current;
var request = GetRequest(sender);
bool anonymAuthenticated;
-
+
var basicAuthenticated = DispatchBasicAuthentication(context, out anonymAuthenticated);
if (IsTokenAuthenticationRequested(request))
{
- // Cross-Origin Resource Sharing (CORS)
- if (!HttpHeaderTools.IsOriginHeaderAllowed())
- AuthenticationHelper.ThrowForbidden("token auth");
-
- if (request?.HttpMethod == "OPTIONS")
- {
- // set allowed methods and headers
- HttpHeaderTools.SetPreflightResponse();
-
- application?.CompleteRequest();
- }
if (basicAuthenticated && anonymAuthenticated)
{
diff --git a/src/Services/Virtualization/PortalContextModule.cs b/src/Services/Virtualization/PortalContextModule.cs
index 45a4a988a..20e6d27f7 100644
--- a/src/Services/Virtualization/PortalContextModule.cs
+++ b/src/Services/Virtualization/PortalContextModule.cs
@@ -104,9 +104,22 @@ private void OnEnter(object sender, EventArgs e)
PortalContext portalContext = PortalContext.Create(httpContext, initInfo);
+ // Cross-Origin Resource Sharing (CORS)
+ if (!HttpHeaderTools.TrySetAllowedOriginHeader())
+ AuthenticationHelper.ThrowForbidden("token auth");
+
+ if (request.HttpMethod == "OPTIONS")
+ {
+ // set allowed methods and headers
+ HttpHeaderTools.SetPreflightResponse();
+ (sender as HttpApplication)?.CompleteRequest();
+ return;
+ }
+
var action = HttpActionManager.CreateAction(portalContext);
SnTrace.Web.Write("HTTP Action." + GetLoggedProperties(portalContext));
+
action.Execute();
}
private static string GetLoggedProperties(IHttpActionContext context)
diff --git a/src/Services/Virtualization/SenseNetStaticFileHandler.cs b/src/Services/Virtualization/SenseNetStaticFileHandler.cs
index e15fad409..9e0b13847 100644
--- a/src/Services/Virtualization/SenseNetStaticFileHandler.cs
+++ b/src/Services/Virtualization/SenseNetStaticFileHandler.cs
@@ -25,10 +25,6 @@ public void ProcessRequest(HttpContext context)
VirtualFile vf = null;
var filePath = request.FilePath;
- // Cross-Origin Resource Sharing (CORS)
- if (!HttpHeaderTools.IsOriginHeaderAllowed())
- AuthenticationHelper.ThrowForbidden(filePath);
-
if (HostingEnvironment.VirtualPathProvider.FileExists(filePath))
vf = HostingEnvironment.VirtualPathProvider.GetFile(filePath);
diff --git a/src/Storage/Properties/AssemblyInfo.cs b/src/Storage/Properties/AssemblyInfo.cs
index 5ddafb119..57b441219 100644
--- a/src/Storage/Properties/AssemblyInfo.cs
+++ b/src/Storage/Properties/AssemblyInfo.cs
@@ -20,4 +20,4 @@
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
\ No newline at end of file
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Tests/SenseNet.Packaging.IntegrationTests/Properties/AssemblyInfo.cs b/src/Tests/SenseNet.Packaging.IntegrationTests/Properties/AssemblyInfo.cs
index 02405bafc..df7db3566 100644
--- a/src/Tests/SenseNet.Packaging.IntegrationTests/Properties/AssemblyInfo.cs
+++ b/src/Tests/SenseNet.Packaging.IntegrationTests/Properties/AssemblyInfo.cs
@@ -17,4 +17,4 @@
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Tests/SenseNet.Packaging.Tests/Properties/AssemblyInfo.cs b/src/Tests/SenseNet.Packaging.Tests/Properties/AssemblyInfo.cs
index 47e0a1e83..245a86e26 100644
--- a/src/Tests/SenseNet.Packaging.Tests/Properties/AssemblyInfo.cs
+++ b/src/Tests/SenseNet.Packaging.Tests/Properties/AssemblyInfo.cs
@@ -17,4 +17,4 @@
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Tests/SenseNet.Services.Tests/Properties/AssemblyInfo.cs b/src/Tests/SenseNet.Services.Tests/Properties/AssemblyInfo.cs
index aacd40ff0..800513f59 100644
--- a/src/Tests/SenseNet.Services.Tests/Properties/AssemblyInfo.cs
+++ b/src/Tests/SenseNet.Services.Tests/Properties/AssemblyInfo.cs
@@ -17,4 +17,4 @@
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Tests/SenseNet.TokenAuthentication.Tests/Properties/AssemblyInfo.cs b/src/Tests/SenseNet.TokenAuthentication.Tests/Properties/AssemblyInfo.cs
index e42bef4b1..e27e7438b 100644
--- a/src/Tests/SenseNet.TokenAuthentication.Tests/Properties/AssemblyInfo.cs
+++ b/src/Tests/SenseNet.TokenAuthentication.Tests/Properties/AssemblyInfo.cs
@@ -17,4 +17,4 @@
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Tests/SnAdminRuntime.Tests/Properties/AssemblyInfo.cs b/src/Tests/SnAdminRuntime.Tests/Properties/AssemblyInfo.cs
index 1457d1e1b..93046e4f5 100644
--- a/src/Tests/SnAdminRuntime.Tests/Properties/AssemblyInfo.cs
+++ b/src/Tests/SnAdminRuntime.Tests/Properties/AssemblyInfo.cs
@@ -17,4 +17,4 @@
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/TokenAuthentication/Properties/AssemblyInfo.cs b/src/TokenAuthentication/Properties/AssemblyInfo.cs
index 04d71e5a4..70dd96ec1 100644
--- a/src/TokenAuthentication/Properties/AssemblyInfo.cs
+++ b/src/TokenAuthentication/Properties/AssemblyInfo.cs
@@ -15,4 +15,4 @@
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
\ No newline at end of file
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
diff --git a/src/Tools/SnAdminRuntime/App.config b/src/Tools/SnAdminRuntime/App.config
index aa93b0590..27ffc7f48 100644
--- a/src/Tools/SnAdminRuntime/App.config
+++ b/src/Tools/SnAdminRuntime/App.config
@@ -116,4 +116,4 @@
-
+
\ No newline at end of file
diff --git a/src/Tools/SnAdminRuntime/Properties/AssemblyInfo.cs b/src/Tools/SnAdminRuntime/Properties/AssemblyInfo.cs
index bafe2a5d4..2eea6c5f2 100644
--- a/src/Tools/SnAdminRuntime/Properties/AssemblyInfo.cs
+++ b/src/Tools/SnAdminRuntime/Properties/AssemblyInfo.cs
@@ -19,7 +19,7 @@
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]
-[assembly: AssemblyInformationalVersion("7.0.0-beta2.1")]
+[assembly: AssemblyInformationalVersion("7.0.0-beta3")]
[assembly: ComVisible(false)]
[assembly: Guid("1B973251-9AAE-48D2-9FFF-408AA95CA576")]
diff --git a/src/Tools/SnAdminRuntime/SnAdminRuntime.csproj b/src/Tools/SnAdminRuntime/SnAdminRuntime.csproj
index a79b79cbd..02a9927b8 100644
--- a/src/Tools/SnAdminRuntime/SnAdminRuntime.csproj
+++ b/src/Tools/SnAdminRuntime/SnAdminRuntime.csproj
@@ -62,9 +62,6 @@
..\..\References\Ionic.Zip.dll
-
- ..\..\References\Lucene.Net.dll
-
..\..\References\Microsoft.Practices.EnterpriseLibrary.Common.dll
diff --git a/src/nuget/readme.txt b/src/nuget/readme.txt
index cfe74150a..aab029aca 100644
--- a/src/nuget/readme.txt
+++ b/src/nuget/readme.txt
@@ -8,14 +8,11 @@ https://github.com/SenseNet/sensenet/blob/master/docs/install-sn-from-nuget.md#I
To finalize the installation and get started with sensenet ECM platform, please follow these steps:
-1. Please copy the contents of the runtime section from your Web.config to the [web]\Tools\SnAdminRuntime.exe.config file.
- (see comment at the end of SnAdminRuntime.exe.config)
-
-2. Change the Global.asax markup file's (not the cs file's) first line to contain a new parent type:
+1. Change the Global.asax markup file's (not the cs file's) first line to contain a new parent type:
Inherits="SenseNet.Portal.Global"
-3. Change the Global.asax.cs codebehind (the c# class):
+2. Change the Global.asax.cs codebehind (the c# class):
- the application class should inherit from SenseNet.Services.SenseNetGlobal
- change the Application_Start method header and call the base method before all generated and custom method calls:
@@ -29,7 +26,7 @@ To finalize the installation and get started with sensenet ECM platform, please
Please do not override the whole method, just the header, and add the base method call.
-4. Optional: update your Razor views (you can do this later at any time).
+3. Optional: update your Razor views (you can do this later at any time).
If you use the built-in @Html.ActionLink method to render actions (as it is the case with the default project templates),
you have to replace those calls in your .cshtml files with a new extension method added by this package:
@@ -38,9 +35,9 @@ To finalize the installation and get started with sensenet ECM platform, please
(the parameters are the same, only the method name changes)
-5. Build your solution, make sure that there are no build errors.
+4. Build your solution, make sure that there are no build errors.
-6. Install sensenet ECM Content Repository database. Please make sure that you have access to a SQL Server.
+5. Install sensenet ECM Content Repository database. Please make sure that you have access to a SQL Server.
The process will modify the connection string in Web.config and Tools\SnAdminRuntime.exe.config files automatically,
ensuring that it is pointing to your SQL Server (DataSource) and Database Name (Initial Catalog).
diff --git a/src/nuget/snadmin/install-services/import/System/Schema/ContentTypes/WorkspaceCtd.xml b/src/nuget/snadmin/install-services/import/System/Schema/ContentTypes/WorkspaceCtd.xml
index 4b6814e0c..14250a17c 100644
--- a/src/nuget/snadmin/install-services/import/System/Schema/ContentTypes/WorkspaceCtd.xml
+++ b/src/nuget/snadmin/install-services/import/System/Schema/ContentTypes/WorkspaceCtd.xml
@@ -67,6 +67,11 @@
$Ctd-Workspace,IsWallContainer-DisplayName
$Ctd-Workspace,IsWallContainer-Description
+
+ Hide
+ Hide
+ Hide
+
diff --git a/tools/scripts/CreateNuGetPackages.ps1 b/tools/scripts/CreateNuGetPackages.ps1
index bd3cb95a1..fe9036511 100644
--- a/tools/scripts/CreateNuGetPackages.ps1
+++ b/tools/scripts/CreateNuGetPackages.ps1
@@ -15,3 +15,6 @@ Copy-Item ..\..\src\Storage\Data\SqlClient\Scripts\Install_04_Data_Phase2.sql ..
Compress-Archive -Path "..\..\src\nuget\snadmin\install-services\*" -Force -CompressionLevel Optimal -DestinationPath "..\..\src\nuget\content\Admin\tools\install-services.zip"
nuget pack ..\..\src\Services\Services.Install.nuspec -properties Configuration=Release
+
+# nuget.exe push -Source "SenseNet" -ApiKey VSTS SenseNet.Services.7.0.0-beta2.4.nupkg
+# nuget.exe push -Source "SenseNet" -ApiKey VSTS SenseNet.Services.Install.7.0.0-beta2.4.nupkg