<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Kalens ToDo List</title>
<style type="text/css" media="screen"><!--
body {
font-size: 11px;
font-family: verdana;
background-color: #ececec; }
.considered {
color: #00008e; }
.done {
color: #006d00;
text-decoration: line-through; }
.removed {
color: #a10000;
text-decoration: line-through; }
--></style>
</head>
<body>
<p><strong>This is the todo list for the existing calendar system (ProCal) as it transitions into Kalens. This feature list includes items for verison 1.0 and the future 1.1 version.</strong></p>
<p>SVN: $Id$</p>
<p><em>Legend:</em></p>
<ul>
<li><em>Normal todo item</em></li>
<li class="done"><em>Completed item</em></li>
<li class="considered"><em>Item under consideration</em></li>
<li class="removed"><em>No longer considered</em></li>
</ul>
<p></p>
<h2>Kalens 1.0</h2>
<p>Calendar <em>(Alpha 2)</em></p>
<ul>
<li>Make non-javascript event creation/editing system</li>
<li>Popup date calendar</li>
<li>Weekly view (revise) and daily view (new) should show start and end times like most calendars</li>
<li>Event notifications/reminders</li>
<li>Event labels</li>
<li>For multi-day events, show the events spanning multiple days (monthly view)</li>
<li>Clicking on an event's link takes you to a details page (showevent.php) and from there you can edit the event</li>
<li>Delete or edit one instance of a recurring event</li>
<li>i/v/eCal export</li>
<li>Save calendar as web page (not linked to any external stylesheet or images)</li>
<li>Event search engine</li>
<li>Selectable start day of the week</li>
</ul>
<p>Email [IMAP only] <em>(Alpha 5)</em></p>
<ul>
<li class="removed">Optional true web client --> check for messages whenever browsing the system; download the messages from the POP server and store them in MySQL followed by their removal from the server</li>
<li>Address book that had pop-up chooser for creating a new message and selecting recipient</li>
<li>Tri-pane view (MS Outlook esque)</li>
<li>Flag and label messages</li>
<li>Optional message grouping by date</li>
<li class="removed">MBox import (probably doable; will have to look at how to split messages as they're all in one big file, but it's stored as the message source)</li>
<li class="removed">MBox export (very doable; just run a loop and save the message source to a file; need to check message spacing so that it works right, but that shouldn't be hard)</li>
<li>Have a server connection class that can use either the imap_x or socket_x functions; use auto-detect and then set that in the admin cp during install</li>
</ul>
<p>Tasks <em>(Alpha 4)</em></p>
<ul>
<li>Link a task to a certain day, note, or email</li>
<li>Label tasks</li>
<li>OPTIONAL start/stop/assign/due date</li>
<li>Show completed tasks for X days/auto delete/hide</li>
<li>Show tasks on calendar (weekly and daily view only?)</li>
<li>Prioritize tasks</li>
<li>Task reminders (via email and calendar(?))</li>
<li>Printable to-do lists with checkboxes</li>
</ul>
<p>Note Pad <em>(Alpha 3)</em></p>
<ul>
<li>Link a note to a task, event, or email</li>
<li>Label notes</li>
<li>BBCode/strict HTML rules based formatting</li>
<li>Send note as email</li>
<li>Save note as RTF/DOC (<a href="http://www.phpbuilder.com/columns/nair20020523.php3?page=1">http://www.phpbuilder.com/columns/nair20020523.php3?page=1</a>)</li>
</ul>
<p>System/Core Changes <em>(Alpha 1)</em></p>
<ul>
<li>Support true language independence
<ul>
<li>Style variables for align left and right for RTL languages</li>
<li>Multi-language support</li>
<li>Admin CP can be one language while calendar be another</li>
</ul>
</li>
<li>Clean up setting import/export and support language independence</li>
<li>Advanced user-based permissions system --> allow users to create their own user groups (independent of the system ones) that can view calendars/tasks/notes and edit, create, etc. them</li>
<li class="done">Handle magic quotes differently: create addslashes_like that will strip slashes on a per-variable level, rather than globally (thus saving resources)</li>
<li class="done">Change login system to set cookies that have no value in terms of the password</li>
<li class="removed">Make styles have inheritance past the master style</li>
<li class="done">Revamp ACP style</li>
<li>Change CSS_GLOBAL template to be colour-picker based (or at least more friendly!)</li>
<li>Change StyleVars and CSS to not be in the templates, but rather be in a separate table that will be easier to support inheritance</li>
<li class="done">Move inc/* to includes/ and inc/admin/* to inc/</li>
<li class="done">Change Admin CP object $admin to be $print (purely aesthetical)</li>
<li class="removed">Support multiple admin CP styles</li>
<li>Change images/ folder organization</li>
<li>Security measures to force the user to enter his or her password after X days or hours as well as a "remember me" checkbox</li>
<li>System-wide search (search results would be from emails, notes, tasks, and events)</li>
<li>Style permissions and display orders</li>
<li>Admin user group creation and management so certain users can do certain things (like set the permissions for others to view their calendars)</li>
<li class="considered">For simple admin widgets (phrases, etc.) have Admin::SimpleFile(DB TABLE, array(FIELD => array(TYPE, DESCRIPTION)) allowing creation of entire files with a single action</li>
<li>Change XML parsing to just take the name of $_FILES['x'] and it will control file_get_contents() of the XML data</li>
<li class="done">Change Admin CP nav to be a large array array(MENU GROUP => array(DISPLAY NAME, array(LINK NAME => LINK))) and then just do a quick processing of that (hopefully remove Admin_Nav::* class)</li>
<li class="removed">Somehow protect the install/upgrade system</li>
<li>Clean up the installer; MyWishlist's installer system is pretty nice, we could use version detect and just that instead of the user select; it's probably cleaner than our current system</li>
<li class="done">Make print_standard_redirect() and print_standard_error() use just phrase names instead of $language['x']</li>
<li class="done">Change sanitize() to not slash strings automatically, just have them cleaned for XSS</li>
<li>Remove inc/defined.php and find ways to work without its definitions</li>
<li class="done">Rename pc_* and pc* functions to be *like (eg. setcookielike, addslasheslike, randlike)</li>
<li class="done">Change pc_rand_char to use the engine that is in the bug tracker</li>
<li class="done">Change construct_phrase to call sprintf() instead of using str_replace() for variable substitution</li>
<li class="done">Make in-phrase variables use %1$s-like variables, rather than just %1</li>
<li class="done">Put locations in construct_time_zone_select() in phrases</li>
<li class="done">In construct_style_select() make the styles array a static variable so we have them cached</li>
<li class="done">Make the devdebug() functions only store data if debug mode is on</li>
<li>In inc/init.php only send no-cache headers if the admin has specified to do so</li>
<li>Create a pagination system</li>
<li>Rename _SELECTED and _CHECKED constants to HTML_* and move them to a file other than inc/event.php</li>
<li>Move XML parser into a class and make it more universal</li>
<li>unlink() all fcached CSS files so they don't build up after a while</li>
<li class="considered">Make Admin_Print::* functions "smart" so they know when to open/close elements, inherit colspans, and all follow the same argument order</li>
<li class="done">Change $xss object to $sanitize (purely aesthetical)</li>
<li class="done">Make yesno pcoptions store boolean values, not string "yes" or "no"</li>
<li class="done">Remove defined cookie names in place of cookie prefixes</li>
<li class="done">Allow for table prefixes (find a unique way to do this so we don't have to break the string to insert a constant every time</li>
<li class="done">Use dynamic-length salts instead of the fixed characters</li>
<li>Use datamanagers to handle DB writes (an object that has all the fields defined and has an insert(), update(), and delete() method that controls all DB-write interaction)</li>
</ul>
<p>New Style <em>(Beta 1)</em></p>
<ul>
<li class="removed">Change event add/edit to be less javascript-intensive</li>
<li>Frame-less side panel that has links to the global sections</li>
<li>Calendar is one big view, with overlay-able "sets" (our existing calendar model)</li>
<li>Advanced AJAX javascript for event creation</li>
<li>No support for non-JS/AJAX browsers</li>
<li class="removed">New blue/orange style sheet (sudo-WinXP like)</li>
<li class="removed">Better support for older browsers and javascript disabled ones</li>
</ul>
<h2>Kalens 1.1+</h2>
Calendar
<ul>
<li>Advanced recursion patterns (every Tuesday every other month)</li>
</ul>
<p>Email</p>
<ul>
<li>Built in spam-filtering that works off of occurrence-based logic patterns</li>
<li>RTF and HTML email sending (depends on Safari 2.0 support of WYSIWYG)</li>
<li>Inherit SpamAssassin (et al) spam tags</li>
<li>White/black listing for servers, IP's, and addresses (on the user and system level)</li>
</ul>
</body>
</html>