Ejemplo n.º 1
0
if ($time_estimate >= 0 || $total_minutes >=0){?>
<br/>
<table>
<tr>
	<td><div style="font-weight:bold"><?php echo lang('percent completed'). ':&nbsp;'?></div></td>
	<td><?php echo taskPercentCompletedBar($task_list) //$task_list->getPercentCompleted() . "%"; ?></td>
</tr>

<?php if ($time_estimate > 0) {?>
<tr><td>
	<div style="font-weight:bold"><?php echo lang('estimated time'). ':&nbsp;'?></div></td><td> 
		<?php echo DateTimeValue::FormatTimeDiff(new DateTimeValue(0), new DateTimeValue($time_estimate * 60), 'hm', 60) ?></td></tr>
<?php } ?>

<?php if ($total_minutes > 0 && can_manage_time(logged_user())) {?>
	<tr><td><div style="font-weight:bold"><?php echo lang('total time worked'). ':&nbsp;' ?></div></td><td>
		<span style="font-size:120%;font-weight:bold;<?php echo ($time_estimate > 0 && $total_minutes > $time_estimate) ? 'color:#FF0000':'' ?>">
			<?php echo DateTimeValue::FormatTimeDiff(new DateTimeValue(0), new DateTimeValue($total_minutes * 60), 'hm', 60) ?>
		</span></td></tr>
<?php } ?>
</table>

<div class="desc"><?php echo lang('percent completed detail', isset($counter) ? $counter : '0') ?></div>

<?php } ?>

<?php if ($task_list->isRepetitive()) { ?>
	<div style="font-weight:bold">
	<?php 
		echo '<br>' . lang('this task repeats'). '&nbsp;';
Ejemplo n.º 2
0
og.config = {
	'mails_per_page': <?php echo json_encode(user_config_option('mails_per_page',50)) ?>,
	'contacts_per_page': <?php echo json_encode(user_config_option('contacts_per_page',50)) ?>,
	'files_per_page': <?php echo json_encode(config_option('files_per_page', 50)) ?>,
	'days_on_trash': <?php echo json_encode(config_option("days_on_trash", 0)) ?>,
	'checkout_notification_dialog': <?php echo json_encode(config_option('checkout_notification_dialog', 0)) ?>,
	'use_time_in_task_dates': <?php echo json_encode(config_option('use_time_in_task_dates')) ?>,
	'can_assign_tasks_to_companies': <?php echo json_encode(config_option('can_assign_tasks_to_companies')) ?>,
	'enable_notes_module': <?php echo json_encode(module_enabled("messages")) ?>,
	'enable_email_module': <?php echo json_encode(module_enabled("mails")) ?>,
	'enable_contacts_module': <?php echo json_encode(module_enabled("contacts")) ?>,
	'enable_calendar_module': <?php echo json_encode(module_enabled("calendar")) ?>,
	'enable_documents_module': <?php echo json_encode(module_enabled("documents")) ?>,
	'enable_tasks_module': <?php echo json_encode(module_enabled("tasks")) ?>,
	'enable_weblinks_module': <?php echo json_encode(module_enabled('weblinks')) ?>,
	'enable_time_module': <?php echo json_encode(module_enabled("time") && can_manage_time(logged_user())) ?>,
	'enable_reporting_module': <?php echo json_encode(module_enabled("reporting")) ?>
};
og.preferences = {
	'viewContactsChecked': <?php echo json_encode(user_config_option('viewContactsChecked')) ?>,
	'viewUsersChecked': <?php echo json_encode(user_config_option('viewUsersChecked')) ?>,
	'viewCompaniesChecked': <?php echo json_encode(user_config_option('viewCompaniesChecked')) ?>,
	'rememberGUIState': <?php echo user_config_option('rememberGUIState') ? '1' : '0' ?>,
	'time_format_use_24': <?php echo json_encode(user_config_option('time_format_use_24')) ?>,
	'show_unread_on_title': <?php echo user_config_option('show_unread_on_title') ? '1' : '0' ?>,
	'email_polling': <?php echo json_encode(user_config_option('email_polling')) ?> ,
	'email_check_acc_errors': <?php echo json_encode(user_config_option('mail_account_err_check_interval')) ?> ,
	'date_format': <?php echo json_encode(user_config_option('date_format')) ?>,
	'date_format_tip': <?php echo json_encode(date_format_tip(user_config_option('date_format'))) ?>,
	'start_monday': <?php echo user_config_option('start_monday') ? '1' : '0' ?>,
	'draft_autosave_timeout': <?php echo json_encode(user_config_option('draft_autosave_timeout')) ?>,
Ejemplo n.º 3
0
?>
,
	'enable_documents_module': <?php 
echo json_encode(module_enabled("documents"));
?>
,
	'enable_tasks_module': <?php 
echo json_encode(module_enabled("tasks"));
?>
,
	'enable_weblinks_module': <?php 
echo json_encode(module_enabled('weblinks'));
?>
,
	'enable_time_module': <?php 
echo json_encode(module_enabled("time") && can_manage_time(logged_user(), true));
?>
,
	'enable_reporting_module': <?php 
echo json_encode(module_enabled("reporting"));
?>
};
og.preferences = {
	'rememberGUIState': <?php 
echo user_config_option('rememberGUIState') ? '1' : '0';
?>
,
	'show_unread_on_title': <?php 
echo user_config_option('show_unread_on_title') ? '1' : '0';
?>
,
Ejemplo n.º 4
0
 function index()
 {
     $tasksUserId = array_var($_GET, 'tu');
     if (is_null($tasksUserId)) {
         $tasksUserId = user_config_option('TM tasks user filter', logged_user()->getId());
     } else {
         if (user_config_option('TM tasks user filter') != $tasksUserId) {
             set_user_config_option('TM tasks user filter', $tasksUserId, logged_user()->getId());
         }
     }
     $timeslotsUserId = array_var($_GET, 'tsu');
     if (is_null($timeslotsUserId)) {
         $timeslotsUserId = user_config_option('TM user filter', 0);
     } else {
         if (user_config_option('TM user filter') != $timeslotsUserId) {
             set_user_config_option('TM user filter', $timeslotsUserId, logged_user()->getId());
         }
     }
     $showTimeType = array_var($_GET, 'stt');
     if (is_null($showTimeType)) {
         $showTimeType = user_config_option('TM show time type', 0);
     } else {
         if (user_config_option('TM show time type') != $showTimeType) {
             set_user_config_option('TM show time type', $showTimeType, logged_user()->getId());
         }
     }
     $start = array_var($_GET, 'start', 0);
     $limit = 20;
     $tasksUser = Contacts::findById($tasksUserId);
     $timeslotsUser = Contacts::findById($timeslotsUserId);
     //Active tasks view
     $open_timeslots = Timeslots::instance()->listing(array("extra_conditions" => " AND end_time = '" . EMPTY_DATETIME . "' AND contact_id = " . $tasksUserId))->objects;
     $tasks = array();
     foreach ($open_timeslots as $open_timeslot) {
         $task = ProjectTasks::findById($open_timeslot->getRelObjectId());
         if ($task instanceof ProjectTask && !$task->isCompleted() && !$task->isTrashed() && !$task->isArchived()) {
             $tasks[] = $task;
         }
     }
     ProjectTasks::populateTimeslots($tasks);
     //Timeslots view
     $total = 0;
     switch ($showTimeType) {
         case 0:
             //Show only timeslots added through the time panel
             $result = Timeslots::getGeneralTimeslots(active_context(), $timeslotsUser, $start, $limit);
             $timeslots = $result->objects;
             $total = $result->total;
             break;
         default:
             throw new Error('Unrecognised TM show time type: ' . $showTimeType);
     }
     //Get Users Info
     $users = array();
     $context = active_context();
     if (!can_manage_time(logged_user())) {
         if (can_add(logged_user(), $context, Timeslots::instance()->getObjectTypeId())) {
             $users = array(logged_user());
         }
     } else {
         if (logged_user()->isMemberOfOwnerCompany()) {
             $users = Contacts::getAllUsers();
         } else {
             $users = logged_user()->getCompanyId() > 0 ? Contacts::getAllUsers(" AND `company_id` = " . logged_user()->getCompanyId()) : array(logged_user());
         }
         $tmp_users = array();
         foreach ($users as $user) {
             if (can_add($user, $context, Timeslots::instance()->getObjectTypeId())) {
                 $tmp_users[] = $user;
             }
         }
         $users = $tmp_users;
     }
     //Get Companies Info
     if (logged_user()->isMemberOfOwnerCompany() || logged_user()->isAdminGroup()) {
         $companies = Contacts::getCompaniesWithUsers();
     } else {
         $companies = array();
         if (logged_user()->getCompanyId() > 0) {
             $companies[] = logged_user()->getCompany();
         }
     }
     $required_dimensions = DimensionObjectTypeContents::getRequiredDimensions(Timeslots::instance()->getObjectTypeId());
     $draw_inputs = !$required_dimensions || count($required_dimensions) == 0;
     if (!$draw_inputs) {
         $ts_ots = DimensionObjectTypeContents::getDimensionObjectTypesforObject(Timeslots::instance()->getObjectTypeId());
         $context = active_context();
         foreach ($context as $sel) {
             if ($sel instanceof Member) {
                 foreach ($ts_ots as $ts_ot) {
                     if ($sel->getDimensionId() == $ts_ot->getDimensionId() && $sel->getObjectTypeId() == $ts_ot->getDimensionObjectTypeId()) {
                         $draw_inputs = true;
                         break;
                     }
                 }
                 if ($draw_inputs) {
                     break;
                 }
             }
         }
     }
     tpl_assign('draw_inputs', $draw_inputs);
     tpl_assign('selected_user', logged_user()->getId());
     tpl_assign('timeslots', $timeslots);
     tpl_assign('tasks', $tasks);
     if (count($tasks) > 0) {
         tpl_assign('all_users', Contacts::getAllUsers());
     }
     tpl_assign('users', $users);
     tpl_assign('start', $start);
     tpl_assign('limit', $limit);
     tpl_assign('total', $total);
     tpl_assign('companies', $companies);
     ajx_set_no_toolbar(true);
 }
 function delete_project_timeslot()
 {
     if (!can_manage_time(logged_user(), true)) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     ajx_current("empty");
     $timeslot = Timeslots::findById(get_id());
     if (!$timeslot instanceof Timeslot) {
         flash_error(lang('timeslot dnx'));
         return;
     }
     if (!$timeslot->canDelete(logged_user())) {
         flash_error(lang('no access permissions'));
         return;
     }
     try {
         DB::beginWork();
         $timeslot->delete();
         DB::commit();
         ajx_extra_data(array("timeslotId" => get_id()));
     } catch (Exception $e) {
         DB::rollback();
         flash_error($e->getMessage());
     }
     // try
 }
 function canAddTimeslot($user)
 {
     return $this->canChangeStatus($user) || can_manage_time($user) || can_access_pgids($user->getPermissionGroupIds(), $this->getMembers(), Timeslots::instance()->getObjectTypeId(), ACCESS_LEVEL_WRITE);
 }
Ejemplo n.º 7
0
	/**
	 * Empty implementation of static method. Update tag permissions are check by the taggable
	 * object, not tag itself
	 *
	 * @param Contact $user
	 * @return boolean
	 */
	function canDelete(Contact $user) {
		return ($user->getId() == $this->getContactId() || can_manage_time($user));
	}
Ejemplo n.º 8
0
<div class="coInputSeparator"></div>
<div class="coInputMainBlock">
  <div class="formAddTimeslotDescription">

    <div class="bold"><?php 
echo lang('description');
?>
:&nbsp;</div>
    <?php 
echo textarea_field("timeslot[description]", array_var($timeslot_data, 'description'), array('class' => 'short', 'id' => 'addTimeslotDescription', 'tabindex' => '10'));
?>
  </div>

	<table style="margin-top:10px;">
<?php 
if (can_manage_time(logged_user())) {
    echo '<tr><td style="vertical-align:middle;"><span class="bold">' . lang("person") . ':&nbsp;</span></td>';
    if (logged_user()->isMemberOfOwnerCompany()) {
        $users = Contacts::getAllUsers();
    } else {
        $users = logged_user()->getCompanyId() > 0 ? Contacts::getAllUsers(" AND `company_id` = " . logged_user()->getCompanyId()) : array(logged_user());
    }
    $tmp_users = array();
    foreach ($users as $user) {
        $rel_object = $timeslot->getRelObject();
        $is_assigned = $rel_object instanceof ProjectTask && $rel_object->getAssignedToContactId() == $user->getId();
        if ($is_assigned || can_add($user, $rel_object->getMembers(), Timeslots::instance()->getObjectTypeId())) {
            $tmp_users[] = $user;
        }
    }
    $users = $tmp_users;
Ejemplo n.º 9
0
function can_add_timeslots($user, $members)
{
    return can_manage_time($user) || can_access_pgids($user->getPermissionGroupIds(), $members, Timeslots::instance()->getObjectTypeId(), ACCESS_LEVEL_WRITE);
}
Ejemplo n.º 10
0
" target="_blank"><?php 
    echo $object->getViewUrl();
    ?>
</a>
			</div><?php 
}
$more_content_templates = array();
Hook::fire("more_content_templates", $object, $more_content_templates);
foreach ($more_content_templates as $ct) {
    tpl_assign('object', $object);
    $this->includeTemplate(get_template_path($ct[0], $ct[1]));
}
if ($object instanceof ApplicationDataObject) {
    echo render_custom_properties($object);
}
if ($object instanceof ProjectDataObject && $object->allowsTimeslots() && can_manage_time(logged_user())) {
    echo render_object_timeslots($object, $object->getViewUrl());
}
if ($object instanceof ProjectDataObject && $object->canView(logged_user()) || $object instanceof User) {
    echo render_object_latest_activity($object);
}
if ($object instanceof ProjectDataObject && $object->isCommentable()) {
    echo render_object_comments($object, $object->getViewUrl());
}
?>
			</td>
		</tr>
		<tr>
			<td class="coViewBottomLeft"></td>
			<td class="coViewBottom" colspan=2></td>
			<td class="coViewBottomRight" style="width:12px">&nbsp;</td>
Ejemplo n.º 11
0
				<?php 
//get skipped dimensions for this view
$dimensions_to_show = explode(",", user_config_option("add_timeslot_view_dimensions_combos"));
$dimensions_to_show = is_array($dimensions_to_show) ? array_filter($dimensions_to_show) : array();
$dimensions_to_skip = array_diff(get_user_dimensions_ids(), $dimensions_to_show);
$listeners = array();
$listeners = array('on_selection_change' => 'ogTimeManager.renderUserCombo("' . $genid . '")');
if (!empty($dimensions_to_show)) {
    render_member_selectors(Timeslots::instance()->getObjectTypeId(), $genid, null, array('select_current_context' => true, 'listeners' => $listeners, 'horizontal' => true, 'width' => '270'), $dimensions_to_skip, null, true);
}
?>
					
			</div>
						
			<div class="small-member-selector TMTimespanSelectorHeight" style="<?php 
echo can_manage_time(logged_user()) ? '' : 'display: none;';
?>
">
				<?php 
echo label_tag(lang('user'));
?>
				<?php 
$options = array();
foreach ($users as $user) {
    $options[] = option_tag($user->getObjectName(), $user->getId(), $selected_user == $user->getId() ? array("selected" => "selected") : null);
}
echo select_box("timeslot[contact_id]", $options, array('id' => $genid . 'tsUser', 'style' => 'max-width:100px', 'tabIndex' => 1000, 'class' => 'TMTimespanRealSelector'));
?>
			</div>
			
			<div class="small-member-selector TMTimespanSelectorHeight" >
 /**
  * Delete specific timeslot
  *
  * @param void
  * @return null
  */
 function delete()
 {
     if (!can_manage_time(logged_user(), true)) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     $timeslot = Timeslots::findById(get_id());
     if (!$timeslot instanceof Timeslot) {
         flash_error(lang('timeslot dnx'));
         ajx_current("empty");
         return;
     }
     // if
     $object = $timeslot->getObject();
     if (!$object instanceof ProjectDataObject) {
         flash_error(lang('object dnx'));
         ajx_current("empty");
         return;
     }
     // if
     if (trim($object->getObjectUrl())) {
         $redirect_to = $object->getObjectUrl();
     }
     if (!$timeslot->canDelete(logged_user())) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     // if
     try {
         DB::beginWork();
         $timeslot->delete();
         ApplicationLogs::createLog($timeslot, $object->getWorkspaces(), ApplicationLogs::ACTION_DELETE);
         $object->onDeleteTimeslot($timeslot);
         DB::commit();
         flash_success(lang('success delete timeslot'));
         ajx_current("reload");
     } catch (Exception $e) {
         DB::rollback();
         flash_error(lang('error delete timeslot'));
         ajx_current("empty");
     }
     // try
 }