Наткнулся на просторах Хабрахабра на одну идею
Задумка ставить задачи не выходя из общения в IM показалась достаточно интересной и я ее решил реализовать на корпортале для работы в Jabber.
[spoiler]
Итак задача:
1) При общении через Jabber мы должны получить возможность, написать сообщение в определенном формате и на основании этого сообщения поставить задачу собеседнику
2) Мы должны иметь возможность из IM или просматривая историю сообщений быстро перейти на саму задачу в КП, для более детального ее редактирования.
Реализация:
В принципе реализация перекликается, с моей старой реализацией
Собственно решение:
Создаем событие, на обработку исходящего сообщения
Первая строка сообщения будет ключевой:
"задача дата_крайнего_срока_задачи название_задачи"
Последующие строки будут описанием задачи
Дата крайнего срока задается в формате дд.мм
Теперь если мы в Jabber напишем сообщение например такое:

То перейдя по ссылке получим результат:

В итоге получили то что и требовалось, теперь при обсуждении какого-то вопроса в Jabber мы можем быстро ставить задачи, и потом при просмотре истории можно всегда просмотреть задачи поставленные в процессе обсуждения.
Задумка ставить задачи не выходя из общения в IM показалась достаточно интересной и я ее решил реализовать на корпортале для работы в Jabber.
[spoiler]
Итак задача:
1) При общении через Jabber мы должны получить возможность, написать сообщение в определенном формате и на основании этого сообщения поставить задачу собеседнику
2) Мы должны иметь возможность из IM или просматривая историю сообщений быстро перейти на саму задачу в КП, для более детального ее редактирования.
Реализация:
В принципе реализация перекликается, с моей старой реализацией
Собственно решение:
Создаем событие, на обработку исходящего сообщения
Первая строка сообщения будет ключевой:
"задача дата_крайнего_срока_задачи название_задачи"
Последующие строки будут описанием задачи
Дата крайнего срока задается в формате дд.мм
AddEventHandler("socialnetwork", "OnBeforeSocNetMessagesAdd",
Array("MyClass", "OnBeforeSocNetMessagesAddHandler"));
class MyClass
{
function OnBeforeSocNetMessagesAddHandler($fields)
{
if (CModule::IncludeModule("tasks"))
{
$rows = explode("\n", $fields["MESSAGE"]);
preg_match("/^задача ([0-9]{2}.[0-9]{2}) ([\w\W]*)$/is", $rows[0], $task);
if(isset($task[1]))
{
unset($rows[0]);
$message = implode("\n", $rows);
$arFields=Array(
"TITLE" => $task[2],
"DESCRIPTION" => $message,
"RESPONSIBLE_ID" => $fields["TO_USER_ID"],
"DEADLINE" => $task[1].".".date("Y",time()),
"AUDITORS" => Array($fields["FROM_USER_ID"])
);
$task = new CTasks();
$taskID = $task->Add($arFields);
$arParam["PATH_TO_TASK"] = "http://server/company/personal/user/#user_id#/tasks/task/view/#task_id#/";
$arFields = array(
"FROM_USER_ID" => $fields["TO_USER_ID"],
"TO_USER_ID" => $fields["FROM_USER_ID"],
"MESSAGE" => CComponentEngine::MakePathFromTemplate($arParam["PATH_TO_TASK"], array("user_id" => $fields["FROM_USER_ID"], "task_id" => $taskID, "action" => "view")),
"=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
"MESSAGE_TYPE" => "P",
);
$fields["MESSAGE"] .= "\n".CComponentEngine::MakePathFromTemplate($arParam["PATH_TO_TASK"], array("user_id" => $fields["TO_USER_ID"], "task_id" => $taskID, "action" => "view"));
CSocNetMessages::Add($arFields);
}
}
return true;
}
}
|
Теперь если мы в Jabber напишем сообщение например такое:
То перейдя по ссылке получим результат:
В итоге получили то что и требовалось, теперь при обсуждении какого-то вопроса в Jabber мы можем быстро ставить задачи, и потом при просмотре истории можно всегда просмотреть задачи поставленные в процессе обсуждения.