WYSIWYG Rich Text Editors – What could possibly go wrong?

I’m researching this subject for an upcoming session.  For this session, I wanted a screenshot showing the abominations made possible by too many Rich Text features.

Here is what I came up with…

WTF WYSIWYG

I’m using TinyMCE, but it could’ve been almost any WYSWIYG editor.  The plethora of features provided (absolute layers, emoticons, etc.) provide more than enough rope to hang yourself.  It’s also fascinating that many CMS’s leave all of this stuff enabled.

It’s not surprising that non-technical content authors hate their Rich Text editors.

What about you?  What Rich Text (WYSWIYG) features have you found to be deadliest in the hands of end-users?

Tagged with: | Leave a comment

How to filter blog posts by categories or tags in Sitefinity – without screenshots

Each blog post in Sitefinity can be classified using tags and/or categories.

These classifications can then be used to display a filtered list of blog posts related to a particular subject. For example, Sitefinity classifications & filters could be used to create a list a blog posts related to Technical Writing and screenshots.

The instructions below describe how to filter blog posts based on these classifications.

Continue reading

Tagged with: , , | Leave a comment

How to filter blog posts by categories or tags in Sitefinity – with screenshots

Each blog post in Sitefinity can be classified using tags and/or categories.

3-27-2011 11-38-58 AM

These classifications can then be used to display a filtered list of blog posts related to a particular subject.  For example, Sitefinity classifications & filters could be used to create a list a blog posts related to Technical Writing and screenshots.

Continue reading

Tagged with: , , | 1 Comment

20 things to consider when selecting a CMS

This blog post relates to a session (by the same name) I’ve given at conferences and user groups.

Synopsis

Choosing a CMS can be a daunting task.  There are plenty of Content Management Systems to choose from; ranging in price from free to extremely expensive.  From this crowded landscape it can be difficult to find a CMS that effectively enables an organization to accomplish their goals.  In this session, I will identify 20 things to consider when evaluating a CMS that will help you select the ideal CMS for your project.

Continue reading

Tagged with: | 4 Comments

CHM Support – why documentation sucks!

For those who don’t know, CHM is an acronym for Microsoft Compiled HTML Help.  It was released in 1997 when dial-up connections were used to access the Internet.  CHM is a solution for product help files.  Product documentation is contained in a single file that can be accessed offline.  This documentation, loosely based on HTML, can then be browsed using a desktop client.

CHM documentation viewed through IE4

Continue reading

6 Comments

GiveCamp impressions from the Sitefinity Evangelist

The 1st ever National GiveCamp event has come and gone.  Despite a sleep deprived state of mind, many developers are now attempting to slog through a fresh work week.  During 38 hectic weekend hours, these volunteers addressed (for free!!) the IT & programming needs of charities throughout the nation.

Everyone involved in this event (volunteers, organizers & charities) deserves a huge pat on the back.  It’s hard to sacrifice a weekend and sleep, but these good souls did it.

Continue reading

Tagged with: , , | 4 Comments

Truncating text in a Sitefinity 4.0 Widget Template

While displaying a list of events inside Sitefinity, I wanted to truncate the event text at 200 characters.

Here is how I did this:

  1. Create a Truncate ASP.NET control.  This control would accept a string and truncate it based on the desired length.
  2. Modified the Events List Widget Template inside Sitefinity.  Used my new Truncate control to display the event text.
  3. Added some CSS styling to make it look pretty.

All the code can be found below:

Continue reading

1 Comment

Sitefinity 4.0 RC – You are trying to access an item that no longer exists.

I switch between various Sitefinity 4.0 RC projects a lot and seem to encounter this error frequently when accessing Sitefinity’s backend:

Server Error in ‘/’ Application.

You are trying to access item that no longer exists. The most probable reason is that it has been deleted by another user.

Continue reading

Tagged with: , , | Leave a comment

Exploring blog posts using Sitefinity’s Fluent API

I needed to record a short (4 minutes or less) video showing Sitefinity’s Fluent API.

Below is the sample widget I created for this video:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomWidget.ascx.cs" Inherits="SitefinityWebApp.Custom.CustomWidget" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>

<div class="customwidget">

    <div><asp:Button ID="CreateBlog" runat="server" Text="Create Blog"
            onclick="CreateBlog_Click" /></div>

    <div><asp:Button ID="CreatePosts" runat="server" Text="Create Posts"
            onclick="CreatePosts_Click" /></div>

    <div><asp:Button ID="DisplayPosts" runat="server" Text="Display Posts"
            onclick="DisplayPosts_Click" /></div>

    <div>
        <telerik:RadGrid ID="RadGrid1" Width="100%" runat="server">
            <MasterTableView AutoGenerateColumns="False">
                <Columns>
                    <telerik:GridBoundColumn DataField="Title" HeaderText="Title" />
                    <telerik:GridBoundColumn DataField="Parent.Title" HeaderText="Blog" />
                    <telerik:GridDateTimeColumn DataField="DateCreated" HeaderText="Date Created" />
                    <telerik:GridBoundColumn DataField="Comments.Count" HeaderText="Comments" />
                </Columns>
             </MasterTableView>
        </telerik:RadGrid>
    </div>

</div>
using System;
using Telerik.Sitefinity;

namespace SitefinityWebApp.Custom
{
    public partial class CustomWidget : System.Web.UI.UserControl
    {
        protected void CreateBlog_Click(object sender, EventArgs e)
        {
            App.WorkWith().Blog().CreateNew().Do(b => b.Title = "My New Blog").SaveChanges();
        }

        protected void CreatePosts_Click(object sender, EventArgs e)
        {
            using (var fluent = App.WorkWith())
            {
                var blog = (from b in fluent.Blogs()
                            where b.Title == "My New Blog"
                            select b).First();

                for (int i = 0; i < 10; i++)
                {
                    blog.CreateBlogPost().Do(p => p.Title = "Blog Post " + i).SaveChanges();
                }
            }
        }

        protected void DisplayPosts_Click(object sender, EventArgs e)
        {
            var posts = from p in App.WorkWith().BlogPosts()
                        where p.Parent.Title == "My New Blog"
                        orderby p.Title
                        select p;

            RadGrid1.DataSource = posts.Get();
            RadGrid1.DataBind();
        }
    }
}

This code might be useful for anyone who is exploring with Sitefinity’s Fluent API.

The video isn’t online yet.  It will probably be posted in the coming weeks.

Tagged with: , | Leave a comment

Readability inspired blog theme

Readability has lived on my web browser’s bookmark toolbar for a long time.  It’s an indispensable tool for making the web tolerable.  Readability takes an unruly ad-laden poorly-formatted web site and turns it into a reader friendly format.

Shown below is just one example from CmsWire.  They certainly aren’t the worst offender, but given their area of expertise (content publishing) I find their dancing circus clown antics particularly jarring.

Continue reading

Tagged with: , , , | Leave a comment