Wednesday, February 29, 2012

New updates(Feb 2012 CU) for WSS 3.0 and MOSS 2007

 

WSS 3.0

Feb 2012 CU
Version:12.0.6658.5000
Link:2597959

 

MOSS 2007

Feb 2012 CU
Version:12.0.6658.5000
Link:2597958

Labels: , , , ,

Tuesday, July 06, 2010

Sharepoint Certified x 4

I got my fourth Sharepoint Microsoft Certified Technology Specialist (MCTS).



Now I am certified in:


Labels: , ,

Monday, April 12, 2010

Adding a Sharepoint footer (globally)

GOAL

I recently wanted a portal/sites wide footer for my SharePoint installation. I wanted this to affect the SPS portal and every WSS site without my needing to modify any of the .aspx pages that come with SharePoint.

RESEARCH

I found a great blog article on creating a footer with various means.

danielmcpherson - How To Create A Footer

Read the article and you may come to the same conclusion that the "3. DHTML and Stylesheet" solution is the most compelling, requiring no changes other than style sheet. Unfortunately this technique only works on IE due to HTC.

This effort underway which may help, but I was unable to graft into my scenario:

Scott Galloway - Use HTC within Mozilla!

I was convinced that the DOM script within the HTC was going to ultimately cause an incompatibility, so I scrapped the stylesheet-only idea.

SOLUTION

I ultimately created an HttpModule that I plugged into the site to put a footer on every dynamic page in the virtual directory. This "filter" would look for a </body> tag within any HTML content before it sent it to the user, and inserts my footer code. To make it more "style-sheet like," I decided to insert a javascript reference so that the content of the footer could be maintained by a separate file.

The trick is to create an IHttpModule implementation that installs a customized Stream filter to capture, watch and manipulate the text. Unfortunately stream needs to implement Stream and all it's methods so that you can override the Stream.Write(byte[] data, int offset, int count) as well as optionally Stream.Close(), Stream.Flush() or anything else you want.

I chose to capture all data pushed into Stream.Write(), and modify/output it only on Stream.Close(), with special attention on the destructor to make sure Stream.Close() was actually called.

Interesting excerpts:

public class MyFooterModule : IHttpModule
{
public MyFooterModule() {}
public string ModuleName { get { return "MyFooterModule"; } }
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
private void context_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
context.Response.Filter = new MyFooterFilter(context.Response.Filter, context);
}
public void Dispose() {}
}
public class FooterFilter : Stream {
public const string FOOTER_HTML = "<script src=\"/Elements/Footer.js\"></script>";
public const string BEFORE_REGEX = @"</body>\s*</html>";
protected byte[] mycache = null;
public override void Close() {
if (mycache != null)
{
string buffer = System.Text.UTF8Encoding.UTF8.GetString(mycache, 0, mycache.Length);
Regex regex = new Regex(BEFORE_REGEX, RegexOptions.IgnoreCase);
Match match = regex.Match(buffer);
if ((match != null) && match.Success)
{
StringBuilder newBuffer = new StringBuilder(buffer.Length + FOOTER_HTML.Length);
newBuffer.Append(buffer.Substring(0, match.Index;));
newBuffer.Append(FOOTER_HTML);
newBuffer.Append(buffer.Substring(match.Index;));
mycache = MakeByteArrayFromString(newBuffer.ToString());
}
BaseStream.Write(mycache, 0, mycache.Length);
}
base.Close();
}
}


When you get to the installation, consider signing the assembly, and NOT putting it into the GAC, or resorting to setting web.config to Full trust. In the meantime, do whatever it takes to make the following line work in your web.config file:



    <add name="FooterModule" type="MyNameSpace,myassembly"/>
</httpModules>


You will have to put the assembly in the site's bin directory. Also put it into the layouts bin directory if you want to have the footer appear in the _layouts/1033/*.aspx pages.



By installing this footer module into the default web site's web.config file, every portal and site .aspx page will be affected. Making the same modification to the layouts virtual directory will add the footer to the _layouts/1033/*.aspx pages, but some will look undesirable such as the rich text editor. As far as I've found, no pages actually break using this technique the the provided regular expression during content manipulation.



I heard that this type of filtering does not properly adjust the Content-Length header, which should be a problem, but I have not seen any ill effects yet.



 



This was an old post on MindsharpBlogs that unfortunately is not more online.

Labels: , , ,

Tuesday, August 18, 2009

New contribution to the community on Codeplex - The Sharepoint SPMultifilter web part

The Sharepoint SPMultifilter web part


http://spmultifilter.codeplex.com/


Overview

The Sharepoint SPMultifilter Web Part is a web part that shows items from a Sharepoint List and such items can be filtered and ordered from a View of the list.
Items are shown on a grid with 5 Columns. Those columns can be filtered on the Sharepoint page without rendering again the whole page, just like an Ajax behavior.
So you can write the letter or word with wildcards and search the item you want on the grid.


Installation

Here you can see the steps so as to install the SPMultifilter web part;

• Firstly you must download the SPMultifilter.zip file to a local folder on your Sharepoint Server
• Expand it.
• Goto the deploy\SPMultiFilter Folder
• Run the deploywithwspbuilder.bat file
• Add the spMultifilter Web Part to your Web Part Gallery
• Edit your page and add the spMultifilter Web Part.










Web Part Attributes

The Sharepoint SPMultifilter Web Part has some attributes so as to render the needed Columns on the grid.
The attributes are:
• List
• View
• Field1
• Field2
• Field3
• Filed4
• Field5
• RowAColor
• RowBColor
The “List” Attribute is used to set the Sharepoint List to be shown on the grid. The items of this list will be filtered and ordered using the “View” attribute. So you can create a new View so be used by this web part and where you can choose your order and filter as you want.
The “Fieldx” attributes are the columns to be shown on the grid and will be the attributes to be filtered on the textboxes placed on the head of the grid, so that you can type letters and filter on-the-fly.
It is very important that Fields chosen on the attribute, exists on the View you have set on the “View” attribute. Otherwise the column won’t be shon on the grid.
The RowAColor and RowBColor attributes are the colors to be shown on the grid rows.








Tips

Filtering


In the next image, you can see 6 items, and if you write the ‘m’ letter on the Title textbox , you ‘ll see only 2 items. The ‘Microsoft and Yahoo’ title and the ‘Michael Phelps’ Title.


Filtering with wildcards

While you are writing letters to filter the grid you can use 2 wildcards, * and !, * makes ignore part of the word to filter. For example if you write *p , you will see 2 items filtered on the grid; you ‘ll see the ´Michael Phelps´ Title and ´Google’s Big Plan for Books´, because those titles contains the ´p´ letter and some another letters before ´p´.


Another wildcard you can use is ! . With this wildcard you will search all items except the ones you are writing. For example if you write !m, you will see 4 items, You ´ll see all items except the ones that starts with ´m´.



Special Columns
Also there are 2 special columns that doesn’t use the filtering functionalities. They are just to have a more user friendly grid.
URL Columns
You can choose a URL type column so that will be rendered on the grid as a Link to the content you have on the item.
This link can be opened on the same browser window or in a new broser window or in a frame. You just need to have a column named target on your “View” and set its value as “_window” or “_blank”.


Edit Columns
Another special column on the grid is the “Edit” Column. This type of column can be used so that you can edit an item from the grid as usual Sharepoint Webparts. Just set one of the “Fieldx” attributes with the word “Edit” and you will see an icon so as to edit the item.If you use this option, you must add the ID field in your View.


Comments
This web part can solve you access to links easily filtering by any column.
Note that it will render items depending of a view, so it is recommended to show all items of a list on the view without paging it, but taking care of performance of the page that will contain the web part.
Contact
If you need new functionalities you think are useful on this web part please contact to Fernando Hunth ( fhunth@hotmail.com ) or post it on the Codeplex project http://spmultifilter.codeplex.com/

Labels: , , , ,

Monday, June 22, 2009

MOSS 2007. The smallest server farm for a company (In my opinion)


The smallest server farm that builds in redundancy consists of four servers:
• Servers 1 and 2: Web servers and query role installed on both computers. Additional application server roles, such as Excel Calculation Services, can be installed on one or both servers.
• Servers 3 and 4: clustered or mirrored database server.

With a four-server farm, you must carefully choose where to deploy the index server role. The query role cannot be deployed to both the index server and another server in the farm to achieve redundancy. This is because, when the index role is installed on the same server computer as the query role, the index role no longer propagates content indexes to other query servers. Consequently, if you install the index server role to one of the Web servers, you lose the ability to host the query role on both Web servers. You can install the index role on the database server, achieving redundancy of the query role on the Web servers. However, the performance of the database server will be affected, particularly when content is being crawled.
Additional application server roles, such as Excel Calculation Services, can be installed on one or both Web servers, depending on performance and availability requirements. In the previous diagram, additional application roles are deployed to only one of the servers in both Option A and Option B.
In Option A, performance is optimized if the Web server that is not hosting the combined index and query roles hosts the other application roles.
In Option B, the topology is optimized for user requests and queries. Performance of the other Web server

Labels: