Giter VIP home page Giter VIP logo

foundation-mvc-cms's Introduction

Foundation

Foundation

Foundation offers a starting point that is intuitive, well-structured and modular allowing developers to select Episerver products as projects to include or exclude from their solution. Including as of now projects for CMS, Commerce, Personalization, Find and Social, with the rest to follow.

License


Table of Contents


System requirements

See also the general Episerver system requirements on Episerver World.


Pre-installation set-up

SQL server

  1. In Microsoft SQL Server Management Studio, connect to your SQL server: SQL server login
  2. Right-click on your server and select Properties.
  3. Under Security, make sure that SQL Server and Windows Authentication mode is selected: SQL server authentication

IIS settings

How to find the IIS settings depends on the system where you are running IIS.

  1. Go to your IIS settings. If you are running IIS locally on your Windows machine, you find these under Control Panel > Programs > Programs and Features > Turn Windows features on or off.
  2. Check that the following features have been enabled:
  • Under Application Development:
    • ASP .NET
    • NET Extensibility
    • ASP
    • ISAPI Extensions
    • ISAPI Filters
  • Common HTTP Features (Installed) node (all are required):
    • Static Content (Installed)
    • Default Document (Installed)
    • Directory Browsing (Installed
    • HTTP Errors (Installed) (Installed)
    • HTTP Redirection
  • Under the Performance (Installed) node:
    • Static Content Compression (Installed)
    • Dynamic Content Compression (Installed)
  • Under the Security (Installed) node:
    • URL Authorization (Installed)

IIS settings


Installation

The installation files on GitHub contain a batch file that will install the Foundation project with all products and set up an empty demo site. After the installation, you can fetch demo content from a remote repository to create a Mosey demo site, a fictitious fashion retail company.

  1. Download the ZIP file from the Foundation project's master branch on GitHub and extract the files, or clone the project from GitHub to a local folder using the command prompt and the git command git clone https://github.com/episerver/Foundation foundation (the foundation part specifies the folder where to put the files):

Download ZIP file

Download Zip file

Or clone project using Git

Clone project

Note: It is recommended that you store the project in a folder directly under C:, in a folder where your user has full access rights:

Folder access rights

  1. Right-click on the batch file called setup.cmd and select Run as administrator:

Run batch file

  1. The installation starts and you are asked to provide the following parameters:
Parameter Description
Application name: The name of the application. Note: The application name should contain only letters and numbers as it used as the prefix to create the website and database components.
Public domain name for foundation: Domain name for the application, for example, foundation.com.
License path: If you have a license file, add the path to it. Otherwise you can add that later.
SQL server name: SQL server instance name. Add the same server name as the one you connected to in the Pre-installation set-up steps for the SQL server. If using Azure SQL, provide the full dns name for your Azure SQL instance
sqlcmd command: SQL command to execute, by default -S . -E . This can generally be left as is. If using Azure SQL, pass username and password as -U <user> -P <password>

Build parameters

  1. The build process executes a number of steps and logs both to the console and to the log files. The automatic build steps are:
•	Set permissions on the folder to everyone full control
•	Restore NuGet packages
•	npm install
•	gulp Saas task
•	Build solution
•	Install Databases
•	Create one application pool
•	Create one website
•	Update host file
•	Copy License file
•	create connectionstrings file
•	Start the site to finish setup in browser
  1. When the installation is finished, a start page is opened in your browser. If not, enter the URL http://yourdomainname/ manually.

  2. If the start page throws an error, open your host file, found under C:\Windows\System32\drivers\etc, and add the one domain name you entered during the installation. Reload the page in your browser. Example host file

  3. Log in with user: [email protected] and password: store to access the Episerver user interface.

Note: A resetup.cmd file has been created in your project which you can run to re-install the database.

  1. Developer licenses for evaluation purposes can be obtained from the Episerver License Center. Place the License.config file in your webroot.

Troubleshooting

The installation fails

  • Check that you have full access rights to the project folder.
  • Check that you meet the system requirements.
  • Check your SQL authentication settings as described in SQL Server.
  • Check your IIS settings so that they match those specified in IIS settings.
  • Check the log files:
    Build\Logs\Build.log
    Build\Logs\Database.log
    Build\Logs\IIS.log
    

foundation-mvc-cms's People

Contributors

botcanh70111 avatar codeiscool23 avatar cuong-epi avatar davidbuo avatar davidknipe avatar epi-qang2 avatar jacobkhan avatar ngocnguyen-epi avatar quantran-epi avatar quocanhnguyen402 avatar remkoj avatar thanhduc-nguyen avatar tomahg avatar trungdo-epi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

foundation-mvc-cms's Issues

Find indexing of pages does not read into blocks on the page

It appears Find indexing of pages in Foundation MVC CMS does not read into blocks on the page. This is problematic because we have some pages that are built entirely from blocks that should be returning in search results. They will only return if the search term is in the page name or teaser. If we want this content structure to work, then the indexing rules should include some recursion into nested blocks in order to accurately return results

image

Search results error

Foundation CMS MVC - Search results summaries contain configuration values that probably should be excluded from index and summary information. For example, "10-5" on all these pages...
image

Search textbox

The Search textbox in the header in Foundation CMS is different from Foundation with Commerce. It defaults to any delay redirection to the results page. This is disabled by default in Foundation Commerce, and enabled by default here. Unfortunately, there's no configuration for this behavior in Foundation CMS. At the very least, it would be nice to have configuration option parity between the two sites.

Model SchemaMarkup issue - 500 Invalid URI error

When deploying using the Moseybank 2.0 content pack as soon as you try and create a new page it throws a 500 Unexpected Error unless there is a teaser image attached.

`Invalid URI: The URI is empty.

at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) at Foundation.Infrastructure.SchemaMarkup.BlogItemPageSchemaMapper.Map(BlogItemPage content) in E:\sitebuilder-sites\westernpower\Foundation\Src\Foundation\Infrastructure\SchemaMarkup\BlogItemPageSchemaMapper.cs:line 17 at Foundation.Features.Shared.ContentViewModel1.get_SchemaMarkup() in E:\sitebuilder-sites\westernpower\Foundation\Src\Foundation\Features\Shared\ContentViewModel.cs:line 71 at ASP._Page_Features_Shared_Views__Layout_cshtml.Execute() in E:\sitebuilder-sites\westernpower\Foundation\src\Foundation\Features\Shared\Views\_Layout.cshtml:line 43 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at System.Web.WebPages.WebPageBase.<>c__DisplayClass40_0.<RenderPageCore>b__0(TextWriter writer) at System.Web.WebPages.WebPageBase.Write(HelperResult result) at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action1 body) at System.Web.WebPages.WebPageBase.PopContext() at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 filters, ActionResult actionResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)`

The fix appears to be to comment out the following line in ..\Src\Foundation\Features\Shared\Views_Layout.cshtml
@*Model.SchemaMarkup*@

Problem with setup script and localdb

I am running setup.cmd as an administrator, and providing the following for SQL server name:
(LocalDb)\MSSQLLocalDB

Get the following output, before script terminates:

## Clean and build ##
## Dropping databases ##
## Dropping user ##
## Creating databases ##
\MSSQLLocalDB was unexpected at this time.

The logfile Build\Logs\Database.log contrains:

## Dropping databases ## 
## Dropping user ## 
## Creating databases ## 

I was, however, able to create the database running the scripts manually.

Make features more self contained

Is your feature request related to a problem? Please describe.
As a developer I would like to have all the parts of a feature self contained in the features folder. Currently the models, view models, styles, and scripts are separated from the features folder.

Describe the solution you'd like
The feature folder should contain everything. The building of style sheets and JavaScript should automatically look in these folders.

Updated branding/readme

We should probably remove the Episerver logo and update with the Optimizely one.

Secondly, the readme references this starter package including Commerce components which appears to be in error.

Content security policy

Content security policy does not allow YouTube block to work (I assume others as well). I don't know how to add it correctly, but I had to disable these lines in web.config to get YouTube block to work correctly.

ISettingsService fails when none of SiteDefinition.SiteUrl is valid

Steps to reproduce:

  1. Set up site, runs at localhost:5000 (default)
  2. Go to CMS admin, manage websites and change all host name to a non-existing domain, except wildcard host
  3. Back to edit mode at localhost:5000

Observed error:
System.NullReferenceException: Object reference not set to an instance of an object. at Foundation.Features.Settings.ButtonBackgroundColorSelectionFactory.GetSelections(ExtendedMetadata metadata) in ...\Src\Foundation\Features\Settings\CollectionSettings.cs:line 122 at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.GetSelections(ExtendedMetadata metadata, MetadataStoreModel metadataDTO, ISelectionFactory[] selectionFactories) at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.CreateFromModelMetadata(ExtendedMetadata metadata, LocalizationService localizationService, UIDescriptorRegistry uiDescriptorRegistry, ISelectionFactory[] selectionFactories, Boolean alwaysCreateChildProperties) at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.ExtractMetadataFromProperties(ExtendedMetadata metadata, MetadataStoreModel MetadataStoreModel, LocalizationService localizationService, UIDescriptorRegistry uiDescriptorRegistry, ISelectionFactory[] selectionFactories) at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.CreateFromModelMetadata(ExtendedMetadata metadata, LocalizationService localizationService, UIDescriptorRegistry uiDescriptorRegistry, ISelectionFactory[] selectionFactories, Boolean alwaysCreateChildProperties) at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.Create(ExtendedMetadata metadata) at EPiServer.Shell.UI.Rest.MetadataStore.Get(String id, String modelAccessor) at lambda_method814(Closure , Object , Object[] )
Suggestion: Needs null check or fault-tolerance logic.

image

Can't login for new user

Hi,
After deploying a site completely and create some new users.
I may not able to login using that new user (it already have WebAdmins or WebEditors or both role)
It just redirects to the home page without logging in.
FoundationError1

Could you please take a look at it?

Disable search index

in Foundation MVC CMS. Not sure if this is already addressed and will be merged, but please add [Searchable(false)] attributes to page properties that don't belong in the index. They're showing up in the teaser/summary information in the search results page and in the Custom Search block. Things like "p-1", "m-0" or "light transparent" that stand out poorly in demos

Screen Shot 2020-07-27 at 11 06 33 AM

Foundation CMS MVC - Search results summaries contain configuration values that probably should be excluded from index and summary information. For example, "10-5" on all these pages...
image

Bugs summary

  1. Bookmark feature missing
  2. Remove ProfilePage in My Account in DB
  3. Adding Settings page Uncomment <!--<add namespace="Foundation.Features.Settings"/>--> in Web.config
  4. Lost login session when browser closed

DisplayWidth implementation in the Foundation Content Area Renderer breaks rows functionality of Bootstrap Content Area Renderer

DisplayWidth implementation in the Foundation Content Area Renderer breaks rows functionality of Bootstrap Content Area Renderer.

A nice feature of Valdis Bootstrap aware content area renderer is automatically inserted rows when 12 columns is to be passed.

However, the implementation of the foundation content area renderer breaks that.

So, that’s kind of a deal-breaker for some. We could just kick the FullWidth-rendering out and do our custom stuff in RenderContentAreaItem before calling base.RenderContentAreaItem to work WITH Valdis implementation of the base-renderer, and not against it.

So, either remove that fullwidth code or make it work WITH the base class implementation...

Display option of Form

It looks like the display options are not respected when applied to form fields when in view mode. Seems to work in edit mode

Foundation fails Lighthouse SEO-tests due to wrong syntax

Since _MasterLayout renders metadata, title and OpenGraph metadata.

@Html.RenderMetaData(Model.CurrentContent)
<title> @Model.CurrentContent.Name</title>
@Html.RenderOpenGraphMetaData(Model)

And that you render title in opengraph as og:title and description as og:description using <meta property="{0}" content="{1}" />-syntax.

You should render title, description and keywords using <meta name="{0}" content="{1}" />-syntax.

Maybe there is a slim chance that name and property could both exist.

Setting pages

Use setting pages instead of settings in homepage

Remove hard coded styling

Make sure to remove any and all inline styling that is hard coded. We should use CSS classes where possible

Teaser block enhancement

Foundation CMS MVC TeaserBlock does not appear to handle conditions where a user might only want a single image. The View assumes if one is present, then both are, which won't always be the case.
Foundation MVC CMS Teaser Block configuration for Elements Order doesn't appear to have any affect on the visual output of the block. If it doesn't do anything it should be removed. If it should do something then this is a bug to be fixed.

How well is Foundation-based projects working in load balanced environments?

sessionState etc. is not a good option for load balanced environments.
What components in the current state of Foundation is dependent on sessionState?

We are currently very close to deployment of a Foundation-based project and are experience problems only in load balanced environments (and reverse proxy, Nginx). We are currently suspecting sessionState for our odd behaviors when working on custom error pages etc. (we have replaced Geta/404handler with a custom handler).

Is there more considerations needed to be taken when putting a Foundation-based project in a load balanced environment?

I would like to just turn sessionState to Off but don't know if there is any known huge implications other than what can be read here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.