Exemplo n.º 1
0
 /**
  * 
  */
 public function tasklist_edit_form($fieldprop)
 {
     $select = kolab_storage::folder_selector('task', array('name' => 'parent', 'id' => 'taskedit-parentfolder'), null);
     $fieldprop['parent'] = array('id' => 'taskedit-parentfolder', 'label' => $this->plugin->gettext('parentfolder'), 'value' => $select->show(''));
     $formfields = array();
     foreach (array('name', 'parent', 'showalarms') as $f) {
         $formfields[$f] = $fieldprop[$f];
     }
     return parent::tasklist_edit_form($formfields);
 }
Exemplo n.º 2
0
 /**
  * Callback function to produce driver-specific calendar create/edit form
  *
  * @param string Request action 'form-edit|form-new'
  * @param array  Calendar properties (e.g. id, color)
  * @param array  Edit form fields
  *
  * @return string HTML content of the form
  */
 public function calendar_form($action, $calendar, $formfields)
 {
     // show default dialog for birthday calendar
     if (in_array($calendar['id'], array(self::BIRTHDAY_CALENDAR_ID, self::INVITATIONS_CALENDAR_PENDING, self::INVITATIONS_CALENDAR_DECLINED))) {
         if ($calendar['id'] != self::BIRTHDAY_CALENDAR_ID) {
             unset($formfields['showalarms']);
         }
         return parent::calendar_form($action, $calendar, $formfields);
     }
     if ($calendar['id'] && ($cal = $this->calendars[$calendar['id']])) {
         $folder = $cal->get_realname();
         // UTF7
         $color = $cal->get_color();
     } else {
         $folder = '';
         $color = '';
     }
     $hidden_fields[] = array('name' => 'oldname', 'value' => $folder);
     $storage = $this->rc->get_storage();
     $delim = $storage->get_hierarchy_delimiter();
     $form = array();
     if (strlen($folder)) {
         $path_imap = explode($delim, $folder);
         array_pop($path_imap);
         // pop off name part
         $path_imap = implode($path_imap, $delim);
         $options = $storage->folder_info($folder);
     } else {
         $path_imap = '';
     }
     // General tab
     $form['props'] = array('name' => $this->rc->gettext('properties'));
     // Disable folder name input
     if (!empty($options) && ($options['norename'] || $options['protected'])) {
         $input_name = new html_hiddenfield(array('name' => 'name', 'id' => 'calendar-name'));
         $formfields['name']['value'] = kolab_storage::object_name($folder) . $input_name->show($folder);
     }
     // calendar name (default field)
     $form['props']['fieldsets']['location'] = array('name' => $this->rc->gettext('location'), 'content' => array('name' => $formfields['name']));
     if (!empty($options) && ($options['norename'] || $options['protected'])) {
         // prevent user from moving folder
         $hidden_fields[] = array('name' => 'parent', 'value' => $path_imap);
     } else {
         $select = kolab_storage::folder_selector('event', array('name' => 'parent', 'id' => 'calendar-parent'), $folder);
         $form['props']['fieldsets']['location']['content']['path'] = array('id' => 'calendar-parent', 'label' => $this->cal->gettext('parentcalendar'), 'value' => $select->show(strlen($folder) ? $path_imap : ''));
     }
     // calendar color (default field)
     $form['props']['fieldsets']['settings'] = array('name' => $this->rc->gettext('settings'), 'content' => array('color' => $formfields['color'], 'showalarms' => $formfields['showalarms']));
     if ($action != 'form-new') {
         $form['sharing'] = array('name' => rcube::Q($this->cal->gettext('tabsharing')), 'content' => html::tag('iframe', array('src' => $this->cal->rc->url(array('_action' => 'calendar-acl', 'id' => $calendar['id'], 'framed' => 1)), 'width' => '100%', 'height' => 350, 'border' => 0, 'style' => 'border:0'), ''));
     }
     $this->form_html = '';
     if (is_array($hidden_fields)) {
         foreach ($hidden_fields as $field) {
             $hiddenfield = new html_hiddenfield($field);
             $this->form_html .= $hiddenfield->show() . "\n";
         }
     }
     // Create form output
     foreach ($form as $tab) {
         if (!empty($tab['fieldsets']) && is_array($tab['fieldsets'])) {
             $content = '';
             foreach ($tab['fieldsets'] as $fieldset) {
                 $subcontent = $this->get_form_part($fieldset);
                 if ($subcontent) {
                     $content .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($fieldset['name'])) . $subcontent) . "\n";
                 }
             }
         } else {
             $content = $this->get_form_part($tab);
         }
         if ($content) {
             $this->form_html .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($tab['name'])) . $content) . "\n";
         }
     }
     // Parse form template for skin-dependent stuff
     $this->rc->output->add_handler('calendarform', array($this, 'calendar_form_html'));
     return $this->rc->output->parse('calendar.kolabform', false, false);
 }
 /**
  * 
  */
 public function tasklist_edit_form($action, $list, $fieldprop)
 {
     if ($list['id'] && ($list = $this->lists[$list['id']])) {
         $folder_name = $this->get_folder($list['id'])->name;
         // UTF7
     } else {
         $folder_name = '';
     }
     $storage = $this->rc->get_storage();
     $delim = $storage->get_hierarchy_delimiter();
     $form = array();
     if (strlen($folder_name)) {
         $path_imap = explode($delim, $folder_name);
         array_pop($path_imap);
         // pop off name part
         $path_imap = implode($path_imap, $delim);
         $options = $storage->folder_info($folder_name);
     } else {
         $path_imap = '';
     }
     $hidden_fields[] = array('name' => 'oldname', 'value' => $folder_name);
     // folder name (default field)
     $input_name = new html_inputfield(array('name' => 'name', 'id' => 'taskedit-tasklistame', 'size' => 20));
     $fieldprop['name']['value'] = $input_name->show($list['editname'], array('disabled' => $options['norename'] || $options['protected']));
     // prevent user from moving folder
     if (!empty($options) && ($options['norename'] || $options['protected'])) {
         $hidden_fields[] = array('name' => 'parent', 'value' => $path_imap);
     } else {
         $select = kolab_storage::folder_selector('task', array('name' => 'parent', 'id' => 'taskedit-parentfolder'), $folder_name);
         $fieldprop['parent'] = array('id' => 'taskedit-parentfolder', 'label' => $this->plugin->gettext('parentfolder'), 'value' => $select->show($path_imap));
     }
     // General tab
     $form['properties'] = array('name' => $this->rc->gettext('properties'), 'fields' => array());
     foreach (array('name', 'parent', 'showalarms') as $f) {
         $form['properties']['fields'][$f] = $fieldprop[$f];
     }
     // add folder ACL tab
     if ($action != 'form-new') {
         $form['sharing'] = array('name' => rcube::Q($this->plugin->gettext('tabsharing')), 'content' => html::tag('iframe', array('src' => $this->rc->url(array('_action' => 'folder-acl', '_folder' => $folder_name, 'framed' => 1)), 'width' => '100%', 'height' => 280, 'border' => 0, 'style' => 'border:0'), ''));
     }
     $form_html = '';
     if (is_array($hidden_fields)) {
         foreach ($hidden_fields as $field) {
             $hiddenfield = new html_hiddenfield($field);
             $form_html .= $hiddenfield->show() . "\n";
         }
     }
     // create form output
     foreach ($form as $tab) {
         if (is_array($tab['fields']) && empty($tab['content'])) {
             $table = new html_table(array('cols' => 2));
             foreach ($tab['fields'] as $col => $colprop) {
                 $label = !empty($colprop['label']) ? $colprop['label'] : $this->plugin->gettext($col);
                 $table->add('title', html::label($colprop['id'], rcube::Q($label)));
                 $table->add(null, $colprop['value']);
             }
             $content = $table->show();
         } else {
             $content = $tab['content'];
         }
         if (!empty($content)) {
             $form_html .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($tab['name'])) . $content) . "\n";
         }
     }
     return $form_html;
 }