function quick_add_task()
 {
     if (logged_user()->isGuest()) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     $notAllowedMember = '';
     if (!ProjectTask::canAdd(logged_user(), active_context(), $notAllowedMember)) {
         if (str_starts_with($notAllowedMember, '-- req dim --')) {
             flash_error(lang('must choose at least one member of', str_replace_first('-- req dim --', '', $notAllowedMember, $in)));
         } else {
             trim($notAllowedMember) == "" ? flash_error(lang('you must select where to keep', lang('the task'))) : flash_error(lang('no context permissions to add', lang("tasks"), $notAllowedMember));
         }
         ajx_current("empty");
         return;
     }
     ajx_current("empty");
     $task = new ProjectTask();
     $task_data = array_var($_POST, 'task');
     $parent_id = array_var($task_data, 'parent_id', 0);
     $parent = ProjectTasks::findById($parent_id);
     if (is_array($task_data)) {
         $task_data['due_date'] = getDateValue(array_var($task_data, 'task_due_date'));
         $task_data['start_date'] = getDateValue(array_var($task_data, 'task_start_date'));
         if ($task_data['due_date'] instanceof DateTimeValue) {
             $duetime = getTimeValue(array_var($task_data, 'task_due_time'));
             if (is_array($duetime)) {
                 $task_data['due_date']->setHour(array_var($duetime, 'hours'));
                 $task_data['due_date']->setMinute(array_var($duetime, 'mins'));
                 $task_data['due_date']->advance(logged_user()->getTimezone() * -3600);
             }
             $task_data['use_due_time'] = is_array($duetime);
         }
         if ($task_data['start_date'] instanceof DateTimeValue) {
             $starttime = getTimeValue(array_var($task_data, 'task_start_time'));
             if (is_array($starttime)) {
                 $task_data['start_date']->setHour(array_var($starttime, 'hours'));
                 $task_data['start_date']->setMinute(array_var($starttime, 'mins'));
                 $task_data['start_date']->advance(logged_user()->getTimezone() * -3600);
             }
             $task_data['use_start_time'] = is_array($starttime);
         }
         if (config_option("wysiwyg_tasks")) {
             $task_data['type_content'] = "html";
             $task_data['text'] = str_replace(array("\r", "\n", "\r\n"), array('', '', ''), array_var($task_data, 'text'));
         } else {
             $task_data['type_content'] = "text";
         }
         $task_data['object_type_id'] = $task->getObjectTypeId();
         $task->setFromAttributes($task_data);
         if (array_var($task_data, 'is_completed', false) == 'true') {
             $task->setCompletedOn(DateTimeValueLib::now());
             $task->setCompletedById(logged_user()->getId());
         }
         try {
             DB::beginWork();
             $task->save();
             $totalMinutes = array_var($task_data, 'hours') * 60 + array_var($task_data, 'minutes');
             $task->setTimeEstimate($totalMinutes);
             $task->save();
             $gb_member_ids = array_var($task_data, 'members');
             $member_ids = array();
             $persons_dim = Dimensions::findByCode('feng_persons');
             $persons_dim_id = $persons_dim instanceof Dimension ? $persons_dim->getId() : 0;
             if ($parent) {
                 if (count($parent->getMembers()) > 0) {
                     foreach ($parent->getMembers() as $member) {
                         if ($member->getDimensionId() != $persons_dim_id) {
                             $member_ids[] = $member->getId();
                         }
                     }
                 }
                 $task->setMilestoneId($parent->getMilestoneId());
                 $task->save();
             }
             if (count($member_ids) == 0) {
                 $member_ids = active_context_members(false);
             }
             // get member ids
             if ($gb_member_ids && !empty($gb_member_ids)) {
                 $member_ids = json_decode(array_var($task_data, 'members'));
             }
             $object_controller = new ObjectController();
             $object_controller->add_to_members($task, $member_ids);
             $assignee = $task->getAssignedToContact();
             $assignee_to_me = false;
             if ($assignee instanceof Contact) {
                 $task->subscribeUser($assignee);
                 //do not notify my self
                 if ($assignee->getId() == logged_user()->getId()) {
                     $assignee_to_me = true;
                 }
             }
             // create default reminder by user config option
             if ($task->getDueDate() != null && user_config_option("add_task_default_reminder")) {
                 $reminder = new ObjectReminder();
                 $def = explode(",", user_config_option("reminders_tasks"));
                 $minutes = $def[2] * $def[1];
                 $reminder->setMinutesBefore($minutes);
                 $reminder->setType($def[0]);
                 $reminder->setContext("due_date");
                 $reminder->setObject($task);
                 $reminder->setUserId(0);
                 $date = $task->getDueDate();
                 if ($date instanceof DateTimeValue) {
                     $rdate = new DateTimeValue($date->getTimestamp() - $minutes * 60);
                     $reminder->setDate($rdate);
                 }
                 $reminder->save();
             }
             $subs = array();
             if (config_option('multi_assignment') && Plugins::instance()->isActivePlugin('crpm')) {
                 $json_subtasks = json_decode(array_var($_POST, 'multi_assignment'), true);
                 $subtasks = array();
                 $line = 0;
                 if (is_array($json_subtasks)) {
                     foreach ($json_subtasks as $json_subtask) {
                         $subtasks[$line]['assigned_to_contact_id'] = $json_subtask['assigned_to_contact_id'];
                         $subtasks[$line]['name'] = $json_subtask['name'];
                         $subtasks[$line]['time_estimate_hours'] = $json_subtask['time_estimate_hours'];
                         $subtasks[$line]['time_estimate_minutes'] = $json_subtask['time_estimate_minutes'];
                         $line++;
                     }
                 }
                 Hook::fire('save_subtasks', $task, $subtasks);
                 $subtasks = ProjectTasks::findAll(array('conditions' => '`parent_id` = ' . DB::escape($task->getId())));
                 // findAll
                 foreach ($subtasks as $sub) {
                     $subs[] = $sub->getArrayInfo();
                 }
             }
             // subscribe
             $task->subscribeUser(logged_user());
             //for calculate member status we save de task again after the object have the members
             $task->save();
             DB::commit();
             $isSailent = true;
             // notify asignee
             if ((array_var($task_data, 'notify') == 'true' || user_config_option("can notify from quick add") && !user_config_option("show_notify_checkbox_in_quick_add")) && !$assignee_to_me) {
                 $isSailent = false;
                 try {
                     Notifier::taskAssigned($task);
                 } catch (Exception $e) {
                     Logger::log($e->getMessage());
                     Logger::log($e->getTraceAsString());
                 }
                 // try
             }
             ApplicationLogs::createLog($task, ApplicationLogs::ACTION_ADD, null, $isSailent);
             ajx_extra_data(array("task" => $task->getArrayInfo(), 'subtasks' => $subs));
             flash_success(lang('success add task', $task->getObjectName()));
         } catch (Exception $e) {
             DB::rollback();
             flash_error($e->getMessage());
         }
         // try
     }
     // if
 }
 function quick_add_task()
 {
     if (logged_user()->isGuest()) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     $notAllowedMember = '';
     if (!ProjectTask::canAdd(logged_user(), active_context(), $notAllowedMember)) {
         if (str_starts_with($notAllowedMember, '-- req dim --')) {
             flash_error(lang('must choose at least one member of', str_replace_first('-- req dim --', '', $notAllowedMember, $in)));
         } else {
             flash_error(lang('no context permissions to add', lang("tasks"), $notAllowedMember));
         }
         ajx_current("empty");
         return;
     }
     ajx_current("empty");
     $task = new ProjectTask();
     $task_data = array_var($_POST, 'task');
     $parent_id = array_var($task_data, 'parent_id', 0);
     $parent = ProjectTasks::findById($parent_id);
     if (is_array($task_data)) {
         $task_data['due_date'] = getDateValue(array_var($task_data, 'task_due_date'));
         $task_data['start_date'] = getDateValue(array_var($task_data, 'task_start_date'));
         if ($task_data['due_date'] instanceof DateTimeValue) {
             $duetime = getTimeValue(array_var($task_data, 'task_due_time'));
             if (is_array($duetime)) {
                 $task_data['due_date']->setHour(array_var($duetime, 'hours'));
                 $task_data['due_date']->setMinute(array_var($duetime, 'mins'));
             }
             $task_data['due_date']->advance(logged_user()->getTimezone() * -3600);
             $task_data['use_due_time'] = is_array($duetime);
         }
         if ($task_data['start_date'] instanceof DateTimeValue) {
             $starttime = getTimeValue(array_var($task_data, 'task_start_time'));
             if (is_array($starttime)) {
                 $task_data['start_date']->setHour(array_var($starttime, 'hours'));
                 $task_data['start_date']->setMinute(array_var($starttime, 'mins'));
             }
             $task_data['start_date']->advance(logged_user()->getTimezone() * -3600);
             $task_data['use_start_time'] = is_array($starttime);
         }
         if (config_option("wysiwyg_tasks")) {
             $task_data['type_content'] = "html";
             $task_data['text'] = preg_replace("/[\n|\r|\n\r]/", '', array_var($task_data, 'text'));
         } else {
             $task_data['type_content'] = "text";
         }
         $task_data['object_type_id'] = $task->getObjectTypeId();
         $task->setFromAttributes($task_data);
         if (array_var($task_data, 'is_completed', false) == 'true') {
             $task->setCompletedOn(DateTimeValueLib::now());
             $task->setCompletedById(logged_user()->getId());
         }
         try {
             DB::beginWork();
             $task->save();
             $totalMinutes = array_var($task_data, 'hours') * 60 + array_var($task_data, 'minutes');
             $task->setTimeEstimate($totalMinutes);
             $task->save();
             $gb_member_id = array_var($task_data, 'member_id');
             $member_ids = array();
             $persons_dim = Dimensions::findByCode('feng_persons');
             $persons_dim_id = $persons_dim instanceof Dimension ? $persons_dim->getId() : 0;
             if ($parent) {
                 if (count($parent->getMembers()) > 0) {
                     foreach ($parent->getMembers() as $member) {
                         if ($member->getDimensionId() != $persons_dim_id) {
                             $member_ids[] = $member->getId();
                         }
                     }
                 }
                 $task->setMilestoneId($parent->getMilestoneId());
                 $task->save();
             }
             if (count($member_ids) == 0) {
                 $member_ids = active_context_members(false);
             }
             if ($gb_member_id && is_numeric($gb_member_id)) {
                 $member_ids[] = $gb_member_id;
             }
             $object_controller = new ObjectController();
             $object_controller->add_to_members($task, $member_ids);
             //Add new work timeslot for this task
             //				if (array_var($task_data,'hours') != '' && array_var($task_data,'hours') > 0){
             //					$hours = array_var($task_data, 'hours');
             //					$hours = - $hours;
             //
             //					$timeslot = new Timeslot();
             //					$dt = DateTimeValueLib::now();
             //					$dt2 = DateTimeValueLib::now();
             //					$timeslot->setEndTime($dt);
             //					$dt2 = $dt2->add('h', $hours);
             //					$timeslot->setStartTime($dt2);
             //					$timeslot->setContactId(logged_user()->getId());
             //					$timeslot->setObjectId($task->getId());
             //					$timeslot->save();
             //				}
             ApplicationLogs::createLog($task, ApplicationLogs::ACTION_ADD);
             $assignee = $task->getAssignedToContact();
             if ($assignee instanceof Contact) {
                 $task->subscribeUser($assignee);
             }
             // create default reminder
             $reminder = new ObjectReminder();
             $reminder->setMinutesBefore(1440);
             $reminder->setType("reminder_email");
             $reminder->setContext("due_date");
             $reminder->setObject($task);
             $reminder->setUserId(0);
             $date = $task->getDueDate();
             if (!isset($minutes)) {
                 $minutes = 0;
             }
             if ($date instanceof DateTimeValue) {
                 $rdate = new DateTimeValue($date->getTimestamp() - $minutes * 60);
                 $reminder->setDate($rdate);
             }
             $reminder->save();
             $subs = array();
             if (config_option('multi_assignment') && Plugins::instance()->isActivePlugin('crpm')) {
                 $json_subtasks = json_decode(array_var($_POST, 'multi_assignment'));
                 $line = 0;
                 foreach ($json_subtasks as $json_subtask) {
                     $subtasks[$line]['assigned_to_contact_id'] = $json_subtask->assigned_to_contact_id;
                     $subtasks[$line]['name'] = $json_subtask->name;
                     $subtasks[$line]['time_estimate_hours'] = $json_subtask->time_estimate_hours;
                     $subtasks[$line]['time_estimate_minutes'] = $json_subtask->time_estimate_minutes;
                     $line++;
                 }
                 Hook::fire('save_subtasks', $task, $subtasks);
                 $subtasks = ProjectTasks::findAll(array('conditions' => '`parent_id` = ' . DB::escape($task->getId())));
                 // findAll
                 foreach ($subtasks as $sub) {
                     $subs[] = $sub->getArrayInfo();
                 }
             }
             // subscribe
             $task->subscribeUser(logged_user());
             DB::commit();
             // notify asignee
             if (array_var($task_data, 'notify') == 'true') {
                 try {
                     Notifier::taskAssigned($task);
                 } catch (Exception $e) {
                 }
                 // try
             }
             ajx_extra_data(array("task" => $task->getArrayInfo(), 'subtasks' => $subs));
             flash_success(lang('success add task', $task->getObjectName()));
         } catch (Exception $e) {
             DB::rollback();
             flash_error($e->getMessage());
         }
         // try
     }
     // if
 }
	 	</div>
	 	<?php 
}
?>
		
  	</div>
  	
  	<div class="right-section">
  		<div id="<?php 
echo $genid;
?>
add_task_select_context_div" class="context-selector-container">
		<?php 
$listeners = array('on_selection_change' => 'og.reload_task_form_selectors()');
if ($task->isNew()) {
    render_member_selectors($projectTask->getObjectTypeId(), $genid, null, array('select_current_context' => true, 'listeners' => $listeners), null, null, false);
} else {
    render_member_selectors($projectTask->getObjectTypeId(), $genid, array_var($task_data, 'selected_members_ids', $task->getMemberIds()), array('listeners' => $listeners), null, null, false);
}
?>
		</div>
		
		<?php 
if (config_option('use_milestones')) {
    ?>
	    <div class="dataBlock">
			<label><?php 
    echo lang('milestone');
    ?>
:</label>
		    <div style="float:left;" id="<?php