| Comments

over the past few weeks i've been getting a few requests for if my web parts work on sharepoint 2007 (also referred to as moss).  well to be honest, time has been getting the better of me and i hadn't had a chance to test.

well tonight i fired up a windows sharepoint services 2007 instance and loaded the web parts AS IS to see what they did

after that i loaded them up.  here's the flash web part in action:


and here's the feedreader in action:


they rendered without issue for me.  there is something funkadelic in the upper left corner that i didn't bother to investigate (i'm sure a weird image reference).

as a reminder, the feedreader does not work well at all with proxy servers requiring authentication...and the recommended configuration for proxies anyway is to use the sharepoint web.config defaultProxy settings.

| Comments

the patch for windows mobile and united states daylight savings time is now available.  see the article and downloads here.

i also noticed that there was finally a daylight savings update on my OSX machine at home.  what struck me was the size.  on windows xp sp2 for example, the patch is 504KB.  on OSX the patch was 9.2MB.  wow, quite a difference...i'm curious why.

| Comments

attention windows vista team...

suggestion for SP1 -- remove the lame CTRL+ALT+DEL for machines added to a domain.  why should the logon experience be any different for a domain-joined machine?  is that a consistent user experience? why do i feel like when i CTRL+ALT+DEL that i still click on my name tile and login...essentially i'm clicking login twice i feel like.

please please please...remove that function.  i'm a developer...i understand that there may be some code that *must* be required.  but can't you just abstract that code?  why make me see the mess anymore...c'mon -- let's eat our own words on user experience and change some subtleties!

| Comments

in my first attempt i used fake targets to create server controls to wire up the animation extender, then during execution, changed the target and executed the animation.  a little kluge i thought, but it worked -- and under the cover essentially that's what happens anyway on a server control.

well today, ajax wizard and poker maven pointed me to a post where it talked about using the client libraries directly.  basically when you add an animation extender control it tells the runtime what client-side script references it will need.  so the first step is for us to do this manually.  to do this, we can take advantage of the <Scripts> element of the ScriptManager control and enter the scripts we need for our animation:

   1:  <asp:ScriptManager ID="ScriptManager1" runat="server">
   2:              <Scripts>
   3:                  <asp:ScriptReference Assembly="AjaxControlToolkit" Name="AjaxControlToolkit.Common.Common.js" />
   4:                  <asp:ScriptReference Assembly="AjaxControlToolkit" Name="AjaxControlToolkit.Compat.Timer.Timer.js" />
   5:                  <asp:ScriptReference Assembly="AjaxControlToolkit" Name="AjaxControlToolkit.Animation.Animations.js" />
   6:              </Scripts>
   7:          </asp:ScriptManager>

after we have that, we can then use the client api's directly.  here's the example:

   1:  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
   2:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
   3:  <html xmlns="http://www.w3.org/1999/xhtml">
   4:  <head runat="server">
   5:      <title>Untitled Page</title>
   6:      <script type="text/javascript">    
   7:      function fadeOut()
   8:      {
   9:          var el = $get("fadeBlock");
  10:          AjaxControlToolkit.Animation.OpacityAction.play(el, 0, 30, 0.4);
  11:      }
  12:      </script>
  13:  </head>
  14:  <body>
  15:      <form id="form1" runat="server">
  16:          <asp:ScriptManager ID="ScriptManager1" runat="server">
  17:              <Scripts>
  18:                  <asp:ScriptReference Assembly="AjaxControlToolkit" Name="AjaxControlToolkit.Common.Common.js" />
  19:                  <asp:ScriptReference Assembly="AjaxControlToolkit" Name="AjaxControlToolkit.Compat.Timer.Timer.js" />
  20:                  <asp:ScriptReference Assembly="AjaxControlToolkit" Name="AjaxControlToolkit.Animation.Animations.js" />
  21:              </Scripts>
  22:          </asp:ScriptManager>
  23:          <div>
  24:              <div id="fadeBlock" style="width:250px; height:250px; background-color:Red">
  25:                  <input type="button" value="Fade Out" id="fadeButton" onclick="fadeOut()" />
  26:              </div>
  27:          </div>
  28:      </form>
  29:  </body>
  30:  </html>

as you can see the key elements are in the javascript function:

   1:  var el = $get("fadeBlock");
   2:  AjaxControlToolkit.Animation.OpacityAction.play(el, 0, 30, 0.4);

following the model of the client apis, we can directly call them without having a server-side wire-up of a fake control.  this will help with using microsoft ajax on non-microsoft platforms.  i do wish, however, that it could be simplified.  i suppose you could wrap the functions in a more simplified form into your own client side namespace.  let's say a company like, oh, i don't know wanted to do this, then they could essentially have the above line in something like:

Woodingo.Fade("fadeBlock", 0.4);

that would likely be much more appealing to developers.

| Comments

a while back i posted a gadget i wrote to demonstrate writing vista sidebar gadgets.  this was my msdn search gadget.

well, i am giddy that nikhil decided to use that model to improve it and leverage script#, which is something i'm deeply interested in.  check out nikhil's much improved msdn search gadget...installed.  it demonstrates some really cool features and brings script# as a model to develop sidebar gadgets...very very cool.