SharePoint Blogs / SharePoint University
SharePoint Blogs and SharePoint University - all in one place!
Need SharePoint Training? Attend a SharePoint Bootcamp!

Please delete cookies related to sharepointblogs.com and sharepointu.com to resolve login issues!

Employee Training and Scheduling Template - a couple fixes Part 3

Took me long enough to get this post up, but it's finally done (hopefully - please let me know if you come across any errors in the walkthrough).

Refer to the previous two articles in this series for additional customizations necessary to make this template function correctly.
Employee Training and Scheduling Template - a couple fixes Part 1
Employee Training and Scheduling Template - a couple fixes Part 2

In this walkthrough, we'll be covering how to set permissions and make additional customizations to the "Employee Training Scheduling and Materials" template that allows users to register (and unregister) for courses without the (perceived) ability of being able to create their own "Courses" or "muck-up" anything else in site that we wouldn't want them to.

One of the major problems with how this template was designed is that in order to make it so a user can register and unregister from a course, they must have what's roughly equal to "Contribute" permissions on each of the lists associated with the "Course".  This, of course, opens up the possibility of users being able to do more than they should, and could lead to the entire process breaking down at some point if an errant user were to add in their own Courses on the calendar, or remove existing ones (not that anyone at your company would ever do such a thing).

So, to get the environment setup better to limit what a user can do (or more realistically, the "perception" of what they can do), the steps are as follows:

Step 1: Create the site:

Once created, break inheritance on the site.  It's important to begin with a unique site that doesn't have any fall-through from permissions at its parent (we're creating a new "custom" permission level to use for the users of this site).

Step 2: Modify site to make it custom (part I):

  1. Go into the permissions area of the site and break inheritance on the permission levels (the "definition" of these levels will now exist locally instead of being defined at the parent). 
  2. Once broken, remove any and all permissions except for defaults ("Full Control", "Design", "Contribute", "Read", "Limited" - this resets the permissions-available back to an "Out of the box" list if you had other custom definitions).
  3. Create a new custom permission level by starting with the definition of the default "Contribute" level.
    1. To do this, click on "Contribute" to edit, scroll to the bottom of the permissions page after it opens and click "Copy Permission Level" (this creates a new unnamed level that has all the options the "Contribute" level has as a starting point).
    2. Name the new level "Employee Regs" (or similar that fits your environment), add in a simple description to remind you that this level is for employee registrants, then modify the list of permissions to be set as follows:
      1. List Permissions
        1. Add Items
        2. Edit Items
        3. Delete Items
        4. View Items
        5. Open Items
      2. Site Permissions
        1. Browse Directories
        2. View Pages
        3. Open
      3. Personal Permissions
        1. Uncheck all

These are the minimum permissions needed in order for users to be able to register for a course and unregister if needed.  The problem again, is that with these permissions, a user could in theory, create a new "Course", delete an existing "Course", delete another user who is registered for a course, or modify anything existing.  None of this is really acceptable, so what we need to do is now go through the site and first limit their access to areas not associated with the workflows for registration, then limit the manner in which they can gain direct access to areas they do have permission to.

First though, let's finish up the permissions part by creating a new group that this custom level will be applied to.

  1. Go to "People and Groups" and create a new group and name it in a manner that fits in with your naming convention for the rest of the site, but for good practice make sure to name it in a manner that makes it indicative of being for "Registrants" (e.g. your site is named "ACME Training" - an appropriate name for this group might be "ACME Employee Registrants" or similar). 
  2. Once created, set this new group's permission level to the new custom permission level we previously created (in my case, "Employee Regs").

At this point since the group has been created, you can add in your users that will be registering (or wait until all the customizations are completed - either way, don't forget to add in your users).

Now we need to start limiting what our users can see (the idea is that "If we hide it, they won't find it!!").

Modify site through SharePoint Designer (Part I)

  1. In SharePoint Designer, connect to your site.
  2. If you haven't done this already, modify the site as per (...a couple fixes Part 2)
  3. Modify web parts visibility
    1. Open default.master
    2. In "Design" view, locate "View All Site Content" on the left-hand-site navigation bar and click on it.
    3. Go to "Code" view. You will see the following code highlighted:
      <Sharepoint:SPSecurityTrimmedControl runat="server" PermissionsString="ViewFormPages"><div class="ms-quicklaunchheader"><SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx" Text="<%$Resources:wss,quiklnch_allcontent%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>"/></div></SharePoint:SPSecurityTrimmedControl>
    4. Change the "PermissionString" attribute value of the "Sharepoint:SPSecurityTrimmedControl" element from "ViewFormPages" to "DeleteVersions".
    5. Save the default.master.

If you login as a member of the "ACME Employee Registrants" group, you will not see the "View All Site Content" link (this is important because it will not let unauthorized users see the listing of site "lists"). However, when authenticated as a member of the site owners or contributors group, you will see this option.

NOTE: The "DeleteVersions" permission is common to both the "Members" and "Owners" group permission levels, but is not set for the "Limited Access" (anonymous users), "Read", or "Employee Regs" permission levels.

  1. Modify dispform.aspx to hide "Course Registration List" (lists/courses/dispform.aspx)
    1. Add in new "<tr><td></td></tr>" tags after "Main" web part zone table row closes, and add in: <Sharepoint:SPSecurityTrimmedControl PermissionsString="DeleteVersions" runat="server"><WebPartPages:WebPartZone runat="server" FrameType="None" ID="Bottom" Title="loc:Bottom"><ZoneTemplate></ZoneTemplate></WebPartPages:WebPartZone></Sharepoint:SPSecurityTrimmedControl>
      (this adds a second zone under top one)
    2. Save and close file (ignoring any errors displayed in the designer).

Step 4: Modify site to make it custom (part II):

  1. In the browser, go to the site homepage
  2. In edit mode (Site Actions > Edit Page) remove each of the following webparts:
    1. Courses I have taught
    2. Courses I am teaching
    3. Courses I have attended
    4. Content Editor Web Part
    5. Links
  3. On left zone add Courses web part (and drag to bottom of zone)
  4. Click "View all site content
    1. Go to "Course Materials"
      1. Edit permissions
        1. Change permissions of "ACME Employee Registrants" group to "read"
    2. Go to "Announcements"
      1. Delete "Announcements" list (the guy that built this template for Microsoft left some errant information in the list which will cause some errors if you use it so we need to recreate it)
      2. Go to the "Create" screen and select "Announcements"
        1. name it "Announcements"
        2. leave rest as default and click create
      3. Go back into the settings for the "Announcements" list and edit Permissions
        1. Change permissions of "ACME Employee Registrants" group to "read"
    3. Delete "Course Surveys"
    4. Courses
      1. Leave Permissions as is
      2. Modify webpart toolbar to "Summary Toolbar"
    5. Links
      1. Edit Permissions
        1. Change permissions of "ACME Employee Registrants" group to "read"
    6. Past Registrations
      1. Leave permissions as is
    7. Registrations
      1. Leave permissions as is
      2. Modify webpart toolbar to "No toolbar"
    8. Tasks
      1. Leave all as is
  5. Quick launch
    1. Delete Add new course
    2. Delete upload materials
    3. Delete Course Surveys (this will also delete "add new feedback")
    4. Delete Announcements (will add back later)
  6. Go back to home page
  7. Quick launch
    1. Go to announcements list
      1. Edit Permissions
        1. Change permissions of "ACME Employee Registrants" group to "read"
  8. Go back to home page
    1. In edit mode, add the Announcements webpart to the right zone.
    2. Change view of "Courses" webpart to "calendar"
    3. Exit edit mode
  9. Quick Launch
    1. Copy URL from "Announcements" listing under list heading
    2. Replace URL on lists with Announcements URL
    3. Rename lists to "Announcements"
    4. Delete announcements sub-heading (list item under main heading)
  10. Modify "Courses I am attending" webpart XSL to function correctly when un-registering (see Previous post)
    1. On home page, go into edit mode and open the "XSL Editor" for the webpart
      1. Find:
        "You are not scheduled to attend any courses."
        and:
        "Choose &quot;Upcoming courses&quot; from the Quick Launch bar to select an available course to register for."
      2. Replace with:
        "You are not scheduled to attend any Sessions."
        and:
        "Choose &quot;Upcoming Sessions&quot; from the Quick Launch bar to select an available Session to register for."
      3. Find:
        <td class="ms-vb"><a href="Lists/Registrations/Unregister.aspx?ID={../../../Registrations/Rows/Row/@ID}" mce_href="Lists/Registrations/Unregister.aspx?ID={../../../Registrations/Rows/Row/@ID}">Remove</a></td>
      4. Replace with:
        <td class="ms-vb"><xsl:variable name="CourseID" select="@ID"/><a href="Lists/Registrations/Unregister.aspx?ID={../../../Registrations/Rows/Row[@Course_x0020_ID=$CourseID and contains(@Author, $UserID)]/@ID}">Remove</a></td

Step 5: Modify site through SP Designer (Part II)

  1. Modify default.aspx
    1. Open default.aspx in SP Designer (at root of site)
    2. Click to select the "Left" webpart zone.
    3. Scroll to the bottom of the webpart zone in the html view
    4. Immediately after "</ZoneTemplate></WebPartPages:WebPartZone>"
      add in:
      <Sharepoint:SPSecurityTrimmedControl PermissionsString="DeleteVersions" runat="server"><WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" ID="Bottom" Title="loc:Bottom"><ZoneTemplate></ZoneTemplate></WebPartPages:WebPartZone></Sharepoint:SPSecurityTrimmedControl>
    5. Save page

Step 6: Modify site to make custom (Part III)

  1. In the site (on any event details page), go into "edit page" mode and drag the "Course Registration List" web part to the new bottom zone from the top zone.
    When a user visits the page, the list of currently signed up users will now only display to the members of the site owners and contributors groups (registered employees will not be able to see the list).

    (8/7/08) EDIT - ADDED STEP I FORGOT ABOUT IN ORIGINAL POST
    (Thanks to Sara for pointing this out in a comment)
    1. While in "Edit" mode, open the toolpane for the "Courses" list (edit > Modify Shared Web Part).
      1. Open the "XSL" editor and locate the following:
        <SharePoint:FormToolBar runat="server" ControlMode="Display"/>
        Comment out this line to remove the toolbar from display
        (add in <!-- --> around the tag to hide it)
        This is neccessary in order to prevent users from being able to create/edit/delete/etc., the items on the "Courses" list.
  2. Back on Home Page
    1. Add a content editor webpart to the new "bottom" zone
      1. Add in the following html:
        <A href="/<the new site URL>/Lists/Courses/AllItems.aspx">Click here to add new Calendar Events</A>
      2. This will give access to the screen where admins of the site can enter in new calendar events.

Conclusion:

Using the above, you can definitely see that it can take quite a bit to customize this template to make it a "workable" platform for managing training sessions and user registrations.

To give you an example of what my organization has gotten out of this template:

We have a number of "Assessment Sessions" scheduled each week that we use for placement into various classes (part of a "Student" entry system to make sure they can succeed in the classes they sign up for later).  The problem we had in the past is that in order to register for one of the sessions, a user had to submit the request by email, phone, or physically come to the campus and fill out a paper registration form (add their name to the list for the day).  This worked, but human-nature reared its ugly head numerous times causing emails to get overlooked, phone messages not collected correctly, and registration forms to simply go missing.

Enter the "ETSM" template.

After playing around with the template and working up the above steps to customize it, we were finally able to get a system up and running that could not only give users the ability to register themselves, but from a single place (online).

There's still obviously some extra functionality that needs to be added in to make things work better (ability for an administrator to register someone else, for one), but over time I think the community that has taken a shine to this template will definitely figure out ways to accommodate these "wish-list" items and make the template "fully-functional".

Till next time...

- Dink

For more information on this template, how is was created [and by who], and a general view at why it does what it does, check out the series of posts by the "Microsoft SharePoint Designer" team on the MSDN blog site:

http://blogs.msdn.com/sharepointdesigner/archive/2007/03/10/training-site-template-part-1-introduction.aspx
http://blogs.msdn.com/sharepointdesigner/archive/2007/03/23/training-site-template-part-2-workflows.aspx
http://blogs.msdn.com/sharepointdesigner/archive/2008/07/04/training-site-template-part-3-custom-views-and-forms.aspx


Posted 07-24-2008 4:04 PM by dink

Comments

R03 wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 07-25-2008 11:59 AM

Excellent Post! I scoured the Internet looking for detailed descriptions about the different users for this site template (Teachers, Learners) but couldn't find any information.  This post, along with parts 1 & 2 have been extremly helpful.  Thanks!

Sara wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-07-2008 3:37 PM

Hi! Thank you for this post. I have fixed my register/un register bug that was associated with available seats not being updated. And this is all fine.. User can have read access to the course list to register/unregister. But the problem is when user has only read access to the course list - the available seats is not being updated and if they are given contribute or EDIT permissions - then the  available seats work fine.

My question is How can I simply remove EDIT Item link if the user has read access or Edit permissions by following your blog? It is a javascript link so I cant remove on the sharepoint desinger. Please help!

Sara wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-07-2008 3:55 PM

Hello,

I have another question - On this display form - we have export event - which export the course to your outlook calendar etc. Is there a way to change the text from Export event to "Move this to calendar" or something. I have been playing around and I am not having any luck with the sharepoint designer or xsl editor.

And when you are creating a new course - You type the course name and then description. When you go to description - you see this rich text editor gets enabled ( Font sizes, choose fonts change color). Is there a way to not give users capibility to see this editor just like Course Title field.

Please help!! Thank you

dink wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-07-2008 4:00 PM

Sara,

You should leave the permissions on the "Course" list as is (inheriting), or specify that the group the students belong to is set to have contribute (or the custom level I described in the post) on the list (they must have "Edit" perms in order for the available seats portion of the workflows to work).

Where are you seeing the "Edit item" link?  Is this in the list of Courses? (remember, you have to change the webpart display to be "Summary View" instead of the default in order to hide any additional views...which may contain an "Edit" column)

- Dink

Sara wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-07-2008 4:59 PM

Hello,

When I click on the course title - It goes to Display form page and where it shows for New Item , Edit Item Delete Item Manage Permissions Export event etc. You see all of this if you have proper rights But since I gave the user edit rights - they can see Edit Item on this page. How do i make summaryview on this page? When I go to edit I dont see which view options.

dink wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-07-2008 5:42 PM

Sara,

I'm not sure if there's a "direct" way to modify the text on the toolbar since it's a "SharePoint" control (probably defined in a dll somewhere).  You could probably do a javascript hack of "replace" on the page load to insert your own text (out of scope of this post, so you'd be better off searching online to find out how to code the script).

For your second question regarding the "Description" field, I'd suggest modifying the schema for the list (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\EventsList\Events\schema.xml).

Look for:

<FieldProperty Name="Description" Select="RichTextMode" />

               </Expr>

               <Case Value="FullHtml">

and change to:

<FieldProperty Name="Description" Select="RichTextMode" />

               </Expr>

               <Case Value="PLAIN">

Once saved, you'll have to do an "iisreset" to apply the changes (note - this may or may not work...I've tested it with a regular calendar and had it work fine, but for the "Training" template it didn't get applied so you may need to research more on this - this is currently the only method I know to make these type of changes).

- Dink

dink wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-07-2008 6:04 PM

Sara,

I forgot to add a part in my walkthrough that covers hiding the toolbar for the item details (where it displays the "New item", "Edit item", etc. links).

See the above edit in "Step 6".

(thank you for bringing this up)

- Dink

Sara wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-08-2008 10:39 AM

Hi Dink,

Thanks alot for helping on this. I dont want the entire toolbar to dissappear. The users wanted to see Export event ( their courses to their own calendar). Is there not a way for users with minimal rights to NOT see Edit Item link but see the Export Event?

Even I cant see the toolbar now if I want to edit a course etc... and I have full rights..

THank you so much for helping :-)

Sara wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-11-2008 3:54 PM

Hi Dink,

I was wondering if you are still there. I needed help with this if possible. Thanks alot

dink wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-11-2008 7:55 PM

Sara,

I dont think there's a straight-forward way to minimize what displays on the toolbar since it's a control (compiled at runtime) and doesn't have any direct properties you can edit (or, none that I've found)

Aside from the aforementioned possibility of "hacking" it's display properties through JavaScript, you can try the option that I chose for my users:

I created an "AllItems" view that lists out all event in the list with an "Edit" option in the events dropdown menu (standard, default column - one of the "Title" columns).

Since I'm displaying the "Courses" list in the calendar view and have the toolbar set to not display, I created a link to the "AllItems" view on another page that I have in a "Content Editor" webpart wrapped in an "<Sharepoint:SPSecurityTrimmedControl..." making it so only members of the "Owners" group can view it.

It's kind've a kludgy method of doing things, but for my users it worked out just fine (on the site's homepage, they have a link to "Administer Courses" at the bottom of the page).

Hopefully this helps,

- Dink

Diana wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 08-27-2008 2:45 AM

Hi,

I wander if you can help me. I want the registrant to be able to add feedback when the course is finished, but I want them to only be able to see the course that they have attended. Any suggestion on how to do this?

dink wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 09-09-2008 12:00 PM

Diana,

I'm *not sure if there's a way to accomplish this unless you create a separate survey for each course and have the workflow-generated follow-up email send a link to the user with the course-specific survey included in it.

Since the default "Feedback" survey uses a lookup field to get the course, there's no real way to limit which courses show up on the dropdown when choosing the course to give feedback for (the user's will always see all of them listed).

I'd suggest posing this question on the SharePointU forums to see if anyone has any other ideas.

Sorry I couldn't help more :(

- Dink

Steve wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 09-11-2008 2:09 PM

Hello,

While trying to do perfom the first task in step six it says:

While in "Edit" mode, open the toolpane for the "Courses" list (edit > Modify Shared Web Part).

Open the "XSL" editor and locate the following:

When i goto modify that webpart for "Courses" i do not have the option for the xsl editor. I have tried this on the main page as well as the list page for Courses. Am I looking in the wrong spot for this?

Also, in Step 4, number 8.

"2. Change view of "Courses" webpart to "calendar" "

I do not see a "calendar" option in the view menu. I have <current view>, All courses, Courses and <summary view>. Is there something im missing on this?

Thanks in advance,

Steve

dink wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 09-11-2008 3:43 PM

Steve,

On your first question, it sounds like you may be looking at the list itself and not just an item on the list.  Make sure and select an item on the "Courses" list first so you're viewing the item details (not the entire list).  From there you should now see the "XSL" editor.

On your second question, the default "Out of the Box" courses list includes a "Calendar" view which is available through it's associated web part.  If you're not seeing this view, first verify the list does actually have it by going into the list (click on the "Courses" link on the Quicklaunch) and seeing if it's available in the "Views" dropdown.

If you see it listed, you should be able to choose it from within the webpart.

Please post back and let me know what you find.

- Dink

Steve wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 09-12-2008 12:57 PM

Dink,

That did the trick. Thanks A lot!

Michael Cox wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 10-12-2008 9:42 AM

Has anyone tried to enable cancelling courses? Because multiple entries in Registrations have the same Course ID, you get the 'Ensure Unique Lookup' error and only the first name gets the cancellation email I'm trying to enable. I'm playing with appending new registrations to a multi-line text field in a new list and feed that field to the email addressee field in the workflow. However, I'm having difficulty getting that field to show only email addresses. It tends to show usernames too. Perhaps there is a way to restrict a people field to just the email address?

Anyone have any tips here?

New to all this,

Michael

Jon wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 10-13-2008 7:06 AM

Dink, Your tutoring in Parts I, II and III on how to get thie most out of this template has been excellent. We're 95% there with things, but I'm still struggling with the same issue Sara mentioned - the need for the Export Event functionality - which disappears when you comment out the toolbar on the Registrations page.

Worse case scenario, we just tell folks to add it themselves, but in this day and age, that's not a good solution.

Any insight or suggestions from anyone would be greatly appreciated.

Jon

Michael wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 10-27-2008 7:51 AM

Because I'm using WSS in a hosted environment, I don't have access to the master pages and layouts. However, I was able to do the following to increase security:

1. Hide Registrations and Past Registrations from the browser - every little bit helps.

2. Removed the toolbar form disform and replace it with an 'edit' button that goes to a view that only shows the courses you created; My Courses.

3. Set Toolbar Type=None on all views except My Courses and the default Calendar view.

4. Modified the workflows so when anyone other than the course creator modifies something, the admin gets an email saying who did it.

5. Removed the toolbar containing 'delete' form editform.

6. Because my site also has a mechanism for the course creator to cancel or modify a course and notify all the registerees, I also modified this workflow so anyone trying to cancel/remove a course first, unknown to themselves, modifies a low priority field. Then, I compare 'modified by' to 'created by'. If the person is not the creator, the workflow won't remove the course. Also, it sends the admin an email saying who was trying to do this while emailing that person they don't have rights to do that...even though they really do but you know what I mean.

Jimmy wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 11-07-2008 2:51 AM

Tyr Reading this:

SharePoint Calendar Tips

So, everyone knows that SharePoint has a calendar list type that is defined and ready to use, out of the box.  Hopefully you know that with Microsoft Office Outlook 2003 and 2007, you can read the SharePoint calendar from Outlook.  

And with Outlook 2007, you have full, two-way synch and offline access to SharePoint calendars, giving you a true "group calendar" functionality that can replace other tools including Microsoft Exchange public calendars.  If you're not up to speed with the things I've mentioned so far, check out the information on the Microsoft Office Online site.

What if, however, you want users to be able to add items from a SharePoint calendar directly to their calendar, without having to subscribe to the entire SharePoint calendar? Having access to a SharePoint calendar using the web interface of the SharePoint site, or using the Outlook rich client, is great, but that doesn't get items onto your smartphone or PDA.  I know that I visit sites that allow me to export events to Outlook using the iCalendar format.  How can that be done with SharePoint?

One of my colleagues asked me that recently and the answer turned out, in some situations, to be much easier than expected.  It's already built in to SharePoint!  Because I do tend to use Outlook to access my own SharePoint calendars, I'd never noticed!  If you open a calendar item in the "view item" mode, there's an Export Event button right there!  Click it,  and an .ics file opens.  Ain't that easy?

Unfortunately, SharePoint does a lousy (read: incorrect and useless) job of exporting recurring events, so it's possible to use only for non-recurring events.  But if that's what you need, that's a great start.

The other problem is that the Export Event command is buried in the single item view.  What if you want it more exposed?  You can add a field to the calendar list that allows you to show the "Export to Outlook" function as part of the list itself.  

1. Open the list Settings page.

2. Click Add Column.

3. Enter a name (I used iCAL as the column name for this example).

4. Choose a Calculated column type.

5. Enter the following formula:

="http:// sharepoint.intelliem.com/sites/test/_vti_bin/owssvr.dll?CS=109&Cmd=Display&List=ListID&CacheControl=1&ID="&ID&"&Using=event.ics"

a.The ListID is the escaped GUID of the list.  You can see the correct ListID on the address bar as you're adding the column: View image here (ct.email.officesharepointpro.com/.../cts).

Now, you can expose the calendar in a list view (rather than a calendar view) and show that column.  The column name, description, or other "hints" to the user can explain that the link creates an iCalendar file.  The next step would be to create a custom list view, using SharePoint Designer, where you use the value of the field to create a hyperlink with visible text that says something like "Export to Outlook."

Last but not least, you can roll your own solutions to provide "Export to Outlook" capabilities that can even support recurring events. You can start with this SharePoint Team Blog entry (ct.email.officesharepointpro.com/.../cts). The blog entry sets up and links to code in the Community Kit for SharePoint that exports events.

Jimmy wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 11-07-2008 2:57 AM

One important one that I'll like to know if anyone has solved the problem of when you change the date and location of a course, it does not get refereshed in the reminder that get sent to the registrants.

Any idea on how to resolve this?

Regards,

Jimmy

Jimmy wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 11-07-2008 7:01 AM

Source of item posted 7/11/2008:

Dan Holme

Office & SharePoint Pro

Community Manager

Wanda S. wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 01-08-2009 10:35 AM

in the last two days, 4 different "participants" deleted the COURSEs instead of removing their registration. (some folks just don't read instructions!)   Has anyone found a *simple* solution to this?

Darren W wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 01-20-2009 4:17 AM

Hi Dink,

Good work on this walk through this has helped us no end we are finally able to use the site properly for our internal training courses, there is one thing i would like to run past you though. i have done everything that you have laid out in your instructions but when a user who is part of the new security group i created goes into the courses calendar the New button is still visable .

did i over look something in your instructions?

David wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 01-23-2009 11:33 AM

PLEASE, why can't somebody just make a new site template available with these fixes already applied?  Perhaps some of the gurus here could start a CodePlex project to make and release improvements to the Fab40?

Eric R. wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 02-18-2009 9:58 AM

Hi Dink,

Thanks so much for these articles.  I was able to apply your fixes and provide a solution my internal clients are pretty happy with.

I did notice another bug in the "Courses I am attending", "Courses I have attended", "Courses I am teaching" and "Courses I have taught" data view web parts: the items don't sort by course start date.  Instead, I think they sort by course title.

To fix this, I opened the page in SharePoint Designer and selected the web part (you can also modify the web part and open the XSL Editor).  Look for this block of code:

<xsl:template name="dvt_1.body">

<xsl:param name="Rows"/>

<xsl:for-each select="$Rows">

<xsl:sort select="*[name() = $dvt_sortfield] | @*[name() = $dvt_sortfield] | text()[name(ancestor::*[1]) = $dvt_sortfield]" order="{$dvt_sortdir}" data-type="{$dvt_sorttype}" />

<xsl:call-template name="dvt_1.rowview"/>

</xsl:for-each>

</xsl:template>

Then change it to:

<xsl:template name="dvt_1.body">

<xsl:param name="Rows"/>

<xsl:for-each select="$Rows">

<xsl:sort select="*[name() = $dvt_sortfield] | @*[name() = $dvt_sortfield] | text()[name(ancestor::*[1]) = $dvt_sortfield]" order="{$dvt_sortdir}" data-type="{$dvt_sorttype}" />

<xsl:sort select="@EventDate" order="ascending" />

<xsl:call-template name="dvt_1.rowview"/>

</xsl:for-each>

</xsl:template>

That takes care of the sorting.  Looks like you'll have to do it for each of the 4 web parts.

pamdegraff wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 02-26-2009 7:50 AM

Whenever I create a new site w/ the training template- under Site Settings > Regional Settings (Under Site Administration)- the time zone is set to Pacific time.  Our web settings in central admin set the default time zone to EST- this only happens when using the training template.

Wondering if it is something specific to us since nobody else has mentioned it.  

Kelly wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 02-27-2009 10:13 AM

When does "registration has completed" kick in? I have a course today at 10:30 CST, but a user on the West Coast could not register at 10:00 CST for the course. Is there a way to work around that or turn it off?

Clark wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 05-29-2009 4:42 PM

Hi Dink,

I know Steve has asked this question and you answered it, but I am having trouble getting to see XSL editor on Courses web part.

You said, "Select an item on the  "Courses" list first so you're viewing the item details (not the entire list).  From there you should now see the "XSL" editor."

So, I clicked on one of the dates and then clicked on Edit-->Modify Shared Web Part, but I still do not see XSL Editor.

What am I doing wrong??

dink wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 05-29-2009 6:02 PM

Clark,

First, add a new course (click on "Add new course" and fill out some details - for this it can be just a dummy event because after making the changes to the XSL, it will apply to all new courses - you can delete the course after doing so).

Once added, you'll see it on the calendar.  Click on the course title on the calendar to be taken to its details page.

Once there, go into edit mode for the page (click "Site Actions > Edit page").  After this, click on the "Edit" link for the "Courses_1" webpart and choose "Modify shared web part".

You should now have access to its "XSL Editor".

Let me know how this works out.

- Dink

Clark wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 05-30-2009 10:04 AM

Perfect.

Thanks for your rapid & well written response!!!

Eric R. wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 06-03-2009 3:13 PM

Is anybody having any issues when a course date gets changed?  It appears that the workflows don't account for date changes. Reminders for the news course date aren't sent.

Any ideas?

Natalie wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 06-04-2009 3:32 PM

Anyone had to add additional fields to the registration screen?  I have managed to get the field added and editable, but I can't figure out how to edit the update procedure.

Brett Slaght wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 06-10-2009 9:17 AM

HI Dink,

Out of sheer laziness, I was wondering if you could export the ETST template with all of your fixed included and post it up here for us to download?  I am under a crunch to setup a training site.  

Thanks in advace...

BK wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 06-11-2009 5:29 PM

Laziness aside. I've successfully taken the steps in the first and second part of the tutorials but I can't get the third one to work.

Dink, could you PLEASE post a final version of this template?

It would be highly appreciated!

BK wrote re: Employee Training and Scheduling Template - a couple fixes Part 3
on 06-15-2009 1:14 PM

Never mind. On Part II of these walk-through's I saw Dink's comment:

"The way that SPD workflows work is that they are not attached to an individual list template, rather they get attached to a list "Instance".  Because of this, they aren't really "Portable" in the same sense that list "templates" are.  Saving a site that has SPD workflows attached as a template, will not include the workflows."

I noticed that my work flows disappeared when saving the modified ETC as a template.  x-|

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Need SharePoint Training? Attend a SharePoint Bootcamp!
Posts (c) their respective authors. Everything else (c) 2009 SharePoint Experts, Inc.