I was asked to make a permanent URL for Humanities Week (2019). Although the request was too close to the event for this year, they did setup a permanent URL that redirects uvic.ca/humanitiesweek to hcmc.uvic.ca/humanitiesweek. This redirect is forever.
Category: "Activity log"
At AS's request, updated the People page on the Hums site to account for changes in personnel in the Dean's office.
Determined after a couple of hours of testing that a posting in the uvic events calendar contains the control character 0016 (synchronous idle). The constructor for the RSSReader in the hums site reads that in to a string and then attempts to parse the string into an XML structure. The parsing fails so the php process fails so the user sees an empty white page.
I added a line of code to the constructor which strips out all control characters (except carriage return and line feed) after the string is read in, but before it is parsed into XML. That seems to have solved the problem.
I wrote to Dave Wolowicz and suggested that the Rss output from the events calendar should be stripped of control characters that XML doesn't support before being shipped out to the client.
The current English department site is dependent on a content management system. The people in the department I've talked with find the system brittle and fragile, so are unwilling to make substantial modifications as they fear bringing the entire department site down. I haven't used the system myself.
They want a new section in their site dedicated to featuring specific course offerings. They are not confident they can add this to their current site. They have decided to create a word-press instance within their current account to accommodate the "featured courses" stuff while they are building their new cascade site.
So we temporarily have an unconventional situation of a proprietary website infrastructure which has a word-press instance stuffed into a folder in the middle of the site.
I made a backup of the site as it existed before adding the WP folder, just for safekeeping. I assisted MH (post-doc) in getting the WP instance set up and configured. In a couple of weeks of use, there have been no collisions or corruptions of the proprietary CMS or the WP instance, so it looks like this setup will survive until replaced by the Cascade site.
Met with the dean to go over content features he wants explicitly covered in each department site:
- value of humanities/field of study
- career possibilities
- 'how to apply' as clear and simple as possible
- community outreach/public events
Individual departments may include these features and access to them as they wish (navigational structure, feature buttons, tertiary).
These expectations are in addition to the standard ones of providing information primarily to students (potential and current), secondarily to others.
Treatment of required content (courses, programs, faculty, research areas, resources, etc.) is up to department, but expects to see either Grad Student / Undergrad Student or Future Student / Current Student as primaries with appropriate subprimaries (i.e. current/future or grad/undergrad respectively) below that.
KB of English has been designated the contact person for the migration of their website to Cascade. Current site is in a unique situation (documented in separate post).
Met with KB a couple of times to go over expectations and workflow. He used Economics as a model site. On my suggestion he also looked at other Humanities sites for possible treatments and to ensure he included in the design features the dean of humanities wants explicitly covered:
- value of humanities/field of study
- career possibilities
- 'how to apply' as clear and simple as possible
- community outreach/public events
He's submitted a spreadsheet which Judy and I reworked (added some subprimaries to make some of the secondary lists shorter, and more consistent with other humanities departments). KB looked the revised spreadsheet over and is now formally reviewing it with the English dept committee.
After discussion with Martin on managing requests to maintain current hispital site and on Judy on the status of the new Cascade site, met with Judy and DR to work out a plan. DR will limit requests to upgrade current site to minimum. Judy will copy and paste content from existing site into Cascade structure (which we've already built), for Dan to edit, and will note where content is missing or duplicated. DR will then provide missing content and resolve duplications (as needed). Judy and DR to sort out exactly who will do what kind of edits.
Judy migrated the biggest section (undergraduate) for DR to review while Judy is away the last two weeks of the calendar year.
I helped her with rewriting some of the relative links (some of which were relative to pwd and some of which were relative to root of site - neither of which of course were any good in the new environment). Also had to rewrite relative links to old exams, exercises etc. as absolute links as the new site will not be on the save server as the collection of exams, exercises, etc.
Reorganized the items and subitems (renaming, shuffling of order) in the nav system on the dept site. Notoriously tricky to do because of the interactions between the css for the shields and the javascript array that contains the information used to generate the cells containing the shields.
Whole thing is brittle: the last main item must not contain any subitems or the whole thing fails. If you add a seventh shield to the home page, it's almost impossible to get the right-most one to not be cropped.
Also there is a duplicate js structure for the navigation for all other pages on the site, so had to modify that.
Finally, for those subitems I put in new main menus, I had to edit the link to the image in the html for those pages.
University has a new online setup for accepting donations to specific depts, projects:
user has to:
go to https://extrweb.uvic.ca/page.aspx?pid=466
click on Other in the Designation field
enter the name of the dept, project, scholarship in the text box that appears.
complete form
Implemented this on the medi site.
The page http://web.uvic.ca/calendar2012/CDs/ENGL/CTs.html declares itself as html 4.01 transitional and is not well-formed XML. I opened it as a plain XML file in Oxygen:
- bunch of self-closing elements which don't have a close tag or "/>",
- bunch of upper-case element and attribute names
- couple of missing li elements to contain nested lists.
So, we'd have to do maybe a dozen regexp string manipulations to take the raw file and turn it into well-formed XML source, but those same regexps could probably be used to create output XML instead.
The page http://web.uvic.ca/calendar2012/CDs/ENGL/101.html also declares itself as html 4.01 transitional and is even further from well-formed XML. We need only a pretty small and simple snippet from the page which, so again we'd probably have to take that in as text. The regexps to turn it into a usable XML source would be more, and more complex, than the regexps to create the desired output XML
The page https://www.uvic.ca/BAN2P/bwckctlg.p_disp_listcrse?term_in=201301&subj_in=ENGL&crse_in=101&schd_in= also declares itself as html 4.01 transitional. It's a long way from XML, too, so again I figure we'll likely be treating this as text rather than an xml structure.
Pattern is pretty clear. Right now, it looks like we should take in the files as text rather then xml, and run regexps to generate the output XML we want. I don't think it's viable to take in the calendar files as XML, and I don't see sufficient value in taking the raw html as text and using regexps to render an XML (or XHTML) version of the input structure and then doing XSLT on that XML to generate the output XML
It looks like the English dept widget is doing something like what our code for the Philosophy site does, only more ambitious. Namely, they {
- go to http://web.uvic.ca/calendar/CDs/DEPT/CTs.html where DEPT is the four letter department code, e.g. ENGL
- create a list of all the courses offered from that page
- for each item in that list (where XXX is the course number, e.g. 101) {
- - go to http://web.uvic.ca/calendar/CDs/DEPT/XXX.html
- - get the course description, credit units and hours
- - ask banner for offerings in each of summer, where YYYYMM is the year and month of the start of the term, e.g. 201205, 201209, 201301)
https://usource.uvic.ca/pls/BAN1P/bwckctlg.p_disp_listcrse?term_in=YYYYMM&subj_in=DEPT&crse_in=XXX&schd_in=%
- - for each offering {
- - - get CRN, section, instructor, time and place of offering
}
}
}
I don't know if they're doing a bunch of regexp string processing or some actual XML parsing. The stuff they're working from is pretty ugly, but it is machine generated, so presumably consistent for parsing.
Here's a snippet from the file http://web.uvic.ca/calendar/CDs/ENGL/CTs.html showing the entry for ENGL 101 which would be used to add an item for 101 to the list of courses offered by the department:
<h3 class='cdListLevel'>100-level courses
<a name="1L" href="CDs/ENGL/CTs.html#pageTop">
<img src='pix/toTop.gif' title='go to top' width='26' height='20' border='0' />
</a>
</h3>
<ul class='CDTL'>
<li>
<a href="CDs/ENGL/101.html">
101 Fundamentals of Academic Literacy
</a>
</li>
...
</ul>
And here's a snippet from the file http://web.uvic.ca/calendar2012/CDs/ENGL/101.html that would be used to get the course description, title, units and hours for ENGL 101 (the units and hours would have to be done by string rather than node processing):
<!-- SCD -->
<div id="CDpage">
<h1>ENGL 101</h1>
<h2>Fundamentals of Academic Literacy</h2>
<h3>Units: 1.5, Hours: 3-0</h3>
<p>Introduction to the reading and writing skills needed to meet the expectations of university-level academic study. Emphasis is on building proficiency in academic reading and writing through extensive practice. Suitable for students who need to strengthen their reading and writing skills before attempting a course that meets the Academic Writing Requirement.</p>
<p><b>Notes: - </b>Restricted to students who have not satisfied the Academic Writing Requirement.</p><p>- This course does not satisfy the Academic Writing Requirement.</p>
...
</div>
There are two snippets used to get the details of the course offering. First, the snippet from the file https://www.uvic.ca/BAN2P/bwckctlg.p_disp_listcrse?term_in=201209&subj_in=ENGL&crse_in=101&schd_in= that would be used to provide all the details of the course offering except the number of seats available:
<TABLE CLASS="datadisplaytable" SUMMARY="This table lists the scheduled meeting times and assigned instructors for this class.."><CAPTION class="captiontext">Scheduled Meeting Times</CAPTION>
<TR>
<TH CLASS="ddheader" scope="col" >Type</TH>
<TH CLASS="ddheader" scope="col" >Time</TH>
<TH CLASS="ddheader" scope="col" >Days</TH>
<TH CLASS="ddheader" scope="col" >Where</TH>
<TH CLASS="ddheader" scope="col" >Date Range</TH>
<TH CLASS="ddheader" scope="col" >Schedule Type</TH>
<TH CLASS="ddheader" scope="col" >Instructors</TH>
</TR>
<TR>
<TD CLASS="dddefault">Every Week</TD>
<TD CLASS="dddefault">10:30 am - 11:20 am</TD>
<TD CLASS="dddefault">TWF</TD>
<TD CLASS="dddefault">Clearihue Building D134</TD>
<TD CLASS="dddefault">Sep 05, 2012 - Dec 03, 2012</TD>
<TD CLASS="dddefault">Lecture</TD>
<TD CLASS="dddefault">Brock C. MacLeod (<ABBR title= "Primary">P</ABBR>)<A HREF="mailto:brock1@uvic.ca" target="Brock C. MacLeod" ><IMG SRC="/assets/self-service/admissions/icons/notcheck.gif" ALIGN="middle" ALT="E-mail" TITLE="E-mail" NAME="web_email" HSPACE=0 VSPACE=0 BORDER=0 HEIGHT=28 WIDTH=28></A></TD>
</TR>
</TABLE>
And here's a snippet from https://www.uvic.ca/BAN2P/bwckschd.p_disp_detail_sched?term_in=YYYYMM&crn_in=NNNNN (where NNNNN is obtained from the course offering query above) from which you'd obtain the number of seats available (and/or the length of the waitlist):
<TABLE CLASS="datadisplaytable" SUMMARY="This layout table is used to present the seating numbers." width = "100%"><CAPTION class="captiontext">Registration Availability</CAPTION>
<TR>
<TD CLASS="dddead"> </TD>
<TH CLASS="ddheader" scope="col" ><SPAN class=fieldlabeltext>Capacity</SPAN></TH>
<TH CLASS="ddheader" scope="col" ><SPAN class=fieldlabeltext>Actual</SPAN></TH>
<TH CLASS="ddheader" scope="col" ><SPAN class=fieldlabeltext>Remaining</SPAN></TH>
<TR>
<TH CLASS="ddlabel" scope="row" ><SPAN class=fieldlabeltext>Seats</SPAN></TH>
<TD CLASS="dddefault">24</TD>
<TD CLASS="dddefault">23</TD>
<TD CLASS="dddefault">1</TD>
</TR>
<TR>
<TH CLASS="ddlabel" scope="row" ><SPAN class=fieldlabeltext>Waitlist Seats</SPAN></TH>
<TD CLASS="dddefault">100</TD>
<TD CLASS="dddefault">4</TD>
<TD CLASS="dddefault">96</TD>
</TR>
</TABLE>
And here is a snippet of the XML from the English widget, with lots of whitespace and comments added by me:
<terms>
<term
/*
id value is a conventionalized date, name value is concocted based on value in id
*/
id="201301"
name="Second Term: Jan - Apr 2013"
>
<level
/*
value of both fields is concocted by code - nothing to do with calendar or banner
*/
level="100"
title="First Year Undergraduate"
>
<course
/*
value for each of these fields is scraped from web.uvic.ca/calendar/CDs/DEPT/XXX.html . The value for XXX is scraped from http://web.uvic.ca/calendar/CDs/DEPT/CTs.html */
hours="3-0"
number="101"
title="Fundamentals of Academic Literacy"
units="1.5"
>
<section
/*
value for each of these fields is scraped from https://www.uvic.ca/BAN2P/bwckctlg.p_disp_listcrse?term_in=YYYYMM&subj_in=DEPT&crse_in=XXX&schd_in=% except for open, which is obtained by scraping https://www.uvic.ca/BAN2P/bwckschd.p_disp_detail_sched?term_in=YYYYMM&crn_in=NNNNN where NNNNN is the crn value obtained in the query just above.
*/
crn="20878"
dates="Jan 03, 2013 - Apr 05, 2013"
days="MR"
facultypage="suzan_j_last.html"
instructor="Suzan J. Last"
number="A01"
open="0" /* not sure where they're getting this value from */
time="1:00 pm - 2:20 pm"
where="Clearihue D130"
/>
...
</course>
...
</level>
...
</term>
...
</terms>
With advice from BLT on what was intended, I've fixed the secondaryNavbar.php code in the student subfolder. I think the style of the section headers could be revisited, and customized, so they don't look selected, but the page is valid and everything works.
The previous bugs in aboutus/secondaryNavbar.php had re-introduced themselves, so I fixed them again. Then I realized that another secondaryNavbar.php page in the studehnt subfolder has similar bugs, so I started looking at it. The left-side menu looks like it was supposed to be designed to expand and contract, so initially you would see only:
For all students For undergraduates For graduates
then when you clicked on one of those, it would expand and show the contents below it. But it doesn't work like that; all the contents are expanded all the time.
The code looks as though it was once written to expand and contract, but it's completely broken; it has <li> elements embedded directly inside <li> elements, multiple class attributes on the same element, and all sorts of confusion. I don't yet know how to go about fixing it, because I don't know what it originally looked like. I found an old backup of Stewart's, but it's structured completely differently; instead of secondaryNavbar.php, it uses section_left_nav.inc, which looks somewhat similar, but was only ever intended to be static. I'm waiting for some feedback from BLT, in case he can remember what the original intention was, and when the changes were made.
I've now implemented the plans described in this previous post, as follows:
- The
rssReaderManyDepts.php
file has been modified in a couple of places, to add an optional parameter (default value "true") called$includeDesc
, which is used to control whether or not the Description field is included when the full event detail is written out. This doesn't change any other behaviour elsewhere on the site, but enables me to suppress the description information when I need to. - A new page (aboutus/eventsWeek.php) has been created. This instantiates a special instance of the
rssReader
class, which is set to retrieve events for only 8 days. This class then writes out the events twice, once in short form (for copy-pasting into the email) and once in long form (so that the speaker information can be retrieved and copy-pasted into the email too, where appropriate). - The new page does not include the normal right-column listings, because its special version of the RSS reader wouldn't be able to provide them, since it's only retrieving 8 days of material. However, this is not a page intended for the public anyway, so it doesn't really matter whether it's complete or not.
- This special reader uses its own cache file, so as not to step on the toes of the other two instances of readers used on the site.
I've emailed BLT to let him know about the new page.
Preparing to write the new Events feed page requested by BLT, I first set about fixing a bunch of errors in the existing code:
- The RSS reader class (
includes/rssReaderManyDepts.php
) functionwriteOutTitle()
did not echo open<li>
and close</li>
tags around its content, although it is called in the context of a<ul>
tag. Added the appropriate tags, and also commented out<br/>
tags which were being used to space the content. - The RSS reader class (
includes/rssReaderManyDepts.php
) functionwriteOutEvent()
echoed out two<br/>
s and an<hr/>
after closing the<li>
tag; this obviously was invalid, so I've moved them inside the<li>
tag. <includes/rightColumn.inc>
had two elements with the same id attribute (rightCol_1
). I changed the second torightCol_1a
.<includes/rightColumn.inc>
had an unclosed<ul>
(inrightCol_2
). That's now closed.
Pages now validate, so I can move on to the new events output page.
Details of a request from BLT to an enhancement to the RSS feed reader on the Humanities faculty site:
- We need to create a page which shows only one week's events.
- This should be done by added a custom output format to the current RSS feed reader code. There are already two or three output routines; this would just be another, for this specific purpose.
- The output from this routine would provide two lists of the events for the coming week:
- The first should be identical to the current output, except that it should not include the description field. BLT will copy-paste this into an email he sends out to the faculty.
- The second would be the same, except that it would include the description field; this would enable BLT to extract the speaker information from it manually (there is no speaker field in the events calendar, so this always has to be extracted manually).
- A page showing this output will be added to the Hums site, but not linked from anywhere. The URL will be known to BLT, who will use it to generate his weekly emails. It wouldn't matter if anyone else stumbled upon this page, because it's just another list of events from the calendar.
- While writing this, we should also take the opportunity to fix a bug in the current output from the reader, as it appears in all pages -- see this validator output. The bug is caused by the use of a
<ul>
element with children which are<p>
s instead of<li>
s.
I'll get to work on this in the week of the 18th.
BT contacted me asking about a feature of the Hums site which SA had proposed and possibly implemented that would provide a short-form view of the events calendar events, suitable for copy/pasting into a weekly email. I poked around on the site, and I found that the RSS reader object is based on some code I adapted years ago for the GRS site, so I've seen it before, but it's been modified considerably to handle the multiple calendar sources. The reader has a "shortForm" parameter that causes it to spit out the events in a shorter form. That can't be set externally, unfortunately -- it's private and there's no setter function -- so as a quick workaround I created a new page called eventsSimple.php which re-creates the reader with the shortForm parameter set to true in the constructor.
The resulting output for each event consists only of a date and a title, which is linked to something that doesn't work. Obviously we'll have to tweak it, so I'm waiting for details from BT about what he'd like to see in the list, and then I'll make some modifications to the reader to make the short form output more useful, testing everything in the :8080 first.
I'm beginning to work out the structure for the tables in the database for the Victorian Poetry database.
The primary unit in this database appears to be a published-poem.
Each published-poem has a relationship to a poem and to a periodical. Each poem has a relationship to an author.
There are some questions that I need MT to answer before I can continue.
1) Will there be any instances of a poem having more than one author?
2) Do we distinguish between a poem with no author and poem whose author is anonymous?
3) Do we have one anonymous author associated with all unattributed to poems, or do some unattributed poems get associated with one "anonymous" and other unattributed poems get associated with another "anonymous" (for example, if you have a collection of poems you know to be written by one unknown person and wish to distinguish that author from another unknown person who wrote another poem)
4) We've noted that authorship can be declared or can be inferred by the scholar, are there any other ways authorship is attributed? (We'll need to include a "authorship_determined_by" field to contain that information.)
5) We need to tighten up conventions on what information we capture about each person's name (and possible title or other identifiers) and how each of those is to be represented in the spreadsheet. The most common presentation of author name is Surname, FirstName, but a number of entries don't conform, for example these from DarkBlue.xls:
Ca(d)(l)verley, C.S.
see title
R.G.
Professor Sylvester
the late John Lyall
Leary (D.C.L.), T.H.L.
And these from DublinU:
M
M?
'Filia'
The London Hermit
Rev. Dr. MacMoreland
And these from PoetryIndex_1.docx
Edward Oxenford
We discussed having an "author-as-found" field and an "author-normalized" field.
6) Do we separate author surnames from given names e.g. for purposes of searching?
7) We also need to tighten up conventions on what information we capture about each published poem's title and how each of those is to be represented in the spreadsheet. Some of the "titles" appear to be titles, others appear to be the first line of the poem. Do we want to distinguish between those?
8) These are instances of titles that appear to contain more than just the title. Do we need to do anything with these other than reproduce the characters as found?
Tragedy (trans. from the German by Franz Huffer)
The Story of Europa (Hor. Od. III. Xxvii. 25.)
'Amour qui Sourit Caché'
One untitled poem opens and two close the author’s essay “Sketches of Travel in Germany”
9) This example of a title in DarkBlue appears to refer to a collection of poems.
Garden Poems (I.—The Garden, II.—Visions, III.—The Bird ...)
This example from DublinU also appears to refer to a collection, but is treated differently:
I [Happiest of happy feelings ‘tis to feel]
II [If gold could give us peace]
We have no structure right now for handling collections of poems. Should we? That is, do we want to treat an entire collection as one poem (what about collections whose poems are written by different authors) or do you want to treat each poem in a collection as a separate poem and then add a "collections" table and some way of relating each of the poems to the collection?
10)
In the poetryindex_1 file, a typical entry begins like this:
[January 1886]
No. 1, 129
(7)
Whereas, in DarkBlue the issue/page field looks like this:
1 (March 1871): 35
What does each piece of information in both types of entry identify? We'll need to normalize that.
Philosophy ready to make the site Judy has been working on live.
Moved dev site from www-dev folder to www folder.
Current site is in web folder, so made copy of that for archive.
Contacted sys-admins to get web.uvic.ca/philosophy pointing at www folder and not web folder in their account.
I forgot to activate the redirect on the index.php page in the root of the new site, until reminded by sys admin guy when he activated new URL.
I suggested one course listing (rather than separate listings for summer and winter) and created a prototype for review in which each listing included a new line "offered in:" with appropriate values based on the arrays in the courses_offered file.
Then I asked if they'd like to be able to list courses by actual sessions offered (sep-apr, sep-dec, jan-apr, may-aug) and they said yes, so I:
- added new array variables to the courses_offered and courses_taught files (one for each of the four sessions)
- rewrote substantial chunks of the php code that figures out if a specific course is offered by the department (for use in grad and undergrad courses pages) and by specific instructors (for use in specific professor pages).
- documented the code and tested it
The site now requires that the dept provide lists of courses offered in each of 4 sessions rather than 2, for the overall department and for each instructor.
The bio for each professor had been kept in a separate include file called by the index file. This was to accommodate the inline editor used on the old site. The new site is likely to be maintained with Contribute, which doesn't deal well with includes as editable chunks, so I deleted the include call and copied the contents from each bio.inc file into the calling index.php file.
When I looked at the files in Contribute, the content did not appear. After some close checking I discovered that this line caused Contribute to fail:
<script type="text/javascript" src=<?php echo '"' .$pathToRoot.'javascript/javascript.js">'?></script>
but when I used this line instead, everything was fine
<script type="text/javascript" src=<?php echo '"' .$pathToRoot.'javascript/javascript.js"'?>></script>
(The difference is the location of the close angle bracket. Both versions validate and both versions work fine in actual browsers)
Each course description includes one line that is always visible and a div containing course details which is invisible by default and shown when the user clicks on the word "details" beside the course title in the line that is always visible.
I wanted to make the course title itself act as a toggle as well as the word "details". I tried directly invoking the hide-show function and also invoking the onclick event of the "details" button, but in both cases because the details button was a child item of the title line object doing the calling, the onclick bubbled up which meant that the method was called twice so the apparent effect was that nothing happened. Then I restructured the XHMTL so that the course title is a sibling of the details button and both contained in a div, then invoking the method worked fine.
Met with BT and SB on schedule and specs for new Humanities site.
Blair wants to work actively on this beginning May 2010.
Preliminary work includes:
- organizing the primary navigation structure and deciding whether to use a two-level or three-level navigational scheme (Blair)
- confirming what fields are available in the UVic events calendar and deciding if that should be the system for generating events postings on the Humanities site (Blair and Stewart)
- investigate including a "updated recently" feature which trolls through site, finds files that have been updated recently and lists those in a box in the left or right margin
- investigate including an "administrative timeline" feature which is based on an array of events, where each event has a "date" field, a "member-of-sequence" field, a "place-in_sequence" field, a "link-to-page" field, a "display-text" field, possibly some others (like "actor", more than one display-test field etc.). Allow users to: click on date and see what events have deadlines on or about that date; click on sequence and see all events associated with that sequence; click on event and see date, parent sequence and other details.
BT has been experimenting with a copy of the current UVic template for Humanities. Based on the that he'd like to make some behind-the-scene changes to the templates to make them easier for him to work on while maintaining the branding requirements. I'll meet with him in the next few weeks on that.
LW confirmed that one prof-specific course description per course was typically sufficient, and that providing for a default course description and then an alternate one for use in the summer if necessary would be sufficient.
Based on that, we'll probably structure the site like this:
professors
profA
details
bio.inc
image.jpg
course100
coursedescription.inc
coursehandout.pdf
Then modify as needed the code that grabs snippets from within that structure for inclusion on e.g. courses offered page, prof details page.
php-ized the philosophy site to reduce duplication of code, especially in banner, navigation and footer areas.
All the hardcoded stuff in the header, banner, footer has been moved to header.inc, banner.inc and footer.inc.
I've created a getSectionPage.php file which figures out the names of the current page and section so the correct nav items can be displayed and hilited. The code is very simple: assumes a two-level nav system, all pages are within a second-level (and only the second-level) folder and that the secondary nav is displayed in left column. It would be easy to write something similar for the default secondary nav system. It would take a bit more thought to abstract a bit to create something that could more easily be used with either scheme for secondary navigation.
The primaryNavbar.php and secondaryNavbar.php use the values calculated by getSectionPage.php to display the correct navigation state.
On each page the head section consists of the following:
<!-- InstanceBeginEditable name="doctitle" -->
<title>University of Victoria - Philosophy</title>
<!-- InstanceEndEditable -->
<?php include '../includes/header.inc'; ?>
<?php include '../includes/getSectionPage.php'; ?>
The start of the body section looks like this:
<?php include '../includes/banner.inc'; ?>
<div id="tabholder">
<div class="center">
<?php include '../includes/primaryNavbar.php'; ?>
</div>
</div>
and the leftcol div looks like this:
<div id="menu">
<ul id="SecNav">
<?php include '../includes/secondaryNavbar.php'; ?>
</ul>
</div>
Finally, the footer div looks like this:
<div class="center">
<?php include '../includes/footer.inc'; ?>
</div>
Each empty page is now much smaller than it was, and of course it's much less work to make any changes to the header, banner, navigation and footer areas for all the pages. I tried to retain all the dreamweaver-specific comments, but have not tested to see what DW can do with the php-ized files and how that conflicts with the dreamweaver template system.
AY sent me an html outline of the proprosed structure of the new site. So far so good. Some of the content areas in the old site do not appear in the new site, so I asked for clarification.
Other issues:
- they wish to continue to have a dynamic list of courses offered by professor and professor-specific course descriptions
- they wish to allow the dept secretary to continue to make routine text edits, through contribute rather then page-based fckeditor if that's more compatible with the templates
To accommodate that, we'll need to php-ize the pages. Since we're doing that we may as well also php-ize the navigation structure in place of the current hard-coded stuff on every single page.
A new program will need a site. They have some html material currently. JN needs a project to learn how to edit the templates provided by the university. So, I gave her a copy of the templates, showed how to open and edit them in Oxygen, explained some of the structure of them. She'll work on creating the appropriate navigation scheme in the tabs area, and creating a couple of pages and filling in the appropriate content.
She's also going to look at the example content provided with the templates and see which structures will be needed for the new site.
Eventually, we'll need to get an account and proper URL.
Received a Word document from Philosophy containing some altered sections for a PDF document which is hosted on the Phil website. The complete document is in about ten sections, but the changes were to a subset of those sections, and only the changed sections were included in the Word document. I discovered this posting describing how I had previously (in December last year) gone through a difficult process to convert the original from Word to OpenOffice, discarding and removing a stack of nasty stuff such as invisible "chapters", section breaks and so on that had accumulated over the years (the document is eleven years old). However, somehow the last set of changes ended up being done in Word again, and the current version of the document, to which the changes had to be applied, was now a docx file. Misery indeed. After much struggling with Word 2007 on Windows, Greg and I ended up working through Word on the Mac to convert the document to an older-format Word file, which I then imported into OpenOffice, and there I was able to find and remove section breaks, chapter breaks, and other invisible fields and codes that were screwing up the pagination and so on. I then fixed a number of errors in the table of contents -- it has hard-coded page numbers -- and saved a doc file and a PDF.
I've sent the doc file of the full booklet back to the secretary with the request that she edit that file directly in future. She will then be able to save the PDF version herself, from Word (which now supports PDF export), and we'll no longer have to reconstitute the document every time from separate sections.
We should talk to the department about whether this document needs to exist in PDF format; virtually all of the information in it is already available in the calendar and on the website itself, so this long and arduous task might well be completely unnecessary.
Met with BT who wants to use the text-editor in DreamWeaver to edit files. The templates provided by the central web office restrict what DW is entitled to do, and of course contain a lot of dw-specific comments. We couldn't figure out how to get DW to ignore those, so we agreed that I would create a copy of the westerndeans site stripped of all the DW-specific comments and put that up in the dev folder of their account.
Did that, uploaded and emailed BT. He confirms that he's now got full access to the pages in his copy of DW.
Wrote a php page which uses the curl library in php to send a query to google, store the results in a variable and then process those for display.
I configured the search to look in the uvic.ca domain for only pdf files which contained the string provided by the user in a text box.
The results coming back from google are not well-formed xml snippets and are not the easiest to deal with (they may or may not contain various elements depending on whether google thinks the files are not in English etc.), so there will be a fair bit of tedious text processing to get the output I want.
My test file grabs what Google identifies as the title line (which is a link to the PDF file), the links to Google's html version and text version of the pdf, and the KeyWordInContext provided by Google. Because some of the hits coming back are structured other than my code expects it's possible to break my test page depending on what search string you use.
Assuming LC is OK in principle with using the Google-based approach, I'll create an account, upload the PDFs that Nadine is making and wait for them to be indexed. Then I can fine-tune the php page.
JP sent me an email summarizing the Web Services office's review of the Social Justice site.
I made the changes I could:
- configure search box to search only the site
- couple of invalid html instances
- made submenus on all pages consistent
I responded on issues that I didn't change:
- "lack of content" : up to client, required elements are there
- "not tested on IE6" : W3C validator is our only standard
- "home page photo not specific to site" : up to client to provide image if they don't want to use the stock image
- "image of ferns in left column missing" : don't see the point of that element, so haven't included it
- "case of submenus not compliant with style guide" : contact client to determine which words are proper nouns
Spent a couple of hours sketching how to implement the search-and-report capabilities they want, rather than the graphic characteristics of the map itself.
Each record includes:
- id : key, likely also used to link to image data
- location : may end up being more than one field
- isArtArch, isEvent, isGeog, isHistory, isPeople : booleans
- title : open textfield
- topic(s) : not sure what this means, is it a list or open text
- details : open text area, may end up being more than one field
Text Query
- simple : texfield to query title, category and details fields
- advanced : controls for each significant field
- two report types
- to map (cause certain cities to become ofInterest)
- to table (location, title, category, truncated details, full details, maybe see in map)
Map of Europe
- Location hotspots have three possible states:
- default
- ofInterest (result of text query returning report to map)
- selected (user has clicked on it)
- on click
- return previous selected location to default or ofInterest status
- make this the selected location on map
- update report box with titles for selected location by category
Report Box
- Name of selected Location
- N (5) major categories
- art and archictecture
- event
- geography
- history
- people
- Each category accommodates sublist of titles of articles
- which belong to hilited location on map
- appropriate boolean's value is true
?Ability to limit which categories appear in report box
E.g. If user is doing text query for ArtArch, and then clicks on ofInterest location X on map:
- should the report box show the other categories for records which have titles in those categories?
Could which categories to show in report be some kind of config?
- on the report box or on the map
- settable from the text query
There are a couple of use-cases:
1) user clicks on location on map - it gets hilited and a "results" box lists the topic titles for records in the db associated with that city, and those topics are sorted into one of five major categories (art, history, geography, events, people). The user clicks on a topic title in the results box and the full details of that record are displayed somehow.
2) user does a simple text query and certain fields in each record in the db are searched. Results are displayed as a table (not sure how much of each record is displayed in table), possibly with each location found displyed as "ofInterest" in the map. Each record may have a button that hilites that record's location on the map as "selected".
met with SA and IMH to discuss use of Illustrator image of half globe including Europe for their information site. They said no problem with fact that image is a political map of modern Europe. They want user to click on location on map to populate a categorized list of topics (categories are Art/Architecture, Events, Geography, People, History). When the user clicks on one of the topics, then the details are presented. The details are typically a couple of hundred words organized by who, what, where, when, what.
They'd also like to be able to get at the topics by specifying any one of the categories and getting all records which have a value for that category.
They'd also like a search box. Looks like they'll need a small database backend.
IMH will send me samples of data and specifications for what part of the map he wants to use. We'll work with Greg to extract a bitmap for the map for now.
I'll come up with a design for the site and its interface over the next week.
They also want a rewrite of the departmental site by next September. As this site is fairly small, I might use it to try out the uvic template. They may have a student available who would be capable of taking template files and structural specs and producing a website.
Made copy of static social justice site and extracted the primary and secondary navbar stuff to javascript, just as a test. Created menuArray.js file which is a big lookup of all the folder and file names and all the section and subsection texts that appear in the GUI. Also created writeMenus.js which grabs the current page's URL and then writes the navbar including figuring out which elements to highlight. Got it working at http://web.uvic.ca:8080/~socjust/testjs
Pros: far less duplication of code on pages, edit one js array file
Cons: if JS disabled in browser, no navigation; have to understand structure of js array file and be careful editing (commented thoroughly in code)
Next: will do similar abstraction, but using php, which should keep the pros and eliminate the big con
Using new templates from UVic communications, started on website for social justice. No modifications to the base colour and image set needed. As site is small, I removed the tertiary nav elements from the leftcol div and the extra bits elements from the rightcol div, but left the two divs in there. I then used the div id=main class=fullwidth.
Filled the pages with the content provided by BC. Sent URL for review by him. Have a static HTML dev site at http://web.uvic.ca:8080/~socjust
Met with Blair regarding the creation of a small site for a conference of deans happening here in March. Got the specs worked out - only a handful of pages and some pdf forms.
Decided to build the site based on the new templates provided by the central web people. Commented out most of the navigational code on the page. Changed the colour scheme using the base colour they provided and a highlight colour mathematically derived from it. Decided to use colours rather than images for backgrounds. Had to add half a dozen selectors to the custom.css file they provide to handle colouring of elements that inherit values from the central css file and don't look good against the red background in the navigation area. Adding comments to the code as I go, which I'll submit to them when I'm done.
Robin S and Joyce P came by to talk about two levels of service they'll offer for departments: cms-based and template-based. The cms-based is part of a much more comprehensive package including needs asssessment, focus testing etc. etc. intended for the largest, high profile offices. There are a couple of dozen offices in that queue. The template-based service is less ambitious and will be used by most departments. At some point in the future a cms-based solution for typical departments may be offered.
Went through how we'd likely hack the templates to make the navigational items and other shared content php includes. The two sites we'll likely start with are the HCMC site and the Faculty site, but I'll have to see what other projects are in the queue.
The UVic events calendar has not presenter field, so that piece of information can't be extracted easily. The dean wants to be able to do exactly that. I wrote Dave W and he said they'll include the request for consideration for the next release of the service, whenever that is.
In the meantime, I've written code that looks for ".." preceding and following zero or more characters in the description field and identifies that as the presenter's name. The code also looks for the first instance of the tag strong class="presenterName" in the description field. I had to use the strong tag because Dave's code strips span tags from the description field.
Met with IH and SA to consolidate plans for image-map of the medieval world.
They are considering commercially available AI files as the source for the map(s). Name of target appears on hover. When user clicks on target (will be dozens of such targets, no more than a couple hundred ultimately) either a popup list will appear (1 to 7 items), each of those will be a link to either a web page on the site prepared for the project, or a link to a site on the web; or user will go directly to web page on site, and from there navigate to other pages on site or links off-site (like MapOfLondon).
Other features: 2 medieval perspective images of the map (one East to top, one North to top) as well as modern north-to-top mercator-type image; navigation scheme other than the map to project pages
Met yesterday with CC and MB, where they requested following changes to French dept site (in addition to the events feed I posted about yesterday):
- on FAQ page, add list of Q's at top of page with anchors to answers later in page
- hide departmental life page and link in nav bar
- put newsletter page under news section (events page will go in that section too)
- put Department section in nav bar; in that put Faculty members, Sessionals, 3 staff pages, restricted admin section
- create the admin folder and put htaccess restriction on it.
Working with Dave W to create accounts on the UVic calendar system. Each department will have their own. Dean's secretary will have access to all accounts. Dept secretary will have access to dept account. Also met with BLT to confirm presentation of events calendars on hums site:
Display events for next 30 days by date for all depts in faculty, include all fields but description, include link to UVic calendar for description
Display events for next 30 days sorted by dept, then by date, include all fields but description, include link to UVic calendar for description
Write page to generate text version for inclusion in email. All field but description, include link to entry in UVic Events calendar.
Helped on this, as I wrote the original PHP to retrieve and display the calendar feeds.
SB reported that events that she posted to the UVic events calendar appeared fine on the UVic site, but on the GRS site which scrapes from the UVic site, html entities appeared instead of the literal characters (space, ").
I created a test event containing the literal characters and the entities, and they behaved as I expected they would. It appears that the events system and scraper are behaving OK, which makes me think that there must be something about the data she's entering which explains the behaviour she reported.
Wrote back and told her to try editing the event postings.
Helped LW get some permissions set correctly on files she'd uploaded to the Philosophy site, which was easy; then she reported a couple of problems with the Courses page, which were more complicated. Firstly, it seems that although Stew reports having commented out the summer courses so that they wouldn't appear, in fact the line that prints them was not commented out; I did that, so the summer courses now don't appear.
Following that, there were three other problems reported by LW: two courses (239 and 305) were showing as available, when they should have been greyed out; I fixed that by removing them from the course_listing/courses_offered.php
array for Winter. Secondly, LW reported that course 250 was missing completely. I confirmed that there was no sign of any data for a course numbered 250 in the site info, and checked the UVic calendar; it's missing there too, so I think that's a more fundamental problem, and I'm waiting for more info from LW on what we should do there.
Quick tweak to Medieval Studies site for SA.
LW sent an update to one of the course listings, so I rebuilt the document again, and caught a couple more oddities which I fixed. It's still not elegant -- there are widows and orphans, etc. -- but for a rapidly-changing doc it's not bad.
Received a request from LW in Philosophy to update the PDF booklet Studies in Philosophy, on the dept site. It turns out the booklet is built from five sections, which are maintained as distinct Word files by LW; in the past, Stew has combined these to create one file, and then built a PDF from it. I archived previous versions with dated file names, then brought the old DOC file over into OpenOffice (my MS Office can't create PDFs). I replaced the altered section with new data. At the same time, I noticed that the page numbers in the TOC of the document were all wrong, presumably dating from a previous incarnation, so I fixed those, and in the process I combined a number of arbitrary "sections" that seemed to exist in the document, for no apparent reason. I also deleted some chapter number fields which were showing up in the output, and fixed a bug in page numbering near the end (it jumped from 53 to 23 for some reason). I rebuilt the PDF file and uploaded all the changes, and archived versions, to the Website.
If this document is to be updated/maintained regularly over the long term, I think it would be a good idea to adopt some kind of formal system which makes updates easier. I'm not sure what would be the best way to do that, though.
Heard back from RP with requests for updating much of the content for the ASLE site, which I did.
Also had to implement five submission forms (one for each type of presentation). Did that with call to php page which checks for valid data and then if everything is OK uses the mail function to send results on to email address. If there are problems with the input data, then php presents a page with errors and suggested fixes and tells user to use back button to go back and fix mistakes. Very limited error-checking (other than for malicious code) so it should be very rare that anyone's data is not accepted. It would be an improvement if I did the error checking client-side on js rather than server-side in php. Also gave some thought to doing the whole thing in AJAX, but both (especially the latter) are probably overkill for this project.
Got it done in time for an announcement they wanted to make in conjunction with some other event going on.
Created a new site for the Academic Women's Caucus. Started with some pages and code taken from the HCMC site, substantially simplified them and altered the style sheet. working files at lang02/womencaucus .
Met with them for review. The proposed alterations to the structure and some ideas for the banner. I made the changes to the structure, updated the navbar files and created empty pages for all the files needed in the site.
I'm still working on creating a banner with three sections (left, center, right). The rest is pretty well all there (except of course for any content).
PHP4 (the current default) is being phased out on the server cluster, so we need to test all sites that use PHP to make sure they are using, or can use, PHP5. Stew and I started testing, and switching over all sites that were trivial and verified as working with PHP5. The only problem site we've found so far is Philosophy, which has some complicated code retrieving course listings from the calendar site; this appears to fail with PHP5, so we've switched it back to PHP4, and Stew will work on migrating it.
- 1
- 2