Media Library items should be checkinnable!

I try to update my blog on daily base, unfortunality at the moment my work doesn’t give me the time to do it.
Then you have to do it in the evening, but sometimes is your personal (offline) life more important then your Sitecore blog. At the end of next week, I’ll be back at the LECTRIC-office in Zaltbommel on daily base which gives me more time relaxation, which also means more time for my blog. Going to upograde it to WordPress 2.0, improving the design a little, re-ordering categories, etc.

This post is about a problem I had with users in the standard ‘Editor’-role. When they edit a MediaLib-item in Sitecore they weren’t able to check it in again.
Here’s what happend:


Options when I navigate to an item in the Media Library. The editor clicks on ‘Edit’.

Look, no check-in option!

The security-options for this problem can be easily found in the core database:

Click for bigger and expanded version
Core database: /sitecore/content/Applications/Content Editor

Change the Red Disallow for Read to the Green Allow for Read and you’ll see this as Editor in the future:


Look, a check-in option!

Pipelines: RenderingHack and maybe some improvements – updated

I just found something strange in the saveUI-pipeline:

What is this? A fix for renderings? Does it change id’s for example? Or…?
Another processor which isn’t activated:

The documentation in for this Namespace doesn’t give me an indication what the function ofRenderingHack-class is:

I don’t expect it is a real work-around. Then you wouldn’t deliver it with in your release?
When I’m thinking now at the pipelines. Wouldn’t it be easy that you easily could configure your whole namespace:
<mypipeline namespace="Sitecore.Pipelines.MyCustomPipeline" assembly="Lectric.SitecoreAddOn" />

With an overrule for classes you don’t want to include:
<mypipeline namespace="Sitecore.Pipelines.MyCustomPipeline" assembly="Lectric.SitecoreAddOn">
<processor mode="off" type=^$(namespace).MyCustomExcludedPipelineAction, $(assembly)" />
<mypipeline>

Going to think about if this is really something which I should sent to Sitecore. Suggestions are welcome.

Update: Two minutes afterwards I’m realising that it would be a problem for the order of the pipeline. Monday morning…

Custom 404 handling with Sitecore / .Net

Ruben, one of my collegues is our usability guru. Well that’s actually not wholly true. Ruben ‘Usability’ Timmerman is next to a usability consultant, a Google-expert, a whizzkid and a cool collegue :). The guys of Team Nullsoft write down the strange stuff of each other on their website. I’ll try it to do the same for Ruben:

Ruben Timmerman
Adwording the internet
When you see Adwords, 90% chance they are plugged by Ruben. We found Ruben in the middle of the Netherlands(Utrecht), he moved in and never left us. Ruben works 24/7 while he listens to all different heavy kinds of music. Between Tech-House and Opera(altough he doesn’t like Ska!), everything was sent into the ether using Ruben’s wireless Headphone machine!

Ruben warnt me for the golden mistake made by 404-pages: forgot to respond the right 404-code!
Sitecore’s 4040 actually does what you expect from a 404-page. But when you customize your page you easily forget to set this code.

Based on if you handle errors within Sitecore pages or ouside of Sitecore this would do the trick:

//Inside Sitecore:
Sitecore.Context.Page.StatusCode = 404;
//Outside:
this.Page.StatusCode = 404;

What actually can happen? Well, Google, for example, offers Google Sitemaps an easy and free way to retrieve lots of information about accessing your site just for free! They ask you to create a page wso something does respond the code 200. When you can create a page, you definitelly hav enough rights to check out the stats Google offers. This exploit did exist at AOL.Com, Ebay, etc. So be aware of it…
Google actually solved this exploit, but it is this good to be aware of…

More information (in Dutch) by Ruben ‘Usability’ Timmerman.
More information by the guy who discovert it, David Naylor.

Sitecore and IE7 – Part II

As you already could see in the screenshot I’ve posted in my last post about IE7. The Sitecore toolbar does actually work in IE7. It still does not contain functionality for 5, but the toolbar is just cool to have :). Next to the dropdownlist with the tools to restart IIS, unload applications, and kill aspnet_wp.exe. You actually can find the toolbar here. The toolbar only caused some problems while closing IE7 that’s all ;). But that was only once…

How it looks in 7...
Click on the image to see the Toolbar in action

Back to IE! Well I’m looking for a test at the moment which should be able to compare the speed of loading and rendering images in IE7 an previous versions. Why? This is actually quite clear: 90% of the time, the Sitecore client does not atually communicate with it’s own webservice for example. No, 90% of the time it’s downloading preloading, loading and redering images. So for Sitecore it would be good to have a browser which actually can render images very quickly.
I already noticed that the caching is much and much better. Your first run of the client is still slow, but the second run is much times faster. Even after a hard-refresh (CTRL+F5), it is only reloading the real changed stuff… Don’t know if this is a feature I should like or dislike…

There are already lot’s of rendering bugs reported to Microsoft, but it looks like Sitecore isn’t affected. The only part where Sitecore seems to be affected are the events. You can drag without the window after it, etc. My first impression was that it would be my notebook which was to busy, but when I look at my CPU and memory-usage, I have to conclude it must be IE… I’m trying to should it using a screenshot but I’m not able yet to grab it on an image. Guess a movie will be the best option. I’ll come back with this later…

How to add an admin-feature to your editor menu?

At the moment I’m on daily base mostly at the office of one of our customers. At the office they definitelly miss me ;). On daily base I get this kind of e-mails or phone-calls:

Hi Alex,

The people of customer ‘X’ want to acces the recyclebin.
Do you know how to configure this in SC5?
I can’t find it, guess the admin is only allowed to show it?

Cheers,

Collegue Y

As I’m not so bad as they think at the office, here’s the solution(inclusive screenshots):

First of all, log in as admin…
Second, switch to the core database:

This wasn’t so hard, was it?

Now real work starts:
Go to the Content Editor. The three should look like the left image below.
Open the ‘Document and Settings’-node (Screenshot on the right)

 

We are on the right way! You rather take a cup of coffee now. The hardest part is upcoming…

Well, expand now ‘All Users’ and do the same for ‘Start menu’ under it. Again the same for ‘Right’ and ‘Programs’ (they are both at the same level).
The node should look like the node on the screenshot below:

Now select the option from the ‘Administration Tools’ you want to enable for the Editors. Right-click on the item > Copying > Copy To (See above).
When you actually click on ‘Copy To’, the following Modal Window will appear:

There, select the ‘Program’-node to copy to. So the program will be in ‘All Programs’. Click on Copy.
Now you have to navigate to the newly copied item.
When you’ve found it, you don’t have to forget to set at least premissions for the editors:

Wow! We’re ready! Now you can play a litle with right and maybe it’s good to re-order the newly enabled application. But that’s all up to you :).
Log in as a Editor to check out if the item is really enabled. But the stuff above worked fine for me at 5.1.1.11 and 5.2.0.3. So I guess it will work for whole the 5-branche.

Staging module in customised environments

When you use the staging module you definitelly have to watch out for some cases. One of the main problems is that when you change the global.asax the module really is going to dislike you.
You’ll receive lots of errors in the logfile. But you can’t do anything which really affect those lines of crap.
Well here’s your handyman!

Most of the time you forgot put this in your global.asax or global.asax.cs:
///------------------------------------------------------------------------
///

Custom error handling

///------------------------------------------------------------------------
protected void Application_Error(Object sender, EventArgs e) {
// Server.Transfer("UnhandledException.aspx");
}

///------------------------------------------------------------------------
///

Shutdown logging

///------------------------------------------------------------------------
public void Application_End() {
Sitecore.Web.HttpModule.OnApplicationEnd();
}

I guess this is applies to all Sitecore functionality. When you override some stuff, don’t forget to copy the original calls.

Sitecore and IE7

Woehoe! Microsoft hasfinally released a public beta of IE7 :). That good news! I always wait till the first public beta’s because they normally won’t ruin my just installed WinXP ;).
So today I’ve downloaded this new browser.. After a reboot I’m now playing with it. What I definitelly needed to know was: does Sitecore actually work :P?
Placed my webroot to the installation of 5.2.0.3 and opened a new ‘tab’: localhost and Go! Waiting, waiting, waiting. Then an error… A new one actually:

Error in IE7

In the past versions of IE, the page did actually wait for the webserver. Now IE will finally close it’s connection when a client-side time-out occur.

After the initialisation of Sitecore did actually happen, it appeart the way it should appear:

How it looks in 7...

Some remarks about the client functionality:

    The headers in the chrome window wheren’t clickable the way they should be.
    Moving windows around causes quite high cpu-usage and works slowly
    Seems to be some problems with collapsing panels

As I’ve seen the stuff above I guess the on-Action attributes are still buggy… In any case they are definitelly changed.
I haven’t got time to fully test everything, so notthing is yet reported to Sitecore.
When you are looking for a full buglist of IE, check this link out.

Pipelines in 5.1.1, 5.2

Yesterday I actually found out that pipelines like workflow, look much heavier in the latest releases of Sitecore.
We run our custom workflow actions and discovert that, undependent of which action was taken, running trough a pipeline took lot more resources and time then before. As a matter of fact I’m trying to figure out what’s actually different as interfaces aren’t really changed between the latest releases and let’s say the 5.0.x branche.
When someone ahas the same experiences as I’ve, I’m definitelly interested. Then I can recreate it and do I really have a case for support.

The stuff above occurs in 5.1.1.9 and it’s equivalent in .Net 2.0: 5.2.0.3
Coming back to here as soon as I’ve got more information.

Training: Not so bad afterall

Yesterday was a kind of second kick-off for a training program with as main goal that a team(read: 2) of engineers are able to create own websites in Sitecore. Or at leats are able to create, modify and delete parts of the current architecture which is created by LECTRIC.
Training people isn’t actually the most preferred activity for an engineer. As a matter of fact, that’s what I thought before yesterday.
Together with the two guys I was training we’ve created a MultiMediaLibrary in Sitecore on paper. ust on paper. Notthing else.
Before you start a training with such an exercise, you already have imagined what you actually are going to build. With a system like Sitecore I actually also create templates, (sub)layouts and master without even touching a paper. But yesterday my tought has to change dramatically, with the ideas of the other s it became just another module. And I actually let them go… This is the way to learn: cases like in every organisation.

We started as customers, and described what we actually want to have for the intranet. We even wrote down what we expect that it should do it the future and what the priorities are of these features.
Half an hour later:
After that we impersonalised ourselfs to a team of projectleaders. As projectleader we found out that our information wasn’t complete. We actually forgot lots of things(for example: how level deep can editors create albums with media items? and what about the first page how does this have to look?). We went back to our last chair and finished all the information we needed.
One hour later:
As a team of developer we created our own Sitecore architecture. We stayed at Templates and (sub)Layouts. Masters will be created next week.

A day like yesterday opens my eyes . No I actually can see how I normally make decisions. Even if those decisions are made to quick, without enough background information, etc. And because of we actually made these not totally restricted requirements, we actually evolved our own process. Next time our first step will be a lot more efficient.
Hoping next week we can go futher the way we started yesterday. And if this actually is working for those guys, I will consider to post the full training programm here on my blog.