| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | |
| | | - Fix message list multi-select/deselect issue (#5219) |
| | | - Fix bug where contact search menu fields where always unchecked in Larry skin |
| | | - Fix XSS issue in href attribute on area tag (#5240) |
| | | - Fix bug where message list columns could be in wrong order after column drag-n-drop and list sorting |
| | | |
| | | RELEASE 1.1.5 |
| | | ------------- |
| | |
| | | this.col_draglayer = null; |
| | | } |
| | | |
| | | if (this.col_drag_active) |
| | | this.focus(); |
| | | this.col_drag_active = false; |
| | | |
| | | rcube_event.remove_listener({event:'mousemove', object:this, method:'column_drag_mouse_move'}); |
| | | rcube_event.remove_listener({event:'mouseup', object:this, method:'column_drag_mouse_up'}); |
| | | |
| | | // remove temp divs |
| | | this.del_dragfix(); |
| | | |
| | | if (this.selected_column !== null && this.cols && this.cols.length) { |
| | | var i, cpos = 0, pos = rcube_event.get_mouse_pos(e); |
| | | if (this.col_drag_active) { |
| | | this.col_drag_active = false; |
| | | this.focus(); |
| | | this.triggerEvent('column_dragend', e); |
| | | |
| | | // find destination position |
| | | for (i=0; i<this.cols.length; i++) { |
| | | if (pos.x >= this.cols[i]/2 + this.list_pos + cpos) |
| | | cpos += this.cols[i]; |
| | | else |
| | | break; |
| | | } |
| | | if (this.selected_column !== null && this.cols && this.cols.length) { |
| | | var i, cpos = 0, pos = rcube_event.get_mouse_pos(e); |
| | | |
| | | if (i != this.selected_column && i != this.selected_column+1) { |
| | | this.column_replace(this.selected_column, i); |
| | | // find destination position |
| | | for (i=0; i<this.cols.length; i++) { |
| | | if (pos.x >= this.cols[i]/2 + this.list_pos + cpos) |
| | | cpos += this.cols[i]; |
| | | else |
| | | break; |
| | | } |
| | | |
| | | if (i != this.selected_column && i != this.selected_column+1) { |
| | | this.column_replace(this.selected_column, i); |
| | | } |
| | | } |
| | | } |
| | | |
| | | this.triggerEvent('column_dragend', e); |
| | | |
| | | return rcube_event.cancel(e); |
| | | }, |
| | |
| | | */ |
| | | private function is_link_attribute($tag, $attr) |
| | | { |
| | | return $tag == 'a' && $attr == 'href'; |
| | | return ($tag == 'a' || $tag == 'area') && $attr == 'href'; |
| | | } |
| | | |
| | | /** |
| | |
| | | Eingabe: Ausgewählte/fokussierte Nachricht öffnen. |
| | | Löschen: Ausgewählte Nachricht in den Papierkorb verschieben resp. löschen."; |
| | | $labels['helplistkeyboardnavcontacts'] = "Eingabe: Ausgewählten Kontakt öffnen."; |
| | | $labels['sigbelow'] = 'Signatur unter der zitierten Nachricht platzieren'; |
| | | ?> |
| | |
| | | Enter: Öffne die ausgewählte/fokussierte Nachricht |
| | | Rücktaste: Verschiebe gewählte Nachricht in den Mülleimer"; |
| | | $labels['helplistkeyboardnavcontacts'] = "Enter: Ausgewählten Kontakt öffnen."; |
| | | $labels['sigbelow'] = 'Unterschrift unter der zitierten Nachricht platzieren'; |
| | | ?> |
| | |
| | | else if (rcmail.env.task == 'addressbook') { |
| | | rcmail.addEventListener('afterupload-photo', show_uploadform) |
| | | .addEventListener('beforepushgroup', push_contactgroup) |
| | | .addEventListener('beforepopgroup', pop_contactgroup); |
| | | .addEventListener('beforepopgroup', pop_contactgroup) |
| | | .addEventListener('menu-open', menu_toggle) |
| | | .addEventListener('menu-close', menu_toggle); |
| | | |
| | | if (rcmail.env.action == '') { |
| | | new rcube_splitter({ id:'addressviewsplitterd', p1:'#addressview-left', p2:'#addressview-right', |
| | |
| | | } |
| | | |
| | | /** |
| | | * Test XSS in area's href (#5240) |
| | | */ |
| | | function test_href_area() |
| | | { |
| | | $html = '<p><area href="data:text/html,<script>alert(document.cookie)</script>">' |
| | | . '<area href="vbscript:alert(document.cookie)">Internet Explorer</p>' |
| | | . '<area href="javascript:alert(document.domain)" shape=default>'; |
| | | |
| | | $washer = new rcube_washtml; |
| | | $washed = $washer->wash($html); |
| | | |
| | | $this->assertNotRegExp('/data:text/', $washed, "data:text/html in area href"); |
| | | $this->assertNotRegExp('/vbscript:/', $washed, "vbscript: in area href"); |
| | | $this->assertNotRegExp('/javascript:/', $washed, "javascript: in area href"); |
| | | } |
| | | |
| | | /** |
| | | * Test handling HTML comments |
| | | */ |
| | | function test_comments() |