SlideShare a Scribd company logo
DEEP DRIVE INTO THE
SITECORE CLIENT PIPELINES
This slideshow come from http://sitecoreblog.blogspot.be/ to explain
how the SPEAK client Pipelines works
Intro
In this slideshow, I will the Sitecore Client pipelines. This is poorly
documented even if it is used everywhere.
Do not confuse the client pipelines who are used by SPEAK on the client side
with the server pipeline that you probably already know well.
To be as concrete as possible, I will take an example: the process which
append when you click the add rendering button in the ExperienceEditor.
It was really difficult to explain it in a post or slideshow but I hope that it will
be clear enough if you have questions or remarks please let a message on
this blog post.
Overview
The next slide present an overview of the whole process.
Don’t be scared by the complexity we will go in it step by step.
You will probably need to go back to this slide to see the where we are
in the process.
Sitecore - Deep drive into the Sitecore Client pipelines
When a command is
triggered, the
url /sitecore/shell/Applicatio
ns/WebEdit/WebEditRibbon.
aspx is called with
parameters and the
method OnPreRender() of
this class is called (1).
This class call the
base.OnPreRender() (2)
For this first call, IsEvent is true
and IsResult is false, so
the this.RaiseEvent(); is called (3). This
is where the Execute method of the
command's associated class is
triggered.
The Execute method initialize the
parameters and then the
Context.ClientPage.Start(this, "Run",
parameters) method is call.
This register a method to trigger in the
pipeline (4).
The Execute method is now finished and
the RunPipelines() method of
the ClientPage class is called.
The RunPipeline will start the
client pipeline.
This will add a
command "SetPipeline" in it to
be executed on the client side.
Then, Run() method registered
sooner is process (4)
args.IsPostback is false so the
code in (6) is executed.
The SheerResponse.ShowModal
Dialog add a
command ShowModalDialog in
the client pipeline.
The args.WaitForPostback() will
suspend the client process we
will see it later.
The call to the command (4) and the WebEditRibbon.aspx (1) is finished and return the
following pipeline as response in json.
As you can see, 3 commands are registered.
(The set attribute is automatic and I am not sure that it is useful :-) )
This response send by the server
contain the info about the
pipeline and the commands to
execute.
The Javascript
method scRequestHandler from
the Sitecore.js file will process
it.
This method call the handle(),
who call the resume() and then
the process() method is called
foreach command in the
pipeline.
This process() method is really
the core of this pipeline system
on the client side!
It is basically just a big switch
with all the possible messages
allowed by Sitecore.
Depending on the command
name, different javascript
method are triggered.
COMMAND PROCESSING
1. The SetPipeline command is processed and just set a pipeline id to the curent pipeline to be able to retrieve it later.
2. The ShowModalDialog command display the Dialog.
3. The process is suspend so the last command is not triggered.
When you click on the select
button of the dialog, the
javascript will call
the resume() method.
This resume method will call the
latest command before the
suspend.
In our case, it will call the
ShowModalDialog command
again.
For this second call to
the ShowModalDialog command,
the process will be almost the
same:
1. Call the WebRibbon.aspx
2. Call the base class (13). But,
this time, this.Isresult is true
so the method called is the
this.ResumePipeline()
REMARKS ABOUT THE STORAGE OF THOSE
PIPELINE ON THE SERVER SIDE
• The pipeline ID who have perform the request is stored into
Sitecore.Context.ClientPage.ClientRequest.Pipeline (ShortID format)
• The suspended pipelines are stored into the user session accessible with
WebUtil.GetSessionValue("SC_SUSPENDED_PIPELINES")
• The pipelines commands for the current pipelines are visible in debug in
Sitecore.Context.ClientPage._pipelines but this is a private variable.
BACK IN THE RUN METHOD OF
THE COMMAND
This time args.IsPostBack is true
and args.HasResult is true but
AddRendering.IsSelectedDatasou
rceDialogPostBack(args) is false
because you didn't have select
the datasource yet. So the code
in (15) is executed.
1. The WebRibbon.aspx return a new pipeline in Json with a new ID
2. The process() method will process the different commands and suspend after the ShowModalDialog
3. When you will select the datasource the JS resume method will relaunch the ShowModalDialog
4. The Run() method is called again.
You should have understood the process and it is the same for the subdialog where you select the datasource. So I will
go faster :-)
This time the
AddRendering.IsSelectedDatasou
rceDialogPostBack(args) is true.
So it will register an Eval
command in the returned
pipeline.
Here the kind of Json returned
by this pipeline
Of course this pipeline will be
executed and process the
commands. The Eval command
will have the
parameter chrome:placeholder:c
ontroladded
This message will be handled by
the handleMessage() method in
the PlaceholderChromeType.js
to add this rendering in the
page.
And.... "Ouf" that is it. I hope that you have now a view on the ways Sitecore work on
the client side
If you have questions about this, please let a message on this blog post and I will try
to reply as best as I can.

More Related Content

PDF
JEE Programming - 04 Java Servlets
PDF
Servlet and servlet life cycle
DOC
CAS Demo Application Installation
DOCX
การเข ยนโปรแกรมต ดต_อฐานข_อม_ล
PPT
Servlet life cycle
PPTX
Timer Interceptor in Mule part 2
PPTX
A Heart Rate Validating Admission Webhook
RTF
Servlet lifecycle
JEE Programming - 04 Java Servlets
Servlet and servlet life cycle
CAS Demo Application Installation
การเข ยนโปรแกรมต ดต_อฐานข_อม_ล
Servlet life cycle
Timer Interceptor in Mule part 2
A Heart Rate Validating Admission Webhook
Servlet lifecycle

What's hot (20)

PPT
Servlet/JSP course chapter 1: Introduction to servlets
PPT
Servlet 01
PPTX
Javax.servlet,http packages
PPTX
java Servlet technology
PPTX
ASP.NET MVC 4 Request Pipeline Internals
PDF
Glassfish JEE Server Administration - Module 4 Load Balancer
PPT
Selenium RC Overview
PPTX
Initialize database in Mule part2
PPT
An Introduction To Java Web Technology
PDF
Weblogic as a windows service
ODP
Sockets in nach0s
PPT
S E R V L E T S
PPTX
Mule esb soap_service
PPTX
Mule management console installation with Tomcat
PPT
Servlet ppt by vikas jagtap
DOCX
692015 programming assignment 1 building a multi­threaded w
PPTX
Mule esb How to convert from Json to Xml in 5 minutes
PPT
Request dispatching in servlet
PPTX
ASP.NET MVC
PPT
Web
Servlet/JSP course chapter 1: Introduction to servlets
Servlet 01
Javax.servlet,http packages
java Servlet technology
ASP.NET MVC 4 Request Pipeline Internals
Glassfish JEE Server Administration - Module 4 Load Balancer
Selenium RC Overview
Initialize database in Mule part2
An Introduction To Java Web Technology
Weblogic as a windows service
Sockets in nach0s
S E R V L E T S
Mule esb soap_service
Mule management console installation with Tomcat
Servlet ppt by vikas jagtap
692015 programming assignment 1 building a multi­threaded w
Mule esb How to convert from Json to Xml in 5 minutes
Request dispatching in servlet
ASP.NET MVC
Web
Ad

Similar to Sitecore - Deep drive into the Sitecore Client pipelines (20)

PPTX
Asp Net Architecture
ODP
servlet 2.5 & JSP 2.0
PDF
Servlets lecture1
PDF
Mvc interview questions – deep dive jinal desai
PPTX
Unit 38 - Spring MVC Introduction.pptx
ODP
Http programming in play
PPT
ASP.NET MVC introduction
DOC
70562-Dumps
PDF
Workshop 27: Isomorphic web apps with ReactJS
DOCX
Server side programming bt0083
PDF
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 4...
PPTX
Asp.Net Mvc
DOCX
J2EE-assignment
PPTX
DOC
weblogic perfomence tuning
PDF
Spring MVC to iOS and the REST
PPT
Asp.net,mvc
PPS
Introduction To Mvc
PPTX
Integrating Servlets and JSP (The MVC Architecture)
PDF
Spring MVC Framework
Asp Net Architecture
servlet 2.5 & JSP 2.0
Servlets lecture1
Mvc interview questions – deep dive jinal desai
Unit 38 - Spring MVC Introduction.pptx
Http programming in play
ASP.NET MVC introduction
70562-Dumps
Workshop 27: Isomorphic web apps with ReactJS
Server side programming bt0083
Web Component Development Using Servlet & JSP Technologies (EE6) - Chapter 4...
Asp.Net Mvc
J2EE-assignment
weblogic perfomence tuning
Spring MVC to iOS and the REST
Asp.net,mvc
Introduction To Mvc
Integrating Servlets and JSP (The MVC Architecture)
Spring MVC Framework
Ad

Recently uploaded (20)

PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
PPTX
Introduction to Information and Communication Technology
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
PPTX
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx
DOCX
Unit-3 cyber security network security of internet system
PDF
Slides PDF The World Game (s) Eco Economic Epochs.pdf
PPTX
Introuction about ICD -10 and ICD-11 PPT.pptx
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PPTX
Funds Management Learning Material for Beg
PPTX
SAP Ariba Sourcing PPT for learning material
PPTX
international classification of diseases ICD-10 review PPT.pptx
PPTX
E -tech empowerment technologies PowerPoint
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
PDF
The Internet -By the Numbers, Sri Lanka Edition
PPTX
Introuction about WHO-FIC in ICD-10.pptx
PDF
The New Creative Director: How AI Tools for Social Media Content Creation Are...
PPT
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
PDF
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PDF
Sims 4 Historia para lo sims 4 para jugar
PptxGenJS_Demo_Chart_20250317130215833.pptx
Introduction to Information and Communication Technology
SASE Traffic Flow - ZTNA Connector-1.pdf
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx
Unit-3 cyber security network security of internet system
Slides PDF The World Game (s) Eco Economic Epochs.pdf
Introuction about ICD -10 and ICD-11 PPT.pptx
Job_Card_System_Styled_lorem_ipsum_.pptx
522797556-Unit-2-Temperature-measurement-1-1.pptx
Funds Management Learning Material for Beg
SAP Ariba Sourcing PPT for learning material
international classification of diseases ICD-10 review PPT.pptx
E -tech empowerment technologies PowerPoint
An introduction to the IFRS (ISSB) Stndards.pdf
The Internet -By the Numbers, Sri Lanka Edition
Introuction about WHO-FIC in ICD-10.pptx
The New Creative Director: How AI Tools for Social Media Content Creation Are...
isotopes_sddsadsaadasdasdasdasdsa1213.ppt
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
Sims 4 Historia para lo sims 4 para jugar

Sitecore - Deep drive into the Sitecore Client pipelines

  • 1. DEEP DRIVE INTO THE SITECORE CLIENT PIPELINES This slideshow come from http://sitecoreblog.blogspot.be/ to explain how the SPEAK client Pipelines works
  • 2. Intro In this slideshow, I will the Sitecore Client pipelines. This is poorly documented even if it is used everywhere. Do not confuse the client pipelines who are used by SPEAK on the client side with the server pipeline that you probably already know well. To be as concrete as possible, I will take an example: the process which append when you click the add rendering button in the ExperienceEditor. It was really difficult to explain it in a post or slideshow but I hope that it will be clear enough if you have questions or remarks please let a message on this blog post.
  • 3. Overview The next slide present an overview of the whole process. Don’t be scared by the complexity we will go in it step by step. You will probably need to go back to this slide to see the where we are in the process.
  • 5. When a command is triggered, the url /sitecore/shell/Applicatio ns/WebEdit/WebEditRibbon. aspx is called with parameters and the method OnPreRender() of this class is called (1).
  • 6. This class call the base.OnPreRender() (2)
  • 7. For this first call, IsEvent is true and IsResult is false, so the this.RaiseEvent(); is called (3). This is where the Execute method of the command's associated class is triggered.
  • 8. The Execute method initialize the parameters and then the Context.ClientPage.Start(this, "Run", parameters) method is call. This register a method to trigger in the pipeline (4). The Execute method is now finished and the RunPipelines() method of the ClientPage class is called.
  • 9. The RunPipeline will start the client pipeline. This will add a command "SetPipeline" in it to be executed on the client side. Then, Run() method registered sooner is process (4)
  • 10. args.IsPostback is false so the code in (6) is executed.
  • 11. The SheerResponse.ShowModal Dialog add a command ShowModalDialog in the client pipeline. The args.WaitForPostback() will suspend the client process we will see it later.
  • 12. The call to the command (4) and the WebEditRibbon.aspx (1) is finished and return the following pipeline as response in json. As you can see, 3 commands are registered. (The set attribute is automatic and I am not sure that it is useful :-) )
  • 13. This response send by the server contain the info about the pipeline and the commands to execute. The Javascript method scRequestHandler from the Sitecore.js file will process it.
  • 14. This method call the handle(), who call the resume() and then the process() method is called foreach command in the pipeline. This process() method is really the core of this pipeline system on the client side! It is basically just a big switch with all the possible messages allowed by Sitecore. Depending on the command name, different javascript method are triggered.
  • 15. COMMAND PROCESSING 1. The SetPipeline command is processed and just set a pipeline id to the curent pipeline to be able to retrieve it later. 2. The ShowModalDialog command display the Dialog. 3. The process is suspend so the last command is not triggered.
  • 16. When you click on the select button of the dialog, the javascript will call the resume() method. This resume method will call the latest command before the suspend. In our case, it will call the ShowModalDialog command again.
  • 17. For this second call to the ShowModalDialog command, the process will be almost the same: 1. Call the WebRibbon.aspx 2. Call the base class (13). But, this time, this.Isresult is true so the method called is the this.ResumePipeline()
  • 18. REMARKS ABOUT THE STORAGE OF THOSE PIPELINE ON THE SERVER SIDE • The pipeline ID who have perform the request is stored into Sitecore.Context.ClientPage.ClientRequest.Pipeline (ShortID format) • The suspended pipelines are stored into the user session accessible with WebUtil.GetSessionValue("SC_SUSPENDED_PIPELINES") • The pipelines commands for the current pipelines are visible in debug in Sitecore.Context.ClientPage._pipelines but this is a private variable.
  • 19. BACK IN THE RUN METHOD OF THE COMMAND This time args.IsPostBack is true and args.HasResult is true but AddRendering.IsSelectedDatasou rceDialogPostBack(args) is false because you didn't have select the datasource yet. So the code in (15) is executed.
  • 20. 1. The WebRibbon.aspx return a new pipeline in Json with a new ID 2. The process() method will process the different commands and suspend after the ShowModalDialog 3. When you will select the datasource the JS resume method will relaunch the ShowModalDialog 4. The Run() method is called again. You should have understood the process and it is the same for the subdialog where you select the datasource. So I will go faster :-)
  • 21. This time the AddRendering.IsSelectedDatasou rceDialogPostBack(args) is true. So it will register an Eval command in the returned pipeline.
  • 22. Here the kind of Json returned by this pipeline Of course this pipeline will be executed and process the commands. The Eval command will have the parameter chrome:placeholder:c ontroladded This message will be handled by the handleMessage() method in the PlaceholderChromeType.js to add this rendering in the page.
  • 23. And.... "Ouf" that is it. I hope that you have now a view on the ways Sitecore work on the client side If you have questions about this, please let a message on this blog post and I will try to reply as best as I can.