Try our conversational search powered by Generative AI!

Ben  McKernan
Sep 16, 2016
  8481
(7 votes)

The dot notation breaking change

In Magnus's blog post (http://world.episerver.com/blogs/magnus-stalberg/Dates/2016/9/planned-breaking-changes-in-cms-ui-2016/) on the upcoming breaking changes in the CMS UI, there were a lot of questions and a little confusion about the removal of dot notation support. I am hoping that with this blog post I can shed some light on the matter and make things a little easier to understand.

The history

When we first released the updated UI back in CMS 7, we were using a version of dojo that had its own synchronous loader which used dot notation, the syntax looked something like this:

<script type="text/javascript">
    dojo.require("dijit.Dialog");
    var dialog = new dijit.Dialog();
</script>

When we updated to CMS 7.1 we also upgraded our dojo dependency. However dojo had changed its loader to be asynchronous and use the AMD format. This format uses slash notation since each dependency is a path to a JavaScript file. It looks something like this:

<script type="text/javascript">
    require(["dijit/Dialog"], function (Dialog) {
        var dialog = new Dialog();
    });
</script>

To ensure the change wouldn't be too breaking we added code to maintain support for the dot notation.

The breaking change

In the coming CMS 10 release we have removed the support for the dot notation in the JavaScript loader. So this means that anywhere were a JavaScript file is referenced in the code it should now use slash notation (that is forward slashes).

It is also important to note that we have been using the slash notation since CMS 7.1 so you don't need to wait for the CMS 10 release to change your code. You can change it now!

The effects of this should be very limited since there are not many areas where the dot notation could have been used. Here are the places that you should check in your code:

PropertyFor: It is possible to pass an additionalViewData argument to the PropertyFor method.

data-epi-* attributes: Any epi attributes that you manually render in your views.

Widget templates: The data-dojo-type attribute in widget templates.

Initializer class in module.config: It is possible to pass an initializer JavaScript file to the clientModule element in the module.config, for example:

<clientModule initializer="addon/Initializer">

</clientModule>

ComponentBase: Any class inheriting from ComponentBase that sends a widget type to the constructor.

ComponentDefinitionBase: Any class inheriting from ComponentDefinitionBase that sends a widget type to the constructor.

EditorDescriptor: There are several properties on the EditorDescriptor that could be affect but the most likely is ClientEditingClass.

ViewConfiguration: The properties ViewType and ControllerType.

Sep 16, 2016

Comments

Sep 16, 2016 02:25 PM

Thank you. I was definitely the target audience for this post :)

Al Higgs
Al Higgs Sep 16, 2016 04:42 PM

Yes, thanks for that - really clarifies things.

Ted
Ted Sep 16, 2016 06:54 PM

Great summary of valuable info!

Kenia Gonzalez
Kenia Gonzalez Sep 22, 2016 09:15 AM

Great post! Thanks

Oct 26, 2016 08:45 AM

Great post!

Another place to check is the EPiServer.Shell.ViewComposition.ComponentAttribute and it's WidgetType property

Sep 12, 2018 08:55 AM

I want to write an essay on dot notation that was not easy task this was assign me by my college teachers that was good for me. It was also my final year project so I took help from buy essay online australia that was working for me and I got much data about this project.

Please login to comment.
Latest blogs
From Procrastination to Proficiency: Navigating Your Journey to Web Experimentation Certification

Hey there, Optimizely enthusiasts!   Join me in celebrating a milestone – I'm officially a certified web experimentation expert! It's an exhilarati...

Silvio Pacitto | May 17, 2024

GPT-4o Now Available for Optimizely via the AI-Assistant plugin!

I am excited to announce that GPT-4o is now available for Optimizely users through the Epicweb AI-Assistant integration. This means you can leverag...

Luc Gosso (MVP) | May 17, 2024 | Syndicated blog

The downside of being too fast

Today when I was tracking down some changes, I came across this commit comment Who wrote this? Me, almost 5 years ago. I did have a chuckle in my...

Quan Mai | May 17, 2024 | Syndicated blog

Optimizely Forms: Safeguarding Your Data

With the rise of cyber threats and privacy concerns, safeguarding sensitive information has become a top priority for businesses across all...

K Khan | May 16, 2024

The Experimentation Process

This blog is part of the series -   Unlocking the Power of Experimentation: A Marketer's Insight. Welcome back, to another insightful journey into...

Holly Quilter | May 16, 2024

Azure AI Language – Sentiment Analysis in Optimizely CMS

In the following article, I showcase how sentiment analysis, which is part of the Azure AI Language service, can be used to detect the sentiment of...

Anil Patel | May 15, 2024 | Syndicated blog