Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered...

24
Sitecore SIP 4.0 Architectural Changes in SIP 4.0 Rev: 23 May 2013 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved. Sitecore SIP 4.0 Architectural Changes in SIP 4.0 A developer's guide to the important changes that have been implemented in SIP 4.0

Transcript of Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered...

Page 1: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0 Architectural Changes in SIP 4.0 Rev: 23 May 2013

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Sitecore SIP 4.0

Architectural Changes in SIP 4.0 A developer's guide to the important changes that have been implemented in SIP 4.0

Page 2: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 2 of 24

Table of Contents

Chapter 1 Introduction .......................................................................................................................... 3 Chapter 2 Global Changes................................................................................................................... 4

2.1 SIP is no Longer an Out of the Box Intranet Solution ............................................................. 5 2.1.1 Features in SIP 4.0.............................................................................................................. 5 2.1.2 All SIP Features are Separated into Modules ..................................................................... 5 2.1.3 SIP 4.0 Contains No Front-end UI Elements ...................................................................... 6 2.1.4 Features Removed from SIP 4.0 ......................................................................................... 6

2.2 Architecture Changes for the Modular Approach .................................................................... 7 2.2.1 The Modules Work Independently ...................................................................................... 8 2.2.2 SIP 4.0 Works in Live Mode ................................................................................................ 8

Chapter 3 The SIP Modules ................................................................................................................. 9 3.1 Easy Upload Module ............................................................................................................. 10

3.1.1 Interaction with Other Modules ......................................................................................... 11 3.2 RSS Engine Module .............................................................................................................. 12

3.2.1 Interaction with Other Modules ......................................................................................... 13 3.3 Draft Mode Module ................................................................................................................ 14 3.4 User Profile Module ............................................................................................................... 16 3.5 DCF (Data Channel Framework) Module ............................................................................. 18 3.6 Search Module ...................................................................................................................... 20 3.7 Language Engine Module ..................................................................................................... 21

3.7.1 Interaction with Other Modules ......................................................................................... 23 3.8 Site Tools Module ................................................................................................................. 24

Page 3: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 3 of 24

Chapter 1

Introduction

This document describes the key architectural changes that have been implemented in SIP 4.0.

In earlier versions of SIP it was very difficult to leverage functionality from the core CMS platform and to integrate with other modules in the Sitecore portfolio — DMS, Web Forms for Marketers, Email Campaign Manager, Multi-site Foundry, and so on. We have therefore decided to implement a new architecture.

SIP in now developed in a modular fashion. This means that the key pieces of functionality that together make up the Intranet product, can be deployed together or as individual modules and can be easily integrated with Sitecore CMS and other Sitecore products.

This document describes some of the core technical changes that have been implemented to facilitate this modular approach.

This document contains the following chapters:

Chapter 1 — Introduction This introduction to the manual.

Chapter 2 — Global Changes This chapter describes the important global changes that have been made in SIP 4.0.

Chapter 3 — The SIP Modules This chapter describes each module in the new SIP 4.0 architecture and lists the important changes that have been implemented in each module.

Page 4: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 4 of 24

Chapter 2

Global Changes

This chapter describes the important global changes that have been made in SIP 4.0.

This chapter contains the following sections:

SIP is no Longer an Out of the Box Intranet Solution

Architecture Changes for the Modular Approach

Page 5: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 5 of 24

2.1 SIP is no Longer an Out of the Box Intranet Solution

Based on the enormous amount of feedback that we received from partners and developers, we have removed all the pre-configured visual elements and features that were restricting development with SIP.

As a result of this fundamental change, SIP is no longer an out of the box Intranet portal solution. SIP is now a flexible platform on which you can build Intranet solutions. We are leveraging best-practice CMS methodology and leaving all the front-end customization and implementation to the developers.

We have therefore removed the elements that constrained developers, such as, the web part features and the restrictive CSS page layout templates from the product.

However, to demonstrate how our current range of features works on an Intranet site, we have created a set of sample pages for SIP 4.0. These pages are available as a Sitecore package that you can download from the SDN.

Important We recommend that you do not use these sample pages in production environments. However, you can extend them to suit your requirements.

2.1.1 Features in SIP 4.0

The following core Intranet-specific functionality has been retained and improved:

Easy Editing — you can use the Page Editor to quickly create, edit, and save intranet content.

Easy Uploading — you can easily upload attachments to a page. This feature uses Silverlight.

Private Drafts — when you edit and save a content item it is saved as a private draft. Private drafts can only be viewed by you and other specific users that you have shared them with. The private drafts functionality is based on the CMS workflow system and can be extended accordingly.

Language Fallback Engine — you can specify a default corporate language for your Intranet solution as well as multiple local languages for different territories. This feature acts as a fallback mechanism — if the content is not available in the local language, it is displayed in the corporate language.

Intranet User Profiles — these are pre-defined data templates that store standard information about user profiles.

Data Channel Framework — you can segment information on the Intranet according to specific target groups. A target group can be any group of users, for example, corporate departments.

Search — the Intranet search feature uses the new Lucene.DLL that is included in CMS 6.6 to

search within documents and related pages on your Intranet.

2.1.2 All SIP Features are Separated into Modules

All the SIP functionality is now contained in the following modules:

Draft Mode

Language Fallback Engine

Search

RSS

Page 6: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 6 of 24

DCF — Data Channel framework

User Profiles

Easy Upload — based on Silverlight

Site Tools

2.1.3 SIP 4.0 Contains No Front-end UI Elements

The only UI elements that SIP 4.0 contains are:

Localized placeholder — the Language Engine module.

Easy Upload module:

o Easy Upload control.

o Slideshow dialog.

DCF module:

o Target Groups page.

o User Target Groups control.

Draft Mode module — Draft Mode Info control.

These are renderings, placeholders, and dialog boxes that developers can integrate with their own templates.

2.1.4 Features Removed from SIP 4.0

The following features have been removed from SIP 4.0:

Activity Calendar

Phonebook

Interactive Organisation Charts

Employee Handbook

Discussion Forum

Blogs

Project Room

Message Board

Canteen Menu

Booking form

Image Slideshow

Quick Polls

Automatic sitemap

Page 7: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 7 of 24

2.2 Architecture Changes for the Modular Approach

The following key changes have been made in SIP 4.0 to accommodate the new modular architecture.

Every Namespace has been changed to reflect the new modular structure

The various classes have been allocated to the appropriate modules and have therefore been given new namespaces to reflect the module that they belong to.

Each module has its own settings file

Each module has its own include file that you can use to add the necessary changes to the web.config

file.

The include files contain the settings that relate to the current module.

For example, the following modules contain a setting that specifies the target sites:

Module Setting

Language Engine Intranet.LanguageEngine.Sites

Draft Mode Intranet.DraftMode.Sites

When you use these settings, the features in the current module are only applied to the target sites that you specify.

There is no unified Intranet Settings file

Each individual module has its own settings item. The settings items are stored at:

/sitecore/System/Modules/Intranet/[Module Name]/Settings

Sitecore.Intranet.dll is not the only SIP assembly

Because all the SIP functionality has been split into modules, you should use the individual module libraries to perform SIP related functions.

The Intranet.Util class has been discontinued

The Intranet.Util class has been discontinued because every module would have to reference this

library. It would therefore be impossible to use the modules with other products without referencing the

Intranet.Utill.dll.

A number of modules have their own pipelines

To allow customers to change the behavior of SIP, we have created pipelines for a subset of the modules.

The following modules have their own pipelines:

Language Engine

Search

RSS

User profiles

Site Tools

For more information about each of the SIP modules, see the section The SIP Modules.

Page 8: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 8 of 24

Modules use the Sitecore.Configuration.Factory class to access each other

To allow individual modules to use the logic in the other modules, we use the

Sitecore.Configuration.Factory class. The Sitecore.Intranet assembly contains

abstractions and their default implementations. It registers these default implementations in the

Sitecore.Configuration.Factory class.

The individual modules contain implementations of the appropriate abstractions and register them in

Sitecore.Configuration.Factory class instead of the default implementations.

For more information about the Sitecore.Configuration.Factory class, see the blog

http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/The-Sitecore-ASPNET-CMS-Configuration-Factory.aspx.

2.2.1 The Modules Work Independently

If you do not need certain modules and do not deploy them, the rest of the modules will still work together.

If you remove a number of modules from the solution, the remaining modules will still work together.

2.2.2 SIP 4.0 Works in Live Mode

SIP 4.0 has only been tested to work in live mode. In subsequent releases Sitecore will support implementing SIP 4.0 in a distributed environment — with multiple Core, Master, and Web databases spread across distributed Content Delivery and Content Management servers.

Page 9: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 9 of 24

Chapter 3

The SIP Modules

This chapter lists the technical changes that have been made to each module in the new architecture.

This chapter contains the following section:

Easy Upload Module

RSS Engine Module

Draft Mode Module

User Profile Module

DCF (Data Channel Framework) Module

Search Module

Language Engine Module

Site Tools Module

Page 10: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 10 of 24

3.1 Easy Upload Module

The following changes have been made to the Easy Upload module:

Config Changes

The module settings have been moved to the following config files:

o App_config\Include\Intranet\Modules\Intranet.EasyUpload.config

o App_config\Include\Intranet\Modules\Intranet.Attachments.config

The Intranet.EasyUpload.ShowInBrowseMode setting has been added.

If this setting is set to true, the control is shown in both browse mode and in the Page Editor.

If this setting is set to false, the control is only shown in the Page Editor.

The <ignore contains="EasyUpload/UploadTarget.aspx"/> node has been added to

the shell rule node of the AntiCsrf configuration.

You must use the EasyUpload control to fix uploading files.

The <Attachments> node has been added.

This setting lets you use the features of the Easy Upload module within the other modules. You

must use the Sitecore.Configuration.Factory class to do this.

For more information about the Sitecore.Configuration.Factory class, see the blog

http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/The-Sitecore-ASPNET-CMS-Configuration-Factory.aspx.

The media:upload command has been renamed as media:intranetupload.

Code Changes

All the classes have been moved to the following namespaces:

o Sitecore.Intranet.EasyUpload

o Sitecore.Intranet.Attachments

All the layouts have been deleted except FileDropAreaUpload.ascx.

FileDropAreaUpload.ascx has been renamed as EasyUpload.ascx.

The base class of the UploadTarget class has been changed from

Sitecore.Shell.Web.UI.SecurePage to System.Web.UI.Page.

This class allows everyone to upload files — not just users who are logged in.

The authentication mechanism has been changed.

If the user is not logged in, the files are uploaded by the sitecore\anonymous user.

The Attachments class has been added.

This class implements the IAttachments interface and provides a number of Easy Upload

module features that you can use in other modules.

The UploadTarget property has been added to the EasyUpload control.

Page 11: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 11 of 24

This property specifies the destination that the files are uploaded to. If the UploadTarget

property is empty, the control tries to upload the files to the File Drop Area destination of the current item.

Item Changes

The Easy Upload Settings template has been added.

This template contains the parameters of the EasyUpload sublayout.

The master\sitecore\layout\Sublayouts\Tools\File Drop Area Upload sublayout

has been renamed as Easy Upload and moved to

master\sitecore\layout\Sublayouts\Intranet\Easy Upload.

3.1.1 Interaction with Other Modules

The Easy Upload module affects the behavior of the following modules:

Search — makes it possible to search through shared attachments.

Site Tools — makes it possible to edit shared attachments.

Page 12: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 12 of 24

3.2 RSS Engine Module

The following changes have been made to the RSS Engine module:

Config Changes

The SIP_RSS.config file has been renamed as

App_config\Include\Intranet\Modules\Intranet.RSS.config. All the module

settings have been moved to it.

The Intranet.FeedPrefix setting has been renamed as Intranet.RSS.FeedPrefix.

The PortalRSSFeeds.Enabled setting has been renamed as Intranet.RSS.Enabled.

The Intranet.RSS.Site setting has been added.

The Intranet.RSS.RemoveTagsIfFieldNotFound setting has been added.

This setting specifies the source database for the RSS Engine module.

The detectFeedRequest pipeline has been removed.

The SIP_Feeds pipelines group has been renamed as RSSEngine.

The <RSS> node has been added.

This setting lets you use the features of the RSS module within other modules. You must use the

Sitecore.Configuration.Factory class to do this.

The <rssSettings>, <rssDataService>, and <processorHelpersFactory> nodes have

been added to implement dependency injection within the RSS module.

param nodes have been added under the processor nodes to pass the necessary parameters

using dependency injection.

For more information about dependency injection see the blog http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/Dependency-Injection-with-the-Sitecore-ASPNET-CMS.aspx.

Code Changes

All the classes have been moved to the Sitecore.Intranet.RSS namespace.

The Settings class has been added.

This class contains settings from both the configuration file and the configuration item.

The FeedSectionKeys class has been deleted.

The logic of the ExpandRSSBodyMarkers class has been changed. If there is no field for the

marker, it is removed from the body.

The IntranetPortalFeed class has been renamed as RSSEngineFeed.

The CurrentIntranetSite property has been moved from the IntranetUtil class to the

Settings class and renamed as Site.

The FeedHelper class has been renamed as RSS and the IsFeedRequest property has been

removed from it.

All the methods of the LocalizedXslHelper class have been removed except:

Page 13: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 13 of 24

o bool RssFeedsEnabled(XPathNodeIterator iterator)

o string GetItemFeedURL(XPathNodeIterator iterator)

The IDataService interface has been added. It specifies methods to get updated items.

The DataService class implements the IDataService interface now. It has been moved to

the Sitecore.Intranet.RSS namespace.

The ItemEqualityComparer and SearchUtil utility classes have become internal.

Item Changes

The RSS Feed Entry Content template has been moved from

/sitecore/templates/Intranet/Configuration to

/sitecore/templates/Intranet/RSS.

This template has also been assigned a new ID.

The RSS Settings template has been created in /sitecore/templates/Intranet/RSS.

This template is used to configure the settings in the RSS Engine module.

A Settings item has been created in /sitecore/system/Modules/Intranet/RSS.

The IntranetPortalFeed item has been renamed as RSSEngineFeed.

3.2.1 Interaction with Other Modules

The DCF module affects the behavior of the RSS module in the following way:

It adds an implementation of the IDataChannelFramework interface. This means that the DCF

filtration logic is applied to feeds.

Page 14: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 14 of 24

3.3 Draft Mode Module

The following changes have been made to the Draft Mode module:

Config Changes

The settings for the Draft Mode module are now contained in a separate configuration file —

App_config\Include\Intranet\Modules\Intranet.DraftMode.config.

The <extension namespace=http://www.sitecore.net/dm …> node has been added

to the xslExtensions.

This namespace extension defines the method that is used to check whether or not an item is a private draft and to get the URL link that is used to share the draft with other users.

A private draft is not accessible to other users who are not the owner of the item unless you have specifically shared it with them.

The Intranet.DraftWorkflows setting has been renamed as

Intranet.DraftMode.DraftWorkflows.

The Intranet.DraftMode.Sites setting has been added.

This setting specifies which websites the draft mode feature should be applied to.

The <DraftMode> and <DraftModeDiscardChanges> nodes have been added.

These settings let you use the features of the Draft Mode module within other modules. You must

use the Sitecore.Configuration.Factory class to do this.

The <draftModeSettings> and <draftModeShareLinkProvider> nodes have been

added to implement dependency injection within the Draft Mode module.

The param nodes have been added under some nodes to use dependency injection to pass the

necessary parameters.

For more information about dependency injection see the blog http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/Dependency-Injection-with-the-Sitecore-ASPNET-CMS.aspx.

Code Changes

All the Draft Mode module classes have been moved to the Sitecore.Intranet.DraftMode

namespace.

The DraftModeXslHelper class has been added.

This class provides the xslt extension that works with the draft mode logic.

The following changes have been made to the DraftModeUtil class:

o The class implements the IDraftMode interface that specifies the core methods of the Draft

Mode module.

o The WorkflowInfo GetDraftInfo(Item item) method has been removed.

You can use the

Sitecore.Context.Database.DataManager.GetWorkflowInfo(item) method

instead.

Page 15: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 15 of 24

o The IWorkflow GetWorkflow(string workflowID) method has been removed.

You can use the Sitecore.Context.Database.WorkflowProvider.GetWorkflow(workflowID)

method instead.

o The DraftWorkflowIDs property has been moved to the Settings class.

o The GetAllItemVersions methods have been removed.

o The overrides of the HasAnyPublishableVersion and IsVersionAccessible methods

have been deleted.

o The IsDraftWorkflow, IsDraftState, IsItemAccessedViaShareLink and

IsUserOwnerOfVersion methods have become protected.

The DiscardChanges class has been added.

All the methods related to the Discard Changes command have been move to this class.

The ShareLinkProvider class has been added.

All the methods related to Share Link have been moved to this class.

The IsFilterItemsEnabled() and IsDraftModeSite() methods have been moved from

the IntranetUtil class to the DraftModeItemProvider class.

The ItemUtil and DraftModeStringUtil classes have become internal.

The Settings class has been added.

Item Changes

The Use Draft Mode Workflow template has been added.

If you want to use draft mode with a content item, this template must be one of its base templates.

If you do not want to use draft mode with a content item, this template must not be one of its base templates.

Tools

In the Enable draft mode wizard, a Selects sites step has been added.

This step only appears if the Intranet.DraftMode.Sites setting contains more than one

site. The changes are applied to the sites that you select.

Page 16: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 16 of 24

3.4 User Profile Module

The following changes have been made to the User Profile module:

Config Changes

The App_config\Include\Intranet\Modules\Intranet.Profiles.config file has

been added.

The getSiteLanguageList node has been added to the pipelines.

This node adds the GetUserPreferredLanguage processor to the top of the

getSiteLanguageList pipeline that is specified in the Language Engine module.

The Intranet.UserProfileTreeDepth setting has been renamed as

Intranet.Profiles.UserProfilesTreeDepth.

The Intranet.Profiles.UserProfilesFolder setting has been added.

This setting specifies the folder in the content tree under that user profiles are stored in.

The UserProfile setting has been moved from the

App_Config\IntranetSettings.config file to the Intranet.Profiles.config file and

the setting has been renamed as Intranet.Profiles.UserProfileTemplate.

The <UserProfileProvider> node has been changed.

This setting lets you use the features of the User Profile module within other modules. You must

use the Sitecore.Configuration.Factory class to do this.

o The providers sub-node has been removed.

o The excludeDomains attribute of the UserProfileProvider node has been moved to

the Intranet.Profiles.ExcludeDomains setting.

o The createUserProfiles attribute of the UserProfileProvider node has been

removed.

o The param node has been added under the UserProfileProvider node to pass the

necessary parameters using dependency injection.

The <profilesSettings> node has been added to implement dependency injection within the

User Profile module.

For more information about dependency injection see the blog http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/Dependency-Injection-with-the-Sitecore-ASPNET-CMS.aspx.

Code Changes

All the User Profile module classes have been moved to the Sitecore.Intranet.Profiles

namespace.

The GetUserPreferredLanguage class has been added.

This class is the processor of the getSiteLanguageList pipeline. It adds the user preferred

language to the list of languages.

The following changes have been made to UserProfileProvider class:

Page 17: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 17 of 24

o The ExcludeDomains and CreateUserProfiles properties have been removed.

o The Initialize, GetProfile, and CreateUserProfile methods have been removed.

o The bool CreateProfile(string userName) and IUserProfile

GetProfile(string userName) methods have been added.

o The UserProfileProvider class is no longer derived from

System.Configuration.Provider.ProviderBase.

The following properties and methods have been removed from the Profile class:

o CanteenItem

o ProfileItemID

o Favorites

o Name

o DisplayName

o HasInitials

o SetPreferredCanteen

The GetFavorites method has been added to the Profile class.

The Settings class has been added.

This class provides the settings from the configuration file.

Item Changes

The /sitecore/content/Intranet/User Profiles item has been added.

The user profile items are stored in this item.

The Intranet.User Profile template has been renamed as User Profile and it has

been moved to the /sitecore/templates/Intranet/User Profiles folder.

The Canteen field has been removed from the User Profile template.

The Intranet.UserProfile branch has been renamed as User Profile and it has been

moved to /sitecore/templates/Branches/Intranet/User Profiles.

Page 18: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 18 of 24

3.5 DCF (Data Channel Framework) Module

The following changes have been made to the DCF (Data Channel Framework) module:

Config Changes

The App_config\Include\Intranet\Modules\Intranet.DCF.config file has been

added.

The <DataChannelFramework> node has been added.

This setting lets you use the features of the DCF module within other modules. You must use the

Sitecore.Configuration.Factory class to do this.

o The param node has been added. This node uses dependency injection to pass the

necessary parameters.

The <DCFSettings> node has been added to implement dependency injection within the DCF

module.

Code Changes

All the DCF module classes have been moved to the Sitecore.Intranet.DCF namespace.

The Sitecore.Intranet.Fields.IntranetTargetGroupsField class has been

removed.

The Sitecore.Modules.DataChannelFramework.WebControls.UserTargetGroupsTree

class has been removed.

The SettingsItemId property has been added to the Constants class.

This property contains the ID of the item that contains the settings for the DCF module.

The IntranetSettings.DCFIsDisabled property has been removed.

The following methods have been added to the TargetGroupsManager class:

o GetItemSubscriptionsValue — takes an item and returns a pipe separated list of the

target group IDs that have been entered in the Target Groups field of the item

o SetItemSubscriptionsValue — takes an item and a pipe separated list of target group

IDs and enters the target group IDs in the Target Groups field of the item.

The DataChannelFramework class has been added.

This class implements the IDataChannelFramework interface and provides a number of DCF

module features that you can use in other modules. You must use the

Sitecore.Configuration.Factory class to do this.

The Settings and Texts classes have been added.

The Sitecore.Intranet.forms.ProfileDCFEditor.Editor page has been changed:

o This page has been renamed as TargetGroupsForm.

o It has been moved to the Sitecore.Intranet.DCF.UI.Forms namespace.

o You can now edit the Target Groups of an item.

Page 19: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 19 of 24

To edit the Target Groups of an item, you must add the ID of the target item to the query string.

The UserTargetGroups control has been added. Place this control on the page if you want the

current user to be able to edit the Target Groups.

Item Changes

The master\sitecore\content\Intranet\Site config\Target Groups item has

been moved to master\sitecore\content\Intranet\Data Channel Framework.

The master\sitecore\content\Intranet\Home\Site tools\UserTargetGroups item

has been renamed as Target Groups From and moved to

master\sitecore\content\Intranet\Data Channel Framework.

The master\sitecore\layout\Layouts\Frontend Editor\Intranet

FrontendEditing UserTargetGroups layout has been renamed as Target Groups Form

and moved to master\sitecore\layout\Layouts\Intranet\Data Channel

Framework.

The master\sitecore\layout\Sublayouts\Intranet\Data Channel

Framework\User Target Groups sublayout has been added.

Place it on the page if you want the current user to be able to edit the Target Groups.

The master\sitecore\templates\Intranet\Intranet.TargetGroup template has

been renamed as Target Group and moved to

master\sitecore\templates\Intranet\Data Channel Framework\Target Groups.

The Target Groups section of master\sitecore\templates\Intranet\Base

templates\Intranet.BaseTemplate template has been moved to a separate template master\sitecore\templates\Intranet\Data Channel Framework\Target

Groups\Target Groups.

The master\sitecore\templates\Intranet\Intranet.FrontendEditing.UserTargetG

roups template has been renamed as Target Groups Form and moved to

master\sitecore\templates\Intranet\Data Channel Framework\Target Groups.

The core\sitecore\system\Field types\Intranet\Target Groups item has been

moved to core\sitecore\system\Field types\Intranet\Target Groups.

Page 20: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 20 of 24

3.6 Search Module

The following changes have been made to the Search module:

Config Changes

The App_config\Include\Intranet\Modules\Intranet.Search.config file has been

added.

The Intranet index has been added to the search indexes.

The search.filterPipeline pipeline has been added.

This pipeline is used to filter search result data.

The Intranet.Search.IndexName setting has been added.

This setting specifies the name of the Search module index.

Code Changes

All the Search module classes have been moved to the Sitecore.Intranet.Search

namespace.

The Sitecore.Intranet.Search.Crawlers.Crawler has been added.

This crawler is used to collect information for the search index.

All the auxillary classes of LuceneDocParser have been moved to separate classes in the

Sitecore.Intranet.Search.Parsers.LuceneDocParserClasses namespace.

The MediaUtils and AttachmentsHelper classes have become internal.

The Sitecore.Intranet.Search.Utils.Constants class has been added.

This class contains the following properties:

o BuiltinFields.IsMedia — this property is used to determine whether or not the item in

the index is a media item.

You can use this field to filter the data in the index.

o SearchPipelineNames.FilterPipelineName — this property specifies the name of the

pipeline.

You can use this pipeline to filter the search results.

o SearchPipelineNames.SearchResultCustomDataKey — this key is used to store

temporary search results as arguments of the search.filterPipeline pipeline .

The SearchHelper class has been added:

o The Search method has been added with overload.

This method is used to search for data in the search index.

o The Rebuild method has been added.

This method is used to rebuild the search index as required.

Page 21: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 21 of 24

3.7 Language Engine Module

The following changes have been made to the module:

Config Changes

The App_config\Include\Intranet\Modules\Intranet.LanguageEngine.config file

has been added.

The getSiteLanguageList pipeline has been added.

This pipeline returns a list of the languages that are used on the website.

The getContentLanguageList pipeline has been added.

This pipeline returns a list of the languages that are used for the content in on the website.

The Intranet.LanguageEngine.Sites setting has been added.

This setting specifies a list of the websites which the language engine features are applied to.

The <LanguageResolver> node has been added.

This setting lets you use the features of the Language Engine module within other modules. You

must use the Sitecore.Configuration.Factory class to do this.

The <LanguageEngineSettings>, <LanguageEngineListSource> nodes have been

added to implement dependency injection within the Language Engine module.

param nodes have been added under some nodes to pass the necessary parameters using

dependency injection.

Code Changes

All the Language Engine module classes have been moved to the

Sitecore.Intranet.LanguageEngine namespace.

The IntranetLanguageResolver class from the Sitecore.Intranet.Utils namespace

has been split into a number of classes:

o LanguageListSource

This class provides lists of website and content languages.

Note

To implement a custom LanguageListSource class, you must implement an

ILanguageListSource interface.

o GetDefaultLanguage

This class is a processor that adds the Sitecore context language to the list of languages.

o GetCorporateLanguage

This class is a processor for the getSiteLanguageList pipeline. It adds the corporate

language to the list of website languages.

o GetQueryStringLanguage

This class is a processor of the getContentLanguageList pipeline. It adds the language

from the current query string to the list of content languages.

Page 22: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 22 of 24

o LanguageResolver

This class provides methods that return the current site, content languages, and the specified item in these languages.

Note

To implement a custom LanguageResolver class, you must implement an

ILanguageResolver interface.

o LanguageSwitcher

This class lets you to switch the context language to the specified language. The context item also switches to a version in the language that you specify.

If there is no version available in the language that you specify, the context item switches to an empty version in the specified language.

o ContentAreaSwitcher

This class lets you switch the context language to the content language.

The context language is the standard CMS context language —

Sitecore.Context.Language.

The content language is specified by the getContentLanguageList pipeline.

o LanguageUtil

This class contains some auxiliary methods. For example, a method that checks the accessibility of the specified language for the current user.

This class is not available for external use.

o ContextManager

This class contains methods that let you switch the context language to a language that you specify.

This class is not available for external use.

The GetLanguageListAgrs class has been added.

This class represents the arguments of the getSiteLanguageList and

getContentLanguageList pipelines. It specifies the type of an object that is used to pass the

arguments though the pipelines.

To add a language to the appropriate list, you must add the language to the LanguageList

property of the GetLanguageListAgrs class.

You can also use the Sitecore.Pipelines.PipelineArgs class to pass the arguments

through the pipelines.

If you use the Sitecore.Pipelines.PipelineArgs class, you must add a new language to

the LanguageList element of the CustomData dictionary property.

At the beginning of each request, the SetContextLanguage processor sets the context

language to the site language.

The Sitecore.Intranet.Utils.LocalizedXslHelper class has been renamed as

LanguageEngineXslHelper.

Now the class only contains methods that relate to the Language Engine module. All the other methods have been removed.

Page 23: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Architectural Changes in SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 23 of 24

The Sitecore.Intranet.HtmlControls.LocalizedPlaceholder control has been

renamed as ContentAreaPlaceholder and moved to the

Sitecore.Intranet.LanguageEngine.UI.WebControls namespace.

The Sitecore.Intranet.XslControls.ContentArea control has been renamed as

ContentAreaPlaceholder and moved to the

Sitecore.Intranet.LanguageEngine.UI.XslControls namespace.

The PipelineNames class has been added. It contains the names of the pipelines.

The Settings class has been added.

This class contains settings from both the configuration file and the configuration item.

The Text class has been added.

This class contains the texts which should be translated.

Item Changes

The master\sitecore\system\Modules\Intranet\Language Engine\Settings item

has been added.

This item contains the following setting:

o The CorporateLanguage field specifies the corporate language.

The master\sitecore\templates\Intranet\Language Engine\Language Engine

Settings template has been added.

3.7.1 Interaction with Other Modules

The User Profile module affects the behavior of the Language Engine module in the following way:

The User Profile module adds the GetUserPreferredLanguage processor to the top of the

getSiteLanguageList pipeline.

This means that the preferred language of the current user becomes the highest priority site language.

The Language Engine module affects the behavior of the following modules:

DCF

Draft Mode

Easy Upload

RSS Engine

Page 24: Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.

Sitecore SIP 4.0

Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright © 2001-2013 Sitecore. All rights reserved.

Page 24 of 24

3.8 Site Tools Module

The following changes have been made to the module:

Config Changes

The App_config\Include\Intranet\Modules\Intranet.SiteTools.config file has

been added.

The webedit:close command has been renamed as webedit:intranetclose.

The <siteToolsSettings> node has been added to implement dependency injection within

the Site Tools module.

The param nodes have been added under some nodes to pass the necessary parameters using

dependency injection.

Code Changes

All the Site Tools module classes have been moved to the Sitecore.Intranet.SiteTools

namespace.

The Settings class has been added.

Item Changes

The core\sitecore\content\Applications\WebEdit\Ribbons\WebEdit\Buttons\Save

and Close item has been added.