File HK-SB-kronolith_2.2_RC1-Fbview_save_attendees.patch of Package horde3-kronolith
Provides a patch to store the list of attendees in the user preferences. This is a broken patch that has been rejected upstream (http://bugs.horde.org/ticket/?id=4788). This should be solved using Horde::Groups.
diff -r 848f241f83e0 kronolith/attendees.php
--- a/kronolith/attendees.php Thu Nov 29 10:56:04 2007 +0100
+++ b/kronolith/attendees.php Thu Nov 29 11:32:43 2007 +0100
@@ -155,6 +155,16 @@ case 'clear':
$attendees = array();
$_SESSION['kronolith']['attendees'] = $attendees;
break;
+
+case 'save':
+ if (empty($attendees)) {
+ break;
+ }
+ $savedattlist = unserialize($prefs->getValue('saved_attendee_list'));
+ $savedattlist[] = array_keys($attendees);
+ $prefs->setValue('saved_attendee_list', serialize($savedattlist));
+ $notification->push(_('Successfully saved attendee list'), 'horde.success');
+ break;
}
// Get the current Free/Busy view; default to the 'day' view if none specified.
@@ -226,6 +236,14 @@ Imple::factory('ContactAutoCompleter', a
$title = _("Edit attendees");
require KRONOLITH_TEMPLATES . '/common-header.inc';
+
+if ($browser->hasFeature('javascript')) {
+ Horde::addScriptFile('open_savedattlist_win.js');
+ $savedattlist_url = 'javascript:open_savedattlist_win();';
+} else {
+ $savedattlist_url = Horde::applicationUrl('savedattlist.php');
+}
+
$notification->notify(array('status'));
require KRONOLITH_TEMPLATES . '/attendees/attendees.inc';
require $registry->get('templates', 'horde') . '/common-footer.inc';
diff -r 848f241f83e0 kronolith/config/prefs.php.dist
--- a/kronolith/config/prefs.php.dist Thu Nov 29 10:56:04 2007 +0100
+++ b/kronolith/config/prefs.php.dist Thu Nov 29 11:32:43 2007 +0100
@@ -465,3 +465,11 @@ if ($GLOBALS['registry']->hasMethod('con
'shared' => false,
'type' => 'implicit'
);
+
+$_prefs['saved_attendee_list'] = array(
+ 'value' => 'a:0:{}',
+ 'locked' => false,
+ 'shared' => false,
+ 'type' => 'implicit',
+ 'desc' => _("A saved list of attendees")
+);
diff -r 848f241f83e0 kronolith/savedattlist.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kronolith/savedattlist.php Thu Nov 29 11:32:43 2007 +0100
@@ -0,0 +1,77 @@
+<?php
+/**
+ * $Horde: kronolith/attendeeshandler.php,v 1.1 2004/05/25 08:34:21 stuart Exp $
+ *
+ * Copyright 2004 Code Fusion <http://www.codefusion.co.za/>
+ * Stuart Binge <s.binge@codefusion.co.za>
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ */
+
+@define('KRONOLITH_BASE', dirname(__FILE__));
+require_once KRONOLITH_BASE . '/lib/base.php';
+require_once KRONOLITH_BASE . '/lib/FBView.php';
+
+$title = _('Load Attendee List');
+
+Horde::addScriptFile('tooltip.js', 'horde');
+require KRONOLITH_TEMPLATES . '/common-header.inc';
+
+// Get our list of saved attendees
+$savedattlist = unserialize($prefs->getValue('saved_attendee_list'));
+
+// Preformat our image urls
+$delimg = Horde::img('delete.png', _("Remove List"), null, $GLOBALS['registry']->getImageDir('horde'));
+$loadimg = Horde::img('tree/folder.png', _("Load List"), null, $GLOBALS['registry']->getImageDir('horde'));
+
+// Get our Action ID & Value. This specifies what action the user initiated.
+$actionID = Util::getFormData('actionID', false);
+$actionValue = Util::getFormData('actionValue', false);
+if (!$actionID) {
+ $actionID = (Util::getFormData('addNew', false) ? 'add' : false);
+ $actionValue = Util::getFormData('newAttendees', '');
+}
+
+// Perform the specified action, if there is one.
+switch ($actionID) {
+case 'remove':
+ // Remove the specified attendee
+ if (array_key_exists($actionValue, $savedattlist)) {
+ unset($savedattlist[$actionValue]);
+ $prefs->setValue('saved_attendee_list', serialize($savedattlist));
+ }
+
+ break;
+
+case 'dismiss':
+ // Make sure we're actually allowed to dismiss
+ if (!$allow_dismiss) break;
+
+ // Close the attendee window
+ global $browser;
+
+ if ($browser->hasFeature('javascript')) {
+ Util::closeWindowJS();
+ } else {
+ $url = Util::getFormData('url');
+
+ if (!empty($url)) {
+ $location = Horde::applicationUrl($url, true);
+ } else {
+ $url = Util::addParameter($prefs->getValue('defaultview') . '.php', 'month', Util::getFormData('month'));
+ $url = Util::addParameter($url, 'year', Util::getFormData('year'));
+ $location = Horde::applicationUrl($url, true);
+ }
+
+ // Make sure URL is unique.
+ $location = Util::addParameter($location, 'unique', md5(microtime()));
+
+ header('Location: ' . $location);
+ }
+ break;
+}
+
+$form_handler = Horde::applicationUrl('savedattlist.php');
+require KRONOLITH_TEMPLATES . '/savedattlist/savedattlist.inc';
+require $GLOBALS['registry']->get('templates', 'horde') . '/common-footer.inc';
diff -r 848f241f83e0 kronolith/templates/attendees/attendees.inc
--- a/kronolith/templates/attendees/attendees.inc Thu Nov 29 10:56:04 2007 +0100
+++ b/kronolith/templates/attendees/attendees.inc Thu Nov 29 11:32:43 2007 +0100
@@ -92,6 +92,8 @@ function switchDateView(view, timestamp)
<div>
<input type="submit" class="button" name="addNew" value="<?php echo htmlspecialchars(_("Save Attendees")) ?>" />
<input type="submit" class="button" name="addNewClose" value="<?php echo htmlspecialchars(_("Save and Finish")) ?>" />
+ <input type="button" class="button" name="loadAttList" value="<?php echo htmlspecialchars(_("Load Attendee List")) ?>" onclick="<?php echo $savedattlist_url ?>" />
+ <?php if (!empty($attendees)): ?><input type="button" class="button" name="saveAttList" value="<?php echo htmlspecialchars(_("Save Attendee List")) ?>" onclick="performAction('save', '');" /><?php endif; ?>
<?php if (!empty($attendees)): ?><input type="submit" class="button" name="clearAll" value="<?php echo htmlspecialchars(_("Clear all attendees")) ?>" /><?php endif; ?>
</div>
diff -r 848f241f83e0 kronolith/templates/javascript/open_savedattlist_win.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kronolith/templates/javascript/open_savedattlist_win.js Thu Nov 29 11:32:43 2007 +0100
@@ -0,0 +1,36 @@
+<?php if (!strstr($_SERVER['PHP_SELF'], 'javascript.php')): ?><script language="JavaScript" type="text/javascript">
+<!--
+<?php endif; ?>
+function open_savedattlist_win(args)
+{
+ var url = "<?php echo Horde::url($GLOBALS['registry']->applicationWebPath('%application%/savedattlist.php', 'kronolith')) ?>";
+ if (url.indexOf('?') == -1) glue = '?';
+ else glue = '<?php echo ini_get('arg_separator.output') ?>';
+ var now = new Date();
+ var name = "savedattlist_window_" + now.getTime();
+ if (args != "") {
+ url = url + glue + args + '<?php echo ini_get('arg_separator.output') ?>' + "uniq=" + now.getTime();
+ } else {
+ url = url + glue + "uniq=" + now.getTime();
+ }
+ var Width = screen.width;
+ if (Width > 775) {
+ Width = 700;
+ } else {
+ Width -= 75;
+ }
+ var Height = screen.height;
+ if (Height > 725) {
+ Height = 650;
+ } else {
+ Height -= 75;
+ }
+ param = "toolbar=no,location=no,status=yes,scrollbars=yes,resizable=yes,width=" + Width + ",height=" + Height + ",left=0,top=0";
+ name = window.open(url, name, param);
+ if (!eval("name.opener")) {
+ name.opener = self;
+ }
+}
+<?php if (!strstr($_SERVER['PHP_SELF'], 'javascript.php')): ?>// -->
+</script>
+<?php endif; ?>
diff -r 848f241f83e0 kronolith/templates/savedattlist/savedattlist.inc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kronolith/templates/savedattlist/savedattlist.inc Thu Nov 29 11:32:43 2007 +0100
@@ -0,0 +1,68 @@
+<!-- javascript action handling -->
+<script language="JavaScript" type="text/javascript">
+<!--
+function performAction(id, value)
+{
+ document.savedattlistForm.actionID.value = id;
+ document.savedattlistForm.actionValue.value = value;
+ document.savedattlistForm.submit();
+ return false;
+}
+
+function updateMessage(list)
+{
+ if (parent.opener.closed) {
+ alert('<?php echo addslashes(_("The Edit Attendees screen is no longer present. Exiting.")) ?>');
+ this.close();
+ return;
+ }
+
+ if (!parent.opener.document.attendeesForm) {
+ alert('<?php echo addslashes(_("You can only use this form from the Edit Attendees screen.")) ?>');
+ this.close();
+ return;
+ }
+
+ parent.opener.document.attendeesForm.newAttendees.value = list;
+ this.close();
+}
+// -->
+</script>
+
+<form method="post" action="<?php echo $form_handler; ?>" name="savedattlistForm">
+<?php Util::pformInput(); ?>
+<input type="hidden" name="actionID" value="" />
+<input type="hidden" name="actionValue" value="" />
+
+<div align="center">
+
+<table border="0" width="500" cellspacing="0" cellpadding="2">
+
+<!-- header -->
+<tr><td colspan="4" class="header"><b><?php echo $title ?></b></td></tr>
+
+<!-- attendee list header -->
+<tr class="item">
+ <td nowrap="nowrap" width="2%" align="center"><?php echo $loadimg ?></td>
+ <td nowrap="nowrap" width="2%" align="center"><?php echo $delimg ?></td>
+ <td nowrap="nowrap" width="96%"><b><?php echo htmlspecialchars(_("Attendees")) ?></b></td>
+</tr>
+
+<!-- attendees -->
+<?php $i = 0 ?>
+<?php if (empty($savedattlist)): ?>
+ <tr class="item<?php echo ($i++ % 2) ?>"><td align="center" colspan="3"><i><?php echo htmlspecialchars('-- ' . _("No saved attendee lists are available") . ' --') ?></i></td></tr>
+<?php else: foreach ($savedattlist as $index => $list): ?>
+ <tr class="item<?php echo ($i++ % 2) ?>">
+ <?php
+ echo '<td align="center">', Horde::link("javascript:updateMessage('" . addslashes(implode(', ', $list)) . "')", _("Load this list")), $loadimg, "</a></td>";
+ ?>
+ <?php
+ echo '<td align="center">', Horde::link("javascript:performAction('remove', '" . $index . "')", _("Remove this list")), $delimg, "</a></td>";
+ ?>
+ <td><?php echo implode(', ', $list); ?></td>
+ </tr>
+<?php endforeach; endif; ?>
+</table>
+</div>
+</form>