Наткнулся на просторах Хабрахабра на одну идею http://habrahabr.ru/blogs/pm/126125/ Задумка ставить задачи не выходя из общения в IM показалась достаточно интересной и я ее решил реализовать на корпортале для работы в Jabber.
[spoiler]
Итак задача: 1) При общении через Jabber мы должны получить возможность, написать сообщение в определенном формате и на основании этого сообщения поставить задачу собеседнику 2) Мы должны иметь возможность из IM или просматривая историю сообщений быстро перейти на саму задачу в КП, для более детального ее редактирования.
Собственно решение: Создаем событие, на обработку исходящего сообщения Первая строка сообщения будет ключевой: "задача дата_крайнего_срока_задачи название_задачи" Последующие строки будут описанием задачи
Теперь если мы в Jabber напишем сообщение например такое:
То перейдя по ссылке получим результат:
В итоге получили то что и требовалось, теперь при обсуждении какого-то вопроса в Jabber мы можем быстро ставить задачи, и потом при просмотре истории можно всегда просмотреть задачи поставленные в процессе обсуждения.
Отличное решение! Но все же шаблон я бы сделал другой. Например, начальник может написать:
задача 10.11 когда будет решена?
По своей сути служебное сообщение должно быть как-то обозначено чтобы пользователю не забивать голову, как надо и как не надо формулировать свои мысли.
Кроме того, такие сообщения проще будет искать в истории.
Крайний срок - не обязательное поле, а значит желательно дать возможность его не указывать.
И формат даты может быть разный: с годом, без года, со временем или без. А еще лучше с текстом!
Регистр не учитывать, кто-нибудь обязательно напишет "Задача".
Описание задачи не всегда требуется.
[задача на 02.01.2012: Хорошо отдохнуть]Необходимо хорошо отдохнуть чтобы затем хорошо поработать
[задача на завтра: купить карандаши в офис]
[задача: помыться]
Тогда проверочный код может быть такой:
if (preg_match('#^\[задача([^:]*):([^\]]+)\](.*)#i', $fields["MESSAGE"], $task))
Далее проверяем дату:
if ($task[1])
{
if (preg_match('#на ([0-9]{2}\.[0-9]{2}\.?[0-9]{0,4})#',$task[1], $regs))
// задана дата в цифровом формате
elseif (preg_match('#на (.+)#',$task[1], $regs))
// в текстовом
switch $regs[1]:
case 'сегодня':
break'
case 'завтра':
break;
// и так далее
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».