Business Catalyst Blog

BC Sandpile - July meetings

Diana Herac Thursday, July 03, 2014

As usual, you can find below this month's Sandpile schedule:

Weekly Day/Time:

  • San Francisco: Tuesdays, 5pm (all times adjusted in relation to this time)
  • New York City: Tuesdays, 8pm
  • London: Wednesdays, 1am
  • Sydney: Wednesdays, 10am

Case Study: A BC Audio Training Site
8th June (9th in AUS) 2014
TheVoiceCafe.net, a site developed by Lindsey Lawson and BC Partner Katie Zulanas, facilitates learning new accents. Actors and Business people throughout the world are able to sign up for "passports" (secure zones) to hear and practice whatever english speaking accent they wish to study. Most recently, a "record" widget was added to allow users to hear what their practice sounds like.
Details: http://thri.se/VFFW8x

The Sandpile Spam Experiment
15th July (16th in AUS) 2014
In this Sandpile we're going to present some methods several Sandpile members are considering or actually using to combat spam. We're going to load those methods into some test forms on the Sandpile website and run an experiment for a couple of months to see which method seems to be most effective at managing spam. We'll report the results back to the group in a future Sandpile.
Details: http://thri.se/VFG5Jb

Open Business Catalyst Discussion
22nd July (23rd in AUS) 2014
If you were around when BC Sandpile first started you will remember that we were all about open and honest conversations focused on Business Catalyst. It was simple, valuable, and fun. We are going back to our roots with an open meeting. No presentations. No pitches. Just simple Partner-to-Partner discussions.
Details: http://thri.se/VFGgEd

Building and Marketing Food & Restaurant Websites 
29th July (30th in AUS) 2014
In this second of our series on focused industry discussions, we will be looking at best practices for building and then marketing Food and Restaurant Websites. This of course does cover a wide range - from Pubs with big menu and functions offerings, to small cafes and well established restaurants. There are also many food related businesses and add on services such as catering and prepared meals.
Details: http://thri.se/VFGpI3

Full schedule: http://www.bcsandpile.com/_blog/Meeting_Chalkboard/
Sandpile Recordings: http://www.bcsandpile.com/business-catalyst/resources.htm

Scheduled system maintenance on EU datacenter - July 7th 2014

Cristinel Anastasoaie Thursday, July 03, 2014

To ensure the highest levels of performance and reliability, we've scheduled a database server upgrade on our EU AWS data center. To minimize the customer impact, the upgrade is scheduled at the most convenient hours for the region and will take up to 4 hours to complete. During the maintenance procedure, creating and updating content, Partner registration, trial site creation, publish from Muse, sFTP, APIs and some site admin sections will not be available on all data centers. Additionally, all sites on the EU data center will experience a 10 minutes downtime sometimes during the maintenance window. Except for the scheduled 10 minutes downtime, the website front-ends will not be impacted by the maintenance.

Maintenance schedule:

  • Start date and time: Monday, July 7th, 3:00 AM UTC (check data center times)
  • Duration: We are targeting a 4 hours maintenance window

Customer impact:

  • Partner registration, Trial site creation Muse Publish, APIs, FTP and some admin section will not be available through the entire maintenance window
  • All websites and services on EU data center will experience a 10 minutes downtime sometimes within the maintenance window
  • Creating or updating content on the impacted sites will be unavailable during the maintenance procedure

For up to date information about system status, check the Business Catalyst System Status page. We apologize for any inconvenience caused by these service interruptions. Please make sure that your customers and team members are made aware of these important updates.

Thank you for your understanding and support,

The Adobe Business Catalyst Team

Episode 38 of the BC Podcast - What’s Coming: BC.next

Brent Weaver Friday, June 27, 2014

The BC team recently announced several large upcoming platform improvements and features due to release in beta later this summer:

  • Liquid Rendering, JSON, New Editing Capabilities and Increased Performance
  • New Module/Tag Syntax, Liquid Templating and Improved Rendering Performance
  • Access All BC Data: JSON Output Everywhere, More REST APIs
  • New Admin Editor

I decided to grab two of my senior developer minds to get a read on what all is possible once these features hit the platform.

Without ruining the podcast—the answer is: a lot, lot more. Between these developments and the release of Open Platform earlier this year, BC is truly becoming one of the most flexible hosted platforms.

Don’t forget that this month, Bootstrap Builder is the App of the Month and Scott over at Thrise has been so kind to offer a limited time discount. Get it while you can.

Tune in for Episode 38 of the Business Catalyst podcast! In this episode we talk about Liquid, JSON, modules, rendering engines, and a deep dive into a few technical rabbit holes around what’s going to soon be possible.

Simply click the play button below to stream the podcast via your browser.

player

Alternatively, you can download the podcast in .mp3 format for offline listening.

In this episode:

  • Brian Lowry explains Liquid in plain english (well, at least as much as a developer can)
  • Erick Stubbs admits that this might be the biggest release he’s seen in his 6 year BC tenure (yeah, he’s an old timer)
  • And much more

Join the Podcast! Do you have something you want to announce to the BC community? I want to hear about it (brent@bcgurus.com).

Until next time,
Brent Weaver

BC.Next webinar recording

Diana Herac Thursday, June 26, 2014

Thanks to those of you who attended our BC webinar - BC.Next with Lucian Cozma and Cristinel Anastasoaie from Business Catalyst. 

The webinar focused on the next releases of Business Catalyst which includes a series of big changes that will streamline your work and expand BC's capabilities.

If you were unable to join us live, check out the BC.Next Webinar recording to find out more about:

  • new module syntax
  • server side logic support with liquid
  • open data access using JSON output
  • new admin editor
  • improved REST API engine

If you haven't been here for a while, you might also want to take a look at the previous two webinars as well:

If you have any questions or suggestions please do not hesitate to send them over to BCPartner-Team@adobe.com. We will be happy to answer all your inquiries.

Thank you and hope to see you in the next webinar.

The Adobe Business Catalyst Team

Brass Tacks-July webinar

Diana Herac Thursday, June 26, 2014


BC.NEXT is going to change the way we build BC websites.

There's been a lot of buzz and excitement in the Business Catalyst Partner Community around BC.NEXT.

BC.NEXT is the biggest announcement of new features to the CMS in a long time.

  • Liquid Markup
  • JSON Output
  • Additional REST APIs
  • New Admin Editor
  • Open Platform
  • New rendering engine:
    • New Caching System
    • Named parameters for module tags

BC.NEXT is going to change the way we build BC websites, allowing us to build powerful, versatile website, without the need for JS hacks, workarounds and silly roadblocks.

  • So what does it mean for me, the BC Partner?
  • Why are these new releases so powerful?
  • I don't understand exactly what’s coming!
  • Will I need further training?

Pretty answers all your questions and breaks down the technology in a webinar aimed at BC Partners eager to stay abreast of changes. From beginner to advanced, we'll cover it all.

  • Australia (Sydney) – Thursday 10th July at 10am
  • USA (San Francisco) – Wednesday 9th July at 5pm
  • USA (New York Time) – Wednesday 9th July at 8pm
  • UK (London) – Thursday 10th July at 1am

Add Event to your Calendar
Launch this Webinar Now

Hosted by Liam Dilley - (having contributed valuable input to the BC Engineers, Liam’s able to answer your questions and explain the technology).

Ask Pretty

App of the month: Bootstrap Builder

Diana Herac Tuesday, June 24, 2014

Introducing Bootstrap Builder

The Bootstrap Builder app allows you to control many of the styles and features of the Bootstrap framework without manually coding in the css and javascript files. It offers you full-control over which Bootstrap components are added to the front-end. All of css and javascript files are dynamically optimized and minimized during publishing to reduce front-end load time.

Less and CSS

The Bootstrap Builder app allows you to leverage the power of Less, the popular CSS pre-processor. Less extends the CSS language, adding features that allow variables, mixins, functions and many other techniques so you can make CSS that is more maintainable, themable and extendable.

Bootstrap Builder lets you...

  • Change colors using an easy-to-use color picker.
  • Easily customize Bootstrap styles.
  • Include/exclude unused css and javascript to improve front-end loading time.
  • Leverage Less to improve style management.
  • Reduce errors with built-in error checker.
  • Install to any BC site plan.

Impressed? Buy the Bootstrap Builder from the BC app store today!

About the Developer

Thrise, founded by Scott B Reynolds, is a BC Expert specializing in Business Catalyst App development. Scott is a Business Catalyst partner advisory board member, an Adobe Community Professional, and a BC Sandpile organizer. He often presents on topics ranging from responsive web design to advanced Business Catalyst integration.

The Adobe Business Catalyst Team

BC.NEXT - liquid rendering, JSON, new editing capabilities and increased performance

Cristinel Anastasoaie Wednesday, June 18, 2014

We’ve started this year by announcing the Open Platform, enabling partners to create custom applications on top of Business Catalyst to enhance the existing core functionality and match their diverse customer needs. Shortly after that, we’ve added new responsive templates and updated our support center and documentation, with a dedicated developer section.

We’ve had great feedback on those enhancements, but we were already working on another track that we hope will be even cooler!

As partners started to build more and more complex websites, they’ve been facing a collection of limitations of the Business Catalyst platform and had to use extensive client side coding to get around those. Some of these limitations have been set by the same design that makes the platform easy to use in the first place.

So, with our next release, a public beta in July and a full launch in Fall, we plan to change all that and introduce absolute design freedom when it comes to creating websites on the Business Catalyst platform.

To accomplish that, we’ve focused on three vectors of innovation:

  1. Enhance the rendering engine and the BC mark-up language
  2. Data accessibility and output
  3. Improved editing experience

The next generation rendering engine

With sites growing more and more complex readability of the templates and the used modules becomes increasingly important. The current markup, without any indication on what the parameters are, make it really hard to work with it. Furthermore, current tags allowed limited to no possibilities to format, filter or change the presentation in any way. Partners were always relying on the BC team to release new modules, tags, or filters to better handle data.

Liquid Markup is the way to achieve total creative freedom with Business Catalyst. Bringing full control over generated content, server-side support for conditionals and loops, and more, Liquid markup enables easier building of amazing sites without many of the JavaScript hacks you had to use in the past.

For example, here is an example of how you will be able to check if a GET parameter was passed on to a page and do your own logic accordingly:

{% if globals.get.mygetparam %}
     A GET.mygetparam parameter was passed to the page and it has the value: {{globals.get.mygetparam}}
{% endif%}

In order to facilitate a seamless and gradual transition from the current mark-up to Liquid, you will be able to use both the old tags and the new Liquid tags in module templates and pages. For example, in a news list layout you can use both {tag_announcementid} and its Liquid equivalent {id}}. The same goes for {url}}, {{subject}}, etc.

And of course, we are really trying to make sure the new engine is very fast, so we did a great deal of work to optimize the speed of rendered sites.

For more information on rendering engine improvements, read the BC.Next - New Module/Tag Syntax, Liquid Templating & Improved Rendering Performance article.

Open data access with JSON and REST APIs

Have you ever wanted to filter / sort / display data in other ways than the ones provided by BC tags? Or interact with a third party system? Or wanted to create a different product feed? Or a site map that’s different that the standard one? We know the answer is yes and we know that creating endless views to current data output is not feasible as there will always be a different need.

The new release will enable many of these workflows with simple features:

  1. Ability to generate dynamic .json files with modules (create your own JSON output of a module)
  2. Added module_json that allows using a JSON file as data set and a liquid template
  3. Added a mechanism to export all data used in a page as JSON  by adding a GET parameter to the URL of the page (anypage.html?json=true)
  4. A new engine for REST APIs to allow faster development of OpenAdmin applications

For more about data accessibility, read the BC.Next - Access All BC Data: JSON Output Everywhere, More REST APIs article.

Admin console improvements

We've seen again and again customers trying to change their logo or homepage slider on a website and rarely succeeding. We want to change that and make the first contact with Business Catalyst a WOW experience, helping you close more deals and help your customers manage their content in a better way.

Today, the suggested way to edit a website is by using the "Edit" tab in the Admin Console. However, the current in browser editor is too limited. You can only edit some narrow sections of sites, and never data coming from database. And we all know that the current admin editor has a significant set of limitations.

We plan to change all that! The new rendering engine sets the foundation on which we will be able to enable very usable experiences for both partners and small business owners. First, we’re going to update the admin editor to a more modern and streamlined version which will overcome most of the limitations currently present when editing website content.

And right after that, we’ll release the next generation of the In-Context Editor where you can imagine an interface where you’ll be able to edit static and dynamic text, right in the context where it is displayed.

More about the improvements in the content editing experiences in the BC.Next Admin Editor article.

What’s next

We’re eager to see these changes being used by Partners and looking for feedback that will help tune platform and make it ready for a prime time use. Therefore, we’re happy to announce our public beta version release in July, which will include a working version of the Liquid engine, the new module syntax, updated visual editor and source code editor in admin interfaces as well as caching improvements.

We’ll continue the updates through the Summer and Fall, with focus on additional APIs and a new version of In-Context Editing that enables dynamic data editing.

To see those improvements at work please attend the webinar next Wednesday!

Stay tuned for a great second half of 2014,

The Adobe Business Catalyst Team.

BC.NEXT - New Module/Tag Syntax, Liquid Templating and Improved Rendering Performance

Cristinel Anastasoaie Tuesday, June 17, 2014

With the upcoming release of the new BC rendering engine, we are launching some very exciting features that will allow partners unprecedented control over the module layouts and templates along with great readability of BC code.

Module syntax improvements

The first  improvement is the way we render modules to enable usage of modules in modules. We've also re-vamped how <head> elements are being collected and included in the final page - and while the new solution is more elegant, you should be careful in how you test existing sites as the behaviour might be changed.

In the same light, we always knew that the current module syntax is cryptic. There are IDs everywhere. Commas ",,,," everywhere. Conventions everywhere instead of a simple to read named parameters approach.

We have received positive feedback in the past when we changed the menus syntax with a more readable one, so we have decided to make the BC markup a really easy to read syntax. We are now introducing named parameters to all modules. This will allow you to read way easier how a page is constructed.

Before:

{{module_news,r,,true,ajax,_blank,,,,,date reverse}

Now - note that most parameters are optional and you don't have to use a list of commas and respect the parameter order:

{{module_news filter="random" notemplate="true" effect="ajax" target="blank" sortType="date reverse"}

We have also improved the module in modules extensibility - several new modules are now supported. {module_pagename }, {module_isloggedin } and {module_pagetitle } can be used in other modules.

{{module_news filter="random" template="{{module_isloggedin}.tpl"}

We're also continuing to collect your feedback on new tags and tag improvements. More to come on this track as we see this new rendering engine in good shape.The module reference will also be updated with the upcoming release to include the new module parameters along with the old ones.

Announcing Liquid templating engine support

In order to get the best flexibility and ease of use, we chose the Liquid markup language (http://docs.businesscatalyst.com/developers/beta/introduction-to-liquid) to enable great control of the layout and templates along with great ease-of-use.

We aimed at creating an engine that is backwards compatible, so do you don't have to change your existing sites (if you don't want to) to take advantage of new liquid features. In the same spirit, we want to make it easy to adopt - you will be able to add a liquid "if statement" in an existing template and it will work without having to change the rest of your module layout. And in terms of approach, we are implementing it in a surgical way, using the new BC rendering engine and current tags as a data collection mechanism, collecting all the data, and then exposing it to the Liquid engine. 

Liquid will give you a lot of power to build sites on BC. Here are several things you will be able to do, but we are sure you'll be able to do so much more:

  1. Use the new readable tags with string formatting capabilities
  2. Access {{globals}} and {{user.globals}} - variables to allow complex conditions
  3. Conditionals in pages or email campaigns to generate dynamic content depending on the user
  4. Take over any BC generated markup and replace it with your own markup to free you from our generated code limitations
  5. Enable looping over data collections to allow you to display data in your own format.
  6. New readable tags with string formatting capabilities

In all the module layouts, you are now able to use both the old tags and new liquid-data tags. For example, in the {{module_news} list layout you can use both { tag_announcementid } and its liquid equivalent {{id}}. The same goes for {{url}}, {{subject}}, etc.

You can benefit in this way of both full-backwards compatibility and the advantages that liquid brings (string formatting, conditionals, etc) like in this example: {{body | upcase}} which outputs with the body in upcase.

More information about liquid filters you can find here: http://docs.businesscatalyst.com/dev-assets/reference/liquid-reference/reference/supported-filters-and-operators.html?beta

Globals and User globals

A series of global variables are now available in the Liquid rendering. Some of these are:

  • global.user - If a user is logged in, this global variable will contain information on the customer that is logged in your site: {{globals.user.fullname}}, {{global.user.firstname}}, {{global.user.lastname}}, {{global.user.email}}
  • global.site - can access site information such as: {{global.site.id}}, {{global.site.name}}, {{global.site.contryCode}}, {{global.site.host}}, {{global.site.language}}
  • global.visitor - can access information on the user-agent such as: {{global.visitor.deviceClass}}, {{global.visitor.ip}}, {{global.visitor.country}}, {{global.visitor.userAgent}}
  • global.get - you will be able to access GET parameters in your liquid markup like this: {{global.get.mygetparam}}
  • global.cookies - you will be able to access cookies in your liquid markup like this {{global.cookies.mycookie}}

Conditionals in pages or email campaigns

With access to data and Liquid you will be able to add your own logic in pages.

For example in a page you will be able to check if a GET parameter was passed to the page and do your own logic accordingly:

{% if globals.get.mygetparam %}
     A GET.mygetparam parameter was passed to the page and it has the value: {{globals.get.mygetparam}}
{% endif%}

Or take over any BC generated markup and replace it with your own markup and looping over data collections.

The new rendering engine allows to capture the output of basically every module and use the data of that module in any way you want. Here's an example of how to do that:

{{module_announcement filter="all" template="" collection="announcementCollection"}
<p>module name: {{announcementCollection.moduleName}}</p>
<ul>
    {% for news in announcementCollection.items%}
    <li>{{news.id}} - <a href="{{news.url}}">{{news.subject}}</a></li>
    {% endfor %}
</ul>

Notice that the "template" parameter of the module is left blank and that a new parameter called "collection" is added.

The empty "template" parameter tells the module to suppress any output and the "collection" parameter indicates that instead of outputting the data it should gather it in a collection.

This way all data of the module is accessible in the "announcementCollection". Modules have various data added there. In our case the collection will contain a "moduleName" and a list of announcements put nicely in a collection that you can loop through: "items".

You can loop through items and access all the properties of every item using the same names as you would have used them in the actual module layout (id, url, subject, etc).

Some modules even contain properties that include the navigation information when it exists in the module (such as properties called prevUrl, nextUrl which contain links to the previous or next page).

Suppressing the BC injected JS/CSS files (modulestylesheets.css, etc)

Every time BC outputs a page, it also adds into the HEAD various stylesheets and JS files needed for the various modules and BC functionality to work or render nicely. For example if I create a simple page that would only contain {{module_pagename} and even set that it would not use any template, the page would automatically have inserted the following lines:

<link href=" /StyleSheets/ModuleStyleSheets.css" type="text/css" rel="StyleSheet" />
<script type="text/javascript">var jslang='EN';</script>

Same thing happens with more complex modules like shopping cart, etc., where more dependent files are added to the page. Partners asked us to be able to fully control all the CSS/JS from a page and allow suppressing this automatic output and let them add their own links in the page template.

For this, we have added a new property to the Page Templates, which can suppress any JS/CSS inserted either by merging the page with the template or by any other modules added to the page.

So for the example above, the only thing that the rendered page would contain would be just the page name.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<!-- BC_OBNW -->
<head>
<title>My Page with noCssJS</title>
</head>
<body>
        My Page
</body>
</html>

This would allow you to control even the JS/CSS in the e-commerce, blogs, and any other sections of the site that use that site-wide-template - of course this means you will need to to manually re-insert any required JS files as otherwise the functionality might break (add to cart, etc).

Improved rendering performance

Another area where we looked at the rendering engine was around page loading performance and Google PageSpeed score results for BC - also making sure that Liquid pages continue to render very fast. In this direction, we're making several improvements.

For dynamic page content, the output of all pages rendered (any page with modules in it) will be cached in memory for faster serving, with the cache being invalidated when a change is made to the site. This more than doubles the page generation speed for most use cases, while protecting our servers to large loads (better handling of traffic spikes when featured on TV or during attacks). We are also giving you the option of disabling page caching in custom cases using a special module.

For static page content, we have received complaints in the past that we're not sending the correct headers, having Google PageSpeed complain about this and giving BC SEO warnings. We're fixing this with the introduction of a new way to enable better headers for most static assets that we can intercept at rendering. For example, a static asset will be always appended a unique version number that is linked with the static asset content, to make sure everywhere a static asset is changed (either by you developing or by your customer when uploading a new product image), we always serve it again and the browser knows that the asset has changed.

Before:

<img src="/logo.jpg"/> Cache-Control: private, no max-age

Now:

<img src="/logo.jpg?bc_t=5kokdQz9hN1S0v26vVI5DQ"/> Cache-Control: public, max-age=2592000

Finally, we are upgrading our infrastructure to the latest Amazon machines, the latest OS versions and application server version to benefit from the advancements in the field.

We are very eager to get these in your hands soon to see what amazing things you can create,

The Adobe Business Catalyst Team.

BC.NEXT - Access All BC Data: JSON Output Everywhere, More REST APIs

Cristinel Anastasoaie Tuesday, June 17, 2014

The new BC rendering engine we are going to launch will allow us to give more access to the BC data as never before. We will be giving you access to all of the BC rendered data in JSON format in a very flexible and intuitive way.

Today we're announcing some big JSON related features scheduled to come in the next version of BC:

Dynamic .json pages that output module data

BC Partners often asked us to be able to create a JSON page and use existing modules in it, to be able to load data in JS and manipulate it in different ways.

We have implemented now a feature to enable you to create pages that output .JSON, and when rendering that page the following things happen:

  1. The page will not have any template (you cannot set a page-template on those pages)
  2. The modules are being rendered, but all of the values are correctly escaped to be JSON compatible (so you can put them directly in a JSON format)
  3. When the page is outputted, the appropriate JSON content-type is sent
  4. In order to differentiate those dynamic JSON pages from standard HTML pages, we have chosen to have those files on disk as sample.json.html

Suppose we want to output the items of a webapp called testimonials (that has 2 fields: name, content) and we want to list them in a JSON.

We would start by creating a page named testimonials.json.html and use the following code for its content:

{
    "testimonials" : [
            {module_webapps,testimonials,a template=”/testimonials.tpl"}
    ]
}

In the testimonials.tpl file we would have:

{
"name": "{tag_name_nolink}",
"content" : "{tag_description}"
},

Then when accessing the /testimonials.json.html URL we would get a nice-looking JSON file, containing all information from the page:

{
"testimonials": [
      {
"name" : "First Testimonial",
"content”: “This is the content of the first testimonial"
},
      {
"name" : "Second Testimonial",
"content”: “This is the content of the second testimonial"
},
      {
"name" : "Third Testimonial",
"content”: “This is the content of the third testimonial"
}
]
}

With this method you will be able to use existing parameters of the modules (for filtering, sorting) and create your own custom JSON outputs from them, as your application needs it. Also, we automatically detect the trailing comma and remove it.

module_json - a new module to support SEO rendering of JSON files

This module was added for a maximum flexibility in terms of data and layout. The module syntax is:

{module_json json="/module_json/data.json" template="/module_json/template.tpl"}

The module reads the data form the json and renders it using the template with Liquid syntax for rendering (http://docs.businesscatalyst.com/developers/beta/introduction-to-liquid).

Let’s take for example a data.json file that contains:

{
    "description": "List of a collection of Doughnuts",
        "doughnuts":
        [
            {
                "id": "5001", "type": "Plain", "price": 0 }
            ,
            {
                "id": "5002", "type": "Glazed", "price": 1 }
            ,
            {
                "id": "5005", "type": "Sugar", "price": 1 }
            ,
            {
                "id": "5007", "type": "Powdered Sugar", "price": 1.25 }
            ,
            {
                "id": "5006", "type": "Chocolate with Sprinkles", "price": 1.5 }
            ,
            {
                "id": "5003", "type": "Chocolate", "price": 2 }
            ,
            {
                "id": "5004", "type": "Maple Syrup", "price": 2.25 }
        ]
}

And a template.tpl that contains:

<div>{{this.description}}</div>
<ul>
    {% for doughnut in this.doughnuts %}
    <li>
        id={{doughnut.id}} type={{doughnut.type}}
        {% if doughnut.price == 0 %}
            Free!
        {% else %}
            Price: ${{doughnut.price}}
        {% endif %}
    </li>
    {% endfor %}
</ul>

Rendering the page containing the module will result in:

<!DOCTYPE html>
<html xmlns=" http://www.w3.org/1999/xhtml ">
    <!-- BC_OBNW -->
    <head>
        <title>Untitled page</title>
        <meta name="description" />
    </head>
    <body>
        <div>List of a collection of Doughnuts</div>
        <ul>
            <li>id=5001 type=Plain Free!</li>
            <li>id=5002 type=Glazed Price: $1</li>
            <li>id=5005 type=Sugar Price: $1</li>
            <li>id=5007 type=Powdered Sugar Price: $1.25</li>
            <li>id=5006 type=Chocolate with Sprinkles Price: $1.5</li>
            <li>id=5003 type=Chocolate Price: $2</li>
            <li>id=5004 type=Maple Syrup Price: $2.25</li>
        </ul>
    </body>
</html>

As you can see you can have any structure of JSON and use liquid in its full (conditionals, sort, etc). The data is exposed in the same structure as the one in the data file and exposed to liquid under the {{this}} variable.

This allows you to be as creative as you can with the layouts and use this new model of JSON data very flexibly with the new OpenAdmin.

Viewing the modules and the data used to render a page as JSON 

With the evolution of our rendering engine, we are now automatically capturing all the modules and tags rendered in a page in a data tree. We think it will be useful to expose this tree to you, in order to allow you to easily access any data used in a page.

For example, let’s say we have a page named jsonSerialization.html that contains:

<!DOCTYPE html>
<html>
    <head>
        <title>Untitled page</title>
        <meta name="description" content="" />
    </head>
    <body>
        <div>{module_pagename}</div>
        <div>{module_contentholder name="render_contentholder"}</div>
    </body>
</html>

And that the content of the “render_contentholder”  contains just another module:

<div>{module_faq filter="item" itemId="29318"}</div>

The result of calling the http://mysite.com/jsonSerialization.html?json=true will be:

{
   "moduleName":null,
   "pagename":{
      "moduleName":"pagename",
      "name":"jsonSerialization"
   },
   "urlculture":{
      "moduleName":"urlculture",
      "culture":"EN"
   },
   "contentholder":{
      "moduleName":"contentholder",
      "id":"12833",
      "name":"render_contentholder",
      "content":"<div>{module_faq filter="item" itemId="29318"}</div>",
      "faq":{
         "moduleName":"faq",
         "items":[
            {
               "body":"No you cannot combine two lead-in products together. You will need to upgrade to one of the All-in-One plans.<br><br>",
               "answer":"No you cannot combine two lead-in products together. You will need to upgrade to one of the All-in-One plans.<br><br>",
               "id":"29318",
               "question":"Can I combine two lead-in products together?",
               "releaseDate":"2007-11-15",
               "expiryDate":"9999-01-01",
               "lastUpdateDate":"2007-12-04",
               "counter":"1",
               "urlcountrycode_2":{
                  "moduleName":"urlcountrycode",
                  "countryCode":"AU"
               }
            }
         ]
      }
   }
}

As you can see the entire rendering tree and the module data has been outputted to JSON. You can also see that the hierarchy of modules has been respected (the faq is a child-module of the contentholder).

This also offers you a lot of flexibility in accessing BC data in ways that you could not have done before, and it's the foundation of our liquid rendering.

Note: for a quick way to look at your JSON data in the browser, we recommend the Chrome JSON Viewer extension

REST APIs

With the launch of OpenAdmin and the great feedback we received there, we understood that there is a need for even more APIs that expose BC's data to the developers of those applications.

We took this feedback and enhanced the engine with which we're exposing REST APIs to both allow us to create more APIs faster than before and in the same time expose more functionalities in those APIs (like partial updates, PARSE-like language for filtering, sorting, paginating REST queries, and more). Also, we will update the existing Javascript SDK to include these new APIs and features.

We will next be working to create new APIs that the OpenAdmin developer community was asking:

  • Page Properties Update
  • Secure Zones List
  • Template Properties Update
  • Assign web app items to secure zones
  • CRM APIs (customers, cases, orders, events, mailing lists, etc)
  • eCommerce APIs (products, catalogs, discount codes, vouchers, etc)

With these new features, you will be able to exercise your creativity and deliver even more great solutions for your customers.

Looking forward to get these new features in your hands as soon as possible,

The Adobe Business Catalyst Team.

BC.NEXT - New Admin Editor

Cristinel Anastasoaie Tuesday, June 17, 2014

Editing content in Business Catalyst admin could sometimes be a daunting task for partners and customers alike. The standard editor found in pages and in any other interface from the Manage tab has many limitations, such as the lack of contextual information (styles, fonts, etc.), improper automatic code formatting and stripping, or an unusable code view. The In-Context Editor available in the Edit tab is more user friendly, but it only allows edits of static content.

With the upcoming release and continuing through the year, we plan to change all that. Both editors have reached their limitations and we plan to replace and/or greatly improve them, as webpage editing is the most used feature in Business Catalyst.

A new content editor for admin

With the Public beta version, we’ll start by replacing the standard admin editor, found in all interfaces from the Manage tab, with a more modern one (redactor.js) which we already use in the In-Context Editing and Email Campaign editors. Moreover, we’re changing the editor available when using code view, with the same one used in File Manager. This provides a much better editing experience when editing code. 

Overall, the new editor will come with:

  • Modern visual editor that presents the option for contextual formatting
  • New file manager and link manager interfaces
  • New code view editor with code formatting and highlighting
  • Future capabilities like paste image with transparent upload (to be enabled later

At first, the new editor will be disabled and Partners will be able to switch sites to the new editor from the Beta features section in the Site Settings admin menu. Take the time to try it out and provide us feedback to improve the integration and add any critical functionality that is missing.

Visual InContext Editor with dynamic data support

Since version one, In-Context Editing aimed to make web pages easy to update with little or no training by providing a tool similar to what business owners are used to when creating offline documents. Furthermore, it has always been meant to help designers and developers protect the design integrity by restricting the areas a business owner can edit. 

The current version of the editor partially achieves that, but it is limited in terms of which sections of a page can be edited, while also requiring developers to manually set-up editable regions. Thus, ICE can be an effective selling tool, but less of a site management tool.

With the new rendering engine in place, we now have the foundation that will allow us to enable stunning editing experiences for partners and customers alike. So yes, we’re going to update ICE once again, to solve the two major limitations it has: inability to edit dynamic content and the sometimes tedious process to set-up editable regions.

Although it will be only partially be available in the public beta, the new version of the editor will allow you to:

  1. Automatically detect editable content in the page and highlight it - including site wide templates, page content, content holders and module layouts.
  2. Enable in-context editing of dynamic data (like a product name, or product image)
  3. Link to the admin user interfaces when editing is not possible in context (e.g., product pricing, which is too complex to edit in-line)
  4. Seamlessly work with the Liquid language for dynamic data editing
  5. Preserve backwards compatibility with old ICE mark-up
  6. Automatically detect module generated content and allow users to edit just the content without damaging the module definition

We hope these updates will make editing content on BC a stunning experience.

The Adobe Business Catalyst Team