Using Javascript to Manipulate a List Form Field Title

October 12th, 2007 by Dor

Lets say you want to change the text of a field title in a new item form, or in an edit-item form. You might want to do one of the following:

  • Change the field title text
  • Add a remark to the title
  • Add a link
  • Make the title a link
  • Put some javascript

The trick in doing this is also not breaking the Form Web Part, so new fields will appear in the form.

The solution is… Javascript at runtime! It’s inspired by this post for changing the default value of a field, only this time we’re talking about the title text and not the field value.

So how to do it? Easily. Open the NewForm page with SharePoint Designer and view the HTML code. Look for the main content placeholder:

<asp:Content ContentPlaceHolderId=”PlaceHolderMain” runat=”server”>

Paste this code inside it, before the table:

<!– Begin Field Link Code –>
<script type=”text/javascript”>
// Add the function so it will be called on Body_OnLoad.

function AddFieldLinks()
  // Call the search function with an anonymous function that will 
// be executed upon finding the relevant field.
AddFieldLink(“Status”, // This anonymous function adds a link to the field’s title. function (currentText) { return currentText + “<br/>” +
GenerateLink(“policy.html”, “<u>See Status Policy Document</u>”); } ); } function GenerateLink(url, text) { return “<a target=\”_blank\” href=\”" + url + “\”>” + text + “</a>”; } function AddFieldLink(fieldName, fn) { // Get all field titles var tags = document.getElementsByTagName(“H3″); // Go through all field titles and search for the requested field. for(var i=0; i < tags.length; i++) { if((tags[i].children.length == 1) &&
(tags[i].className == “ms-standardheader”) && ((tags[i].children[0].innerText == fieldName) ||
(tags[i].children[0].innerText == fieldName + ” *”))) { // Found the field we need to update. Set its tags[i].children[0].innerHTML = fn(tags[i].children[0].innerHTML); break; } } } </script> <!– End Field Link Code –>

Now just edit the body of the AddFieldLinks function to change the title of the relevant fields.

It’s parameters are:

  • The title of the field
  • A function that returns a string for the title.
    Notice that I used an anonymous function so you can set a different behavior for each field title - for example, one will be a link, the other would be appended some text, etc…

Now just save the file, approve the unghosting, and that’s it! Smile

Here’s the result - click to enlarge:
click me!


Posted in English Posts, WSSv3 | No Comments » Javascript to Manipulate a List Form Field Title digg:Using Javascript to Manipulate a List Form Field Title reddit:Using Javascript to Manipulate a List Form Field Title

SPD ‘Send Email’ Workflow Activity HTML Message Body

August 28th, 2007 by Dor

Would you like to send email messages with a rich text body from your custom SharePoint Designer workflow? Well, it’s easier than you think…

Appearatnly the out of the box activity sends the message body as HTML, but the editor is not rich, thus misleading us to think we can only insert simple text. However, the solution is to simply paste HTML code into the body. And that’s it! Open-mouthed

This way you can create messages with cool content, and align the body as RTL (Right To Left) for relevant languages such as Hebrew.

Here’s a screenshot from SharePoint Designer in Hebrew, in which I created an RTL message:


Tip: Check the Workflow XOML file that SPD creates before running it for the first time. (Because on the first run it will compile and workflow will become unchangable.) See the HTML string you created and run it through some HTML Decoder, to convert special characters to understandable text. Then you can make sure the HTML is OK.

Posted in English Posts, Office 2007, WSSv3 | 2 Comments » 'Send Email' Workflow Activity HTML Message Body digg:SPD 'Send Email' Workflow Activity HTML Message Body reddit:SPD 'Send Email' Workflow Activity HTML Message Body

Stock Quote Web Part(s)

August 16th, 2007 by Dor

Yesterday I was asked to put a web part on an internal MS site, which displays Microsoft’s stock current value and a graph to show its changes.

This appeared to be easy - Yahoo offers these kind of web widgets that can be embedded in a site.

However, the Yahoo widget has a big logo and commercials, and this isn’t suitable for an internal MS site. So I needed to get the data elsewhere.

After some research I found a way to do this, using MS only tools:


So I separated the functionality to two Web Parts:

  • Data View Web Part (created using SharePoint Designer) - to consume the Web Service
  • Content Editor Web Part - to run some javascript to get the chart image

If you’re interested in how I created the Web Parts, keep on reading. Otherwise, skip to the end of the post to download them.

1. The Stock Value Web Part

That’s easy - open up SharePoint Designer, open some SharePoint page you can edit on a test site, and connect to a data source - the MoneyCentral Web Service. You’ll get the data, which you can add to your page using the Data View Web Part.

However, there’s a problem - the Web Service output is a string that contains a lot of XML data as a String and not as a complex XML tag. SharePoint Designer doesn’t know the schema of that XML and can’t isolate just the current value of the stock from it. So I used a couple of functions to isolate the relevant text. (substring-before, substring-after.)

Then just save the page, view it in your browser, export it using the Web Part menu, and import it to wherever you want to place it. (By working on a test site and importing the Web Part, the page desination page will not be unghosted.)

2. The Stock Chart Web Part

This is a bit more tricky: you can take images straight from the MSN website, because the image source is a DLL that generates them on demand. You just need to send the right parameters.

Please notice that by using this trick, we’re actually “stealing” bandwidth and CPU from MSN’s servers. So the minimum I could do is put some nice link to MSN to give them credit..

I created a Javascript function that generates the URL:

formatChartImageSrc(symbol, fromDate, toDate, imgWidth, imgHeight)


  • symbol: a string containing the stock symbol name, like “MSFT”.
  • fromDate: a Date object containing the date from which to display the timeline.
  • toDate: the date in which the timeline will end (usually today)
  • imgWidth, imgHeight: Dimensions of generated image.

Here is a sample use of the function that outputs the URL for a 1-year view of the MSFT stock, until today. Then I get an IMG element with the ID “chart” and set it’s source to the generated URL.

var stockName = “MSFT”;
var toDate = new Date();
var day = 1000*60*60*24
var fromDate = new Date(toDate - day*365);

var srcUrl = formatChartImageSrc(stockName, fromDate, toDate, 300, 300);
var chartObj = document.getElementById(“chart”);
chartObj.src = srcUrl;

I place this code and the <img> tag itself in the Content Editor Web Part, and that’s it. The image will be up to date.

Download & Installation

Here are the links to the files:

Changing the stock symbol
After you save the Web Parts locally, open them in a text editor. Search and replace the word MSFT with the stock symbol you want to display. Do this before uploading the Web Parts to your website.

Importing the files to the site
To install, go to a SharePoint Site, click Site Settings and then Edit This Page. Add a Web Part to a zone, and then click the bottom link in the Add Web Part Dialog to get to the advanced mode. Now you’ll see the gallery on the side of the page. On the top of the gallery, you will see the word Browse. Click it and choose Import instead. Then pick one of the .webpart files and upload them. Drag and drop, repeat for the second file, and that’s it!

Posted in English Posts, MOSS, WSSv3 | 13 Comments » Quote Web Part(s) digg:Stock Quote Web Part(s) reddit:Stock Quote Web Part(s)

Updating a list item without changing the Modified field

July 14th, 2007 by Dor

In WSS 3.0, it is now possible to update a list item (SPListItem) without changing the contents of the Modified or Editor fields.
This wonderful method is called SPListItem.SystemUpdate (has two overloads).

This solves the annoying problem where people would see some system user account that is responsible for the last update, and the time was also some strange time in which the system account did its actions.

So here’s the code sample:

SPSite site = new SPSite(“http://server/sites/someSite”);
SPWeb web = site.OpenWeb();
SPList list = web.Lists[“ListNameHere”];

// Create new item
SPListItem item = list.Items.Add();
item[“Title”] = “New Item Title”;
item[“Modified”] = new DateTime(2000, 1, 1);
item[“Created”] = new DateTime(2000, 1, 1);
item[“Author”] = web.Users.GetByEmail(“”);

// Update an item
// (Using some item ID from a pre-populated list)
SPListItem itemu = list.Items.GetItemById(2);
itemu[“Title”] = “An updated item title”;
itemu[“Author”] = web.Users.GetByEmail(“”);

Posted in English Posts, WSSv3 | No Comments » a list item without changing the Modified field digg:Updating a list item without changing the Modified field reddit:Updating a list item without changing the Modified field

שוב הגיע הזמן הזה בחודש…

May 14th, 2007 by Dor

לא, לא הזמן להתקלח (את זה עושים רק פעם ברבעון ;)) - הזמן להחליף סיסמא ל-Domain Account שמריץ את ה-Services של MOSS.

נניח ש…

  • בעת ההתקנה של WSS או MOSS קבעתם יוזר וסיסמא (הרי הייתם חייבים) מהדומיין
  • אחר כך החלפתם סיסמא ידנית באמצעות גישה ישירה לקונפיגורציה של IIS או של Services ב-Management Console
  • אתם רוצים לבצע מיגרציות או לשנות את החווה

התוצאה: כנראה תיתקלו בבעיות מאוד לא נעימות, כי ה-Configuration Wizard או ה-Central Administration פשוט ייכשלו בעקבות בעיות Logon. (ואני כבר חוויתי מיגרציה שנפלה בדיוק על הבעיה הזו ולקח שעות להרים אותה חזרה.)

הסיבה לכך: SharePoint שומר את ה-Credentials ב-DB שלו. כשמחברים שרת WFE חדש, SharePoint יוצר את ה-Web Sites וה-Application Pools ב-IIS בעצמו, וכן מקנפג בהתאם את ה-Services שרצים במחשב. כנ”ל בעת מיגרציות.

הפתרון: להחליף סיסמא בממשק ה-Central Administration או באמצעות STSADM. אבל יש כל כך הרבה מקומות להחליף בהם סיסמא, מה עושים? …בטח לא מתבאסים! קוראים את המאמר החדש ב-TechNet שמסכם את כל המקומות בהם צריך להחליף סיסמא ואפילו מספק batchfile זריז שיעשה את כל העבודה בשבילכם.

שלא תדעו downtime,
דור. :)


Posted in Hebrew Posts, MOSS, WSSv3 | No Comments »שוב הגיע הזמן הזה בחודש... digg:שוב הגיע הזמן הזה בחודש... reddit:שוב הגיע הזמן הזה בחודש...

Some SharePoint Links

May 2nd, 2007 by Dor

האמת שאני כותב את זה כדי לא לשכוח לקרוא את כל המאמרים האלה. אז הנה כמה קישורים נבחרים ומעניינים, מתוך מבחר הבלוגים אותם אני קורא:



וה-Buzz היומי:

עוד לא שמעתם על Silverlight? מדובר בפלטפורמה שהיא Flash-killer מבית Microsoft, ולא רק זה - היא גם כנראה תהרוג אותו כמו נינג’ה מיומנת. :) הנה מה שיש ל-TechCrunch להגיד בנושא.

עדכון חשוב: התקנתי את התכונה הזו על השרת, והיא גרמה לנפילת ביצועים קטסטרופית. היא לקחה 100% CPU בעת מחיקת אתר, וזה כי היא עושה בעצם export לכל האתר. בנוסף, מרגע הלחיצה על לחצן המחיקה ועד שכל התהליך מסתיים עובר הרבה זמן, מה שבטח יגרום למשתמשים ללחוץ כמה פעמים על הכפתור - ואני לא רוצה לדעת מה יקרה אז. בקיצור - לא מומלץ.

Posted in Hebrew Posts, MOSS, WSSv3 | No Comments » SharePoint Links digg:Some SharePoint Links reddit:Some SharePoint Links

New Israeli SharePoint Events

April 25th, 2007 by Dor

אהלן, אז לכבוד חג העצמאות פוסט חגיגי (לתפארת מדינת ישראל!) המספר על אירועים קרובים במיקרוסופט רעננה, למקרה שאתם עוד לא מנויים על ה-RSS.

אלה שני מפגשים המכילים נושאים מאוד חשובים לכל מי שמתחיל את דרכו עם יישום פרויקט SharePoint בארגון שלו, או שפשוט רוצה לעשות סדר ולהבין איך הוא יכול לנצל את התשתיות החדשות כדי להפיק תועלת  רבה יותר מתוך התוכן המאוחסן בהן.
הנושאים הם מה שאני מכנה “טכנו-מתודולוגיים” :), כלומר שמצליחים לגעת גם בהיבטים האנושיים והארגוניים של ניהול הידע, וגם בהיבטים הטכנים והמשמעויות הפיתוחיות של שימוש ביכולות כאלה או אחרות.

Posted in Hebrew Posts, MOSS, Office 2007, WSSv3 | No Comments » Israeli SharePoint Events digg:New Israeli SharePoint Events reddit:New Israeli SharePoint Events

WSS 3.0 Hebrew is out!

March 28th, 2007 by Dor

חדשות טובות ומשמחות - בשעה טובה שוחרר Windows SharePoint Services 3.0 בעברית לאינטרנט וניתן להורדה בחינם (לבעלי שרתי Windows Server 2003 כמובן):

  • גרסת 32 ביט
  • גרסת 64 ביט
  • גרסת 86 ביט (טוב, אין כזו באמת, אבל מישהי פעם הציעה לי להתקין אותה כי זה מה שהיא הבינה מהסיומת X86 שהיתה רשומה בשם הקובץ)

וכמובן ה- Hebrew Language Pack עבור WSS:

מאוד חשוב לשים לב לגבי ה-Language Packs: מי שיש לו MOSS צריך להתקין Server Language Pack ולא סתם Language Pack, כיוון שיש שם תכולות נוספות שתורגמו, כגון KPIs, אתרי פרסום ועוד. התקנה של החבילה הלא נכונה תגרום לשגיאות מכוערות.

תהנו. :)

Posted in Hebrew Posts, WSSv3 | No Comments » 3.0 Hebrew is out! digg:WSS 3.0 Hebrew is out! reddit:WSS 3.0 Hebrew is out!

חדשות וחידושים

February 25th, 2007 by Dor

כלי שמנתח את ההתקנה של WSS ומציע כיצד לשפר את הביצועים.

2. Podcasts: How Microsoft IT Manages the World’s Largest Windows SharePoint Services Deployment

נמאס מגלגלצ? אולי כדאי לשמוע איך עושים את זה במיקרוסופט.

3. Colligo for SharePoint 2.0

כלי Offline עבור SharePoint, כולל 2007. גרסת החינם מאפשרת צפיה בלבד בקבצים, והגרסה בתשלום מאפשרת עדכון שלהם.

ובונוס קטן שלא קשור ל-SharePoint אך מהווה תוספת חיונית לדפדפן - IE7 Undo Close Tab

שבוע טוב,


Posted in Hebrew Posts, MOSS, WSSv3 | 1 Comment »חדשות וחידושים digg:חדשות וחידושים reddit:חדשות וחידושים

WSS Application Templates *in Hebrew!*

February 23rd, 2007 by Dor

הם יצאו סוף סוף - תבניות אתרים בעברית עבור WSSv3.

ההתקנה היא פשוטה למדי, צריך רק לפתוח את הקובץ ולבצע add ואח”כ deploy לכל אחד מהקבצים באמצעות stsadm.

חשוב מאוד לזכור שפקודת deploy מייצרת משימה עבור שירות ה-WSSTimer ולכן מדובר בעצם בג’וב שצריך להתבצע, ולוקח לו כמה דקות. לכן, לאחר ביצוע ההתקנה מומלץ לחכות מספר דקות לפני שבודקים אם היא הצליחה - כי יכול להיות שהקבצים עוד לא הופצו.

לשם וידוא ההפצה ניתן להריץ את stsadm -o enumsolutions.

קישור להורדה


נ.ב. אני יודע שקצת לא עדכנתי לאחרונה, היו מבחנים :) אשתדל לעדכן יותר, ודווקא יש על מה..

Posted in Hebrew Posts, WSSv3 | No Comments » Application Templates *in Hebrew!* digg:WSS Application Templates *in Hebrew!* reddit:WSS Application Templates *in Hebrew!*

« Previous Entries