Mercurial > hg > rc1
comparison plugins/thunderbird_labels/thunderbird_labels.php @ 1:5821049f1791
most of the way to allowing arbitrarily many labels
| author | Charlie Root |
|---|---|
| date | Thu, 04 Jan 2018 16:23:36 -0500 |
| parents | 1e000243b222 |
| children | c828b0fd4a6e |
comparison
equal
deleted
inserted
replaced
| 0:1e000243b222 | 1:5821049f1791 |
|---|---|
| 43 $this->add_hook('render_page', array($this, 'tb_label_popup')); | 43 $this->add_hook('render_page', array($this, 'tb_label_popup')); |
| 44 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); | 44 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); |
| 45 | 45 |
| 46 $this->name = get_class($this); | 46 $this->name = get_class($this); |
| 47 # -- additional TB flags | 47 # -- additional TB flags |
| 48 $this->add_tb_flags = array( | 48 $this->add_tb_flags = array(); |
| 49 'LABEL1' => '$Label1', | 49 $max_id = $this->rc->config->get('tb_max_label'); |
| 50 'LABEL2' => '$Label2', | 50 for ($i = 1; $i <= $max_id; $i++) { |
| 51 'LABEL3' => '$Label3', | 51 $this->add_tb_flags['LABEL'.$i]='$Label'.$i; |
| 52 'LABEL4' => '$Label4', | 52 } |
| 53 'LABEL5' => '$Label5', | |
| 54 ); | |
| 55 $this->message_tb_labels = array(); | 53 $this->message_tb_labels = array(); |
| 56 | 54 |
| 57 $this->add_button( | 55 $this->add_button( |
| 58 array( | 56 array( |
| 59 'command' => 'plugin.thunderbird_labels.rcm_tb_label_submenu', | 57 'command' => 'plugin.thunderbird_labels.rcm_tb_label_submenu', |
| 75 if (method_exists($this, 'require_plugin') | 73 if (method_exists($this, 'require_plugin') |
| 76 && in_array('contextmenu', $this->rc->config->get('plugins')) | 74 && in_array('contextmenu', $this->rc->config->get('plugins')) |
| 77 && $this->require_plugin('contextmenu') | 75 && $this->require_plugin('contextmenu') |
| 78 && $this->rc->config->get('tb_label_enable_contextmenu')) | 76 && $this->rc->config->get('tb_label_enable_contextmenu')) |
| 79 { | 77 { |
| 80 if ($this->rc->action == '') | 78 if ($this->rc->action == 'list') |
| 81 $this->add_hook('render_mailboxlist', array($this, 'show_tb_label_contextmenu')); | 79 $this->add_hook('render_mailboxlist', array($this, 'show_tb_label_contextmenu')); |
| 80 rcube::write_log('lab','ctxt: '.$this->rc->action); | |
| 81 } | |
| 82 else { | |
| 83 rcube::write_log('lab','no ctxt'); | |
| 82 } | 84 } |
| 83 } | 85 } |
| 84 elseif ($this->rc->task == 'settings') | 86 elseif ($this->rc->task == 'settings') |
| 85 { | 87 { |
| 86 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); | 88 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); |
| 94 { | 96 { |
| 95 $c = $this->rc->config->get('tb_label_custom_labels'); | 97 $c = $this->rc->config->get('tb_label_custom_labels'); |
| 96 if (empty($c)) | 98 if (empty($c)) |
| 97 { | 99 { |
| 98 // if no user specific labels, use localized strings by default | 100 // if no user specific labels, use localized strings by default |
| 99 $this->rc->config->set('tb_label_custom_labels', array( | 101 $max_id = $this->rc->config->get('tb_max_label'); |
| 100 0 => $this->getText('label0'), | 102 $tb_flag_text = array(); |
| 101 1 => $this->getText('label1'), | 103 for ($i = 0; $i <= $max_id; $i++) { |
| 102 2 => $this->getText('label2'), | 104 $tb_flag_text[$i] = $this->getText('label'.$i); |
| 103 3 => $this->getText('label3'), | 105 } |
| 104 4 => $this->getText('label4'), | 106 $this->rc->config->set('tb_label_custom_labels', |
| 105 5 => $this->getText('label5') | 107 tb_flag_text); |
| 106 )); | |
| 107 } | 108 } |
| 108 // pass label strings to JS | 109 // pass label strings to JS |
| 109 $this->rc->output->set_env('tb_label_custom_labels', $this->rc->config->get('tb_label_custom_labels')); | 110 $this->rc->output->set_env('tb_label_custom_labels', $this->rc->config->get('tb_label_custom_labels')); |
| 110 } | 111 } |
| 111 | 112 |
| 181 $key = 'tb_label_custom_labels'; | 182 $key = 'tb_label_custom_labels'; |
| 182 if (!in_array($key, $dont_override) | 183 if (!in_array($key, $dont_override) |
| 183 && $this->rc->config->get('tb_label_modify_labels')) | 184 && $this->rc->config->get('tb_label_modify_labels')) |
| 184 { | 185 { |
| 185 $old = $this->rc->config->get($key); | 186 $old = $this->rc->config->get($key); |
| 186 for($i=1; $i<=5; $i++) | 187 $max_id = $this->rc->config->get('tb_max_label'); |
| 188 for($i=1; $i<=$max_id; $i++) | |
| 187 { | 189 { |
| 188 $input = new html_inputfield(array( | 190 $input = new html_inputfield(array( |
| 189 'name' => $key.$i, | 191 'name' => $key.$i, |
| 190 'id' => $key.$i, | 192 'id' => $key.$i, |
| 191 'type' => 'text', | 193 'type' => 'text', |
| 222 $args['prefs']['tb_label_style'] = rcube_utils::get_input_value('tb_label_style', rcube_utils::INPUT_POST); | 224 $args['prefs']['tb_label_style'] = rcube_utils::get_input_value('tb_label_style', rcube_utils::INPUT_POST); |
| 223 | 225 |
| 224 if (!in_array('tb_label_custom_labels', $dont_override) | 226 if (!in_array('tb_label_custom_labels', $dont_override) |
| 225 && $this->rc->config->get('tb_label_modify_labels')) | 227 && $this->rc->config->get('tb_label_modify_labels')) |
| 226 { | 228 { |
| 227 $args['prefs']['tb_label_custom_labels'] = array( | 229 $max_id = $this->rc->config->get('tb_max_label'); |
| 228 0 => $this->gettext('label0'), | 230 $tb_lab_prefs = array(); |
| 229 1 => rcube_utils::get_input_value('tb_label_custom_labels1', rcube_utils::INPUT_POST), | 231 $tb_lab_prefs[0] = $this->gettext('label0'); |
| 230 2 => rcube_utils::get_input_value('tb_label_custom_labels2', rcube_utils::INPUT_POST), | 232 for ($i = 1; $i <= $max_id; $i++) { |
| 231 3 => rcube_utils::get_input_value('tb_label_custom_labels3', rcube_utils::INPUT_POST), | 233 $tb_lab_prefs[$i] = rcube_utils::get_input_value('tb_label_custom_labels'.$i, rcube_utils::INPUT_POST); |
| 232 4 => rcube_utils::get_input_value('tb_label_custom_labels4', rcube_utils::INPUT_POST), | 234 } |
| 233 5 => rcube_utils::get_input_value('tb_label_custom_labels5', rcube_utils::INPUT_POST) | |
| 234 ); | |
| 235 } | 235 } |
| 236 | 236 |
| 237 return $args; | 237 return $args; |
| 238 } | 238 } |
| 239 | 239 |
| 240 public function show_tb_label_contextmenu($args) | 240 public function show_tb_label_contextmenu($args) |
| 241 { | 241 { |
| 242 #$this->api->output->add_label('copymessage.copyingmessage'); | 242 #$this->api->output->add_label('copymessage.copyingmessage'); |
| 243 | 243 rcube::write_log('lab',"stblc"); |
| 244 $li = html::tag('li', | 244 $li = html::tag('li', |
| 245 array('class' => 'submenu'), | 245 array('class' => 'submenu'), |
| 246 '<span>'.rcube::Q($this->gettext('tb_label_contextmenu_title')).'</span>' . $this->_gen_label_submenu($args, 'tb_label_ctxm_submenu')); | 246 '<span>'.rcube::Q($this->gettext('tb_label_contextmenu_title')).'</span>' . $this->_gen_label_submenu($args, 'tb_label_ctxm_submenu')); |
| 247 $out .= html::tag('ul', array('id' => 'tb_label_ctxm_mainmenu'), $li); | 247 $out .= html::tag('ul', array('id' => 'tb_label_ctxm_mainmenu'), $li); |
| 248 $this->api->output->add_footer(html::div(array('style' => 'display: none;'), $out)); | 248 $this->api->output->add_footer(html::div(array('style' => 'display: none;'), $out)); |
| 250 | 250 |
| 251 private function _gen_label_submenu($args, $id) | 251 private function _gen_label_submenu($args, $id) |
| 252 { | 252 { |
| 253 $out = ''; | 253 $out = ''; |
| 254 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); | 254 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); |
| 255 for ($i = 0; $i < 6; $i++) | 255 $max_id = $this->rc->config->get('tb_max_label'); |
| 256 for ($i = 0; $i <= $max_id; $i++) | |
| 256 { | 257 { |
| 257 $separator = ($i == 0)? ' separator_below' :''; | 258 $separator = ($i == 0)? ' separator_below' :''; |
| 258 $out .= '<li class="label'.$i.$separator. | 259 $out .= '<li class="label'.$i.$separator. |
| 259 ' ctxm_tb_label"><a href="#ctxm_tb_label" class="active" onclick="rcmail_ctxm_label_set('.$i.')"><span>'. | 260 ' ctxm_tb_label"><a href="#ctxm_tb_label" class="active" onclick="rcmail_ctxm_label_set('.$i.')"><span>'. |
| 260 $i.' '.$custom_labels[$i]. | 261 $i.' '.$custom_labels[$i]. |
| 363 } | 364 } |
| 364 | 365 |
| 365 function tb_label_popup() | 366 function tb_label_popup() |
| 366 { | 367 { |
| 367 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); | 368 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); |
| 369 $max_id = $this->rc->config->get('tb_max_label'); | |
| 368 $out = '<div id="tb_label_popup" class="popupmenu"> | 370 $out = '<div id="tb_label_popup" class="popupmenu"> |
| 369 <ul class="toolbarmenu">'; | 371 <ul class="toolbarmenu">'; |
| 370 for ($i = 0; $i < 6; $i++) | 372 for ($i = 0; $i <= $max_id; $i++) |
| 371 { | 373 { |
| 372 $separator = ($i == 0)? ' separator_below' :''; | 374 $separator = ($i == 0)? ' separator_below' :''; |
| 373 $out .= '<li class="label'.$i.$separator.'"><a href="#" class="active">'.$i.' '.$custom_labels[$i].'</a></li>'; | 375 $out .= '<li class="label'.$i.$separator.'"><a href="#" class="active">'.$i.' '.$custom_labels[$i].'</a></li>'; |
| 374 } | 376 } |
| 375 $out .= '</ul> | 377 $out .= '</ul> |
