From 77bc8da53c1345ca1a8f762bf3066fa23a435d27 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Thu, 10 Apr 2014 14:31:45 +0200 Subject: [PATCH] Indicate iTip message in mail view list --- plugins/calendar/calendar.php | 31 ++++++++++++++++++ plugins/calendar/skins/classic/calendar.css | 9 +++++ .../skins/classic/images/ical-attachment.png | Bin 0 -> 361 bytes plugins/calendar/skins/larry/calendar.css | 9 +++++ .../skins/larry/images/ical-attachment.png | Bin 0 -> 620 bytes 5 files changed, 49 insertions(+) create mode 100755 plugins/calendar/skins/classic/images/ical-attachment.png create mode 100755 plugins/calendar/skins/larry/images/ical-attachment.png diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php index 70d58be1..2857ee3f 100644 --- a/plugins/calendar/calendar.php +++ b/plugins/calendar/calendar.php @@ -190,6 +190,8 @@ class calendar extends rcube_plugin $this->api->output->add_label('calendar.createfrommail'); } + + $this->add_hook('messages_list', array($this, 'mail_messages_list')); } else if ($args['task'] == 'addressbook') { if ($this->rc->config->get('calendar_contact_birthdays')) { @@ -2157,6 +2159,35 @@ class calendar extends rcube_plugin return html::tag('form', array('action' => $this->rc->url(array('task' => 'calendar', 'action' => 'attend')), 'method' => 'post', 'noclose' => true) + $attrib) . $hidden->show(); } + /** + * + */ + public function mail_messages_list($p) + { + if (in_array('attachment', (array)$p['cols'])) { + foreach ($p['messages'] as $i => $header) { + $part = new StdClass; + $part->mimetype = $header->ctype; + $part->filename = ''; + if ($this->is_vcalendar($part)) { + $header->list_flags['attachmentClass'] = 'ical'; + } + else if (in_array($header->ctype, array('multipart/alternative', 'multipart/mixed'))) { + // TODO: fetch bodystructure and search for ical parts. Maybe too expensive? + + if (!empty($header->structure) && is_array($header->structure->parts)) { + foreach ($header->structure->parts as $part) { + if ($this->is_vcalendar($part) && !empty($part->ctype_parameters['method'])) { + $header->list_flags['attachmentClass'] = 'ical'; + break; + } + } + } + } + } + } + } + /** * Check mail message structure of there are .ics files attached */ diff --git a/plugins/calendar/skins/classic/calendar.css b/plugins/calendar/skins/classic/calendar.css index 937a7b65..6c7ca146 100644 --- a/plugins/calendar/skins/classic/calendar.css +++ b/plugins/calendar/skins/classic/calendar.css @@ -1387,6 +1387,15 @@ fieldset #calendarcategories div { /* Invitation UI in mail */ +.messagelist tbody .attachment span.ical { + display: inline-block; + vertical-align: middle; + height: 18px; + width: 20px; + padding: 0; + background: url(images/calendar-small.png) 1px 1px no-repeat; +} + #messagemenu li a.calendarlink, #attachmentmenu li a.calendarlink { background-image: url(images/calendars.png); diff --git a/plugins/calendar/skins/classic/images/ical-attachment.png b/plugins/calendar/skins/classic/images/ical-attachment.png new file mode 100755 index 0000000000000000000000000000000000000000..8dbd6694a977c98f32fa3c37426d446441ce1258 GIT binary patch literal 361 zcmV-v0ha!WP)GBS^>`h~q(YF&ZBvkE|Z-ePqrfM#knnjEs9PU%vbwL_cO^T#L*H$)g*<{SRStdKpWUV27Je2z<-Df*zmi6k&zSV zRt9D^HU=zyfXL%B0O<4A#_a41aV0unvU-gnHuN(SK!5=N>rl2FI?$~)00000NkvXX Hu0mjfYS5Zp literal 0 HcmV?d00001 diff --git a/plugins/calendar/skins/larry/calendar.css b/plugins/calendar/skins/larry/calendar.css index 25ad82cf..69a68ac6 100644 --- a/plugins/calendar/skins/larry/calendar.css +++ b/plugins/calendar/skins/larry/calendar.css @@ -1559,6 +1559,15 @@ fieldset #calendarcategories div { /* Invitation UI in mail */ +.messagelist tbody .attachment span.ical { + display: inline-block; + vertical-align: middle; + height: 18px; + width: 20px; + padding: 0; + background: url(images/ical-attachment.png) 2px 1px no-repeat; +} + #messagemenu li a.calendarlink span.calendar, #attachmentmenu li a.calendarlink span.calendar { background-position: 0px -2197px; diff --git a/plugins/calendar/skins/larry/images/ical-attachment.png b/plugins/calendar/skins/larry/images/ical-attachment.png new file mode 100755 index 0000000000000000000000000000000000000000..8fa486ae2e2332e56a96d39ef537bb330ed27a17 GIT binary patch literal 620 zcmV-y0+aoTP)$oVLBuY(iBp)wWdCr z%-egvc{orC?SXs0@80h_XU@HIr633pLz1K`JZOBFeE&UCII1QI0rqtJ8BeFYFXlPp ze!emO{M#qFto=$09IgdT_i^DNqpEG!AKbclb>+<-+U+(jkExAmU4i5HaNGcPAfYpo zquL~|DbsnpUG1I{RGNa}0dpK6D-CgT@hh0~2S0W!?0&bfv&+Yxjf25&s_okY4BU_- zxGWNoMSOXuj^_0-SVIRz_7_i#Y;pwU(gb%l37dtcV@@bw4JqDR>fy}kQ8<=|{=S6^ z=d(BpF$dxj`PDuOPKbyTIRIpzFBX=UNznKGBzm4lF}-(pW`;QbFOe_Y=si@cRj8^; zd8JaJAy6)tQ7V-v7rn6ni;g6_T)8nj3)gjF^IxLbHn!*H$bq6L==b~NK;)tqX#uXr zVh6R`Hzz~Fq+BWgJB?k_M$g9 z#V&|6W(mWM1K9=!)r|00RJ