Information - Browsing About
-
Road Map
The following road map outlines planned or completed features. This road map is subject to change based on user demand and contributions.
Release 1.4 (Spring 2010)
-
User management updates in AtomSite Manager
-
Filter by category, search on entries and annotation listings
-
Sprite improvements for icons
-
Better plugin installation restart notifications
- Database Repository
- Macros (inline content widget)
- Page layout and template modification
- Widget management (drag-drop?)
- CKEditor customizations
Release 1.3 (released 9/21/2009)
- BlogML Plugin
-
- Import / Export in Tools area of AtomSite Manager
- Wizard import support
- Pluggable tools area
- Re-add Settings green theme
- Re-add Hibiscus theme
- jQuery plugin updates (single-ddm, tools, timeago)
- Asset combination improvements with support for CDN (Content Delivery Network)
- CKEditor 3.0 final
Release 1.2 (released 8/4/2009)
- Switch to CKEditor (not yet customized)
- Updates to support Multi-user in AtomSite Manager
- New Settings pages for Entire Site, Workspace, and Collections
-
- Add New Workspaces
- Add New Collections
- Add/Remove Administrators
- Add/Remove Authors and Contributors at both Workspace and Collection levels
- Change the content types accepted for each collection
- Remove categories for each collection
- Smart Javascript Consolidation/Minification
- Smart Stylesheet Consolidation/Minification
- Smart Asset Management
- Other fixes
Release 1.1 (released 6/28/2009)
- Improved Plug-in Management
-
- Upload and install zipped plug-ins
- Theme Chooser
- AtomSite Manager Improvements
-
- Dashboard and other pages
- Other fixes
Release 1.0 (released 5/1/2009)
- Admin Pages
- Plug-in Manager
Release 0.9 (released 3/18/2009)
- Plug-ins
- Widgets
- OpenID
- Theming via YUI Grids
- Name Change
- ASP.NET MVC 1.0 RTM
Release 0.8 (released 12/24/2008)
- Spam Block
- Html to Xhtml Conversion
- New Theme (Settings)
- Setup Wizard
- Extended Content
Release 0.7 (released 10/21/2008)
- Trackbacks/Pingbacks
- New Theme (Hibiscus)
- Search
- Recent Comments Control
-
-
Screenshots
-
Welcome
-
Themes
- Overview
- Themes Location
- Cascading Theme
- Changing Theme
- Default Theme Layout
- Content and Include Areas
- Page Widths and Column Templates
- Changing Includes
- Writing a Basic Theme
- Advanced Themes
Overview
AtomSite has a very flexible theme system. A theme is just a collection of assets dropped into the various asset theme folders. You can control which theme is used at either the workspace or collection level. The default theme contains standard content and include areas. You can easily control what is included in these areas. You can create a basic theme, that just includes a CSS stylesheet or you can do advanced modifications to the markup for the master page, individual pages, and even individual controls or widgets.
Through the use of YUI Grids and the widget include system, there is a significant amount of modification possible without having to modify the default markup. In fact, this whole site you're looking at http://atomsite.net is itself a simple theme that is just a CSS file and some images on top of what is provided out of the box.
Theme Asset Locations
Themes are stored in the varioius asset directories in the root of your application. Each theme has its own directory that shares the name of the theme. For example, two very basic themes; "blue", "hibiscus":
Theme Name Asset Type Location blue CSS /css/blue/blue.css Image /img/blue/bg.jpg View /themes/blue/BlogEntry.aspx Javascript /js/blue/BlogEntry.js hibiscus CSS /css/hibiscus/hibiscus.css Image /img/hibiscus/flower.png View /themes/blue/BlogComment.ascx For basic themes, the name of the stylesheet should match the name of the theme.
Cascading Theme
Themes can be built on top of the default theme. The default theme contains all the files needed for displaying a website. To simplify theme development, a designer does not need to re-invent these files for a new theme. Therefore, if a required file is not provided by a theme, it will automatically fall-back and use a file from the default theme. For example, a basic theme that only provides a CSS file and some image files will always fall-back to the default theme for how the markup is rendered.
Changing Themes
Themes can be controlled at two different scopes: workspace and collection. Changing a theme at the workspace level will apply the theme to all collections within that workspace. However, if you specify a different theme at the collection level, it will override the theme set at the workspace level.
Setting a theme at the workspace level
TODO: post image of service.config file here
Setting a theme at the collection level
TODO: post image of service.config file here
Default Theme Layout
The following diagram shows the default layout within the Site.Master file. Please note the usage of YUI Grids layout. This allows the side column to appear on either the left or the right. The built-in flexibility in this layout should support a large percentage of all common site layouts.
Content and Include Areas
In the above Site.Master Layout diagram, the areas marked with [icon] are content areas. The areas marked with [icon] are include areas (for widgets).
Content Areas
More details coming soon
Include Areas
More details coming soon
Page Widths and Column Templates
The PageWidth can be controlled for each individual page at any scope. Also, the column width can be controlled by using the PageTemplate (also at any scope).
YUI Page Widths
- doc
- 750px centered (good for 800x600)
- doc-2
- 950px centered (good for 1024x768)
- doc-3
- 100% fluid (good for everybody)
- doc-4
- 974px fluid (good for 1024x768)
- doc-custom
- custom page width (set in CSS)
YUI Column Templates
- yui-t1
- 160px side column on left
- yui-t2
- 180px side column on left
- yui-t3
- 300px side column on left
- yui-t4
- 180px side column on right
- yui-t5
- 240px side column on right
- yui-t6
- 300px side column on right
Changing Includes
Changing Page Includes
More details coming soon
Changing Widget Area Includes
More details coming soon
Writing a Basic Theme
Starting with blank slate, CSS, images
No markup changes, just CSS and YUI doc width or template changes
Finally, you can theme individual Page views using an #id selector in your CSS as the body tag always has the id of the PageName.
More details coming soon
Writing an Advanced Theme
Custom markup, with custom full site layouts and CSS and YUI doc widths
Altering Site.Master, page markup, widget markup, etc.
Creating new Content areas
Creating new Include areas
Cons of Advanced Themes, Compatibility, Upgradability, non-standard include areas
More details coming soon
-
Known Issues
Release 1.0
- Wizard does not trim whitespace off of the name when filling out the basic settings
Release 0.9
- Install to virtual folder (sub-folder) will result in 401
and/or 404 errors in Live Writer
- add slash onto end of base address in service.config file, xml:base="http://localhost/AtomSiteDemo/">
- Login path is incorrect in web.config and may cause problems
with failed logins or OpenId logins
<forms loginUrl="~/Login.xhtml"/>
should say<forms loginUrl="~/Account/Login"/>
-
Annotations and Comments
Overview
AtomSite has full featured support for annotations (also known as comments). Annotations can be turned on/off at the collection level or individual entry level. You can require annotations to be approved before they are visible. AtomSite is built to support paging and threading of annotations. AtomSite supports annotations in accordance with Atom Threading Extension.
Control
AtomSite supports multiple methods for controlling if an entry supports annotations. The first method is by modifying the configuration setting called annotationsOn on the collection.
- annotationsOn
- true = annotations are on
- false = annotations are off
You can gain granular control over who is allowed to annotate by changing the role matrix at either the service, workspace or collection level. As shown below, the default role matrix allows anyone to annotate.
<svc:roleAction name='Annotate' admin='True' author='True' contrib='True' user='True' anon='True'/>
You can also control annotations at the entry level by the allowAnnotate setting on each entry.
Finally, annotations can be controlled by an expiration date set by the annotateDaysOpen setting.* Annotations on an entry will appear closed after X number of days past the published date.
Approvals
When an annotation is created, the annotation may be automatically approved depending on their role. As seen below in the default role matrix, users and anonymous users comments must be approved by an administrator, author, or contributor.
<svc:roleAction name='ApproveAnnotation' admin='True' author='True' contrib='True' user='False' anon='False'/>
Annotations that have not been approved will only show to authorized users. The unapproved annotations will show up as red. When the annotation is successfully approved, it fades to green (via jQuery). The website supports approving individual annotations or all annotations at the same time.
Paging
AtomSite was designed to support paging comments. This is valuable when an entry has too many annotations that may slow the page down. The backend and service layer already support paging. In the future, a theme will be available that supports this paging on the front-end.
Threading
As mentioned earlier, annotations are created by posting an entry to any existing entry. Since every annotation is an entry, this allows you to thread the entries. In the blogosphere, this is known as nested comments.
The backend does support threading comments. However, there is not yet first class support for this on the front-end. It is scheduled for a future release.
Technical
AtomSite supports new annotations by posting an entry to the address of any existing entry. The user's browser talks directly to the service using an ajax request.
POST /blog/2008/08/24/BlogSvcNowSupportsComments.atom HTTP/1.1 x-requested-with: XMLHttpRequest Accept-Language: en-us Referer: http://atomsite.net/blog/2008/08/24/BlogSvcNowSupportsComments.xhtml Accept: application/xml, text/xml, */* Content-Type: application/atom+xml;type=entry UA-CPU: AMD64 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Win64; x64; .NET CLR 2.0.50727; SLCC1; .NET CLR 3.5.21022; .NET CLR 3.5.30428; .NET CLR 3.5.30729) Host: blogsvc.net Content-Length: 196 Connection: Keep-Alive Pragma: no-cache Cookie: ASP.NET_SessionId=fr1fix55vfyqiivzypp05b55 <entry xmlns='http://www.w3.org/2005/Atom'> <title>Comment</title> <author> <name>Test</name> <email>test@test.com</email> <uri>http://test.com</uri> </author> <content type='html'>Test</content> </entry>HTTP/1.1 201 Created Cache-Control: private Content-Type: text/plain Location: http://atomsite.net/blog/2008/08/24/BlogSvcNowSupportsComments/Comment.atom Server: Microsoft-IIS/7.0 X-AspNet-Version: 2.0.50727 X-Powered-By: ASP.NET Date: Sun, 24 Aug 2008 20:47:19 GMT Content-Length: 67 ..snip..
The response will now contain a cookie to remember anonymous user details. If the request is from an AJAX call it will return the html to add the web page, otherwise it will return the Atom entry.
$.ajax({ type: "POST", url: "<%= AnnotationHref %>", data: "<entry xmlns='http://www.w3.org/2005/Atom'> <title>Comment</title> <author> <name>" + parse($('#txtName').val()) + "</name> <email>" + encodeURI($('#txtEmail').val()) + "</email> <uri>" + encodeURI($('#txtWebsite').val()) + "</uri> </author> <content type='html'>" + parse($('#txtComment').val()) + "</content> </entry>", contentType: "application/atom+xml;type=entry", dataType: "xml", complete: function(req) { if (req.status == 201) { reset(); $.ajax({ url: "/blog/<some entry>.atom" + req.responseText, success: function(html) { $(html).hide().appendTo("#annotations").addClass("annotationSelf").fadeIn("slow"); } }); } else { alert('Failed to post comment: ' + req.statusText); } } });*This feature will be available in future version.
-
Troubleshooting
-
PUT and DELETE
fail during the setup wizard - Solution 1: Disable the WebDAV module in IIS7
- Solution 2: Add the PUT and DELETE verbs in UrlScan [AllowVerbs] configuration
- Solution 3: jaffen says to try this post for IIS7.5 and server 2008
- Solution 4: Ignore the error (with reduced AtomPub functionality)
- Write access and delete access fail during the setup wizard
- Solution 1: Enable write access to the App_Data folder
- Solution 2: Help us develop a Sql Repository
- I get a 401 when trying to setup Live Writer.. but if I hit the service.atomsvc document from a browser I can get access to it once I login using forms authentication (the standard HTTP authentication fails repeatedly)
- Solution 1: IIS6, turn off IIS authentication
- Solution 2: IIS7, add <remove name="WindowsAuthenticationModue"/> to the system.webServer/modules tag in the web.config file
-
-
AtomSite Installation
Install ASP.NET MVC Final
Development: Download and install ASP.NET MVC 1.0.
Deployment Only: If your server already has .NET 3.5 SP1 installed then you can skip this step.
Setup Service Document
AtomSite has a setup wizard in that will automatically test and alter your configuration. However, for advanced scenarios, you may want to modify the configuration manually.
Advanced Service Configuration :
AtomSite is setup using a standards-based service document. This document contains information about your workspaces and collections. Out of the box, AtomSite comes with one workspace and three collections in the Service.config. This file is located in the root next to the Web.config.
You can create as many workspaces and collections as you wish. You can control access by use of roles. Please note that the href to the collection must match the collection name as specified in the id. The id must be in tag format as described in URIs and URLs.
Deploy Files to Server
Development: Open the solution in Visual Studio. Set the WebCore project as the startup project. You can either build and run the project or right-click the WebCore project and choose publish to deploy the files to a server.
Deployment: Open your favorite FTP client and upload the files to your server. If you server has ASP.NET MVC installed, then you will not need to deploy the System.Web.Mvc.dll file with the other files in the bin folder. If you uploaded all the files correctly, you should see the following file structure:
Open the browser to your website and you should see the setup wizard. Follow the steps in the wizard and make sure that you choose a strong password.
-
AtomSite Overview
AtomSite is built with extensible web standards that unleash your social website and blog
AtomSite makes it easy to build a customized website where social interaction flourishes and the content is search engine optimized
Start a blog, manage a website, and publish your great content online. With extensibility built in, the possibilities are endless.
What's New in AtomSite 1.3?
- Import existing blog. The new BlogML pluging allows you to easily import your existing blog.
- More theme choices. We've added two more theme choices to the list of installed themes.
- Improved download performance. It is now easier to deliver assets from multiple locations.
- New tools area. You can now easily plug in new tools for various maintenance tasks.Core Features
AtomSite has the features you expect from a modern day content management system.
First rate blogging with support for
- SEO optimized and performance optimized
- Multiple-authors and contributors
- Drafts, approvals, and asynchronous publishing
- Trackback and Pingback support
- Anti-spam features
- Comments with Gravatar and OpenID
- XHTML compliance even with rich html comments
- Fully theme-able
- Easy installation and administration
- FTP deploy on IIS7
- Setup wizard tests installation
- Full AtomPub based management
- Control plug-in activation
- Familiar AtomSite Manager administration dashboard
-
AtomSite Plug-Ins
Tutorials
- Plugin Development Basics
- Plugin Development Advanced
AtomSite plugins are the heart and soul of AtomSite. In fact, everything in AtomSite is built as a plugin. This makes it easy to extend and customize. Out-of-the-box, there are many core plugins which provide most of the common functionality a blog or CMS may need. However, if there is something you want to add, the following guide will show you how to create a plugin.
Plugin Interface
All plugins must implement the IPlugin interface.
public interface IPlugin { string DefaultAssetGroup { get; set; } int DefaultMerit { get; set; } bool CanUninstall { get; set; } PluginState Setup(IContainer container, string appPath); PluginState Upgrade(IContainer container, string appPath, Version previous, Version current); Plugin GetPluginEntry(IContainer container, string appPath); PluginState Uninstall(IContainer container, string appPath); void Register(IContainer container, List<SiteRoute> routes, ViewEngineCollection viewEngines, ModelBinderDictionary modelBinders, ICollection<Asset> globalAssets); }The best way to do this is to extend the BasePlugin class as it provides many useful pre-built funtions that make building a plugin much easier.
Useful Setup Functions
under construction
Useful Upgrade Functions
under construction
Useful Register Functions
under construction