EPiServer

Install EPiServer 7 with MVC

Are you as exited as I am over the new EPiServer 7 with MVC support and typed pages?

I hope you are, and therefore I thought that I might put together this blog post showing how to set up an EPiServer 7 site with MVC 4 from scratch. Please follow along!

First start by downloading EPiServer 7 from the EPiServer world web site. Once you’re finnished with that, continue setting up an new EPiServer 7 site with EPiServer Deployment Center.

Start “EPiServer Deployment Center” and choose “Install site and SQL Server database(CMS 7.0.586.1)”. Once the installation completes you can now fire up Visual Studio to create a new ASP.NET MVC 4 WebApplication. Save it in another location than your previously installed EPiServer site.

When the Web application project is created, copy all files except Global.* och Web.* and paste them in the location of the EPiServer site

Set up groups and users

To be able to log in to the administartion interface we need to create the “WebAdmins” and “Administrators”-group, as stated in the <authorization>-element in web.config.

Make sure that roleManagers defaultProvider is set to “SqlServerRoleProvider” and that the defaultProvider of the membership is set to “SqlServerMembershipProvider”. This is done so that we can create groups and users in the database next.

You do this by going into the ASP.NET Configuration site from Visual Studio (se picture below)

Create an “admin” user as well and put it in the “WebAdmins” and “Administrators” group.

Go to the administration interface by, in my case, entering the following URL in your favourite web browser: http://epi7mvc/sec/UI/CMS/Admin/

You will get a warning text stating that the site has no content. Do as the text says and set pageStartId=”1″ on the siteSettings-elementin episerver.config

Save your changes and once more enter the admin url in your browser: http://epi7mvc/sec/UI/CMS/Admin/ .

Log in using your newly created “admin”-user.
You should now get the new admin interface of EPiServer 7

Creating your first content

What would a site be without any content or pages, not much if you ask me… ;)
So it’s time to dive into Visual Studio and start creating a PageType.

We start with the creation of a StartPage-pageType. Create an folder “Types” and in that create a new class “StartPage” (as can be seen in the picture below)

Create a partialView for yout type in “Views/StartPage”. Name it “Index.cshtml”.

@using EPiServer.Web.Mvc.Html
@model EPi7Web.Types.StartPageModel

<h1>@Html.PropertyFor(x => x.MainTitle)</h1>
@Html.PropertyFor(x => x.MainBody)

Create a controller named “StartPageController.cs” in the “Controller”-folder.

using System.Web.Mvc;
using EPi7Web.Models;
using EPi7Web.Types;
using EPiServer.Web.Mvc;
namespace EPi7Web.Controllers
{
 public class StartPageController : PageController<StartPage>
 {
    //
    // GET: /StartPage/
    public ActionResult Index(StartPage currentPage)
    {
      var model = new StartPageModel() { MainBody = currentPage.MainBody, MainTitle = currentPage.MainTitle};
      return View(model);
    }
 }
}

Go into the edit interface and create a new page (“Home”) based on the StartPage-type.

Notice the pageId (“4″) that this new page received when it was created. Insert this pageStartId  into the siteSettings-element.

Update the page with some content and then “Publish” it

Hopefully you will see your new page when going into the view-/editmode.

Hope that you have found this blog post helpfull!

Tagged , ,

EPiServers partnerdagar

I förra veckan annordnades EPiServers partnerdagar upp i Stockholm på Clarion hotell. Advise var representerade av mig, Jonas.

Större delen av konferensen ägnades, av förklarliga skäl, till att presentera den kommande versionen av EPiServer CMS. Den har gått under kodnamn Falcon, men kommer få namnet EPiServer CMS 7. Jag får redan här varna för det stora användandet av engelska tekniktermer och buzzwords i den här posten. You have been warned ;)

Några av de större nyheterna var:

  • Strongly typed pages and blocks
  • Multiple renderers
  • MVC 4
  • Drag & drop stöd i redaktörsläget
  • Multiple file upload
  • Multiple channel editing
  • Maximering av arbetsytan i redaktörsläget

EPiServer kommer också att introducera sin egen “App store”, här kallad “Add-on store”, där siteägare kan med “one click install/uninstall” på ett enkelt och säkert sätt utöka CMSets funktionallitet.

Efter EPiServers förvärv av söktjänsten Truffler, har man nu ytterligare integrerat söktjänsten och den kommer fortsättningsvis att heta EPiServer Find. Den kommer att erbjudas både som SaaS och som on-premise installation.

EPiServer satsar hårt vidare på sin EPiServer Commerce lösning efter det att de köpte upp Mediachase tidigare i år. Commerce lösningen kommer nu än mer att integreras med resten av EPiServers ekosystem.
De problem som produkten tidigare har haft, har man nu koncentrerat sig på att åtgärda, så som:

  • Enklare installation
  • Bättre dokumentation
  • Långsamt backend
  • Annan membership provider

Vi kommer att se alla produkter uppdaterade till “7″:an (Community, Mail etc.).
Preview släpps kring midsommar och skarpt senare i år.

Typaddata
Det vi fick se av EPiServers egna version av Page Type Builder (PTB) såg intressant ut. Inga större skillnader mot hur man tidigare har använt Page Type Builder, men man kommer inte fullt ut att ha samma stöd som PTB har när 7:an nu släpps.

Att enkelt skapa typade blocks (BlockData) tycker jag ser väldigt trevligt ut. Blocks är lite mer lightweight än PageData, eftersom man inte har de 40+ meta egenskaperna som PageData objekten har. BlockData får en egen flik i admingränssnittet bredvid PageType.

Blocks kan läggas till sidtyper och nästlade block stöds också. Vi kommer också på en ny egenskap, ContentArea, som används för att placera ut blocks.

MVC
Nytt i EPiServer 7 kommer att vara MVC stödet. Det kommer vara MVC 4 som gäller. Rent teoretiskt kommer man kunna köra en site med både PageForms och MVC templates side-by-side, men i vissa situationer kommer MVC att stödjas bättre.

Som vanligt var det väldigt trevligt och bra ordnat, med många trevliga deltagare.

Och till sist, kom ihåg att livet inte alltid är rättvist. Här illustrerat med en bild från partnermiddagen

Tagged , ,

Gör en EPiServer-egenskap sökbar

Om man märker att man inte får en träff när man söker på en egenskap på en sida kan det bero på att egenskapen inte är markerad att vara sökbar.

Detta är lätt åtgärdat: Gå till sidtypsadministreringen och kryssa i att egenskapen skall vara sökbar. Efter det att man har gjort egenskapen sökbar så måste de sidorna som använder den sidtypen publiceras på nytt innan de kommer med i sökresultaten (när man söker på egenskapen)

Tagged ,

Rensa upp i redaktörsträdet

I vissa situationer kan det bli väldigt stökigt i sidträdet för redaktörerna, det kan bero på att man har olika sidträd för olika språk, kanske för att varje gren är en landsspecifik site. Detta är ett vanligt sätt att slippa skaffa sig en enterpriselicens.

“Före”-bilden

“Efter”-bilden

 

 

 

 

 

I fallet att varje språkträd är som ovan, en landssite, som har sina egna redaktörer, vill man att dessa redaktörer bara skall se sina egna sidor som de har rättigheter till eller bara se de sidorna som finns på valt språk. Det finns givetvis flera olika situationer som gör att man vill att redaktören bara kan se de sidor som är intressanta för henne/honom.

Lösningen hittade jag här, och med några små ändringar kan man skräddarsy funktionaliteten efter sina egna behov. Man kan använda samma HttpModul för att rensa upp i sidväljarfönstret också. Här kan ni se ett exempel hur en HttpModul kan se ut:

public class PageExcluder : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication context)
        {
            DataFactory.Instance.FinishedLoadingChildren
                     += new EPiServer.ChildrenEventHandler(Instance_FinishedLoadingChildren);
        }

        void Instance_FinishedLoadingChildren(object sender, ChildrenEventArgs e)
        {

            // make sure to only do this when we are rendering the edit tree
            if (HttpContext.Current != null && (HttpContext.Current.Request.Url.AbsolutePath.EndsWith("EditTree.aspx") ||
HttpContext.Current.Request.Url.AbsolutePath.Contains("edit/pagebrowser.aspx")))
            {

                for (int i = 0; i < e.Children.Count; i++)
                {
                    // Hide pages that is not in the selected language
                    // hideEditTreePagesNotSelectedLanguage can be configured in web.config
                    if (hideEditTreePagesNotSelectedLanguage)
                    {
                        string selectedEditLang;
                        if (HttpContext.Current.Request.Cookies["editlanguagebranch"] != null)
                            selectedEditLang = HttpContext.Current.Request.Cookies["editlanguagebranch"].Value;
                        else
                            selectedEditLang = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;

                        if (e.Children[i].LanguageID != selectedEditLang)
                        {
                            e.Children.RemoveAt(i);
                            i--;
                            continue;
                        }
                    }
                }
            }
        }
   }
Tagged ,

Lista aktiverade språk i EPiServer

Ibland kan det vara nödvändigt att få tag på de språk som är aktiverade i EPiServer när man kör med globalization. Efter en del sökande i EPiServers API:er så fann jag lösningen, och den var mycket enklare än vad jag hade trott:

var availableLangs = EPiServer.DataAbstraction.LanguageBranch.ListEnabled();
Tagged