Friday, June 29, 2012

Java Versioning

I am not a Java programmer, at least for last five or so years. So when I find the system requirement of some software that I need to install say it requires JRE version XX or higher, I am not so existed.

Their versioning, and naming as well, are confusing.

I think I did a bit of research on it before, but find what I learnt back then nowhere now. So this time again, did some Googling and found this http://www.ehow.com/about_6574616_java-jre-1_6_.html. This clears things out to a certain extent.

Another possibly very useful pointer would be http://java.sun.com/products/archive/.

For instance, today, I was looking for JRE 1.6 update 17. According to the explanation, I should find what I am looking for under “Java SE 6”. And the “Java SE Runtime Environment 6u17” found on the next page opened must be the one.

But again, what is this “6u17”? “Update 17 for Java (1.)6”? OK... But I believe they are trying to confuse us deliberately...

Tuesday, June 19, 2012

Embedded resource

I have the feeling that I faced this difficulty already in the past. But obviously did not write about it here. And so this time again, it took some time to figure out. Now I should keep it here.

It is to have some “resource files” embedded in the assembly and accessible from clients. Not about the other type of “resource files” where you have key/value pairs.

I used this technique in the past with a web part, and remember it was rather straightforward.

But then, this time, tried to do the same in a web application project and ran across a few points that required some Googling to overcome.

First of all, the project's AssemblyInfo file needs to modified. With hands? I did. http://aspnet.4guysfromrolla.com/articles/080906-1.aspx explains it.

Secondly, the “this.GetType()” in the following code does not work, with a web application project.

Page.ClientScript.RegisterClientScriptInclude("hoge", Page.ClientScript.GetWebResourceUrl(this.GetType(), "hoge.js"));

Correct me if I am wrong. I did not bother digging it further to confirm, but in a web app project, embedded resource files such as a javascript file are included into the project’s assembly together with the code behind classes etc. But the “this” does not point to it. Rather, it points to the temporal assembly the framework generates from the .aspx file accessed.

But GetWebResourceUrl method succeeds nevertheless. This makes its debugging difficult. The method succeeds and return a seemingly valid WebResource.axd path. It is then included into the response html. Client requests it and Bomb. The requested file is not found.

http://stackoverflow.com/questions/320484/webresource-hell-resource-cannot-be-found told me the fix.

Page.ClientScript.RegisterClientScriptInclude("hoge", Page.ClientScript.GetWebResourceUrl(typeof(whatever class that I am sure cohabit with the js), "hoge.js"));

I do not know how framework maps the long parameter of WebResource.axd request to my javascript. But it is certainly not in the temporal assembly the framework generates, represented by “this”, but in my project’s assembly. I have to specify it precisely.

Monday, June 4, 2012

Delete a Page Layout

I wanted to delete a Page Layout that I had deployed thru feature and used here and there already. The reason was that I became wanting to attach a preview image of my own to it. Thought it should be straightforward. A small modification to the feature. But it turned out not...

http://social.msdn.microsoft.com/Forums/en/sharepointecm/thread/273ef6a0-1f9f-46d8-9e9f-a70f81bc79cc

People here appear to have the same problem and discuss that the only solution is to delete the provisioned layout once and re-activate the feature.

But to delete a layout is not easy. Obviously I need to make sure it is not used by any page. I did that, by writing some code to list all pages using the layout and replacing with other layout. But still cannot. The famous “This item cannot be deleted because it is still referenced by other pages” message continues. It could be that the layout being not used by any page is not enough. Other places such as sites configured to have it available may need to be taken care of too, which I may have a closer look in future when I find time.

http://sharepointcodeblock.blogspot.com/2008/06/deleting-page-layout-or-master-page.html

In the meantime, I tried this too but no luck. Then realized that once I have moved it to a subfolder, even though I cannot delete it still, I can provision the new one, with my preview image. Not beautiful that the old one is always sitting in the subfolder, but at least I guess I have achieved what I wanted.

One more thing. I would like to keep this link as well for possible future reference.

http://blog.mastykarz.nl/provisioning-publishing-pages-features-declarative-markup/

Where I found the name of the feature which deploys the OOTB Publishing Page Layouts. Only by looking into it, I was able to find the name of the property (turned out to be “MasterPageDescription”) for the description (not very visible. appears for instance on _Layouts/CreatePage.aspx).

Friday, June 1, 2012

Applying a background image to a table row

 

http://snook.ca/archives/html_and_css/applying_a_back

It is often the case that to be sure that something is NOT possible is more difficult than to know how-to for things possible.