CHANGELOG: enCore 4.0.1 to 5.0 beta 001

This document is here: http://lingo.uib.no/v5/changelog.html

Created: May 12 2006 by DJ
Updated: May 13 2006 by DJ (- Inventory Manager: create
                            - Multiple Objects, EduCenter
                            - some typos)
Updated: May 14 2006 by DJ (- added links to explaining documents)
Updated: May 15 2006 by DJ (- added favicons)


- Made telnet optional in order to meet firewall restrictions 
  - rewrote all instances and implications of connected_players()
  - When a player has no telnet/no java, he/she is still 
    registered as online participant until logout (or cleanup)
    - may receive and send chat, mail and SMS (page)
    - "last web page served time" kicks in for idle_time()
    - player displays in the Who browser
    - player displays in room frame
    - player displays as online in Administration module
    - chat and other frames are updated on given queues 
      (input, move)
    - a maximum refresh rate may be set through a near drop down select
- Several security fixes: 
  - redesigned general form data retrieval, 
    namely in the Object and Program Editor
  - redesigned @url command
  - redesigned quit routine
  - redesigned frame update through Java
- Introduced preferred languages (SEE language.html)
  and alternate language for the interface 
  - made string retrieval and altering language much easier
  - made languages "packages" which can be added and removed
  - reduced the use of the word MOO to a minimum

- Moved to unicode (use is optional, but recommended)    
  - supports arabic, hebrew and other non-latin scripts,
    even in Chat
  - moved lambdamoo to version 1.8.1u 
    (made independently of this release by Matthieu Fenniak, THANKS!)

- Completely rewrote Chat
  - moved from Java based to HTML based
  - introduced "new chat style" with no more need to type "say"
    and prefixing other commands with / except @-commands
    - "new style" is switched on|off individually in Preferences
  - introduced colors and images in Chat (smileys, formatting)
  - appearance largely customizable by user through full CSS access
  - Chat now logs input and output cross-session (until deleted)
    - replaces the Xpress log
    - may be set to be auto-deleted on logout
    - alert at login when logs exceed a given number of lines
  - Chat input field has now shortcuts: 
    - go home
    - look (view room in web frame)
    - Away from / Back to keyboard message
    - switch to right-to-left script
    - get previous command in personal history
    - get next command in personal history
    - set maximum Chat refresh drop down select 
      (for non-telnet-participants)

- New Java applet (co-written with Kevin Tysdal, thanks)
  - shows colors on connect and disconnect
  - writes verbose debugging output to the Java console
  - fixes a severe security hole
  - addresses all available frames, including menu frame
    for on-the-fly update after layout and language change
  - the new applet ONLY works with v5, while v5 KIND OF works
    with the old applet (this is discouraged though due to 
    several reasons)

- Introduced a new room frame (SEE communication.html)
  - shows all currently connected players in the current room
    - reacts on players moving in and out of rooms
  - may show player icons (on by default, settable in Preferences)
  - removed player (icons) from normal room view in web frame
    (off by default, settable in Preferences)
  - frame position can be changed in Preferences
  - shows link to view the current location in web frame
  - set maximum room view refresh drop down select 
    (for non-telnet-participants)
- Changed Login screen 
   - made it frameless
   - shows number of connected players
   - made alerts inline HTML (not popup)
   - removed popup mainframe (no more popupblocker problems)
   - offer complete resizability of ALL frames and windows
   - offer maximized login screen
   - removed the XHMTL compliance sticker

- Tried to reduce Javascript, i.e., rewrote Javascript with 
  "Gracefull Degradation" in mind several places, e.g.,
  applet tag building 

- Changed login and logout
  - fixed a few security issues
  - fixed "logout on reload" problems
  - fixed "logout on loose window" problems
  - moved scripts from player to Xpress_client
  - changed the fake "components are being downloaded"
    to a link targetting $player_start 
    if the player is stuck in limbo
    - wrote a meta refresh to attempt to move him/her there
- Changed enCore web server
  - changed authentication, including cookie setting and check
  - changed get
    - including a root 300 redirect for URL objects
  - made new favicons, one for each theme 
    favicon amber favicon azure favicon ice favicon jungle favicon lemon favicon lime favicon magenta favicon merlot favicon poppy favicon sky favicon steel favicon tangerine
    automatically retrieved according to the individual user's theme 
    and inserted as a shortcut icon (depends on browser)
- Changed menu bar from icons to text links
  - explanation in floating alt-boxes
    - language sensitive
  - made the quit function a form
    - fixed a security hole by doing so

- Rewrote contextual menu-icons
  - removed them from Inventory Manager (except pencil)
  - Removed padlocks (see Access and Locking)
  - Rewrote back-button
    - now works for rooms as well
    - builds a personal compressed list over last viewed 
      web objects and pops the last object (return/delete)
      instead of using Javascript:history (which didn't work with frames)
  - Introduced a bookmark setting shortcut (see Bookmarks)
  - rewrote drop icon to call Inventory Manager's Move Section
    (choose target if more than one target is possible)

- Made quota free by default (SEE quota.html)
  - can be set to free|restricted individually and by player classes
  - can be set via web (text/mouse)
  - improved quota count
  - wrote an auto-increase if user's quota is free 
    and user is getting close to its maximum
    - includes a mailbox notification on auto-increase

- Rewrote access, locking and sharing
  - removed padlock icons (red/green) since they were 
    misleading (due to much finer access and locking methods)
  - introduced "key_override" for specifying readers 
    on an elsewise locked object 
  - locking works now cascading by location
    (a note in a locked binder is locked by location)
  - locking and sharing information may be set 
    explicitely for cascading contents if an object
    (apply this setting to all of its contents)
- Gave the user more freedom 
  - made real_name changeable by the user (optional, but default)
  - made email_address changeable by the user (optional, but default)
  - made timestamps customizable (set personal timezone)
  - moved a lot of information from the system to the user
    - CSS
    - Java applet codebase path etc.
- Redesigned and restructured all existing web applications
  - all web applications are now frameless
  - Introduced "tabbed" subsections
  - Administration Module
    - accessible to Teachers (some functions)
    - TABs for 
      - player creation (wiz and teacher)
        - automatic player name retrieval
        - optionally bind a batch in a group
        - optionally create a common room owned by the group
        - optionally create a home for each player
        - optionally send a password
          - password mail text is customizable then and there
        - nice result table (HTML)
        - verbose result for additional features
      - players view (wiz and teacher)
        - may be restricted to groups
        - may be restricted to classes (e.g., all programmers)
        - sortable by name, real name, email address, last disconnect time
        - searchable 
          - searches names, real names, email addresses
          - highlight search word in result
      - bookmarks
        - completely rewrote display and setting of bookmarks
          - bookmarks clickable
          - choose from drop down
          - remove by uncheck
          - display result alerts as inline HTML
      - settings
        - completely rewrote settings section
          - accesses the following objects through their
            xpress_edit_options via the Object Editor:
            - $network 
              - made network debugging easier
              - made system email addresses explicit and less error-prone
            - $xpress_login 
            - $sys_obj
            - $root
            - $player and subclasses
            - $encore_web_object and subclasses
            - $encore_web_application and subclasses
      - generics (wiz only)
        - moved generics list to the player in order to define
          seperate lists for builders, teachers, programmers and wizards
        - removed classification rooms/basics/educational
        - generics are shown with full name
        - generics may be chosen from a drop down select
        - generics may be removed by unchecking a checkbox
        - teachers' and wizards' generics sets are clearable
          (clear to builders' and programmers' set)       
      - Message of the Day (wiz only)
        - changed to be a textarea (not a text field)
          - may take HTML since it now is displayed in the chat, 
            not in an alert box
      - Tasks
        - shows a table of running (waiting) tasks
          - tasks may be killed individually or batched
            by checking a checkbox/submitting the form
        - will be extended (for full release) to include mail queue view
        - may be extended (in future versions) to show available enCore upgrades
          - may contain an "install/upgrade now" button
  - Object Editor
    - removed from menu line, replaced by (merged with) existing Preferences
    - rewrote calling from edit-pencils
    - reduced to one function: Editing of existing objects
    - moved all other functions (myObjects, creating) 
      to the Inventory Manager
    - removed all human language and moved it to a language object      
    - Changed options from dropdown select to clickable list in TAB style
    - Retrieve options from a property, not inherited and appended
      in order to change order and length anywhere in the inheritance path
    - shortened long options lists with a "more|less choices" link 
    - Changed return screen 
    - Changed alerts to be inline HTML
    - Made success appear green, failure red, info black. 
    - now supports "friendly property change alert"
    - Introduced clearing/setting/forcing of properties
    - Prepared for centralized help function 
      (by inserting lightbulbs for each fieldset)
    - expandable inline help text (more|less)
    - Layout and language changes take effect immediately

  - Who Browser
    - table is sortable by name, connected time, idle time, xpress time, location
    - wizards have a checkbox next to each name for booting players
    - table shows players without telnet connection
    - shows link to go home
    - shows link to set away-message
  - Search Engine
    - removed from menu bar
    - functions completely rewritten and moved to 
      Inventory Manager and Administration module
  - Inventory Manager    
    - TABs for 
      - quota (SEE quota.html)
        - shows 100% accurate quota percentage
        - teachers and wizards may change to a specific player's view
          and change his/her quota by mouseclick
      - owned objects (inventory)
        - wizards may change to a specific player's view
        - number of objects per page (table) can be set individually
        - table is sortable 
          (number, class, name, location, hits, size, creation date, last change)
        - rewrote "quick access links"
          - show floating boxes according to sorting specification
        - removed contextual menu except for the pencil
        - made moving batchable
        - made recycling batchable
      - shared objects (non-owned but writable)
        - wizards may change to a specific player's view
        - works like inventory except for moving/recycling
          which is only available to wizards
      - all objects (wizards only)
        - works like inventory
      - search 
        - search for names, inside texts, inside slides, inside botwords, 
        - search for words (and|exact) and expressions (regexp)
        - highlights search words in the targets when clicked from there
      - create
        - rewrote and moved creation routine from Object Editor to here
          - flat list of generics (no more "educational")
          - table of generics with short explanations
          - introduced multiple objects creation (see that)
          - generics apply to classes, e.g., 
            wizards have more (other) generics than builders
          - explanation after creation with success/failure
            for each object (if multiple objects)
          - result table with clickable object and pencil
          - explanation of location, offer moving right away 
            (button, which calls "move", see below)
      - upload (SEE upload.html)
        - written a sofisticated system for connecting external files to 
          in-moo objects, including a MOO/upload-database connection/
          authentication script (co-written with Trond Karl Pettersen, thanks!)
        - includes a seperate PHP/mysql feature for file upload 
          (by Trond Karl Pettersen, thanks!)
        - wizards may check number/size of players' uploaded files
      - move
        - called from the double red arrows down (drop) 
        - called from inventory (batched or sigle move)
        - lets the player decide where to drop/move/put 
          one or more objects if the user's pockets and/or
          the user's location contain sorts of containers
          (boxes, recorders, binders)
        - possible targets are shown hierarchically
        - objects are each checked carefully if they are movable 
          to the given target
        - verbose inline HTML output for each object after success/failure.
        - offers target view after result.
        - defaults to all owned objects, 
          but is called with one object (from arrows)
          or a range of objects (from inventory)
      - trashbin (SEE quota.html)
        - "recycling" now means temporary move to a personal recycle bin
        - recycled objects decrease the builder's used quota by their size
        - recycled objects loose ownership, and cannot be read by 
          anyone but wizards
        - recycled objects can be completely deleted or restored, 
          provided quota is sufficient (but quota is free by default)
        - recycled objects can be completely deleted, or restored 
        - deleting and restoring can be batched (checkboxes)
        - certain objects are not recyclable 
          (system object, root object, generics, parents)
          - fixes a security hole
        - verbose warning with impact information
        - player may choose to recycle/delete 
          all or some contents of a "container"
        - verbose result with cascading recycle information

  - MOO Mailer (SEE forums.html)
    - removed and replaced by a fullfledged threaded discussion forum
    - almost completely rewrote inner workings of $mail_agent and $mail_recipient
    - edit, move, copy, delete, freeze threads
    - easy setting of readers/writers
    - thread/flat view
    - highlighted search
    - single page nested thread view with summary
    - adds and removes recipients and CCs with drop down select
      - drop down select recipients are individuals, groups and forums
    - verbose result output after mail sending 
      - including report for each recipient
      - includes offer to print out the sent mail    
    - extended notification settings  

  - Xpress Navigator
    - removed Xpress Log (replaced by auto-log for Chat)
      - (Xpress Log still works with text commands)
    - TABs for
      - map (optional)
        - clickable/roll-over maps may appear here
      - directory
        - on-the-fly generation of obvious exits (cascading) 
          from a user's current location
        - exits (target rooms) are clickable if room is not locked
      - bookmarks (SEE bookmarks.html)
        - shows personal bookmarks
        - shows group bookmarks for each group the user is a member of
        - shows global bookmarks
        - personal bookmarks are now set by an icon 
          in the contextual menu below the title of a web object
        - all bookmarks are tagged with personal last viewed timestamp
        - each bookmark section shows a link for editing 
          if the user has writing permissions
        - each group bookmark section shows a link 
          to view the group which the bookmarks apply to
      - HTML Chat Log
        - takes over for Xpress Log
        - all output since last deletion is stored and retrievable here
        - carries verboseness classes, colors and images like in live chat
        - fixed the problem with long logs running out of ticks 
          when attempting to delete them (Xpress log)
        - rewrote print/email/delete commands
          - alerts are now inline HTML instaed of popup alert box
      - Commands
        - all text input since last deletion is stored and retrievable here
        - included print/email/delete commands
      - Notebook (Scrapbook)
        - rewrote save/print/email/delete commands

    - MOO Info 
      - rewrote all code
      - Broke the one page into sections (TABs) for 
        - Statistics
          - rewrote syntax in value retrieval
        - Licence
        - Requirements
        - Contributors
        - added a section for Questions
          - applies only when a .question_to-property 
            is set to a valid email address
    - Contextual Help (SEE help.html)
      - replaces enCore Help Browser
      - added as application object 
        to prepare for the centralized Help Function
      - wrote calling and syntax from lightbulb
        and redirect to database
    - Program Editor
      - Complete remake from scratch
        (too many changes to enumerate here)

- Changed Object and Player Appearance setting (SEE appearance.html)
  - Values are now handled by theme stylesheets 
    and customized "raw" CSS rather than single properties
  - used percentage instead of pixels
  - removed alignment for object description,
    object multi-media-content and note texts
    and moved values to raw CSS.
- Extended themes
  - apply to tables (alternating rows, "zebra" look)
  - apply to form fields
  - made a theme palette for each theme
  - made two new themes: jungle and merlot

- Many CSS, accessibility and web standard improvements
- Changed automatic markup rouine
  - won't mess up precoded images and links any more
  - included replacements for smileys 
    (optional, uses a combination of user and object settings
    in order to kick in)
    - works in chat, note text, forum messages  

- Keep a log of last changes on all objects
  - who, what, when. (200 changes shown by default) 
  - changes only written to changelog when set through Object Editor
  - changes are shown in the Inventory Manager
- New player class: Generic teacher 
  - child of $player 
  - may create other players
  - may increase other players' quota
  - may change other players' passwords
  - may change other players' real names
  - may view statistics 
    - number and size of owned objects
    - number and size of uploaded files
    - last disconnect time    

- New generic: Multiple Object Template
  - creates a Main object and associated objects with one mouseclick
    - deleting the Main object will show a list of associated 
      objects with possibility to delete or keep them (individually)      
- New Generic: EduCenter
  - creates a main room, slide projector, recorder, box, intercom device 
    and a user-given number of connected rooms (satellites)
    with a recorder and an intercom device in each 
  - can be connected to an existing, accessible room 
- New generic: web controlled intercom device (SEE communication.html)
  - no limits as to number of connetions
  - may listen or broadcast or both
  - switched on and off by mouseclick
- New generic: group (SEE groups.html)
  - cascades (groups in groups)
  - may be created by everybody
  - may be used in shared owners
  - may be used in paging (SMS)
  - may be used in mailing (internal and email)
  - may be used in forum access
  - may be used in buddies 
    (colored chat, logon notification, email disclosure)

- New generic: HTML document
  - child of $note
    - meaning: not a room like $web_page
    - by consequence: no exits, no contained objects, 
      no users moving into a web page
  - does not add anything to the note text 
    - no title, no icons
    - no line breaks, no link markup
  - inherits CSS, Doctype and Javascript
    - those are settable in the Object Editor
  - fully searchable by the search engine in the Inventory Manager

- New generic: URL object
  - child of $thing, may be moved, put into binders, rooms etc.
  - serves as reference to external resources
  - parent to $uploaded_file (see upload in Inventory Manager)
- New generic: binder
  - child of $thing, may be moved, put into binders, rooms etc.
  - displays a table of the contents with number, name, description, 
    personal last viewed information (for each player), length and owner
  - may be private or public

- New generic: HTML slide projector
  - merges the old text slides and web slides
  - increased number of slides from 10 to 30
  - slide show controlled through web: 
    personal "peek" and "show to all"
  - each slide may carry a background sound
  - each slide is easily locked and revealed by the owner 
    (co-owners/wizards) in order to hide, e.g., answers to quizzes

- New generic: $forum
  - child of $mail_recipient (this may change in future releases)
    - added side-branch properties like icon etc. 
    - takes individuals and groups (or both) as writers and/or readers
      (defaults to open-to-all)
    - forum affiliation (what category it belongs to) 
      may be set in the Object Editor by drop down select

- New generic: $forum_category
  - child of $thing, movable
  - holds a number of forums together

- New generic: $log
  - child of $note
  - for use in recorders
  - log start and stop are stored in seperate properties
    in order to sort logs  
  - text body is tagged especially for log purposes
    - highlighting of individuals in the log
    - hiding/revealing timestamps for each utterance
    - HTML slides are formatted in a special way
    - computing statistics 
      - how many participants contributed     
      - how many lines each participant has contributed with     

- New generic: Intercom device (SEE communication.html)
  - replaces $intercom (is NOT recording though!)
  - can be combined unlimitedly with other devices
  - web controlled setting to listen, broadcast, or both
  - if an intercom device is on, it shows in the room/player frame
  - if an intercom device is on, it changes color when viewed in web frame

- New object: colors
  - takes care of theme colors, associated hex values and HTML color values

- Made paging ("SMS") web controlled 
  - including an optional "ping" notification when paged

- Introduced "I'm Away/I'm back" as "doing"-message
  - made that explicit in the player frame and the Who browser
  - quickly settable below command input box

- Introduced "my buddies"
  - buddies can consist of individuals and groups or both
  - optional alert when a buddy connects
  - optional coloring of chat when a buddy says something
  - optional revealing of personal information to buddies
  - can be used as shared owners
  - can be used for paging
  - can be used for mailing

- Rewrote recorder 
  - fixed a bug where recorders wouldn't tape when their log's 
    note text value had the wrong data type
  - start and stop web controlled (through mouseclick)
  - preview of ongoing log by mouseclick
  - if a recorder is on, it shows in the room/player frame
  - if a recorder is on, it is blinking in web frame
- Changed room 
  - introduced a "blackboard" property
    - shows if there is writing, vanishes if empty
  - Optional reversed order display (put newest first). 
    Easily set in Object Editor
  - Contents and Exit Order easily set in Object Editor
  - Web sweep function (get rid of all that is not mine in this room)

- Changed note
  - keep two generations of note text contents backup (panic)
    - backups are only kept when text is saved in the Object Editor

- The player's pocket's contents is now displayed in the web frame 
  (player:_html) if perms are OK

- Many new utility verbs in string_utils, list_utils, object_utils

- About completely rewrote all verbs in encore_web_utils
  - BEWARE: changed some verb names to other names!  
    ... like :h(text, level) to :h1(text),:h2(text) etc.
  - BEWARE: changed some verb names
    ... like ":img*age" to ":img image"
  - BEWARE: split some verb names!  
    ... like ":link a" into ":link" (used in HTML HEAD)
        and ":a*nchor" (hyper-reference link)
  - BEWARE: changed some argument structures
    ... like :textarea(?text, ?name, ?rows, ?cols, ?custom, ?id, ?class)
  - added some arguments in some verbs,
    ... like :a(?url, ?text, ?target, ?action, ?image, ?title, ?class, ?custom)
  - added "generic" verbs 
    ... like "nbsp frac14 plusmn lt gt" etc.
        and made them synonymes with "builtin" verb value reference
        - fixed a problem when writing HTML code in text areas by doing so
  - added verbs
    ... like "dd"
  - enhanced verbs 
    ... like "br" to take an optinal INT argument for repeating itself

- Improved verb calling and structure in page building