MacawSharePointSkinner 1.0.0.1 released

Welcome to the MacawSharePointSkinner. MacawSharePointSkinner is a tool designed to enable non-intrusive modifications to the visual and functional design of SharePoint. The tool can be used for both Windows SharePoint Services 2.0 and for Microsoft Office SharePoint Portal Server 2003. Actually, it can be used for any web site utilizing the ASP.NET technology. Download at http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=3ed68681-ae28-4d33-8c36-403e6af7fa11 UPDATE: can now be found at http://www.codeplex.com/SharePointSkinner.

 

One of the major issues that we encounter in the implementation of SharePoint within organizations is that organizations want modifications to the visual and functional design that are almost impossible to implement without a major overhaul of the standard files and templates provided with SharePoint. SharePoint is constructed as a kind of standard product that is best used out of the box. Some design can be applied by specifying themes (for team sites) or by modifying CSS stylesheets (for the portal). The possibilities here are limited however, and changes to the actual HTML that is rendered results in changes to hundreds of the standard files.

 

When implementing customer requested visual modifications, one of the big problems that we encountered in making extensive modifications to the files and templates delivered with SharePoint was that the rendering of the same HTML is implemented differently by different pages. Some pages contain the actual HTML that is outputted and can be easily modified. Other pages contain server controls that do the rendering of the same HTML. These pages are almost impossible to modify. Another problem is that modifications must often be made to hundreds of pages.

 

The approach that MacawSharePointSkinner takes is two-fold:

 

Text Replacements – MacawSharePointSkinner lets SharePoint render the final HTML, and just before this HTML is sent to the browser MacawSharePointSkinner makes the needed modifications to this HTML. This is done in such a way that no modifications are needed to the internal files of SharePoint, so it is non-intrusive. Another advantage is that it will survive service packs (although the output HTML may change in a service pack!) and template modifications.

 

Url Redirections – MacawSharePointSkinner can translate requested url’s into other url’s. This allows you to redirect standard SharePoint url’s to your own url’s.

 

MacawSharePointSkinner is implemented as an HttpModule that provides functionality for url replacements and powerful replacements in the HTML output rendered by SharePoint.

 

I will not describe the inner workings of an HttpModule, for more information have a look at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconhttpmodules.asp.

 

1         How to install MacawSharePointSkinner

1.1      Introduction

MacawSharePointSkinner is an HttpModule. HttpModules are configured in the web.config of your ASP.NET web site. SharePoint is an ASP.NET web site. The required DLL is installed in the Global Assembly Cache (GAC).

1.2      Procedure

Follow the steps below for installation:

 

Step

Action

1

Deploy the DLL Macaw.SharePoint.Skinner.dll from the Release directory to the GAC by dragging[1] it to the directory c:\windows\assembly using Explorer.

2

Make a directory to contain the MacawSharePointSkinner configuration file, for example c:\MacawSharePointSkinnerConfig. Copy the files SkinConfig.xml and SharePointSkinner.xsd to this directory.

3

Open the web.config files of the portal for which you want to enable the MacawSharePointSkinner functionality, and the SharePoint /_layouts virtual directory in NotePad or another text editor. Those files can be found in the virtual directory of the portal (when SharePoint is configured on the default web site, this directory is c:\inetpub\wwwroot), and the directory C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\LAYOUTS\web.config.

 

In step 3-10 the needed changes are described as the bold lines in the boxes. The other lines of the configuration file are there to give you the context where to find the place to do the modifications.

4

Enable support for an appSettings section:

 :<configSections>
    <section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <sectionGroup name="SharePoint">    :

5

Add the appSettings section with the following keys:

 

MacawSharePointSkinner-ConfigFile

Path of the configuration file. Must be a directory path, not an URL.

MacawSharePointSkinner-Logging

‘on’ or ‘off’ to enable or disable debugging information in comments in the page

 :</configSections> 
<appSettings><!-- MACAW: configuration for MacawSharePointSkinner --><add key="MacawSharePointSkinner-ConfigFile" value="c:\MacawSharePointSkinnerConfig\SkinConfig.xml"/><add key="MacawSharePointSkinner-Logging" value="on"/><!-- MACAW: end of configuration for MacawSharePointSkinner --></appSettings>
     <SharePoint>  :

6

Add the MacawSharePointSkinner HttpModule:

 :<httpModules>  <clear />  <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" />  <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" />  <!-- <add name="Session" type="System.Web.SessionState.SessionStateModule"/>-->
  <add name="MacawSharePointSkinner" type="Macaw.SharePoint.Skinner.Skin,Macaw.SharePoint.Skinner, Version=1.0.0.1, Culture=neutral, PublicKeyToken=efcf6ac388b9b555"/>
</httpModules>:
 

1.3      Final step

The final step is to modify the MacawSharePointSkinner configuration file SkinConfig.xml.

1.4      Alternative configurations

This section describes some alternative configuration possibilities for the HttpModule dll, and for the used configuration files.

1.4.1      HttpModule dll deployment

The procedure described above deploys the Macaw.SharePoint.Skinner.dll to the global assembly cache. This deployment has the advantage that you only need one step to deploy the assembly and it is available in all virtual directories. Disadvantage is that an IISRESET is needed to activate the DLL.

 

If you don’t want to deploy Macaw.SharePoint.Skinner.dll to the global assembly cache, you need to deploy it to the following bin directories:

 
  • C:\inetpub\wwwroot\bin (the path to the SharePoint virtual directory)
  • C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\ISAPI\BIN (to keep FrontPage working, and have skinning support on the help pages)
  • C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\LAYOUTS\BIN (to have skinning enabled on all pages in the ‘/_layouts/’ directory)

1.4.2      Configuration files

It is possible to specify different configuration files for the different virtual directories in their corresponding web.config files. This allows for specific skinning configurations for the SharePoint virtual directory pages and the /_layouts virtual directory pages.

 

It is possible to specify a file pattern as a configuration file, instead of a single file. So for example if you specify c:\MacawSharePointSkinnerConfig\SkinnerSharePoint*.xml as configuration file in the web.config of the SharePoint virtual directory and  c:\MacawSharePointSkinnerConfig\SkinnerLayout*.xml in the web.config of the /_layouts virtual directory, you can have multiple configuration files to define your skinning operations. This is used in large Share Point modification projects where each subproject has its own configuration files. Note however that the configuration files are read in undefined order, so make the configuration files as independent as possible of each other. Especially overlapping URL redirections can lead to unpredictable behavior.

 

If order of interpretation of configuration files is important, it is also possible to supply multiple configuration files separated by ‘;’ characters. For example: c:\MacawSharePointSkinnerConfig\mefirst.xml; c:\MacawSharePointSkinnerConfig\restoffiles*.xml

2         MacawSharePointSkinner configuration

2.1      Introduction

Configuration of the MacawSharePointSkinner is done in an XML file named SkinConfig.xml. This file can be found in a directory called c:\MacawSharePointSkinnerConfig or another directory as defined in step 2 of the installation procedure defined in section 2.2. This file can be edited in any text editor like notepad or in a special XML editor[2].

 

Within the configuration file regular expressions[3] are used extensively to define match patterns.

2.2      Structure of the configuration file

The structure of the configuration file is unambiguously defined by the corresponding XSD schema SharePointSkinner.xsd.

 

In this chapter some configuration examples are given

2.3      Skinning language

This section describes the skinning elements that make up the skinning language. The elements are given, and their hierarchy. Between brackets the occurrence count is specified.

 

(1)

exactly once

(0,1)

optional

(0,n)

zero or more times

(1,n)

one or more times

 

skinner (1)

            default-uri-matchtype (0,1)

cache-time (0,1)

parameters (0,1)

            parameter (1, n)

urlredirections (0,1)

            urlredirection (0,n)

rules (0,1)

            rule(0,n)

                        uris (1)

                                    uri (1,n)

                                                match (0,1)

parameters (0,1)

                                                            parameter (1, n)

                                                texts (0,1)

                                                            text (0,n)

                                                                        match (0,1)

parameters (0,1)

                                                                                    parameter (1, n)

                        blocks (1)

                                    block (1,n)

                                                match (0,1)

                                                            replacements (1)

                                                                        replacement (1,n)

                                                                                    find (1)

                                                                                    replace (1)

  

Below is a detailed description of the available elements.

 
Element Description

Skinner

Root element in the skinning configuration file.

default-uri-matchtype

Default way of matching for all match elements for uri.

 
Type Name Req. Possible values / description
Attribute matchtype No RegExp|WildCard|Exact, not specifiedàRegExp
 

Currently only the type RegExp is supported. This is always the initial default value.

cache-time

Time to cache the configuration file in seconds.

 
Type Name Req. Possible values / description
Attribute duration Yes 0, -1, n
 

Currently time expiration is not supported. Only the following values are supported:

0: the configuration is reread on every replacement (for testing purposes only)

-1: the configuration is never reread. A new initialization happens on IISRESET

parameters

Group element for specifying parameters using the parameter element.

parameter

Parameter definition that can be used for replacements in other elements like match, find and replace.

 
Type Name Req. Possible values / description
Attribute name Yes Name of the parameter
Value n.a. Yes Value of the parameter
 

Parameters are replaced in the text of elements when the text {{parametername}} occurs.

urlredirections

Group element for specifying url redirections using the urlredirection element.

urlredirection

Url redirection definition that specifies how to redirect a matching target url to a destination url.

 
Type Name Req. Possible values / description
Attribute name Yes Name of the redirection rule

Attribute

permanent

No true|false. If true, redirections are done through an HTTP 301 response. This means an extra roundtrip to the server. Complete Url (http://servername/...) must be specified for the destination.I false, the redirection is done within the same application domain (same virtual directory)
Attribute enabled No true| false. If true this redirection is used, if not specified redirection is used
 

Parameters are replaced in the text of elements when the text {{parametername}} occurs.

Target

Specifies the expression to match the target uri.

 
Type Name Req. Possible values / description
Attribute matchtype No RegExp|Exact, not specifiedàRegExp
Value n.a. Yes Expression to match. Regular expression match in CDATA section

destination

Replacement for the matched uri. May contain captures and parameters.

 
Type Name Req. Possible values / description
Value n.a. Yes Replacement text. Regular expression replacement in CDATA section

rules

Group element for specifying rules using the rule element.

rule

Skinning is implemented by execution of rules. More than one rule can be defined. When a rule matches, skinning can stop at this rule or it can continue to match next rules. A rule contains two elements:

  • uris specify the match the requested page must make on uri, text or both
  • blocks to specify the replacements to be executed on the page if matching
 
Type Name Req. Possible values / description
Attribute enabled No true| false. If true this rule is used, if not specified rule is used
Attribute name Yes Name of the rule
Attribute description No Description of the rule
Attribute match-continue No true| false. If true continue matching next rules if this rules already matched, if false stop after match

uris

Group element for specifying uri matches using the uri element. Within the uris element we specify which pages will match this rule, either on uri match or text match or both.

uri

Uri match. If no match element is specified all uris match. Parameters can be defined under the uri element that can be used in the block replacements.

 
Type Name Req. Possible values / description
Attribute enabled No true| false. If true this uri is used, if not specified uri is used

match (in uri)

Specifies the expression to match the uri. If this element is missing, all uris match.

 
Type Name Req. Possible values / description
Attribute matchtype No RegExp|WildCard|Exact, not specifiedàRegExp
Value n.a. Yes Expression to match. Expression match in CDATA section

texts

Group element for specifying texts using the text element.

text

Text match. If no match element is specified the text always matches. Parameters can be defined under the text element that can be used in the block replacements.

 
Type Name Req. Possible values / description
Attribute enabled No true| false. If true this text  is used, if not specified text is used

match (in text)

Specifies the expression to match the text. If this element is missing, the text always matches.

 
Type Name Req. Possible values / description
Attribute matchtype No RegExp|Exact, not specifiedàRegExp
Value n.a. Yes Expression to match. Regular expression match in CDATA section

blocks

Group element for specifying blocks using the block element.

block

Block selection. If no selection element is specified the whole text is selected for replacements.

 
Type Name Req. Possible values / description
Attribute name No Name of the block
Attribute description No Description of the block
Attribute enabled No true| false. If true this block is used, if not specified block is used

selection

Specifies a selection for a block to do replacements on. If this element is missing, replacements specified in the block are executed on the complete text of the requested page.

 
Type Name Req. Possible values / description
Value n.a. Yes Block selection. Regular expression in CDATA section

replacements

Group element for specifying replacements in the block using the replacement element.

replacement

A replacement to be executed. Contains of a find and replace element.

 
Type Name Req. Possible values / description
Attribute name No Name of the block
Attribute description No Description of the block
Attribute count No N, number of replacements to execute, if not specified then infinite
Attribute enabled No true| false. If true this rule is used, if not specified rule is used

find

Regular expression for the selection of text that may contain captures. Find text may contain parameters.

 
Type Name Req. Possible values / description
Attribute matchtype No RegExp|Exact, not specifiedàRegExp
Value n.a. Yes Expression to find. Regular expression match in CDATA section

replace

Replacement for the selected text. May contain captures and parameters.

 
Type Name Req. Possible values / description
Value n.a. Yes Replacement text. Regular expression replacement in CDATA section

When it is specified to specify text in a CDATA section to prevent invalid XML, use the following syntax: <![CDATA[text]]>

3         Advanced Skinner configurations

Pages are skinned by the skinner if the following conditions are met:

  • The page request is in a ASP.NET virtual directory
  • The web.config file contains the Macaw.SharePoint.Skinner HTTP module
  • The page request returns content of type text/html
 

If you have a page that returns for example XML (content type is text/xml) the page is NOT skinned.

 

If you don’t want a page to be skinned (and no comments added tot the top, even if there is no URL match), you can add skinnerskip=1 to the query string.

 

Example: http://server/default.aspx?skinnerskip=1

  

4         Regular expressions

4.1      Introduction

Matches, selections, finds and replacements are all done using regular expressions. There are multiple flavors available in regular expressions. MacawSharePointSkinner uses the .Net flavor. For more information on regular expressions have a look at:

 
Description Url

.Net regular expression documentation

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconregularexpressionslanguageelements.asp

Small overview of much used language constructs

http://www.regexlib.com/CheatSheet.htm

4.2      Regular expression matching configuration

All regular expression matches performed in MacawSharePointSkinner are done with the following options enabled:

 

IgnoreCase              Specifies case-insensitive matching.

Multiline                  Specifies multiline mode. Changes the meaning of ^ and $ so that they match at the beginning and end, respectively, of any line, not just the beginning and end of the whole string.

CultureInvariant     Specifies that cultural differences in language is ignored.

 

To increase the performance of matching, all regular expressions are compiled when the configuration file is read.

4.3      Tools for regular expression construction

When constructing regular expressions I always utilize a regular expression construction tool. These tools allow you to specify a source text (use the ‘view source’ text of the page you want to do replacements on), a regular expression (including captures) and a replacement. The tool visualizes the matches in the text and the resulting text after the replacement.

 

See http://www.larkware.com/RegexTools.html for an overview of available tools. One of my favorites in “The regulator” (http://regulator.sourceforge.net).

4.4      Tips & tricks

This section contains some tips and tricks in smart regular expressions to perform skinning tasks.

4.4.1      Block selection of head

In one situation we had to replace the stylesheets within the head. These are four replacements. To improve replacement speed the replacements are done on a block that matches only the head section. The head can be matched as follows:

 <selection><![CDATA[<head>(?:.|\s)*?</head>]]></selection>

5         Using MacawSharePointSkinner

There are many, many usages for the MacawSharePointSkinner. Some examples of the usage of the MacawSharePointSkinner are:

  • Apply different style sheets to different areas in the portal area tree.
  • Remove system account from the “Assigned to:” dropdown boxes in the new and edit pages of certain lists (issues, tasks).
  • Redirect access to certain pages in the /_layouts directory to your own, modified, versions of these pages.

5.1      Url redirections

Url redirections in SharePoint works different from url redirections with normal ASP.NET applications. SharePoint uses special handling of url’s, because it uses a kind of “in context” page access. Examples are the pages in the /_layouts virtual directory. If you request the url http://servername/sites/mysite/_layouts/1033/aclinv.aspx, you actually access the page /_layouts/aclinv.aspx, but in the context of the SharePoint site mysite.

 

Due to special handling in SharePoint, we also have to take this into account in specifying the url redirections.

 

If you want to redirect the page /_layouts/1033/aclinv.aspx to /_layouts/my1033/aclinv.aspx, do the following:

 <urlredirection name="aclinv.aspx"><target>/_layouts/1033/aclinv.aspx</target>      <destination>/_layouts/my1033/aclinv.aspx</destination></urlredirection> 

This redirection is performed “in context”, so in the destination page we are still in the same context.

 

If you want to redirect all access to the “in context” page /_layouts/1033/aclinv.aspx (for example http://servername/sites/mysite/_layouts/1033/aclinv.aspx and http://servername/sites/othersite/_layouts/1033/aclinv.aspx) to a page NOT in /_layouts, the complete url of the destination page must be specified, and the permanent attribute must be set to true (if target is full url, permanent is automatically set to true).

 <urlredirection name="aclinv.aspx" permanent="true"><target>/_layouts/1033/aclinv.aspx</target>      <destination>http://www.disney.com</destination></urlredirection> 

If you only want to redirect all access to the page http://servername/sites/mysite/_layouts/1033/aclinv.aspx (so NOT access to all /_layouts/1033/aclinv.aspx pages in any context), a complete url of both the target and destination page must be specified, and the permanent attribute must be set to true (if target is full url, permanent is automatically set to true).

 <urlredirection name="aclinv.aspx" permanent="true"><target>http://servername/sites/mysite/_layouts/1033/aclinv.aspx</target>      <destination>http://www.disney.com</destination></urlredirection> 

6         Frequently Asked Questions

Q: MacawSharePointSkinner works great in my SharePoint sites and in the portal, but not for the pages in the /_layouts virtual directory. It also does not work for the help pages of SharePoint.

A: See section 2.2 for information on how to modify the web.config file to add the HttpModule. The procedure to add it to the /_layouts virtual directory is included in this section. For each virtual directory you want to skin you have to modify the web.config file. So for

 

Portal/Wss:

/_layout:

/_vti_bin (help pages):



[1] copy – paste does not work on the assembly directory, dragging is needed for automatic installation of the DLL in the GAC. The assembly can also be installed using the gacutil tool. In this case execute the following command: gacutil /i Macaw.SharePoint.Skinner.dll

This tool can be found in the directory C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322.

 

[2] Because the corresponding XSD schema file is provided, syntax checking on the XML can be used in XML editors like XMLspy and Visual Studio .NET 2003.

[3] If you don’t know what regular expressions are, go to Google, and in the search string type define:regular expression. See also chapter 4 for more information on regular expressions.

Published Thursday, January 12, 2006 1:58 AM by svdoever
Filed under:

Comments

Saturday, January 14, 2006 2:58 AM by EROL MVP SharePoint

# re: MacawSharePointSkinner 1.0.0.1 released

on my blog http://sharepointerol.blogspot.com/ EROL MVP SPS
Thursday, June 01, 2006 4:45 PM by The Boiler Room - Mark Kruger, SharePoint MVP

# SharePoint Web Parts: Free 3rd Party SharePoint Web Parts &amp;amp; Tools

For those who aggregate my feed and do not often visit the blog iteself... I've updated my SharePoint...
Thursday, October 12, 2006 3:50 PM by My Two Bits

# Skinning SharePoint, reading your mail and thinking Smart

With email overload, every once in a while I try and stem the tide. It's a tough act. You really have

Wednesday, June 27, 2007 9:41 AM by The Boiler Room - Mark Kruger, Microsoft SharePoint MVP

# Free SharePoint Web Parts (3rd Party)

Free SharePoint Web Parts (3rd Party) Konrad Brunner - UGS&#39;s Web Parts (broken link 8/25) Document

Monday, May 26, 2008 4:47 AM by jandho

# re: MacawSharePointSkinner 1.0.0.1 released

Interesting article. However the download link to gotdotnet does not exist anylonger. I canno find it in the MSDN code gallery under Sharepoint. Is ther any other link?

Tuesday, June 17, 2008 5:41 AM by Marc

# re: MacawSharePointSkinner 1.0.0.1 released

One question: HOW TO DEINSTALL?????

# Free SharePoint Web Parts &laquo; Prashant Jadhav : Microsoft Sharepoint, Web 2.0, Elearning, MLearning

Pingback from  Free SharePoint Web Parts &laquo; Prashant Jadhav : Microsoft Sharepoint, Web 2.0, Elearning, MLearning

Tuesday, February 07, 2012 5:20 PM by Buy oem Software

# re: MacawSharePointSkinner 1.0.0.1 released

n0xq2X I`m so grateful that you enlightened me and the most important thing that it happened in time. Just think, I have been using the internet for six years already but it`s the first time I`ve ever heard about it!....

Sunday, February 12, 2012 1:56 PM by buy cheap oem software

# re: MacawSharePointSkinner 1.0.0.1 released

PkT4o1 Yeah, in my opinion, it is written on every fence!!....

Wednesday, March 07, 2012 10:25 AM by Adobe OEM Software

# re: MacawSharePointSkinner 1.0.0.1 released

VjU2fs Im obliged for the blog post.Thanks Again. Fantastic.

Sunday, March 11, 2012 1:16 PM by emergency preparedness response

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks for all the answers:) In fact, learned a lot of new information. Dut I just didn`t figure out what is what till the end!...

Sunday, March 11, 2012 1:37 PM by Seo for youtube

# re: MacawSharePointSkinner 1.0.0.1 released

Gripping! I would like to listen to the experts` views on the subject!!...

Sunday, March 11, 2012 1:59 PM by tannlege oslo

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks, useful material I added your blog to my bookmarks!...

Sunday, March 11, 2012 3:19 PM by web design rossendale

# re: MacawSharePointSkinner 1.0.0.1 released

Edidn`t think about that. I'll tell my mother, she won`t believe it..!

Monday, March 12, 2012 9:39 AM by al

# re: MacawSharePointSkinner 1.0.0.1 released

Informative, but not convincing. Something is missing but what I can not understand. But I will say frankly: bright and benevolent thoughts!...

Monday, March 19, 2012 9:14 PM by Glasses

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks for the blog post.Thanks Again. Want more.

Tuesday, March 20, 2012 5:49 AM by ppi claims form

# re: MacawSharePointSkinner 1.0.0.1 released

Im grateful for the article post.Thanks Again. Want more.

Tuesday, March 20, 2012 6:15 AM by wholesale men clothing

# re: MacawSharePointSkinner 1.0.0.1 released

Appreciate you sharing, great article post.Much thanks again. Keep writing.

Tuesday, March 20, 2012 6:26 AM by Rapper

# re: MacawSharePointSkinner 1.0.0.1 released

Every time I come back here again and don`t get disappointed..!!

Tuesday, March 20, 2012 7:25 AM by graffiri bedrooms

# re: MacawSharePointSkinner 1.0.0.1 released

Muchos Gracias for your post.Thanks Again. Awesome.

Tuesday, March 20, 2012 7:36 AM by Levis

# re: MacawSharePointSkinner 1.0.0.1 released

Muchos Gracias for your blog article.Thanks Again. Fantastic.

Tuesday, March 20, 2012 8:09 AM by buy google +1

# re: MacawSharePointSkinner 1.0.0.1 released

As I have expected, the writer blurted out..!!

Tuesday, March 20, 2012 8:34 AM by rv extended warranties

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks for sharing, this is a fantastic article.Really looking forward to read more. Much obliged.

Tuesday, March 20, 2012 8:51 AM by DUI Lawyer Denver

# re: MacawSharePointSkinner 1.0.0.1 released

Post brought me to think, went to mull over!!....

Tuesday, March 20, 2012 9:44 AM by Luxury Home

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks so much for the post.Thanks Again. Really Cool.

Tuesday, March 20, 2012 10:54 AM by Luxury Home

# re: MacawSharePointSkinner 1.0.0.1 released

I value the article post.Really looking forward to read more. Awesome.

Tuesday, March 20, 2012 11:09 AM by united states top exports

# re: MacawSharePointSkinner 1.0.0.1 released

Im grateful for the blog.Thanks Again. Really Great.

Tuesday, March 20, 2012 11:36 AM by what is the best way to get rid of acne

# re: MacawSharePointSkinner 1.0.0.1 released

Strange but true. Your resource is expensive. At least it could be sold for good money on its auction!....

Tuesday, March 20, 2012 2:42 PM by ad network

# re: MacawSharePointSkinner 1.0.0.1 released

Really informative blog post.Really looking forward to read more. Really Great.

Tuesday, March 20, 2012 3:04 PM by Dentures

# re: MacawSharePointSkinner 1.0.0.1 released

I must admit, the webmaster is a cool guy..!!

Tuesday, March 20, 2012 4:26 PM by nightclub flyer design

# re: MacawSharePointSkinner 1.0.0.1 released

I really like and appreciate your blog article.Much thanks again. Want more.

Tuesday, March 20, 2012 6:02 PM by blown glass chandeliers

# re: MacawSharePointSkinner 1.0.0.1 released

Im thankful for the blog post.Really looking forward to read more.

Tuesday, March 20, 2012 6:28 PM by White Lake Homes for sale,

# re: MacawSharePointSkinner 1.0.0.1 released

Comrade kill yourself..

Tuesday, March 20, 2012 9:52 PM by vBulletin Template

# re: MacawSharePointSkinner 1.0.0.1 released

It's pleasant sitting at work to distract from it�to relax and read the information written here:DD

Wednesday, March 21, 2012 2:57 AM by sim unlock htc

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks for the news! Just was thinking about it! By the way Happy New Year to all of you:DD

Wednesday, March 21, 2012 4:43 AM by nightclub flyer design

# re: MacawSharePointSkinner 1.0.0.1 released

I envy you. The content and design of your blog is much better than mine. Who made a design for you?!....

Wednesday, March 21, 2012 7:17 AM by Hip Hop Beats

# re: MacawSharePointSkinner 1.0.0.1 released

Im grateful for the blog article.Much thanks again. Will read on...

Wednesday, March 21, 2012 7:31 AM by handv&#228;skor

# re: MacawSharePointSkinner 1.0.0.1 released

Muchos Gracias for your blog post.Really looking forward to read more. Really Cool.

Wednesday, March 21, 2012 10:18 AM by cheap wii games

# re: MacawSharePointSkinner 1.0.0.1 released

Great article post.Thanks Again. Will read on...

Wednesday, March 21, 2012 10:32 AM by buy google plus

# re: MacawSharePointSkinner 1.0.0.1 released

Im grateful for the article post.Thanks Again. Cool.

Wednesday, March 21, 2012 12:19 PM by pilgrim tours

# re: MacawSharePointSkinner 1.0.0.1 released

I really liked your article. Cool.

Wednesday, March 21, 2012 12:45 PM by Johan Rip&#229;s

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks for sharing, this is a fantastic blog.Much thanks again. Much obliged.

Wednesday, March 21, 2012 1:48 PM by gps lipo

# re: MacawSharePointSkinner 1.0.0.1 released

Awesome blog article.Much thanks again. Much obliged.

Wednesday, March 21, 2012 3:50 PM by scotty cameron select golo putter

# re: MacawSharePointSkinner 1.0.0.1 released

Looking forward to reading more. Great blog.Much thanks again. Great.

Wednesday, March 21, 2012 4:22 PM by anime

# re: MacawSharePointSkinner 1.0.0.1 released

I really enjoy the blog.Really looking forward to read more. Awesome.

Wednesday, March 21, 2012 6:07 PM by cash for cars Dallas

# re: MacawSharePointSkinner 1.0.0.1 released

I truly appreciate this blog article. Cool.

Wednesday, March 21, 2012 7:22 PM by Christian louboutin outlet

# re: MacawSharePointSkinner 1.0.0.1 released

Say, you got a nice post. Fantastic.

Wednesday, March 21, 2012 9:58 PM by learn chinese

# re: MacawSharePointSkinner 1.0.0.1 released

Really enjoyed this article. Cool.

Wednesday, March 21, 2012 11:57 PM by fine art

# re: MacawSharePointSkinner 1.0.0.1 released

Appreciate you sharing, great blog. Want more.

Thursday, March 22, 2012 1:47 AM by cheap nba jerseys

# re: MacawSharePointSkinner 1.0.0.1 released

Really appreciate you sharing this post. Fantastic.

Thursday, March 22, 2012 7:22 AM by how to develop photographic memory

# re: MacawSharePointSkinner 1.0.0.1 released

I am getting married on the 15th of November. Congratulate me! Then will be here rarely!....

Thursday, March 22, 2012 9:09 AM by website traffic

# re: MacawSharePointSkinner 1.0.0.1 released

Author, Shoot yourself a knee..!!

Thursday, March 22, 2012 9:09 AM by apartment rental tel aviv

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks-a-mundo for the blog post.Thanks Again. Much obliged.

Thursday, March 22, 2012 10:58 AM by momschips

# re: MacawSharePointSkinner 1.0.0.1 released

Somewhere in the Internet I have already read almost the same selection of information, but anyway thanks!!....

Friday, March 23, 2012 9:08 AM by joomla extension

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks so much for the post.Really looking forward to read more. Really Cool.

Friday, March 23, 2012 11:03 AM by apartment rental tel aviv

# re: MacawSharePointSkinner 1.0.0.1 released

Great, thanks for sharing this article. Keep writing.

Friday, March 23, 2012 12:58 PM by israel vacation rentals

# re: MacawSharePointSkinner 1.0.0.1 released

Very neat blog. Really Cool.

Wednesday, September 26, 2012 7:34 AM by Boone

# re: MacawSharePointSkinner 1.0.0.1 released

Wow! This blog looks exactly like my old one! It's on a completely different topic but it has pretty much the same page layout and design. Great choice of colors!

Sunday, October 28, 2012 7:10 AM by exqeknkx@gmail.com

# re: MacawSharePointSkinner 1.0.0.1 released

Preceptor‘MT cost your time , effort in a individual/lovely lady,who exactly isn‘MT happy to cost ones own energy giving you.

veste burberry http://www.chile62zalando.com/

Wednesday, November 21, 2012 6:57 AM by Donnell

# re: MacawSharePointSkinner 1.0.0.1 released

Hi there! I could have sworn I've visited this web site before but after browsing through a few of the articles I realized it's

new to me. Nonetheless, I'm definitely delighted I found it and I'll be book-marking it and checking back

regularly!

Thursday, November 29, 2012 9:15 AM by Covey

# re: MacawSharePointSkinner 1.0.0.1 released

It is truly a nice and helpful piece of information. I am glad that you simply shared this

helpful info with us. Please stay us informed like this.

Thanks for sharing.

Friday, December 14, 2012 2:14 PM by Askew

# re: MacawSharePointSkinner 1.0.0.1 released

Hey there! Someone in my Myspace group shared this site

with us so I came to give it a look. I'm definitely enjoying the information. I'm

bookmarking and will be tweeting this to my followers!

Exceptional blog and superb design.

Friday, December 28, 2012 10:24 AM by Thiel

# re: MacawSharePointSkinner 1.0.0.1 released

This paragraph is genuinely a good one it helps new

the web users, who are wishing for blogging.

Sunday, December 30, 2012 4:36 PM by Crawford

# re: MacawSharePointSkinner 1.0.0.1 released

I'm really inspired along with your writing talents and also with the format in your blog. Is that this a paid theme or did you modify it yourself? Either way keep up the nice high quality writing, it is uncommon to peer a nice weblog like this one nowadays..

Sunday, December 30, 2012 5:00 PM by Moeller

# re: MacawSharePointSkinner 1.0.0.1 released

Fastidious response in return of this query with real

arguments and describing the whole thing concerning that.

Saturday, January 05, 2013 6:21 PM by Santos

# re: MacawSharePointSkinner 1.0.0.1 released

I'm really enjoying the theme/design of your website. Do you ever run into any browser compatibility problems? A small number of my blog readers have complained about my website not working correctly in Explorer but looks great in Opera. Do you have any solutions to help fix this problem?

Sunday, January 06, 2013 12:57 AM by Andres

# re: MacawSharePointSkinner 1.0.0.1 released

Hmm it looks like your website ate my first comment (it

was super long) so I guess I'll just sum it up what I wrote and say, I'm thoroughly

enjoying your blog. I as well am an aspiring blog writer but

I'm still new to the whole thing. Do you have any points for newbie blog writers? I'd definitely appreciate it.

Monday, January 07, 2013 6:59 AM by Sipes

# re: MacawSharePointSkinner 1.0.0.1 released

Spot on with this write-up, I honestly believe that this website needs far more attention.

I'll probably be returning to read more, thanks for the advice!

Saturday, January 12, 2013 12:41 PM by Andersen

# re: MacawSharePointSkinner 1.0.0.1 released

Hi, yes this paragraph is truly fastidious and I have learned lot

of things from it about blogging. thanks.

Wednesday, January 16, 2013 5:41 PM by Greenlee

# re: MacawSharePointSkinner 1.0.0.1 released

You have made some good points there. I looked on the

internet for more information about the issue and found most people will go along with your views on this website.

Saturday, January 19, 2013 9:20 AM by Branch

# re: MacawSharePointSkinner 1.0.0.1 released

Fantastic site you have here but I was wondering if you knew of any forums

that cover the same topics discussed here? I'd really like to be a part of community where I can get feed-back from other knowledgeable people that share the same interest. If you have any recommendations, please let me know. Cheers!

Tuesday, January 22, 2013 3:52 AM by Peeler

# re: MacawSharePointSkinner 1.0.0.1 released

Hi there, I found your web site by the use of Google while searching for a comparable matter, your

website came up, it seems to be great. I have bookmarked it in my google bookmarks.

Hi there, just was aware of your weblog thru Google, and found that

it is really informative. I am going to watch out for brussels.

I'll be grateful when you proceed this in future. Lots of other people can be benefited from your writing. Cheers!

Tuesday, January 22, 2013 9:01 AM by Gil

# re: MacawSharePointSkinner 1.0.0.1 released

You really make it appear so easy with your presentation however I in finding

this matter to be actually one thing which I feel I'd by no means understand. It sort of feels too complex and extremely huge for me. I am having a look forward for your next post, I'll attempt to

get the cling of it! buy instagram followers real

Saturday, January 26, 2013 6:01 AM by Whitcomb

# re: MacawSharePointSkinner 1.0.0.1 released

I'm impressed, I must say. Seldom do I come across a blog that's equally educative and

amusing, and let me tell you, you have hit the nail on

the head. The issue is an issue that too few people are speaking intelligently about.

I'm very happy that I found this in my search for something concerning this.

Sunday, January 27, 2013 1:41 PM by Tyree

# re: MacawSharePointSkinner 1.0.0.1 released

It's an awesome article for all the online viewers; they will take advantage from it I am sure.

Monday, January 28, 2013 3:23 PM by Alvarado

# re: MacawSharePointSkinner 1.0.0.1 released

Hi i am kavin, its my first time to commenting anyplace, when i read this paragraph i thought i could also create comment due to this sensible piece of writing.

Monday, January 28, 2013 9:11 PM by Renteria

# re: MacawSharePointSkinner 1.0.0.1 released

You're so cool! I do not believe I've truly read through anything like that before.

So good to find somebody with some genuine thoughts on this subject.

Seriously.. many thanks for starting this up.

This website is something that is required on the internet,

someone with a bit of originality!

Thursday, February 07, 2013 10:29 AM by Knutson

# re: MacawSharePointSkinner 1.0.0.1 released

Thanks for finally talking about >MacawSharePointSkinner 1.

0.0.1 released - Serge van den Oever [Macaw] <Loved it!

Friday, February 08, 2013 5:12 AM by Gough

# re: MacawSharePointSkinner 1.0.0.1 released

Hi there this is somewhat of off topic but I was wondering if blogs

use WYSIWYG editors or if you have to manually code with HTML.

I'm starting a blog soon but have no coding skills so I wanted to get guidance from someone with experience. Any help would be greatly appreciated!

Wednesday, February 13, 2013 2:35 AM by Slaughter

# re: MacawSharePointSkinner 1.0.0.1 released

Wonderful beat ! I wish to apprentice whilst you amend your site, how can

i subscribe for a blog web site? The account helped me a acceptable deal.

I were a little bit familiar of this your broadcast provided bright

transparent concept

Sunday, February 17, 2013 4:31 AM by Armenta

# re: MacawSharePointSkinner 1.0.0.1 released

I'm extremely inspired with your writing skills and also with the structure for your weblog. Is this a paid subject matter or did you modify it yourself? Either way stay up the excellent quality writing, it is rare to see a nice weblog like this one these days..

Saturday, May 18, 2013 2:11 AM by Cheng

# re: MacawSharePointSkinner 1.0.0.1 released

Do you have a spam issue on this site; I also am a blogger, and I was wanting to know your situation;

many of us have developed some nice practices and we are looking to swap solutions with others, please

shoot me an email if interested.

Leave a Comment

(required) 
(required) 
(optional)
(required)