diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js index 38bab76d..3eefd910 100644 --- a/plugins/calendar/calendar_ui.js +++ b/plugins/calendar/calendar_ui.js @@ -1311,7 +1311,7 @@ function rcube_calendar_ui(settings) success: function(data) { $dialog.html(data); // resize and reposition dialog window - form = $('form', $('#calendarform')); // '#calendarform > form' doesn't work here + form = $('#calendarpropform'); me.dialog_resize('#calendarform', form.height(), form.width()); name = $('#calendar-name').prop('disabled', !calendar.editable).val(calendar.editname || calendar.name); color = $('#calendar-color').val(calendar.color).miniColors({ value: calendar.color }); @@ -1467,7 +1467,7 @@ function rcube_calendar_ui(settings) this.dialog_resize = function(id, height, width) { var win = $(window), w = win.width(), h = win.height(); - $(id).dialog('option', { height: Math.min(h-20, height+125), width: Math.min(w-20, width+50) }) + $(id).dialog('option', { height: Math.min(h-20, height+110), width: Math.min(w-20, width+50) }) .dialog('option', 'position', ['center', 'center']); // only works in a separate call (!?) }; diff --git a/plugins/calendar/drivers/calendar_driver.php b/plugins/calendar/drivers/calendar_driver.php index 293d39b3..db3ad904 100644 --- a/plugins/calendar/drivers/calendar_driver.php +++ b/plugins/calendar/drivers/calendar_driver.php @@ -305,12 +305,19 @@ abstract class calendar_driver * * @param string Request action 'form-edit|form-new' * @param array Calendar properties (e.g. id, color) - * @param string HTML code of default edit form + * @param array Edit form fields * * @return string HTML content of the form */ - public function calendar_form($action, $calendar, $html) + public function calendar_form($action, $calendar, $formfields) { + $html = ''; + foreach ($formfields as $prop => $field) { + $html .= html::div('form-section', + html::label($field['id'], $field['label']) . + $field['value']); + } + return $html; } diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index 053cecc2..a50edf85 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -832,21 +832,21 @@ class kolab_driver extends calendar_driver * * @param string Request action 'form-edit|form-new' * @param array Calendar properties (e.g. id, color) - * @param string HTML code of default edit form + * @param array Edit form fields * * @return string HTML content of the form */ - public function calendar_form($action, $calendar, $html) + public function calendar_form($action, $calendar, $formfields) { // Remove any scripts/css/js $this->rc->output->reset(); + // Produce form content - $content = $this->calendar_form_content($calendar); - // Parse form template, write to output buffer - // This way other plugins (e.g. acl) will be able to add scripts/style to the content - ob_start(); - $this->rc->output->parse('calendar.calendarform-kolab', false, true); - $html = ob_get_clean(); + $content = $this->calendar_form_content($calendar, $formfields); + + // Parse form template for skin-dependent stuff + // TODO: copy scripts and styles added by other plugins (e.g. acl) from $this->rc->output + $html = $this->rc->output->parse('calendar.calendarform-kolab', false, false); return str_replace('%FORM_CONTENT%', $content, $html); } @@ -856,7 +856,7 @@ class kolab_driver extends calendar_driver * * @return string HTML content of the form */ - private function calendar_form_content($calendar) + private function calendar_form_content($calendar, $formfields) { if ($calendar['id'] && ($cal = $this->calendars[$calendar['id']])) { $folder = $cal->get_realname(); // UTF7 @@ -874,7 +874,7 @@ class kolab_driver extends calendar_driver if (strlen($folder)) { $path_imap = explode($delim, $folder); - $name = rcube_charset_convert(array_pop($path_imap), 'UTF7-IMAP'); + array_pop($path_imap); // pop off name part $path_imap = implode($path_imap, $delim); $this->rc->imap_connect(); @@ -882,7 +882,6 @@ class kolab_driver extends calendar_driver } else { $path_imap = ''; - $name = ''; } // General tab @@ -890,16 +889,11 @@ class kolab_driver extends calendar_driver 'name' => $this->rc->gettext('properties'), ); - // calendar name - $foldername = new html_inputfield(array('name' => 'name', 'id' => 'calendar-name', 'size' => 20)); - + // calendar name (default field) $form['props']['fieldsets']['location'] = array( 'name' => $this->rc->gettext('location'), 'content' => array( - 'name' => array( - 'label' => $this->cal->gettext('name'), - 'value' => $foldername->show($name), - ), + 'name' => $formfields['name'] ), ); @@ -909,23 +903,17 @@ class kolab_driver extends calendar_driver } else { $select = rcube_kolab::folder_selector('event', array('name' => 'parent')); - $form['props']['fieldsets']['location']['content']['path'] = array( 'label' => $this->cal->gettext('parentcalendar'), 'value' => $select->show($path_imap), ); } - // calendar color - $color = new html_inputfield(array('name' => 'color', 'id' => 'calendar-color', 'size' => 6)); - + // calendar color (default field) $form['props']['fieldsets']['settings'] = array( 'name' => $this->rc->gettext('settings'), 'content' => array( - 'color' => array( - 'label' => $this->cal->gettext('color'), - 'value' => $color->show($calendar['color']), - ), + 'color' => $formfields['color'], ), ); diff --git a/plugins/calendar/lib/calendar_ui.php b/plugins/calendar/lib/calendar_ui.php index 4e7dcaf0..2730cd6c 100644 --- a/plugins/calendar/lib/calendar_ui.php +++ b/plugins/calendar/lib/calendar_ui.php @@ -537,23 +537,27 @@ class calendar_ui */ function calendar_editform($action, $calendar = array()) { - // compose default calendar form + // compose default calendar form fields $input_name = new html_inputfield(array('name' => 'name', 'id' => 'calendar-name', 'size' => 20)); - $html = html::div('form-section', - html::label('calendar-name', $this->calendar->gettext('name')) . - $input_name->show($calendar['name'])); - $input_color = new html_inputfield(array('name' => 'color', 'id' => 'calendar-color', 'size' => 6)); - $html .= html::div('form-section', - html::label('calendar-color', $this->calendar->gettext('color')) . - $input_color->show($calendar['color'])); - $html = html::tag('form', array('action' => "#", 'method' => "get", 'id' => 'calendarpropform'), $html); + $formfields = array( + 'name' => array( + 'label' => $this->calendar->gettext('name'), + 'value' => $input_name->show($name), + 'id' => 'calendar-name', + ), + 'color' => array( + 'label' => $this->calendar->gettext('color'), + 'value' => $input_color->show($calendar['color']), + 'id' => 'calendar-color', + ), + ); // allow driver to extend or replace the form content - $html = $this->calendar->driver->calendar_form($action, $calendar, $html); - - return $html; + return html::tag('form', array('action' => "#", 'method' => "get", 'id' => 'calendarpropform'), + $this->calendar->driver->calendar_form($action, $calendar, $formfields) + ); } /** diff --git a/plugins/calendar/skins/default/calendar.css b/plugins/calendar/skins/default/calendar.css index 564c3196..6529bf84 100644 --- a/plugins/calendar/skins/default/calendar.css +++ b/plugins/calendar/skins/default/calendar.css @@ -843,31 +843,33 @@ a.alarm-action-snooze:after { height: 160px; } -#calendar-details { - left: 5px; - position: absolute; - right: 5px; +#calendar-kolabform { + position: relative; + padding-top: 22px; + margin: 0 -8px; } -#calendar-details div.tabsbar { - top: 0; - left: 2px; +#calendar-kolabform div.tabsbar { + top: 0; + right: 2px; + left: 2px; } -#calendar-details fieldset { - background-color: #fff; +#calendar-kolabform fieldset.tabbed { + background-color: #fff; + margin-top: 0; } -#calendar-details span.tablink { +#calendar-kolabform span.tablink { background: #E6E6E7; } -#calendar-details span.tablink-selected { +#calendar-kolabform span.tablink-selected { background: #fff; } -#calendar-details span.tablink a, -#calendar-details span.tablink-selected a { +#calendar-kolabform span.tablink a, +#calendar-kolabform span.tablink-selected a { background: none; border: 1px solid #AAAAAA; border-top-left-radius: 2px; @@ -875,7 +877,7 @@ a.alarm-action-snooze:after { margin-left: 0; } -#calendar-details table td.title { +#calendar-kolabform table td.title { font-weight: bold; white-space: nowrap; color: #666; diff --git a/plugins/calendar/skins/default/templates/calendarform-kolab.html b/plugins/calendar/skins/default/templates/calendarform-kolab.html index 7fd8f7a8..14511a73 100644 --- a/plugins/calendar/skins/default/templates/calendarform-kolab.html +++ b/plugins/calendar/skins/default/templates/calendarform-kolab.html @@ -1,13 +1,4 @@ - - - - -
-
- %FORM_CONTENT% -
+
+ %FORM_CONTENT%
- - - - +