Agility Developer Training

Intermediate Developer Training James Vidler, Software Developer Introduction Intermediate Developer Training What Youll Learn Building on WCM concepts from previous Developer 101 and introduction to UGC. Introduction to User Generated Content (UGC) learn how to define, save, and search content

submitted through the website such as Contest Submissions. Dynamic Page Content learn how to build pages based on Shared Content lists such as Blogs Routing learn how to capture URL patterns and programmatically render Agility pages, allowing you manipulate the logic of your modules based on the URL Thumbnailing learn how to create, and access auto-generated thumbnails from Image properties

Image Galleries learn how to use the Image Gallery property and use it to manage a collection of images from Media & Documents Inline Code learn how to manage CSS, JS, Page Templates, and .csthml partial views directly in the browser URL Redirections learn how to add and manage URL Redirection directly in the Content Manager

Multi-Language learn the dos and donts of developing multi-language sites Page Meta Data, Styles and Scripts learn usage, and how they are outputted in your layout Web Content Management Intermediate Developer Training Error Handling & Logs

Web Logs can be viewed in Agility Responsibility of the developer to ensure their sites errors are being logged Setup required in Application_Error in global.asax

Inline Web Tracing available for when you need to log an exception, info, or warnings Trace settings in web.config sets what type of errors get logged Errors should be emailed to either [email protected] or your own email address Web Servers

Your Web Server(s) must be defined in Agility in order for content to be published to them A Web Server can be set to: Active Maintenance

Content Server will attempt to synchronize published content with this web server and any sync errors will be reported to content editors Content Server will attempt to synchronize published content with this web server, however any sync errors will be supressed Deactivated Content Server will not attempt to synchronize published content with this web server, the web server will continue to server content from its own local files URL Redirections

Place in Agility where you can create URL Redirections defined by Origin and Destination Absolute and Relative paths supported Wildcard Redirects are supported using *(must be placed at end of path)

Set redirect to 301 (permanent) or 302 (temporary) Should only be used for simple redirects Keep complex redirect login in your website code Multi-Language Websites

Agility handles multi-language for you Requires a license to support additional languages Each language has its own page tree, content lists and modules Page Templates, Content and Module definitions are shared across languages Allows for editors to create connected content between languages allowing for seamless language switching

Keep linked content architecture to a minimum it can be cumbersome to force editors to create connected content at various hierarchies Be mindful about custom caching based on cachekeys make sure to include the current language code Dynamic Page Content Allows you to structure pages based on Content

Definitions Dynamic Content is just like regular Shared Content, except it includes page level properties like Meta, and Scripts Agility handles the routing of a dynamic item based on a friendly URL You can configure the formula for your friendly URL ##Title## ##ContentID##/##Title## ##Category##/##Title##

Dynamic Page Content Requires you to add a Dynamic Page as opposed to the standard Static Page. Dynamic Pages can be nested Dynamic Page cannot be added to the root Special method in Agility.Web to get the current dynamic page item

Lab Dynamic Pages Lab Create a Blog Dynamic Page List Custom Routing Use standard MVC routing (i.e. RegisterRoutes) to support URL

patterns that dont correspond directly to static or dynamic pages in Agility Use MVC RouteConstraints for complex URL matching On a matched route, in the Controller, you can return an AgilityViewActionResult to render a static or dynamic page in Agility and pass in any route data that might influence the behaviour of the modules being rendered on that page A common use case is to have custom URLs which will tell a module (that is listing data) to filter it by particular criteria Sitemap

You can programmatically access all your agility page (including dynamic page) nodes using the ASP.NET SiteMapProvider class Requires a setting in the web.config Use cases include generating a main menu, or building a sitemap.xml off your agility page structure Lab Sitemap Lab Add a Dropdown Menu based off of the Sitemap

Image Galleries Are a collection of images stored in Media & Documents Each image can have optional Metadata such as a Title and Description Image Galleries are accessible via the Image Gallery property type in Module and Content Definitions

Supports thumbnail definitions Thumbnail Configuration You can set thumbnail definitions for Image and Image Gallery property types A definition will set the height, width, action (crop, scale, and scale & fill), quality, and alignment of the thumbnail After the original image is uploaded/selected in an Image

or Image Gallery, thumbnails will be generated and saved You can access thumbnails by their reference name Lab Image Gallery & Thumbnails Lab Add an Image Gallery (with thumbnails) to the Product Details pages Page Meta Tags and Scripts

All static and dynamic pages have page level Metadata and Scripts You can add global scripts such as Analytics or Advertising to the Global Scripts area in Agility Pages can optionally exclude Global Scripts from being outputted Methods for these exist in two (top and bottom) HtmlHelper extensions in Agility.Web Developer is responsible for ensuring these are outputted appropriately in the layout Inline Code

Provides a mechanism for managing Page Templates, Module Output Templates, HTML, CSS, and JS within the Content Manager No deployments or Visual Studio required Version history and staging/published workflow enabled Supports auto-generated code to create default markup to output your page template content zones, or module

properties Inline Code must be enabled as it requires an up-to-date Agility.Web.dll before it can be used Lab Inline Code Lab Move Site.css into Inline Code User Generated Content Intermediate Developer Training User Generated Content

Sub-system of Agility for management and moderation of content submitted by site users For forms, comments, ratings, contests and website users Supports email notifications/alerts to both internal and site users for moderation workflow UGC C# and JavaScript API available Create UGC definitions similar to Module and Content definitions User Generated Content Definitions

A UGC definition contains fields just like module and content definitions contain properties A UGC definition represents an instance of itself - each UGC list requires its own definition Linked Content fields are not supported you can still extend the input form and have custom JS that integrates with WCM or UGC and saves IDs Each definition has notifications which can be setup for sending emails

related to particular events during moderation such as New, Published, Declined, Comment etc. API Client Setup JavaScript Use the JavaScript API wherever possible this relieves your website from having to do any web calls to get or save content (in C#). Requires adding several files to your website (available in Developer Downloads)

Agility.js utilities Agility.UGC.API.js UGC API jQuery required > 1.3 AgilityRedirector.htm blank file used as a location to redirect iFrame used in cross-domain posts API Client Setup JavaScript Requires an initialization function Each UGC API method like SaveRecord, GetRecord, and SearchRecords have a callback parameter

Each UGC API result has the same object structure ResponseType 0 (OK) or 1(Error) Message only populated on error ResponseData the returned data object API Client Setup C#

Agility.UGC.API.WCF.dll required as well as some web.config settings in your section Download dll from Developer Downloads Uses server to server calls Only use C# API when you are displaying UGC that must be SEO friendly or you need to perform actions that require administrator privileges Lab Create UGC Definition Lab Create a User Generated Content Definition Lab Using the Form Module

Lab Use the Form Module to Save User Content Lab Using UGC API to Save Content Lab Build a Custom Module using the UGC API to Save User Content Content Moderation UGC includes moderation workflow

Must be defined in the UGC definition New records are set to Awaiting Review until approved, then are Published and available to the APIs Notifications (external) and alerts (internal) email templates can be setup for every step in the moderation workflow per definition Content Moderation Lab Adding Moderation to a Definition Lab Building Moderation Workflow into User Content

Lab Searching and Displaying User Content Lab Searching and Displaying User Content on your Website Assignment Add a Product Inquiry Form Heres what our client is requesting: We want our customers who have questions about our products to be able to ask them directly from a product page. When the question is submitted, we want to be notified internally. The details we must capture includes Name, Email Address (so we can respond), and the Question. We must also be able to identify which product the question is for. There may be some products we dont want to display the form for, so there needs to be a way to manually enable or disabled the form per product. Jaguar Computers How would you build this?

Looking for feedback on your Product Question Form? Email [email protected] and wed be happy to review with you. Advanced Developer Training Heres a taste of what well be covering in the next Advanced Developer Training: Advanced User Generated Content (UGC) Components learn how to define, save, search, and authenticate Website Users, Comments, and Feedback data REST API learn how you can access your WCM data through a flexible API that can be used in apps, or other websites Caching and Performance learn about caching techniques you can use to keep your site running optimally under high loads Custom Input Forms learn how to use in the Input Forms API to hook into WCM input form events and get other WCM content

Content Import API learn how to use the Content Import API to batch import content into your website Resources Agility Developer Website http://developer.agilitycms.com MSDN http://msdn.microsoft.com StackOverflow

http://stackoverflow.com jQuery http://jquery.com Bootstrap http://getbootstrap.com/ Questions & Discussion Intermediate Developer Training

Recently Viewed Presentations

  • Nuclear Radiation - 9-10 Physics

    Nuclear Radiation - 9-10 Physics

    Which type of radiation would you expect an atom of this isotope to emit? A) an alpha particle. B) a beta particle ... an unstable nucleus. elements with an atomic number higher than 83. ... nuclei with an even number...
  • Sprint Tool and Die Ltd

    Sprint Tool and Die Ltd

    Sprint Tool and Die Ltd. Design and manufacture of plastic injection mould tools . and high pressure dies. June 2016 Background Established in 1989, in Telford, by Ian Amos. Time served apprentice trained workforce. Highly Committed and flexible to customers...
  • AW2 SCR - Zendesk

    AW2 SCR - Zendesk

    The information displayed on the remainder of the summary (Self-assessment data, Goal Setting, and CER Case Logs) is the same as it was previously. ... The AWCTS non-compliance indicator is a tracking mechanism and notification system.
  • PowerPoint Presentation

    PowerPoint Presentation

    The most vulnerable homeless report being unsheltered for a long period of time - an average of . 8 years . homeless. The most vulnerable homeless are seniors -- Of those needing the most intensive level of support, the average...
  • Oxidation Reduction Reactions - Oneonta

    Oxidation Reduction Reactions - Oneonta

    Oxidation Reduction Reactions Redox Reactions Electron-Transfer Reactions Each atom in a pure element has an oxidation number of zero. 2. For monatomic ions, the oxidation number is equal to the charge on the ion. 3. Fluorine always has an oxidation...
  • The use of English names by Chinese speakers

    The use of English names by Chinese speakers

    Simon Cotterill . Friday 5 April 'Chinese speakers' = a form of Chinese is L1 'English names' = y. ingwen. mingzi. Inc. ... Li Yu Ting Ting . Ting, Ting . Zai (Baby Ting) How names are used within Chinese...
  • Title

    Title

    ISRs for ELA and Math are available. DRC can print, sort, and ship your ISRs for a flat fee of $350. This is optional and districts must order printed ISRs between April 16th and June 22nd. Please refer to Training...
  • [Team Name] - Nasa

    [Team Name] - Nasa

    STEP Tutorial: "How Industry is Benefiting from STEP" Gerry Graves, PDES, Inc. January 16, 2001 PDES, Inc. ® STEP Success Stories Boeing Position on STEP STEP is currently in production use for the exchange of solid model design data with...