You are here: Home

Learn to talk to your CFO in their language – SharePoint 2007 Project Costing, Feasability, Planning and Governance

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/learn-to-talk-to-your-cfo-in-their.html

 

 

 

My good friend "Mr Cleverworkarounds" (I call him that because of his awesome blog – http://www.cleverworkarounds.com) has completed a series of articles where he transforms analysis of technical considerations into a costing model that will make sense to a CFO (Chief Financial Officer).

What am I talking about?

  • How much will this SharePoint 2007 project cost?
  • How much will this SharePoint 2007 project make/save me in the future?

When implementing massive SharePoint 2007 Projects there is a great deal of risk involved. SharePoint is great software, but at the end of the day its all about money, what is more important is how much will it cost? and how much will it make/save me in the future, you may not care about this if you are a technical person, but I bet management and the people paying you to work with SharePoint do!

 

Here's a rundown and the links, keep an eye out for my name in the WCM Scenario :)  

http://www.cleverworkarounds.com/2007/11/17/learn-to-talk-to-your-cfo-in-their-language-part-1/

Assessing the value of an investment, the time effect on money, the concept discount cash-flow and some of the related calculations like Net Present Value (NPV) and Internal Rate of Return (IRR)

 

http://www.cleverworkarounds.com/2007/11/25/learn-to-talk-to-your-cfo-in-their-language-part-2/

Introduction to the various scenarios over this series Collaboration, WCM and Web Application. Explanation of methodology used, and assumptions made

 

http://www.cleverworkarounds.com/2007/11/28/learn-to-talk-to-your-cfo-collaboration-scenario-part-3/

The Collaboration Scenario

 

http://www.cleverworkarounds.com/2007/12/08/learn-to-talk-to-your-cfo-wcm-scenario-part-4/

The Web Content Management Scenario

 

http://www.cleverworkarounds.com/2007/12/09/learn-to-talk-to-your-cfo-web-application-scenario-part-5/

The Custom Web Application Scenario

 

 

 

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/learn-to-talk-to-your-cfo-in-their.html

Small Font Size in SharePoint Discussion Board

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/small-font-size-in-sharepoint.html

 

 

 

This has come up in a few SharePoint sites I have worked on, and I am not the only one experiencing this issue. This is a common issue which sometimes occurs when using a custom Master Page and custom Style Sheet in a site. I've seen this occur on at least 2 or 3 separate sites using non-default master pages and page layouts. The font size displays with 0.7em, you need to override it so its at least 1.0em

   

To fix this you need to identify the SharePoint CSS classes which are setting the Font size, I like to use the FireBug plug-in with Firefox (right-click and Inspect Element)  to identify the overrides required then implement the CSS overrides in your custom Style Sheet to increase the font-size.

 

 

 

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/small-font-size-in-sharepoint.html

 

Comprehensive list of WSS 3.0 and MOSS 2007 Resources

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!

http://sharepoint-sezai-moss-2007.blogspot.com/

 

 

Vivid Group Launches Another MOSS 2007 WCM Public Internet Website – http://www.amanaliving.com.au

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/vivid-group-launches-another-moss-2007.html 

 

http://www.amanaliving.com.au

 

Features :

Low page weight, no core.js – This makes the site faster than most MOSS 2007 WCM websites

Completely custom Master Pages and Page Layouts primarily comprising custom server controls (including custom navigation controls) and SharePoint web controls

Font size switching, page print mode

Custom Search Center, Site map page

Random "Our People" (staff profiles with images) featured on home page, randomly loaded from a site list

Latest News and Upcoming Events on home page automatically rolled up from most recent dated pages in news and events subsites respectively.

Most of the website is configurable via use of site lists, including header and footer links, home page service profiles and facility features

Service Profile Pages (http://www.amanaliving.com.au/Information_and_Service_Centre/highcare/Pages/St_Georges_Home.aspx) hooked into Facility Features site lists with the use of Lookup Fields, to make editing content easier.

Developed in record time =oP  with the use of a custom site definition ( well 2 custom site defs if you count the custom search center custom site definition ), custom list features, content type binding features, List Lookup Field re-creation, fields and content type features, master page and page layout features, custom site provisioning of sites and pages from an XML file etc. etc.

The best part of it is, it's all in source control, which helps provide greater re-use of code in future projects.

 

A nice easy MOSS 2007 WCM Project, a simple site without too many content types, or too many page layouts. Still, the site shows off what MOSS 2007 WCM can do, the site architecture is primarily built on custom site lists, and page layout content types and it makes use of Search.

 

Special Thanks to the great team at Vivid Group, especially -

Leah Dent (Project Manager, Ring Master, Trainer)

Matt Cahill (System Planning and MOSS Farm Hosting Environment Infrastructure Setup)

Brad Carpenter (Designer)

Simon Mateljan (Designer)

Jonathon 'Jono' King (Designer + Content Monkey Editor)

 

 

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/vivid-group-launches-another-moss-2007.html 

Locking Down Styles in the MOSS Publishing HTML Field Control

Posted by sezai
No Comments »

 

 

THIS BLOG HAS MOVED !!!

 

THE UPDATED POST CAN BE FOUND HERE –  http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/locking-down-styles-in-moss-publishing.html

 

 

 

 

 

In SharePoint Designer, open a page layout and select a HTML field control

You should then be presented with a series of properties in the Tag window.

There are a series of AllowBlahBlah properties which you simply set to false if you want that specific validation enabled on the field control.

You can also set these properties in code view on the page layout

   

Descriptions of these field control properties from the MOSS SDKhttp://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.richhtmlfield_members.aspx

 

Name Description
AllowExternalUrls Gets or sets the constraint that allows external URLs in the HTML when validating the value in this RichHtmlField object.
AllowFonts Gets or sets the constraint that allows font element tags to be added to the HTML.
AllowHeadings Gets or sets the constraint that allows heading tags to be added to the HTML.
AllowHtmlSourceEditing Determines whether you can switch the HtmlEditor object into a mode where the HTML can be edited directly.
AllowHyperlinks Gets or sets the constraint that allows hyperlinks to be added to the HTML.
AllowImages Gets or sets the constraint that allows image tags to be added to the HTML.
AllowLists Gets or sets the constraint that allows list tags to be added to the HTML.
AllowReusableContent Gets or sets the flag that enables the reusable content picker button when editing this field.
AllowTables Gets or sets the constraint that allows table handling tags to be added to the HTML.
AllowTextMarkup Gets or sets the constraint that allows explicit text markup tags, such as bold and italic, to be added to the HTML.

What happens when they are set to FALSE?

Eg. If I set  AllowFonts="False" and AllowTextMarkup="False"

It disables the font and text colour buttons on the HTML Editor.

If a content author pastes in HTML with Font tags or text mark-up in the field control and now attempts to save or check in the page :

You get this on the Page Editing Toolbar –  

And the HTML Field Control now contains an Auto Correct button and a message related to `unsupported formatting'

Now simply click the Auto Correct button, and the content is cleaned up client side with javascript, nice
 

What happens to the HTML?

BEFORE
FONT color=#ff8000 size=5>WesTrac </FONT></STRONG>has a huge range of <FONT color=#ff0000>reliable low hour </FONT>used equipment, all meticulously prepared for resale. <SPAN>&nbsp;</SPAN>If you <FONT size=4>can't find exactly </FONT>what.

AFTER
WesTrac has a huge range of reliable low hour used equipment, all meticulously prepared for resale. <SPAN>&nbsp;</SPAN>If you can't find exactly what

One more thing.

If you set any of these properties to false it won't automatically go through and clean-up the content in your site, but if a page contains content with these tags, the next time a content author edits the page and tries to save or check-in this validation will kick-in and it won't let the user save the page unless they click the button to clean up the HTML.

Copy and Pasting Content from Word Documents

You can still paste in content from Word Documents, and this won't automatically clean-up that HTML, these settings only seem to affect explicit font tags or other text markup, not in-line styles.

You get the following icon showing up in the field control

 

You can also access remove inline styles from the floating tool-bar

      

BEFORE
<P class=MsoNormal>Sezai's <SPAN style="COLOR: red">pasting</SPAN> this <SPAN class=Heading2Char><SPAN style="FONT-SIZE: 13pt; LINE-HEIGHT: 115%">content</SPAN></SPAN> in from word!</P>

AFTER
<P>Sezai's <SPAN>pasting</SPAN> this <SPAN><SPAN>content</SPAN></SPAN> in from word!</P>

Conclusion

There is no AllowStyles or AllowInlineStyles property! That's dumb because I can paste in content from word that is setting Font and Font Colour with inline styles !
That means even though I have set the following properties to false AllowFonts="False" and AllowTextMarkup="False" I can still set different fonts and font colours in Word, then paste it into a page, and save and check-in the page !!! and MOSS will let me.  you need to remember to always click the Remove Inline Styles explicitly.

   
Would be great if remove inline styles got rid of those un-needed SPAN tags ! If a SPAN is in the HTML such as <SPAN style="COLOR: red"> then it won't remove the tag, it will simply strip out the style="COLOR: red" leaving <SPAN>blah</SPAN> throughout the HTML content. Although I guess this is what is preffered if you are using specific HTML elements like DIVs with specific IDs to control style, in that case you would still want the HTML Element in place, and the ID preserved, just the style tag removed.

Nice features, but they don't go all the way, in conclusion, you can't really lock-down styles 100% in MOSS publishing sites. it isn't idiot proof you still need to explain this all to content authors and make them mindful that they need to remember to remove in-line styles from content pasted in from word.

 

 

THIS BLOG HAS MOVED !!!

 

THE UPDATED POST CAN BE FOUND HERE –  http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/locking-down-styles-in-moss-publishing.html

 

 

Creating a Standards Compliant MOSS 2007 WCM Public Internet Website With Low Page Weight

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!

 

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/creating-standards-compliant-moss-2007.html

 

The standards compliant and small page size MOSS 2007 websites keep rolling out – http://www.equalityhumanrights.com/en/Pages/default.aspx

Some of you may wonder how in heck are people making MOSS 2007 render these sites with such small page weight, that are compliant?

We're currently developing a Federal Government website that is required to be XHTML Compliant and we (/tommysegoro) have spent heaps of time investigating various ways to reduce page size and unnessesary rendering.

A public WCM website rarely needs to make use of web parts so you don't need most of what is in the HTML of a standard MOSS master page such as that 200kb+ Core.JS! Why make everyone who browses to a site download 200kb .JS file that they don't need or use! That's just dumb.

You can simply wrap and hide most MOSS CSS and JS references using a custom panel control so they don't render when the user is anonymous, a SPSecurityTrimmedControl can also be used for this purpose. You still need all of that SharePoint JS and CSS if the user is authenticated and authoring, so the Site Actions, PET and Field Controls render and function correctly, but all that heavy JS and CSS is not required for the anonymous user.

The Master Page and Page Layouts are developed from a minimal.master (that has been further minimalised) and starts off completely empty and FULLY compliant, then start adding field controls and custom controls. All controls make use of the MOSS object model to get data from Page Fields for content specific to the page and Site Lists which provide an easy way for content authors to configure common elements across all pages in the site, like header and footer links. Ensure each custom control added renders its html nicely and doesn't break compliance in the page! You can also do some funky .NET code in Master Pages and Page Layouts to further strip out HTML on rendering to have extra control to ensure compliance for the anonymous user.

Think about page 'Modes' to help make it easy when developing, the anonymous user just needs a simple html page, where as someone running the site and authoring content needs all the SharePoint stuff to work. You can check the page mode programatically and also make use of Edit Mode Panels to control rendering in edit mode and display mode.

 

PAGE AND AUTHENTICATION MODES

 1. Edit Mode and Authenticated

 In Edit mode authors need to be able to interact with field controls on the page to change content on the page. You also need the Site Actions menu, PET, and the SharePoint JS and CSS to be in the page for the author to do their job. You can forrget now about making Edit Mode XHTML compliant, but that's okay because the public won't ever see edit mode, only the web authors will, and this page doesn't need to be compliant, it needs to primarily be functional to facilitate entering content and configuring the page, so feel free to use whatever html you want to. Page size will also be massive with core.js but that's okay

 2. Display Mode and Authenticated
 
 When the author checks-in the page after editing or they browse through the site authenticated they aren't presented with field controls, but with a page that looks fairly similar to what the anonymous users will see, with important exceptions, the Welcome Sign-In, Site Actions menu, PET and the SharePoint JS and CSS must be in the page for the author to do their job. Depending on security, this mode will see present the current edited page that is pending approval, so authors can trigger page workflows by clicking the PET buttons to approve pages.

 3. Display Mode and Anonymous

 Must be compliant, with nice html and small page size. You don't need any of that SharePoint JS or CSS, and the anonymous user defanetly aint gonna be clicking the site actions menu, PET or entering content because they won't be there! This should render as close to the HTML/CSS Design provided by the Designer (which should probably be compliant!) If you are still having problems with compliance, you can also kick in some further in-line custom .NET code in the Master Page to further manipulate the HTML rendered  by overriding the Page.Render method.

 

So you basically need to build three seperate and independant web interfaces, by developing with page modes in mind it frees you to do what is required for that specific page mode, I have previously been frustrated with MOSS WCM Development and trying to produce clean html while still, at the same time make all the SharePoint controls function correctly, by thinking about page mode you can free yourself of the dirty rendering that OOTB SharePoint web controls when in anonymous mode and get rid of dependencies on MASSIVE un-needed JS and CSS that fatten the page size. If you are building a public internet web site, then page size should be small with simple html, css and js so that its FAST, because no one likes a SLOW website!

A problem with this approach outlined is it involves extensive development work on custom .NET controls, you need to build a lot more yourself, because guess what! The OOTB search center needs that SharePoint JS for buttons and stuff to work :( and all the Search controls are Web Parts, So you need to build a Custom Search Center site yourself that uses custom page layouts with no web parts.

I'm a big fan of going fully custom, because in the real world requirements for a standards compliant public Internet website aren't met by MSFTs cookie-cutter approach to MOSS web controls, and page rendering, you can save time when developing with custom controls because trying to configure and mess with sharepoint web controls and web parts will waste a lot more time than coding simple controls that use the object model to get Page Field data and Site List data, and then render what you want them to (for me anyways) BE CAREFUL!!! custom code means you can potentially code something nasty that will hammer sql or the cpu, be sure to dispose of objects properly. If you write custom controls you need to take responsibility for their efficiency and what they do to server resources. Also remember to enabled BLOB cache to further improve performance and try and investigate application caching when custom controls take long to do their work to get the data they need to render.

Lists can help improve productivity compared to classic ASP.NET development against a database data layer, I love lists because of all the cool free stuff that comes with them, but that development time saved is quickly eaten up by a lot of the other time wasting aspects of MOSS 2007 development such as deployment. Win Some Lose Some.

 

Some Code

How do you tell if you are in edit or display mode?

Get SPContext.Current.FormContext.FormMode and check this against the Microsoft.SharePoint.WebControls.SPControlMode enumeration.
/sezai/archive/2007/08/29/spcontext-current-formcontext.aspx

How do you tell if the user is authenticated?

HttpContext.Current.Request.IsAuthenticated

For an example see the RegisterCoreWhenAuthenticatedControl here http://blogs.msdn.com/ecm/archive/2007/02/21/building-a-new-page-layout-which-does-not-reference-core-js-but-downloads-it-while-the-page-is-being-viewed-thereby-optimizing-response-time.aspx

 

More Linkage

Excellent and Inspirational Blog Posts on MOSS 2007 Compliant websites, with heaps of steps I followed!
http://zac.provoke.co.nz/archive/2007/04/19/guide-to-making-sharepoint-xhtml-compliant.aspx
http://blog.thekid.me.uk/archive/2007/05/01/another-day-another-accessible-moss-website.aspx
http://blog.thekid.me.uk/archive/2007/05/08/getting-sharepoint-to-produce-the-html-you-want.aspx

Blog Post on using custom HTTP-Filter to clean HTML output to reduce page size and possibly enforce compliance  http://www.ie-soft.de/blog/CommentView,guid,968b0588-f306-467b-be51-54f7a8f2079d.aspx

see sections  
Get the Space Out – Reducing Page Size Over the Internet Pipe
JavaScript Weight Reduction – The Client Browser 
http://blogs.msdn.com/sharepoint/archive/2007/07/19/moss-has-got-game-glu-mobile-s-website-www-glu-com-how-we-did-it-part-3-of-3.aspx

How to Optimize a SharePoint Server 2007 Web Content Management Site for Performance
http://msdn2.microsoft.com/en-us/library/bb727371.aspx

Definetly something to look out for AKS Accessibility Kit for SharePoint – http://blogs.msdn.com/sharepoint/archive/2007/09/05/pre-announcing-the-accessibility-kit-for-sharepoint-aks.aspx

 

THIS BLOG HAS MOVED !!!

 

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/creating-standards-compliant-moss-2007.html

Going Down The Rabbit Hole – The MOSS 2007 Publishing Site Definition

Posted by sezai
No Comments »

THIS BLOG HAS MOVED!!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/going-down-rabbit-hole-moss-2007.html

 

It has been well over a year since I started developing on MOSS 2007, I started development with just using SharePoint Designer, and manually deploying assemblies and artifacts without features and solutions.

Soon after I realised the trouble and pain you could get yourself into if you don't use the feature and solution framework. In the aim to work 'fast' and finish your development tasks quickly, you can fall into a massive trap and realise that although it takes plenty of effort to develop Features, in the long term you are better off because of RE-USE of features and ease of DEPLOYMENT.   All developers love reusing their work, it saves time in the long run, and you don't have to constantly re-do the same thing like a robot. When you deploy you customisations to a production system, you don't always have SharePoint Designer available to hookup to the site, and you don't want to have to remember a dozen manual steps to repeat, more robot action, it also leaves room for human error, and the Network/Systems Admin guys won't be happy with you, they want an atomic deployment process. 

You can go one step further, develop your own Custom Site Definition, so you can allow users to create *custom* sites pre-populated with your Lists and other files, and the sites can have YOUR features enabled AUTOMATICALLY, sounds nice hey?

In the last few months I have been doing just that, so I thought I would document the following to help myself (and now YOU) understand what happens when sites are created in SharePoint and how the Features are enabled.

 

So what actually happens when you create a new Publishing Site ?

Whenever you create any site in SharePoint, XML files in the 12 Hive are used in the process to create the site, the various XML files contain information and settings needed to provision sites as well as references to dependent Features that are also activated on Site Collection creation or Web Creation. The Folder   '12-hive'TEMPLATE1033XML  Contains the file webtempsps.xmlThe file contains some of the following related to Publishing Sites, the BLANKINTERNETCONTAINER template is used to create a new Publishing Site Collection

<Template Name="BLANKINTERNET" ID="53">    <Configuration ID="0" Title="Publishing Site" Hidden="TRUE" ImageUrl="/_layouts/1033/images/IPPT.gif" Description="This template creates a site for publishing Web pages on a schedule, with workflow features enabled.  By default, only Publishing subsites can be created under this site. A Document and Picture Library are included for storing Web publishing assets." SubWebOnly="TRUE" DisplayCategory="Publishing">     </Configuration>     <Configuration ID="1" Title="Press Releases Site" Hidden="TRUE" ImageUrl="/_layouts/1033/images/IPPT.gif" Description="This template creates the Press Releases subsite for an Internet-facing corporate presence website." SubWebOnly="TRUE" DisplayCategory="Publishing"                   VisibilityFeatureDependency="F6924D36-2FA8-4f0b-B16D-06B7250180FA">     </Configuration>     <Configuration ID="2" Title="Publishing Site with Workflow" Hidden="FALSE" ImageUrl="/_layouts/1033/images/PublishingSite.gif" Description="A site for publishing Web pages on a schedule by using approval workflows. It includes document and image libraries for storing Web publishing assets. By default, only sites with this template can be created under this site." FilterCategories="PublishingSiteTemplate" SubWebOnly="TRUE" DisplayCategory="Publishing"                   VisibilityFeatureDependency="F6924D36-2FA8-4f0b-B16D-06B7250180FA">     </Configuration> </Template><Template Name="BLANKINTERNETCONTAINER" ID="52">    <Configuration ID="0" Title="Publishing Portal" Hidden="FALSE" ImageUrl="/_layouts/1033/images/IPPT.gif" Description="A starter site hierarchy for an Internet-facing site or a large intranet portal. This site can be customized easily with distinctive branding. It includes a home page, a sample press releases subsite, a Search Center, and a login page. Typically, this site has many more readers than contributors, and it is used to publish Web pages with approval workflows."        ProvisionAssembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"        ProvisionClass="Microsoft.SharePoint.Publishing.PortalProvisioningProvider"        ProvisionData="xml\InternetBlank.xml"            RootWebOnly="TRUE" DisplayCategory="Publishing" VisibilityFeatureDependency="97A2485F-EF4B-401f-9167-FA4FE177C6F6">     </Configuration> </Template>

What is VisibilityFeatureDependency ?

There are Feature IDs referenced in the VisibilityFeatureDependency attribute

The F6924D36-2FA8-4f0b-B16D-06B7250180FA  Feature ID refers  to the PublishingSite feature and Feature ID  97A2485F-EF4B-401f-9167-FA4FE177C6F6 refers  to the BaseSiteStapling feature.

 F6924D36-2FA8-4f0b-B16D-06B7250180FA – PublishingSite

This is the PublishingSite feature. This feature does nothing more than Activate four other features, it has the following ActivationDependencies

    <ActivationDependencies>        <ActivationDependency FeatureId="A392DA98-270B-4e85-9769-04C0FDE267AA" />        <ActivationDependency FeatureId="AEBC918D-B20F-4a11-A1DB-9ED84D79C87E" />        <ActivationDependency FeatureId="89E0306D-453B-4ec5-8D68-42067CDBF98E" />        <ActivationDependency FeatureId="D3F51BE2-38A8-4e44-BA84-940D35BE1566" />    </ActivationDependencies>

More feature IDs to lookup !

A392DA98-270B-4e85-9769-04C0FDE267AA – PublishingPrerequisites

This is the PublishingPrerequisites feature which hooks up a Feature Event receiver.

 AEBC918D-B20F-4a11-A1DB-9ED84D79C87E – PublishingResources

This is the PublishingResources feature which provisions Site Columns, Content Types, Files and Resource settings

<ElementManifests>        <ElementManifest Location="PublishingColumns.xml"/>        <ElementManifest Location="PublishingContentTypes.xml"/>        <ElementManifest Location="ProvisionedFiles.xml"/>        <ElementManifest Location="PublishingResourcesSiteSettings.xml"/>

    </ElementManifests>

  89E0306D-453B-4ec5-8D68-42067CDBF98E – Navigation

This is the Navigation feature which provisions custom actions and controls for Navigation

 D3F51BE2-38A8-4e44-BA84-940D35BE1566 – PublishingLayouts
This is the PublishingLayouts feature which provisions files into the site. It provisions all Publishing Page Layouts, Master Pages, Page Layout Preview Images, Style library Images and Style Library CSS

 97A2485F-EF4B-401f-9167-FA4FE177C6F6 – BaseSiteStapling

This is the BaseSiteStapling feature, it will staple several features to site definitions listed in the feature, it contains dozens of FeatureSiteTemplateAssociation nodes, it is interesting to note that :

Feature B21B090C-C796-4b0f-AC0F-7EF1659C20AE (BaseSite) is  stapled  to the following site templates :

STS#0 , STS#2 , MPS#0 , MPS#1 , MPS#2 , MPS#3 , MPS#4 , WIKI#0 , BLOG#0 , BDR#0 , EAWF#0 , OFFILE#0 , OFFILE#1 , PWA#0 , PWS#0 , SPS#0 , SPSMSITE#0 , SPSTOC#0 , SPSTOPIC#0 , SPSNEWS#0 , SPSNHOME#0 , SPSSITES#0 , SPSBWEB#0 , SPSCOMMU#0 , SPSREPORTCENTER#0 , SPSPORTAL#0 , SRCHCEN#0 , PROFILES#0 , CMSPUBLISHING#0

The BaseSite Feature is an ActivationDependency feature and activates the following Features

<ActivationDependency FeatureId="E978B1A6-8DE7-49d0-8600-09A250354E14" /> LocalSiteDirectorySettingsLink Feature  <ActivationDependency FeatureId="14AAFD3A-FCB9-4bb7-9AD7-D8E36B663BBD" /> LocalSiteDirectoryControl Feature  <ActivationDependency FeatureId="5F3B0127-2F1D-4cfd-8DD2-85AD1FB00BFC" /> PortalLayouts Feature  <ActivationDependency FeatureId="2ED1C45E-A73B-4779-AE81-1524E4DE467A" /> WebPartAdderGroups Feature 

Feature 99FE402E-89A0-45aa-9163-85342E865DC8 (BaseWeb) is stapled to the following site templates :

STS#0 , STS#2 , MPS#0 , MPS#1 , MPS#2 , MPS#3 , MPS#4 , WIKI#0 , BLOG#0 , BDR#0 , EAWF#0 , OFFILE#0 , OFFILE#1 , PWA#0 , PWS#0 , SPS#0 , SPSMSITE#0 , SPSTOC#0 , SPSTOPIC#0 , SPSNEWS#0 , SPSNHOME#0 , SPSSITES#0 , SPSBWEB#0 , SPSCOMMU#0 , SPSREPORTCENTER#0" , SPSPORTAL#0 , SRCHCEN#0 , PROFILES#0 , CMSPUBLISHING#0

The BaseWeb Feature is also an ActivationDependency feature and activates the following Features

 <ActivationDependency FeatureId="E8734BB6-BE8E-48A1-B036-5A40FF0B8A81" /> RelatedLinksScopeSettingsLink Feature         <ActivationDependency FeatureId="56DD7FE7-A155-4283-B5E6-6147560601EE" /> AnalyticsLinks Feature

 <ActivationDependency FeatureId="0BE49FE9-9BC9-409d-ABF9-702753BD878D" /> FeatureStapling Feature 

 

Feature 541F5F57-C847-4e16-B59A-B31E90E6F9EA (NavigationProperties) is stapled to the SRCHCENTERLITE#1 site template with the following properties within the FeatureSiteTemplateAssociation

<Property Key="IncludeInGlobalNavigation" Value="false" />

                <Property Key="IncludeInCurrentNavigation" Value="false" />

                <Property Key="InheritCurrentNavigation" Value="true" />

                <Property Key="IncludePages" Value="false" />

Which explains why the Search Centre Lite Navigation is different to navigation in all other site templates!

 

We have now traced through the VisibilityFeatureDendencies in webtempsps.xml, let us now get back to this file and continue this journey down the rabbit hole by exploring the SiteTemplates referenced.

            <Template Name="BLANKINTERNETCONTAINER" ID="52">             <Configuration ID="0" Title="Publishing Portal" /> </Template>                 <Template Name="BLANKINTERNET" ID="53">                                <Configuration ID="0" Title="Publishing Site" /><Configuration ID="1" Title="Press Releases Site" /><Configuration ID="2" Title="Publishing Site with Workflow" />

</Template>

 

The Folder  '12-hive'TEMPLATESiteTemplates Contains a folder for each Site Template in the site. One such folder is BLANKINTERNET which contains an XML folder that contains a ONET.xml file.

This file contains the following configuration nodes, which contain Feature ids, so even more features can be activate on site creation, there are Site Features activated on Site Collection Creation and Web Features activated on Web (sub-site) Creation.

<Configurations>      <Configuration ID="-1" Name="NewWeb"/>       <Configuration ID="1" Name="BLANKINTERNET"> NOTE : THIS SPECIFIC CONFIGURATION HAS SITE FEATURES AND WEB FEATURES<SiteFeatures>                <!– Workflow Features –>                 <!– Workflow Expiration –>                <Feature ID="C85E5759-F323-4EFB-B548-443D2216EFB5" />                 <!– Workflow Review –>                <Feature ID="02464C6A-9D07-4F30-BA04-E9035CF54392" />                 <!– Workflow Signature –>                <Feature ID="6C09612B-46AF-4B2F-8DFC-59185C962A29" />                 <!– Workflow Translation –>                <Feature ID="C6561405-EA03-40A9-A57F-F25472942A22" />                 <Feature ID="A392DA98-270B-4e85-9769-04C0FDE267AA">                      <!– PublishingPrerequisites –>                </Feature>                <Feature ID="7C637B23-06C4-472d-9A9A-7C175762C5C4">                      <!– ViewFormPagesLockDown –>                </Feature>                <Feature ID="AEBC918D-B20F-4a11-A1DB-9ED84D79C87E">                    <!– PublishingResources –>                    <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                        <Property Key="AllowRss" Value="false"/>                        <Property Key="SimplePublishing" Value="false" />                    </Properties>                </Feature>                <Feature ID="F6924D36-2FA8-4f0b-B16D-06B7250180FA">                    <!– Office SharePoint Server Publishing –>                </Feature>                   <!– SearchCenter Url feature –>                <Feature ID="7AC8CC56-D28E-41f5-AD04-D95109EB987A" >                    <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                        <Property Key="SearchCenterUrl" Value="~SiteCollection/Search/" />                    </Properties>                </Feature>             </SiteFeatures><WebFeatures>                <!– Include the common WSSListTemplateFeatures used by CMS –>                     <Feature ID="00BFEA71-DE22-43B2-A848-C05709900100" > </Feature> <Feature ID="00BFEA71-E717-4E80-AA17-D0C71B360101" > </Feature> <Feature ID="00BFEA71-52D4-45B3-B544-B1C71B620109" > </Feature> <Feature ID="00BFEA71-A83E-497E-9BA0-7A5C597D0107" > </Feature> <Feature ID="00BFEA71-4EA5-48D4-A4AD-305CF7030140" > </Feature>                <Feature ID="22A9EF51-737B-4ff2-9346-694633FE4416">                    <!– Publishing –>                    <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                        <Property Key="ChromeMasterUrl" Value="~SiteCollection/_catalogs/masterpage/BlueBand.master"/>                        <Property Key="WelcomePageUrl" Value="$Resources:cmscore,List_Pages_UrlName;/default.aspx"/>                        <Property Key="PagesListUrl" Value=""/>                        <Property Key="AvailableWebTemplates" Value="*-BLANKINTERNET#2"/>                        <Property Key="AvailablePageLayouts" Value=""/>                        <Property Key="AlternateCssUrl" Value="" />                        <Property Key="SimplePublishing" Value="false" />                    </Properties>                </Feature>                <Feature ID="541F5F57-C847-4e16-B59A-B31E90E6F9EA">                    <!– Per-Web Portal Navigation Properties–>                    <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                        <Property Key="InheritGlobalNavigation" Value="true"/>                        <Property Key="IncludeSubSites" Value="true"/>                    </Properties>                </Feature>                <Feature ID="94C94CA6-B32F-4da9-A9E3-1F3D343D7ECB">                    <!– Office SharePoint Server Publishing –>                </Feature>            </WebFeatures></Configuration><Configuration ID="0" Name="BLANKINTERNET"><WebFeatures>                <!– Include the common WSSListTemplateFeatures used by CMS –>                     <Feature ID="00BFEA71-DE22-43B2-A848-C05709900100" > </Feature> <Feature ID="00BFEA71-E717-4E80-AA17-D0C71B360101" > </Feature> <Feature ID="00BFEA71-52D4-45B3-B544-B1C71B620109" > </Feature> <Feature ID="00BFEA71-A83E-497E-9BA0-7A5C597D0107" > </Feature> <Feature ID="00BFEA71-4EA5-48D4-A4AD-305CF7030140" > </Feature>                <Feature ID="22A9EF51-737B-4ff2-9346-694633FE4416">                    <!– Publishing –>                    <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                        <Property Key="ChromeMasterUrl" Value=""/>                        <Property Key="WelcomePageUrl" Value="$Resources:cmscore,List_Pages_UrlName;/default.aspx"/>                        <Property Key="PagesListUrl" Value=""/>                        <Property Key="AvailableWebTemplates" Value=""/>                        <Property Key="AvailablePageLayouts" Value=""/>                        <Property Key="AlternateCssUrl" Value="" />                        <Property Key="SimplePublishing" Value="false" />                    </Properties>                </Feature>                <Feature ID="541F5F57-C847-4e16-B59A-B31E90E6F9EA">                    <!– Per-Web Portal Navigation Properties–>                            <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                                <Property Key="InheritGlobalNavigation" Value="true"/>                              <Property Key="ShowSiblings" Value="true"/>                              <Property Key="IncludeSubSites" Value="true"/>                    </Properties>                </Feature>                <Feature ID="94C94CA6-B32F-4da9-A9E3-1F3D343D7ECB">                    <!– Office SharePoint Server Publishing –>                </Feature>            </WebFeatures></Configuration><Configuration ID="2" Name="BLANKINTERNET"><WebFeatures>                <!– Include the common WSSListTemplateFeatures used by CMS –>                     <Feature ID="00BFEA71-DE22-43B2-A848-C05709900100" > </Feature> <Feature ID="00BFEA71-E717-4E80-AA17-D0C71B360101" > </Feature> <Feature ID="00BFEA71-52D4-45B3-B544-B1C71B620109" > </Feature> <Feature ID="00BFEA71-A83E-497E-9BA0-7A5C597D0107" > </Feature> <Feature ID="00BFEA71-4EA5-48D4-A4AD-305CF7030140" > </Feature>                <Feature ID="22A9EF51-737B-4ff2-9346-694633FE4416">                    <!– Publishing –>                    <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                        <Property Key="ChromeMasterUrl" Value=""/>                        <Property Key="WelcomePageUrl" Value="$Resources:cmscore,List_Pages_UrlName;/default.aspx"/>                        <Property Key="PagesListUrl" Value=""/>                        <Property Key="AvailableWebTemplates" Value=""/>                        <Property Key="AvailablePageLayouts" Value=""/>                        <Property Key="AlternateCssUrl" Value="" />                        <Property Key="SimplePublishing" Value="false" />                    </Properties>                </Feature>                <Feature ID="541F5F57-C847-4e16-B59A-B31E90E6F9EA">                    <!– Per-Web Portal Navigation Properties–>                            <Properties xmlns="http://schemas.microsoft.com/sharepoint/">                                <Property Key="InheritGlobalNavigation" Value="true"/>                              <Property Key="ShowSiblings" Value="true"/>                              <Property Key="IncludeSubSites" Value="true"/>                    </Properties>                </Feature>                <Feature ID="94C94CA6-B32F-4da9-A9E3-1F3D343D7ECB">                    <!– Office SharePoint Server Publishing –>                </Feature>        </WebFeatures></Configuration></Configurations> 

Publishing Site Features

The following are site features activated on Site Collection creation

C85E5759-F323-4EFB-B548-443D2216EFB5 ExpirationWorkflow Feature

02464C6A-9D07-4F30-BA04-E9035CF54392 ReviewWorkflows Feature

6C09612B-46AF-4B2F-8DFC-59185C962A29 SignaturesWorkflow Feature
C6561405-EA03-40A9-A57F-F25472942A22 TranslationWorkflow Feature
A392DA98-270B-4e85-9769-04C0FDE267AA PublishingPrerequisites Feature
7C637B23-06C4-472d-9A9A-7C175762C5C4 ViewFormPagesLockDown Feature
AEBC918D-B20F-4a11-A1DB-9ED84D79C87E PublishingResources Feature
F6924D36-2FA8-4f0b-B16D-06B7250180FA PublishingSite Feature
7AC8CC56-D28E-41f5-AD04-D95109EB987A OSSSearchCenterUrlSiteFeature Feature
 

Publishing Web Features

The following is a list of all Web Features in the onet.xml file

00BFEA71-DE22-43B2-A848-C05709900100 CustomList Feature
00BFEA71-E717-4E80-AA17-D0C71B360101 DocumentLibrary Feature
00BFEA71-52D4-45B3-B544-B1C71B620109 PictureLibrary Feature
00BFEA71-A83E-497E-9BA0-7A5C597D0107 TasksList Feature
00BFEA71-4EA5-48D4-A4AD-305CF7030140 WorkflowHistoryList Feature
22A9EF51-737B-4ff2-9346-694633FE4416 Publishing Feature
541F5F57-C847-4e16-B59A-B31E90E6F9EA NavigationProperties Feature
94C94CA6-B32F-4da9-A9E3-1F3D343D7ECB PublishingWeb Feature    

 

Summary

 

This investigation demonstrates what actually happens when you create a publishing site in MOSS 2007.  In summary, a series of features are enabled on the site collection, in a specific order. Features are also enabled when creating subsites.

Why do we need this information ?

 

To create YOUR OWN Custom Publishing Site Definitions, so you have full control over what features are activated in your site, you can get into trouble if you do not activate features in the correct order, such as activating a feature that contains Page Layouts referencing a Content Type, if the Page Layout feature is enabled before the Content Type feature then the pages created will not be created correctly because of the dependency issue.

 

THIS BLOG HAS MOVED!!!

THE UPDATED POST CAN BE FOUND HERE – http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/going-down-rabbit-hole-moss-2007.html

Extend The PublishingLayoutPage Class – Create Your Own to Run Code in the 'Page'

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE –  http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/extend-publishinglayoutpage-class.html

 

 

 

 

 

This is powerful stuff, and thanks to this I can do a lot more powerful MOSS WCM custom development.

This will let you run your own custom code in the context of a page.

Do you miss putting code in the Page? I do!

This will kinda give you back some of that 'lost power'.

http://blogs.msdn.com/jannemattila/archive/2007/04/14/adding-functionalities-to-pages-by-inheriting-publishingpagelayout.aspx (awesome post that started me on this!)

microsoft.sharepoint.publishing.publishinglayoutpagehttp://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.publishing.publishinglayoutpage_members.aspx

 

You may notice that all MOSS WCM Page Layouts start with the following Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c"

So if you create your own custom class, which inherits from PublishingLayoutPage you can then define your own methods and properties in it, do page level code like we used to do in MCMS !

You then switch the reference in you Page Layouts to use your new custom PublishingLayoutPage as described in Janne Mattila's EXCELLENT post.

I have tried this out and it works like a charm, I can now run code code when the page initialises, such as switch the Master Page used on loading the page, awesome.

 

Many Custom PublishingLayoutPage Classes, One for Each Page Layout ?

If you develop your own custom PublishingLayoutPage class then you can reference it in All your custom Page Layouts. The same custom code will now run in All Page Layouts.

To go one step further, develop many custom PublishingLayoutPage classes, one for each page layout you have, you can then run independent code for each Page Layout!

Even create your own Base PublishingLayoutPage class and inherit many custom classes from your base, this will give you the ability to run independent code for each page layout, AND also run common code for all Page Layouts in your Base PublishingLayoutPage class.

The possibilities are endless.

THIS BLOG HAS MOVED !!!

THE UPDATED POST CAN BE FOUND HERE –  http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/extend-publishinglayoutpage-class.html

SPContext.Current.FormContext

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!!

 THE UPDATED POST CAN BE FOUND HERE - http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/spcontextcurrentformcontext.html

 

 

 

 

SPContext.Current.FormContext is my new best friend !

http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spformcontext_members.aspx

 

FormContext has this super Method 

       1. SetFormMode Use it to change the current SPControlMode (haven't tried this out)

 

FormContext has two awesome Properties 

       1. FieldControlCollection - Get a collection of the Field Controls.

       2. FormMode – Get the Current SPControlMode

 

What is SPControlMode?

http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spcontrolmode.aspx

Editing content in a MOSS Publishing Site is done “in context” ie. You navigate to a page, and “Edit” the page, after which the page "mode" switches and you are presented with data entry controls that let you enter data into page fields.

 

So a Page can be in different modes, very similar in concept to how MCMS 2002 functions.

 

So we need a nice way to determine the “SPControlMode” programmatically in custom code so we can control rendering (do cool stuff) when in different modes.

 

The SPControlMode enumeration contains these values -

Display, Edit, Invalid and New 

 

Some example CODE that makes use of FormContext.FormMode -

' If Me not in Display Mode, Hide Me

If (SPContext.Current.FormContext.FormMode <> Microsoft.SharePoint.WebControls.SPControlMode.Display) Then

      Me.Visible = False

End If

 

 

 

THIS BLOG HAS MOVED !!!!

 THE UPDATED POST CAN BE FOUND HERE - http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/spcontextcurrentformcontext.html

Feedback from the August Perth SharePoint User Group Meeting

Posted by sezai
No Comments »

THIS BLOG HAS MOVED !!!

 

THE UPDATED POST CAN BE FOUND HERE –  http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/feedback-from-august-perth-sharepoint.html

 

 

 

 

I presented a session on MOSS 2007 WCM at the August Perth SharePoint User Group Meeting – /sezai/archive/2007/07/28/sezai-is-presenting-at-the-august-perth-sharepoint-user-group-meeting.aspx

 Here is some feedback I have received since : 

“The guys came back from your talk impressed with your depth of knowledge and experience on SharePoint.”   

 

             "I heartily endorse this product or service"

 

It was a bit boring first 15 mins (it was just like Microsoft promotion) but the rest was fun. You did very well with Q&A at the end I think. Great job!

 

"Man, this MOSS 2007 is the best thing since sliced bread, I guess that makes you a Bread Maker or some other type of Bread Machine?"

 

“its nice to see someone as passionate about MOSS and .NET development as you are.”

 

            “Sezai, Sezai your so fine, you're so fine you blow my mind, Go Sezai !”

 

It was great to meet someone who is so enthusiastic and passionate about his work.” 

 

"Dude, you are so sad, you need to find something else to get excited about instead of software, especially Microsoft software – Uber Nerd !"

 

“You are the Steve Irwin of SharePoint.”

 

 

 

 

It's hard work being such a Guru/Expert/Boffin/Grand Master/Legend in MOSS 2007 WCM, but someone has to do it !

 

                  http://www.thebestpageintheuniverse.net/c.cgi?u=stock_photos

 

 

THIS BLOG HAS MOVED !!!

 

THE UPDATED POST CAN BE FOUND HERE –  http://sharepoint-sezai-moss-2007.blogspot.com/2008/02/feedback-from-august-perth-sharepoint.html