Thursday, June 30, 2005

Intranet - File Search

FM wanted me to update the file search so that it was easier to use some of the advanced search capabilities like limiting the results based on file name, file location, and modification date. It took me a few days to work out all the details ... there doesn't seem to be quite as much useful information on Index Server (IS) as there are for other MS products (though I did find enough to help me work out what I needed to do).

First I modified the form so that new fields were available for the above-mentioned limiters. The fields are in a shContent div so that they aren't always shown. When the user clicks an "advanced options" link the new fields are shown. Second, I added some conditionals to the query builder so that the new fields are processed.

For the modification date fields I included a JavaScript date picker that I scarfed from http://www.howtocreate.co.uk/jslibs. I had to make a few changes to the script to get it to work more like I wanted. I think it looks pretty good, though it could definitely use some updating. Of course, some of the updates I have in mind could break it for Nav4. Not a problem in this particular instance, but perhaps a bit of a hassle for further usage.

There's a good amount of information stored in the IS catalog (beyond the content index) that can be searched using catalog field references. With this in mind I could have provided even more options for search parameters, but I didn't feel like taking the time to investigate what was available to search and what syntax would have to be used. The changes I've made are really just for FM anyway because nobody else (as far as I know) really uses the file search.

Index server provides a couple of different ways by which to search the information in the catalog. I used a single search method to make it easier to code and use. The file name and modification date are searched via catalog field reference (e.g. @filename index.htm and @write > 2005/06/01). The path is limited using the query utility's scope function rather than searching on the path field.

The field search provides a lot of flexibility when used with wildcards. I've been having some trouble figuring out the various syntax options, but I think I'm starting to get a bit of a handle on things. Still, some of the syntax options throw me off a bit so I would need to do a bit more reading before I felt comfortable using them.

I think the search syntax would be good information to provide were I to develop some kind of help documentation. With that information the user could perform more advanced searches without me having to cook up more options. That's very low priority, though, and I don't expect to ever get something like that done. For the time being I've tried to use what I think are the most generic search parameters so that the user does not have to really know much about the search syntax in order to get useful results. No doubt I'll hear feedback if things don't really work out that way.

Wednesday, June 29, 2005

IERI Utility

KM was having a problem with some of the timecoding she had done disappearing. Luckily there was no need to panic about data loss this time. After our last major data loss I started a daily backup that maintains three months worth of database copies.

The source of the data loss was my own carelessness. When I implemented the sighting-level timecode inside the sightings summary table I copied a lot of the code from the acitivity-level process. In the activity-level process the code checks the timecoding against all activities in the sequence. If an activity does not have a numeric timecode then it is reset to null. The modified code for the sightings did the same. The problem is that when you're working on a particular activity, the sightings for the other activities are not represented. Since no timecoding was passed to the script for those other sightings it assumed they were supposed to be set to null. This is obviously not correct. I addressed the problem by limiting which sightings were reviewed to those in the current activity.

Wednesday, June 22, 2005

IE Border bug, again

Working on the Instructional Components Prototype I've run into yet another IE bug. This seems to be related to a bug I dealt with recently, but I don't know of a work-around. Then again, I didn't do as much research this time. The bug, in this particular instance, appears to occur when a block object with a border contains another block object with a negative margin set via CSS. IE appears to have trouble rendering the containing object correctly. The border appears to break and re-render.

Limited testing done with IE 6.0.2900.2180.xpsp_sp2_gdr.050301-1519

Code to produce the bug (see sample page):
<html>
<head>
<title>IE Border Bug</title>
</head>

<style>
.container {
border: 5px solid #000000;
padding: 10px;
}
.content {
margin: -5px;
}
</style>

<body>
<div class="container">
<p class="content">Questions</p>
<p>blah</p>
</div>
</body>
</html>

Friday, June 17, 2005

CCMS Web Site

Major/minor update for the CCMS Web site. Lots of text, but really not much work to do beyond the usual clean-up after bringing the text in from Word.

I did have to make a minor change to the show/hide content script. There wasn't a function to handle situations where a hash is present in the URL. Luckily I had previously worked on the neede functionality for a version of the script used in the Instructional Components application. After copying in the relevant code I only needed to make a few modifications so that it worked correctly. There are so many versions of that thing running around right now it's starting to get a little difficult to keep track. I should update all versions to a common standard. Perhaps I'll spend some time updating the common scripts used across projects while I'm working on code documentation.

With the content growing I think we'll need to consider modifications to the navigation to make the site easier to use. I don't really have a lot of time to worry about it right now, though, since I need to spend some time updating the Project 2061 Web site navigation.

2061 Connections

The May/June 2005 issue of 2061 Connections was sent out Friday 17 June, 2005, at 2:06:28 PM EST to 3855 recipients.

Monday, June 13, 2005

Server Maintenance

Doing the usual Monday morning thing I saw that IIS SMTP had some messages sitting in the queue that were a bit old. I did a little digging in the log files and saw that as with other instances it had to do with the receiving server on outgoing mail returning a 451 code. This is a pretty common spam-fighting method (one I'd probably use myself if Mercury supported it). It seems to give IIS fits, though. IIS seems to attempt the initial delivery, but retries are never done. The log file doesn't indicate that the QUIT command was sent and I wonder if that has something to do with it. Maybe IIS never realizes the connection is cut and so never retries.

I should report this to MS, but I don't know that it's really worth it. For the time being I've unchecked "Attempt direct delivery before sending to smart host" in order to avoid the problem in the future. I'll need to shut down the service, though, so I can clear out those older messages.

Thursday, June 09, 2005

IERI Utility

I'm in the process of making a few modifications to the utility. Though not terribly difficult I'm doing them quick and dirty. Since the utility is going to require a complete rewrite I don't think it'll hamper future efforts too much.
  1. Updated the text of the indicators
  2. Removed the compare-to-literal rating drop-down from the enacted and its accompanying field for explanatory text
  3. Created a function that allows the user to choose pre-defined idea text
  4. Modified the timecoding so that the user can edit the start and end times manually rather than having to load the movie and click the clock button
  5. Made it possible to timecode the sightings from the summary table on the activity page
While working on (4) I discovered that Firefox has problems interacting with the plug-in through javascript. While it can grab the current elapsed time and jump to a specific time it doesn't seem to be able to start the movie from a stopped state. I'm not going to worry about it too much at this point because when I rewrite the utility I'm going to make it a little more flexible regarding players as well as do more extensive compatibility testing.

Item (4) and (5) together have required quite a bit more work than expected. Though not terribly difficult to do from a programming perspective, my coding style has changed a great deal since I initially created the IERI utility a few years ago. I'm much better now at creating code that's a little more flexible and modular. The functionality will be ported to the new system, but I imagine the actual code will be a little bit cleaner.

I'm not sure when I'll have a chance to work on the utility update, but I hope to begin in the next month or two. A number of other items are still hanging over my head, however, before I can begin. But the real impediment is the constant stream of last-minute work.

Tuesday, June 07, 2005

Instructional Components Prototype

I've been asked to make some fairly minor modifications to the ICP. Mosly I need to modify tab colors and content borders, no big deal.

In the process of testing the changes I've run across an IE CSS rendering bug. If you have a floated element inside an object with a border the border is ... um ... corrupted. It appears ok upon first glance, but if you scroll away and back again the border is broken.

The problem seemed familiar. Had I read about this particular problem before? Not sure, but I'm pretty sure that I've read about similar bugs. A little searching turned up a post on notestips.com (Fixing the scrolling DIV display bug in IE) that discusses the bug. Supposedly IE has problems rendering layered content (which probably includes floats since they are outside the flow of a document). Essentially IE renders layers differently based on whether or not something resides below them (such as a background). To fix the border problem I just added a background color to the containing DIV.