[[TOC]] = GUI notices = == Goals == The goal is to create a way to notify users of events that either requiring their attention or are likely to interest them. Examples include: * Conditions in the core client requiring user attention (messages with mode MSG_USER_ERROR) * New client version available * High-priority messages from the scheduler (e.g., no jobs because too little disk allocated, wrong driver version, etc.) * Web notifications such as friend request or confirm, private message, posting to subscribed thread, etc. * Project news (scientific, credit milestones, etc.) * An RSS feed specified by the project or the user. == User interface == The Messages tab will be renamed the "Event Log". It will be available via a menu item rather than a tab. Notices will be shown in a new Notices tab. They will be displayed in HTML. The 10 most recent notices will be displayed, with a button to show all notices in the last month. Like messages, each will have a timestamp and a project. Buttons will let users filter by project and select notices. When there is a new notice, a balloon appears over the system tray icon for 10 seconds. It will show the type of the notice. Clicking on the balloon will open the Manager in the Notices tab. The default BOINC screensaver will display new notices. Notices are classified as "private" and "public"; e.g., private messages and friend requests are private. The screensaver will show only public messages. == Message architecture == Notices are conveyed as time-ordered RSS feeds. Scheduler replies include a list of URLs to poll for notices. The client polls these URLs and saves the results in files. The client saves scheduler messages and its own messages in files. Some of the URLs may contain the user's authenticator. In response to a scheduler RPC with a weak authenticator, the scheduler supplies only URLs for public notices, and passes the weak authenticator. GUIs (Manager and screensaver) periodically polls the client for new messages via GUI RPC. == Implementation == === Localization === Strings of the form _(...) in message body are localizable. === Feed List === Scheduler replies can include a feed list. Example: {{{ http://www.example.com/notify_rss.php Project Notifications 86400 http://www.example.com/science_blog_rss.php Science Blog 86400 }}} Property table: update:: Number of seconds in between updates application_only:: Feed is used by the project application and should not be shown in BOINC Manager or the BOINC Screen saver. The contents of the feed should be written to the init_data.xml file in the slot directory before the application is launched. BOINC has several built-in community defining features and feedback mechinisms. The notification system should attempt to reuse as much of it as possible. === Default project feed === This feed generates * Project Messages * Project News * Private Messages * Friend Requests * Friend Confirmations * Forums * Forum Threads Other useful messages might be milestones and anniversaries. Either could contain a link to a certificate generated on demand that the volunteer could print out. The URL is: {{{ http:///notify_rss.php }}} === Categories === * Project news * Private message * Friend request * Friend confirmation * Forum update * Thread update * Scheduler notice * Client notice === Scheduler Reply === Example: {{{ ... ... }}} == BOINC Project Website == A new entry in the Preferences section of the Your Account area will be created to manage all the feeds a volunteer is currently subscribed to. This new section should allow the volunteer to change the refresh rate for any feed they want to be notified about. It should also allow them to disable any feed. == BOINC Core Client == === Feed Storage === All data related to the notification system will be stored in a directory off of the main data directory. || Item || Naming convention || || Feed directory || feeds || || Feed list || feed_list.xml || || Feed || "feed_" + escape_project_url(feed_url) + ".xml" || === GUI RPCs === ==== get_feed() ==== Enumerates all the feed items for a given feed as well as provides the properties for a given feed item. Parameters: || Parameter || Type || Meaning || || project_url || string || Specify which project should the feed metadata be returned for. || '''Notes''': * If both project_url and feed_url are empty, the BOINC Action Feed stream is returned. * Requests for private feeds should return an error. * This RPC should not require authentication. ==== get_private_feed() ==== Enumerates all the feed items for a given feed as well as provides the properties for a given feed item. Parameters: || Parameter || Type || Meaning || || project_url || string || Specify which project should the feed metadata be returned for. || '''Notes''': * This RPC requires authentication. == BOINC Manager == === Options Dialog === === Taskbar Notifications === [[Image(taskbarnotification.jpg)]] === Advanced View === === Simple View === TBD == BOINC Screensaver ==