Changeset 4522 in subversion
- Timestamp:
- Feb 10, 2011 3:13:13 AM (2 years ago)
- Location:
- trunk/plugins/managesieve
- Files:
-
- 6 edited
-
Changelog (modified) (1 diff)
-
lib/rcube_sieve.php (modified) (7 diffs)
-
localization/en_US.inc (modified) (1 diff)
-
localization/pl_PL.inc (modified) (1 diff)
-
managesieve.php (modified) (9 diffs)
-
skins/default/templates/filteredit.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/plugins/managesieve/Changelog
r4521 r4522 1 1 - Fix STARTTLS for timsieved < 2.3.10 2 2 - Added :regex and :matches support (#1487746) 3 - Added setflag/addflag/removeflag support (#1487449) 3 4 4 5 * version 3.0 [2011-02-01] -
trunk/plugins/managesieve/lib/rcube_sieve.php
r4521 r4522 407 407 'relational', // RFC3431 408 408 'regex', // draft-ietf-sieve-regex-01 409 // TODO: (most wanted first) body, imapflags, notify 409 'imapflags', 410 'imap4flags', // RFC5232 411 // TODO: (most wanted first) body, notify 410 412 ); 411 413 … … 570 572 foreach ($rule['actions'] as $action) { 571 573 switch ($action['type']) { 574 572 575 case 'fileinto': 573 576 array_push($exts, 'fileinto'); … … 579 582 $script .= self::escape_string($action['target']) . ";\n"; 580 583 break; 584 581 585 case 'redirect': 582 586 $script .= "\tredirect "; … … 587 591 $script .= self::escape_string($action['target']) . ";\n"; 588 592 break; 593 589 594 case 'reject': 590 595 case 'ereject': … … 593 598 . self::escape_string($action['target']) . ";\n"; 594 599 break; 600 601 case 'addflag': 602 case 'setflag': 603 case 'removeflag': 604 $imapflags = strtolower($action['mode']) == 'imap4flags' ? 'imap4flags' : 'imapflags'; 605 array_push($exts, $imapflags); 606 $script .= "\t".$action['type']." " 607 . self::escape_string($action['target']) . ";\n"; 608 break; 609 595 610 case 'keep': 596 611 case 'discard': … … 598 613 $script .= "\t" . $action['type'] .";\n"; 599 614 break; 615 600 616 case 'vacation': 601 617 array_push($exts, 'vacation'); … … 880 896 $result[] = $vacation; 881 897 break; 898 899 case 'setflag': 900 case 'addflag': 901 case 'removeflag': 902 $result[] = array('type' => $token, 903 // Flags list: last token (skip optional variable) 904 'target' => $tokens[count($tokens)-1] 905 ); 906 break; 882 907 } 883 908 } -
trunk/plugins/managesieve/localization/en_US.inc
r4521 r4522 69 69 $labels['valueequals'] = 'value is equal to'; 70 70 $labels['valuenotequals'] = 'value does not equal'; 71 $labels['setflags'] = 'Set flags to the message'; 72 $labels['addflags'] = 'Add flags to the message'; 73 $labels['removeflags'] = 'Remove flags from the message'; 74 $labels['flagread'] = 'Read'; 75 $labels['flagdeleted'] = 'Deleted'; 76 $labels['flaganswered'] = 'Answered'; 77 $labels['flagflagged'] = 'Flagged'; 78 $labels['flagdraft'] = 'Draft'; 71 79 72 80 $messages = array(); -
trunk/plugins/managesieve/localization/pl_PL.inc
r4521 r4522 82 82 $labels['valueequals'] = 'wartoÅÄ jest równa'; 83 83 $labels['valuenotequals'] = 'wartoÅÄ jest róŌna od'; 84 $labels['setflags'] = 'Ustaw flagi wiadomoÅci'; 85 $labels['addflags'] = 'Dodaj flagi do wiadomoÅci'; 86 $labels['removeflags'] = 'UsuÅ flagi wiadomoÅci'; 87 $labels['flagread'] = 'Przeczytana'; 88 $labels['flagdeleted'] = 'UsuniÄta'; 89 $labels['flaganswered'] = 'Z odpowiedziÄ 90 '; 91 $labels['flagflagged'] = 'Oflagowana'; 92 $labels['flagdraft'] = 'Szkic'; 84 93 85 94 $messages = array(); -
trunk/plugins/managesieve/managesieve.php
r4521 r4522 361 361 $addresses = $_POST['_action_addresses']; 362 362 $days = $_POST['_action_days']; 363 $flags = $_POST['_action_flags']; 363 364 364 365 // we need a "hack" for radiobuttons … … 374 375 if ($name == '') 375 376 $this->errors['name'] = $this->gettext('cannotbeempty'); 376 else 377 else { 377 378 foreach($this->script as $idx => $rule) 378 379 if($rule['name'] == $name && $idx != $fid) { … … 380 381 break; 381 382 } 383 } 382 384 383 385 $i = 0; … … 482 484 483 485 switch ($type) { 486 484 487 case 'fileinto': 485 488 case 'fileinto_copy': … … 491 494 } 492 495 break; 496 493 497 case 'reject': 494 498 case 'ereject': … … 499 503 // $this->errors['actions'][$i]['targetarea'] = $this->gettext('cannotbeempty'); 500 504 break; 505 501 506 case 'redirect': 502 507 case 'redirect_copy': … … 513 518 } 514 519 break; 520 521 case 'addflag': 522 case 'setflag': 523 case 'removeflag': 524 $_target = array(); 525 if (empty($flags[$idx])) { 526 $this->errors['actions'][$i]['target'] = $this->gettext('noflagset'); 527 } 528 else { 529 foreach ($flags[$idx] as $flag) { 530 $_target[] = $this->strip_value($flag); 531 } 532 } 533 $this->form['actions'][$i]['target'] = $_target; 534 if (in_array('imap4flags', $this->exts)) { 535 $this->form['actions'][$i]['mode'] = 'imap4flags'; 536 } 537 break; 538 515 539 case 'vacation': 516 540 $reason = $this->strip_value($reasons[$idx]); … … 996 1020 $select_action->add(Q($this->gettext('messagereply')), 'vacation'); 997 1021 $select_action->add(Q($this->gettext('messagedelete')), 'discard'); 1022 if (in_array('imapflags', $this->exts) || in_array('imap4flags', $this->exts)) { 1023 $select_action->add(Q($this->gettext('setflags')), 'setflag'); 1024 $select_action->add(Q($this->gettext('addflags')), 'addflag'); 1025 $select_action->add(Q($this->gettext('removeflags')), 'removeflag'); 1026 } 998 1027 $select_action->add(Q($this->gettext('rulestop')), 'stop'); 999 1028 … … 1035 1064 $out .= '</div>'; 1036 1065 1066 // flags 1067 $flags = array( 1068 'read' => '\\\\Seen', 1069 'answered' => '\\\\Answered', 1070 'flagged' => '\\\\Flagged', 1071 'deleted' => '\\\\Deleted', 1072 'draft' => '\\\\Draft', 1073 ); 1074 $action['target'] = (array)$action['target']; 1075 $out .= '<div id="action_flags' .$id.'" style="display:' 1076 . (preg_match('/^(set|add|remove)flag$/', $action['type']) ? 'inline' : 'none') . '"' 1077 . $this->error_class($id, 'action', 'flags', 'action_flags') . '>'; 1078 foreach ($flags as $fidx => $flag) { 1079 $out .= '<nobr><input type="checkbox" name="_action_flags[' .$id .'][]" value="' . $flag . '"' 1080 . (in_array_nocase($flag, $action['target']) ? 'checked="checked"' : '') . ' />' 1081 . Q($this->gettext('flag'.$fidx)) .'</nobr> '; 1082 } 1083 $out .= '</div>'; 1084 1037 1085 // mailbox select 1038 1086 $out .= '<select id="action_mailbox' .$id. '" name="_action_mailbox[]" style="display:' -
trunk/plugins/managesieve/skins/default/templates/filteredit.html
r3805 r4522 12 12 function header_select(id) 13 13 { 14 var obj = document.getElementById('header'+id); 14 var obj = document.getElementById('header' + id), 15 size = document.getElementById('rule_size' + id), 16 op = document.getElementById('rule_op' + id), 17 target = document.getElementById('rule_target' + id), 18 header = document.getElementById('custom_header' + id); 15 19 16 if (obj.value == 'size') 17 { 18 document.getElementById('rule_size' + id).style.display = 'inline'; 19 document.getElementById('rule_op' + id).style.display = 'none'; 20 document.getElementById('rule_target' + id).style.display = 'none'; 21 document.getElementById('custom_header' + id).style.display = 'none'; 20 if (obj.value == 'size') { 21 size.style.display = 'inline'; 22 op.style.display = 'none'; 23 target.style.display = 'none'; 24 header.style.display = 'none'; 22 25 } 23 else 24 { 25 if (obj.value != '...') 26 document.getElementById('custom_header' + id).style.display = 'none'; 27 else 28 document.getElementById('custom_header' + id).style.display = 'inline'; 29 30 document.getElementById('rule_size' + id).style.display = 'none'; 31 document.getElementById('rule_op' + id).style.display = 'inline'; 32 rule_op_select(id); 26 else { 27 header.style.display = obj.value != '...' ? 'none' : 'inline'; 28 size.style.display = 'none'; 29 op.style.display = 'inline'; 30 rule_op_select(id); 33 31 } 34 32 } … … 36 34 function rule_op_select(id) 37 35 { 38 var obj = document.getElementById('rule_op'+id); 36 var obj = document.getElementById('rule_op' + id), 37 target = document.getElementById('rule_target' + id); 39 38 40 if (obj.value == 'exists' || obj.value == 'notexists') 41 { 42 document.getElementById('rule_target' + id).style.display = 'none'; 43 } 44 else 45 { 46 document.getElementById('rule_target' + id).style.display = 'inline'; 47 } 39 target.style.display = obj.value == 'exists' || obj.value == 'notexists' ? 'none' : 'inline'; 48 40 } 49 41 50 42 function action_type_select(id) 51 43 { 52 var obj = document.getElementById('action_type'+id); 44 var obj = document.getElementById('action_type' + id), 45 enabled = {}, 46 elems = { 47 mailbox: document.getElementById('action_mailbox' + id), 48 target: document.getElementById('action_target' + id), 49 target_area: document.getElementById('action_target_area' + id), 50 flags: document.getElementById('action_flags' + id), 51 vacation: document.getElementById('action_vacation' + id) 52 }; 53 53 54 if (obj.value == 'fileinto' || obj.value == 'fileinto_copy') 55 { 56 document.getElementById('action_mailbox' + id).style.display = 'inline'; 57 document.getElementById('action_target' + id).style.display = 'none'; 58 document.getElementById('action_target_area' + id).style.display = 'none'; 59 document.getElementById('action_vacation' + id).style.display = 'none'; 54 if (obj.value == 'fileinto' || obj.value == 'fileinto_copy') { 55 enabled.mailbox = 1; 60 56 } 61 else if (obj.value == 'redirect' || obj.value == 'redirect_copy') 62 { 63 document.getElementById('action_target' + id).style.display = 'inline'; 64 document.getElementById('action_mailbox' + id).style.display = 'none'; 65 document.getElementById('action_target_area' + id).style.display = 'none'; 66 document.getElementById('action_vacation' + id).style.display = 'none'; 57 else if (obj.value == 'redirect' || obj.value == 'redirect_copy') { 58 enabled.target = 1; 67 59 } 68 else if (obj.value.match(/^reject|ereject$/)) 69 { 70 document.getElementById('action_target_area' + id).style.display = 'inline'; 71 document.getElementById('action_vacation' + id).style.display = 'none'; 72 document.getElementById('action_target' + id).style.display = 'none'; 73 document.getElementById('action_mailbox' + id).style.display = 'none'; 60 else if (obj.value.match(/^reject|ereject$/)) { 61 enabled.target_area = 1; 74 62 } 75 else if (obj.value == 'vacation') 76 { 77 document.getElementById('action_vacation' + id).style.display = 'inline'; 78 document.getElementById('action_target_area' + id).style.display = 'none'; 79 document.getElementById('action_target' + id).style.display = 'none'; 80 document.getElementById('action_mailbox' + id).style.display = 'none'; 63 else if (obj.value.match(/^(add|set|remove)flag$/)) { 64 enabled.flags = 1; 81 65 } 82 else // discard, keep, stop83 { 84 document.getElementById('action_target_area' + id).style.display = 'none'; 85 document.getElementById('action_vacation' + id).style.display = 'none'; 86 document.getElementById('action_target' + id).style.display = 'none'; 87 document.getElementById('action_mailbox' + id).style.display = 'none';66 else if (obj.value == 'vacation') { 67 enabled.vacation = 1; 68 } 69 70 for (var x in elems) { 71 elems[x].style.display = !enabled[x] ? 'none' : 'inline'; 88 72 } 89 73 }
Note: See TracChangeset
for help on using the changeset viewer.
