+ All Categories
Home > Design > Tackling Umbraco: Case Study on NFL Ops Website Design

Tackling Umbraco: Case Study on NFL Ops Website Design

Date post: 15-Jul-2015
Category:
Upload: mcampolongo
View: 121 times
Download: 3 times
Share this document with a friend
Popular Tags:
62
Transcript
Page 1: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 2: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 3: Tackling Umbraco: Case Study on NFL Ops Website Design

USUS

SHOLASHOLADEVELOPERDEVELOPER

MATTMATTDESIGNERDESIGNER

Page 4: Tackling Umbraco: Case Study on NFL Ops Website Design

REINGOLD, INC.REINGOLD, INC.ALEXANDRIA, VAALEXANDRIA, VA

OUR COMPANYOUR COMPANY

Page 5: Tackling Umbraco: Case Study on NFL Ops Website Design

OverviewOverviewOverviewOverview

Intro to Project

Design Challenges

Under the Hood: Tips & TricksArchetype

UaaS Deployment

External Data

and more!

Page 6: Tackling Umbraco: Case Study on NFL Ops Website Design

OUR CLIENTOUR CLIENT

Page 7: Tackling Umbraco: Case Study on NFL Ops Website Design

"FOOTBALL IS AN ESSENTIAL PIECE"FOOTBALL IS AN ESSENTIAL PIECE"FOOTBALL IS AN ESSENTIAL PIECE"FOOTBALL IS AN ESSENTIAL PIECEOF AMERICA’S FABRIC, UNITINGOF AMERICA’S FABRIC, UNITINGOF AMERICA’S FABRIC, UNITINGOF AMERICA’S FABRIC, UNITING

FANS, PLAYERS ANDFANS, PLAYERS ANDFANS, PLAYERS ANDFANS, PLAYERS ANDCOMMUNITIES WITH A SIMPLE YETCOMMUNITIES WITH A SIMPLE YETCOMMUNITIES WITH A SIMPLE YETCOMMUNITIES WITH A SIMPLE YET

POWERFUL BOND."POWERFUL BOND."POWERFUL BOND."POWERFUL BOND."

Page 8: Tackling Umbraco: Case Study on NFL Ops Website Design

What we aren't. (nfl.com)

Honor the game’s history.

Showcase innovation.

Troy's 3 C's - Clarity, Consistency, Credibility.

Umbraco!

Website ObjectivesWebsite ObjectivesWebsite ObjectivesWebsite Objectives

Page 9: Tackling Umbraco: Case Study on NFL Ops Website Design

Look & FeelLook & FeelLook & FeelLook & Feel

Page 10: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 11: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 12: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 13: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 14: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 15: Tackling Umbraco: Case Study on NFL Ops Website Design

NavigationNavigationNavigationNavigation

Page 16: Tackling Umbraco: Case Study on NFL Ops Website Design

Other NFL Web PropertiesOther NFL Web PropertiesOther NFL Web PropertiesOther NFL Web Properties

NFL.com Primary news and communications branch for the NFL

NFLShop.com eCommerce site

NFLPlayerEngagement.com Player Engagement

NFLEvolution.com Player Health & Safety

Page 17: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 18: Tackling Umbraco: Case Study on NFL Ops Website Design

UX Testing OptionsUX Testing OptionsUX Testing OptionsUX Testing Options

Page 19: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 20: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 21: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 22: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 23: Tackling Umbraco: Case Study on NFL Ops Website Design

Responsive DesignResponsive DesignResponsive DesignResponsive Design

Page 24: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 25: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 26: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 27: Tackling Umbraco: Case Study on NFL Ops Website Design

DesktopsDesktopsDesktopsDesktops

Page 28: Tackling Umbraco: Case Study on NFL Ops Website Design

LaptopsLaptopsLaptopsLaptops

Page 29: Tackling Umbraco: Case Study on NFL Ops Website Design

TabletsTabletsTabletsTablets

Page 30: Tackling Umbraco: Case Study on NFL Ops Website Design

SmartphonesSmartphonesSmartphonesSmartphones

Page 31: Tackling Umbraco: Case Study on NFL Ops Website Design

Template StructureTemplate StructureTemplate StructureTemplate Structure

Page 32: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 33: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 34: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 35: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 36: Tackling Umbraco: Case Study on NFL Ops Website Design

Content BlocksContent BlocksContent BlocksContent Blocks

Page 37: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 38: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 39: Tackling Umbraco: Case Study on NFL Ops Website Design

ArchetypeArchetypeArchetypeArchetype

Page 40: Tackling Umbraco: Case Study on NFL Ops Website Design

ArchetypeArchetypeArchetypeArchetype

An alternative to the Grid for creatingcontent blocks

Newer sites should try both methods tosee what’s comfortable

Page 41: Tackling Umbraco: Case Study on NFL Ops Website Design

Archetype NestingArchetype NestingArchetype NestingArchetype Nesting

Great for complex layouts

Place repeatable, modular structuresanywhere in a page

Page 42: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 43: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 44: Tackling Umbraco: Case Study on NFL Ops Website Design

Archetype: Add arbitrary JSArchetype: Add arbitrary JSArchetype: Add arbitrary JSArchetype: Add arbitrary JS+ CSS+ CSS+ CSS+ CSS

Allows you to add scripts that change theway the backoffice works

Knowledge of Angular or packages notneeded

// toggle 'wide mode' $(document).on('click', '.nfl-toggle-wide', function () { $('.form-horizontal, .form-vertical').toggleClass('form-horizontal form-vertical'); });

Page 45: Tackling Umbraco: Case Study on NFL Ops Website Design

Archetype RequirementsArchetype RequirementsArchetype RequirementsArchetype Requirements

Works best with Umbraco 7.2+

If using Courier/Umbraco as a Service,ensure it’s using the correct version ofnHibernate

Page 46: Tackling Umbraco: Case Study on NFL Ops Website Design

UaaS DeploymentUaaS DeploymentUaaS DeploymentUaaS Deployment

Page 47: Tackling Umbraco: Case Study on NFL Ops Website Design

UaaS DeploymentUaaS DeploymentUaaS DeploymentUaaS Deployment

Special considerations if you're porting an existingsite, vs. starting with UaaS from the beginning

Courier files must be created for not only content, butalso media, content types, custom datatypes, etc.

However, only content has a UI for quickly creatingthese courier files

Page 48: Tackling Umbraco: Case Study on NFL Ops Website Design

UaaS: Creating Courier FilesUaaS: Creating Courier FilesUaaS: Creating Courier FilesUaaS: Creating Courier Filesfor a Pre-Existing Sitefor a Pre-Existing Sitefor a Pre-Existing Sitefor a Pre-Existing Site

// Example: Saving all content types to trigger Courier var svc = ApplicationContext.Current.Services.ContentTypeService; var allcontenttypes = svc.GetAllContentTypes(); foreach (var ct in allcontenttypes) { svc.Save(ct); }

Page 49: Tackling Umbraco: Case Study on NFL Ops Website Design

Courier: Global SettingsCourier: Global SettingsCourier: Global SettingsCourier: Global Settings

Page 50: Tackling Umbraco: Case Study on NFL Ops Website Design

Don't Store Media in.../mediaDon't Store Media in.../mediaDon't Store Media in.../mediaDon't Store Media in.../media

Especially important for image-rich designs

Use blob storage or CDN

avoids size quota issues

Azure Blob Storage Provider plugin

Media tree will likely be faster

Page 51: Tackling Umbraco: Case Study on NFL Ops Website Design

Speed Up EditingSpeed Up EditingSpeed Up EditingSpeed Up Editing

Page 52: Tackling Umbraco: Case Study on NFL Ops Website Design

Speed Up Editing: Front-Speed Up Editing: Front-Speed Up Editing: Front-Speed Up Editing: Front-end Edit Buttonend Edit Buttonend Edit Buttonend Edit Button

@{ var auth = new HttpContextWrapper(HttpContext.Current).GetUmbracoAuthTicket(); if (auth != null) { var curruser = ApplicationContext.Services.UserService.GetByUsername(auth.Name); if (curruser != null && curruser.CanEdit()) { <a target="_blank" href="/umbraco#/content/content/edit/@Model.Content.Id" class="editpage">Edit ▶</a> } }}

Page 53: Tackling Umbraco: Case Study on NFL Ops Website Design

Speed Up Editing: DeleteSpeed Up Editing: DeleteSpeed Up Editing: DeleteSpeed Up Editing: DeleteOld RevisionsOld RevisionsOld RevisionsOld Revisions

-- BACKUP FIRST!!! DELETE FROM cmsPropertyData WHERE versionId NOT IN (SELECT versionId FROM cmsDocument WHERE updateDate > @oldest OR published = 1 OR newest = AND contentNodeId IN (SELECT DISTINCT nodeID FROM cmsDocument) DELETE FROM cmsPreviewXml WHERE versionId NOT IN (SELECT versionId FROM cmsDocument WHERE updateDate > @oldest OR published = 1 OR newest = AND nodeId IN (SELECT DISTINCT nodeID FROM cmsDocument) DELETE FROM cmsContentVersion WHERE versionId NOT IN (SELECT versionId FROM cmsDocument WHERE updateDate > @oldest OR published = 1 OR newest = AND ContentId IN (SELECT DISTINCT nodeID FROM cmsDocument) DELETE FROM cmsDocument WHERE versionId NOT IN (SELECT versionId FROM cmsDocument WHERE updateDate > @oldest OR published = 1 OR newest = AND nodeId IN (SELECT DISTINCT nodeID FROM cmsDocument)

Page 54: Tackling Umbraco: Case Study on NFL Ops Website Design

API ControllersAPI ControllersAPI ControllersAPI Controllersand Infinite Scrolland Infinite Scrolland Infinite Scrolland Infinite Scroll

Page 55: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 56: Tackling Umbraco: Case Study on NFL Ops Website Design

FakeControllerFakeControllerFakeControllerFakeController

using (var writer = new StringWriter()){ var routeData = new System.Web.Routing.RouteData(); routeData.Values.Add("controller", "UpdatesApi"); var fakeControllerContext = new ControllerContext( new HttpContextWrapper(new HttpContext( new HttpRequest(null, "http://google.com", null), new HttpResponse(null))), routeData, new Umbraco.Forms.Web.Helpers.FakeController());

var razorViewEngine = new RazorViewEngine(); var razorViewResult = razorViewEngine.FindPartialView(fakeControllerContext, "~/Views/Partials/UpdateList.cshtml", false

var viewContext = new ViewContext( fakeControllerContext, razorViewResult.View, viewData, new TempDataDictionary(), writer); razorViewResult.View.Render(viewContext, writer); result = writer.ToString();}return this.Request.CreateResponse(HttpStatusCode.OK, new { result });

Page 57: Tackling Umbraco: Case Study on NFL Ops Website Design

External DataExternal DataExternal DataExternal Data

Page 58: Tackling Umbraco: Case Study on NFL Ops Website Design

When You Should KeepWhen You Should KeepWhen You Should KeepWhen You Should KeepSome Data Outside UmbracoSome Data Outside UmbracoSome Data Outside UmbracoSome Data Outside Umbraco

When there’s content related to a nodethat must change very frequently

Publishing is computationally expensive

Invalidates the node’s cache

Page 59: Tackling Umbraco: Case Study on NFL Ops Website Design

When You Should KeepWhen You Should KeepWhen You Should KeepWhen You Should KeepSome Data Outside Umbraco:Some Data Outside Umbraco:Some Data Outside Umbraco:Some Data Outside Umbraco:Case 1Case 1Case 1Case 1

Page 60: Tackling Umbraco: Case Study on NFL Ops Website Design

When You Should KeepWhen You Should KeepWhen You Should KeepWhen You Should KeepSome Data Outside Umbraco:Some Data Outside Umbraco:Some Data Outside Umbraco:Some Data Outside Umbraco:Case 2Case 2Case 2Case 2

You Make The Call - Interactive Instant Replay Simulation

Page 61: Tackling Umbraco: Case Study on NFL Ops Website Design
Page 62: Tackling Umbraco: Case Study on NFL Ops Website Design

Questions?Questions?Questions?Questions?


Recommended