예제 #1
0
<?php

trace(__FILE__, 'ProjectMessage::project_tabbed_navigation()');
project_tabbed_navigation();
trace(__FILE__, 'ProjectMessage::canAdd');
if (ProjectMessage::canAdd(logged_user(), active_project())) {
    add_page_action(lang('add message'), get_url('message', 'add'));
}
// if
trace(__FILE__, 'ProjectTaskList::canAdd');
if (ProjectTaskList::canAdd(logged_user(), active_project())) {
    add_page_action(lang('add task list'), get_url('task', 'add_list'));
}
// if
trace(__FILE__, 'ProjectMilestone::canAdd');
if (ProjectMilestone::canAdd(logged_user(), active_project())) {
    add_page_action(lang('add milestone'), get_url('milestone', 'add'));
}
// if
//trace(__FILE__,'project.canChangePermissions()');
//if (active_project()->canChangePermissions(logged_user())) {
//  add_page_action(lang('permissions'), get_url('project', 'permissions'));
//} // if
trace(__FILE__, 'plugin hook');
// PLUGIN HOOK
plugin_manager()->do_action('project_overview_page_actions');
// PLUGIN HOOK
if (use_permitted(logged_user(), active_project(), 'tasks')) {
    add_page_action(lang('download task lists'), get_url('project', 'download_task_lists'));
}
예제 #2
0
 /**
  * Add message
  *
  * @access public
  * @param void
  * @return null
  */
 function add()
 {
     $this->setTemplate('add_message');
     if (!ProjectMessage::canAdd(logged_user(), active_project())) {
         flash_error(lang('no access permissions'));
         $this->redirectToReferer(get_url('message'));
     }
     // if
     $message = new ProjectMessage();
     tpl_assign('message', $message);
     $message_data = array_var($_POST, 'message');
     if (!is_array($message_data)) {
         $message_data = array('milestone_id' => array_var($_GET, 'milestone_id'));
         // array
     }
     // if
     tpl_assign('message_data', $message_data);
     if (is_array(array_var($_POST, 'message'))) {
         try {
             $uploaded_files = ProjectFiles::handleHelperUploads(active_project());
         } catch (Exception $e) {
             $uploaded_files = null;
         }
         // try
         try {
             $message->setFromAttributes($message_data);
             $message->setProjectId(active_project()->getId());
             // Options are reserved only for members of owner company
             if (!logged_user()->isMemberOfOwnerCompany()) {
                 $message->setIsPrivate(false);
                 $message->setIsImportant(false);
                 $message->setCommentsEnabled(true);
                 $message->setAnonymousCommentsEnabled(false);
             }
             // if
             DB::beginWork();
             $message->save();
             $message->subscribeUser(logged_user());
             $message->setTagsFromCSV(array_var($message_data, 'tags'));
             if (is_array($uploaded_files)) {
                 foreach ($uploaded_files as $uploaded_file) {
                     $message->attachFile($uploaded_file);
                     $uploaded_file->setIsPrivate($message->isPrivate());
                     $uploaded_file->setIsVisible(true);
                     $uploaded_file->setExpirationTime(EMPTY_DATETIME);
                     $uploaded_file->save();
                 }
                 // if
             }
             // if
             ApplicationLogs::createLog($message, active_project(), ApplicationLogs::ACTION_ADD);
             DB::commit();
             // Try to send notifications but don't break submission in case of an error
             try {
                 $notify_people = array();
                 $project_companies = active_project()->getCompanies();
                 foreach ($project_companies as $project_company) {
                     $company_users = $project_company->getUsersOnProject(active_project());
                     if (is_array($company_users)) {
                         foreach ($company_users as $company_user) {
                             if (array_var($message_data, 'notify_company_' . $project_company->getId()) == 'checked' || array_var($message_data, 'notify_user_' . $company_user->getId())) {
                                 $message->subscribeUser($company_user);
                                 // subscribe
                                 $notify_people[] = $company_user;
                             }
                             // if
                         }
                         // if
                     }
                     // if
                 }
                 // if
                 Notifier::newMessage($message, $notify_people);
                 // send notification email...
             } catch (Exception $e) {
             }
             // try
             flash_success(lang('success add message', $message->getTitle()));
             $this->redirectTo('message');
             // Error...
         } catch (Exception $e) {
             DB::rollback();
             if (is_array($uploaded_files)) {
                 foreach ($uploaded_files as $uploaded_file) {
                     $uploaded_file->delete();
                 }
                 // foreach
             }
             // if
             $message->setNew(true);
             tpl_assign('error', $e);
         }
         // try
     }
     // if
 }
예제 #3
0
<?php

set_page_title($milestone->getName());
project_tabbed_navigation(PROJECT_TAB_MILESTONES);
project_crumbs(array(array(lang('milestones'), get_url('milestone', 'index')), array($milestone->getName())));
if (!$milestone->isCompleted()) {
    if (ProjectMessage::canAdd(logged_user(), $milestone->getProject())) {
        add_page_action(lang('add message'), $milestone->getAddMessageUrl());
    }
    // if
    if (ProjectTaskList::canAdd(logged_user(), $milestone->getProject())) {
        add_page_action(lang('add task list'), $milestone->getAddTaskListUrl());
    }
    //if
}
// if
?>
<div id="milestones">
<?php 
$this->includeTemplate(get_template_path('view_milestone', 'milestone'));
?>
</div>
 /**
  * Add message
  *
  * @access public
  * @param void
  * @return null
  */
 function add()
 {
     $this->setTemplate('add_message');
     if (logged_user()->isGuest()) {
         flash_error(lang('no access permissions'));
         ajx_current('empty');
         return;
     }
     $notAllowedMember = '';
     if (!ProjectMessage::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 message'))) : flash_error(lang('no context permissions to add', lang("messages"), $notAllowedMember));
         }
         ajx_current("empty");
         return;
     }
     // if
     $message = new ProjectMessage();
     tpl_assign('message', $message);
     $message_data = array_var($_POST, 'message');
     if (!is_array($message_data)) {
         // set layout for modal form
         if (array_var($_REQUEST, 'modal')) {
             $this->setLayout("json");
             tpl_assign('modal', true);
         }
         $message_data = array();
     }
     // if
     tpl_assign('message_data', $message_data);
     if (is_array(array_var($_POST, 'message'))) {
         foreach ($message_data as $k => &$v) {
             $v = remove_scripts($v);
         }
         try {
             if (config_option('untitled_notes')) {
                 if (!array_var($message_data, "name")) {
                     $message_data["name"] = lang("untitled note");
                 }
             }
             // Aliases
             if (config_option("wysiwyg_messages")) {
                 $message_data['type_content'] = "html";
                 $message_data['text'] = preg_replace("/[\n|\r|\n\r]/", '', array_var($message_data, 'text'));
             } else {
                 $message_data['type_content'] = "text";
             }
             $message->setFromAttributes($message_data);
             DB::beginWork();
             $message->save();
             $object_controller = new ObjectController();
             $member_ids = json_decode(array_var($_POST, 'members'));
             $object_controller->add_to_members($message, $member_ids);
             $object_controller->add_subscribers($message);
             $object_controller->link_to_new_object($message);
             $object_controller->add_custom_properties($message);
             DB::commit();
             ApplicationLogs::createLog($message, ApplicationLogs::ACTION_ADD);
             flash_success(lang('success add message', $message->getObjectName()));
             if (array_var($_POST, 'popup', false)) {
                 ajx_current("reload");
             } else {
                 ajx_current("back");
             }
             if (array_var($_REQUEST, 'modal')) {
                 evt_add("reload current panel");
             }
             ajx_add("overview-panel", "reload");
             // Error...
         } catch (Exception $e) {
             DB::rollback();
             $message->setNew(true);
             flash_error($e->getMessage());
             ajx_current("empty");
         }
         // try
     }
     // if
 }
예제 #5
0
 private function save_object($request)
 {
     $response = false;
     if (!empty($request['args'])) {
         $service = $request['srv'];
         switch ($service) {
             case "task":
                 if ($request['args']['id']) {
                     $object = ProjectTasks::instance()->findByid($request['args']['id']);
                 } else {
                     $object = new ProjectTask();
                 }
                 if ($object instanceof ProjectTask) {
                     if (!empty($request['args']['title'])) {
                         $object->setObjectName($request['args']['title']);
                     }
                     if (!empty($request['args']['description'])) {
                         $object->setText($request['args']['description']);
                     }
                     if (!empty($request['args']['due_date'])) {
                         if ($request['args']['due_date'] != '' && $request['args']['due_date'] != date_format_tip('dd/mm/yyyy')) {
                             $date_format = 'dd/mm/yyyy';
                             $object->setDueDate(DateTimeValueLib::dateFromFormatAndString($date_format, $value));
                         }
                     }
                     if (!empty($request['args']['completed'])) {
                         $object->setPercentCompleted($request['args']['completed']);
                     }
                     if (!empty($request['args']['assign_to'])) {
                         $object->setAssignedToContactId($request['args']['assign_to']);
                     }
                     if (!empty($request['args']['priority'])) {
                         $object->setPriority($request['args']['priority']);
                     }
                 }
                 break;
             case 'note':
                 if ($request['args']['id']) {
                     $object = ProjectMessages::instance()->findByid($request['args']['id']);
                 } else {
                     $object = new ProjectMessage();
                 }
                 if ($object instanceof ProjectMessage) {
                     if (!empty($request['args']['title'])) {
                         $object->setObjectName($request['args']['title']);
                     }
                     if (!empty($request['args']['title'])) {
                         $object->setText($request['args']['text']);
                     }
                 }
                 break;
         }
         // END SWITCH
         if ($object) {
             try {
                 $context = array();
                 $members = array();
                 if (!empty($request['args']['members'])) {
                     $members = $request['args']['members'];
                     $context = get_context_from_array($members);
                 }
                 //Check permissions:
                 if ($request['args']['id'] && $object->canEdit(logged_user()) || !$request['args']['id'] && $object->canAdd(logged_user(), $context)) {
                     DB::beginWork();
                     $object->save();
                     $object_controller = new ObjectController();
                     if (!$request['args']['id']) {
                         $object_controller->add_to_members($object, $members);
                     }
                     DB::commit();
                     $response = true;
                 }
             } catch (Exception $e) {
                 DB::rollback();
                 return false;
             }
         }
     }
     return $this->response('json', $response);
 }