From: wolfgang Date: Wed, 3 Jan 2007 16:07:03 +0000 (+0000) Subject: initial sync X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=219ffc26210dcc8b83cb64733091c56b3bfa0060;p=scalable-opengroupware.org initial sync git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1005 d1b88da0-ebda-0310-925b-ed51d893ca5b --- diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..c532738d --- /dev/null +++ b/ChangeLog @@ -0,0 +1,1784 @@ +2006-12-22 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame + -composeAction]): method imported from removed container modules. + ([UIxMailMainFrame -mailFolderName]): method imported from removed + container modules. + + * UI/MailerUI/UIxMailPopupView.m: a new special popup component + for wrapping UIxMailView with the "popupview" action. + + * UI/MailerUI/UIxMailAccountView.m: renamed to UIxMailSplashView, + since its the component that displays the same splash screen than + the one in Thunderbird/Icedove. + + * UI/MailerUI/UIxMailAccountViewContainer.[hm], + UI/MailerUI/UI/MailerUI/UIxMailAccountsView.m, + UI/MailerUI/UIxMailListViewContainer.[hm], + UI/MailerUI/UIxMailViewContainer.[hm]: removed + +2006-12-20 Wolfgang Sourdeau + + * UI/WebServerResources/HTMLElement.js: replaced the functional + selectNode() and deselectNode() functions with select() and + deselect() methods of HTMLElement. + + * UI/WebServerResources/ContactsUI.js: cleanup, most of the + events are initialized from here now instead of in the HTML code. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -checkRightsAction]): new method similar to the one with the same + name in UIxCalMainView.m. + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -saveAclsAction]): added + code to handle the publishing of freebusy information. + +2006-12-19 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -checkRightsAction]): new action method that returns a + comma-separated list of boolean values matching the right of the + current user to "view" (as a permission) each foreign calendar + stored in his preferences. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:newOwner]): + new method that sets a customOwner, which can be returned with + ownerInContext it set. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): no longer set the owner of elements here. + +2006-12-15 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m: same as for SOGoContactFolders + below, but for the Contacts and Calendar collections. + + * SoObjects/SOGo/SOGoAclsFolder.m: convert the class to user the + new acl facilities method from sope-gdl/GCSFolder.m. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -roleOfUser:uidinContext:context]): new method that returns + SOGoRole_Assistant when the user is an assistant or a delegate on + the "personal" ab object. This is so that setting roles on the + SOGoContactFolders object is not required. + +2006-12-14 Wolfgang Sourdeau + + * Main/SOGo.m: declare "Freebusy" permissions for the top objects. + + * UI/Contacts/UIxContactsAclsSelection.m: new component specific + to the handling of the user selection for the acls. + + * SoObjects/SOGo/SOGoPermissions.[hm]: new module that extends the + values from SoPermissions with ones specific to SOGo. + + * SoObjects/SOGo/SOGoAclsFolder.[hm]: new class module that + handles the storage for the acls. + + * SoObjects/Appointments/SOGoCalendarComponent.[hm]: new parent + class for SOGoAppointmentObject and SOGoTaskObject. + + * UI/Common/UIxAclEditor.[hm]: new component that provides a + general editor for folder acls. + + * SoObjects/SOGo/NSString+Utilities.[hm]: old "NSString+URL" + renamed. + ([NSString -davMethodToObjC]): method that returns the method name + for a DAV property implementation. + + * SoObjects/SOGo/NSArray+Utilities.m: new extension module to + NSArray. + ([NSArray -stringsWithFormat:format]): new method that returns + formatted occurences of the strings stored in the array. + + * SoObjects/SOGo/SOGoDAVRendererTypes.m ([SOGoDAVSet + +davSetWithArray:newValuesofValuesTaggedAs:newValueTag]): a new + subclass module of SoWebDAVValue that supports collections of + properties of the same type. + +2006-11-21 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -lookupFolder:ofClassNamed:inContext:]): added the ability to + configure the name of the SOGoDraftFolders with the ud var + "SOGoDraftsFolderName". + +2006-11-17 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -userTimeZone:username]): new method that returns the timezone for + the specified user depending on his preferences and the server + defaults + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -stringForData:partInfo:]): take the encoding into account and + translate the text to "normal" before processing the charset data. + +2006-11-15 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: the progress indicator is on + when loading the page so we turn it off, and we turn it back on + whenever we switch to another module... + + * UI/WebServerResources/SchedulerUI.js: make sure the day view + synchronization mechanism works everywhere. + + * UI/WebServerResources/generic.js: the log window is not only + visible when UIxDebugEnabled is set. + + * UI/WebServerResources/SchedulerUI.js: the month overview's day + cells are now initialized with the DOM event interface methods + instead of with html attributes. + + * UI/Templates/MailerUI/UIxMailView.wox: don't display useless + headers (should be made configurable at some point)... + + * OGoContentStore/sql/generate-folderinfo-sql-for-users.sh: drop + "not null" constraint on startdate, enddate, isopaque, + participants and partmails. + +2006-11-14 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable + -hoursToDisplay]): prevent a crash by retaining the + "hoursToDisplay" array after it's created. + ([UIxCalDayTable -clickableHourCellClass]): new method for the new + clickable hours DIV. + + * UI/WebServerResources/SchedulerUI.js: made the event + participation status modification asynchronous, which also fixes a + bug where the window would sometimes close before the accept or + decline action was completed. Also, adapted the event handling + related to the days or weeks view with the new DIV-based layout. + + * UI/Scheduler/UIxCalInlineAptView.m: same as the first below... + + * UI/Scheduler/UIxCalDayTable.m: enhanced to provide the new + DIV-based presentation of the days and weeks. + + * SoObjects/Appointments/SOGoTaskObject.m: same as below... + + * SoObjects/Appointments/SOGoAppointmentObject.m: lookupName:... + might return an exception so we have to handle it if we don't + wanna crash... + +2006-11-13 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: updated the list + initialization code to use the new event management scheme, adding + what was missing to be able to delete events and tasks again. + + * UI/WebServerResources/MailerUI.js: added code to activate the + "Get mails" button. Fixed a bug which prevented messages to be + deleted. + + * UI/WebServerResources/UIxFreeBusyUserSelector.js: handle tab + navigation and focus handling of INPUTs. + +2006-11-10 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: added code to handle the + possible drag and drop events to manager in the mail module. + Moving messages, opening parent folders, ... + + * UI/WebServerResources/SOGoDragAndDrop.js: new file containing + the drag and drop manager as well as the interface to HTMLElement + to trigger drag and drop events. + + * UI/MailerUI/UIxMailView.m ([UIxMailView -moveAction]): new + action to move the current message to the mailbox named after the + value of parameter "tofolder". + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -moveToFolderNamed:folderNameinContext:]): new method base on + -trashInContext:. + +2006-11-09 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: added and activated many + "load" handlers to configure generic widgets used across the + modules. More events are now handled in a DOM-fashion way instead + of by setting the relative attributes in the templates. + + * UI/Templates/UIxSortableTableHeader.wox: all the events are + declared from the javascript DOM onload handlers. + + * UI/Templates/UIxPageFrame.wox: load the new SOGoDragHandles.js + library. + + * UI/Templates/MailerUI/UIxMailListView.wox: all the events are + declared from the javascript DOM onload handlers. + + * UI/MailerUI/UIxMailListView.m: removed all the JS methods since + we want everything to be separated from each other, as much as + possible. + + * UI/WebServerResources/SOGoDragHandles.js: new module containing + the "SOGoDragHandlesInterface", implementing methods that can be + attributed to DIV so that they can be used as drag handles. + + * SoObjects/Mailer/SOGoDraftObject.m ([NSString + -asQPSubjectString]): initialize the tmp strings with '0' to make + sure they don't contain garbage. + +2006-11-08 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: register the messageList + table as a dragging source and the leaf of the navigation tree as + dnd destinations to the DNDManager. + + * UI/WebServerResources/generic.js: initialize tabs from the + "unload" event listener that is added programmatically instead of + from the template... Also, added the new DNDManager object. + + * UI/WebServerResources/HTMLTableElement.js: added code to + simulate XUL drag n drop events. This code will possibly be moved + to HTMLElement.js instead later... + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): same as + below. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -_qualifierForFilter:filter]): only search records which starts + with the specified pattern. + +2006-11-07 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoDraftObject.m ([NSString + -asQPSubjectString]): new method that returns the special QP + string with its qp declaration for email subjects. + ([SOGoDraftObject -bodyPartForText]) + ([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): don't + double-encode data in UTF-8. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -newStartDate]): new method to determine the start date depending + on the URL parameters, the current day and the current time. + ([UIxComponentEditor -toolbar]): new method to determine the + filename of the toolbar that should be drawn depending on the + ownership and the list of attendees of the task/event wrt to the + current user... + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -setDayStartHour:aStartHour]): adjust the minutes to the next + quarter of hour, if not already set to a quarter. + + * UI/WebServerResources/UIxAppointmentEditor.js, + UI/WebServerResources/UIxTaskEditor.js: added code to manage start + date change. + +2006-11-03 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -loadValuesFromComponent:component]): handles access class + (privacy) and status. + + * UI/Contacts/UIxContactsListViewContainer.m + ([UIxContactsListViewContainer -additionalFolders]): return nil if + [self additionalAddressBooks] returns an empty string. + +2006-11-02 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView + rangesOf7Days]): enhanced and debugged algorithm to feed the array + with slices where the first day is still in the requested month. + + * UI/Templates/UIxPageFrame.wox: the logConsole is created only on + non-popup pages. + + * UI/SOGoUI/SOGoAptFormatter.m: added code to handle the display + of events in the day boxes of the calendar's monthly view. + + * SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject + -davContentType]): declare "text/calendar". + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -davContentType]): declare + "text/calendar". + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): certain + HTTP methods are handled by SOPE and requires nil to be returned, + this method now invokes the new + "requestNamedIsHandledLater:inContext:" method to check that. + ([SOGoAppointmentFolder + -requestNamedIsHandledLater:nameinContext:context]): new methods + that returns "YES" only for the "OPTIONS" http method (for now...). + ([SOGoAppointmentFolder -davComplianceClassesInContext:]): + overloaded method to append the "access-control" and + "calendar-access" DAV abilities to the initial declaration. + + * UI/Scheduler/UIxCalMonthView.[hm]: rewritten module entirely to + imitate the look of Sunbird/Lightning's monthly view. + + * UI/Scheduler/UIxCalMonthView.[hm]: renamed to + UIxCalMonthViewOld.[hm]. + +2006-11-01 Wolfgang Sourdeau + + * UI/Scheduler/UIxFreeBusyUserSelectorTable.m + ([UIxFreeBusyUserSelectorTable -currentContactHasStatus]): new + method. + ([UIxFreeBusyUserSelectorTable -currentContactStatusImage]): + returns an image name based on the participation status of the + current attendee. + + * UI/WebServerResources/SchedulerUI.js: same strip down as for + generic.js below. + + * UI/Contacts/UIxContactsListViewContainer.m ([UIxContactsListViewContainer -additionalAddressBooks]) + ([UIxContactsListViewContainer -additionalFolders]) + ([UIxContactsListViewContainer -setCurrentAdditionalFolder:newCurrentAdditionalFolder]) + ([UIxContactsListViewContainer -currentAdditionalFolder]): new + methods to handle the external addressbooks a user has subscribed + too, by retriving them from his preferences. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -updateAdditionalAddressBooksAction]): new method that updates the + user settings with the list of addressbook he has subscribed to. + + * UI/Contacts/UIxContactsAddressBooksSelection.m: new component + module for the address book selector. + + * UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added + a toolbar with two buttons ("add" and "remove") to manage the + additional addressbooks a user might subscribe to. + + * UI/WebServerResources/ContactsUI.js: added code to handle + "external addressbooks" from the Javascript point-of-view, by + extending existing methods and adding code for the "add ab" and + "remove ab" buttons. + + * UI/WebServerResources/generic.js: moved extensions methods to + DOM elements to separate files for better clarity. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -pageContentClasses]): + new method that returns "pageContent" as class, but also "popup" + for the DIV where the page content lies, so that we can manipulate + the content of popup's with CSS identifiers. + +2006-10-31 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView + -displayStyle]): new method that returns a string containing the + css style relative to the current appointment cell. This code is + currently inactive but might be reused later. + + * UI/WebServerResources/SchedulerUI.js: added code to handle the + display of the selected day (the day pointed by the mouse, or the + current day when changing the view). + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable + -dayCellClasses]): new method that returns a string containing the + css classes applicable to the current cell, depending on the + position of the day in the week, the day of today and the + requested day. + + * UI/Scheduler/UIxCalCalendarsListView.m ([UIxCalCalendarsListView + -currentContactAptBorder]): new method that returns the + appropriate border color for the specified user. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject + -saveContentString:contentStringbaseVersion:baseVersion]): + overloaded method that parse new events and detects if they have + an organizer or not. If they are new and have no organizer set + (Sunbird/Lightning...), the owner of the event is set as + organizer. + + * SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: new + category that provides facility methods and interfaces to the + AgenorUserManager. + + * SoObjects/Contacts/product.plist: give full access to ANY + authenticated user, not just the owner (to every objects...). + +2006-10-30 Wolfgang Sourdeau + + * UI/WebServerResources/UIxFreeBusyUserSelector.js: make sure + every replica widgets are declared as such to their master + counterpart. Take the days into account when displaying the time + range taken by the appointment. + + * UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent + -getICalPersonsFromValue:selectorValue]): method taken from + UIxFreeBusyUserSelector, that is shared both by + UIxFreeBusyUserSelector and UIxFreeBusyUserSelectorTable. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): reverted to search algorithm to search for events happening outside 0 or 1 (at most) boundary of the timerange. + + * UI/Scheduler/UIxFreeBusyUserSelectorTable.[hm]: new subcomponent + derived and taken as a subset of UIxFreeBusyUserSelector that + implements the table part of the FreeBusy view. Most of the + methods of UIxFreeBusyUserSelector relative to that table were + moved into UIxFreeBusyUserSelectorTable, which can also be used as + a standalone view for AJAX operations. + +2006-10-27 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): change reverted. + + * UI/Contacts/UIxContactEditor.m: check whether the client contact + folder has selector "globallyUniqueObjectId" before calling that + method. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): the "setVClass" NGVCard method really is "setClass" + instead. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -_searchAttributes]): fixed typo to + request the "streetAddress" instead of the "streetaddress". + ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): lookup + mails that *contain*, and not just *start with* the search + pattern. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): mark address returned from LDAP as the work address. + + * UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: made the whole + span covered with the anchor, not only the textual information + within. + + * UI/Templates/SchedulerUI/UIxCalMainView.wox: specify the type + argument (event or task) to newEvent in the appointmentListMenu. + Make the appointmentsListView display the appointmentsListMenu. + + * UI/SOGoUI/SOGoAptFormatter.m: enlarge the text size limit from + 12 to 50 before displaying "...". + ([SOGoAptFormatter -fullDetailsForApt::]): display location only + if its length > 0, whether location itself is nil or not... + ([SOGoAptFormatter -tooltipForApt::_refDate]): display information + of which the length > 0. + +2006-10-26 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAppointmentEditor.js: correctly handles + french and ISO dates. + + * UI/Scheduler/UIxFreeBusyUserSelector.[hm]: added code an ivars + from UIxContactSelector to handle contact lists (current and + additional contacts). + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -_freeBusyAsText]): added handling of an "additional"-named query + parameter that describe the number of additional days after + enddate that should be returned. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -_responseForResults:results]): give priority to results with + "c_uid" fields. If none returned, use the first contact received. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromEvent:_event]): changed "TENTATIVE" code to + 2 and "CANCELLED" to 0. + +2006-10-25 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAppointmentEditor.js: handle conversion + of start and end dates to short string dates. + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -readFreeBusyAction]): new method that returns an array of numbers + corresponding to the state in the freebusy of each "quarter of an + hour" between the "sday" and "eday" date parameters passed in the + url. This permits to handle the display of the freebusy with Ajax + mechanisms. + ([SOGoUserHomePage -_freeBusyAsText]): add 2 days to the end date + since the free busy displays 2 days ahead. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -contactSearchAction]): new action that returns the uid and the + username + email of the user whose name contain the value of the + "search" url parameter. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFreebusyInfosFrom:_startDateto:_endDate]): added fields + useful for the computing of the status of the freebusy. + + * UI/Scheduler/UIxFreeBusyUserSelector.m ([UIxFreeBusyUserSelector + -init]): new component that incarnates a user selector for events + inspired by the new one found in Thunderbird Lightning. + +2006-10-23 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: added code to enable or + disable anchor visually (following our internal algorithm). + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -init]): + added new "url" ivar with its classic accessors. + ([UIxComponentEditor -urlButtonClasses]): new method that returns + the class strings for the url button on the appointment/task + editor (depending on the validity of the url). + + * UI/Templates/SchedulerUI/UIxTaskEditor.wox, + UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: start rewriting + the template to match the Lightning's new task/appointment editor. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor -saveValuesIntoAppointment:_appointment]): initialize url from the components'url. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveValuesIntoTask:_task]): initialize url from the components'url. + +2006-10-20 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): perform the searchs on objects which start with instead of contain the lookup key. + + * SoObjects/Appointments/SOGoAptMailNotification.[hm]: work on + iCalEntityObject instances instead of just iCalEvent's. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): set ownership of returned records by adding an "owner" key to the resulting dictionaries. + + * SoObjects/SOGo/NSObject+Owner.[hm]: removed module since it's a + bad way of handling ownership that way. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): search also + on "cn", just like Mozilla. + +2006-10-19 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): + "to" should be retained, otherwise it will be autoreleased and a + crash will occur. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -writeAction]): updated method to fetch the card before initing + the snapshot. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): fixed to use NSNull instead + of NSNotFound. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor + -iCalStringTemplate]): start and due date are now optional. + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -setDayStartHour:aStartHour]): added a new "isDisabled" ivar with + appropriate accessors to be settable through the templates. + + * UI/Scheduler/UIxDatePicker.m ([UIxDatePicker -init]): added a + new "isDisabled" ivar with appropriate accessors to be + settable through the templates. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -availableCalendars]): new method that list the calendars to which + the user has subscribed. + ([UIxComponentEditor -componentOwner]): returns the owner of the + editted object. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): set the start and enddate of + quickentries to null whenever each or all of them are null, by + providing an impossible timestamp from with NSNotFound as value. + +2006-10-18 Wolfgang Sourdeau + + * UI/WebServerResources/UIxMailEditor.js: update the algorithm + that handles the creation of new fields with the new APIs and the + new node structure on the page. + + * UI/Scheduler/UIxAppointmentEditor.m, + UI/Scheduler/UIxTaskEditor.m: + refactored to user UIxComponentEditor as parent class. + + * UI/Scheduler/UIxComponentEditor.[hm]: new class module + containing the methods common to the UIxTaskEditor and the + UIxAppointmentEditor. + +2006-10-17 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -doCalendarQuery:context]): now supports + the handling of time-ranges. + + * UI/WebServerResources/ContactsUI.js: specify a notification type as + parameters when onConfirmContactSelection in invoked. + + * UI/WebServerResources/generic.js: specify a notification type as + parameters when onContactRemove in invoked. + + * UI/WebServerResources/SchedulerUI.js: when the user deselects + all calendars, select his entry. + +2006-10-16 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: edit and delete events + with their owner-relative urls. Generate a correct entry in the + css color table when a user is added to the calendars list. Put + the same color next to the user id. + + * UI/WebServerResources/generic.js: implemented some new helper + methods. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): don't delete + entries if their owner is not the current user. + + * UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView + -displayClasses]): return the correct class for the current event + representation depending on its owner. + + * UI/Scheduler/UIxCalCalendarsListView.m: added method to create + and associate a color for each user login depending on its + position in the list. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView + -currentRowCSSClass]): return the correct class for the current + row depending on the owner of the event. + + * UI/Contacts/UIxContactSelector.m ([UIxContactSelector + -setColors:colors]): new method to associate a color table with + each user in the list. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): associate each returned record with the owner of the table they are retrieved from. + + * SoObjects/SOGo/NSObject+Owner.[hm]: new extension module to + NSObject to associate an instance with a user. + +2006-10-13 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: added handling of multiple + calendars. + + * UI/WebServerResources/ContactsUI.js: added handling of + notification of changes to contact selectors. + + * UI/WebServerResources/generic.js: added handling of notification + of changes to contact selectors. + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -updateCalendarsAction]): proxy method to update the user + preference table with the new selected calendar uids. + + * UI/Contacts/UIxContactsListView.m ([UIxContactsListView + -calendarsContactsAction]): new method. + + * UI/Contacts/UIxContactSelector.m ([UIxContactSelector -setCheckedBoxes:boxes]) + ([UIxContactSelector -setHasCheckBoxes:aBool]) + ([UIxContactSelector -isCheckBoxChecked]): new accessors method to + permit the drawing of checkboxes instead of card icons. + + * UI/Scheduler/UIxCalCalendarsListView.m: new component class that + wrap a selector the the "Calendars" tab. + + * UI/Contacts/UIxContactsCalendarsSelection.m: buttons for the + new user calendar selector. + +2006-10-12 Wolfgang Sourdeau + + * UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: time ranges + may cover hour 0 to hour 23. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -iCalStringFromQueryParameter:format:]): dates explicitly set to + utc tz. + + * UI/WebServerResources/SchedulerUI.js: manage both lists of + objects wrt to the toolbar actions. + + * UI/WebServerResources/generic.js: added code to the "String" + class to decode number-encoded char entities. + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -batchDeleteAction]): new method to delete selected entries in the + lists. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): new method + that delete identified entries in batch. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -jsCloseWithRefreshMethod:methodName]): new method with explicit purpose. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]), + UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -saveAction]), UI/MailerUI/UIxMailEditor.m ([UIxMailEditor + -sendAction]), UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -saveAction]): + return a UIxJSClose component if everything went fine. + + * UI/Scheduler/UIxTaskEditor.h: interface extracted from + UIxTaskEditor.m. + + * UI/Scheduler/UIxAppointmentEditor.h: interface extracted from + UIxAppointmentEditor.m. + + * UI/Common/UIxJSClose.[hm]: new UIxComponent designed to display + a very light page with javascript code to close a window, by + calling a method on the opener if specified. This component is + designed to work as a response to form postings. + +2006-10-11 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoTaskObject.[hm]: clone of + SOGoAppointmentObject adapted for the handling of tasks. + + * SoObjects/Appointments/NSArray+Appointments.[hm]: category + extracted from SOGoAppointmentObject. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -saveUrl]): returns the url needed to POST the new form to. + redirect the user to /editAsAppointment instead of /edit, + so that SOGoAppointmentFolder can return the correct object type. + + * SoObjects/SOGo/NSObject+AptComparison.m ([NSObject + -compareAptsAscending:_other]): accept empty start or end dates. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): added a "component" parameter to match the query against the specified component types. Made startDate and endDate optional by ignoring them altogether in the query whenever one of them is nil. + ([SOGoAppointmentFolder -doCalendarQuery:context]): fetch + components of type "vtodo" as well as "vevent". + ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): if the + url specified ends with AsTask or AsAppointment, returns the + an object of the appropriate class, otherwise deduce it from its + content if the HTTP method is "PUT", otherwise read its type from + the quick table. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): extract quick fields from + tasks. + + * UI/Scheduler/UIxCalView.m ([UIxCalView + -fetchCoreAppointmentsInfos]): replacement methods for + fetchCoreInfos but by retrieving object with component "vevent". + ([UIxCalView -fetchCoreTasksInfos]): same as above for "vtodo" + components. + + * UI/Scheduler/UIxCalTasksListView.[hm]: clone of + UIxCalAptListView adapted for the handling of tasks. + + * UI/Scheduler/UIxTaskProposal.[hm], + UI/Scheduler/UIxTaskView.[hm], UI/Scheduler/UIxTaskEditor.[hm]: + clones of the UIxAppointment* classes for the handling of tasks. + + * UI/WebServerResources/UIxTaskEditor.js: clone of + UIxAppointmentEditor adapted for the handling of tasks. + + * UI/WebServerResources/SchedulerUI.js: added support for tasks. + Scroll the daily view to the appropriate hour when an appointment + is selected in the appointments list. + +2006-10-05 Wolfgang Sourdeau + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -setDayStartHour:aStartHour]): specifies the user timezone on the + given date. + + * UI/Scheduler/UIxAppointmentEditor.m: indicate DTSTAMP with "GMT" + as timezone. + + * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate -adjustedDate]) + ([NSCalendarDate -driftedDate]): methods made useless by a better + comprehension of the NSTimeZone API... + +2006-10-04 Wolfgang Sourdeau + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): call + new methods from the NSCalendarDate methods. + + * SoObjects/SOGo/NSCalendarDate+SOGo.m: module replacing and + extending UI/Scheduler/NSCalendarDate+Scheduler.m. + ([NSCalendarDate + +dateFromShortDateString:dateStringandShortTimeString:timeStringinTimeZone:timeZone]): new method that generates a date from two short string formatted as follow: "yyyymmdd" and "hhmm". Thismethod replaces a similar method from UIxComponent (noted below). + ([NSCalendarDate -adjustedDate]): this method returns another + instance set to the correct hour after the original date was set + from a non-GMT timezone. This date can be used for storage. + ([NSCalendarDate -driftedDate]): this method does exactly the + opposite of -adjutedDate, that is, it enables the method + hourOfDay, minuteOfHour etc... to return the values according to + the original date's timezone. This date CANNOT be used for storage. + + * UI/Scheduler/NSCalendarDate+Scheduler.m ([NSCalendarDate + -shortDateString]): new method that will return a "short date + string" (yyyymmdd) from a calendar date object. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -_cDateFromShortDateString:dateStringandShortTimeString:timeString]): new method to compute the selected date from the "day" and "hm" query parameters (if found). This method replaces the old algorithm that was found in the "selectedDate" method. + + * Main/sogod.m (main): initialize the NSTimeZone's defaultTimeZone + to the value of SOGoServerTimeZone or "Canada/Eastern" if not found. + +2006-10-03 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: added code to scroll the + view of the day at the height of hour 8:00. + + * UI/Scheduler/UIxCalView.m ([UIxCalView -dayStartHour]): returns 0. + ([UIxCalView -dayEndHour]): returns 24. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView -defaultAction]) + ([UIxContactFoldersView -newAction]): invoke + _selectActionForApplication: on self with the proper attribute too. + + * UI/Contacts/UIxContactsSelectionViewContainer.m: removed since + we now use the action mechanism in UIxContactsListView to keep the + same view for the contact selectors and the regular contact view. + + * UI/Contacts/UIxContactsListViewContainer.[hm]: replaces + UIxContactsListViewContainerBase.[hm] + + * UI/Contacts/UIxContactsListView.[hm]: replaces UIxContactsListViewBase.[hm] + + * UI/WebServerResources/generic.js: generalized emailstring + handling functions. Generalized address book access functions. + + * UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase + -isPopup]): return YES if the "popup" query parameter is set. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -defaultAction]): keep the url parameters when redirecting. + ([UIxContactFoldersView -selectForSchedulerAction]) + ([UIxContactFoldersView -selectForMailerAction]): new action + methods for the /scheduler-contacts and /mailer-contacts invocations. + + * SoObjects/SOGo/SOGoObject.m: compose the action url using the + newly available NSString+URL category. + + * SoObjects/SOGo/NSDictionary+URL.m ([NSDictionary + -asURLParameters]): handle dictionary entries which could be + instances of NSArray rather than NSString. + + * SoObjects/SOGo/NSString+URL.m ([NSString + -composeURLWithAction:actionparameters:urlParametersandHash:useHash]): when composing the url, remove the encoded parameters first since they will be added later. + ([NSString -urlWithoutParameters]): new method that returns the + url without its parameters. + + * SoObjects/SOGo/NSString+iCal.h: deleted obsolete file. + + * SoObjects/SOGo/NSDictionary+URL.[hm], + UI/SOGoUI/NSString+URL.[hm]: moved from UI/SOGoUI/. + + * UI/WebServerResources/UIxMailEditor.js: add support for + additions of different types (to, cc, bcc) of recipients from the + address book. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): added the + " + + * UI/WebServerResources/ContactsUI.js: hide the current contact + whenever the user changes of contact folder. + + * UI/WebServerResources/UIxContactEditor.js: the contact UID is + now provided by the template when loading the page. + + * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager + -iCalPersonWithUid:uid]): new method taken from removed module + 'iCalPerson+UIx'; + +2006-09-28 Wolfgang Sourdeau + + * UI/Scheduler/UIxAppointmentView.m ([UIxAppointmentView + -categoriesAsString]): same as below. + + * UI/Scheduler/UIxAppointmentEditor.m: adapted by using the new + vcalendar API's iCalEvent instead of the removed SOGoAppointment. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -calendarFromContent:cnt]): new helper method. + ([SOGoAppointmentObject -firstEventFromCalendar:calendar]): new + helper method. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -doCalendarQuery:context]): added a + hackish test to detect whether the request concernes VEVENT's or + anything else. Return events only in the former case. + ([SOGoAppointmentFolder + -fetchOverviewInfosFrom:_startDateto:_endDate]): retrieve the + c_name quickfield so that the calendar list can identify the + appointments with their complete "filename". + + * OGoContentStore/OCSiCalFieldExtractor.m: use CardGroup's + groupsOfClass:fromSource: to parse the given vcalendar. + + * UI/Scheduler/iCalRecurrenceRule+SOGo.m: removed obsolete class. + + * UI/Scheduler/SOGoAppointment+UIx.h: removed obsolete class. + + * SoObjects/SOGo/SOGoAppointmentICalRenderer.[hm]: removed + obsolete class. + + * SoObjects/SOGo/SOGoAppointment.[hm]: removed obsolete class. + +2006-09-26 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): be + sensitive to the CalDAV method names. + ([SOGoAppointmentFolder -doCalendarQuery:context]): method for the + "calendar-query" CalDAV method name. + + * UI/WebServerResources/ContactsUI.js: removed a lot of useless + code coming originally from MailerUI.js. + + * UI/WebServerResources/UIxContactEditor.js: imitate the + Thunderbird address book by completing the display name with the + content of the first and last name fields, until the display name + is modified manually. + + * UI/WebServerResources/generic.js: added a "trim" method to the + String class. + + * UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase + -displayName]): new method that returns the display name from "cn" + or from the "displayName" key if found. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -initSnapshot]): check if "[card n]" returns anything to avoid a + crash. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): new method + that returns an unparsed doctype definition for the pages. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): set the card's fn to attribute "displayName" if found + before "cn". + +2006-09-20 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): handle the "streetAddress" and "l" fields. + + * UI/Templates/MailerUI/UIxMailEditor.wox: arranged the message + header fields by converting the tables to DIVs and SPANs. + + * UI/WebServerResources/generic.css: attempted unification of font + families and size across all the elements. changed the + logConsole's "position" from "fixed" to "absolute" to avoid + performance issues. + +2006-09-19 Wolfgang Sourdeau + + * UI/WebServerResources/ContactsUI.js (uixDeleteSelectedContacts): + empty the contact view when the current contact is being deleted. + + * UI/WebServerResources/MailerUI.js (newContactFromEmail): fully + parse the email field and provide the address full name if found + as the "contactFN" parameter. + + * UI/WebServerResources/generic.js (openMailTo): do not give a + name to the opened window so that serveral ones can be opened at + the same time. + + * UI/MailPartViewers/UIxMailPartTextViewer.m + ([UIxMailPartTextViewer -flatContentAsString]): override method by + replacing carriage returns with "
" in the result string from + super's implementation. + + * UI/Contacts/UIxContactView.m ([UIxContactView + -_urlOfType:aType]): don't manage non-mailto urls through + javascript, let the user decide what's best for him. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -newAction]): transfer all the query parameters by using the + "asURLParameters"'s result string from [self queryParameters]. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -initSnapshot]): retrieve "contactEmail" and "contactFN" from the + query parameters and put their values (if any) into the snapshot. + + * UI/Contacts/UIxContactView.m ([UIxContactView -note]): convert + carriage-returns to "
". + ([UIxContactView -workCompany]): explicitly initialize company to + nil if org is nil or empty. + + * UI/WebServerResources/UIxContactEditor.js: updated validation + code after we added and renamed some fields. + + * UI/WebServerResources/ContactsUI.js: added code to cache contact + cards and to handle card updates. + +2006-09-18 Wolfgang Sourdeau + + * UI/Contacts/UIxContactView.m ([UIxContactView -hasOtherInfos]): + test the length of the returned string since they will never be + nil. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveAction]): + return self if the process went successful, returns an exception + otherwise (and only otherwise...). + + * OGoContentStore/OCSContactFieldExtractor.m + ([OCSContactFieldExtractor -extractQuickFieldsFromVCard:_vCard]): + adapted method to the new VCard api. Since the cards are stored in + vcard format, we no longer deal with a dictionary but with a + NGVCard object... + +2006-09-15 Wolfgang Sourdeau + + * UI/Contacts/UIxContactView.m ([UIxContactView -preferredEmail]): + return a string with a "mailto" url. + ([UIxContactView -_urlOfType:aType]): generic method to return a + url string with a html anchor pointing to it. + + * UI/Contacts/UIxContactEditor.[hm]: UIxContactEditorBase renamed + since subclass "UIxContactEditor" did nothing. Implemented code to + display and modify the values parsed from the vcards, displayed in + a way similar to the Thunderbird addressbook. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -save]): new dummy method. + + * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry + -save]): made method void. + +2006-09-13 Wolfgang Sourdeau + + * UI/Contacts/UIxContactView.m: added many wrapper methods to + display blocks of data à la Thunderbird Addressbook. If data is + available, those wrappers (around the NGVCard methods) will + enclose the results in a proper HTML output with the correct label + (if present), otherwise it will return an empty string. + ([UIxContactView -vcardAction]): new action to return the contact + as text/vcard (for exporting). + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + +contactEntryWithName:aNamewithLDAPEntry:anEntryinContainer:aContainer]): adapted the mapping of the LDIF data with the new NGVCard API. + + * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry + -vCard]): create a new NGVCard instance when no data is available + and retain it. + ([SOGoContactGCSEntry -save]): save the vCard using the new + "versitString" API method/message. + + * UI/Contacts/UIxContactView.h: separated interface from + UIxContactView.m. + + * UI/WebServerResources/ContactsUI.js: add-ed code to download card + views and display them beneath the list. + +2006-09-08 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -userTimeZone]): retain + the timezone even when it's the server timezone. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -privateContacts:inContext:]): no long configure the calendar + object with the user's timezone since it's now accessible + application-wide throught the SOGoObject methods. + + * UI/SOGoUI/UIxComponent.[hm]: removed the "viewTimeZone" ivar and + method. Removed the "backendTimeZone" method. + + * UI/MainUI/SOGoUserHomePage.[hm]: made a subclass of UIxComponent + instead of SoComponent. + + * SoObjects/Appointments/SOGoAppointmentObject.m: + ([SOGoAppointmentObject -viewTimeZoneForPerson:_person]): returns + [self serverTimeZone] instead of "EST" (which was removed). + + * SoObjects/Appointments/SOGoAppointmentFolder.[hm]: removed the + "timeZone" ivar and its accessors. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -serverTimeZone]): new + centralized method returing the timezone configured in the + userdefaults db or "Canada/Eastern" if missing. + ([SOGoObject -userTimeZone]): new centralized method returing the + timezone of the current user or the server timezone if missing + from the user configuration table. + +2006-09-07 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: implemented caching of + date selectors. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]): + return a path based on the object's context instead of the first + level in SOGo's object hierarchy... + +2006-09-06 Wolfgang Sourdeau + + * UI/Templates/SchedulerUI/UIxCalDayTable.wox: day columns can now + be clicked. + + * UI/Templates/SchedulerUI/UIxCalDateSelector.wox: pass the user's + timezone ([self viewTimeZone]) to the WEMonthOverview component to + avoid a confusion with the days. + + * UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: appointments + can now be clicked. + + * UI/WebServerResources/SchedulerUI.js: implemented a mechanism to + imitate Sunbird's synchronization between the 3 visible views. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): make + sure the numbers in dateString are formatted so as to take 4 chars + for the year and 2 for the day and the month, otherwise + NSCalendarDate will return a nil date. + ([UIxComponent -applicationPath]): return a path based on the + object's context instead of the second level in SOGo's object + hierarchy... + +2006-09-05 Wolfgang Sourdeau + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): add the + user's timezone abbreviation to the date string passed as parameter to + NSCalendarDate to generate an accurate date instance. Do the same + when no date is specified and today is chosen. + + * UI/WebServerResources/UIxAppointmentEditor.js: convert the + form's time values to integers before comparing them. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -currentStartTime]) + ([UIxCalAptListView -currentEndTime]): initialize the resulting + dates timezone with [self viewTimeZone]. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -init]): new + "viewTimeZone" ivar destined to hold an instance of the user's + timezone in memory. + ([UIxComponent -viewTimeZone]): take the timezone from the user's + prefs. + +2006-08-30 Wolfgang Sourdeau + + * UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: completely + rearranged the layout. + + * UI/WebServerResources/UIxAppointmentEditor.js: added code to + manage showing and hiding appointment details. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -privateContacts:inContext:]): init the SOGoAppointmentFolder's + timezone by taking the current user's timezone setting. + + * SoObjects/Appointments/SOGoAptMailNotification.m: same as below. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -changeParticipationStatus:inContext:]): + set default timezone to EST, although this code should be + rewritten to handle a system and a user default value. + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -takeValuesFromRequest:_rqinContext:_ctx]): enhanced method to + take the values from the hour and minute INPUTs when data is + POSTed since we no longer use the UIxTimeSelector component. + ([UIxTimeDateControl -selectableHours]) + ([UIxTimeDateControl -selectableMinutes]): new methods used by the + template SELECTs to display reasonable and acceptable values + instead of all the possibilities. + + * UI/WebServerResources/generic.js: adapted code for the new + implementation of the UIxContactSelector component (added a + "remove" button, removed the previous INPUT and replaced them with + links of class "button"). + + * UI/Scheduler/UIxTimeDateControl.h: separated interface from + UIxTimeDateControl.m. + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -currentAppointmentDay]) + ([UIxCalDayTable -currentAppointmentHour]): new methods that + returns correctly formatted values used as attributes for JS code. + + * UI/Contacts/UIxContactSelector.m ([UIxContactSelector + -initialContactsAsString]): renamed implementation of + initialParticipants. + ([UIxContactSelector -currentContactId]) + ([UIxContactSelector -currentContactName]): new methods used when + listing the initial contacts in the widget. Currently, both return + the person's cn but the latter should ultimately return a user + fullname. + + * UI/Contacts/UIxContactSelector.h: separated interface from + UIxContactSelector.m. + + * UI/Scheduler/UIxDatePickerScript.[hm]: component removed since + all javascript code is now put in Scheduler.js/generic.js. + + * UI/Scheduler/NSCalendarDate+UIx.[hm]: category removed, code + moved into NSCalendarDate+Scheduler instead. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -setTimeZone:newTZ]): new method to + configure the timezone from SOGoUserFolder when the instance is + being created. + ([SOGoAppointmentFolder -viewTimeZone]): MET was removed. Returns + the value of the new "timezone" ivar. + +2006-08-25 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.{css,js}: added a tabview with + the date selector in the first page and the container of the + future calendar selector in the second page. + + * UI/WebServerResources/generic.js: added code for handling tabbed + views. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -productFrameworkName]): + returns the bundle name associated to the current running product. + +2006-08-24 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAppointmentEditor.js: fixed the AJAX + exception by invoking a timeout on the opener rather than invoking + the list refresh method. + + * UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): + removed method. + + * UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -weekBeforePrevWeekQueryParameters]) + ([UIxCalWeekView -prevWeekQueryParameters]) + ([UIxCalWeekView -nextWeekQueryParameters]) + ([UIxCalWeekView -weekAfterNextWeekQueryParameters]): new methods + that return the dates relatively to the current day. + ([UIxCalWeekView -lastWeekName]) + ([UIxCalWeekView -currentWeekName]) + ([UIxCalWeekView -nextWeekName]) + ([UIxCalWeekView -weekAfterNextWeekName]) + ([UIxCalWeekView -_weekNumberWithOffsetFromToday:offset]): new + methods that returns the label for the corresponding weeks. + + * UI/Scheduler/UIxCalDayTable.[hm]: new class module/component + used by UIxCalDayView and UIxCalWeekView to display the events + occuring in one or more days. + +2006-08-22 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.m: extended class to populate the + entries in the new "monthMenu" and "yearMenu". + + * UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): new + method to return the current day as a string formatted depending + on the current locale. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate]) + ([UIxCalAptListView -endDate]): "today" is now the default filter + for displayed events. + ([UIxCalAptListView -currentSerialDay]): new method returning the + date of the current enumerated appointment in serial form + (yyyymmdd). + + * UI/WebServerResources/SchedulerUI.js: added code to select the + relevant day when an appointment is selected. Added code to popup + a month and a year menu whenever the header entries are clicked in + the calendar widget. + + * UI/WebServerResources/generic.js: made addClassName and + removeClassName methods of HTMLElement. + +2006-08-21 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: fixed the contact creation + from email addresses. + + * UI/WebServerResources/generic.js: centralized the search-related + functions here since the same code was used across the 3 + applications. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate]) + ([UIxCalAptListView -endDate]): return the required dates needed + depending on the value given to the "filterpopup" url parameter. + + * UI/Common/UIxToolbar.m ([UIxToolbar -buttonLabel]): reduced the + code by invoking UIxComponent's labelForKey:. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -labelForKey:]): use + [self pageResourceManager] instead of [self resourceManager]. + + * UI/Contacts/UIxContactEditorBase.m: invokes + globallyUniqueObjectId on the clientobject's class instead of the + hardcoded "SOGoFolder". + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -newAction]): redirect the "new" action to the personal (default) + contact folder. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + +objectWithName:inContainer:]): new constructor. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -lookupContactWithId:recordId]): always create a contact object, + even if it does not exist. + +2006-08-18 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.[hm]: new class to serve as a pseudo + component that lays out the different components of SOGoCalendar. + Only serves as an Objective-C counterpart to its xml template. + + * UI/Scheduler/UIxCalInlineMonthOverview.h: interface extracted + from its .m file. + + * UI/Scheduler/UIxCalFilterPanel.[hm]: new class designed to + display a widget to handle the information displayed in the + appointments list. Not currently used, lacks implementation. + + * UI/Scheduler/UIxCalDateSelector.[hm]: new class designed to + display a calendar as a dynamic widget from where one can select + the current visible day. + + * UI/Scheduler/NSCalendarDate+Scheduler.[hm]: category code + extracted from UIxCalInlineMonthOverview.m. + + * UI/Scheduler/UIxDatePicker.m: removed the jsPopup, jsCode and + calendarPageURL methods. The javascript code is handled by .js + files as much as possible... + + * UI/WebServerResources/ContactsUI.js, + UI/WebServerResources/MailerUI.js: adapted to the code refactoring + in generic.js. + + * UI/WebServerResources/SchedulerUI.js: implemented functions to + handle the new widgets. XmlHTTPRequest code taken from + MailerUI.js. + + * UI/WebServerResources/generic.js: put some functions related to + element selections as methods to HTMLElement and HTMLTableElement. + + * UI/Scheduler/UIxCalAptListView.[hm]: new class designed to + display the list of appointments (embodies the code-size of + UIxCalAptListView; answers to the "aptlist" method). + +2006-08-15 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalWeekOverview.m ([UIxCalWeekOverview + -correctURLAction]): new short action method replacing the method + below by taking far less code. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -GETAction:]): removed method. Replaced + with an action in the view-related code. + + * UI/Scheduler/UIxAppointmentEditor.m: invoke + "stringByEscapingHTMLString" on the resulting value to avoid + issues with accented characters. + ([-jsCode]): removed method since the javascript code was merged + into SchedulerUI.js. + +2006-08-14 Wolfgang Sourdeau + + * UI/Scheduler/iCalPerson+UIx.m ([iCalPerson +personWithUid:]): + new class method that returns an iCalPerson based on the UID given + as param. + + * UI/Contacts/UIxContactsListViewContainerBase.m: + UIxContactsListViewContainer renamed to serve as a base class for + the contact lists in both the contact editor and the contact + selectors. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -LDAPSetHostname:setPort:setBindDN:setBindPW:setContactIdentifier: + setUserIdentifier:setRootDN:]): an LDAP field specifying the + loginname of the users can now be specified. + + * UI/WebServerResources/generic.js: added code to manage contact + lists through the new implementation of the UIxContactSelector. + + * UI/Templates: put the templates related to SchedulerUI in its + own directory. + + * SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry + -asDictionaryWithAttributeNames:withUID:andCName:cName]): add an + entry for "uid" with the field name representing the login name of + the user in the corresponding LDAP branch. + +2006-08-10 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -lookupName:_keyinContext:_ctxacquire:_flag]): when the HTTP + request is a PUT, always create an entry, even if we're not sure + it does exist. + +2006-08-09 Wolfgang Sourdeau + + * UI/WebServerResources/ContactsUI.js: implemented live-search. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -appendSystemSourcesInContext:context]): populated method with + code that creates entries mapped to instances SOGoContactFolder, + based on the configuration found in the NSUserDefaults under the + key "SOGoLDAPAddressBooks". + ([SOGoContactFolders + -lookupName:nameinContext:contextacquire:acquire]): + "contactsources" do not exist anymore, SOGoContactFolder was split + into two classes: SOGoContactGCSFolder and SOGoContactLDAPFolder + and one protocol: SOGOContactFolder, instead. + ([SOGoContactFolders -contactFolders]): new accessor used by the + views of SOGoContactXXXFolder to list the possible sources. + + * SoObjects/Contacts/SOGoContactObject.h: new protocol that + defines the methods that UIxContactsView, ..Editor and so on... + can expect. + + * SoObjects/Contacts/SOGoContactFolder.h: new protocol that + defines the methods that UIxContactsListViewBase expects as well + as the data fields returned in the contact lists. + + * SoObjects/Contacts/SOGoContactLDAPFolder.[hm]: new class that + returns entries an LDAP server. Conforms to the new + SOGOContactFolder protocol. + + * SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: new class that + returns a vCard based on contact entries from an LDAP server. + Conforms to the new SOGOContactObject protocol. + + * SoObjects/Contacts/NGVCardSimpleValue+Contact.m + ([NGVCardSimpleValue -vCardEntryString]): generates the correct + entry for the textual representation of the vCard. + + * SoObjects/Contacts/NGVCardSimpleValue+Contact.[hm]: new class + extension. + + * SoObjects/Contacts/SOGoContactGCSEntry.[hm]: new module name of + "SOGoContactObject". + + * SoObjects/Contacts/NGVCard+Contact.m ([NGVCard -asString]): new + method that generates a textual representation of the vcard. + + * SoObjects/Contacts/NGVCard+Contact.[hm]: new class extension. + + * SoObjects/Contacts/SOGoContactGCSFolder.[hm]: new module name of + "SOGoContactFolder". + + * SoObjects/Contacts/SOGoContactSource.h, + SoObjects/Contacts/SOGoPersonalAB.[hm]: unused classes and + protocols. + + * SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry + -singleAttributeWithName:key]): new method that returns the first + object associated with an ldap key (where generally one value is + returned by key). + ([NGLdapEntry + -asDictionaryWithAttributeNames:attributeNamesandCName:cName]): + map the entry into an NSDictionary for processing by + UIxContactsListViewBase.m with the least possible overhead. + + * SoObjects/Contacts/NGLdapEntry+Contact.[hm]: new class + extension. + +2006-08-04 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -privateContacts:inContext:]): now returns an instance of + SOGoContactFolders. + + * UI/Contacts/UIxContactsListViewContainer.m + ([UIxContactsListViewContainer -contactFolderName]): new method to + return the absolute path to the current contact folder, called + from within the template. + + * UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added + JS code to initialize the 'currentContactFolder' generic var. + + * SoObjects/Contacts/SOGoContactFolder.m ([SOGoContactFolder + +contactFolderWithSource:inContainer:andName:]): new class + method meant to return an instance connected to the specified + source. Currently useless but won't be anymore in the next few + days. + + * SoObjects/SOGo/SOGoUserFolder.h: commented out declaration of + the "lookupFreeBusyObject" method since it does not exist. + + * UI/Contacts/UIxContactFoldersView.[hm]: new class module serving + as a "view" for the SOGoContactFolders object. Does nothing but + redirect the browser to the URL of the personal address book of + the user. It does not even have a template. + + * SoObjects/Contacts/SOGoPersonalAB.[hm]: new class module + implementing the SOGoContactSource protocol. Does nothing + currently but will be used to implement access to the personal + address book of the user stored in the SOGo database. + + * SoObjects/Contacts/SOGoContactSource.h: new "SOGoContactSource" + protocol defining an API common to all possible types of contact + sources. + + * SoObjects/Contacts/SOGoContactFolders.[hm]: new class module + serving as the root of the contact folders available to the + current user. Correctly lists the contact sources in webdav. + +2006-08-03 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailAccountsView.m ([UIxMailAccountsView + -composeAction]): new action method that permits external object + to write a message from the default (primary) account. + + * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase + -initSnapshot]): new method with code taken from "defaultAction" + but needed for others. + ([UIxContactEditorBase -writeAction]): new action designed to + compose the correct URL needed to obtain the MailerUI's email + editor with the correct "mailto" parameter. + + * UI/Common/UIxSortableTableHeader.m: moved from MailerUI to + Common so that other modules can use it. + + * UI/Contacts/UIxContactsListViewContainer.m: container to make it + easier to manage both ajax and non-ajax requests. + + * UI/Contacts/UIxContactsFilterPanel.m: clone of + UIxMailFilterPanel, but applicable to contact lists. + + * SoObjects/Contacts/NSDictionary+Contact.m ([NSDictionary + -vcardContentFromSOGoContactRecord]): use the new standard methods + created for each type of entry. If a line is determined to not + contain information, it will be skipped. + + * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager + +initialize]): init defaultMailDomain with the user default + "SOGoDefaultMailDomain". + +2006-08-02 Wolfgang Sourdeau + + * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase + -saveAction]): reorganized methods to only have ONE return point. + Invoke saveRecord: directly on the clientObject instead of + saveContentString, which does the same thing anyway. + + * SoObjects/Contacts/NSDictionary+Contact.m + ([NSDictionary -vcardContentFromSOGoContactRecord]): extension + method to convert the dictionary returned with the user submission + to a record in VCARD format to be stored in the database. + +2006-08-01 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: when opening the context menu + of the message list, select the message below the mouse cursor and + deselect the other selected messages temporarily. This mimics the + behaviour of Thunderbird for that matter and was already + implemented for the entries of the folder tree. + + * UI/MailerUI/UIxMailFolderMenu.m ([UIxMailFolderMenu + -iconForMenuItem]): new method that returns the fully qualified + relative URL to the icon representing the mailbox, or the default + mailbox icon if needed. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -urlForResourceFilename:filename]): automatically return an empty + string whenever the filename passed as argument is nil. + + * UI/WebServerResources/MailerUI.js: open the mailboxes with the + "desc" parameter set to 1 so that they are sorted in descending + order by default. Also, added "onHeaderClick()", triggered by + clicking on the message list header elements. + + * UI/MailerUI/UIxMailSortableTableHeader.m + ([UIxMailSortableTableHeader -isSortedDescending]): same as below. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -isSortedDescending]): defaults to "YES" when the sort order is + not specified. + +2006-07-31 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: + - message cache: set the max num of cached messages to 20. Limit + the cached message size to 30000 bytes. + - ajax: when a message request is called while one is already + being performed, the latter will be cancelled. Idem when + retrieving the content of a mailbox. + - folder tree: when a mailbox is selected because of the URL + requested (initMailboxSelection), the dtree is expanded throughout + the mailbox entry's parent hierarchy to ensure it is made visible + when the page is being displayed. (new function: expandUpperTree). + - mailbox loading: when loading a mailbox where a message was + previously selected, we invoke its url with the "pageforuid" + parameter correctly specified. During callback processing, we scan + the table for the related row and reselect it. + Also, the message area is set blank before loading any mailbox. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -defaultAction]): if the "pageforuid" parameter is passed in the + url, take its value and invoke [self firstMessageOfPageFor:] + consequently to deduce the first message to display. Otherwise, + set it to "idx", otherwise set it to 0. + ([UIxMailListView -firstMessageOfPageFor:]): new method + that determines the first message of the page where the message + passed as parameter is contained. + + * UI/WebServerResources/UIxMailListView.js: removed this module, + its code was put in MailerUI.js instead. + +2006-07-28 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailFolderMenu.m: a descendent of UIxMailTree + which returns the nodes for the parent specified in "parentMenu". + Used to generate the javascript code for the folder dtree. + + * UI/Templates/MailerUI/UIxMailPanelFrame.wox: the components + using that container-template are now using UIxMailMainFrame + since UIxMailPanelFrame had no real interest. File removed. + + * UI/WebServerResources/dtree.{css,js}: new files to handle + javascript-generated mailbox tree. Modified from original version + by integrating the previous code with the one we are using for + selections and mailbox handling. Minor visual enhancements too... + +2006-07-25 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoUser+Mail.m: if only one identity is to be + returned, put it in an NSArray before returning it (fixes + bug#217). + +2006-07-24 Wolfgang Sourdeau + + * UI/SOGoUI/NSString+URL.m ([NSString -hostlessURL]): new method + that returns a url string stripped from its "http://hostname" + prefix. + + * UI/SOGoUI/NSDictionary+URL.[hm]: moved from UI/Common. + + * UI/SOGoUI/NSString+URL.[hm]: moved from UI/Common. + +2006-07-17 Wolfgang Sourdeau + + * UI/MailerUI/WOContext+UIxMailer.m ([WOContext + -mailDateFormatter]): retrieve the timezone from the user settings + and pass it to the returned dateFormatter. Also, the dateFormatter + is kept in a static variable to avoid useless + creations/destructions. + + * UI/MailerUI/UIxMailFormatter.m ([UIxMailDateFormatter + -setTimeZone:newTimeZone]): new accessor to specify the timezone. + + * UI/MailerUI/UIxMailFilterPanel.m ([UIxMailFilterPanel -setSearchCriteria:]) + ([UIxMailFilterPanel -searchCriteria]): new methods, similar to + s/Criteria/Text/ to handle the "criteria" form parameter. + +2006-07-11 Wolfgang Sourdeau + + * UI/WebServerResources/uix.css: enhanced the toolbar appearance + to integrate better with the firefox look&feel. Added entries for + the new "menu" DIV class (popup menus). + + * UI/WebServerResources/generic.js: added "sanitizeMailTo" which + takes any chunk of text as param, detects the user email and the + optional first and last names and return them in a well-formatted + way. Renamed "getSelection" to "getSelectedNodes" to avoid a + namespace conflict. Added "onMenuClick(node, event, menuId)" to + handle popup menus through "onclick" element attributes (node = + this, event = event and menuId = name of the menu DIV id to + popup). + + * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase + -snapshot]): add an entry for "email" into the snapshot + dictionary if a "contactEmail" URL parameter was detected and if + the entry for "email" is empty. + + * UI/Contacts/Toolbars/SOGoContactFolder.toolbar: the "new card" + button now invokes the newContact() js function in ContactsUI.js + instead of opening "new" directly. newContact() pops up a window + stripped from its navigation bar. + + * UI/Contacts/ContactsUI.js: new module specific to the ContactsUI + bundle (AddressBook). + + * UI/Templates/MailerUI/UIxMailView.wox: added a div of class + "menu" and id "addressMenu" have the header email addresses + display it with the new menu code in generic.js. + + * UI/Templates/MailerUI/UIxMailPanelFrame.wox: same as below + + replaced the body tables with a div of class "pageContent" + (standardization across the page templates). + + * UI/Templates/MailerUI/UIxMailMainFrame.wox: include + productJavaScriptURL and pageJavaScriptURL (conditionnally) since + those are now inherited from UIxPageFrame. + + * UI/MailerUI/UIxMailView.js: new file specific to UIxMailView. + + * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): if + a "mailto" URL parameter is detected and the "to" array is empty, + initialize "to" with the value of "mailto" before returning it. + + * UI/MailerUI/UIxMailEditorAction.m ([UIxMailEditorAction + -composeAction]): rewrote method in a cleaner way and with usage + of the URL extensions to NSString and NSDictionary (see below). + Also, if a "mailto" url parameter is detected, pass it to the + redirected url. + + * UI/MailerUI/UIxMailMainFrame.m: subclassed from UIxPageFrame to + reduce code. + + * UI/Common/NSDictionary+URL.m ([NSDictionary -asURLParameters]): + returns a parameter string to add to a base URL. + + * UI/Common/NSString+URL.m ([NSString + -composeURLWithAction:parameters:andHash:useHash]): new method to + compose a complete URL from an object URL with parameters and an + optional '#' character. + + * UI/Common/UIxPageFrame.h: separated interface from + UIxPageFrame.m. + +2006-07-07 Wsourdeau Sourdeau + + * UI/Scheduler/UIxAppointmentEditor.m: returns yes to "isPopup"; + + * UI/WebServerResources/generic.js: added code to manage + selections within HTML containers. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -productJavaScriptURL]): + added method to determine the possible URL for a product-specific + javascript filename of the forme .js. + ([UIxPageFrame -hasProductSpecificJavaScript]): new method. + ([UIxPageFrame -isPopup]): new method to determine whether the + application navigator bar should be displayed (main page) or not + (popup page). + + * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator + -LDAPCheckLogin:_loginpassword:_pwd]): new method to authenticate + the user through LDAP. + +2006-07-06 Wolfgang Sourdeau + + * The toolbar code from the MailerUI product was taken, renamed as + "UIxToolBar" and put into UI/Common. Toolbar plists were created + for the Contacts and Scheduler products and put in their respectir + Toolbars/ subdirectories. Finally, + UI/Templates/{UIxToolbarButton,UIxToolbarSeparator}.wox, and + UI/Common/{UIxToolbarButton,UIxToolbarSeparator}.m were removed + and an invocation to the UIxToolbar component was put at the top + of UI/Templaces/UIxPageFrame.wox. + + * UI/Common/UIxToolbar.m: new "isLastGroup" method to determine + within the templates whether a separator should be displayed. + + * UI/Common/UIxToolbar.m ([UIxToolbar -hasButtons]): new method + that returns NO if the toolbar is empty. + +2006-07-05 Wolfgang Sourdeau + + * UI/Templates/UIxPageFrame.wox: replaced central table with a DIV. + + * UI/Common/UIxToolbarSeparator.m, UI/Common/UIxToolbarButton.m: + new toolbar objects. + + * UI/Templates/UIxPageFrame.wox: use the exact html code as below. + + * UI/Templates/MailerUI/UIxMailMainFrame.wox: redone the + linkbanner as a DIV instead of a TABLE. + + * UI/MailerUI/UIxMailMainFrame.m [UIxMailMainFrame + showLinkBanner]: + returns 'YES' to request the display of the navigation bar between + applets. + +2006-06-15 ludovic@inverse.ca + + * It's now possible to set the default + domain using for email using the + SOGoDefaultMailDomain preference key. + +2006-06-15 ludovic@inverse.ca + + * Initial import of SOGo from trunk. diff --git a/GNUmakefile b/GNUmakefile index 78ec6851..def68eaa 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -11,3 +11,4 @@ SUBPROJECTS = \ Protocols \ include $(GNUSTEP_MAKEFILES)/aggregate.make + diff --git a/Main/ChangeLog b/Main/ChangeLog.upstream similarity index 100% rename from Main/ChangeLog rename to Main/ChangeLog.upstream diff --git a/Main/GNUmakefile.preamble b/Main/GNUmakefile.preamble index 1132d88b..99bdcff3 100644 --- a/Main/GNUmakefile.preamble +++ b/Main/GNUmakefile.preamble @@ -21,7 +21,7 @@ $(SOGOD)_TOOL_LIBS += \ -lGDLContentStore \ -lGDLAccess \ -lWEExtensions \ - -lNGiCal \ + -lNGCards \ -lNGObjWeb \ -lNGMime -lNGLdap \ -lNGStreams -lNGExtensions -lEOControl \ diff --git a/Main/SOGo.m b/Main/SOGo.m index 4274d838..0f10c984 100644 --- a/Main/SOGo.m +++ b/Main/SOGo.m @@ -26,15 +26,16 @@ NSMutableDictionary *localeLUT; } -- (NSDictionary *)currentLocaleConsideringLanguages:(NSArray *)_langs; -- (NSDictionary *)localeForLanguageNamed:(NSString *)_name; +- (NSDictionary *) currentLocaleConsideringLanguages:(NSArray *)_langs; +- (NSDictionary *) localeForLanguageNamed:(NSString *)_name; @end #include "SOGoProductLoader.h" -#include #include +#include #include +#include #include "common.h" @implementation SOGo @@ -44,6 +45,8 @@ static BOOL doCrashOnSessionCreate = NO; + (void)initialize { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; + SoClassSecurityInfo *sInfo; + NSArray *basicRoles; id tmp; doCrashOnSessionCreate = [ud boolForKey:@"SOGoCrashOnSessionCreate"]; @@ -64,18 +67,19 @@ static BOOL doCrashOnSessionCreate = NO; #endif /* SoClass security declarations */ - + sInfo = [self soClassSecurityInfo]; /* require View permission to access the root (bound to authenticated ...) */ - [[self soClassSecurityInfo] declareObjectProtected:SoPerm_View]; - + [sInfo declareObjectProtected: SoPerm_View]; + /* to allow public access to all contained objects (subkeys) */ - [[self soClassSecurityInfo] setDefaultAccess:@"allow"]; - + [sInfo setDefaultAccess: @"allow"]; + + basicRoles = [NSArray arrayWithObjects: SoRole_Authenticated, + SOGoRole_FreeBusy, nil]; + /* require Authenticated role for View and WebDAV */ - [[self soClassSecurityInfo] declareRole:SoRole_Authenticated - asDefaultForPermission:SoPerm_View]; - [[self soClassSecurityInfo] declareRole:SoRole_Authenticated - asDefaultForPermission:SoPerm_WebDAVAccess]; + [sInfo declareRoles: basicRoles asDefaultForPermission: SoPerm_View]; + [sInfo declareRoles: basicRoles asDefaultForPermission: SoPerm_WebDAVAccess]; } - (id)init { @@ -83,9 +87,9 @@ static BOOL doCrashOnSessionCreate = NO; WOResourceManager *rm; /* ensure core SoClass'es are setup */ - [NSClassFromString(@"SOGoObject") soClass]; - [NSClassFromString(@"SOGoContentObject") soClass]; - [NSClassFromString(@"SOGoFolder") soClass]; + [$(@"SOGoObject") soClass]; + [$(@"SOGoContentObject") soClass]; + [$(@"SOGoFolder") soClass]; /* setup locale cache */ self->localeLUT = [[NSMutableDictionary alloc] initWithCapacity:2]; @@ -108,7 +112,7 @@ static BOOL doCrashOnSessionCreate = NO; /* authenticator */ - (id)authenticatorInContext:(id)_ctx { - return [SOGoAuthenticator sharedSOGoAuthenticator]; + return [$(@"SOGoAuthenticator") sharedSOGoAuthenticator]; } /* name lookup */ @@ -124,7 +128,7 @@ static BOOL doCrashOnSessionCreate = NO; } - (id)lookupUser:(NSString *)_key inContext:(id)_ctx { - return [[[NSClassFromString(@"SOGoUserFolder") alloc] + return [[[$(@"SOGoUserFolder") alloc] initWithName:_key inContainer:self] autorelease]; } @@ -262,7 +266,7 @@ static BOOL doCrashOnSessionCreate = NO; return lpath; if (MainProduct == Nil) { - if ((MainProduct = NSClassFromString(@"MainUIProduct")) == Nil) + if ((MainProduct = $(@"MainUIProduct")) == Nil) [self errorWithFormat:@"did not find MainUIProduct class!"]; } diff --git a/Main/SOGoProductLoader.m b/Main/SOGoProductLoader.m index 2d994ea2..f53fa07b 100644 --- a/Main/SOGoProductLoader.m +++ b/Main/SOGoProductLoader.m @@ -143,7 +143,7 @@ registry = [SoProductRegistry sharedProductRegistry]; fm = [NSFileManager defaultManager]; - + pathes = [[self productSearchPathes] objectEnumerator]; while ((lpath = [pathes nextObject]) != nil) { NSEnumerator *productNames; diff --git a/Main/sogod.m b/Main/sogod.m index 314a248c..ab5c895f 100644 --- a/Main/sogod.m +++ b/Main/sogod.m @@ -19,10 +19,16 @@ 02111-1307, USA. */ -#include -#include "common.h" +#import +#import -int main(int argc, char **argv, char **env) { +#import +#import "common.h" + +int main(int argc, char **argv, char **env) +{ + NSString *tzName; + NSUserDefaults *ud; NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; @@ -30,7 +36,13 @@ int main(int argc, char **argv, char **env) { [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; #endif [NGBundleManager defaultBundleManager]; - + + ud = [NSUserDefaults standardUserDefaults]; + tzName = [ud stringForKey: @"SOGoServerTimeZone"]; + if (!tzName) + tzName = @"Canada/Eastern"; + [NSTimeZone setDefaultTimeZone: [NSTimeZone timeZoneWithName: tzName]]; + WOWatchDogApplicationMain(@"SOGo", argc, (void*)argv); [pool release]; diff --git a/Misc/WebUI/Application.h b/Misc/WebUI/Application.h deleted file mode 100644 index cd026c5c..00000000 --- a/Misc/WebUI/Application.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __Application_H_ -#define __Application_H_ - - -#include - - -@interface Application : SoApplication -{ - -} - -@end - -#endif /* __Application_H_ */ diff --git a/Misc/WebUI/Application.m b/Misc/WebUI/Application.m deleted file mode 100644 index 9252c414..00000000 --- a/Misc/WebUI/Application.m +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#import "Application.h" -#import "common.h" - - -@implementation Application - -- (id)init { - self = [super init]; - if(self) { - [self logInfoWithFormat:@"Welcome to '%@'", [self name]]; - } - return self; -} - -@end diff --git a/Misc/WebUI/COPYING b/Misc/WebUI/COPYING deleted file mode 100644 index 161a3d1d..00000000 --- a/Misc/WebUI/COPYING +++ /dev/null @@ -1,482 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/Misc/WebUI/COPYRIGHT b/Misc/WebUI/COPYRIGHT deleted file mode 100644 index 1053b2aa..00000000 --- a/Misc/WebUI/COPYRIGHT +++ /dev/null @@ -1,4 +0,0 @@ -Copyright (C) 2004 SKYRIX Software AG - - -Contact: info@skyrix.com diff --git a/Misc/WebUI/ChangeLog b/Misc/WebUI/ChangeLog deleted file mode 100644 index b45b24dd..00000000 --- a/Misc/WebUI/ChangeLog +++ /dev/null @@ -1,13 +0,0 @@ -2004-05-27 Marcus Mueller - - * README: updated - -2004-05-27 Marcus Mueller - - * README, NOTES: updated - - * NGExtensions/NGLogging/ChangeLog: created - -2004-05-26 Marcus Mueller - - * ChangeLog: created diff --git a/Misc/WebUI/DirectAction.h b/Misc/WebUI/DirectAction.h deleted file mode 100644 index e25f29b9..00000000 --- a/Misc/WebUI/DirectAction.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __DirectAction_H_ -#define __DirectAction_H_ - - -#include - - -@interface DirectAction : WODirectAction -{ - -} - -@end - -#endif /* __DirectAction_H_ */ diff --git a/Misc/WebUI/DirectAction.m b/Misc/WebUI/DirectAction.m deleted file mode 100644 index 695f82b6..00000000 --- a/Misc/WebUI/DirectAction.m +++ /dev/null @@ -1,29 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#include "DirectAction.h" - - -@implementation DirectAction - -@end diff --git a/Misc/WebUI/English.lproj/InfoPlist.strings b/Misc/WebUI/English.lproj/InfoPlist.strings deleted file mode 100644 index d22a0a2c..00000000 Binary files a/Misc/WebUI/English.lproj/InfoPlist.strings and /dev/null differ diff --git a/Misc/WebUI/GNUmakefile b/Misc/WebUI/GNUmakefile deleted file mode 100644 index d8eaed49..00000000 --- a/Misc/WebUI/GNUmakefile +++ /dev/null @@ -1,33 +0,0 @@ -# $Id$ - -include $(GNUSTEP_MAKEFILES)/common.make - -WOAPP_NAME = WebUI - -WebUI_OBJC_FILES = \ - WebUI_main.m \ - Application.m \ - Session.m \ - DirectAction.m \ - - -ADDITIONAL_INCLUDE_DIRS = -INGExtensions -INGExtensions/NGLogging - -WebUI_COMPONENTS = \ - Main.wo \ - - -WebUI_RESOURCE_FILES = \ - - -WebUI_WEBSERVER_RESOURCE_FILES := \ - $(shell find WebServerResources -type f -print) - - -WebUI_SUBPROJECTS = \ - NGExtensions \ - - --include GNUmakefile.preamble -include $(GNUSTEP_MAKEFILES)/woapp.make --include GNUmakefile.postamble diff --git a/Misc/WebUI/GNUmakefile.preamble b/Misc/WebUI/GNUmakefile.preamble deleted file mode 100644 index 9c0fa292..00000000 --- a/Misc/WebUI/GNUmakefile.preamble +++ /dev/null @@ -1,8 +0,0 @@ -# $Id$ - - --include GNUmakefile.preamble.local - -ifeq ($(findstring darwin, $(GNUSTEP_HOST_OS)),) -ADDITIONAL_OBJCFLAGS += -DWITHOUT_SOPEX -endif diff --git a/Misc/WebUI/Info.plist b/Misc/WebUI/Info.plist deleted file mode 100644 index d0cabb58..00000000 --- a/Misc/WebUI/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - WebUI - CFBundleIconFile - Lori - CFBundleIdentifier - my.sope.apps.WebUI - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 0.1 - NSMainNibFile - - NSPrincipalClass - SOPEXApplication - - diff --git a/Misc/WebUI/Lori.icns b/Misc/WebUI/Lori.icns deleted file mode 100644 index 4d102441..00000000 Binary files a/Misc/WebUI/Lori.icns and /dev/null differ diff --git a/Misc/WebUI/NGExtensions/GNUmakefile b/Misc/WebUI/NGExtensions/GNUmakefile deleted file mode 100644 index 40bba8bb..00000000 --- a/Misc/WebUI/NGExtensions/GNUmakefile +++ /dev/null @@ -1,18 +0,0 @@ -# $Id$ - -include $(GNUSTEP_MAKEFILES)/common.make - - -SUBPROJECT_NAME = NGExtensions - - -ADDITIONAL_INCLUDE_DIRS += -I.. - - -NGExtensions_SUBPROJECTS = \ - NGLogging - - --include GNUmakefile.preamble -include $(GNUSTEP_MAKEFILES)/subproject.make --include GNUmakefile.postamble diff --git a/Misc/WebUI/NGExtensions/NGLogging/ChangeLog b/Misc/WebUI/NGExtensions/NGLogging/ChangeLog deleted file mode 100644 index 770975e0..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/ChangeLog +++ /dev/null @@ -1,17 +0,0 @@ -2004-05-27 Marcus Mueller - - * NGLogAppender.[hm]: introduced -formattedEvent:, currently not - configurable. - - * NGLogSyslogAppender.m: works as expected now. - - * NGLogger.m: uses new default (see README) to select the default - appender. Not optimal, but sufficient. - - * NGLogConsoleAppender.m: changed to use -formattedEvent: now. - -2004-05-27 Marcus Mueller - - * NGLogSyslogAppender.[hm]: syslog appender, untested. - - * ChangeLog: created diff --git a/Misc/WebUI/NGExtensions/NGLogging/GNUmakefile b/Misc/WebUI/NGExtensions/NGLogging/GNUmakefile deleted file mode 100644 index e596eaaf..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/GNUmakefile +++ /dev/null @@ -1,30 +0,0 @@ -# $Id$ - -include $(GNUSTEP_MAKEFILES)/common.make - - -SUBPROJECT_NAME = NGLogging - - -ADDITIONAL_INCLUDE_DIRS += -I.. -I../.. - - -NGLogging_OBJC_FILES = \ - NSObject+ExtendedLogging.m \ - NGLogger.m \ - NGLogEvent.m \ - NGLogAppender.m \ - NGLogConsoleAppender.m \ - -NGLogging_HEADER_FILES = \ - NGLogging.h \ - NSObject+ExtendedLogging.h \ - NGLogger.h \ - NGLogEvent.h \ - NGLogAppender.h \ - NGLogConsoleAppender.h \ - - --include GNUmakefile.preamble -include $(GNUSTEP_MAKEFILES)/subproject.make --include GNUmakefile.postamble diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogAppender.h b/Misc/WebUI/NGExtensions/NGLogging/NGLogAppender.h deleted file mode 100644 index fabab54a..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogAppender.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __NGLogAppender_H_ -#define __NGLogAppender_H_ - -/* - Abstract superclass for all appenders. -*/ - -#import -#import "NSObject+ExtendedLogging.h" - - -@class NGLogEvent; - - -@interface NGLogAppender : NSObject -{ - -} - -/* subclass responsibility */ -- (void)appendLogEvent:(NGLogEvent *)_event; -- (NSString *)formattedEvent:(NGLogEvent *)_event; - -- (NSString *)localizedNameOfLogLevel:(NGLogLevel)_level; - -@end - -#endif /* __NGLogAppender_H_ */ diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogAppender.m b/Misc/WebUI/NGExtensions/NGLogging/NGLogAppender.m deleted file mode 100644 index 3743c843..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogAppender.m +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#import "NGLogAppender.h" -#import "NGLogEvent.h" - - -@implementation NGLogAppender - -- (void)appendLogEvent:(NGLogEvent *)_event { - [self subclassResponsibility:_cmd]; -} - -- (NSString *)formattedEvent:(NGLogEvent *)_event { - return [NSString stringWithFormat:@"[%@] %@", - [self localizedNameOfLogLevel:[_event level]], - [_event message]]; -} - -- (NSString *)localizedNameOfLogLevel:(NGLogLevel)_level { - NSString *name; - - switch (_level) { - case NGLogLevelDebug: - name = @"DEBUG"; - break; - case NGLogLevelInfo: - name = @"INFO"; - break; - case NGLogLevelWarn: - name = @"WARN"; - break; - case NGLogLevelError: - name = @"ERROR"; - break; - case NGLogLevelFatal: - name = @"FATAL"; - break; - default: - name = @""; - break; - } - return name; -} - -@end diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogConsoleAppender.h b/Misc/WebUI/NGExtensions/NGLogging/NGLogConsoleAppender.h deleted file mode 100644 index bc3fd343..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogConsoleAppender.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __NGLogConsoleAppender_H_ -#define __NGLogConsoleAppender_H_ - - -#import "NGLogAppender.h" - - -@interface NGLogConsoleAppender : NGLogAppender -{ - -} - -@end - -#endif /* __NGLogConsoleAppender_H_ */ diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogConsoleAppender.m b/Misc/WebUI/NGExtensions/NGLogging/NGLogConsoleAppender.m deleted file mode 100644 index d9a53c46..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogConsoleAppender.m +++ /dev/null @@ -1,34 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#import "NGLogConsoleAppender.h" -#import "NGLogEvent.h" - - -@implementation NGLogConsoleAppender - -- (void)appendLogEvent:(NGLogEvent *)_event { - NSLog([self formattedEvent:_event]); -} - -@end diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogEvent.h b/Misc/WebUI/NGExtensions/NGLogging/NGLogEvent.h deleted file mode 100644 index 3b1dfa4b..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogEvent.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __NGLogEvent_H_ -#define __NGLogEvent_H_ - - -#import -#import "NSObject+ExtendedLogging.h" - - -@interface NGLogEvent : NSObject -{ - NSString *msg; - NGLogLevel level; - NSTimeInterval date; -} - -- (id)initWithLevel:(NGLogLevel)_level message:(NSString *)_msg; - -- (NGLogLevel)level; -- (NSString *)message; -- (NSDate *)date; - -@end - -#endif /* __NGLogEvent_H_ */ diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogEvent.m b/Misc/WebUI/NGExtensions/NGLogging/NGLogEvent.m deleted file mode 100644 index e9c61734..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogEvent.m +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#import "NGLogEvent.h" -#import - - -@implementation NGLogEvent - -- (id)initWithLevel:(NGLogLevel)_level message:(NSString *)_msg { - if((self = [super init])) { - self->date = [NSDate timeIntervalSinceReferenceDate]; - self->level = _level; - ASSIGN(self->msg, _msg); - } - return self; -} - -- (void)dealloc { - [self->msg release]; - [super dealloc]; -} - -- (NGLogLevel)level { - return self->level; -} - -- (NSString *)message { - return self->msg; -} - -- (NSDate *)date { - return [NSDate dateWithTimeIntervalSinceReferenceDate:self->date]; -} - -@end diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogSyslogAppender.h b/Misc/WebUI/NGExtensions/NGLogging/NGLogSyslogAppender.h deleted file mode 100644 index e7253b82..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogSyslogAppender.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __NGLogSyslogAppender_H_ -#define __NGLogSyslogAppender_H_ - - -#import "NGLogAppender.h" - - -@interface NGLogSyslogAppender : NGLogAppender -{ - -} - -+ (id)sharedAppender; - -/* provide syslog identifier */ -- (id)initWithIdentifier:(NSString *)_ident; - -@end - -#endif /* __NGLogSyslogAppender_H_ */ diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogSyslogAppender.m b/Misc/WebUI/NGExtensions/NGLogging/NGLogSyslogAppender.m deleted file mode 100644 index 856b4754..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogSyslogAppender.m +++ /dev/null @@ -1,114 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#import "NGLogSyslogAppender.h" -#import "NGLogEvent.h" -#include -#include - - -@interface NGLogSyslogAppender (PrivateAPI) -- (int)syslogLevelForLogLevel:(NGLogLevel)_level; -@end - -@implementation NGLogSyslogAppender - - -static NSString *defaultSyslogIdentifier = nil; - - -+ (void)initialize { - NSUserDefaults *ud; - static BOOL isInitialized = NO; - - if(isInitialized) - return; - - ud = [NSUserDefaults standardUserDefaults]; - defaultSyslogIdentifier = - [[ud stringForKey:@"NGLogSyslogIdentifier"] retain]; - - isInitialized = YES; -} - -+ (id)sharedAppender { - static id sharedAppender = nil; - if(sharedAppender == nil) { - sharedAppender = [[self alloc] init]; - } - return sharedAppender; -} - -- (id)init { - return [self initWithIdentifier:defaultSyslogIdentifier]; -} - -- (id)initWithIdentifier:(NSString *)_ident { - if((self = [super init])) { - #warning ** default flags? - openlog([_ident cString], LOG_PID | LOG_NDELAY, LOG_USER); - } - return self; -} - -- (void)dealloc { - closelog(); - [super dealloc]; -} - -- (void)appendLogEvent:(NGLogEvent *)_event { - NSString *formattedMsg; - int level; - - formattedMsg = [self formattedEvent:_event]; - level = [self syslogLevelForLogLevel:[_event level]]; - syslog(level, [formattedMsg cString]); -} - -- (int)syslogLevelForLogLevel:(NGLogLevel)_level { - int level; - - switch (_level) { - case NGLogLevelDebug: - level = LOG_DEBUG; - break; - case NGLogLevelInfo: - level = LOG_INFO; - break; - case NGLogLevelWarn: - level = LOG_WARNING; - break; - case NGLogLevelError: - level = LOG_ERR; - break; - case NGLogLevelFatal: - level = LOG_ALERT; // LOG_EMERG is broadcast to all users... - break; - default: - level = LOG_NOTICE; - break; - } - return level; -} - -@end diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogger.h b/Misc/WebUI/NGExtensions/NGLogging/NGLogger.h deleted file mode 100644 index 421abb0e..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogger.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __NGLogger_H_ -#define __NGLogger_H_ - -/* - The logger, modeled closely after log4j. - */ - - -#import -#include "NSObject+ExtendedLogging.h" - - -@interface NGLogger : NSObject -{ - NGLogLevel minLogLevel; - id _appender; // going away as soon as we have a config -} - -- (id)initWithLogLevel:(NGLogLevel)_level; - -- (void)setLogLevel:(NGLogLevel)_level; -- (NGLogLevel)logLevel; - -@end - -#endif /* __NGLogger_H_ */ diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogger.m b/Misc/WebUI/NGExtensions/NGLogging/NGLogger.m deleted file mode 100644 index 52a08de1..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogger.m +++ /dev/null @@ -1,111 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#include "NGLogger.h" -#include -#include "common.h" -#include "NGLogEvent.h" -#include "NGLogAppender.h" - - -@implementation NGLogger - -- (id)init { - self = [self initWithLogLevel:NGLogLevelAll]; - return self; -} - -- (id)initWithLogLevel:(NGLogLevel)_level { - if((self = [super init])) { - NSUserDefaults *ud; - NSString *appenderClassName; - - [self setLogLevel:_level]; - -#warning ** remove this as soon as we have a config - ud = [NSUserDefaults standardUserDefaults]; - appenderClassName = [ud stringForKey:@"NGLogDefaultAppenderClass"]; - if(appenderClassName == nil) - appenderClassName = @"NGLogConsoleAppender"; - self->_appender = [[NSClassFromString(appenderClassName) alloc] init]; - } - return self; -} - -- (void)dealloc { - [self->_appender release]; - [super dealloc]; -} - - -- (void)setLogLevel:(NGLogLevel)_level { - self->minLogLevel = _level; -} - -- (NGLogLevel)logLevel { - return self->minLogLevel; -} - -- (void)logLevel:(NGLogLevel)_level withFormat:(NSString *)_fmt, ... { - NSString *msg; - NGLogEvent *event; - va_list va; - - if(self->minLogLevel > _level) - return; - - va_start(va, _fmt); - msg = [[NSString alloc] initWithFormat:_fmt arguments:va]; - va_end(va); - - event = [[NGLogEvent alloc] initWithLevel:_level message:msg]; - - // iterate appenders - // TODO: as soon as we have more appenders, we need to iterate on them - [self->_appender appendLogEvent:event]; - - [event release]; - [msg release]; -} - -- (BOOL)isLogDebugEnabled { - return self->minLogLevel >= NGLogLevelDebug; -} - -- (BOOL)isLogInfoEnabled { - return self->minLogLevel >= NGLogLevelInfo; -} - -- (BOOL)isLogWarnEnabled { - return self->minLogLevel >= NGLogLevelWarn; -} - -- (BOOL)isLogErrorEnabled { - return self->minLogLevel >= NGLogLevelError; -} - -- (BOOL)isLogFatalEnabled { - return self->minLogLevel >= NGLogLevelFatal; -} - -@end diff --git a/Misc/WebUI/NGExtensions/NGLogging/NGLogging.h b/Misc/WebUI/NGExtensions/NGLogging/NGLogging.h deleted file mode 100644 index b774724a..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NGLogging.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __NGLogging_H_ -#define __NGLogging_H_ - -/* - NGLogging is a somewhat more sophisticated logging framework, modeled - apparently similar to log4j - without some of its bloat. The current - idea is to replace the default logging used throughout OGo (-logWithFormat:, - -debugWithFormat:, NSLog()) with the new logging framework to get rid of - stdout only logging. -*/ - - -#import - -#include "NSObject+ExtendedLogging.h" -#include "NGLogger.h" - - -#endif /* __NGLogging_H_ */ diff --git a/Misc/WebUI/NGExtensions/NGLogging/NSObject+ExtendedLogging.h b/Misc/WebUI/NGExtensions/NGLogging/NSObject+ExtendedLogging.h deleted file mode 100644 index 04845d9a..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NSObject+ExtendedLogging.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __NSObject_ExtendedLogging_H_ -#define __NSObject_ExtendedLogging_H_ - - -#import - - -typedef enum { - NGLogLevelAll = 0, - NGLogLevelDebug = 1, - NGLogLevelInfo = 2, - NGLogLevelWarn = 3, - NGLogLevelError = 4, - NGLogLevelFatal = 5, - NGLogLevelOff = 6 -} NGLogLevel; - - -@interface NSObject (NGExtendedLogging) - -- (id)sharedLogger; -- (id)logger; - -- (void)logDebugWithFormat:(NSString *)_fmt, ...; -- (void)logInfoWithFormat:(NSString *)_fmt, ...; -- (void)logWarnWithFormat:(NSString *)_fmt, ...; -- (void)logErrorWithFormat:(NSString *)_fmt, ...; -- (void)logFatalWithFormat:(NSString *)_fmt, ...; - -- (BOOL)isLogDebugEnabled; -- (BOOL)isLogInfoEnabled; -- (BOOL)isLogWarnEnabled; -- (BOOL)isLogErrorEnabled; -- (BOOL)isLogFatalEnabled; - -- (void)logLevel:(NGLogLevel)_level withFormat:(NSString *)_fmt, ...; - -@end - -#endif /* __NSObject_ExtendedLogging_H_ */ diff --git a/Misc/WebUI/NGExtensions/NGLogging/NSObject+ExtendedLogging.m b/Misc/WebUI/NGExtensions/NGLogging/NSObject+ExtendedLogging.m deleted file mode 100644 index 50d30204..00000000 --- a/Misc/WebUI/NGExtensions/NGLogging/NSObject+ExtendedLogging.m +++ /dev/null @@ -1,128 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#import "NSObject+ExtendedLogging.h" -#import "NGLogger.h" - - -@implementation NSObject (NGExtendedLogging) - -- (id)sharedLogger { - static id sharedLogger = nil; - if(sharedLogger == nil) { - sharedLogger = [[NGLogger alloc] init]; - } - return sharedLogger; -} - -- (id)logger { - return [self sharedLogger]; -} - -- (void)logDebugWithFormat:(NSString *)_fmt, ... { - NSString *msg; - va_list va; - - va_start(va, _fmt); - msg = [[NSString alloc] initWithFormat:_fmt arguments:va]; - va_end(va); - [self logLevel:NGLogLevelDebug withFormat:msg]; - [msg release]; -} - -- (void)logInfoWithFormat:(NSString *)_fmt, ... { - NSString *msg; - va_list va; - - va_start(va, _fmt); - msg = [[NSString alloc] initWithFormat:_fmt arguments:va]; - va_end(va); - [self logLevel:NGLogLevelInfo withFormat:msg]; - [msg release]; -} - -- (void)logWarnWithFormat:(NSString *)_fmt, ... { - NSString *msg; - va_list va; - - va_start(va, _fmt); - msg = [[NSString alloc] initWithFormat:_fmt arguments:va]; - va_end(va); - [self logLevel:NGLogLevelWarn withFormat:msg]; - [msg release]; -} - -- (void)logErrorWithFormat:(NSString *)_fmt, ... { - NSString *msg; - va_list va; - - va_start(va, _fmt); - msg = [[NSString alloc] initWithFormat:_fmt arguments:va]; - va_end(va); - [self logLevel:NGLogLevelError withFormat:msg]; - [msg release]; -} - -- (void)logFatalWithFormat:(NSString *)_fmt, ... { - NSString *msg; - va_list va; - - va_start(va, _fmt); - msg = [[NSString alloc] initWithFormat:_fmt arguments:va]; - va_end(va); - [self logLevel:NGLogLevelFatal withFormat:msg]; - [msg release]; -} - -- (void)logLevel:(NGLogLevel)_level withFormat:(NSString *)_fmt, ... { - NSString *msg; - va_list va; - - va_start(va, _fmt); - msg = [[NSString alloc] initWithFormat:_fmt arguments:va]; - va_end(va); - [[self logger] logLevel:_level withFormat:msg]; - [msg release]; -} - -- (BOOL)isLogDebugEnabled { - return [[self logger] isLogDebugEnabled]; -} - -- (BOOL)isLogInfoEnabled { - return [[self logger] isLogInfoEnabled]; -} - -- (BOOL)isLogWarnEnabled { - return [[self logger] isLogWarnEnabled]; -} - -- (BOOL)isLogErrorEnabled { - return [[self logger] isLogErrorEnabled]; -} - -- (BOOL)isLogFatalEnabled { - return [[self logger] isLogFatalEnabled]; -} - -@end diff --git a/Misc/WebUI/NOTES b/Misc/WebUI/NOTES deleted file mode 100644 index 16dc5b80..00000000 --- a/Misc/WebUI/NOTES +++ /dev/null @@ -1,15 +0,0 @@ -$Id$ - -- NGExtensions - - Stuff I believe might be useful for later addition to NGExtensions framework - - - NGLogging - - Had a look at log4cocoa, appeared to be too bloated (they mimic all of - log4j which doesn't really make sense in Objective-C). - - NGLogConsoleAppender is the only appender currently available, it's - hardcoded in NGLogger as default. This should change as soon as we have - a config for that purpose. Logging is low priority, so we don't need to - do that too soon. - - Syslog appender might be useful for the ministry. Syslog provides its own - buffering, so syslog appender should be straight forward. Current - implementation makes some fix assumptions (log facility). \ No newline at end of file diff --git a/Misc/WebUI/PROJECTLEAD b/Misc/WebUI/PROJECTLEAD deleted file mode 100644 index ab0c70ac..00000000 --- a/Misc/WebUI/PROJECTLEAD +++ /dev/null @@ -1,3 +0,0 @@ -# $Id$ - -PROJECTLEAD=helge.hess@opengroupware.org diff --git a/Misc/WebUI/README b/Misc/WebUI/README deleted file mode 100644 index c5beb54d..00000000 --- a/Misc/WebUI/README +++ /dev/null @@ -1,24 +0,0 @@ -$Id$ - - -WebUI - Part of SOGo - Copyright (C) 2000-2004 SKYRIX Software AG - http://www.skyrix.com/ - -Subprojects -=========== - -- NGExtensions - - NGLogging - - -UserDefaults -============ - - Default | Type | Example Value - ============================================================== - NGLogSyslogIdentifier | String | WebUI - NGLogDefaultAppenderClass| String | NGLogConsoleAppender - - - diff --git a/Misc/WebUI/Session.h b/Misc/WebUI/Session.h deleted file mode 100644 index 9cea9077..00000000 --- a/Misc/WebUI/Session.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __Session_H_ -#define __Session_H_ - - -#include - - -@interface Session : WOSession -{ - -} - -@end - -#endif /* __Session_H_ */ diff --git a/Misc/WebUI/Session.m b/Misc/WebUI/Session.m deleted file mode 100644 index 58c00f53..00000000 --- a/Misc/WebUI/Session.m +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#include "Session.h" -#include "common.h" - - -@implementation Session - -- (id)init { - self = [super init]; - if(self) { - [self logWarnWithFormat:@"session with id '%@' did init - this " \ - @"should NOT happen!", [self sessionID]]; - } - return self; -} -@end diff --git a/Misc/WebUI/TODO b/Misc/WebUI/TODO deleted file mode 100644 index e69de29b..00000000 diff --git a/Misc/WebUI/Version b/Misc/WebUI/Version deleted file mode 100644 index f96f6a3c..00000000 --- a/Misc/WebUI/Version +++ /dev/null @@ -1,15 +0,0 @@ -# $Id$ -# -# This file is included by library makefiles to set the version information -# of the executable. -# -# NOTE: This has no effect whatsover if you are using Xcode on Mac OS X. -# For Xcode please use the appropriate user interface or issue the following -# command in a shell: -# /Developer/Tools/agvtool new-version \ -# ${MAJOR_VERSION}.${MINOR_VERSION}.${SUBMINOR_VERSION} - -MAJOR_VERSION=1 -MINOR_VERSION=0 -SUBMINOR_VERSION=0 - diff --git a/Misc/WebUI/WebServerResources/favicon.ico b/Misc/WebUI/WebServerResources/favicon.ico deleted file mode 100644 index 829cb223..00000000 Binary files a/Misc/WebUI/WebServerResources/favicon.ico and /dev/null differ diff --git a/Misc/WebUI/WebUI.xcode/project.pbxproj b/Misc/WebUI/WebUI.xcode/project.pbxproj deleted file mode 100644 index 67618501..00000000 --- a/Misc/WebUI/WebUI.xcode/project.pbxproj +++ /dev/null @@ -1,952 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 39; - objects = { - 080E96DDFE201D6D7F000001 = { - children = ( - AD95C2640664CE7400FCB211, - AD19ED5205D7FBD1009EBA3A, - AD19ED5305D7FBD1009EBA3A, - AD19ED6305D7FBEA009EBA3A, - AD19ED6405D7FBEA009EBA3A, - ADEE3DD505DD126900F523DB, - ADEE3DD605DD126900F523DB, - 32CA4F630368D1EE00C91783, - 29B97316FDCFA39411CA2CEA, - ); - isa = PBXGroup; - name = "Main Server"; - refType = 4; - sourceTree = ""; - }; - 089C165CFE840E0CC02AAC07 = { - children = ( - 089C165DFE840E0CC02AAC07, - ); - isa = PBXVariantGroup; - name = InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - 089C165DFE840E0CC02AAC07 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = text.plist.strings; - name = English; - path = English.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; -//080 -//081 -//082 -//083 -//084 -//100 -//101 -//102 -//103 -//104 - 1058C7A1FEA54F0111CA2CBB = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Foundation.framework; - path = /System/Library/Frameworks/Foundation.framework; - refType = 0; - sourceTree = ""; - }; -//100 -//101 -//102 -//103 -//104 -//190 -//191 -//192 -//193 -//194 - 19C28FACFE9D520D11CA2CBB = { - children = ( - 8D1107320486CEB800E47090, - ); - isa = PBXGroup; - name = Products; - refType = 4; - sourceTree = ""; - }; -//190 -//191 -//192 -//193 -//194 -//290 -//291 -//292 -//293 -//294 - 29B97313FDCFA39411CA2CEA = { - buildSettings = { - }; - buildStyles = ( - 4A9504CCFFE6A4B311CA0CBA, - 4A9504CDFFE6A4B311CA0CBA, - ); - hasScannedForEncodings = 1; - isa = PBXProject; - mainGroup = 29B97314FDCFA39411CA2CEA; - projectDirPath = ""; - targets = ( - 8D1107260486CEB800E47090, - ); - }; - 29B97314FDCFA39411CA2CEA = { - children = ( - ADA38BE605DD23C400C820AA, - AD95C1890664C1E400FCB211, - AD95C18B0664C1E400FCB211, - AD95C1870664C1E400FCB211, - AD95C1880664C1E400FCB211, - AD95C18A0664C1E400FCB211, - ADC15A300664CF290063754B, - AD95AEBB0664BC7B00FCB211, - AD95AEB90664BC6700FCB211, - AD0ACCDE062732BD0054A820, - 080E96DDFE201D6D7F000001, - ADC15A400664D0F50063754B, - 29B97317FDCFA39411CA2CEA, - ADEE3DCE05DD11C900F523DB, - 29B97323FDCFA39411CA2CEA, - 19C28FACFE9D520D11CA2CBB, - ); - isa = PBXGroup; - name = WebUI; - path = ""; - refType = 4; - sourceTree = ""; - }; - 29B97316FDCFA39411CA2CEA = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = WebUI_main.m; - refType = 4; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA = { - children = ( - 8D1107310486CEB800E47090, - 089C165CFE840E0CC02AAC07, - ADA38B8105DD238A00C820AA, - ); - isa = PBXGroup; - name = Resources; - path = ""; - refType = 4; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA = { - children = ( - 1058C7A1FEA54F0111CA2CBB, - ADEE3DEB05DD135A00F523DB, - AD19ED3105D7FAF4009EBA3A, - ADEE3DDB05DD131E00F523DB, - ); - isa = PBXGroup; - name = Frameworks; - path = ""; - refType = 4; - sourceTree = ""; - }; -//290 -//291 -//292 -//293 -//294 -//320 -//321 -//322 -//323 -//324 - 32CA4F630368D1EE00C91783 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = WebUI_Prefix.pch; - refType = 4; - sourceTree = ""; - }; -//320 -//321 -//322 -//323 -//324 -//4A0 -//4A1 -//4A2 -//4A3 -//4A4 - 4A9504CCFFE6A4B311CA0CBA = { - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - OPTIMIZATION_CFLAGS = "-O0"; - ZERO_LINK = YES; - }; - isa = PBXBuildStyle; - name = Development; - }; - 4A9504CDFFE6A4B311CA0CBA = { - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - ZERO_LINK = NO; - }; - isa = PBXBuildStyle; - name = Deployment; - }; -//4A0 -//4A1 -//4A2 -//4A3 -//4A4 -//8D0 -//8D1 -//8D2 -//8D3 -//8D4 - 8D1107260486CEB800E47090 = { - buildPhases = ( - 8D1107270486CEB800E47090, - 8D1107290486CEB800E47090, - 8D11072C0486CEB800E47090, - 8D11072E0486CEB800E47090, - ADF026F205D903AE00D2292D, - ); - buildRules = ( - ); - buildSettings = { - FRAMEWORK_SEARCH_PATHS = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - GCC_ENABLE_TRIGRAPHS = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = WebUI_Prefix.pch; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; - GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; - GCC_WARN_UNKNOWN_PRAGMAS = NO; - HEADER_SEARCH_PATHS = "-INGExtensions -INGExtensions/NGLogging"; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - LIBRARY_SEARCH_PATHS = ""; - OTHER_CFLAGS = "-DCOCOA_Foundation_LIBRARY=1 -DNeXT_RUNTIME=1 -DAPPLE_RUNTIME=1"; - OTHER_LDFLAGS = ""; - PRODUCT_NAME = WebUI; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = sopex; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = WebUI; - productInstallPath = "$(HOME)/Applications"; - productName = WebUI; - productReference = 8D1107320486CEB800E47090; - productType = "com.apple.product-type.application"; - }; - 8D1107270486CEB800E47090 = { - buildActionMask = 2147483647; - files = ( - 8D1107280486CEB800E47090, - AD19ED5405D7FBD1009EBA3A, - AD19ED6505D7FBEA009EBA3A, - ADEE3DD705DD126900F523DB, - AD95C2660664CE7400FCB211, - ADC15A430664D1D90063754B, - ADC15A470664DA320063754B, - ADC15A4B0664DA980063754B, - ADC15A4F0664E25B0063754B, - ADC15A560664E33A0063754B, - AD1967250665E52400E19038, - AD0618D0066610A200AC467F, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D1107280486CEB800E47090 = { - fileRef = 32CA4F630368D1EE00C91783; - isa = PBXBuildFile; - settings = { - }; - }; - 8D1107290486CEB800E47090 = { - buildActionMask = 2147483647; - files = ( - 8D11072B0486CEB800E47090, - ADEE3DD005DD11C900F523DB, - ADA38B8205DD238A00C820AA, - AD95AEBA0664BC6700FCB211, - AD95AEBC0664BC7B00FCB211, - AD0618D50666121C00AC467F, - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D11072B0486CEB800E47090 = { - fileRef = 089C165CFE840E0CC02AAC07; - isa = PBXBuildFile; - settings = { - }; - }; - 8D11072C0486CEB800E47090 = { - buildActionMask = 2147483647; - files = ( - 8D11072D0486CEB800E47090, - AD19ED5505D7FBD1009EBA3A, - AD19ED6605D7FBEA009EBA3A, - ADEE3DD805DD126900F523DB, - ADC15A440664D1D90063754B, - ADC15A4C0664DA980063754B, - ADC15A500664E25B0063754B, - ADC15A570664E33A0063754B, - AD1967260665E52400E19038, - AD0618D1066610A200AC467F, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D11072D0486CEB800E47090 = { - fileRef = 29B97316FDCFA39411CA2CEA; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - ); - }; - }; - 8D11072E0486CEB800E47090 = { - buildActionMask = 2147483647; - files = ( - ADEE3DEC05DD135A00F523DB, - ADEE3DDC05DD131F00F523DB, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 8D1107310486CEB800E47090 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text.plist; - path = Info.plist; - refType = 4; - sourceTree = ""; - }; - 8D1107320486CEB800E47090 = { - explicitFileType = wrapper.application; - includeInIndex = 0; - isa = PBXFileReference; - path = WebUI.sopex; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; -//8D0 -//8D1 -//8D2 -//8D3 -//8D4 -//AD0 -//AD1 -//AD2 -//AD3 -//AD4 - AD0618CE066610A200AC467F = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = NGLogSyslogAppender.h; - refType = 4; - sourceTree = ""; - }; - AD0618CF066610A200AC467F = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = NGLogSyslogAppender.m; - refType = 4; - sourceTree = ""; - }; - AD0618D0066610A200AC467F = { - fileRef = AD0618CE066610A200AC467F; - isa = PBXBuildFile; - settings = { - }; - }; - AD0618D1066610A200AC467F = { - fileRef = AD0618CF066610A200AC467F; - isa = PBXBuildFile; - settings = { - }; - }; - AD0618D40666121C00AC467F = { - explicitFileType = text; - fileEncoding = 4; - isa = PBXFileReference; - path = ChangeLog; - refType = 4; - sourceTree = ""; - tabWidth = 4; - usesTabs = 1; - }; - AD0618D50666121C00AC467F = { - fileRef = AD0618D40666121C00AC467F; - isa = PBXBuildFile; - settings = { - }; - }; - AD0ACCDE062732BD0054A820 = { - children = ( - AD0ACCDF062733370054A820, - AD0ACCE1062733370054A820, - AD0ACCE0062733370054A820, - ); - isa = PBXGroup; - name = Makefiles; - refType = 4; - sourceTree = ""; - }; - AD0ACCDF062733370054A820 = { - explicitFileType = sourcecode.make; - fileEncoding = 30; - isa = PBXFileReference; - path = GNUmakefile; - refType = 4; - sourceTree = ""; - }; - AD0ACCE0062733370054A820 = { - explicitFileType = sourcecode.make; - fileEncoding = 30; - isa = PBXFileReference; - path = GNUmakefile.postamble; - refType = 4; - sourceTree = ""; - }; - AD0ACCE1062733370054A820 = { - explicitFileType = sourcecode.make; - fileEncoding = 30; - isa = PBXFileReference; - path = GNUmakefile.preamble; - refType = 4; - sourceTree = ""; - }; - AD1967230665E52400E19038 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = NGLogConsoleAppender.h; - refType = 4; - sourceTree = ""; - }; - AD1967240665E52400E19038 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = NGLogConsoleAppender.m; - refType = 4; - sourceTree = ""; - }; - AD1967250665E52400E19038 = { - fileRef = AD1967230665E52400E19038; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - AD1967260665E52400E19038 = { - fileRef = AD1967240665E52400E19038; - isa = PBXBuildFile; - settings = { - }; - }; - AD1967610665FE4800E19038 = { - children = ( - AD1967620665FE5B00E19038, - ); - isa = PBXGroup; - name = Makefiles; - refType = 4; - sourceTree = ""; - }; - AD1967620665FE5B00E19038 = { - explicitFileType = sourcecode.make; - fileEncoding = 4; - isa = PBXFileReference; - path = GNUmakefile; - refType = 4; - sourceTree = ""; - }; - AD1967660665FE6800E19038 = { - children = ( - AD1967670665FE9200E19038, - ); - isa = PBXGroup; - name = Makefiles; - path = NGExtensions; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - AD1967670665FE9200E19038 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - name = GNUmakefile; - path = NGLogging/GNUmakefile; - refType = 4; - sourceTree = ""; - }; - AD19ED3105D7FAF4009EBA3A = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = SOPE.framework; - path = /Library/Frameworks/SOPE.framework; - refType = 0; - sourceTree = ""; - }; - AD19ED5205D7FBD1009EBA3A = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = Application.h; - refType = 4; - sourceTree = ""; - }; - AD19ED5305D7FBD1009EBA3A = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = Application.m; - refType = 4; - sourceTree = ""; - }; - AD19ED5405D7FBD1009EBA3A = { - fileRef = AD19ED5205D7FBD1009EBA3A; - isa = PBXBuildFile; - settings = { - }; - }; - AD19ED5505D7FBD1009EBA3A = { - fileRef = AD19ED5305D7FBD1009EBA3A; - isa = PBXBuildFile; - settings = { - }; - }; - AD19ED6305D7FBEA009EBA3A = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = Session.h; - refType = 4; - sourceTree = ""; - }; - AD19ED6405D7FBEA009EBA3A = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = Session.m; - refType = 4; - sourceTree = ""; - }; - AD19ED6505D7FBEA009EBA3A = { - fileRef = AD19ED6305D7FBEA009EBA3A; - isa = PBXBuildFile; - settings = { - }; - }; - AD19ED6605D7FBEA009EBA3A = { - fileRef = AD19ED6405D7FBEA009EBA3A; - isa = PBXBuildFile; - settings = { - }; - }; - AD95AEB90664BC6700FCB211 = { - explicitFileType = sourcecode.make; - fileEncoding = 4; - isa = PBXFileReference; - path = Version; - refType = 4; - sourceTree = ""; - }; - AD95AEBA0664BC6700FCB211 = { - fileRef = AD95AEB90664BC6700FCB211; - isa = PBXBuildFile; - settings = { - }; - }; - AD95AEBB0664BC7B00FCB211 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = ChangeLog; - refType = 4; - sourceTree = ""; - tabWidth = 4; - usesTabs = 1; - }; - AD95AEBC0664BC7B00FCB211 = { - fileRef = AD95AEBB0664BC7B00FCB211; - isa = PBXBuildFile; - settings = { - }; - }; - AD95C1870664C1E400FCB211 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = COPYING; - refType = 4; - sourceTree = ""; - }; - AD95C1880664C1E400FCB211 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = COPYRIGHT; - refType = 4; - sourceTree = ""; - }; - AD95C1890664C1E400FCB211 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = NOTES; - refType = 4; - sourceTree = ""; - }; - AD95C18A0664C1E400FCB211 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = PROJECTLEAD; - refType = 4; - sourceTree = ""; - }; - AD95C18B0664C1E400FCB211 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = TODO; - refType = 4; - sourceTree = ""; - }; - AD95C2640664CE7400FCB211 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = common.h; - refType = 4; - sourceTree = ""; - }; - AD95C2660664CE7400FCB211 = { - fileRef = AD95C2640664CE7400FCB211; - isa = PBXBuildFile; - settings = { - }; - }; - ADA38B8105DD238A00C820AA = { - isa = PBXFileReference; - lastKnownFileType = image.icns; - path = Lori.icns; - refType = 4; - sourceTree = ""; - }; - ADA38B8205DD238A00C820AA = { - fileRef = ADA38B8105DD238A00C820AA; - isa = PBXBuildFile; - settings = { - }; - }; - ADA38BE605DD23C400C820AA = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = README; - refType = 4; - sourceTree = ""; - }; - ADC15A300664CF290063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = text; - path = "wox-cheat-sheet.txt"; - refType = 4; - sourceTree = ""; - }; - ADC15A400664D0F50063754B = { - children = ( - AD1967610665FE4800E19038, - ADC15A530664E3280063754B, - ); - isa = PBXGroup; - path = NGExtensions; - refType = 4; - sourceTree = ""; - }; - ADC15A410664D1D90063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = "NSObject+ExtendedLogging.h"; - refType = 4; - sourceTree = ""; - }; - ADC15A420664D1D90063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = "NSObject+ExtendedLogging.m"; - refType = 4; - sourceTree = ""; - }; - ADC15A430664D1D90063754B = { - fileRef = ADC15A410664D1D90063754B; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - ADC15A440664D1D90063754B = { - fileRef = ADC15A420664D1D90063754B; - isa = PBXBuildFile; - settings = { - }; - }; - ADC15A450664DA320063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = NGLogging.h; - refType = 4; - sourceTree = ""; - }; - ADC15A470664DA320063754B = { - fileRef = ADC15A450664DA320063754B; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - ADC15A490664DA980063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = NGLogger.h; - refType = 4; - sourceTree = ""; - }; - ADC15A4A0664DA980063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = NGLogger.m; - refType = 4; - sourceTree = ""; - }; - ADC15A4B0664DA980063754B = { - fileRef = ADC15A490664DA980063754B; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - ADC15A4C0664DA980063754B = { - fileRef = ADC15A4A0664DA980063754B; - isa = PBXBuildFile; - settings = { - }; - }; - ADC15A4D0664E25B0063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = NGLogAppender.h; - refType = 4; - sourceTree = ""; - }; - ADC15A4E0664E25B0063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = NGLogAppender.m; - refType = 4; - sourceTree = ""; - }; - ADC15A4F0664E25B0063754B = { - fileRef = ADC15A4D0664E25B0063754B; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - ADC15A500664E25B0063754B = { - fileRef = ADC15A4E0664E25B0063754B; - isa = PBXBuildFile; - settings = { - }; - }; - ADC15A530664E3280063754B = { - children = ( - AD1967660665FE6800E19038, - AD0618D40666121C00AC467F, - ADC15A450664DA320063754B, - ADC15A410664D1D90063754B, - ADC15A420664D1D90063754B, - ADC15A490664DA980063754B, - ADC15A4A0664DA980063754B, - ADC15A540664E33A0063754B, - ADC15A550664E33A0063754B, - ADC15A4D0664E25B0063754B, - ADC15A4E0664E25B0063754B, - AD1967230665E52400E19038, - AD1967240665E52400E19038, - AD0618CE066610A200AC467F, - AD0618CF066610A200AC467F, - ); - isa = PBXGroup; - name = Logging; - path = NGLogging; - refType = 4; - sourceTree = ""; - }; - ADC15A540664E33A0063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = NGLogEvent.h; - refType = 4; - sourceTree = ""; - }; - ADC15A550664E33A0063754B = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = NGLogEvent.m; - refType = 4; - sourceTree = ""; - }; - ADC15A560664E33A0063754B = { - fileRef = ADC15A540664E33A0063754B; - isa = PBXBuildFile; - settings = { - ATTRIBUTES = ( - Public, - ); - }; - }; - ADC15A570664E33A0063754B = { - fileRef = ADC15A550664E33A0063754B; - isa = PBXBuildFile; - settings = { - }; - }; - ADEE3DCE05DD11C900F523DB = { - isa = PBXFileReference; - lastKnownFileType = folder; - path = WebServerResources; - refType = 4; - sourceTree = ""; - }; - ADEE3DD005DD11C900F523DB = { - fileRef = ADEE3DCE05DD11C900F523DB; - isa = PBXBuildFile; - settings = { - }; - }; - ADEE3DD405DD123C00F523DB = { - fileRef = ADEE3DCE05DD11C900F523DB; - isa = PBXBuildFile; - settings = { - }; - }; - ADEE3DD505DD126900F523DB = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = DirectAction.h; - refType = 4; - sourceTree = ""; - }; - ADEE3DD605DD126900F523DB = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = DirectAction.m; - refType = 4; - sourceTree = ""; - }; - ADEE3DD705DD126900F523DB = { - fileRef = ADEE3DD505DD126900F523DB; - isa = PBXBuildFile; - settings = { - }; - }; - ADEE3DD805DD126900F523DB = { - fileRef = ADEE3DD605DD126900F523DB; - isa = PBXBuildFile; - settings = { - }; - }; - ADEE3DDB05DD131E00F523DB = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = SOPEX.framework; - path = /Library/Frameworks/SOPEX.framework; - refType = 0; - sourceTree = ""; - }; - ADEE3DDC05DD131F00F523DB = { - fileRef = ADEE3DDB05DD131E00F523DB; - isa = PBXBuildFile; - settings = { - }; - }; - ADEE3DEB05DD135A00F523DB = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Cocoa.framework; - path = /System/Library/Frameworks/Cocoa.framework; - refType = 0; - sourceTree = ""; - }; - ADEE3DEC05DD135A00F523DB = { - fileRef = ADEE3DEB05DD135A00F523DB; - isa = PBXBuildFile; - settings = { - }; - }; - ADF026F205D903AE00D2292D = { - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 1; - files = ( - ADEE3DD405DD123C00F523DB, - ); - isa = PBXCopyFilesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - }; - rootObject = 29B97313FDCFA39411CA2CEA; -} diff --git a/Misc/WebUI/WebUI_Prefix.pch b/Misc/WebUI/WebUI_Prefix.pch deleted file mode 100644 index c12a93e6..00000000 --- a/Misc/WebUI/WebUI_Prefix.pch +++ /dev/null @@ -1,9 +0,0 @@ -// -// Prefix header for all source files of the 'WebUI' target in the 'WebUI' project -// - -#ifdef __OBJC__ - #import - #include - #include -#endif diff --git a/Misc/WebUI/WebUI_main.m b/Misc/WebUI/WebUI_main.m deleted file mode 100644 index dfe7dcd5..00000000 --- a/Misc/WebUI/WebUI_main.m +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifdef WITHOUT_SOPEX -#import -#define SOPEXMain WOApplicationMain -#else -#import -#endif /* WITHOUT_SOPEX */ - - -int main(int argc, const char *argv[]) -{ - return SOPEXMain(@"Application", argc, argv); -} diff --git a/Misc/WebUI/common.h b/Misc/WebUI/common.h deleted file mode 100644 index 79bf6b89..00000000 --- a/Misc/WebUI/common.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __common_H_ -#define __common_H_ - - -#import - -#include "NGLogging.h" - - -#endif /* __common_H_ */ diff --git a/Misc/WebUI/version.plist b/Misc/WebUI/version.plist deleted file mode 100644 index 6f3c68ca..00000000 --- a/Misc/WebUI/version.plist +++ /dev/null @@ -1,16 +0,0 @@ - - - - - BuildVersion - 1 - CFBundleShortVersionString - 0.1 - CFBundleVersion - 0.1 - ProjectName - NibPBTemplates - SourceVersion - 1160200 - - diff --git a/Misc/WebUI/wox-cheat-sheet.txt b/Misc/WebUI/wox-cheat-sheet.txt deleted file mode 100644 index 4a79b24b..00000000 --- a/Misc/WebUI/wox-cheat-sheet.txt +++ /dev/null @@ -1,50 +0,0 @@ -WOxControlElemBuilder ---------------------- - -:if -> WOConditional -:foreach -> WORepetition -:for-each -> WORepetition -:with -> WOSetCursor - -WOxMiscElemBuilder ------------------- - -:component-content -> WOComponentContent -:checkbox-list -> WOCheckBoxList -:entity -> WOEntity -:multiselection -> WOBrowser -:nbsp /*DEPRECATED*/ -> WOEntity -:popup -> WOPopUpButton -:radio-button-matrix -> WORadioButtonMatrix -:string -> WOString -:singleselection -> WOBrowser - - -WOxHTMLElemBuilder ------------------- - -:text -> WOTextField -:file -> WOFileUpload -:a -> WOHyperlink -:img -> WOImage -:form -> WOForm -:textarea -> WOText -:embed -> WOEmbeddedObject -:frame -> WOFrame -:iframe -> WOIFrame -:body -> WOBody - -:input [type="submit"] -> WOSubmitButton -:input [type="reset"] -> WOResetButton -:input [type="image"] -> WOImageButton -:input [type="radio"] -> WORadioButton -:input [type="checkbox"] -> WOCheckBox -:input [type="file"] -> WOFileUpload -:input [type="hidden"] -> WOHiddenField -:input [type="password"] -> WOPasswordField -:input [type="*"] -> WOTextField - -:meta [http-equiv="refresh*"] -> WOMetaRefresh - -:* [hasChildNodes="YES"] -> WOGenericContainer -:* [hasChildNodes="NO"] -> WOGenericElement diff --git a/Misc/ZideStore/UI-X/ChangeLog b/Misc/ZideStore/UI-X/ChangeLog deleted file mode 100644 index f8c8667d..00000000 --- a/Misc/ZideStore/UI-X/ChangeLog +++ /dev/null @@ -1,208 +0,0 @@ -2004-06-30 Marcus Müller - - * Scheduler/UIxAppointmentEditor.m: improved -saveAction. Does - everything in a complete manner now - except for saving which isn't - done at all. - -2004-06-30 Helge Hess - - * Scheduler/UIxAppointmentEditor.m: made the hack more hackish to work - on MacOSX - -2004-06-28 Marcus Mueller - - * Common/UIxComponent.[hm]: moved -ownMethodName here. - - * Scheduler/UIxCalView.[hm]: removed -ownMethodName, moved to - UIxComponent (reuse). - - * Scheduler/UIxAppointmentView.[hm]: first "draft" of view component. - The look of OGo is resembled closely, but most features are still - missing. - -2004-06-28 Marcus Mueller - - * Scheduler/GNUmakefile.preamble: links against libSOGoLogic now. - - * Scheduler/UIxAppointmentView.m, Scheduler/UIxAppointmentView.wox: - test of iCal object. - -2004-06-23 Marcus Mueller - - * UIxCalMonthOverview.[m,wox]: completed month view. Turned out to - be much more difficult to improve with style sheets than expected. - Requires version 4.2.45 of WEExtensions. - -2004-06-22 Marcus Mueller - - * Refactoring: Renamed everything from OGo to UIx in order to avoid - nameclashes (happens on OSX related to NGBundleManager) - - * Refactoring 2: Moved methods from UIxWeekOverview to UIxCalView. - - * Highlighting in UIxWeekOverview works now. - -2004-06-22 Helge Hess - - * Common/GNUmakefile.preamble: fixed linking for OGo gstep-make - -2004-06-21 Helge Hess - - * Scheduler/OGoCalWeekOverview.m: fixed syntax errors - -2004-06-18 Marcus Mueller - - * Implemented proper calendar in week overview. Highlighting isn't - enabled, yet. - -2004-06-18 Marcus Mueller - - * Common/OGoComponent.[hm]: new component which serves as a base - component for calendar components now. Knows how to deal with - queryParameters and offers url construction method(s). - - * All existing components have been rewritten to use queryParameters - instead of hardcoded strings where this is feasible. This provides - future extensibility and flexibility. - - * Handling of dates has been fixed to center around the use of a - 'day' parameter. startDate/endDate are coupled to this, but - don't override it as it's the duty of the individual view to set - its (feasible) ranges accordingly. The new behaviour is noticable - in the calendar selection tabview instantly, as it now replicates - what OGo does. - -2004-06-16 Marcus Mueller - - * Common/OGoAppNavView.m: construct URL correctly. - - * Common/OGoPageFrame.m: display login correctly. - - * Common/calendar.css: cosmetic changes. - - * Scheduler/OGoCalSelectTab.m: always display mondayOfWeek. - - * Scheduler/OGoCalBackForthNavView.m: created. - -2004-06-16 Marcus Mueller - - * Common/zidestoreui.css: new style for button_auto. - - * Scheduler/OGoCalView.[hm]: API for completing hrefs with necessary - query parts. - - * Scheduler/OGoCalWeekView.m: bugfix for startDate. - - * Scheduler/product.plist: added still missing views -> point to - weekoverview for the time being. - -2004-06-15 Marcus Mueller - - * Common/UIxTabView.m: removed class from tag, removed rendering - of headerFooter (what's that good for anyways?) - - * Several resources which resolved to wrong products added statically - in templates. - - * Cosmetic changes in templates. - -2004-06-14 Helge Hess - - * Scheduler/OGoCalMonthOverview.wox: added missing rsrc namespace - -2004-06-14 Helge Hess - - * Common/common.h: fixed a gcc 3.4 warning - -2004-06-14 Helge Hess - - * added aggregate project for UI-X - -2004-06-14 Marcus Mueller - - * Common/calendar.css: new date_label (unused) - - * Scheduler/OGoCalSelectTab.m: finished all labels - - * Scheduler/OGoCalDateLabel.m, Scheduler/OGoCalDateLabel.wox: new - component for rendering the correct date label based on startDate, - endDate and selection - - * Scheduler/OGoCalMonthView.m: prev/next month corrected - - * Scheduler/OGoCalMonthOverview.wox: uses date label and tabs now - - * Scheduler/OGoCalWeekOverview.wox: completed layout - - * Scheduler/GNUmakefile: new component added - -2004-06-14 Marcus Mueller - - * Common/UIxTabView.[hm]: more stylesheet support via headerStyle - and bodyStyle bindings. - - * Common/zidestoreui.css: styles for tabs, resembling OGo look. - - * Scheduler/OGoCalSelectTab.m: implemented dateLabel (for testing). - - * Scheduler/OGoCalSelectTab.wox: corrected selection binding namespace. - -2004-06-08 Helge Hess - - * Scheduler/NOTES: added class hierarchy - - * */common.h, GNUmakefile.preamble.: fixed for OSX compile - -2004-06-08 Marcus Mueller - - * Common/images: added a bunch of images from OGo - -2004-06-07 Marcus Mueller - - * Custom/GNUmakefile: changed ZIDESTORE to include installed version - (ZideStore12). Removed post install hooks. - - * Custom/GNUmakefile.postamble: new file, post install hooks and - xmllint for .wox. - -2004-06-07 Marcus Mueller - - * Scheduler/GNUmakefile: changed ZIDESTORE to include installed version - (ZideStore12). Removed post install hooks. - - * Scheduler/GNUmakefile.postamble: post install hooks updated for - GNUSTEP_BUILD_DIR. - -2004-06-03 Helge Hess - - * Scheduler/OGoCalWeekOverview.m: moved navigation URL generation to - superclass (now generic because we use the 'ownMethodName'). Could - even be moved to OGoCalView? - - * Scheduler/OGoCalMonthView.m: added next/prev month URL generation - methods, calculate startdate from form value - - * Scheduler/OGoCalView.m: added -ownMethodName method to return the - last path component of the request URL (the SOPE method), eg - 'weekoverview' for OGoCalWeekView, added - -dateNavigationURLWithNewStartDate: method to calculate 'startDate' - URLs (should be improved to include existing query parameters!) - - * Scheduler/OGoCalWeekOverview.m: minor tweaks ;-) - -2004-06-03 Marcus Mueller - - * Scheduler/OGoCalWeekView.m: construct startDate from formValue, - otherwise use current week's monday as startDate. - - * Scheduler/OGoCalWeekOverview.wox: switch back/forth - - * Scheduler/OGoCalWeekOverview.m: provide URLs for switching back/forth - weekoverview. - - * Scheduler/OGoCalView.[hm]: methods for converting dates into strings - and vice versa. - - * Scheduler/OGoAppointmentView.m, Scheduler/OGoCalView.m: fixed include - - * ChangeLog: created diff --git a/Misc/ZideStore/UI-X/Common/CommonUIProduct.m b/Misc/ZideStore/UI-X/Common/CommonUIProduct.m deleted file mode 100644 index b5a4da4a..00000000 --- a/Misc/ZideStore/UI-X/Common/CommonUIProduct.m +++ /dev/null @@ -1,34 +0,0 @@ -/* - Copyright (C) 2000-2003 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id: CommonUIProduct.m,v 1.1 2003/11/24 01:24:40 helge Exp $ - -#import - -@interface CommonUIProduct : NSObject -{ -} - -@end - -#include "common.h" - -@implementation CommonUIProduct -@end /* CommonUIProduct */ diff --git a/Misc/ZideStore/UI-X/Common/GNUmakefile b/Misc/ZideStore/UI-X/Common/GNUmakefile deleted file mode 100644 index 0fda272f..00000000 --- a/Misc/ZideStore/UI-X/Common/GNUmakefile +++ /dev/null @@ -1,82 +0,0 @@ -# $Id: GNUmakefile,v 1.2 2003/12/09 17:38:42 helge Exp $ - -include $(GNUSTEP_MAKEFILES)/common.make - -ZIDESTORE=$(GNUSTEP_USER_ROOT)/Headers/ZideStore12 - - -BUNDLE_NAME = CommonUI -BUNDLE_EXTENSION = .zsp -BUNDLE_INSTALL_DIR = $(GNUSTEP_USER_ROOT)/Library/ZideStore12 - -LIBRARY_NAME = libZideStoreCommonUI - - -libZideStoreCommonUI_HEADER_FILES_DIR = . -libZideStoreCommonUI_HEADER_FILES_INSTALL_DIR = $(ZIDESTORE)/Common - -libZideStoreCommonUI_HEADER_FILES += \ - UIxComponent.h \ - -libZideStoreCommonUI_OBJC_FILES += \ - UIxComponent.m \ - - -CommonUI_PRINCIPAL_CLASS = CommonUIProduct - -CommonUI_OBJC_FILES += \ - CommonUIProduct.m \ - UIxPageFrame.m \ - UIxAppFrame.m \ - UIxAppHeader.m \ - UIxAppNavigation.m \ - UIxWinClose.m \ - UIxAppNavView.m \ - \ - UIxElemBuilder.m \ - UIxTabView.m \ - UIxTabItem.m \ - - -CommonUI_RESOURCE_FILES += \ - Version \ - product.plist \ - UIxPageFrame.wox \ - UIxAppFrame.wox \ - UIxAppHeader.wox \ - UIxAppNavigation.wox \ - UIxWinClose.wox \ - UIxAppNavView.wox \ - \ - zidestoreui.css \ - calendar.css \ - \ - images/OGoLogo.gif \ - images/menu_logo_top.gif \ - images/line_left.gif \ - images/line_stretch.gif \ - images/line_right.gif \ - images/box_topleft.gif \ - images/box_top.gif \ - images/box_topright.gif \ - images/box_left.gif \ - images/box_right.gif \ - images/box_botleft.gif \ - images/box_bottom.gif\ - images/box_botright.gif\ - images/tab_selected.gif\ - images/tab_.gif\ - images/corner_right.gif\ - images/closewindow.gif - -ADDITIONAL_INCLUDE_DIRS += \ - -I. \ - -I$(ZIDESTORE)/Frontend -I$(ZIDESTORE)/Backend -I$(ZIDESTORE) - - -# make - --include GNUmakefile.preamble -include $(GNUSTEP_MAKEFILES)/library.make -include $(GNUSTEP_MAKEFILES)/bundle.make --include GNUmakefile.postamble diff --git a/Misc/ZideStore/UI-X/Common/GNUmakefile.postamble b/Misc/ZideStore/UI-X/Common/GNUmakefile.postamble deleted file mode 100644 index 3986bcce..00000000 --- a/Misc/ZideStore/UI-X/Common/GNUmakefile.postamble +++ /dev/null @@ -1,17 +0,0 @@ -# $Id: GNUmakefile.postamble,v 1.1 2004/05/12 14:45:56 helge Exp $ - -validate-wox: - xmllint --noout *.wox - -before-all :: validate-wox - - -ifneq ($(GNUSTEP_BUILD_DIR),) -after-all :: - @(cp bundle-info.plist \ - $(GNUSTEP_BUILD_DIR)/$(BUNDLE_NAME)$(BUNDLE_EXTENSION)) -else -after-all :: - @(cd $(BUNDLE_NAME)$(BUNDLE_EXTENSION);\ - cp ../bundle-info.plist .) -endif diff --git a/Misc/ZideStore/UI-X/Common/GNUmakefile.preamble b/Misc/ZideStore/UI-X/Common/GNUmakefile.preamble deleted file mode 100644 index e76e480c..00000000 --- a/Misc/ZideStore/UI-X/Common/GNUmakefile.preamble +++ /dev/null @@ -1,16 +0,0 @@ -# $Id$ - -ifneq ($(GNUSTEP_BUILD_DIR),) - RELBUILD_DIR_libZideStoreCommonUI = $(GNUSTEP_OBJ_DIR) -else - RELBUILD_DIR_libZideStoreCommonUI = $(GNUSTEP_OBJ_DIR) -endif - -libZideStoreCommonUI_LIBRARIES_DEPEND_UPON += -lNGObjWeb - -CommonUI_LIB_DIRS += -L$(RELBUILD_DIR_libZideStoreCommonUI) - -CommonUI_BUNDLE_LIBS += \ - -lNGObjWeb -lNGScripting \ - -lNGMime -lNGStreams -lNGExtensions -lEOControl \ - -lXmlRpc -lDOM -lSaxObjC -lZideStoreCommonUI diff --git a/Misc/ZideStore/UI-X/Common/UIxAppFrame.m b/Misc/ZideStore/UI-X/Common/UIxAppFrame.m deleted file mode 100644 index 8d9553fb..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppFrame.m +++ /dev/null @@ -1,11 +0,0 @@ -// $Id$ - -#include - -@interface UIxAppFrame : SoComponent -@end - -#include "common.h" - -@implementation UIxAppFrame -@end /* UIxAppFrame */ diff --git a/Misc/ZideStore/UI-X/Common/UIxAppFrame.wox b/Misc/ZideStore/UI-X/Common/UIxAppFrame.wox deleted file mode 100644 index 0437cf39..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppFrame.wox +++ /dev/null @@ -1,44 +0,0 @@ - - - - - <var:string value="title"/> - - - - - - - - - - - - - - - - - - - - - - - - This pages requires frame tags, which your browser does not support, - sorry ;-> - - diff --git a/Misc/ZideStore/UI-X/Common/UIxAppHeader.m b/Misc/ZideStore/UI-X/Common/UIxAppHeader.m deleted file mode 100644 index 5a4db92f..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppHeader.m +++ /dev/null @@ -1,11 +0,0 @@ -// $Id$ - -#include - -@interface UIxAppHeader : SoComponent -@end - -#include "common.h" - -@implementation UIxAppHeader -@end /* UIxAppHeader */ diff --git a/Misc/ZideStore/UI-X/Common/UIxAppHeader.wox b/Misc/ZideStore/UI-X/Common/UIxAppHeader.wox deleted file mode 100644 index 4f8c0d27..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppHeader.wox +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - -
- reload - - resistance is obsolete ;-) -
- - diff --git a/Misc/ZideStore/UI-X/Common/UIxAppNavView.m b/Misc/ZideStore/UI-X/Common/UIxAppNavView.m deleted file mode 100644 index 8bf1ff12..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppNavView.m +++ /dev/null @@ -1,104 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#import -#import -#import -#import - - -@interface UIxAppNavView : WOComponent -{ - id element; - id lastElement; -} - -@end - - -@implementation UIxAppNavView - -- (void)dealloc { - [self->element release]; - [self->lastElement release]; - [super dealloc]; -} - -- (void)setElement:(id)_element { - ASSIGN(self->element, _element); -} - -- (id)element { - return self->element; -} - -- (void)setLastElement:(id)_element { - ASSIGN(self->lastElement, _element); -} - -- (id)lastElement { - return self->lastElement; -} - -- (NSArray *)navPathElements { - NSArray *traversalObjects; - NSMutableArray *navPathComponents; - NSMutableString *navURL; - unsigned int i, count; - - traversalObjects = [[self context] objectTraversalStack]; - count = ([traversalObjects count] - 1); /* remove SoPageInvocation */ - navPathComponents = [[NSMutableArray alloc] initWithCapacity:count]; - navURL = [[NSMutableString alloc] initWithString:@"/"]; - - for(i = 0; i < count; i++) { - NSString *name, *url; - id obj; - - obj = [traversalObjects objectAtIndex:i]; - - name = [obj davDisplayName]; - if(!name) - name = NSStringFromClass([obj class]); - - [navURL appendString:name]; - [navURL appendString:@"/"]; - - if(! [name hasPrefix:@"ZideStore"]) { - NSMutableDictionary *c; - - c = [[NSMutableDictionary alloc] initWithCapacity:2]; - [c setObject:name forKey:@"name"]; - url = [navURL copy]; - [c setObject:url forKey:@"url"]; - [url release]; - [navPathComponents addObject:c]; - [c release]; - } - } - - [self setLastElement:[navPathComponents lastObject]]; - return [navPathComponents autorelease]; -} - -@end diff --git a/Misc/ZideStore/UI-X/Common/UIxAppNavView.wox b/Misc/ZideStore/UI-X/Common/UIxAppNavView.wox deleted file mode 100644 index 6e924d43..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppNavView.wox +++ /dev/null @@ -1,10 +0,0 @@ - - - -You are here:/ - \ No newline at end of file diff --git a/Misc/ZideStore/UI-X/Common/UIxAppNavigation.m b/Misc/ZideStore/UI-X/Common/UIxAppNavigation.m deleted file mode 100644 index 529127de..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppNavigation.m +++ /dev/null @@ -1,11 +0,0 @@ -// $Id$ - -#include - -@interface UIxAppNavigation : SoComponent -@end - -#include "common.h" - -@implementation UIxAppNavigation -@end /* UIxAppNavigation */ diff --git a/Misc/ZideStore/UI-X/Common/UIxAppNavigation.wox b/Misc/ZideStore/UI-X/Common/UIxAppNavigation.wox deleted file mode 100644 index 27eadaf5..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxAppNavigation.wox +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - -
- -
- -
- (reload) -
- -
- -
- -
- CSS Menues - - diff --git a/Misc/ZideStore/UI-X/Common/UIxComponent.h b/Misc/ZideStore/UI-X/Common/UIxComponent.h deleted file mode 100644 index d9a0c6ff..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxComponent.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#ifndef __UIxComponent_H_ -#define __UIxComponent_H_ - -#include - -@class NSCalendarDate; - - -@interface UIxComponent : SoComponent -{ - NSMutableDictionary *queryParameters; -} - -- (NSString *)queryParameterForKey:(NSString *)_key; -- (NSDictionary *)queryParameters; - -/* use this to set 'sticky' query parameters */ -- (void)setQueryParameter:(NSString *)_param forKey:(NSString *)_key; - -/* appends queryParameters to _method if any are set */ -- (NSString *)completeHrefForMethod:(NSString *)_method; - -- (NSString *)ownMethodName; - -/* date selection */ -- (NSCalendarDate *)selectedDate; -- (NSString *)dateStringForDate:(NSCalendarDate *)_date; -- (NSCalendarDate *)dateForDateString:(NSString *)_dateString; - -@end - -#endif /* __UIxComponent_H_ */ diff --git a/Misc/ZideStore/UI-X/Common/UIxComponent.m b/Misc/ZideStore/UI-X/Common/UIxComponent.m deleted file mode 100644 index 280bcd71..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxComponent.m +++ /dev/null @@ -1,168 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#include "UIxComponent.h" -#include -#include -#include - - -@interface UIxComponent (PrivateAPI) -- (void)_parseQueryString:(NSString *)_s; -@end - - -@implementation UIxComponent - -- (id)init { - if ((self = [super init])) { - self->queryParameters = [[NSMutableDictionary alloc] init]; - } - return self; -} - -- (void)dealloc { - [self->queryParameters release]; - [super dealloc]; -} - - -- (void)awake { - WORequest *req; - NSString *uri; - NSRange r; - - [super awake]; - - req = [[self context] request]; - uri = [req uri]; - r = [uri rangeOfString:@"?"]; - if(r.length > 0) { - NSString *qs; - - qs = [uri substringFromIndex:(r.location + r.length)]; - [self->queryParameters removeAllObjects]; - [self _parseQueryString:qs]; - } -} - -- (void)_parseQueryString:(NSString *)_s { - NSEnumerator *e; - NSString *part; - - e = [[_s componentsSeparatedByString:@"&"] objectEnumerator]; - while ((part = [e nextObject])) { - NSRange r; - NSString *key, *value; - - r = [part rangeOfString:@"="]; - if (r.length == 0) { - /* missing value of query parameter */ - key = [part stringByUnescapingURL]; - value = @"1"; - } - else { - key = [[part substringToIndex:r.location] stringByUnescapingURL]; - value = [[part substringFromIndex:(r.location + r.length)] - stringByUnescapingURL]; - } - [self->queryParameters setObject:value forKey:key]; - } -} - -- (NSString *)queryParameterForKey:(NSString *)_key { - return [self->queryParameters objectForKey:_key]; -} - -- (void)setQueryParameter:(NSString *)_param forKey:(NSString *)_key { - if(_key == nil) - return; - - if(_param != nil) - [self->queryParameters setObject:_param forKey:_key]; - else - [self->queryParameters removeObjectForKey:_key]; -} - -- (NSDictionary *)queryParameters { - return self->queryParameters; -} - -- (NSString *)completeHrefForMethod:(NSString *)_method { - NSDictionary *qp; - NSString *qs; - - qp = [self queryParameters]; - if([qp count] == 0) - return _method; - - qs = [[self context] queryStringFromDictionary:qp]; - return [_method stringByAppendingFormat:@"?%@", qs]; -} - -- (NSString *)ownMethodName { - NSString *uri; - NSRange r; - - uri = [[[self context] request] uri]; - - /* first: cut off query parameters */ - - r = [uri rangeOfString:@"?" options:NSBackwardsSearch]; - if (r.length > 0) - uri = [uri substringToIndex:r.location]; - - /* next: strip trailing slash */ - - if ([uri hasSuffix:@"/"]) uri = [uri substringToIndex:([uri length] - 1)]; - r = [uri rangeOfString:@"/" options:NSBackwardsSearch]; - - /* then: cut of last path component */ - - if (r.length == 0) // no slash? are we at root? - return @"/"; - - return [uri substringFromIndex:(r.location + 1)]; -} - -/* date */ - -- (NSCalendarDate *)selectedDate { - NSString *s; - - s = [self queryParameterForKey:@"day"]; - if(s) { - return [self dateForDateString:s]; - } - return [NSCalendarDate date]; -} - -- (NSString *)dateStringForDate:(NSCalendarDate *)_date { - return [_date descriptionWithCalendarFormat:@"%Y%m%d"]; -} - -- (NSCalendarDate *)dateForDateString:(NSString *)_dateString { - return [NSCalendarDate dateWithString:_dateString calendarFormat:@"%Y%m%d"]; -} - -@end diff --git a/Misc/ZideStore/UI-X/Common/UIxElemBuilder.m b/Misc/ZideStore/UI-X/Common/UIxElemBuilder.m deleted file mode 100644 index 00579088..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxElemBuilder.m +++ /dev/null @@ -1,86 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - -#include - -/* - This builder builds various elements from the UI-X product. - - All tags are mapped into the namespace (XMLNS_OD_BIND). - - maps to UIxTabView - maps to UIxTabItem -*/ - -@interface UIxElemBuilder : WOxTagClassElemBuilder -{ -} - -@end - -#include -#include "common.h" - -#define XMLNS_UIX @"OGo:uix" - - -@implementation UIxElemBuilder - -- (Class)classForElement:(id)_element { - NSString *tagName; - unsigned tl; - unichar c1; - - if (![[_element namespaceURI] isEqualToString:XMLNS_UIX]) - return Nil; - - tagName = [_element tagName]; - if ((tl = [tagName length]) < 2) - return Nil; - - c1 = [tagName characterAtIndex:0]; - - switch (c1) { - case 't': { /* starting with 't' */ - unichar c2; - - c2 = [tagName characterAtIndex:1]; - - if (tl == 3 && c2 == 'a') { - if ([tagName characterAtIndex:2] == 'b') - return NSClassFromString(@"UIxTabItem"); - } - - if (tl > 5) { - if (c2 == 'a') { - if ([tagName isEqualToString:@"tabview"]) - return NSClassFromString(@"UIxTabView"); - } - } - break; - } - } - - return Nil; -} - -@end /* UIxElemBuilder */ diff --git a/Misc/ZideStore/UI-X/Common/UIxPageFrame.m b/Misc/ZideStore/UI-X/Common/UIxPageFrame.m deleted file mode 100644 index ba39e5f4..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxPageFrame.m +++ /dev/null @@ -1,44 +0,0 @@ -// $Id$ - -#include -#include -#include - - -@interface UIxPageFrame : SoComponent -{ - NSString *title; -} - -@end - -#include "common.h" - -@implementation UIxPageFrame - -- (void)dealloc { - [self->title release]; - [super dealloc]; -} - -/* accessors */ - -- (void)setTitle:(NSString *)_value { - ASSIGN(self->title, _value); -} - -- (NSString *)title { - return self->title; -} - -- (NSString *)login { - WOContext *ctx; - SoUser *user; - - ctx = [self context]; - user = [[[self clientObject] authenticatorInContext:ctx] - userInContext:ctx]; - return [user login]; -} - -@end /* UIxPageFrame */ diff --git a/Misc/ZideStore/UI-X/Common/UIxPageFrame.wox b/Misc/ZideStore/UI-X/Common/UIxPageFrame.wox deleted file mode 100644 index efc1f4d9..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxPageFrame.wox +++ /dev/null @@ -1,308 +0,0 @@ - - - - - <var:string value="title"/> - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- - - - - -
- - - - - - -
- - - - - -
-
- - - - - -
- - - - - - - - - - - - - - - - -
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - SOGo () - -
- - - - - - -
- - - - - -
-
-
- - News - -
- - Projects - -
- - Contacts - -
- - Companies - -
- - Calendar - -
- - Tasks - -
-
- -
- - - - - -
- -
-
- - - - - - - - - - - - - - - - - - - -
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Misc -
- - - - - - -
- - - - - -
-
-
- New Email -
- Inbox -
- Preferences -
- Home -
- Desktop -
- Logout -
-
- -
- - - - - -
-
-
- -
- - - - - - - - -
- - - - - -
-
- - - - - -
- - 2000-2004 SKYRIX Software AG. - We welcome your - feedback. - - - - No sessions required! ;-) - -
-
- - diff --git a/Misc/ZideStore/UI-X/Common/UIxTabItem.m b/Misc/ZideStore/UI-X/Common/UIxTabItem.m deleted file mode 100644 index 21046f9d..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxTabItem.m +++ /dev/null @@ -1,475 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - -#include "UIxTabView.h" -#include "common.h" - -#if DEBUG -# define DEBUG_JS 1 -#endif - -/* context keys */ -extern NSString *UIxTabView_HEAD; -extern NSString *UIxTabView_BODY; -extern NSString *UIxTabView_KEYS; -extern NSString *UIxTabView_SCRIPT; -extern NSString *UIxTabView_ACTIVEKEY; -extern NSString *UIxTabView_COLLECT; - -@implementation UIxTabItem - -static Class StrClass = Nil; - -+ (int)version { - return [super version] + 0; -} -+ (void)initialize { - StrClass = [NSString class]; -} - -static NSString *retStrForInt(int i) { - switch(i) { - case 0: return @"0"; - case 1: return @"1"; - case 2: return @"2"; - case 3: return @"3"; - case 4: return @"4"; - case 5: return @"5"; - case 6: return @"6"; - case 7: return @"7"; - case 8: return @"8"; - case 9: return @"9"; - case 10: return @"10"; - // TODO: find useful count! - default: - return [[StrClass alloc] initWithFormat:@"%i", i]; - } -} - -- (id)initWithName:(NSString *)_name - associations:(NSDictionary *)_config - template:(WOElement *)_subs -{ - if ((self = [super initWithName:_name associations:_config template:_subs])) { - self->key = WOExtGetProperty(_config, @"key"); - self->label = WOExtGetProperty(_config, @"label"); - - self->isScript = WOExtGetProperty(_config, @"isScript"); - self->href = WOExtGetProperty(_config, @"href"); - - self->icon = WOExtGetProperty(_config, @"icon"); - self->action = WOExtGetProperty(_config, @"action"); - - self->tabStyle = WOExtGetProperty(_config, @"tabStyle"); - self->selectedTabStyle = WOExtGetProperty(_config, @"selectedTabStyle"); - - self->tabIcon = WOExtGetProperty(_config, @"tabIcon"); - self->leftTabIcon = WOExtGetProperty(_config, @"leftTabIcon"); - self->selectedTabIcon = WOExtGetProperty(_config, @"selectedTabIcon"); - - self->asBackground = WOExtGetProperty(_config, @"asBackground"); - self->width = WOExtGetProperty(_config, @"width"); - self->height = WOExtGetProperty(_config, @"height"); - self->activeBgColor = WOExtGetProperty(_config, @"activeBgColor"); - self->inactiveBgColor = WOExtGetProperty(_config, @"inactiveBgColor"); - - self->template = [_subs retain]; - } - return self; -} - -- (void)dealloc { - [self->key release]; - [self->label release]; - - [self->href release]; - - [self->action release]; - - [self->isScript release]; - [self->template release]; - - [self->tabStyle release]; - [self->selectedTabStyle release]; - - [self->icon release]; - [self->leftTabIcon release]; - [self->selectedTabIcon release]; - [self->tabIcon release]; - - [self->asBackground release]; - [self->width release]; - [self->height release]; - - [self->activeBgColor release]; - [self->inactiveBgColor release]; - - [super dealloc]; -} - -/* responder */ - -- (void)takeValuesFromRequest:(WORequest *)_rq inContext:(WOContext *)_ctx { - NSString *activeTabKey; - NSString *myTabKey; - BOOL doCheck; - - if ([_ctx objectForKey:UIxTabView_HEAD]) { - /* head clicks */ - [[_ctx component] debugWithFormat: - @"UIxTabItem: head takes (no) values, eid='%@'", - [_ctx elementID]]; - return; - } - - if ((activeTabKey = [_ctx objectForKey:UIxTabView_BODY]) == nil) { - [[_ctx component] debugWithFormat:@"UIxTabItem: invalid state"]; - [self->template takeValuesFromRequest:_rq inContext:_ctx]; - return; - } - - myTabKey = [self->key stringValueInComponent:[_ctx component]]; - doCheck = [self->isScript boolValueInComponent:[_ctx component]]; - - if ([activeTabKey isEqualToString:myTabKey] || doCheck) { -#if ADD_OWN_ELEMENTIDS - [_ctx appendElementIDComponent:activeTabKey]; -#endif - -#if DEBUG_TAKEVALUES - [[_ctx component] debugWithFormat: - @"UIxTabItem: body takes values, eid='%@'", - [_ctx elementID]]; -#endif - - [self->template takeValuesFromRequest:_rq inContext:_ctx]; -#if ADD_OWN_ELEMENTIDS - [_ctx deleteLastElementIDComponent]; -#endif - } -#if DEBUG_TAKEVALUES - else { - [[_ctx component] debugWithFormat: - @"UIxTabItem: body takes no values, eid='%@'", - [_ctx elementID]]; - } -#endif -} - -- (id)invokeActionForRequest:(WORequest *)_req inContext:(WOContext *)_ctx { - id result; - WOAssociation *tmp; - NSString *activeTabKey; - - if ((tmp = [_ctx objectForKey:UIxTabView_HEAD])) { - /* click on tab icon */ - NSString *tabkey; - - tabkey = [_ctx currentElementID]; - [_ctx consumeElementID]; - [_ctx appendElementIDComponent:tabkey]; - - if ([tmp isValueSettable]) - [tmp setValue:tabkey inComponent:[_ctx component]]; - -#if 0 - result = [self->action valueInComponent:[_ctx component]]; -#endif - - [_ctx deleteLastElementIDComponent]; - } - else if ((activeTabKey = [_ctx objectForKey:UIxTabView_BODY])) { - /* clicked somewhere in the (active) body */ - result = [self->template invokeActionForRequest:_req inContext:_ctx]; - } - else { - [[_ctx component] logWithFormat:@"UIxTabItem: invalid invoke state"]; - result = [self->template invokeActionForRequest:_req inContext:_ctx]; - } - - return result; -} - -/* info collection */ - -- (void)_collectInContext:(WOContext *)_ctx key:(NSString *)k { - BOOL isLeft = NO; - NSMutableArray *keys; - UIxTabItemInfo *info; - WOComponent *cmp; - - cmp = [_ctx component]; - keys = [_ctx objectForKey:UIxTabView_KEYS]; - if (keys == nil) { - keys = [[[NSMutableArray alloc] init] autorelease]; - [_ctx setObject:keys forKey:UIxTabView_KEYS]; - isLeft = YES; - } - - if (k == nil) { - /* auto-assign a key */ - k = retStrForInt([keys count]); - } - else - k = [k retain]; - [_ctx appendElementIDComponent:k]; - - info = [[UIxTabItemInfo alloc] init]; - info->key = [k copy]; - info->label = [[self->label stringValueInComponent:cmp] copy]; - info->icon = [[self->icon stringValueInComponent:cmp] copy]; -#if 0 - info->uri = [[_ctx componentActionURL] copy]; -#else - info->uri = [[self->href stringValueInComponent:cmp] copy]; -#endif - info->isScript = [self->isScript boolValueInComponent:cmp]; - info->tabIcon = [[self->tabIcon stringValueInComponent:cmp] copy]; - info->leftIcon = [[self->leftTabIcon stringValueInComponent:cmp] copy]; - info->selIcon = [[self->selectedTabIcon stringValueInComponent:cmp] - copy]; - info->tabStyle = [[self->tabStyle stringValueInComponent:cmp] copy]; - info->selectedTabStyle = [[self->selectedTabStyle stringValueInComponent:cmp] - copy]; - - if (self->asBackground == nil) - info->asBackground = 0; - else { - info->asBackground - = ([self->asBackground boolValueInComponent:cmp]) ? 1 : -1; - } - info->width = [[self->width stringValueInComponent:cmp] copy]; - info->height = [[self->height stringValueInComponent:cmp] copy]; - info->activeBg = [[self->activeBgColor stringValueInComponent:cmp] - copy]; - info->inactiveBg = [[self->inactiveBgColor stringValueInComponent:cmp] - copy]; - - if (info->leftIcon == nil) info->leftIcon = [info->tabIcon copy]; - - [keys addObject:info]; - [info release]; - [k release]; - - [_ctx deleteLastElementIDComponent]; -} - -/* header generation */ - -- (void)_appendHeadToResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx - activeKey:(NSString *)activeKey - key:(NSString *)k -{ - /* head is currently generated in UIxTabView */ -#if 0 - // note: some associations can be inherited by UIxTabView ! - BOOL doImages; - WOComponent *comp; - BOOL doBgIcon; - NSString *label; - NSString *w, *h; - - doImages = ![[[_ctx request] clientCapabilities] isTextModeBrowser]; - comp = [_ctx component]; - - doBgIcon = self->asBackground && doImages - ? [self->asBackground boolValueInComponent:comp] ? YES : NO - : NO; - - if ((label = [self->label stringValueInComponent:comp]) == nil) - label = k; - - if (doImages) { - /* lookup image */ - NSString *imgName = nil; - // ... - - imgUri = WEUriOfResource(imgName, _ctx); - if ([imgUri length] < 1) - doImages = NO; - } - - // .... _isActive -#endif -} - -/* body generation */ - -- (void)_appendBodyToResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx - activeKey:(NSString *)tmp - key:(NSString *)k -{ - BOOL doScript; - BOOL isScript_; - BOOL isActive; - - doScript = [[_ctx objectForKey:UIxTabView_SCRIPT] boolValue]; - isScript_ = [self->isScript boolValueInComponent:[_ctx component]]; - isActive = [tmp isEqualToString:k]; - - if (doScript && (isActive || isScript_)) { - [_response appendContentString:@"
\n"]; - } - - if (isActive || (doScript && isScript_)) { - /* content is active or used as layer*/ -#if ADD_OWN_ELEMENTIDS - [_ctx appendElementIDComponent:k]; -#endif -#if DEBUG && 0 - NSLog(@"TAB: %@", k); -#endif - - [self->template appendToResponse:_response inContext:_ctx]; - -#if ADD_OWN_ELEMENTIDS - [_ctx deleteLastElementIDComponent]; -#endif - } - - if (doScript && (isActive || isScript_)) { - NSString *jsout; - [_response appendContentString:@"
"]; - - jsout = [NSString alloc]; - jsout = [jsout initWithFormat: - @""]; - } -} - -/* master generation method */ - -- (void)appendToResponse:(WOResponse *)_response inContext:(WOContext *)_ctx { - NSString *k; - BOOL doForm; - id tmp; - - doForm = [_ctx isInForm]; - k = [self->key stringValueInComponent:[_ctx component]]; - - if ((tmp = [_ctx objectForKey:UIxTabView_HEAD])) { - if ([tmp isEqual:UIxTabView_COLLECT]) { - [self _collectInContext:_ctx key:k]; - } - else { - [self _appendHeadToResponse:_response inContext:_ctx - activeKey:tmp key:k]; - } - } - else if ((tmp = [_ctx objectForKey:UIxTabView_BODY])) { - [self _appendBodyToResponse:_response inContext:_ctx - activeKey:tmp key:k]; - } - else { - NSLog(@"WARNING(%s): invalid UIxTabItem state !!!", __PRETTY_FUNCTION__); - [_response appendContentString:@"[invalid state]"]; - } -} - -@end /* UIxTabItem */ - -@implementation UIxTabItemInfo - -- (void)dealloc { - [self->uri release]; - [self->icon release]; - [self->label release]; - [self->key release]; - [self->tabStyle release]; - [self->selectedTabStyle release]; - [self->tabIcon release]; - [self->selIcon release]; - [self->leftIcon release]; - [self->width release]; - [self->height release]; - [self->activeBg release]; - [self->inactiveBg release]; - - [super dealloc]; -} - -/* accessors */ - -- (NSString *)key { - return self->key; -} -- (NSString *)label { - return self->label; -} -- (NSString *)icon { - return self->icon; -} -- (NSString *)uri { - return self->uri; -} -- (BOOL)isScript { - return self->isScript; -} - -- (int)asBackground { - return self->asBackground; -} - -- (NSString *)width { - return self->width; -} - -- (NSString *)height { - return self->height; -} - -- (NSString *)activeBg { - return self->activeBg; -} - -- (NSString *)inactiveBg { - return self->inactiveBg; -} - -@end /* UIxTabItemInfo */ diff --git a/Misc/ZideStore/UI-X/Common/UIxTabView.h b/Misc/ZideStore/UI-X/Common/UIxTabView.h deleted file mode 100644 index 8224b442..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxTabView.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - -#ifndef __UIxTabView_H__ -#define __UIxTabView_H__ - -/* - This is a library private header ! -*/ - -#include - -/* - Does not support tab-head-creation from nested components !!! - - hh: Why not ??? -> Because selection is manipulated in sub-elements - - UIxTabView creates element-IDs like - - .h.*.$key. for the tab-items (head-mode) - .b.$key... for the tab-content (content-mode) (new, hh) - - !!! UIxTabView JavaScript can't handle duplicate tab-keys !!! -*/ - -@interface UIxTabView : WODynamicElement -{ - WOAssociation *selection; - - /* config: */ - WOAssociation *headerStyle; - WOAssociation *bodyStyle; - WOAssociation *tabStyle; - WOAssociation *selectedTabStyle; - - /* old config: */ - WOAssociation *bgColor; - WOAssociation *nonSelectedBgColor; - WOAssociation *leftCornerIcon; - WOAssociation *rightCornerIcon; - - WOAssociation *tabIcon; - WOAssociation *leftTabIcon; - WOAssociation *selectedTabIcon; - - WOAssociation *asBackground; - WOAssociation *width; - WOAssociation *height; - WOAssociation *activeBgColor; - WOAssociation *inactiveBgColor; - - WOAssociation *fontColor; - WOAssociation *fontSize; - WOAssociation *fontFace; - - id template; -} - -@end - -@interface UIxTabItem : WODynamicElement -{ - WOAssociation *key; - WOAssociation *label; - - WOAssociation *href; - WOAssociation *isScript; - - WOAssociation *action; - WOAssociation *icon; - - /* config: */ - WOAssociation *tabStyle; - WOAssociation *selectedTabStyle; - - /* old config */ - WOAssociation *tabIcon; - WOAssociation *leftTabIcon; - WOAssociation *selectedTabIcon; - - WOAssociation *asBackground; - WOAssociation *width; - WOAssociation *height; - WOAssociation *activeBgColor; - WOAssociation *inactiveBgColor; - - id template; -} - -@end - -@interface UIxTabItemInfo : NSObject -{ -@public - NSString *label; - NSString *icon; - NSString *key; - NSString *uri; - NSString *tabIcon; - NSString *leftIcon; - NSString *selIcon; - NSString *tabStyle; - NSString *selectedTabStyle; - - int asBackground; // 0 -> not set, 1 -> YES, else -> NO - NSString *width; - NSString *height; - NSString *activeBg; - NSString *inactiveBg; - - BOOL isScript; -} -@end - -#endif /* __UIxTabView_H__ */ diff --git a/Misc/ZideStore/UI-X/Common/UIxTabView.m b/Misc/ZideStore/UI-X/Common/UIxTabView.m deleted file mode 100644 index ac635c3e..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxTabView.m +++ /dev/null @@ -1,819 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - -#include "UIxTabView.h" -#include "common.h" -#import -#import -#import -#include - -#if DEBUG -// # define DEBUG_TAKEVALUES 1 -# define DEBUG_JS 1 -#endif - -/* context keys */ -NSString *UIxTabView_HEAD = @"UIxTabView_head"; -NSString *UIxTabView_BODY = @"UIxTabView_body"; -NSString *UIxTabView_KEYS = @"UIxTabView_keys"; -NSString *UIxTabView_SCRIPT = @"UIxTabView_script"; -NSString *UIxTabView_ACTIVEKEY = @"UIxTabView_activekey"; -NSString *UIxTabView_COLLECT = @"~tv~"; - -@implementation UIxTabView - -static NSNumber *YesNumber; - -+ (void)initialize { - if (YesNumber == nil) - YesNumber = [[NSNumber numberWithBool:YES] retain]; -} - -+ (int)version { - return [super version] + 0; -} - -- (id)initWithName:(NSString *)_name - associations:(NSDictionary *)_config - template:(WOElement *)_subs -{ - if ((self = [super initWithName:_name associations:_config template:_subs])) { - self->selection = WOExtGetProperty(_config, @"selection"); - - self->headerStyle = WOExtGetProperty(_config, @"headerStyle"); - self->bodyStyle = WOExtGetProperty(_config, @"bodyStyle"); - self->tabStyle = WOExtGetProperty(_config, @"tabStyle"); - self->selectedTabStyle = WOExtGetProperty(_config, @"selectedTabStyle"); - - self->bgColor = WOExtGetProperty(_config, @"bgColor"); - self->nonSelectedBgColor = WOExtGetProperty(_config, @"nonSelectedBgColor"); - self->leftCornerIcon = WOExtGetProperty(_config, @"leftCornerIcon"); - self->rightCornerIcon = WOExtGetProperty(_config, @"rightCornerIcon"); - - self->tabIcon = WOExtGetProperty(_config, @"tabIcon"); - self->leftTabIcon = WOExtGetProperty(_config, @"leftTabIcon"); - self->selectedTabIcon = WOExtGetProperty(_config, @"selectedTabIcon"); - - self->asBackground = WOExtGetProperty(_config, @"asBackground"); - self->width = WOExtGetProperty(_config, @"width"); - self->height = WOExtGetProperty(_config, @"height"); - self->activeBgColor = WOExtGetProperty(_config, @"activeBgColor"); - self->inactiveBgColor = WOExtGetProperty(_config, @"inactiveBgColor"); - - self->fontColor = WOExtGetProperty(_config, @"fontColor"); - self->fontSize = WOExtGetProperty(_config, @"fontSize"); - self->fontFace = WOExtGetProperty(_config, @"fontFace"); - - self->template = RETAIN(_subs); - } - return self; -} - -- (void)dealloc { - [self->selection release]; - - [self->headerStyle release]; - [self->bodyStyle release]; - [self->tabStyle release]; - [self->selectedTabStyle release]; - - RELEASE(self->bgColor); - RELEASE(self->nonSelectedBgColor); - RELEASE(self->leftCornerIcon); - RELEASE(self->rightCornerIcon); - - RELEASE(self->leftTabIcon); - RELEASE(self->selectedTabIcon); - RELEASE(self->tabIcon); - - RELEASE(self->width); - RELEASE(self->height); - - RELEASE(self->activeBgColor); - RELEASE(self->inactiveBgColor); - - RELEASE(self->fontColor); - RELEASE(self->fontSize); - RELEASE(self->fontFace); - - RELEASE(self->template); - [super dealloc]; -} - -/* nesting */ - -- (id)saveNestedStateInContext:(WOContext *)_ctx { - return nil; -} -- (void)restoreNestedState:(id)_state inContext:(WOContext *)_ctx { - if (_state == nil) return; -} - -- (NSArray *)collectKeysInContext:(WOContext *)_ctx { - /* collect mode, collects all keys */ - [_ctx setObject:UIxTabView_COLLECT forKey:UIxTabView_HEAD]; - - [self->template appendToResponse:nil inContext:_ctx]; - - [_ctx removeObjectForKey:UIxTabView_HEAD]; - return [_ctx objectForKey:UIxTabView_KEYS]; -} - -/* responder */ - -- (void)takeValuesFromRequest:(WORequest *)_req inContext:(WOContext *)_ctx { - id nestedState; - NSString *activeTabKey; - - activeTabKey = [self->selection stringValueInComponent:[_ctx component]]; - NSLog(@"%s activeTabKey:%@", __PRETTY_FUNCTION__, activeTabKey); - nestedState = [self saveNestedStateInContext:_ctx]; - [_ctx appendElementIDComponent:@"b"]; - [_ctx appendElementIDComponent:activeTabKey]; - - [_ctx setObject:activeTabKey forKey:UIxTabView_BODY]; - -#if DEBUG_TAKEVALUES - [[_ctx component] debugWithFormat:@"UIxTabView: body takes values, eid='%@'", - [_ctx elementID]]; -#endif - - [self->template takeValuesFromRequest:_req inContext:_ctx]; - - [_ctx removeObjectForKey:UIxTabView_BODY]; - [_ctx deleteLastElementIDComponent]; // activeKey - [_ctx deleteLastElementIDComponent]; /* 'b' */ - [self restoreNestedState:nestedState inContext:_ctx]; -} - -- (id)invokeActionForRequest:(WORequest *)_req inContext:(WOContext *)_ctx { - NSString *key; - id result; - id nestedState; - - if ((key = [_ctx currentElementID]) == nil) - return nil; - - result = nil; - nestedState = [self saveNestedStateInContext:_ctx]; - - if ([key isEqualToString:@"h"]) { - /* header action */ - //NSString *urlKey; - - [_ctx consumeElementID]; - [_ctx appendElementIDComponent:@"h"]; -#if 0 - if ((urlKey = [_ctx currentElementID]) == nil) { - [[_ctx application] - debugWithFormat:@"missing active head tab key !"]; - } - else { - //NSLog(@"clicked: %@", urlKey); - [_ctx consumeElementID]; - [_ctx appendElementIDComponent:urlKey]; - } -#endif - - [_ctx setObject:self->selection forKey:UIxTabView_HEAD]; - result = [self->template invokeActionForRequest:_req inContext:_ctx]; - [_ctx removeObjectForKey:UIxTabView_HEAD]; - -#if 0 - if (urlKey) - [_ctx deleteLastElementIDComponent]; // active key -#endif - [_ctx deleteLastElementIDComponent]; // 'h' - } - else if ([key isEqualToString:@"b"]) { - /* body action */ - NSString *activeTabKey, *urlKey; - - [_ctx consumeElementID]; - [_ctx appendElementIDComponent:@"b"]; - - if ((urlKey = [_ctx currentElementID]) == nil) { - [[_ctx application] - debugWithFormat:@"missing active body tab key !"]; - } - else { - //NSLog(@"clicked: %@", urlKey); - [_ctx consumeElementID]; - [_ctx appendElementIDComponent:urlKey]; - } - - activeTabKey = [self->selection stringValueInComponent:[_ctx component]]; - [_ctx setObject:activeTabKey forKey:UIxTabView_BODY]; - - result = [self->template invokeActionForRequest:_req inContext:_ctx]; - - [_ctx removeObjectForKey:UIxTabView_BODY]; - - if (urlKey) - [_ctx deleteLastElementIDComponent]; // active key - [_ctx deleteLastElementIDComponent]; // 'b' - } - else { - [[_ctx application] - debugWithFormat:@"unknown tab container key '%@'", key]; - } - - [self restoreNestedState:nestedState inContext:_ctx]; - return result; -} - -- (NSString *)_tabViewCountInContext:(WOContext *)_ctx { - int count; - count = [[_ctx valueForKey:@"UIxTabViewScriptDone"] intValue]; - return [NSString stringWithFormat:@"%d",count]; -} - -- (NSString *)scriptHref:(UIxTabItemInfo *)_info - inContext:(WOContext *)_ctx - isLeft:(BOOL)_isLeft - keys:(NSArray *)_keys -{ - NSMutableString *result = [NSMutableString string]; - UIxTabItemInfo *tmp; - NSString *activeKey; - int i, cnt; - NSString *elID; - NSString *tstring; - - activeKey = [self->selection stringValueInComponent:[_ctx component]]; - [result appendString:@"JavaScript:showTab("]; - [result appendString:_info->key]; - [result appendString:@"Tab);"]; - - [result appendString:@"swapCorners("]; - tstring = (!_isLeft) - ? @"tabCorner%@,tabCornerLeft%@);" - : @"tabCornerLeft%@,tabCorner%@);"; - elID = [self _tabViewCountInContext:_ctx]; - [result appendString:[NSString stringWithFormat:tstring,elID,elID]]; - - for (i=0, cnt = [_keys count]; i < cnt; i++) { - tmp = [_keys objectAtIndex:i]; - - if ((tmp->isScript || [tmp->key isEqualToString:activeKey]) - && ![tmp->key isEqualToString:_info->key]) { - [result appendString:@"hideTab("]; - [result appendString:tmp->key]; - [result appendString:@"Tab);"]; - } - } - return result; -} - -- (void)appendLink:(UIxTabItemInfo *)_info - toResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx - isActive:(BOOL)_isActive isLeft:(BOOL)_isLeft - doScript:(BOOL)_doScript keys:(NSArray *)_keys -{ - NSString *headUri = nil; - NSString *label = nil; - NSString *scriptHref = nil; - NSString *styleName = nil; - - WEClientCapabilities *ccaps; - WOComponent *comp; - - ccaps = [[_ctx request] clientCapabilities]; - - comp = [_ctx component]; - headUri = _info->uri; - - if ((label = _info->label) == nil) - label = _info->key; - - if (_isActive) { - styleName = (_info->selectedTabStyle) - ? _info->selectedTabStyle - : [self->selectedTabStyle stringValueInComponent:comp]; - } - else { - styleName = (_info->tabStyle) - ? _info->tabStyle - : [self->tabStyle stringValueInComponent:comp]; - } - - [_response appendContentString:@"']; - - [_response appendContentString:@"isScript || _isActive)) { - scriptHref = - [self scriptHref:_info inContext:_ctx isLeft:_isLeft keys:_keys]; - [_response appendContentHTMLAttributeValue:scriptHref]; - } - else { - [_response appendContentHTMLAttributeValue:headUri]; - } - - [_response appendContentString:@"\" "]; - [_response appendContentString: - [NSString stringWithFormat:@"name='%@TabLink'", _info->key]]; - [_response appendContentString:@">"]; - - if ([label length] < 1) - label = _info->key; - [_response appendContentString:@""]; - [_response appendContentHTMLString:label]; - [_response appendContentString:@""]; - - [_response appendContentString:@""]; - - [_response appendContentString:@""]; - -#if 0 - if (_doScript && (_info->isScript || _isActive)) { - NSString *k; // key - NSString *s; // selected tab icon - NSString *u; // unselected tab icon - //NSString *out; - - k = _info->key; - s = _info->selIcon; // selectedTabIcon - u = (_isLeft) ? _info->leftIcon : _info->tabIcon; - - s = WEUriOfResource(s, _ctx); - u = WEUriOfResource(u, _ctx); - - s = ([s length] < 1) ? imgUri : s; - u = ([u length] < 1) ? imgUri : u; - -#if 0 - out = [NSString alloc]; - out = [out initWithFormat: - @"", - k, k, k, k, scriptHref, k, headUri, - k, k, k, k, - k, u, k, k, s - ]; - - [_response appendContentString:out]; - RELEASE(out); -#else -# define _appendStr_(_str_) [_response appendContentString:_str_] - _appendStr_(@""); -#undef _appendStr_ -#endif - } -#endif -} - -- (void)appendSubmitButton:(UIxTabItemInfo *)_info - toResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx - isActive:(BOOL)_isActive isLeft:(BOOL)_left - doScript:(BOOL)_doScript keys:(NSArray *)_keys -{ - [self appendLink:_info - toResponse:_response - inContext:_ctx - isActive:_isActive isLeft:_left - doScript:_doScript keys:_keys]; -} - -- (void)_appendTabViewJSScriptToResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx -{ - [_response appendContentString: - @""]; -} - -- (void)_appendHeaderRowToResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx - keys:(NSArray *)keys activeKey:(NSString *)activeKey - doScript:(BOOL)doScript -{ - unsigned i, count; - BOOL doForm; - NSString *styleName; - - doForm = NO; /* generate form controls ? */ - - [_response appendContentString:@""]; - - styleName = [self->headerStyle stringValueInComponent:[_ctx component]]; - if(styleName) { - [_response appendContentString: - @""]; - } - else { - [_response appendContentString: - @"
"]; - } - - for (i = 0, count = [keys count]; i < count; i++) { - UIxTabItemInfo *info; - NSString *key; - BOOL isActive; - - info = [keys objectAtIndex:i]; - key = info->key; - isActive = [key isEqualToString:activeKey]; - - [_ctx appendElementIDComponent:key]; - - if (doForm) { - /* tab is inside of a FORM, so produce submit buttons */ - [self appendSubmitButton:info - toResponse:_response - inContext:_ctx - isActive:isActive - isLeft:(i == 0) ? YES : NO - doScript:doScript - keys:keys]; - } - else { - /* tab is not in a FORM, generate hyperlinks for tab */ - [self appendLink:info - toResponse:_response - inContext:_ctx - isActive:isActive - isLeft:(i == 0) ? YES : NO - doScript:doScript - keys:keys]; - } - - [_ctx deleteLastElementIDComponent]; - } - // [_response appendContentString:@""]; - [_response appendContentString:@"
"]; - [_response appendContentString:@""]; -} - -- (void)_appendHeaderFootRowToResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx - bgcolor:(NSString *)bgcolor - doScript:(BOOL)doScript - isLeftActive:(BOOL)isLeftActive -{ - NSString *styleName; - [_response appendContentString:@" bodyStyle stringValueInComponent:[_ctx component]]; - if(styleName) { - [_response appendContentString:@" class='"]; - [_response appendContentHTMLAttributeValue:styleName]; - [_response appendContentCharacter:'\'']; - } - if (bgcolor) { - [_response appendContentString:@" bgcolor=\""]; - [_response appendContentHTMLAttributeValue:bgcolor]; - [_response appendContentString:@"\""]; - } - [_response appendContentString:@">\n"]; - - /* left corner */ - [_response appendContentString:@" "]; - - if (doScript) { - [_response appendContentString:@"
"]; - [_response appendContentString:@" "]; - [_response appendContentString:@"
"]; - } - else if (isLeftActive) - [_response appendContentString:@" "]; - - if (doScript) { - [_response appendContentString:@"
"]; - } - - if (!isLeftActive || doScript) { - NSString *uri; - - uri = [self->leftCornerIcon stringValueInComponent:[_ctx component]]; - if ((uri = WEUriOfResource(uri, _ctx))) { - [_response appendContentString:@"\"\""]; - } - else - [_response appendContentString:@" "]; - } - if (doScript) - [_response appendContentString:@"
"]; - - [_response appendContentString:@"\n"]; - - /* right corner */ - [_response appendContentString:@" "]; - { - NSString *uri; - - uri = [self->rightCornerIcon stringValueInComponent:[_ctx component]]; - if ((uri = WEUriOfResource(uri, _ctx))) { - [_response appendContentString:@"\"\""]; - } - else - [_response appendContentString:@" "]; - } - [_response appendContentString:@"\n"]; - - [_response appendContentString:@" \n"]; -} - -- (void)_appendBodyRowToResponse:(WOResponse *)_response - inContext:(WOContext *)_ctx - bgcolor:(NSString *)bgcolor - activeKey:(NSString *)activeKey -{ - WEClientCapabilities *ccaps; - BOOL indentContent; - NSString *styleName; - - styleName = [self->bodyStyle stringValueInComponent:[_ctx component]]; - ccaps = [[_ctx request] clientCapabilities]; - - /* put additional padding table into content ??? */ - indentContent = [ccaps isFastTableBrowser] && ![ccaps isTextModeBrowser]; - - [_response appendContentString:@"']; - - if (indentContent) { - /* start padding table */ - [_response appendContentString: - @""]; - [_response appendContentString:@"
"]; - } - - [_ctx appendElementIDComponent:@"b"]; - [_ctx appendElementIDComponent:activeKey]; - - /* generate currently active body */ - { - [_ctx setObject:activeKey forKey:UIxTabView_BODY]; - [self->template appendToResponse:_response inContext:_ctx]; - [_ctx removeObjectForKey:UIxTabView_BODY]; - } - - [_ctx deleteLastElementIDComponent]; // activeKey - [_ctx deleteLastElementIDComponent]; // 'b' - - if (indentContent) - /* close padding table */ - [_response appendContentString:@"
"]; - - [_response appendContentString:@""]; -} - -- (BOOL)isLeftActiveInKeys:(NSArray *)keys activeKey:(NSString *)activeKey{ - unsigned i, count; - BOOL isLeftActive; - - isLeftActive = NO; - - for (i = 0, count = [keys count]; i < count; i++) { - UIxTabItemInfo *info; - - info = [keys objectAtIndex:i]; - - if ((i == 0) && [info->key isEqualToString:activeKey]) - isLeftActive = YES; - } - - return isLeftActive; -} - -- (void)appendToResponse:(WOResponse *)_response inContext:(WOContext *)_ctx { - WOComponent *cmp; - NSString *bgcolor; - BOOL isLeftActive; - BOOL doScript; - id nestedState; - NSString *activeKey; - NSArray *keys; - int tabViewCount; /* used for image id's and writing script once */ - - doScript = NO; /* perform tab-clicks on browser (use javascript) */ - tabViewCount = [[_ctx valueForKey:@"UIxTabViewScriptDone"] intValue]; - cmp = [_ctx component]; - - /* check for browser */ - { - WEClientCapabilities *ccaps; - //BOOL isJavaScriptBrowser; - - ccaps = [[_ctx request] clientCapabilities]; - doScript = [ccaps isInternetExplorer] && [ccaps isJavaScriptBrowser]; - doScript = (doScript && - [[[cmp session] - valueForKey:@"isJavaScriptEnabled"] boolValue]); - } - - /* disable javascript */ - doScript = NO; - - /* save state */ - - nestedState = [self saveNestedStateInContext:_ctx]; - - /* configure */ - - activeKey = [self->selection stringValueInComponent:cmp]; - - bgcolor = [self->bgColor stringValueInComponent:cmp]; - bgcolor = [bgcolor stringValue]; - - [_ctx appendElementIDComponent:@"h"]; - - /* collect & process keys (= available tabs) */ - - keys = [self collectKeysInContext:_ctx]; - - if (![[keys valueForKey:@"key"] containsObject:activeKey]) - /* selection is not available in keys */ - activeKey = nil; - - if ((activeKey == nil) && ([keys count] > 0)) { - /* no or invalid selection, use first key */ - activeKey = [[keys objectAtIndex:0] key]; - if ([self->selection isValueSettable]) - [self->selection setValue:activeKey inComponent:[_ctx component]]; - } - - if (doScript) { - doScript = [[keys valueForKey:@"isScript"] containsObject:YesNumber]; - [_ctx setObject:[NSNumber numberWithBool:doScript] - forKey:UIxTabView_SCRIPT]; - } - - /* start appending */ - - if ((doScript) && (tabViewCount == 0)) - [self _appendTabViewJSScriptToResponse:_response inContext:_ctx]; - - /* count up for unique tabCorner/tabCornerLeft images */ - [_ctx takeValue:[NSNumber numberWithInt:(tabViewCount + 1)] - forKey:@"UIxTabViewScriptDone"]; - - [_response appendContentString: - @""]; - - /* find out whether left is active */ - - isLeftActive = [self isLeftActiveInKeys:keys activeKey:activeKey]; - - /* generate header row */ - - [self _appendHeaderRowToResponse:_response inContext:_ctx - keys:keys activeKey:activeKey - doScript:doScript]; - - [_ctx deleteLastElementIDComponent]; // 'h' for head - [_ctx removeObjectForKey:UIxTabView_HEAD]; - -#if 0 - /* header foot row */ - - [self _appendHeaderFootRowToResponse:_response inContext:_ctx - bgcolor:bgcolor - doScript:doScript - isLeftActive:isLeftActive]; -#endif - - /* body row */ - - [self _appendBodyRowToResponse:_response inContext:_ctx - bgcolor:bgcolor - activeKey:activeKey]; - - /* close table */ - - [_response appendContentString:@"
"]; - [_ctx removeObjectForKey:UIxTabView_ACTIVEKEY]; - [_ctx removeObjectForKey:UIxTabView_KEYS]; - [self restoreNestedState:nestedState inContext:_ctx]; -} - -@end /* UIxTabView */ diff --git a/Misc/ZideStore/UI-X/Common/UIxWinClose.m b/Misc/ZideStore/UI-X/Common/UIxWinClose.m deleted file mode 100644 index e8320e69..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxWinClose.m +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#include - - -@interface UIxWinClose : WOComponent -{ - -} - -@end - - -@implementation UIxWinClose - -@end diff --git a/Misc/ZideStore/UI-X/Common/UIxWinClose.wox b/Misc/ZideStore/UI-X/Common/UIxWinClose.wox deleted file mode 100644 index 35769e42..00000000 --- a/Misc/ZideStore/UI-X/Common/UIxWinClose.wox +++ /dev/null @@ -1,6 +0,0 @@ - -X diff --git a/Misc/ZideStore/UI-X/Common/Version b/Misc/ZideStore/UI-X/Common/Version deleted file mode 100644 index d64ce5ad..00000000 --- a/Misc/ZideStore/UI-X/Common/Version +++ /dev/null @@ -1,5 +0,0 @@ -# $Id: Version,v 1.1 2003/11/24 01:24:40 helge Exp $ - -SUBMINOR_VERSION:=1 - -# 1.1.0 requires NGObjWeb 4.2.202 diff --git a/Misc/ZideStore/UI-X/Common/bundle-info.plist b/Misc/ZideStore/UI-X/Common/bundle-info.plist deleted file mode 100644 index c7081c18..00000000 --- a/Misc/ZideStore/UI-X/Common/bundle-info.plist +++ /dev/null @@ -1,40 +0,0 @@ -{ - "__cvs__" = "$Id: bundle-info.plist,v 1.1 2003/11/24 01:24:40 helge Exp $"; - - requires = { - bundleManagerVersion = 1; - classes = ( - { name = NSObject; } - ); - }; - - provides = { - ZideStoreProducts = ( { name = CommonUIProduct; } ); - - classes = ( - { name = CommonUIProduct; }, - { name = UIxComponent; }, - { name = UIxPageFrame; }, - { name = UIxWinClose; }, - { name = UIxAppNavView; }, - { name = "UIxElemBuilder"; }, - { name = "UIxTabView"; }, - { name = "UIxTabItem"; }, - ); - - WOComponents = ( - { name = UIxPageFrame; }, - { name = UIxWinClose; }, - { name = UIxAppNavView; }, - ); - - WOxElemBuilder = ( - { name = "UIxElemBuilder"; }, - ); - - WODynamicElements = ( - { name = "UIxTabView"; }, - { name = "UIxTabItem"; }, - ); - }; -} diff --git a/Misc/ZideStore/UI-X/Common/calendar.css b/Misc/ZideStore/UI-X/Common/calendar.css deleted file mode 100644 index 34553bb4..00000000 --- a/Misc/ZideStore/UI-X/Common/calendar.css +++ /dev/null @@ -1,189 +0,0 @@ -.aptview_title { - font-size: 10pt; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - color: #000000; - font-weight: bold; -} - -.aptview_text { - font-size: 10pt; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - color: #000000; -} - -.weekoverview_title { - font-size: 10pt; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - letter-spacing: 0pt; - color: #000000; - background-color: #d2d2cc; -} - -.weekoverview_title a { - color: #0033cc; - text-decoration: none; -} - -.weekoverview_title_hilite { - font-size: 10pt; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - letter-spacing: 0pt; - color: #000000; - background-color: #d2d2cc; - font-weight: bold; -} - -.weekoverview_title_hilite a { - color: #0033cc; - text-decoration: none; -} - -.weekoverview_title_daylink { - font-size: 12pt; - color: #0033cc; - font-weight: bold; -} - -.weekoverview_title_newlink { - font-size: 8pt; -} - -.weekoverview_holidayinfo { - font-size: 8pt; - font-weight: bold; -} - -.weekoverview_content { - color: #FFFFFF; - background-color: #e8e8e0; -} - -.weekoverview_content a { - color: #0000FF; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - letter-spacing: 0pt; - text-decoration: none; -} - -.weekoverview_content_hilite { - background-color: #fffff0; -} - -.weekoverview_content_hilite a { - color: #0000FF; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - letter-spacing: 0pt; - text-decoration: none; -} - -.monthoverview { - color: #000000; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 10pt; - letter-spacing: 0pt; - padding: 2px; -} - -.monthoverview a { - color: #0033cc; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 7pt; - font-style: normal; - font-weight: normal; - letter-spacing: 0pt; - text-decoration: none; -} - -.monthoverview a:hover { - text-decoration: underline; -} - -.monthoverview_title { - background-color: #d2d2cc; - text-align: center; -} - -.monthoverview_week { - background-color: #d2d2cc; - width: 16pt; - text-align: center; - vertical-align: middle; -} - -.monthoverview_week a { - color: #000000; - font-size: 10pt; -} - -.monthoverview_week_hilite { - background-color: #fffff0; - width: 16pt; - text-align: center; - vertical-align: middle; -} - -.monthoverview_week_hilite a { - color: #000000; - font-size: 10pt; -} - -.monthoverview_content { - background-color: #e8e8e0; - font-size: 9pt; - height: 60; -} - -.monthoverview_content a { - font-style: italic; - font-weight: bold; -} - -.monthoverview_content td { - text-align: let; - vertical-align: top; -} - - -.monthoverview_content_hilite { - background-color: #fffff0; - font-size: 9pt; - height: 60; -} - -.monthoverview_content_hilite a { - font-style: italic; - font-weight: bold; -} - -.monthoverview_content_dimmed { - background-color: #d2d2cc; - font-size: 9pt; - height: 60; -} - -.monthoverview_content_dimmed a { - font-style: normal; - font-weight: normal; -} - -.monthoverview_day a { - color: #000000; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 12pt; -} - -.monthoverview_day_new a { - font-style: normal; - font-weight: normal; -} - -.monthoverview_day_new a:hover { - font-style: normal; - font-weight: normal; - color: #ff0000; -} - -.monthoverview_content_link { - font-style: normal; - font-weight: normal; -} diff --git a/Misc/ZideStore/UI-X/Common/common.h b/Misc/ZideStore/UI-X/Common/common.h deleted file mode 100644 index ea759a93..00000000 --- a/Misc/ZideStore/UI-X/Common/common.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - Copyright (C) 2004 SKYRIX Software AG - - This file is part of OpenGroupware.org. - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id: common.h,v 1.1 2003/11/24 01:24:40 helge Exp $ - -#import - -#if LIB_FOUNDATION_LIBRARY -# include -#elif NeXT_Foundation_LIBRARY || COCOA_Foundation_LIBRARY -# include -# include -#endif - -#include -#include -#include - -@interface WOContext(WOExtensionsPrivate) -- (void)addActiveFormElement:(WOElement *)_element; -@end - -static inline id WOExtGetProperty(NSDictionary *_set, NSString *_name) { - id propValue = [_set objectForKey:_name]; - - if (propValue) { - propValue = [propValue retain]; - [(NSMutableDictionary *)_set removeObjectForKey:_name]; - } - return propValue; -} - -static inline NSString *WEUriOfResource(NSString *_name, WOContext *_ctx) { - NSArray *languages; - WOResourceManager *resourceManager; - NSString *uri; - - if (_name == nil) - return nil; - - languages = [_ctx hasSession] - ? [[_ctx session] languages] - : [[_ctx request] browserLanguages]; - - resourceManager = [[_ctx application] resourceManager]; - - uri = [resourceManager urlForResourceNamed:_name - inFramework:nil - languages:languages - request:[_ctx request]]; - if ([uri rangeOfString:@"/missingresource?"].length > 0) - uri = nil; - - return uri; -} - -static inline void WEAppendFont(WOResponse *_resp, - NSString *_color, - NSString *_face, - NSString *_size) -{ - [_resp appendContentString:@"']; -} - -static inline void WEAppendTD(WOResponse *_resp, - NSString *_align, - NSString *_valign, - NSString *_bgColor) -{ - [_resp appendContentString:@"']; -} - -static inline WOElement *WECreateElement(NSString *_className, - NSString *_name, - NSDictionary *_config, - WOElement *_template) -{ - Class c; - WOElement *result = nil; - NSMutableDictionary *config = nil; - - if ((c = NSClassFromString(_className)) == Nil) { - NSLog(@"%s: missing '%@' class", __PRETTY_FUNCTION__, _className); - return nil; - } - config = [NSMutableDictionary dictionaryWithCapacity:4]; - { - NSEnumerator *keyEnum; - id key; - - keyEnum = [_config keyEnumerator]; - - while ((key = [keyEnum nextObject])) { - WOAssociation *a; - - a = [WOAssociation associationWithValue:[_config objectForKey:key]]; - [config setObject:a forKey:key]; - } - } - result = [[c alloc] initWithName:_name - associations:config - template:_template]; - return [result autorelease]; -} - -#define OWGetProperty WOExtGetProperty diff --git a/Misc/ZideStore/UI-X/Common/images/OGoLogo.gif b/Misc/ZideStore/UI-X/Common/images/OGoLogo.gif deleted file mode 100755 index ea1b5f55..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/OGoLogo.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_botleft.gif b/Misc/ZideStore/UI-X/Common/images/box_botleft.gif deleted file mode 100644 index edaa1903..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_botleft.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_botright.gif b/Misc/ZideStore/UI-X/Common/images/box_botright.gif deleted file mode 100644 index bb8be1bd..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_botright.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_bottom.gif b/Misc/ZideStore/UI-X/Common/images/box_bottom.gif deleted file mode 100644 index c63a9cf9..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_bottom.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_left.gif b/Misc/ZideStore/UI-X/Common/images/box_left.gif deleted file mode 100644 index 260636dd..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_left.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_right.gif b/Misc/ZideStore/UI-X/Common/images/box_right.gif deleted file mode 100644 index 5315a06d..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_right.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_top.gif b/Misc/ZideStore/UI-X/Common/images/box_top.gif deleted file mode 100644 index 768bd4fa..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_top.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_topleft.gif b/Misc/ZideStore/UI-X/Common/images/box_topleft.gif deleted file mode 100644 index 0ede3784..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_topleft.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/box_topright.gif b/Misc/ZideStore/UI-X/Common/images/box_topright.gif deleted file mode 100644 index 5b3ca17b..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/box_topright.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/closewindow.gif b/Misc/ZideStore/UI-X/Common/images/closewindow.gif deleted file mode 100644 index f4305d65..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/closewindow.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/corner_right.gif b/Misc/ZideStore/UI-X/Common/images/corner_right.gif deleted file mode 100644 index 75b945d2..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/corner_right.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/line_left.gif b/Misc/ZideStore/UI-X/Common/images/line_left.gif deleted file mode 100644 index 19415f34..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/line_left.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/line_right.gif b/Misc/ZideStore/UI-X/Common/images/line_right.gif deleted file mode 100644 index 504b5ce9..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/line_right.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/line_stretch.gif b/Misc/ZideStore/UI-X/Common/images/line_stretch.gif deleted file mode 100644 index 481e3013..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/line_stretch.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/menu_logo_top.gif b/Misc/ZideStore/UI-X/Common/images/menu_logo_top.gif deleted file mode 100644 index ea1b5f55..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/menu_logo_top.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/tab_.gif b/Misc/ZideStore/UI-X/Common/images/tab_.gif deleted file mode 100644 index ad720a0c..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/tab_.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/images/tab_selected.gif b/Misc/ZideStore/UI-X/Common/images/tab_selected.gif deleted file mode 100644 index 2cbdea66..00000000 Binary files a/Misc/ZideStore/UI-X/Common/images/tab_selected.gif and /dev/null differ diff --git a/Misc/ZideStore/UI-X/Common/product.plist b/Misc/ZideStore/UI-X/Common/product.plist deleted file mode 100644 index 1636c420..00000000 --- a/Misc/ZideStore/UI-X/Common/product.plist +++ /dev/null @@ -1,47 +0,0 @@ -{ - requires = ( MAIN ); - - publicResources = ( - calendar.css, - zidestoreui.css, - menu_logo_top.gif, - line_left.gif, - line_stretch.gif, - line_right.gif, - box_topleft.gif, - box_top.gif, - box_topright.gif, - box_left.gif, - box_right.gif, - box_botleft.gif, - box_bottom.gif, - box_botright.gif, - tab_selected.gif, - tab_.gif, - corner_right.gif, - closewindow.gif, - OGoLogo.gif - ); - - factories = { - }; - - categories = { - SxFolder = { - methods = { - "app" = { - protectedBy = "View"; - pageName = "UIxAppFrame"; - }; - "appheader" = { - protectedBy = "View"; - pageName = "UIxAppHeader"; - }; - "appnavigation" = { - protectedBy = "View"; - pageName = "UIxAppNavigation"; - }; - }; - }; - }; -} diff --git a/Misc/ZideStore/UI-X/Common/zidestoreui.css b/Misc/ZideStore/UI-X/Common/zidestoreui.css deleted file mode 100644 index 5d1e878c..00000000 --- a/Misc/ZideStore/UI-X/Common/zidestoreui.css +++ /dev/null @@ -1,199 +0,0 @@ -/* ZideStore UI Stylesheet */ - -/* common stuff */ - -body { - color: #000000; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 10pt; - background-color: #FFFFFF; - margin: 0px; - margin-top: 0px; - margin-bottom: 0px; - margin-left: 0px; - margin-right: 0px; -} - -a:link { - color: #0033CC; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - text-decoration: none; -} -a:visited { - color: #660066; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - text-decoration: none; -} -a:hover { - color: #FF0000; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - text-decoration: underline; -} - -.linecolor { - background-color: #06348B; -} - -font.defaultfont { - text-decoration: none; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 8pt; - color: #000000; -} - -.window_label { - color: #06348b; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 12pt; - font-weight: bold; -} - - -/* tabs */ - -.tab { - color: #000000; - background-color: #e8e8e0; - font-size: 10pt; - text-decoration: none; - width: 100px; - height: 22px; - border-top: 1px solid #06348b; - border-right: 1px solid #06348b; -} - -.tab a { - color: #000000; - border: none; - text-decoration: none; -} - -.tab_selected { - color: #000000; - background-color: #f5f5e9; - font-size: 10pt; - text-decoration: none; - font-weight: bold; - width: 100px; - height: 22px; - border-top: 1px solid #06348b; - border-right: 1px solid #06348b; -} - -.tab_selected a { - color: #000000; - border: none; - text-decoration: none; -} - -.tabview_body { - background-color: #f5f5e9; -} - - -/* buttons */ - -.button_auto_env { - height: 16px; - text-align: center; - vertical-align: middle; - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; - overflow: hidden; -} - -.button_auto_env a { - text-decoration: none; - color: #000000; -} - -.button_auto_env a:hover { - text-decoration: underline; - color: #ff0000; -} - -.button_auto { - height: 20px; - border-style: outset; - border-color: #DDDDDD; - border-width: 2px; - color: #000000; - background-color: #e8e8e0; - font-size: 8pt; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - letter-spacing: 0pt; - text-decoration: none; - text-color: #000000; - text-align: center; - vertical-align: middle; - padding-left: 5px; - padding-right: 5px; - padding-top: 1px; - padding-bottom: 1px; - overflow: hidden; -} - - -/* header */ - -div#header { - margin-left: 5px; - margin-right: 5px; - padding: 0; - border-bottom: 1px solid #000000; -} -div#header img.headerlogo { - float: right; - width: 182px; - height: 30px; -} - -div#header div#headerhistory { - font-size: 11px; - color: #000000; - margin: 0px; - padding-top: 18px; - height: 12px; -} -div#header a, div#header span { - margin: 0px; -} -div#header span#navtitle { - font-weight: bold; -} -div#header a:hover { - text-decoration: none; -} - -/* the dock */ - -a.skydockfont { - text-decoration: none; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 8pt; - color: #06348B; -} -font.skydockfont { - text-decoration: none; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 8pt; - color: #06348B; -} -font.skydockfont_inactiveMail { - text-decoration: none; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 8pt; - color: #CCCCCC; - font-weight: bold; -} -font.skydockfont_newMail { - text-decoration: none; - font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif; - font-size: 8pt; - color: #06348B; - font-weight: bold; -} -table.skytextdocktable { - padding: 0px; - table-layout: auto; -} diff --git a/Misc/ZideStore/UI-X/GNUmakefile b/Misc/ZideStore/UI-X/GNUmakefile deleted file mode 100644 index 68855649..00000000 --- a/Misc/ZideStore/UI-X/GNUmakefile +++ /dev/null @@ -1,9 +0,0 @@ -# $Id$ - -include $(GNUSTEP_MAKEFILES)/common.make - -SUBPROJECTS = \ - Common \ - Scheduler \ - -include $(GNUSTEP_MAKEFILES)/aggregate.make diff --git a/Misc/ZideStore/UI-X/Scheduler/COPYING b/Misc/ZideStore/UI-X/Scheduler/COPYING deleted file mode 100644 index 161a3d1d..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/COPYING +++ /dev/null @@ -1,482 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/Misc/ZideStore/UI-X/Scheduler/COPYRIGHT b/Misc/ZideStore/UI-X/Scheduler/COPYRIGHT deleted file mode 100644 index 1053b2aa..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/COPYRIGHT +++ /dev/null @@ -1,4 +0,0 @@ -Copyright (C) 2004 SKYRIX Software AG - - -Contact: info@skyrix.com diff --git a/Misc/ZideStore/UI-X/Scheduler/GNUmakefile b/Misc/ZideStore/UI-X/Scheduler/GNUmakefile deleted file mode 100644 index 40c6391c..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/GNUmakefile +++ /dev/null @@ -1,66 +0,0 @@ -# $Id: GNUmakefile,v 1.4 2004/06/04 16:15:23 znek Exp $ - -include $(GNUSTEP_MAKEFILES)/common.make - -BUNDLE_NAME = SchedulerUI -BUNDLE_EXTENSION = .zsp -BUNDLE_INSTALL_DIR = $(GNUSTEP_USER_ROOT)/Library/ZideStore12 - -SchedulerUI_PRINCIPAL_CLASS = SchedulerUIProduct - -SchedulerUI_OBJC_FILES = \ - SchedulerUIProduct.m \ - UIxAppointmentFormatter.m \ - UIxCalView.m \ - UIxCalWeekView.m \ - UIxCalMonthView.m \ - UIxAptTableView.m \ - \ - UIxCalWeekOverview.m \ - UIxCalMonthOverview.m \ - UIxAppointmentView.m \ - UIxAppointmentEditor.m \ - UIxCalSelectTab.m \ - UIxCalDateLabel.m \ - UIxCalBackForthNavView.m \ - -SchedulerUI_RESOURCE_FILES += \ - Version \ - product.plist \ - \ - UIxAptTableView.wox \ - UIxCalWeekOverview.wox \ - UIxCalMonthOverview.wox \ - UIxAppointmentView.wox \ - UIxAppointmentEditor.wox \ - UIxCalSelectTab.wox \ - UIxCalDateLabel.wox \ - UIxCalBackForthNavView.wox \ - images/next_week.gif \ - images/previous_week.gif \ - images/icon_apt_chart.gif \ - images/icon_apt_overview.gif \ - images/icon_apt_chart_inactive.gif \ - images/icon_apt_overview_inactive.gif \ - images/icon_apt_column_view.gif \ - images/icon_apt_list.gif \ - images/icon_apt_list_inactive.gif \ - - -ifeq ($(FOUNDATION_LIB),apple) -ZIDESTORE=$(GNUSTEP_USER_ROOT)/Library/Headers/ZideStore12 -else -ZIDESTORE=$(GNUSTEP_USER_ROOT)/Headers/ZideStore12 -endif - -ADDITIONAL_INCLUDE_DIRS += \ - -I. \ - -I.. \ - -I$(ZIDESTORE)/Frontend -I$(ZIDESTORE)/Backend \ - -I$(ZIDESTORE) -I$(ZIDESTORE)/Common - -# make - --include GNUmakefile.preamble -include $(GNUSTEP_MAKEFILES)/bundle.make --include GNUmakefile.postamble diff --git a/Misc/ZideStore/UI-X/Scheduler/GNUmakefile.postamble b/Misc/ZideStore/UI-X/Scheduler/GNUmakefile.postamble deleted file mode 100644 index 3986bcce..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/GNUmakefile.postamble +++ /dev/null @@ -1,17 +0,0 @@ -# $Id: GNUmakefile.postamble,v 1.1 2004/05/12 14:45:56 helge Exp $ - -validate-wox: - xmllint --noout *.wox - -before-all :: validate-wox - - -ifneq ($(GNUSTEP_BUILD_DIR),) -after-all :: - @(cp bundle-info.plist \ - $(GNUSTEP_BUILD_DIR)/$(BUNDLE_NAME)$(BUNDLE_EXTENSION)) -else -after-all :: - @(cd $(BUNDLE_NAME)$(BUNDLE_EXTENSION);\ - cp ../bundle-info.plist .) -endif diff --git a/Misc/ZideStore/UI-X/Scheduler/GNUmakefile.preamble b/Misc/ZideStore/UI-X/Scheduler/GNUmakefile.preamble deleted file mode 100644 index 23c9438a..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/GNUmakefile.preamble +++ /dev/null @@ -1,17 +0,0 @@ -# $Id$ - -ifneq ($(GNUSTEP_BUILD_DIR),) - RELBUILD_DIR_libZideStoreCommonUI = \ - $(GNUSTEP_BUILD_DIR)/../Common/$(GNUSTEP_OBJ_DIR_NAME) -else - RELBUILD_DIR_libZideStoreCommonUI = ../Common -endif - -SchedulerUI_LIB_DIRS += -L$(RELBUILD_DIR_libZideStoreCommonUI) - -SchedulerUI_BUNDLE_LIBS += \ - -lNGObjWeb -lNGScripting -lNGJavaScript -ljs \ - -lNGMime -lNGStreams -lNGExtensions -lEOControl \ - -lXmlRpc -lDOM -lSaxObjC \ - -lSOGoLogic -lZideStoreCommonUI \ - -lNGiCal diff --git a/Misc/ZideStore/UI-X/Scheduler/NOTES b/Misc/ZideStore/UI-X/Scheduler/NOTES deleted file mode 100644 index 35c83b1b..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/NOTES +++ /dev/null @@ -1,52 +0,0 @@ -// $Id: NOTES,v 1.1 2003/11/24 01:24:40 helge Exp $ - -Scheduler -========= - -SOPE based interface for scheduler. - -Class Hierarchy -=============== - - [WOComponent] - [SoComponent] - UIxAppointmentView - UIxCalView - UIxCalMonthView - UIxCalMonthOverview - UIxCalWeekView - UIxCalWeekOverview - UIxAptTableView - SchedulerUIProduct - -TBD: - UIxCalDayView - UIxCalDayOverview - UIxCalDayChart - UIxCalDayHChart - [UIxCalWeekView] - UIxCalWeekColumnView - UIxCalWeekChart - UIxCalWeekHChart - OGoYearOverview - should use aggressive caching in the long run - - - editor page (which comes up in a new window) - - delete page - - print views - -Notes -===== - -editor pages need to use JavaScript to trigger reloads in the parent window -=> find out how to do that - -URLs -==== - -/zidestore/ControlPanel/ => SoControlPanel -/zidestore/ControlPanel/Products => SoProductRegistry -/zidestore/ControlPanel/Products/ZideStoreUI => SoProduct -/zidestore/ControlPanel/Products/ZideStoreUI/Resources/ -=> SoProductResourceManager -/zidestore/ControlPanel/Products/ZideStoreUI/Resources/calendar.css -=> resource diff --git a/Misc/ZideStore/UI-X/Scheduler/SchedulerUIProduct.m b/Misc/ZideStore/UI-X/Scheduler/SchedulerUIProduct.m deleted file mode 100644 index 7666ef0a..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/SchedulerUIProduct.m +++ /dev/null @@ -1,34 +0,0 @@ -/* - Copyright (C) 2000-2003 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id: SchedulerUIProduct.m,v 1.1 2003/11/24 01:24:40 helge Exp $ - -#import - -@interface SchedulerUIProduct : NSObject -{ -} - -@end - -#include "common.h" - -@implementation SchedulerUIProduct -@end /* SchedulerUIProduct */ diff --git a/Misc/ZideStore/UI-X/Scheduler/UIxAppointmentEditor.m b/Misc/ZideStore/UI-X/Scheduler/UIxAppointmentEditor.m deleted file mode 100644 index 5d1ef100..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/UIxAppointmentEditor.m +++ /dev/null @@ -1,277 +0,0 @@ -/* - Copyright (C) 2000-2004 SKYRIX Software AG - - This file is part of OGo - - OGo is free software; you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - - OGo is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with OGo; see the file COPYING. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*/ -// $Id$ - - -#include "common.h" -#include -#include -#include - - -/* TODO: CLEAN THIS MESS UP */ - - -@interface NSObject (AppointmentHack) -- (BOOL)isAppointment; -@end - -@implementation NSObject (AppointmentHack) -- (BOOL)isAppointment { - return [self isKindOfClass:NSClassFromString(@"SxAppointment")]; -} -@end - -@interface iCalPerson (Convenience) -- (NSString *)rfc822Email; -@end - -@implementation iCalPerson (Convenience) -- (NSString *)rfc822Email { - NSString *_email = [self email]; - NSRange colon = [_email rangeOfString:@":"]; - if(colon.location != NSNotFound) { - return [_email substringFromIndex:colon.location + 1]; - } - return _email; -} -@end - -@interface UIxAppointmentEditor : UIxComponent -{ - id appointment; - id participants; -} - -- (SOGoAppointment *)appointment; -- (NSString *)iCalStringTemplate; -- (NSString *)iCalString; -- (BOOL)isNewAppointment; - -@end - -@implementation UIxAppointmentEditor - -- (void)dealloc { - [self->appointment release]; - [self->participants release]; - [super dealloc]; -} - - -/* accessors */ - - -- (NSString *)formattedAptStartTime { - NSCalendarDate *date; - - date = [[self appointment] startDate]; - /* TODO: convert this into display timeZone! */ - return [date descriptionWithCalendarFormat:@"%A, %Y-%m-%d %H:%M %Z"]; -} - -- (BOOL)isNewAppointment { - return ! [[self clientObject] isAppointment]; -} - -- (NSString *)iCalString { - if([self isNewAppointment]) { - return [self iCalStringTemplate]; - } - else { - return [[self clientObject] valueForKey:@"iCalString"]; - } -} - -- (NSString *)iCalStringTemplate { - static NSString *iCalStringTemplate = \ - @"BEGIN:VCALENDAR\nMETHOD:REQUEST\nPRODID:OpenGroupware.org ZideStore 1.2\n" \ - @"VERSION:2.0\nBEGIN:VEVENT\nCLASS:PRIVATE\nSTATUS:CONFIRMED\n" \ - @"DTSTART:%@\nDTEND:%@\n" \ - @"TRANSP:OPAQUE\n" \ - @"END:VEVENT\nEND:VCALENDAR"; - NSCalendarDate *startDate, *endDate; - NSString *template; - - startDate = [self selectedDate]; - endDate = [startDate dateByAddingYears:0 months:0 days:0 - hours:1 minutes:0 seconds:0]; - - template = [NSString stringWithFormat:iCalStringTemplate, - [startDate icalString], - [endDate icalString]]; - - return template; -} - - -/* backend */ - - -- (SOGoAppointment *)appointment { - if(self->appointment == nil) { - self->appointment = [[SOGoAppointment alloc] - initWithICalString:[self iCalString]]; - } - return self->appointment; -} - -- (id)participants { - if(self->participants == nil) { - NSArray *attendees; - NSMutableArray *emailAddresses; - unsigned i, count; - - attendees = [self->appointment attendees]; - count = [attendees count]; - emailAddresses = [[NSMutableArray alloc] initWithCapacity:count]; - for(i = 0; i < count; i++) { - NSString *email; - - email = [[attendees objectAtIndex:i] rfc822Email]; - if(email) - [emailAddresses addObject:email]; - } - self->participants = [[emailAddresses componentsJoinedByString:@"\n"] - retain]; - [emailAddresses release]; - } - return self->participants; -} - - -/* helper */ - -- (NSString *)uriAsFormat { - NSString *uri, *qp; - NSRange r; - - uri = [[[self context] request] uri]; - - /* first: identify query parameters */ - r = [uri rangeOfString:@"?" options:NSBackwardsSearch]; - if (r.length > 0) { - uri = [uri substringToIndex:r.location]; - qp = [uri substringFromIndex:r.location]; - } - else { - qp = nil; - } - - /* next: strip trailing slash */ - if([uri hasSuffix:@"/"]) - uri = [uri substringToIndex:([uri length] - 1)]; - r = [uri rangeOfString:@"/" options:NSBackwardsSearch]; - - /* then: cut of last path component */ - if(r.location == NSNotFound) { // no slash? are we at root? - uri = @"/"; - } - else { - uri = [uri substringToIndex:(r.location + 1)]; - } - /* next: append format token */ - uri = [uri stringByAppendingString:@"%@"]; - if(qp != nil) - uri = [uri stringByAppendingString:qp]; - return uri; -} - - -/* save */ - - -- (id)saveAction { - SOGoAppointment *apt; - NSString *iCalString, *summary, *location, *nextMethod, *uri, *uriFormat; - NSCalendarDate *sd, *ed; - NSArray *ps; - unsigned i, count; - WOResponse *r; - WORequest *req; - - req = [[self context] request]; - - /* get iCalString from hidden input */ - iCalString = [req formValueForKey:@"ical"]; - apt = [[SOGoAppointment alloc] initWithICalString:iCalString]; - - /* merge in form values */ - sd = [NSCalendarDate dateWithString:[req formValueForKey:@"startDate"] - calendarFormat:@"%Y-%m-%d %H:%M"]; - [apt setStartDate:sd]; - ed = [NSCalendarDate dateWithString:[req formValueForKey:@"endDate"] - calendarFormat:@"%Y-%m-%d %H:%M"]; - [apt setEndDate:ed]; - summary = [req formValueForKey:@"summary"]; - [apt setSummary:title]; - location = [req formValueForKey:@"location"]; - [apt setLocation:location]; - - [apt removeAllAttendees]; /* clean up */ - ps = [[req formValueForKey:@"participants"] - componentsSeparatedByString:@"\n"]; - count = [ps count]; - for(i = 0; i < count; i++) { - NSString *email; - - email = [ps objectAtIndex:i]; - if([email length] > 0) { - iCalPerson *p; - NSRange cnr; - - p = [[iCalPerson alloc] init]; - [p setEmail:[NSString stringWithFormat:@"mailto:%@", email]]; - /* construct a fake CN */ - cnr = [email rangeOfString:@"@"]; - if(cnr.location != NSNotFound) { - [p setCn:[email substringToIndex:cnr.location]]; - } - [apt addToAttendees:p]; - [p release]; - } - } - - /* receive current representation for save operation */ - iCalString = [apt iCalString]; - [apt release]; - - - /* determine what's to do and where to go next */ - if([self isNewAppointment]) { - nextMethod = @"duhduh"; - } - else { - nextMethod = @"view"; - } - - NSLog(@"%s new iCalString:\n%@", __PRETTY_FUNCTION__, iCalString); - - uriFormat = [self uriAsFormat]; - uri = [NSString stringWithFormat:uriFormat, nextMethod]; - - r = [WOResponse responseWithRequest:req]; - [r setStatus:302 /* moved */]; - [r setHeader:uri forKey:@"location"]; - return r; -} - -@end diff --git a/Misc/ZideStore/UI-X/Scheduler/UIxAppointmentEditor.wox b/Misc/ZideStore/UI-X/Scheduler/UIxAppointmentEditor.wox deleted file mode 100644 index ce2381aa..00000000 --- a/Misc/ZideStore/UI-X/Scheduler/UIxAppointmentEditor.wox +++ /dev/null @@ -1,111 +0,0 @@ - - - -
- - - - - - - - - - - - - - - - - -
- - - - - -
- Appointment Editor - -
-
- - - - - - - - - - - - - - - - - - - - -
- Appointment on -
- Start time: - - - - -
- End time: - - - - -
- Title: - - - - -
- Location: - - - - -
-
- - - - - - -
- Search participants -
- Participants: - - - +
- -
- - - - - -
- - -
+ + +
+ + +
+ - - -
- clientObject: -
-
-
+ + diff --git a/UI/Templates/ContactsUI/UIxContactFoldersView.wox b/UI/Templates/ContactsUI/UIxContactFoldersView.wox new file mode 100644 index 00000000..c42113e1 --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactFoldersView.wox @@ -0,0 +1,2 @@ + + diff --git a/UI/Templates/ContactsUI/UIxContactSelector.wox b/UI/Templates/ContactsUI/UIxContactSelector.wox new file mode 100644 index 00000000..dcc75906 --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactSelector.wox @@ -0,0 +1,50 @@ + + +
+ + + + + +
    +
  • + + + + + + + +
  • +
    +

+
+
diff --git a/UI/Templates/ContactsUI/UIxContactView.wox b/UI/Templates/ContactsUI/UIxContactView.wox index d00fac1e..934ca7b5 100644 --- a/UI/Templates/ContactsUI/UIxContactView.wox +++ b/UI/Templates/ContactsUI/UIxContactView.wox @@ -1,339 +1,75 @@ - - - - - + + +

-
- - - - - - - - -
- - - - - -
- - - - - -
-
- - - - - -
- - - - - - : - - - - - - - - - -
- - - -
-
-
- - - - - - - - - - - - - - - - -
- : - - - - -
- : - - - -
- : - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- : - - - -
- : - - - -
- : - - - -
- : - - - -
- : - - - -
- : - - - - -
- : - - - - -
- : - - - - -
-
-
+
+
+

+ + + + + +
- + +
+

+ + + + + + +
+
- - - - - - - - - - - - - - - - - - - - - - - + +
+

+ + + +
+
+ - - - - -
- : - - - - -
- : - - - - -
- : - - -
-
-
-
-
- : - - - -
- : - - - -
- : - - - -
-
-
+
+ +
+

+ + + + + +
+
- - - - - - SOGo Server - -
- Client: -
- Raw :
-
-
-
-
- -
- - -
- clientObject: -
-
-
\ No newline at end of file + +
+

+ + + + + + + + + +
+
+ + diff --git a/UI/Templates/ContactsUI/UIxContactsAclsSelection.wox b/UI/Templates/ContactsUI/UIxContactsAclsSelection.wox new file mode 100644 index 00000000..7a106ace --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactsAclsSelection.wox @@ -0,0 +1,21 @@ + +
+
+ +
diff --git a/UI/Templates/ContactsUI/UIxContactsAddressBooksSelection.wox b/UI/Templates/ContactsUI/UIxContactsAddressBooksSelection.wox new file mode 100644 index 00000000..daf472d7 --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactsAddressBooksSelection.wox @@ -0,0 +1,16 @@ + +
+ +
diff --git a/UI/Templates/ContactsUI/UIxContactsCalendarsSelection.wox b/UI/Templates/ContactsUI/UIxContactsCalendarsSelection.wox new file mode 100644 index 00000000..06888b3e --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactsCalendarsSelection.wox @@ -0,0 +1,16 @@ + +
+ +
diff --git a/UI/Templates/ContactsUI/UIxContactsFilterPanel.wox b/UI/Templates/ContactsUI/UIxContactsFilterPanel.wox new file mode 100644 index 00000000..ae498506 --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactsFilterPanel.wox @@ -0,0 +1,22 @@ + + + + +
+ + + + +
+
diff --git a/UI/Templates/ContactsUI/UIxContactsListView.wox b/UI/Templates/ContactsUI/UIxContactsListView.wox index fc62ebd0..ed78ceba 100644 --- a/UI/Templates/ContactsUI/UIxContactsListView.wox +++ b/UI/Templates/ContactsUI/UIxContactsListView.wox @@ -1,172 +1,56 @@ - - - - - - - - - + + + + - -
- clientObject: -
- \ No newline at end of file + + + + + + + + + +
- - - - - -
- - - - - -
-
-
- - - - - - - - - -
- - - - - -
- - - - - - -
- -
-
- - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- - - + + + + + - - - - -
+ -
- - -
-
- -
- - +
+ + + + + +
+
diff --git a/UI/Templates/ContactsUI/UIxContactsListViewContainer.wox b/UI/Templates/ContactsUI/UIxContactsListViewContainer.wox new file mode 100644 index 00000000..f0a71c13 --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactsListViewContainer.wox @@ -0,0 +1,115 @@ + + + + + + + +
+ + +
+
+
+
+ +
    +
  • +
  • +
+ + +
+ +
+
+
+ +
+
+ +
+ + +
+ +
+ +
+ +
+
+ + + +
+ + +
+ + + + + + +
diff --git a/UI/Templates/ContactsUI/UIxContactsMailerSelection.wox b/UI/Templates/ContactsUI/UIxContactsMailerSelection.wox new file mode 100644 index 00000000..a6e1c1b3 --- /dev/null +++ b/UI/Templates/ContactsUI/UIxContactsMailerSelection.wox @@ -0,0 +1,26 @@ + + +
+
+
+ +
diff --git a/UI/Templates/GNUmakefile b/UI/Templates/GNUmakefile index eacb1cac..8b9813f6 100644 --- a/UI/Templates/GNUmakefile +++ b/UI/Templates/GNUmakefile @@ -10,3 +10,5 @@ install :: all clean :: distclean :: clean + +uninstall :: diff --git a/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox b/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox index 7e8d5f4c..b90c69b1 100644 --- a/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox +++ b/UI/Templates/MailPartViewers/UIxMailPartTextViewer.wox @@ -1,9 +1,9 @@ -
+> diff --git a/UI/Templates/MailerUI/UIxMailAccountView.wox b/UI/Templates/MailerUI/UIxMailAccountView.wox index f3f3943c..26cef689 100644 --- a/UI/Templates/MailerUI/UIxMailAccountView.wox +++ b/UI/Templates/MailerUI/UIxMailAccountView.wox @@ -1,71 +1,43 @@ - -
- - - - - - - -
- -
-
-
-
- SOGo Mail - - - - - - - -
-
+
+

+ SOGo Mail - + -
- - -
+
-
- -
Email

-
  • -
  • -
    -
    - - -

    -
    +

    Accounts

    +

    + View settings for this account
    + Create a new account [TBD: not in Agenor]
    +

    + +

    Advanced Features

    +

    + Search messages
    + Manage message filters
    + Manage folder subscriptions
    + Offline settings [TBD: not in Agenor]
    +

    - diff --git a/UI/Templates/MailerUI/UIxMailAccountsView.wox b/UI/Templates/MailerUI/UIxMailAccountsView.wox deleted file mode 100644 index 88eeaa38..00000000 --- a/UI/Templates/MailerUI/UIxMailAccountsView.wox +++ /dev/null @@ -1,28 +0,0 @@ - - -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    diff --git a/UI/Templates/MailerUI/UIxMailEditor.wox b/UI/Templates/MailerUI/UIxMailEditor.wox index 2a3d3a33..97c87337 100644 --- a/UI/Templates/MailerUI/UIxMailEditor.wox +++ b/UI/Templates/MailerUI/UIxMailEditor.wox @@ -1,88 +1,46 @@ - - -
    - -
    - + +
    +
    + +
    +
    +
    +
    - - - - - - -
    -
    - -
    - -
    - - - - - -
    - : - - -
    -
    - -
    - - - - - -
    - : -
    -
    -
    -
    -
    - : - -
    -
    - -
    -
    -
    -
    -
    - -
    -