Mercurial > hg > rc1
comparison plugins/thunderbird_labels/thunderbird_labels.php @ 26:b2b6c0af2383
remove _ from name, lots of other hacks to get label context menu working
author | Charlie Root |
---|---|
date | Sun, 28 Jan 2018 11:32:20 -0500 |
parents | 4b2bc456ce42 |
children | e097905863b9 |
comparison
equal
deleted
inserted
replaced
25:4b2bc456ce42 | 26:b2b6c0af2383 |
---|---|
42 | 42 |
43 $this->include_script('tb_label.js'); | 43 $this->include_script('tb_label.js'); |
44 $this->add_hook('messages_list', array($this, 'read_flags')); | 44 $this->add_hook('messages_list', array($this, 'read_flags')); |
45 $this->add_hook('message_load', array($this, 'read_single_flags')); | 45 $this->add_hook('message_load', array($this, 'read_single_flags')); |
46 $this->add_hook('template_object_messageheaders', array($this, 'color_headers')); | 46 $this->add_hook('template_object_messageheaders', array($this, 'color_headers')); |
47 $this->add_hook('render_page', array($this, 'tb_label_popup')); | 47 $this->add_hook('render_page', array($this, 'tblabelpopup')); |
48 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); | 48 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); |
49 | 49 |
50 $this->name = get_class($this); | 50 $this->name = get_class($this); |
51 # -- additional TB flags | 51 # -- additional TB flags |
52 $this->add_tb_flags = array(); | 52 $this->add_tb_flags = array(); |
53 for ($i = 1; $i <= $max_id; $i++) { | 53 for ($i = 1; $i <= $max_id; $i++) { |
54 $this->add_tb_flags['LABEL'.$i]='$Label'.$i; | 54 $this->add_tb_flags['LABEL'.$i]='$Label'.$i; |
55 } | 55 } |
56 $this->message_tb_labels = array(); | 56 $this->message_tb_labels = array(); |
57 | 57 |
58 # This builds the toolbar button, but | |
59 # it's also used by the ctxtmenu initialisation | |
60 # contextmenu.js:rcube_context_menu to build | |
61 # the context menu, and that somehow | |
62 # ends up with display: none??? | |
63 # Bother, missed it, it's before this.container.show | |
64 # Afeter ul.appendnd -- inside menu.show on 307 | |
65 # 567? Yes -- that's calling 'hide', but overriding | |
66 # doesn't fix :-( | |
67 rcube::write_log('lab','add_button'); | |
58 $this->add_button( | 68 $this->add_button( |
59 array( | 69 array( |
60 'command' => 'plugin.thunderbird_labels.rcm_tb_label_submenu', | 70 #'command' => 'plugin.thunderbird_labels.rcm_tb_label_submenu', |
61 'id' => 'tb_label_popuplink', | 71 'name' => 'tblabellink', |
72 'id' => 'tblabelpopuplink', | |
73 #'domain' => $this->ID, | |
74 'type' => 'link', | |
75 'class' => 'button tblabel', | |
76 'label' => $this->gettext('tb_label_button_label'), | |
62 'title' => 'tb_label_button_title', | 77 'title' => 'tb_label_button_title', |
63 'domain' => $this->ID, | 78 'onclick' => "UI.toggle_popup('tblabelpopup',event);return false", |
64 'type' => 'link', | 79 'aria-haspopup' => true, |
65 'content' => $this->gettext('tb_label_button_label'), | 80 'aria-expanded' => false, |
66 'class' => 'button buttonPas disabled', | 81 'aria-owns' => 'plugin.thunderbird_labels.rcm_tb_label_submenu-menu' |
67 'classact' => 'button', | 82 #'classact' => 'listbutton add', |
68 ), | 83 ), |
69 'toolbar' | 84 'toolbar' |
70 ); | 85 ); |
71 | 86 |
72 // JS function "set_flags" => PHP function "set_flags" | 87 // JS function "set_flags" => PHP function "set_flags" |
73 $this->register_action('plugin.thunderbird_labels.set_flags', array($this, 'set_flags')); | 88 $this->register_action('plugin.thunderbird_labels.set_flags', array($this, 'set_flags')); |
74 | 89 |
75 | 90 |
76 if (method_exists($this, 'require_plugin') | 91 if (method_exists($this, 'require_plugin') |
78 && $this->require_plugin('contextmenu') | 93 && $this->require_plugin('contextmenu') |
79 && $this->rc->config->get('tb_label_enable_contextmenu')) | 94 && $this->rc->config->get('tb_label_enable_contextmenu')) |
80 { | 95 { |
81 if ($this->rc->action == 'list') | 96 if ($this->rc->action == 'list') |
82 $this->add_hook('render_mailboxlist', array($this, 'show_tb_label_contextmenu')); | 97 $this->add_hook('render_mailboxlist', array($this, 'show_tb_label_contextmenu')); |
83 #rcube::write_log('lab','ctxt: '.$this->rc->action); | 98 rcube::write_log('lab','ctxt: '.$this->rc->action); |
84 } | 99 } |
85 else { | 100 else { |
86 #rcube::write_log('lab','no ctxt'); | 101 rcube::write_log('lab','no ctxt'); |
87 } | 102 } |
88 } | 103 } |
89 elseif ($this->rc->task == 'settings') | 104 elseif ($this->rc->task == 'settings') |
90 { | 105 { |
91 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); | 106 $this->include_stylesheet($this->local_skin_path() . '/tb_label.css'); |
262 | 277 |
263 return $args; | 278 return $args; |
264 } | 279 } |
265 | 280 |
266 public function show_tb_label_contextmenu($args) | 281 public function show_tb_label_contextmenu($args) |
282 # never called? | |
267 { | 283 { |
268 #$this->api->output->add_label('copymessage.copyingmessage'); | 284 #$this->api->output->add_label('copymessage.copyingmessage'); |
269 #rcube::write_log('lab',"stblc"); | |
270 $li = html::tag('li', | 285 $li = html::tag('li', |
271 array('class' => 'submenu'), | 286 array('class' => 'submenu'), |
272 '<span>'.rcube::Q($this->gettext('tb_label_contextmenu_title')).'</span>' . $this->_gen_label_submenu($args, 'tb_label_ctxm_submenu')); | 287 '<span>'.rcube::Q($this->gettext('tb_label_contextmenu_title')).'</span>' . $this->_gen_label_submenu($args, 'tb_label_ctxm_submenu')); |
273 $out .= html::tag('ul', array('id' => 'tb_label_ctxm_mainmenu'), $li); | 288 $out .= html::tag('ul', array('id' => 'tb_label_ctxm_mainmenu'), $li); |
289 rcube::write_log('lab',"stblc $out"); | |
274 $this->api->output->add_footer(html::div(array('style' => 'display: none;'), $out)); | 290 $this->api->output->add_footer(html::div(array('style' => 'display: none;'), $out)); |
275 } | 291 } |
276 | 292 |
277 private function _gen_label_submenu($args, $id) | 293 private function _gen_label_submenu($args, $id) |
294 # never called? | |
278 { | 295 { |
279 $out = ''; | 296 $out = ''; |
280 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); | 297 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); |
281 $max_id = $this->rc->config->get('tb_max_label'); | 298 $max_id = $this->rc->config->get('tb_max_label'); |
282 for ($i = 0; $i <= $max_id; $i++) | 299 for ($i = 0; $i <= $max_id; $i++) |
511 } | 528 } |
512 } | 529 } |
513 $this->api->output->send(); | 530 $this->api->output->send(); |
514 } | 531 } |
515 | 532 |
516 function tb_label_popup() | 533 function tblabelpopup() |
517 { | 534 { |
518 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); | 535 $custom_labels = $this->rc->config->get('tb_label_custom_labels'); |
519 $max_id = $this->rc->config->get('tb_max_label'); | 536 $max_id = $this->rc->config->get('tb_max_label'); |
520 $out = '<div id="tb_label_popup" class="popupmenu"> | 537 $out = '<div id="tblabelpopup" class="popupmenu"> |
521 <ul class="toolbarmenu">'; | 538 <ul class="toolbarmenu">'; |
522 for ($i = 0; $i <= $max_id; $i++) | 539 for ($i = 0; $i <= $max_id; $i++) |
523 { | 540 { |
524 $separator = ($i == 0)? ' separator_below' :''; | 541 $separator = ($i == 0)? ' separator_below' :''; |
525 $out .= '<li class="label'.$i.$separator.'"><a href="#" class="active">'.$i.' '.$custom_labels[$i].'</a></li>'; | 542 $out .= '<li class="label'.$i.$separator.'"><a href="#" id="tblabel'.$i.'" class="active">'.$i.' '.$custom_labels[$i].'</a></li>'; |
526 } | 543 } |
527 $out .= '</ul> | 544 $out .= '</ul> |
528 </div>'; | 545 </div>'; |
529 $this->rc->output->add_gui_object('tb_label_popup_obj', 'tb_label_popup'); | 546 $this->rc->output->add_gui_object('tblabelpopup_obj', 'tblabelpopup'); |
530 $this->rc->output->add_footer($out); | 547 rcube::write_log('lab',"tblp $out"); |
548 $this->rc->output->add_footer($out); | |
531 } | 549 } |
532 } | 550 } |
533 | 551 |