Composite C1

last modified: 20 May 2015

Introduction

Composite C1 for my website (and others) is a joy to work with. Its open source and built with Microsoft technologies. The CMS is built for generic use with a lot of free extensions and its azure ready.
And that gives me (and you) a lot of power to tweak it.
As a developer I like to make the development process as efficiƫnt as possible and the resulting website should be responsive and fast. So I built a lot of extensions for the CMS. All these extensions will be made avaible in time on this website:

Syntax Highlighter

There will be a lot of code on this site, so we need a Syntax Highlighter package. There's one as a package but that's kind of old and does not what i want.
As always built one myself (Razor of course). See it in use on this site on the packages pages.

Sortable Data

Inspired by the Sortable Package from the contrib project, I added the IGenericSortable interface into C1. Static classes are now sortable from the console, just add the IGenericSortable interface on your static data class.

Using the the built in cut/paste flow you can move around data items into the order you desire. This only makes real sense if it was possible to make the datafolders in tree definitions honor that sorting order so I extended the DataFolderElementsTreeNode class to use the sortorder when the IGenericSortable interface is on the selected FieldGroupingName.
read more

Url Alias

Modified the Url Alias package from Composite to be a first class routing citizen.
Add the route just before the 404 route in global.asax and you're one happy SEO friendly, short url, old links re-mapping customer.

Every site needs a search engine. I've built one for Composite C1 based on Lucene. It consists of two separate modules: Basic and Advanced. Basic for content search on your pages. Advanced for also searching on other file types like pdf, doc, etc.

Sass

Support for sass within Composite.
Using ruby - that makes it possible to use the latest version (currently 3.4.9).
Supports source maps. When using with default css settings (no minifying or rendering of critical css) the sourcemap will point to the correct source file (like you put in the include file),

IntelliSense for the C1 Console code editor

Using the latest CodeMirror version, I added and modified some addons so the code editor would support intellisense for html, css and JavaScript. Folding is also added - very handy on large style sheets and code. Also auto completion for brackets, curly brackets and html tags.

Bundle scripts

Concatenate scripts into one file - better download performance

Minify

Minifying styles and html - driven by application settings in the web.config.
Parsing styles includes auto-prefix, and schrinking the css by combining and optimizing media queries.

Minifying scripts using the javascript only dll from AjaxMinifier.

Fingerprinting static sources

Give your static files an effectively infinite cache expiration time, but change their URL whenever the resource changes (automatically).

Image optimize

Inspired by the WebEssentials extension for visual studio, integrated it in the media perspective. Optimize single files or complete folders.

AntiXSS

AntiXSS provides a myriad of encoding functions for user input, including HTML, HTML attributes, XML, CSS and JavaScript. Using AntiXss Library 4.3.0.

Render content as PDF

Convert html to PDF using wkhtmltopdf with support for covers, title pages, copyright pages, headers, footers and table of contents

Responsivator

Implemented 'Pattern Lab' (with Photoshop like guides) functionality as a secondary window to C1. Works great if you have two monitors and you're building and testing mobile first, responsive websites (as you should). I named it the 'Responsivator'; also a great name for a sex toy. ;)

Adaptive content

Adaptive content is content stored in a centralized location, in usable chunks, that allows sharing it with a variety of devices. Created a full solution as a perspective in Composite.

SEO

An extra meta data tab on pages (and within adaptive content) to set the most important SEO tags in your page. Supports default settings so you will always have references in your html for twitter, google, facebook and more.

Favicons

A settings page for implementing the perfect favicons provided by realfavicongenerator.net within Composite.

Content parts

Inspired by the template features already present within Composite. But the content parts are localizable.

Resource editor

Edit, add and save (language) resource files within Composite (cachable and without recycling in IIS).

Custom strings

Provide custom strings within the cms (par example in functions and tree definitions), inline or from a resource file.

Extended textarea control

A textarea that I use a lot in Composite pages that supports count back/up of the used number of characters within the textarea.

Keywords control

Get a sorted list of words that occur most on the page it is embedded on (in the SEO tab). Uses stop lists (ignore common words like 'the', 'with', etc.). Currently English and Dutch only - more to be added when I require another language.

IP address blocking

A httpmodule that implements blocking IP's and user agents based on the lists provided by projecthoneypot.org and hackrepair.com.

Load fonts

A function to load web fonts dynamically - without blocking web page render - utilizing local storage for caching the fonts client side.

Analytics function

Async loading of the Google analytics script with the in Europe required cookie law message - with opt-out and thus not loading analytics. Easy to extend for other cookie law required scripts.

Filter on file extensions

Modified the website file element provider in C1 so it supports filtering on extensions. With the accompanying front end file widget a nice way to let the user only select the files of the type you want to allow - they won't see the other files in the tree.

if-modified-since header

Make composite honor the 'if-modified-since' header for web content - return cached content with the correct expire header and a '304 Not modified' header.

Spell check in the visual editor

Not only in Firefox but also in Chrome and IE.

Custom Startpage

Created a custom start page that honors the fact that we are in Composite C1 and with a link to the Composite homepage, naturally
It's a clear page that you can use to reference stuff that might help the user - or make them happier - like displaying the clients logo. The current implementation shows the current system status.

published on: 28 September 2014