Archive for July 11, 2006

Moodle as CMS

After much deliberation, I have committed to Moodle as the foundation of our new intranet web site. Drupal was too oriented toward the whole community. Elgg was too oriented to the individual. Especially with the v1.6 release, Moodle offers a balanced mix of tools oriented toward the individual, groups of varying kinds, and the whole community.

Today, I experimented with two critical CMS features. The first was to use Moodle as a simple CMS (content management system) to maintain static content. I migrated two pages from other locations on our intranet: a page of teacher tools and a Spanish II class web site. So far, direct editing of a block and posting new “web page” resource links seem to do the trick. It’s not as flexible as a wiki, but it works for most content, and the wiki activity module is always there should it be required.

The second experiment was to integrate Gallery into Moodle. This is important for the many photo collections people have posted to the main Catlin web site. The experiment went brilliantly. Most users won’t even need to visit Gallery directly, as all Gallery functionality is now present within Moodle. One key lesson was that the Moodle Gallery plugin works with Gallery version 2.0.4, not the latest 2.1.

Moodle Gallery

Those of you playing at home, you will find the new site at inside.catlin.edu

Active Directory Management From Your Desktop

I found out today how to manage Active Directory users and groups directly from my pc. After four years of terminaling into servers to access Active Directory, this helps consolidate administrative applications on my computer. It’s also a plus that I am running Windows under Parallels. This is a tech note that our former employee Jonathan wrote up.

Installing “Active Directory Users and Computers” Module with Exchange Features on Windows XP SP2 Workstations, using Exchange 2003

In Windows XP SP2, the SMTP snap-in is installed with the IIS snap-in. The SMTP Service is a separate component that is not required. The WWW Publishing Service is also not required. The Windows Server 2003 Administration Tools Pack is still required, because it provides the NNTP snap-in and the Active Directory Users and Computers snap-in.

1. Verify that you are using Windows XP SP2

2. Install IIS Snap-In (Add/Remove Programs – Windows Components)
a. Select “Internet Information Services (IIS)” and click the “Details” button [requires Windows XP CD]
b. The “SMTP Service” and “World Wide Web Service” can be unchecked

3. In Services, disable SMTP and WWW services, if applicable

4. Install Windows Server 2003 Administration Tools Pack [We had this on our network. It's probably on the Server 2003 install CD.]

5. Install Exchange System Management Tools:
a. Insert the Exchange Server 2003 CD—When the installation splash screen comes up, click on Exchange Deployment Tools under the Deployment section
b. On the Welcome to the Exchange Server Deployment Tools screen, click Install Exchange System Management Tools Only
c. The following screen explains some of the prerequisites for installation… scroll to the bottom of the screen and click “Run Setup now”
d. In the Exchange installation “Component Selection” screen change the Action for the “Microsoft Exchange” heading to Install or Custom
e. Change the Action for “Microsoft Exchange System Management Tools” to Install
f. Complete installation

User and group management tabs
AD management

Oh, How I Love Moodle!

I don’t talk as much about any one web tool more than Moodle. I upgraded Catlin’s version to 1.6 today and loved both the install process and the new features. The only hangup was that the installer could not find the installation at [host]/moodle until I moved the site to moodle.[host]. The rest went swimmingly.

Block flexibility is easier than I remember. You can just about any kind of information to a new block in the right-hand column. This is especially exciting for the blog and rss features. For instance, new blog content from your class or club could automatically appear there.

LDAP authentication was easy and highly configurable. Users log in with their userids but are identified by their real names, lending additional humanity to the site.

In the last few days, I thought I was going to install some combination of Elgg, Drupal and Moodle as the foundation for Catlin’s new internal web site. Now, I feel like I can accomplish everything I need to start the year with Moodle alone. It’s flexible enough to provide a collaborative communication space for different groups of people within the school, such as classes, clubs, and people with other common interests.

Teachers can choose what type of web space they want, from simple web site with one editable content block to a rich online home with all major appliances. I like to cite three examples of extremely different Moodle sites created by teachers at my previous school: one science teacher posted scanned solutions to physics problems, another had students write a common position statement using the wiki module, and a third posted PDF resources for a health class by topic.

Version 1.6 appears to allow users to request a new course, which could be very handy, but I couldn’t find that feature when logged in as a student. Does anyone know where it is? This is a useful piece, because I can’t make a new teacher into a course instructor until he/she has logged into Moodle once and the local user account has been generated.

I browsed the Moodle modules today (lots of quality there). Here is the list of my initial thoughts of what modules to install.

Activity Module: Gallery
The Gallery module allows for the embedded use of Gallery2. For each Gallery instance in Moodle, a Gallery2 album is created. The two are linked automatically and when one enters a Gallery instance, it will appear as if that user has a blank album to upload pictures, create new sub-albums, add comments, etc.
(strange that this is not also available as a block)

Block: Elgg integration block
provides SSO with elgg and a means to transfer submissions to online assignments from moodle to an eportfolio system, namely elgg.

Activity Module: iPodcast
A podcasting module for Moodle that allows for full iTunes integration. Have your teachers create podcasts quickly and easily from the Moodle interface and have it available to students/listeners all round the world.
(I would rather publish podcasts directly from Moodle — I wonder whether it works automatically if you attach an audio file to a blog post?)

Authentication Method: NTLM Authentication Plugin
The plugin enables single sign-on and uses a modifed version of the LDAP module to allow users inside your network to use NTLM-LDAP, and users outside your network to use normal Moodle form-LDAP
(a possible alternative or companion to LDAP)

Block: Portfolio block
This pluggable portfolio module tracks artifact titles, keywords, tags (“concept areas”), and student reflections, and presents the user with a menu and search-box driven interface to list portfolio items to which the current user has “read access”; items are viewable in simple boxes that present the title, owning user, content, reflections, origin, and date together. Two plugins have been written, so that artifacts may be submitted through the repository module or through submitted assignments.
(I would love to test the difference between this and Elgg portfolios)

Algebra filter
This filter will convert Algebra code into nice GIF images. It requires the tex filter to be installed.

Now I just have to work more on my template modifications.

Javascript: swap images of different sizes

I found a clever solution to a common problem today. If you use javascript to swap one image for another, usually the two images are the same size. However, what if you need to load an image of a different size? It will lose proportions, because javascript can’t detect the dimensions of an image it hasn’t loaded yet. I found today a neat solution: preload the image without displaying it. Then javascript will be able to take its dimensions.

modelshot = new Image()
modelshot.src = "/images/600/EBH9022_MOD.jpg"
hatshot = new Image()
hatshot.src = "/images/600/EBH9022.jpg"

function swapImage(img_name){
if (document[img_name].src.search(/_MOD/) == -1) {
document[img_name].src = '/images/600/' + [img_name] + '_MOD.jpg';
document[img_name].width = modelshot.width;
document[img_name].height = modelshot.height;
} else {
document[img_name].src = '/images/600/' + [img_name] + '.jpg';
document[img_name].width = hatshot.width;
document[img_name].height = hatshot.height;
}
}

example

Happiness Is a Warm Web Server

There’s a new web server in my life. My colleague Andrew set me up on the school’s Fedora web server today, and I first installed phpMyAdmin and Drupal. I have also finally made the jump to Linux web servers. I never had a serious problem with web apps on Windows, but it should make the installation of Koha and some cms plug-ins a little easier.

Coppermine Update and Login Mod

coppermine

Ironically, the web application that took the IIS6 upgrade the hardest was Coppermine, our photo gallery software. First off, it was the only application that required updating, because it used the outdated $GET_VARS instead of the newer $_GET. As a result, the old script was not seeing any parameters sent to the script and repeatedly reported “album not found” errors.

After the update, I had to re-implement my login scheme modification, which I always do when installing a new piece of software. This time, the new code was different enough from the old that my old hack didn’t work the first time. I had to play around with the code for a while to get it to full initiate a new session using the HTTP_DAFLOGIN environment variable instead of the conventional login form. Everything appears to work fine now.

For the record, modifications were required in only two files:

/login.php: Commented out lines 36 and 71 in order to skip over the login form.

/bridge/coppermine.inc.php: This is the default login module. You can also tie Coppermine to other user databases. I made substantial changes to function login so that the script would automatically pick up the username from the environment variable and create the account if none exists. The rest runs fine now.

Inserted at line 28:
// kassissieh -- get user name from DAF environment variable
$daflogin = strtolower($_SERVER['HTTP_DAFLOGIN']);
if (strstr($daflogin, "\\")) {
list($env_domain, $env_user) = explode("\\\\", $daflogin);
$user_email = "$env_user@sfuhs.org";
} elseif (strstr($daflogin, "@")) {
$env_user = $daflogin;
$user_email = $env_user;
} else {
$env_user = $daflogin;
$user_email = "$env_user@sfuhs.org";
}
$username = $env_user;
$password = '-';

Inserted at line 138 (before // If exists update lastvisit value, session, and login)
// kassissieh -- auto-create user if it doesn't exist
if (!mysql_num_rows($results)) {
$sql = "INSERT INTO {$this->usertable} (user_regdate, user_active, user_name, user_password, user_email, user_group) VALUES (NOW(), 'YES', '" . addslashes($username) . "', '-', '" . addslashes($user_email) . "', '2')";
$result = cpg_db_query($sql);
// get user id from newly created record
$sql = "SELECT user_id, user_name, user_password FROM {$this->usertable} WHERE ";
$sql .= "user_name = '$username' AND BINARY user_password = '$encpassword' AND user_active = 'YES'";
$result = cpg_db_query($sql);
}

I still don’t know what photo gallery software we are going to run at Catlin Gabel. There are so many choices. We may not have a standalone gallery at all but rather integrate photos completely within the different content management systems we use — Drupal, Moodle, and perhaps Elgg.

FileMan — Web Access to Home Directories

FileMan is an ASP script that provides users web browser access to home directories. This is essential to provide complete off-campus access to the network environment without installing a terminal server or VPN. FileMan is unique in that it picks up the web site login information, uses it to find the user’s home directory from his/her profile, and then restricts the user to the permissions set on the network.

Some tips I had to recall in reinstalling this package:

  • The interaction with DAF is important. Last time (IIS5), DAF set the AUTH_USER environment variable, so FileMan was able to find the user’s home directory when he/she logged in through DAF. As of IIS6, DAF has removed this feature. As a result, I set up a new web site with a different domain name (docs.sfuhs.org) using Basic Authentication instead of DAF. This is good practice anyway, as it requires a second login to access files. If a user forgets to log out of a standard web page on the site, then at least his/her files do not remain exposed!

  • I set the new web site to authorize users on the default domain SFUHS and set FileMan to use SFUHS as the default for NT permissions. This way, users don’t have to specify the domain when they log in, which is handy.

    In IIS -> [web site] -> Properties -> Directory Security -> Authentication and Access Control –> Default Domain

    In Fileman/global.asa: Application(“Domain”)=”SFUHS”

FileMan

Remove Acrobat Toolbar From Mac Office 2004

Updated 2/26/2008

It appears that Acrobat CS3 gives you a choice of whether or not to install the toolbar. Hooray! So the best solution appears to be upgrade … ugh.

pdf toolbar

Updated 6/20/2007, original post below

Here are two methods to remove the Acrobat toolbar from Mac Office applications. These suggestions work better than my original tip!

Tom wrote:

1. Find your Adobe Acrobat app inside your Applications folder

2. Right click on the application and choose show package contents

3. Go to Contents/MacOS/SelfHealFiles/PDFMaker/

4. Drag the APP_Office folder somewhere (like your desktop)

5. Eh presto. No more annoyingness.

Tony Hodgson wrote:

Thanks for your original hint, but I found that by just moving the three files to the ..Office/Add-Ins folder I can control whether I want the PDFMaker tool bar visible or not through the Tools/Add-Ins menu item in each of the three Office applications.

Original Post

Thanks to MacOSXHints.com, I successfully removed the pesky Acrobat toolbar from Office for Mac. However, I had to amalgamate pieces of advice from different sources.

After installing Adobe Acrobat 6.0 Professional, it automatically placed an Acrobat PDF toolbar within Word and Excel. This toolbar would be placed on its own, which became an eyesore. Trying to close out of it, or going to Views -> Toolbars -> Delete would only remove it until the program next started.

There is a fix for this, thankfully. Go to: Applications/Microsoft Office X/Office/Startup. Within that folder, go into Excel and remove PDFMaker.xla. Back up one level, then go into the Word folder and remove PDFMaker.dot. Problem solved.

PDFMaker templates

I had to take one additional step. This piece of advice suggested that Acrobat would ask before reinstalling the Office toolbar. My experience (perhaps due to the newer version) was that Acrobat reinstalled the toolbar template without asking. I was able to block this by creating my own, blank template files of the same name (PDFMaker.dot, PDFMaker.xla, PDFMaker.ppa), saving them to the correct locations, and then locking them!. This has worked for one day now. I’ll write again if it fails in the future.

How pesky of Adobe to insist that their toolbar must exist in your Office!

Another update: If you run Adobe Acrobat Professional with this trick enabled, Acrobat will ask you to authenticate when launching and quit if you don’t authenticate! Of course, it wants to restore the template files. So, I keep a copy of my blank template files and recopy them into their locations when I use Acrobat. If you use Acrobat daily, I don’t know of a better fix.

Parallels — As Easy As Everyone Says

The mouse responsiveness is a little pokey — like running terminal services over a fast network. It is very convenient for running MS-only apps when needed.

Update July 17: I just discovered Parallels Tools. Install it from the VM menu. It resolves all of the interface issues I had with Parallels — improve mouse movement, shared folder between OS’s, and seamless mouse enter/exit from the VM screen.

Localizing Blackbaud Expertise

Catlin Gabel is trying something new this year: localizing Blackbaud expertise within the departments that use it the most. One new hire and one internal transfer significantly increased our institutional knowledge of Blackbaud in the development and registrar offices.

Most schools debate the best way to support the administrative database needs of the school. At my previous school, our database administrator worked in the tech department. She wrote custom reports for users with specific needs, managed user accounts and database privileges, and performed annual database tasks such as promoting students during the summer and calculating GPAs. She also championed data entry standards across departments. She is a back-end expert. The best source of information for data entry questions remained Blackbaud itself.

Catlin is taking the opposite approach, cultivating local experts within each department. They have (or will build) knowledge of both user interface issues and back-end technologies such as queries and reports. Big unanswered questions remain. Will these local experts be able to solve most of their own issues in the future? Will they be as friendly to cross-department data entry standards without a tech department expert to champion standards? Will two advanced users have the time to assist the other Blackbaud users in the department? Will generalists in the tech department (such as me) build enough additional knowledge to maintain the server-side technologies and solve the most difficult technical issues? We shall see.