=======================================
CHANGELOG: enCore 4.0.1 to 5.0 beta 001
=======================================


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

Created: May 12 2006 by DJ
Updated: May 14 2006 by DJ (- Inventory Manager: create
                            - Multiple Objects, EduCenter
                            - some typos)
Updated: Nov 13 2006 by DJ (- player bot
                            - message room
                            - set, clear, force
                            - CC and Reply-to-all in Forum Mailer
                            - exit messages
                            - boot from who browser)                            
                            


Changelog:

- 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 
  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

- 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)
    - 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
  - 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

- 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 
  - changed get
    - including a root 300 redirect for URL objects
  - changed cookie setting and check

- Changed menu bar from icons to text links
  - verbose explanation in floating alt-boxes
    - language sensitive
  - made the quit function a form
    - fixed a security hole by doing so

- Rewrote contextual menu-icons
  - 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 (doesn't work with frames)
  - Removed padlocks (see Access and Locking)
  - Introduced a bookmark setting shortcut (see Bookmarks)

- Made quota free by default 
  - 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 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 (wiz only)
        - 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 
              - moved the telnet welcome screen from $login to here
                for easier access
            - $xpress_client 
            - $sys_obj
            - $root_class
            - $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" TAB 
    - 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
    - wizards may boot players by checkbox-ticking them in the table
  
  - Search Engine
    - removed from menu bar
    - functions completely rewritten and moved to 
      Inventory Manager and Administration module
  
  - Inventory Manager    
    - TABs for 
      - quota
        - 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
        - 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
        - "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
    - removed and replaced by a fullfledged threaded discussion forum
    - almost completely rewrote inner workings of $mail_agent and $mail_recipient
    - send CCs and reply-to-all-function
    - 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
        - 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 userhas 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
      - 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
  - 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: message room
  - displays predefined messages in random order and delay (propaganda)
  - censors predefined expressions (regexp) and replaces them by a customizable expression
  
- New Generic: player bot
  - behaves like (disguises as) a player
    - shows in Who Browser, shows idle time etc.
    - may receive and send SMS
    - much improved tell/say-routine
      - uses the room's verba dicendi

- New generic: web controlled intercom device
  - 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
  - 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)
  - Exits easily added to and removed from rooms (Thanks to Trond Pettersen!)
  - now conveys exit information when clicking on a room link
    (re-introducing exit messages)
    - introduced "female" messages

- 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