From 31de4bc5ebf9556817554ae9630ca06e92fd7218 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Thu, 12 Sep 2013 11:35:26 +0200 Subject: Updates / Plugins --- plugins/archive/localization/nb_NB.inc | 21 + plugins/compose_addressbook/compose_addressbook.js | 224 ++ .../compose_addressbook/compose_addressbook.php | 180 ++ plugins/compose_addressbook/config.inc.php.dist | 21 + plugins/compose_addressbook/localization/de_DE.inc | 11 + plugins/compose_addressbook/localization/en_GB.inc | 10 + plugins/compose_addressbook/localization/en_US.inc | 10 + plugins/compose_addressbook/localization/es_ES.inc | 10 + plugins/compose_addressbook/localization/fr_FR.inc | 10 + plugins/compose_addressbook/localization/it_IT.inc | 10 + plugins/compose_addressbook/localization/nl_NL.inc | 10 + plugins/compose_addressbook/localization/pl_PL.inc | 10 + plugins/compose_addressbook/localization/sv_SE.inc | 10 + plugins/compose_addressbook/localization/zh_TW.inc | 10 + plugins/compose_addressbook/package.xml | 18 + .../skins/classic/compose_addressbook.css | 83 + .../skins/classic/compose_addressbook.png | Bin 0 -> 4142 bytes .../skins/classic/searchfield.gif | Bin 0 -> 397 bytes .../smoothness/images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../smoothness/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../smoothness/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../smoothness/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../smoothness/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../smoothness/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../classic/smoothness/jquery-ui-1.8.2.custom.css | 345 +++ plugins/contextmenu/contextmenu.js | 595 +++++ plugins/contextmenu/contextmenu.php | 315 +++ plugins/contextmenu/jquery.contextMenu.js | 21 + plugins/contextmenu/jquery.mousewheel.js | 1 + plugins/contextmenu/localization/ca_ES.inc | 12 + plugins/contextmenu/localization/cs_CZ.inc | 12 + plugins/contextmenu/localization/da_DK.inc | 12 + plugins/contextmenu/localization/de_CH.inc | 12 + plugins/contextmenu/localization/de_DE.inc | 12 + plugins/contextmenu/localization/en_GB.inc | 12 + plugins/contextmenu/localization/en_US.inc | 12 + plugins/contextmenu/localization/es_ES.inc | 12 + plugins/contextmenu/localization/fr_FR.inc | 12 + plugins/contextmenu/localization/gl_ES.inc | 12 + plugins/contextmenu/localization/hu_HU.inc | 12 + plugins/contextmenu/localization/it_IT.inc | 12 + plugins/contextmenu/localization/nl_NL.inc | 12 + plugins/contextmenu/localization/pl_PL.inc | 12 + plugins/contextmenu/localization/pt_BR.inc | 12 + plugins/contextmenu/localization/ro_RO.inc | 12 + plugins/contextmenu/localization/ru_RU.inc | 12 + plugins/contextmenu/localization/sv_SE.inc | 12 + plugins/contextmenu/localization/tr_TR.inc | 12 + plugins/contextmenu/localization/uk_UA.inc | 12 + plugins/contextmenu/localization/zh_TW.inc | 12 + plugins/contextmenu/package.xml | 90 + plugins/contextmenu/skins/classic/contexticons.gif | Bin 0 -> 2238 bytes plugins/contextmenu/skins/classic/contexticons.png | Bin 0 -> 4261 bytes plugins/contextmenu/skins/classic/contextmenu.css | 357 +++ plugins/contextmenu/skins/classic/folders.gif | Bin 0 -> 2430 bytes plugins/contextmenu/skins/classic/folders.png | Bin 0 -> 4771 bytes plugins/contextmenu/skins/classic/ie6hacks.css | 54 + .../contextmenu/skins/classic/messageactions.gif | Bin 0 -> 1567 bytes .../contextmenu/skins/classic/messageactions.png | Bin 0 -> 2578 bytes plugins/contextmenu/skins/larry/contexticons.png | Bin 0 -> 5728 bytes plugins/contextmenu/skins/larry/contextmenu.css | 425 ++++ plugins/contextmenu/skins/larry/folders.png | Bin 0 -> 3901 bytes plugins/contextmenu/skins/larry/ie6hacks.css | 3 + plugins/contextmenu/skins/larry/messageactions.png | Bin 0 -> 1698 bytes plugins/copymessage/copymessage.js | 40 + plugins/copymessage/copymessage.php | 114 + plugins/copymessage/localization/ca_ES.inc | 9 + plugins/copymessage/localization/cs_CZ.inc | 9 + plugins/copymessage/localization/da_DK.inc | 9 + plugins/copymessage/localization/de_CH.inc | 9 + plugins/copymessage/localization/de_DE.inc | 9 + plugins/copymessage/localization/en_GB.inc | 9 + plugins/copymessage/localization/en_US.inc | 9 + plugins/copymessage/localization/es_ES.inc | 9 + plugins/copymessage/localization/fr_FR.inc | 9 + plugins/copymessage/localization/gl_ES.inc | 9 + plugins/copymessage/localization/hu_HU.inc | 9 + plugins/copymessage/localization/it_IT.inc | 9 + plugins/copymessage/localization/nl_NL.inc | 9 + plugins/copymessage/localization/pl_PL.inc | 9 + plugins/copymessage/localization/pt_BR.inc | 9 + plugins/copymessage/localization/ro_RO.inc | 9 + plugins/copymessage/localization/ru_RU.inc | 9 + plugins/copymessage/localization/sv_SE.inc | 9 + plugins/copymessage/localization/tr_TR.inc | 9 + plugins/copymessage/package.xml | 78 + plugins/dkimstatus/dkimstatus.php | 155 ++ plugins/dkimstatus/images/authorsign.png | Bin 0 -> 699 bytes plugins/dkimstatus/images/invalidsig.png | Bin 0 -> 618 bytes plugins/dkimstatus/images/nosiginfo.png | Bin 0 -> 707 bytes plugins/dkimstatus/images/thirdpty.png | Bin 0 -> 722 bytes plugins/dkimstatus/localization/cs_CZ.inc | 16 + plugins/dkimstatus/localization/de_DE.inc | 8 + plugins/dkimstatus/localization/en_US.inc | 9 + plugins/dkimstatus/localization/es_ES.inc | 9 + plugins/dkimstatus/localization/fr_FR.inc | 10 + plugins/dkimstatus/localization/it_IT.inc | 7 + plugins/dkimstatus/localization/ja_JP.inc | 9 + plugins/dkimstatus/localization/pl_PL.inc | 9 + plugins/dkimstatus/localization/ro_RO.inc | 9 + plugins/dovecot_impersonate/config.inc.php.dist | 10 + .../dovecot_impersonate/dovecot_impersonate.php | 52 + plugins/dovecot_impersonate/package.xml | 18 + plugins/enigma/home/aldric/pubring.gpg | 0 plugins/enigma/home/aldric/secring.gpg | 0 plugins/enigma/home/aldric/trustdb.gpg | Bin 0 -> 40 bytes plugins/enigma/home/hugues/pubring.gpg | Bin 0 -> 133165 bytes plugins/enigma/home/hugues/secring.gpg | Bin 0 -> 1350 bytes plugins/enigma/home/hugues/trustdb.gpg | Bin 0 -> 1200 bytes plugins/fail2ban/fail2ban.php | 33 + plugins/jqueryui/css | 1 + plugins/jqueryui/js/jquery-ui.min.js | 1 + plugins/keyboard_shortcuts/keyboard_shortcuts.css | 23 + plugins/keyboard_shortcuts/keyboard_shortcuts.js | 139 ++ plugins/keyboard_shortcuts/keyboard_shortcuts.php | 130 ++ plugins/keyboard_shortcuts/localization/cs_CZ.inc | 24 + plugins/keyboard_shortcuts/localization/de_DE.inc | 10 + plugins/keyboard_shortcuts/localization/en_US.inc | 11 + plugins/keyboard_shortcuts/localization/fr_FR.inc | 11 + plugins/keyboard_shortcuts/localization/nl_NL.inc | 11 + plugins/keyboard_shortcuts/localization/pl_PL.inc | 11 + plugins/keyboard_shortcuts/localization/ru_RU.inc | 11 + plugins/keyboard_shortcuts/localization/sv_SE.inc | 10 + plugins/keyboard_shortcuts/localization/zh_TW.inc | 11 + plugins/keyboard_shortcuts/package.xml | 18 + .../skins/classic/images/keyboard.png | Bin 0 -> 4157 bytes .../skins/larry/images/keyboard.png | Bin 0 -> 4157 bytes plugins/listcommands/listcommands.php | 106 + plugins/listcommands/localization/en_US.inc | 12 + plugins/listcommands/localization/es_ES.inc | 12 + plugins/listcommands/localization/fr_FR.inc | 13 + plugins/listcommands/localization/nl_NL.inc | 12 + plugins/listcommands/localization/pl_PL.inc | 12 + plugins/listcommands/localization/ru_RU.inc | 12 + plugins/listcommands/package.xml | 18 + plugins/markasjunk2/config.inc.php.dist | 152 ++ plugins/markasjunk2/drivers/cmd_learn.php | 74 + plugins/markasjunk2/drivers/dir_learn.php | 49 + plugins/markasjunk2/drivers/edit_headers.php | 53 + plugins/markasjunk2/drivers/email_learn.php | 191 ++ plugins/markasjunk2/drivers/sa_blacklist.php | 103 + plugins/markasjunk2/drivers/sa_detach.php | 47 + plugins/markasjunk2/localization/ca_ES.inc | 14 + plugins/markasjunk2/localization/cs_CZ.inc | 14 + plugins/markasjunk2/localization/de_CH.inc | 15 + plugins/markasjunk2/localization/de_DE.inc | 15 + plugins/markasjunk2/localization/en_GB.inc | 15 + plugins/markasjunk2/localization/en_US.inc | 15 + plugins/markasjunk2/localization/es_AR.inc | 14 + plugins/markasjunk2/localization/es_ES.inc | 14 + plugins/markasjunk2/localization/fa_IR.inc | 14 + plugins/markasjunk2/localization/fr_FR.inc | 14 + plugins/markasjunk2/localization/gl_ES.inc | 14 + plugins/markasjunk2/localization/hu_HU.inc | 14 + plugins/markasjunk2/localization/it_IT.inc | 15 + plugins/markasjunk2/localization/lv_LV.inc | 15 + plugins/markasjunk2/localization/nl_NL.inc | 14 + plugins/markasjunk2/localization/pl_PL.inc | 15 + plugins/markasjunk2/localization/pt_BR.inc | 14 + plugins/markasjunk2/localization/ro_RO.inc | 14 + plugins/markasjunk2/localization/ru_RU.inc | 15 + plugins/markasjunk2/localization/tr_TR.inc | 14 + plugins/markasjunk2/localization/zh_TW.inc | 14 + plugins/markasjunk2/markasjunk2.js | 199 ++ plugins/markasjunk2/markasjunk2.php | 211 ++ plugins/markasjunk2/package.xml | 92 + plugins/markasjunk2/skins/classic/ie6hacks.css | 19 + plugins/markasjunk2/skins/classic/mail_toolbar.gif | Bin 0 -> 3434 bytes plugins/markasjunk2/skins/classic/mail_toolbar.png | Bin 0 -> 7565 bytes plugins/markasjunk2/skins/classic/markasjunk2.css | 52 + .../markasjunk2/skins/classic/messageactions.gif | Bin 0 -> 1307 bytes .../markasjunk2/skins/classic/messageactions.png | Bin 0 -> 1798 bytes plugins/markasjunk2/skins/larry/ie6hacks.css | 3 + plugins/markasjunk2/skins/larry/mail_toolbar.png | Bin 0 -> 1924 bytes plugins/markasjunk2/skins/larry/markasjunk2.css | 51 + plugins/markasjunk2/skins/larry/messageactions.png | Bin 0 -> 1050 bytes .../message_highlight/colorpicker/images/color.png | Bin 0 -> 892 bytes .../colorpicker/images/colorpicker.png | Bin 0 -> 4739 bytes .../colorpicker/images/graybar.jpg | Bin 0 -> 5225 bytes .../message_highlight/colorpicker/images/grid.gif | Bin 0 -> 87 bytes .../colorpicker/images/meta100.png | Bin 0 -> 828 bytes .../colorpicker/images/transparentpixel.gif | Bin 0 -> 43 bytes .../message_highlight/colorpicker/mColorPicker.js | 564 +++++ plugins/message_highlight/localization/de_DE.inc | 15 + plugins/message_highlight/localization/en_US.inc | 16 + plugins/message_highlight/localization/fr_FR.inc | 16 + plugins/message_highlight/localization/nl_NL.inc | 15 + plugins/message_highlight/localization/ru_RU.inc | 14 + plugins/message_highlight/message_highlight.css | 74 + plugins/message_highlight/message_highlight.js | 58 + plugins/message_highlight/message_highlight.php | 176 ++ plugins/message_highlight/package.xml | 18 + plugins/quickrules/localization/cs_CZ.inc | 9 + plugins/quickrules/localization/de_CH.inc | 10 + plugins/quickrules/localization/de_DE.inc | 10 + plugins/quickrules/localization/en_GB.inc | 10 + plugins/quickrules/localization/en_US.inc | 10 + plugins/quickrules/localization/hu_HU.inc | 9 + plugins/quickrules/localization/it_IT.inc | 10 + plugins/quickrules/localization/pl_PL.inc | 9 + plugins/quickrules/localization/pt_BR.inc | 9 + plugins/quickrules/localization/pt_PT.inc | 9 + plugins/quickrules/package.xml | 79 + plugins/quickrules/quickrules.js | 169 ++ plugins/quickrules/quickrules.php | 137 ++ plugins/quickrules/skins/classic/ie6hacks.css | 14 + plugins/quickrules/skins/classic/mail_toolbar.gif | Bin 0 -> 1722 bytes plugins/quickrules/skins/classic/mail_toolbar.png | Bin 0 -> 3310 bytes .../quickrules/skins/classic/messageactions.gif | Bin 0 -> 571 bytes .../quickrules/skins/classic/messageactions.png | Bin 0 -> 842 bytes plugins/quickrules/skins/classic/quickrules.css | 26 + plugins/quickrules/skins/larry/ie6hacks.css | 3 + plugins/quickrules/skins/larry/mail_toolbar.png | Bin 0 -> 1350 bytes plugins/quickrules/skins/larry/messageactions.png | Bin 0 -> 672 bytes plugins/quickrules/skins/larry/quickrules.css | 21 + plugins/sauserprefs/config.inc.php.dist | 160 ++ .../include/rcube_sauserprefs_storage.php | 268 +++ plugins/sauserprefs/localization/cs_CZ.inc | 86 + plugins/sauserprefs/localization/de_CH.inc | 86 + plugins/sauserprefs/localization/de_DE.inc | 86 + plugins/sauserprefs/localization/en_GB.inc | 86 + plugins/sauserprefs/localization/en_US.inc | 86 + plugins/sauserprefs/localization/es_ES.inc | 85 + plugins/sauserprefs/localization/fr_FR.inc | 86 + plugins/sauserprefs/localization/gl_ES.inc | 85 + plugins/sauserprefs/localization/hu_HU.inc | 61 + plugins/sauserprefs/localization/it_IT.inc | 86 + plugins/sauserprefs/localization/pl_PL.inc | 86 + plugins/sauserprefs/localization/pt_BR.inc | 85 + plugins/sauserprefs/localization/ro_RO.inc | 85 + plugins/sauserprefs/localization/ru_RU.inc | 87 + plugins/sauserprefs/localization/sk_SK.inc | 86 + plugins/sauserprefs/localization/sv_SE.inc | 84 + plugins/sauserprefs/package.xml | 91 + plugins/sauserprefs/sauserprefs.js | 459 ++++ plugins/sauserprefs/sauserprefs.php | 909 ++++++++ plugins/sauserprefs/skins/classic/help.gif | Bin 0 -> 1024 bytes plugins/sauserprefs/skins/classic/icons.gif | Bin 0 -> 1345 bytes plugins/sauserprefs/skins/classic/icons.png | Bin 0 -> 2045 bytes plugins/sauserprefs/skins/classic/ie6hacks.css | 9 + plugins/sauserprefs/skins/classic/iehacks.css | 9 + plugins/sauserprefs/skins/classic/safari.css | 6 + plugins/sauserprefs/skins/classic/sauserprefs.css | 185 ++ plugins/sauserprefs/skins/classic/tabstyles.css | 3 + .../skins/classic/templates/sauserprefs.html | 47 + .../skins/classic/templates/settingsedit.html | 33 + plugins/sauserprefs/skins/larry/help.png | Bin 0 -> 475 bytes plugins/sauserprefs/skins/larry/icons.png | Bin 0 -> 962 bytes plugins/sauserprefs/skins/larry/iehacks.css | 9 + plugins/sauserprefs/skins/larry/listicons.png | Bin 0 -> 4891 bytes plugins/sauserprefs/skins/larry/safari.css | 6 + plugins/sauserprefs/skins/larry/sauserprefs.css | 253 +++ plugins/sauserprefs/skins/larry/tabstyles.css | 15 + .../skins/larry/templates/sauserprefs.html | 54 + .../skins/larry/templates/settingsedit.html | 30 + plugins/sieverules/config.inc.php.dist | 147 ++ plugins/sieverules/importFilters/avelsieve.php | 54 + plugins/sieverules/importFilters/ingo.php | 52 + plugins/sieverules/include/rcube_sieve.php | 249 +++ plugins/sieverules/include/rcube_sieve_script.php | 969 ++++++++ plugins/sieverules/jquery.maskedinput.js | 7 + plugins/sieverules/lib/Net/Sieve.php | 1 + plugins/sieverules/localization/ca_ES.inc | 168 ++ plugins/sieverules/localization/cs_CZ.inc | 195 ++ plugins/sieverules/localization/de_CH.inc | 192 ++ plugins/sieverules/localization/de_DE.inc | 192 ++ plugins/sieverules/localization/en_GB.inc | 205 ++ plugins/sieverules/localization/en_US.inc | 205 ++ plugins/sieverules/localization/es_AR.inc | 140 ++ plugins/sieverules/localization/es_ES.inc | 185 ++ plugins/sieverules/localization/et_EE.inc | 79 + plugins/sieverules/localization/fi_FI.inc | 186 ++ plugins/sieverules/localization/fr_FR.inc | 185 ++ plugins/sieverules/localization/hu_HU.inc | 171 ++ plugins/sieverules/localization/it_IT.inc | 202 ++ plugins/sieverules/localization/nl_NL.inc | 205 ++ plugins/sieverules/localization/pl_PL.inc | 205 ++ plugins/sieverules/localization/pt_BR.inc | 183 ++ plugins/sieverules/localization/pt_PT.inc | 183 ++ plugins/sieverules/localization/ro_RO.inc | 175 ++ plugins/sieverules/localization/ru_RU.inc | 182 ++ plugins/sieverules/localization/sk_SK.inc | 159 ++ plugins/sieverules/localization/sl_SI.inc | 185 ++ plugins/sieverules/localization/sv_SE.inc | 159 ++ plugins/sieverules/localization/zh_TW.inc | 192 ++ plugins/sieverules/package.xml | 116 + plugins/sieverules/sieverules.js | 1480 +++++++++++++ plugins/sieverules/sieverules.php | 2331 ++++++++++++++++++++ plugins/sieverules/skins/classic/cross.gif | Bin 0 -> 577 bytes plugins/sieverules/skins/classic/help.gif | Bin 0 -> 1024 bytes plugins/sieverules/skins/classic/icons.gif | Bin 0 -> 2017 bytes plugins/sieverules/skins/classic/icons.png | Bin 0 -> 2748 bytes plugins/sieverules/skins/classic/ie6hacks.css | 10 + plugins/sieverules/skins/classic/iehacks.css | 53 + plugins/sieverules/skins/classic/safari.css | 8 + plugins/sieverules/skins/classic/sieverules.css | 406 ++++ plugins/sieverules/skins/classic/tabstyles.css | 3 + .../skins/classic/templates/advancededitor.html | 55 + .../skins/classic/templates/editsieverule.html | 29 + .../skins/classic/templates/setupsieverules.html | 18 + .../skins/classic/templates/sieverules.html | 93 + plugins/sieverules/skins/classic/tick.gif | Bin 0 -> 545 bytes plugins/sieverules/skins/larry/cross.png | Bin 0 -> 342 bytes plugins/sieverules/skins/larry/help.png | Bin 0 -> 475 bytes plugins/sieverules/skins/larry/icons.png | Bin 0 -> 1773 bytes plugins/sieverules/skins/larry/iehacks.css | 53 + plugins/sieverules/skins/larry/listicons.png | Bin 0 -> 1345 bytes plugins/sieverules/skins/larry/safari.css | 8 + plugins/sieverules/skins/larry/sieverules.css | 435 ++++ plugins/sieverules/skins/larry/tabstyles.css | 15 + .../skins/larry/templates/advancededitor.html | 60 + .../skins/larry/templates/editsieverule.html | 30 + .../skins/larry/templates/setupsieverules.html | 27 + .../skins/larry/templates/sieverules.html | 78 + plugins/sieverules/skins/larry/tick.png | Bin 0 -> 284 bytes plugins/thunderbird_labels/localization/bg_BG.inc | 17 + plugins/thunderbird_labels/localization/ca_ES.inc | 17 + plugins/thunderbird_labels/localization/cs_CZ.inc | 18 + plugins/thunderbird_labels/localization/de_DE.inc | 18 + plugins/thunderbird_labels/localization/en_US.inc | 18 + plugins/thunderbird_labels/localization/fr_FR.inc | 17 + plugins/thunderbird_labels/localization/hu_HU.inc | 18 + plugins/thunderbird_labels/localization/lv_LV.inc | 17 + plugins/thunderbird_labels/localization/pl_PL.inc | 18 + plugins/thunderbird_labels/localization/ru_RU.inc | 18 + .../thunderbird_labels/skins/classic/tb_label.css | 183 ++ .../skins/classic/thunderbird_32.png | Bin 0 -> 3232 bytes .../thunderbird_labels/skins/default/tb_label.css | 183 ++ .../skins/default/thunderbird_32.png | Bin 0 -> 3232 bytes .../thunderbird_labels/skins/larry/tb_label.css | 170 ++ .../skins/larry/thunderbird_32.png | Bin 0 -> 2662 bytes plugins/thunderbird_labels/tb_label.js | 369 ++++ plugins/thunderbird_labels/thunderbird_labels.php | 210 ++ 341 files changed, 23693 insertions(+) create mode 100644 plugins/archive/localization/nb_NB.inc create mode 100644 plugins/compose_addressbook/compose_addressbook.js create mode 100644 plugins/compose_addressbook/compose_addressbook.php create mode 100644 plugins/compose_addressbook/config.inc.php.dist create mode 100644 plugins/compose_addressbook/localization/de_DE.inc create mode 100644 plugins/compose_addressbook/localization/en_GB.inc create mode 100644 plugins/compose_addressbook/localization/en_US.inc create mode 100644 plugins/compose_addressbook/localization/es_ES.inc create mode 100644 plugins/compose_addressbook/localization/fr_FR.inc create mode 100644 plugins/compose_addressbook/localization/it_IT.inc create mode 100644 plugins/compose_addressbook/localization/nl_NL.inc create mode 100644 plugins/compose_addressbook/localization/pl_PL.inc create mode 100644 plugins/compose_addressbook/localization/sv_SE.inc create mode 100644 plugins/compose_addressbook/localization/zh_TW.inc create mode 100644 plugins/compose_addressbook/package.xml create mode 100644 plugins/compose_addressbook/skins/classic/compose_addressbook.css create mode 100644 plugins/compose_addressbook/skins/classic/compose_addressbook.png create mode 100644 plugins/compose_addressbook/skins/classic/searchfield.gif create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-anim_basic_16x16.gif create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_222222_256x240.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_454545_256x240.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_888888_256x240.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 plugins/compose_addressbook/skins/classic/smoothness/jquery-ui-1.8.2.custom.css create mode 100644 plugins/contextmenu/contextmenu.js create mode 100644 plugins/contextmenu/contextmenu.php create mode 100644 plugins/contextmenu/jquery.contextMenu.js create mode 120000 plugins/contextmenu/jquery.mousewheel.js create mode 100644 plugins/contextmenu/localization/ca_ES.inc create mode 100644 plugins/contextmenu/localization/cs_CZ.inc create mode 100644 plugins/contextmenu/localization/da_DK.inc create mode 100644 plugins/contextmenu/localization/de_CH.inc create mode 100644 plugins/contextmenu/localization/de_DE.inc create mode 100644 plugins/contextmenu/localization/en_GB.inc create mode 100644 plugins/contextmenu/localization/en_US.inc create mode 100644 plugins/contextmenu/localization/es_ES.inc create mode 100644 plugins/contextmenu/localization/fr_FR.inc create mode 100644 plugins/contextmenu/localization/gl_ES.inc create mode 100644 plugins/contextmenu/localization/hu_HU.inc create mode 100644 plugins/contextmenu/localization/it_IT.inc create mode 100644 plugins/contextmenu/localization/nl_NL.inc create mode 100644 plugins/contextmenu/localization/pl_PL.inc create mode 100644 plugins/contextmenu/localization/pt_BR.inc create mode 100644 plugins/contextmenu/localization/ro_RO.inc create mode 100644 plugins/contextmenu/localization/ru_RU.inc create mode 100644 plugins/contextmenu/localization/sv_SE.inc create mode 100644 plugins/contextmenu/localization/tr_TR.inc create mode 100644 plugins/contextmenu/localization/uk_UA.inc create mode 100644 plugins/contextmenu/localization/zh_TW.inc create mode 100644 plugins/contextmenu/package.xml create mode 100644 plugins/contextmenu/skins/classic/contexticons.gif create mode 100644 plugins/contextmenu/skins/classic/contexticons.png create mode 100644 plugins/contextmenu/skins/classic/contextmenu.css create mode 100644 plugins/contextmenu/skins/classic/folders.gif create mode 100644 plugins/contextmenu/skins/classic/folders.png create mode 100644 plugins/contextmenu/skins/classic/ie6hacks.css create mode 100644 plugins/contextmenu/skins/classic/messageactions.gif create mode 100644 plugins/contextmenu/skins/classic/messageactions.png create mode 100644 plugins/contextmenu/skins/larry/contexticons.png create mode 100644 plugins/contextmenu/skins/larry/contextmenu.css create mode 100644 plugins/contextmenu/skins/larry/folders.png create mode 100644 plugins/contextmenu/skins/larry/ie6hacks.css create mode 100644 plugins/contextmenu/skins/larry/messageactions.png create mode 100644 plugins/copymessage/copymessage.js create mode 100644 plugins/copymessage/copymessage.php create mode 100644 plugins/copymessage/localization/ca_ES.inc create mode 100644 plugins/copymessage/localization/cs_CZ.inc create mode 100644 plugins/copymessage/localization/da_DK.inc create mode 100644 plugins/copymessage/localization/de_CH.inc create mode 100644 plugins/copymessage/localization/de_DE.inc create mode 100644 plugins/copymessage/localization/en_GB.inc create mode 100644 plugins/copymessage/localization/en_US.inc create mode 100644 plugins/copymessage/localization/es_ES.inc create mode 100644 plugins/copymessage/localization/fr_FR.inc create mode 100644 plugins/copymessage/localization/gl_ES.inc create mode 100644 plugins/copymessage/localization/hu_HU.inc create mode 100644 plugins/copymessage/localization/it_IT.inc create mode 100644 plugins/copymessage/localization/nl_NL.inc create mode 100644 plugins/copymessage/localization/pl_PL.inc create mode 100644 plugins/copymessage/localization/pt_BR.inc create mode 100644 plugins/copymessage/localization/ro_RO.inc create mode 100644 plugins/copymessage/localization/ru_RU.inc create mode 100644 plugins/copymessage/localization/sv_SE.inc create mode 100644 plugins/copymessage/localization/tr_TR.inc create mode 100644 plugins/copymessage/package.xml create mode 100644 plugins/dkimstatus/dkimstatus.php create mode 100644 plugins/dkimstatus/images/authorsign.png create mode 100644 plugins/dkimstatus/images/invalidsig.png create mode 100644 plugins/dkimstatus/images/nosiginfo.png create mode 100644 plugins/dkimstatus/images/thirdpty.png create mode 100644 plugins/dkimstatus/localization/cs_CZ.inc create mode 100644 plugins/dkimstatus/localization/de_DE.inc create mode 100644 plugins/dkimstatus/localization/en_US.inc create mode 100644 plugins/dkimstatus/localization/es_ES.inc create mode 100644 plugins/dkimstatus/localization/fr_FR.inc create mode 100644 plugins/dkimstatus/localization/it_IT.inc create mode 100644 plugins/dkimstatus/localization/ja_JP.inc create mode 100644 plugins/dkimstatus/localization/pl_PL.inc create mode 100644 plugins/dkimstatus/localization/ro_RO.inc create mode 100644 plugins/dovecot_impersonate/config.inc.php.dist create mode 100644 plugins/dovecot_impersonate/dovecot_impersonate.php create mode 100644 plugins/dovecot_impersonate/package.xml create mode 100644 plugins/enigma/home/aldric/pubring.gpg create mode 100644 plugins/enigma/home/aldric/secring.gpg create mode 100644 plugins/enigma/home/aldric/trustdb.gpg create mode 100644 plugins/enigma/home/hugues/pubring.gpg create mode 100644 plugins/enigma/home/hugues/secring.gpg create mode 100644 plugins/enigma/home/hugues/trustdb.gpg create mode 100644 plugins/fail2ban/fail2ban.php create mode 120000 plugins/jqueryui/css create mode 120000 plugins/jqueryui/js/jquery-ui.min.js create mode 100644 plugins/keyboard_shortcuts/keyboard_shortcuts.css create mode 100644 plugins/keyboard_shortcuts/keyboard_shortcuts.js create mode 100644 plugins/keyboard_shortcuts/keyboard_shortcuts.php create mode 100644 plugins/keyboard_shortcuts/localization/cs_CZ.inc create mode 100644 plugins/keyboard_shortcuts/localization/de_DE.inc create mode 100644 plugins/keyboard_shortcuts/localization/en_US.inc create mode 100644 plugins/keyboard_shortcuts/localization/fr_FR.inc create mode 100644 plugins/keyboard_shortcuts/localization/nl_NL.inc create mode 100644 plugins/keyboard_shortcuts/localization/pl_PL.inc create mode 100644 plugins/keyboard_shortcuts/localization/ru_RU.inc create mode 100644 plugins/keyboard_shortcuts/localization/sv_SE.inc create mode 100644 plugins/keyboard_shortcuts/localization/zh_TW.inc create mode 100644 plugins/keyboard_shortcuts/package.xml create mode 100644 plugins/keyboard_shortcuts/skins/classic/images/keyboard.png create mode 100644 plugins/keyboard_shortcuts/skins/larry/images/keyboard.png create mode 100644 plugins/listcommands/listcommands.php create mode 100644 plugins/listcommands/localization/en_US.inc create mode 100644 plugins/listcommands/localization/es_ES.inc create mode 100644 plugins/listcommands/localization/fr_FR.inc create mode 100644 plugins/listcommands/localization/nl_NL.inc create mode 100644 plugins/listcommands/localization/pl_PL.inc create mode 100644 plugins/listcommands/localization/ru_RU.inc create mode 100644 plugins/listcommands/package.xml create mode 100644 plugins/markasjunk2/config.inc.php.dist create mode 100644 plugins/markasjunk2/drivers/cmd_learn.php create mode 100644 plugins/markasjunk2/drivers/dir_learn.php create mode 100644 plugins/markasjunk2/drivers/edit_headers.php create mode 100644 plugins/markasjunk2/drivers/email_learn.php create mode 100644 plugins/markasjunk2/drivers/sa_blacklist.php create mode 100644 plugins/markasjunk2/drivers/sa_detach.php create mode 100644 plugins/markasjunk2/localization/ca_ES.inc create mode 100644 plugins/markasjunk2/localization/cs_CZ.inc create mode 100644 plugins/markasjunk2/localization/de_CH.inc create mode 100644 plugins/markasjunk2/localization/de_DE.inc create mode 100644 plugins/markasjunk2/localization/en_GB.inc create mode 100644 plugins/markasjunk2/localization/en_US.inc create mode 100644 plugins/markasjunk2/localization/es_AR.inc create mode 100644 plugins/markasjunk2/localization/es_ES.inc create mode 100644 plugins/markasjunk2/localization/fa_IR.inc create mode 100644 plugins/markasjunk2/localization/fr_FR.inc create mode 100644 plugins/markasjunk2/localization/gl_ES.inc create mode 100644 plugins/markasjunk2/localization/hu_HU.inc create mode 100644 plugins/markasjunk2/localization/it_IT.inc create mode 100644 plugins/markasjunk2/localization/lv_LV.inc create mode 100644 plugins/markasjunk2/localization/nl_NL.inc create mode 100644 plugins/markasjunk2/localization/pl_PL.inc create mode 100644 plugins/markasjunk2/localization/pt_BR.inc create mode 100644 plugins/markasjunk2/localization/ro_RO.inc create mode 100644 plugins/markasjunk2/localization/ru_RU.inc create mode 100644 plugins/markasjunk2/localization/tr_TR.inc create mode 100644 plugins/markasjunk2/localization/zh_TW.inc create mode 100644 plugins/markasjunk2/markasjunk2.js create mode 100644 plugins/markasjunk2/markasjunk2.php create mode 100644 plugins/markasjunk2/package.xml create mode 100644 plugins/markasjunk2/skins/classic/ie6hacks.css create mode 100644 plugins/markasjunk2/skins/classic/mail_toolbar.gif create mode 100644 plugins/markasjunk2/skins/classic/mail_toolbar.png create mode 100644 plugins/markasjunk2/skins/classic/markasjunk2.css create mode 100644 plugins/markasjunk2/skins/classic/messageactions.gif create mode 100644 plugins/markasjunk2/skins/classic/messageactions.png create mode 100644 plugins/markasjunk2/skins/larry/ie6hacks.css create mode 100644 plugins/markasjunk2/skins/larry/mail_toolbar.png create mode 100644 plugins/markasjunk2/skins/larry/markasjunk2.css create mode 100644 plugins/markasjunk2/skins/larry/messageactions.png create mode 100644 plugins/message_highlight/colorpicker/images/color.png create mode 100644 plugins/message_highlight/colorpicker/images/colorpicker.png create mode 100644 plugins/message_highlight/colorpicker/images/graybar.jpg create mode 100644 plugins/message_highlight/colorpicker/images/grid.gif create mode 100644 plugins/message_highlight/colorpicker/images/meta100.png create mode 100644 plugins/message_highlight/colorpicker/images/transparentpixel.gif create mode 100644 plugins/message_highlight/colorpicker/mColorPicker.js create mode 100644 plugins/message_highlight/localization/de_DE.inc create mode 100644 plugins/message_highlight/localization/en_US.inc create mode 100644 plugins/message_highlight/localization/fr_FR.inc create mode 100644 plugins/message_highlight/localization/nl_NL.inc create mode 100644 plugins/message_highlight/localization/ru_RU.inc create mode 100644 plugins/message_highlight/message_highlight.css create mode 100644 plugins/message_highlight/message_highlight.js create mode 100644 plugins/message_highlight/message_highlight.php create mode 100644 plugins/message_highlight/package.xml create mode 100644 plugins/quickrules/localization/cs_CZ.inc create mode 100644 plugins/quickrules/localization/de_CH.inc create mode 100644 plugins/quickrules/localization/de_DE.inc create mode 100644 plugins/quickrules/localization/en_GB.inc create mode 100644 plugins/quickrules/localization/en_US.inc create mode 100644 plugins/quickrules/localization/hu_HU.inc create mode 100644 plugins/quickrules/localization/it_IT.inc create mode 100644 plugins/quickrules/localization/pl_PL.inc create mode 100644 plugins/quickrules/localization/pt_BR.inc create mode 100644 plugins/quickrules/localization/pt_PT.inc create mode 100644 plugins/quickrules/package.xml create mode 100644 plugins/quickrules/quickrules.js create mode 100644 plugins/quickrules/quickrules.php create mode 100644 plugins/quickrules/skins/classic/ie6hacks.css create mode 100644 plugins/quickrules/skins/classic/mail_toolbar.gif create mode 100644 plugins/quickrules/skins/classic/mail_toolbar.png create mode 100644 plugins/quickrules/skins/classic/messageactions.gif create mode 100644 plugins/quickrules/skins/classic/messageactions.png create mode 100644 plugins/quickrules/skins/classic/quickrules.css create mode 100644 plugins/quickrules/skins/larry/ie6hacks.css create mode 100644 plugins/quickrules/skins/larry/mail_toolbar.png create mode 100644 plugins/quickrules/skins/larry/messageactions.png create mode 100644 plugins/quickrules/skins/larry/quickrules.css create mode 100644 plugins/sauserprefs/config.inc.php.dist create mode 100644 plugins/sauserprefs/include/rcube_sauserprefs_storage.php create mode 100644 plugins/sauserprefs/localization/cs_CZ.inc create mode 100644 plugins/sauserprefs/localization/de_CH.inc create mode 100644 plugins/sauserprefs/localization/de_DE.inc create mode 100644 plugins/sauserprefs/localization/en_GB.inc create mode 100644 plugins/sauserprefs/localization/en_US.inc create mode 100644 plugins/sauserprefs/localization/es_ES.inc create mode 100644 plugins/sauserprefs/localization/fr_FR.inc create mode 100644 plugins/sauserprefs/localization/gl_ES.inc create mode 100644 plugins/sauserprefs/localization/hu_HU.inc create mode 100644 plugins/sauserprefs/localization/it_IT.inc create mode 100644 plugins/sauserprefs/localization/pl_PL.inc create mode 100644 plugins/sauserprefs/localization/pt_BR.inc create mode 100644 plugins/sauserprefs/localization/ro_RO.inc create mode 100644 plugins/sauserprefs/localization/ru_RU.inc create mode 100644 plugins/sauserprefs/localization/sk_SK.inc create mode 100644 plugins/sauserprefs/localization/sv_SE.inc create mode 100644 plugins/sauserprefs/package.xml create mode 100644 plugins/sauserprefs/sauserprefs.js create mode 100644 plugins/sauserprefs/sauserprefs.php create mode 100644 plugins/sauserprefs/skins/classic/help.gif create mode 100644 plugins/sauserprefs/skins/classic/icons.gif create mode 100644 plugins/sauserprefs/skins/classic/icons.png create mode 100644 plugins/sauserprefs/skins/classic/ie6hacks.css create mode 100644 plugins/sauserprefs/skins/classic/iehacks.css create mode 100644 plugins/sauserprefs/skins/classic/safari.css create mode 100644 plugins/sauserprefs/skins/classic/sauserprefs.css create mode 100644 plugins/sauserprefs/skins/classic/tabstyles.css create mode 100644 plugins/sauserprefs/skins/classic/templates/sauserprefs.html create mode 100644 plugins/sauserprefs/skins/classic/templates/settingsedit.html create mode 100644 plugins/sauserprefs/skins/larry/help.png create mode 100644 plugins/sauserprefs/skins/larry/icons.png create mode 100644 plugins/sauserprefs/skins/larry/iehacks.css create mode 100644 plugins/sauserprefs/skins/larry/listicons.png create mode 100644 plugins/sauserprefs/skins/larry/safari.css create mode 100644 plugins/sauserprefs/skins/larry/sauserprefs.css create mode 100644 plugins/sauserprefs/skins/larry/tabstyles.css create mode 100644 plugins/sauserprefs/skins/larry/templates/sauserprefs.html create mode 100644 plugins/sauserprefs/skins/larry/templates/settingsedit.html create mode 100644 plugins/sieverules/config.inc.php.dist create mode 100644 plugins/sieverules/importFilters/avelsieve.php create mode 100644 plugins/sieverules/importFilters/ingo.php create mode 100644 plugins/sieverules/include/rcube_sieve.php create mode 100644 plugins/sieverules/include/rcube_sieve_script.php create mode 100644 plugins/sieverules/jquery.maskedinput.js create mode 120000 plugins/sieverules/lib/Net/Sieve.php create mode 100644 plugins/sieverules/localization/ca_ES.inc create mode 100644 plugins/sieverules/localization/cs_CZ.inc create mode 100644 plugins/sieverules/localization/de_CH.inc create mode 100644 plugins/sieverules/localization/de_DE.inc create mode 100644 plugins/sieverules/localization/en_GB.inc create mode 100644 plugins/sieverules/localization/en_US.inc create mode 100644 plugins/sieverules/localization/es_AR.inc create mode 100644 plugins/sieverules/localization/es_ES.inc create mode 100644 plugins/sieverules/localization/et_EE.inc create mode 100644 plugins/sieverules/localization/fi_FI.inc create mode 100644 plugins/sieverules/localization/fr_FR.inc create mode 100644 plugins/sieverules/localization/hu_HU.inc create mode 100644 plugins/sieverules/localization/it_IT.inc create mode 100644 plugins/sieverules/localization/nl_NL.inc create mode 100644 plugins/sieverules/localization/pl_PL.inc create mode 100644 plugins/sieverules/localization/pt_BR.inc create mode 100644 plugins/sieverules/localization/pt_PT.inc create mode 100644 plugins/sieverules/localization/ro_RO.inc create mode 100644 plugins/sieverules/localization/ru_RU.inc create mode 100644 plugins/sieverules/localization/sk_SK.inc create mode 100644 plugins/sieverules/localization/sl_SI.inc create mode 100644 plugins/sieverules/localization/sv_SE.inc create mode 100644 plugins/sieverules/localization/zh_TW.inc create mode 100644 plugins/sieverules/package.xml create mode 100644 plugins/sieverules/sieverules.js create mode 100644 plugins/sieverules/sieverules.php create mode 100644 plugins/sieverules/skins/classic/cross.gif create mode 100644 plugins/sieverules/skins/classic/help.gif create mode 100644 plugins/sieverules/skins/classic/icons.gif create mode 100644 plugins/sieverules/skins/classic/icons.png create mode 100644 plugins/sieverules/skins/classic/ie6hacks.css create mode 100644 plugins/sieverules/skins/classic/iehacks.css create mode 100644 plugins/sieverules/skins/classic/safari.css create mode 100644 plugins/sieverules/skins/classic/sieverules.css create mode 100644 plugins/sieverules/skins/classic/tabstyles.css create mode 100644 plugins/sieverules/skins/classic/templates/advancededitor.html create mode 100644 plugins/sieverules/skins/classic/templates/editsieverule.html create mode 100644 plugins/sieverules/skins/classic/templates/setupsieverules.html create mode 100644 plugins/sieverules/skins/classic/templates/sieverules.html create mode 100644 plugins/sieverules/skins/classic/tick.gif create mode 100644 plugins/sieverules/skins/larry/cross.png create mode 100644 plugins/sieverules/skins/larry/help.png create mode 100644 plugins/sieverules/skins/larry/icons.png create mode 100644 plugins/sieverules/skins/larry/iehacks.css create mode 100644 plugins/sieverules/skins/larry/listicons.png create mode 100644 plugins/sieverules/skins/larry/safari.css create mode 100644 plugins/sieverules/skins/larry/sieverules.css create mode 100644 plugins/sieverules/skins/larry/tabstyles.css create mode 100644 plugins/sieverules/skins/larry/templates/advancededitor.html create mode 100644 plugins/sieverules/skins/larry/templates/editsieverule.html create mode 100644 plugins/sieverules/skins/larry/templates/setupsieverules.html create mode 100644 plugins/sieverules/skins/larry/templates/sieverules.html create mode 100644 plugins/sieverules/skins/larry/tick.png create mode 100644 plugins/thunderbird_labels/localization/bg_BG.inc create mode 100644 plugins/thunderbird_labels/localization/ca_ES.inc create mode 100644 plugins/thunderbird_labels/localization/cs_CZ.inc create mode 100644 plugins/thunderbird_labels/localization/de_DE.inc create mode 100644 plugins/thunderbird_labels/localization/en_US.inc create mode 100644 plugins/thunderbird_labels/localization/fr_FR.inc create mode 100644 plugins/thunderbird_labels/localization/hu_HU.inc create mode 100644 plugins/thunderbird_labels/localization/lv_LV.inc create mode 100644 plugins/thunderbird_labels/localization/pl_PL.inc create mode 100644 plugins/thunderbird_labels/localization/ru_RU.inc create mode 100644 plugins/thunderbird_labels/skins/classic/tb_label.css create mode 100644 plugins/thunderbird_labels/skins/classic/thunderbird_32.png create mode 100644 plugins/thunderbird_labels/skins/default/tb_label.css create mode 100644 plugins/thunderbird_labels/skins/default/thunderbird_32.png create mode 100644 plugins/thunderbird_labels/skins/larry/tb_label.css create mode 100644 plugins/thunderbird_labels/skins/larry/thunderbird_32.png create mode 100644 plugins/thunderbird_labels/tb_label.js create mode 100644 plugins/thunderbird_labels/thunderbird_labels.php (limited to 'plugins') diff --git a/plugins/archive/localization/nb_NB.inc b/plugins/archive/localization/nb_NB.inc new file mode 100644 index 000000000..46e49aba0 --- /dev/null +++ b/plugins/archive/localization/nb_NB.inc @@ -0,0 +1,21 @@ + | + +-----------------------------------------------------------------------+ +*/ + +$labels = array(); +$labels['buttontext'] = 'Arkiv'; +$labels['archivefolder'] = 'Arkiv'; +$labels['buttontitle'] = 'Arkiver meldingen'; +$labels['archived'] = 'Arkivert'; + diff --git a/plugins/compose_addressbook/compose_addressbook.js b/plugins/compose_addressbook/compose_addressbook.js new file mode 100644 index 000000000..de5d95276 --- /dev/null +++ b/plugins/compose_addressbook/compose_addressbook.js @@ -0,0 +1,224 @@ +var compose_addressbook_fetched = false; + +if(window.rcmail) { + rcmail.addEventListener('init', function(evt) { + + // mode of operation. configure this in config.php + var mode = rcmail.env.compose_addressbook_mode; + + // to be able to have translated buttons, we need to predefine the buttons array + var cab_to = rcmail.gettext('to'); + var cab_cc = rcmail.gettext('cc'); + var cab_bcc = rcmail.gettext('bcc'); + + var buttons = {}; + buttons[cab_bcc] = function() { + compose_addressbook_add_recipients('_bcc'); + $('.ui-dialog-buttonpane button').removeClass('ui-state-focus'); + } + buttons[cab_cc] = function() { + compose_addressbook_add_recipients('_cc'); + $('.ui-dialog-buttonpane button').removeClass('ui-state-focus'); + } + buttons[cab_to] = function() { + compose_addressbook_add_recipients('_to'); + $('.ui-dialog-buttonpane button').removeClass('ui-state-focus'); + } + + // bind the dialog functionality to the dialog div + $("#compose_addressbook_dialog").dialog({ + autoOpen: false, + modal: false, + resizable: false, + width: 285, + height: 500, + minHeight: 400, + buttons: buttons, + position: [$(window).width()-400,50] + }); + + // register the command associated with the toolbar button + rcmail.register_command('plugin.compose_addressbook', compose_addressbook_start , true); + + // add the command to the list of compose commands + rcmail.env.compose_commands.push('plugin.compose_addressbook'); + + // register the callback function + rcmail.addEventListener('plugin.compose_addressbook_receive', compose_addressbook_receive); + + // register the callback function for the group expander + rcmail.addEventListener('plugin.compose_addressbook_receive_expand', compose_addressbook_receive_expand); + + // create an rc list object + if(rcmail.gui_objects.compose_addressbook_list) { + rcmail.compose_addressbook_list = new rcube_list_widget(rcmail.gui_objects.compose_addressbook_list, {multiselect:true, draggable:false, keyboard:false}); + + // add a listener for double click + rcmail.compose_addressbook_list.addEventListener('dblclick', function(o){ compose_address_dblclick(o); }); + + // initialize the list + rcmail.compose_addressbook_list.init(); + } + + // each mode of operation has a different key handler + if(mode == 'full') { + // bind keyevent handler to the search box + $('#compose_addressbook_filter').bind('keyup', function(evt) { + var search = $('#compose_addressbook_filter').val(); + var regexp = new RegExp(search, 'i'); + $('#compose_addressbook_table').find('td').each(function() { + var content = $(this).attr('title'); + if(regexp.test(content)) { + $(this).parent().show(); + } else { + $(this).parent().hide(); + } + }); + }); + } else { + $('#compose_addressbook_filter').bind((bw.safari || bw.ie ? 'keydown' : 'keypress'), function(evt) { + var key = rcube_event.get_keycode(evt); + if(key == 13) { + var search = $('#compose_addressbook_filter').val(); + $('#compose_addressbook_filter').val(''); + compose_addressbook_search(search); + return false; + } + }); + } + + // bind click event to clear function + $("#compose_addressbook_searchreset").bind('click', function(e) { + $('#compose_addressbook_filter').val(''); + $('#compose_addressbook_filter').focus(); + $('#compose_addressbook_table').find('tr').each(function() { + $(this).show(); + }); + }); + }); +} + +function compose_addressbook_start() +{ + compose_addressbook_fetch(); + $('#compose_addressbook_dialog').dialog('open'); +} + +function compose_addressbook_fetch() +{ + if(!compose_addressbook_fetched) { + lock = rcmail.set_busy(true, 'loading'); + rcmail.http_post('plugin.get_addressbook', '', lock); + compose_addressbook_fetched = true; + } +} + +function compose_addressbook_search(search) +{ + rcmail.compose_addressbook_list.clear(); + lock = rcmail.set_busy(true, 'loading'); + rcmail.http_post('plugin.get_addressbook', '_search='+urlencode(search), lock); +} + +function compose_addressbook_receive(data) +{ + var addresses = data.addresses; + var name; + var email; + + // save the addresses for later use + rcmail.compose_addressbook_addresses = addresses; + + for(var j=0; j 0) { + lock = rcmail.set_busy(true, 'loading'); + rcmail.http_request('plugin.expand_groups', '_groupids='+urlencode(group_ids.join(','))+'&_groupsources='+urlencode(group_sources.join(','))+'&_target='+target, lock); + } +} + +function compose_addressbook_receive_expand(data) { + var form = '[name="'+data.target+'"]'; + + for(var j in data.members) { + $(form).attr('value', $(form).val() + data.members[j]+", "); + } +} diff --git a/plugins/compose_addressbook/compose_addressbook.php b/plugins/compose_addressbook/compose_addressbook.php new file mode 100644 index 000000000..b97be7b75 --- /dev/null +++ b/plugins/compose_addressbook/compose_addressbook.php @@ -0,0 +1,180 @@ +config->get('skin'); + if($skin != 'classic') return; + + $this->require_plugin('jqueryui'); + + $this->register_action('plugin.get_addressbook', array($this, 'get_address')); + $this->register_action('plugin.expand_groups', array($this, 'expand_groups')); + + if($rcmail->action == 'compose') { + $this->compose_addressbook_init(); + } + } + + public function compose_addressbook_init() + { + $this->add_texts('localization', true); + + $rcmail = rcmail::get_instance(); + + $skin_path = $this->local_skin_path(); + + // add javascript and stylesheets + $this->include_script('compose_addressbook.js?v=2'); + $this->include_stylesheet("$skin_path/compose_addressbook.css"); + + // html for dialog window + $table = new html_table(array('id' => 'compose_addressbook_table', 'class' => 'records-table', 'cols' => 1, 'cellspacing' => 0)); + + // create div for dialog window + $rcmail->output->add_footer(html::div(array('id' => "compose_addressbook_dialog", 'title' => Q($this->gettext('compose_addressbook_title'))), + html::div(array('id' => "compose_addressbook_quicksearchbar"), + html::img(array('id'=>'compose_addressbook_searchmod','src'=>'/images/icons/glass.png')) . + html::tag('input', array('type' => "text", 'class' => 'compose_addressbook_filter','id'=>'compose_addressbook_filter')). + html::a(array('id' => 'compose_addressbook_searchreset', 'href'=>'#'), + html::img(array('src'=>'/images/icons/reset.gif'))) + ) . + html::div(array('id' => "compose_addressbook_container"), + $table->show() + ) + )); + + // add the addressbook button + $this->add_button(array( + 'command' => 'plugin.compose_addressbook', + 'imagepas' => $skin_path.'/compose_addressbook.png', + 'imageact' => $skin_path.'/compose_addressbook.png', + 'title' => 'compose_addressbook.compose_addressbook_buttontitle', + 'id' => 'rcmbtn_compose_addressbook'), 'toolbar'); + + $this->load_config(); + $rcmail->output->set_env('compose_addressbook_mode', $rcmail->config->get('compose_addressbook_mode', 'full')); + $rcmail->output->add_gui_object('compose_addressbook_list', 'compose_addressbook_table'); + + // add some labels + $rcmail->output->add_label('cc', 'bcc', 'to'); + + // add list functions + $rcmail->output->include_script('list.js'); + + } + + // get the addressbook entries and return them to the UI. + function get_address() { + $contacts = array(); + $this->load_config(); + $rcmail = rcmail::get_instance(); + + $mode = $rcmail->config->get('compose_addressbook_mode', 'full'); + $search_mode = $rcmail->config->get('addressbook_search_mode'); + + // get the addressbooks, or default to all address sources + $book_types = (array) $rcmail->config->get('compose_addressbooks', $rcmail->config->get('autocomplete_addressbooks', array_keys($rcmail->get_address_sources()))); + + foreach ($book_types as $id) { + $abook = $rcmail->get_address_book($id); + $abook->set_pagesize(50000); + + if($mode == 'full') { + $result = $abook->list_records(); + while ($sql_arr = $result->iterate()) { + foreach ((array)$abook->get_col_values('email', $sql_arr, true) as $email) { + $contact = format_email_recipient($email, $sql_arr['name']); + $contacts[] = array('name' => $sql_arr['name'] , 'email' => format_email_recipient($email, $sql_arr['name'])); + } + } + $search = null; + if($abook->groups) { + foreach($abook->list_groups($search) as $group) { + $abook->reset(); + $abook->set_group($group['ID']); + $result = $abook->count(); + if ($result->count) { + $contacts[] = array('name' => $group['name'] . ' (' . intval($result->count) . ')', 'id' => $group['ID'], 'source' => $id); + } + } + } + } else { + $search=trim(get_input_value('_search', RCUBE_INPUT_POST)); + + if(!empty($search)) { + $result = $abook->search(array('name','email'),$search, $search_mode, true, true, 'email'); + while ($sql_arr = $result->iterate()) { + foreach ((array)$abook->get_col_values('email', $sql_arr, true) as $email) { + $contact = format_email_recipient($email, $sql_arr['name']); + $contacts[] = array('name' => $sql_arr['name'] , 'email' => format_email_recipient($email, $sql_arr['name'])); + } + } + if($abook->groups) { + foreach($abook->list_groups($search) as $group) { + $abook->reset(); + $abook->set_group($group['ID']); + $result = $abook->count(); + if ($result->count) { + $contacts[] = array('name' => $group['name'] . ' (' . intval($result->count) . ')', 'id' => $group['ID'], 'source' => $id); + } + } + } + } + } + } + + sort($contacts); + + // send the addressbook back to javascript + $rcmail->output->command('plugin.compose_addressbook_receive', array('addresses' => $contacts)); + } + + // expand all the groups that we added + function expand_groups() { + $rcmail = rcmail::get_instance(); + + $group_ids_input=trim(get_input_value('_groupids', RCUBE_INPUT_GET)); + $group_sources_input=trim(get_input_value('_groupsources', RCUBE_INPUT_GET)); + $target = trim(get_input_value('_target', RCUBE_INPUT_GET)); + + if($group_ids_input == '' || $group_sources_input == '') exit; + + $group_ids = explode(',', $group_ids_input); + $group_sources = explode(',', $group_sources_input); + + // create a list of ids per address source + for($i=0; $i $groups) { + $abook = $rcmail->get_address_book($source); + foreach($groups as $group) { + $abook->set_group($group); + $abook->set_pagesize(1000); + $result = $abook->list_records(array('email','name')); + while ($result && ($sql_arr = $result->iterate())) { + $email = (array)$sql_arr['email']; + $members[] = format_email_recipient($email[0], $sql_arr['name']); + } + } + } + $rcmail->output->command('plugin.compose_addressbook_receive_expand', array('members' => array_unique($members), 'target' => $target)); + } +} +?> diff --git a/plugins/compose_addressbook/config.inc.php.dist b/plugins/compose_addressbook/config.inc.php.dist new file mode 100644 index 000000000..b2ba8f9c8 --- /dev/null +++ b/plugins/compose_addressbook/config.inc.php.dist @@ -0,0 +1,21 @@ + diff --git a/plugins/compose_addressbook/localization/de_DE.inc b/plugins/compose_addressbook/localization/de_DE.inc new file mode 100644 index 000000000..929a6493d --- /dev/null +++ b/plugins/compose_addressbook/localization/de_DE.inc @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/plugins/compose_addressbook/localization/en_GB.inc b/plugins/compose_addressbook/localization/en_GB.inc new file mode 100644 index 000000000..a8078f469 --- /dev/null +++ b/plugins/compose_addressbook/localization/en_GB.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/en_US.inc b/plugins/compose_addressbook/localization/en_US.inc new file mode 100644 index 000000000..a8078f469 --- /dev/null +++ b/plugins/compose_addressbook/localization/en_US.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/es_ES.inc b/plugins/compose_addressbook/localization/es_ES.inc new file mode 100644 index 000000000..2a000f2fa --- /dev/null +++ b/plugins/compose_addressbook/localization/es_ES.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/fr_FR.inc b/plugins/compose_addressbook/localization/fr_FR.inc new file mode 100644 index 000000000..1f52ffeae --- /dev/null +++ b/plugins/compose_addressbook/localization/fr_FR.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/it_IT.inc b/plugins/compose_addressbook/localization/it_IT.inc new file mode 100644 index 000000000..d1b0c46af --- /dev/null +++ b/plugins/compose_addressbook/localization/it_IT.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/nl_NL.inc b/plugins/compose_addressbook/localization/nl_NL.inc new file mode 100644 index 000000000..f5de52ac9 --- /dev/null +++ b/plugins/compose_addressbook/localization/nl_NL.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/pl_PL.inc b/plugins/compose_addressbook/localization/pl_PL.inc new file mode 100644 index 000000000..eb95e4225 --- /dev/null +++ b/plugins/compose_addressbook/localization/pl_PL.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/sv_SE.inc b/plugins/compose_addressbook/localization/sv_SE.inc new file mode 100644 index 000000000..6e6d49f36 --- /dev/null +++ b/plugins/compose_addressbook/localization/sv_SE.inc @@ -0,0 +1,10 @@ + diff --git a/plugins/compose_addressbook/localization/zh_TW.inc b/plugins/compose_addressbook/localization/zh_TW.inc new file mode 100644 index 000000000..1be7b614d --- /dev/null +++ b/plugins/compose_addressbook/localization/zh_TW.inc @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/plugins/compose_addressbook/package.xml b/plugins/compose_addressbook/package.xml new file mode 100644 index 000000000..cc22b4c9b --- /dev/null +++ b/plugins/compose_addressbook/package.xml @@ -0,0 +1,18 @@ + + + compose_addressbook + + Cor Bosman + cor + cor@roundcu.be + yes + + https://github.com/corbosman/compose_addressbook + + 8.0 + + GNU GPLv2 + diff --git a/plugins/compose_addressbook/skins/classic/compose_addressbook.css b/plugins/compose_addressbook/skins/classic/compose_addressbook.css new file mode 100644 index 000000000..f8ec665d1 --- /dev/null +++ b/plugins/compose_addressbook/skins/classic/compose_addressbook.css @@ -0,0 +1,83 @@ +#compose_addressbook_dialog { + display: none; + background-color: #FAFAFA; + color: #333; + padding: 5px 0 0 0; + overflow: hidden; +} + +#compose_addressbook_dialog .ui-dialog { + padding: 0; +} + +#compose_addressbook_container { + height: 376px; + overflow: auto; + overflow-x: hidden; + border-top: 1px solid #AAAAAA; + position: relative; + top: 30px; +} + +#compose_addressbook_dialog table { + width: 100%; + overflow: hidden; +} + +#compose_addressbook_quicksearchbar +{ + position: absolute; + left: 60px; + width: 182px; + height: 20px; + text-align: right; + background: url('searchfield.gif') top left no-repeat; +} + +#compose_addressbook_searchreset +{ + position: absolute; + top: 3px; + right: 4px; + text-decoration: none; +} + +#compose_addressbook_searchmod +{ + position: absolute; + top: 3px; + right: 160px; +} + +#compose_addressbook_quicksearchbar img +{ + vertical-align: middle; +} + +#compose_addressbook_filter +{ + margin-right: 4px; + margin-bottom: 5px; + position: absolute; + top: 2px; + left: 24px; + width: 140px; + height: 15px; + font-size: 11px; + padding: 0px; + border: none; +} + +#compose_addressbook_dialog input { + outline: none; + border: none !important; +} + +#compose_addressbook_filter[type=text]:focus { + outline: 0 none; +} + +.ui-dialog-buttonpane button { + font-size: 10px !important; + width: 85px !important; +} \ No newline at end of file diff --git a/plugins/compose_addressbook/skins/classic/compose_addressbook.png b/plugins/compose_addressbook/skins/classic/compose_addressbook.png new file mode 100644 index 000000000..e58e4dddc Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/compose_addressbook.png differ diff --git a/plugins/compose_addressbook/skins/classic/searchfield.gif b/plugins/compose_addressbook/skins/classic/searchfield.gif new file mode 100644 index 000000000..756a17e47 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/searchfield.gif differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-anim_basic_16x16.gif b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-anim_basic_16x16.gif new file mode 100644 index 000000000..085ccaeca Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-anim_basic_16x16.gif differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 000000000..5b5dab2ab Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 000000000..ac8b229af Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 000000000..ad3d6346e Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 000000000..42ccba269 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 000000000..5a46b47cb Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 000000000..86c2baa65 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 000000000..4443fdc1a Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 000000000..7c9fa6c6e Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_222222_256x240.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_222222_256x240.png new file mode 100644 index 000000000..b273ff111 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_222222_256x240.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_2e83ff_256x240.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 000000000..09d1cdc85 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_2e83ff_256x240.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_454545_256x240.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_454545_256x240.png new file mode 100644 index 000000000..59bd45b90 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_454545_256x240.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_888888_256x240.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_888888_256x240.png new file mode 100644 index 000000000..6d02426c1 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_888888_256x240.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_cd0a0a_256x240.png b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 000000000..2ab019b73 Binary files /dev/null and b/plugins/compose_addressbook/skins/classic/smoothness/images/ui-icons_cd0a0a_256x240.png differ diff --git a/plugins/compose_addressbook/skins/classic/smoothness/jquery-ui-1.8.2.custom.css b/plugins/compose_addressbook/skins/classic/smoothness/jquery-ui-1.8.2.custom.css new file mode 100644 index 000000000..401eb1d15 --- /dev/null +++ b/plugins/compose_addressbook/skins/classic/smoothness/jquery-ui-1.8.2.custom.css @@ -0,0 +1,345 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* +* jQuery UI CSS Framework +* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Resizable +----------------------------------*/ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Button +----------------------------------*/ + +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + + + + + +/* Dialog +----------------------------------*/ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/plugins/contextmenu/contextmenu.js b/plugins/contextmenu/contextmenu.js new file mode 100644 index 000000000..6d83f1fbe --- /dev/null +++ b/plugins/contextmenu/contextmenu.js @@ -0,0 +1,595 @@ +/** + * ContextMenu plugin script + */ + +rcube_webmail.prototype.contextmenu_command_handlers = new Object(); +rcube_webmail.prototype.contextmenu_disable_multi = new Array('#reply','#reply-all','#reply-list','#forward-inline','#print','#edit','#viewsource','#download','#open','#edit'); + +function rcm_contextmenu_update() { + //if (!rcmail.env.flag_for_deletion && rcmail.env.trash_mailbox && rcmail.env.mailbox != rcmail.env.trash_mailbox) + // $("#rcm_delete").html('' + rcmail.gettext('movemessagetotrash') + ''); + //else + // $("#rcm_delete").html('' + rcmail.gettext('deletemessage') + ''); +} + +function rcm_contextmenu_init(row) { + $("#" + row).contextMenu({ + menu: 'rcmContextMenu', + submenu_delay: 400 + }, + function(command, el, pos) { + var matches = String($(el).attr('id')).match(/rcmrow([a-z0-9\-_=]+)/i); + if ($(el) && matches) { + var prev_uid = rcmail.env.uid; + if (rcmail.message_list.selection.length <= 1 || !rcmail.message_list.in_selection(matches[1])) + rcmail.env.uid = matches[1]; + + // fix command string in IE + if (command.indexOf("#") > 0) + command = command.substr(command.indexOf("#") + 1); + + // enable the required command + cmd = (command == 'read' || command == 'unread' || command == 'flagged' || command == 'unflagged') ? 'mark' : command; + var prev_command = rcmail.commands[cmd]; + rcmail.enable_command(cmd, true); + + // process external commands + if (typeof rcmail.contextmenu_command_handlers[command] == 'function') { + rcmail.contextmenu_command_handlers[command](command, el, pos); + } + else if (typeof rcmail.contextmenu_command_handlers[command] == 'string') { + window[rcmail.contextmenu_command_handlers[command]](command, el, pos); + } + else { + switch (command) { + case 'read': + case 'unread': + case 'flagged': + case 'unflagged': + rcmail.command('mark', command, $(el)); + break; + case 'reply': + case 'reply-all': + case 'reply-list': + case 'forward-inline': + case 'forward-attachment': + case 'print': + case 'download': + case 'viewsource': + rcmail.command(command, '', $(el)); + break; + case 'edit': + rcmail.command(command, 'new', $(el)); + break; + case 'open': + rcmail.command(command, '', rcube_find_object('rcm_open')); + rcmail.sourcewin = window.open(rcube_find_object('rcm_open').href); + if (rcmail.sourcewin) + window.setTimeout(function() { rcmail.sourcewin.focus(); }, 20); + + rcube_find_object('rcm_open').href = '#open'; + break; + case 'delete': + case 'moveto': + if (command == 'moveto' && rcmail.env.rcm_destfolder == rcmail.env.mailbox) + return; + + var prev_sel = null; + + // also select childs of (collapsed) threads + if (rcmail.env.uid) { + if (!rcmail.message_list.in_selection(rcmail.env.uid)) { + prev_sel = rcmail.message_list.get_selection(); + rcmail.message_list.select_row(rcmail.env.uid); + } + + if (rcmail.message_list.rows[rcmail.env.uid].has_children && !rcmail.message_list.rows[rcmail.env.uid].expanded) + rcmail.message_list.select_childs(rcmail.env.uid); + + rcmail.env.uid = null; + } + + rcmail.command(command, rcmail.env.rcm_destfolder, $(el)); + + if (prev_sel) { + rcmail.message_list.clear_selection(); + + for (var i in prev_sel) + rcmail.message_list.select_row(prev_sel[i], CONTROL_KEY); + } + + delete rcmail.env.rcm_destfolder; + break; + } + } + + rcmail.enable_command(cmd, prev_command); + rcmail.env.uid = prev_uid; + } + }); +} + +function rcm_set_dest_folder(folder) { + rcmail.env.rcm_destfolder = folder; +} + +function rcm_contextmenu_register_command(command, callback, label, pos, sep, multi, newSub, menu, liclass) { + if (!menu) + menu = $('#rcmContextMenu'); + + if (!liclass) + liclass = command; + + if (typeof label != 'string') { + var menuItem = label.children('li'); + } + else { + var menuItem = $('
  • ').addClass(liclass); + $('').attr('href', '#' + command).addClass('active').html('' + rcmail.gettext(label) + '').appendTo(menuItem); + } + + rcmail.contextmenu_command_handlers[command] = callback; + + if (pos && menu.children('li.' + pos) && newSub) { + subMenu = menu.children('li.' + pos); + subMenu.addClass('submenu'); + + var mainLink = null; + if (subMenu.children('a') && !subMenu.hasClass('sublink')) { + subMenu.addClass('sublink'); + + var mainLink = $('
  • ').addClass(pos); + subMenu.children('a').clone().appendTo(mainLink) + subMenu.children('a').addClass('mainlink'); + } + + var newMenu = $('