Beispiel #1
0
 function get_events()
 {
     $projects = CPM_Project::getInstance()->get_projects();
     unset($projects['total_projects']);
     if (cpm_get_option('task_start_field') == 'on') {
         $enable_start = true;
     } else {
         $enable_start = false;
     }
     $events = array();
     if ($projects) {
         foreach ($projects as $project) {
             $project_id = $project->ID;
             if (absint($_POST['project_id']) && $project_id != absint($_POST['project_id'])) {
                 continue;
             }
             //Get Milestones
             $milestones = CPM_Milestone::getInstance()->get_by_project($project_id);
             if ($milestones) {
                 foreach ($milestones as $milestone) {
                     //Milestone Event
                     $events[] = array('id' => $milestone->ID, 'title' => $milestone->post_title, 'start' => $milestone->due_date, 'url' => cpm_url_milestone_index($project_id), 'color' => '#32b1c8', 'className' => $milestone->completed == 1 ? 'milestone competed' : 'milestone');
                 }
             }
             //Get Tasks
             if (cpm_user_can_access($project_id, 'tdolist_view_private')) {
                 $task_lists = CPM_Task::getInstance()->get_task_lists($project_id, true);
             } else {
                 $task_lists = CPM_Task::getInstance()->get_task_lists($project_id);
             }
             if ($task_lists) {
                 foreach ($task_lists as $task_list) {
                     $tasks = CPM_Task::getInstance()->get_tasks_by_access_role($task_list->ID, $project_id);
                     foreach ($tasks as $task) {
                         $image = '';
                         if (is_array($task->assigned_to)) {
                             foreach ($task->assigned_to as $key => $user_id) {
                                 $image .= get_avatar($user_id, 16);
                             }
                         } else {
                             $image .= get_avatar($task->assigned_to, 16);
                         }
                         //Tasks Event
                         if ($enable_start) {
                             if (isset($task->start_date) && !empty($task->start_date)) {
                                 $start_date = $task->start_date;
                             } else {
                                 $start_date = $task->due_date;
                             }
                             $events[] = array('id' => $task->ID, 'img' => $task->assigned_to == -1 ? '' : $image, 'title' => $task->post_title, 'start' => $start_date, 'end' => $task->due_date, 'complete_status' => $task->completed == 1 ? 'yes' : 'no', 'url' => cpm_url_single_task($project_id, $task_list->ID, $task->ID), 'color' => 'transparent', 'textColor' => '#c86432', 'className' => date('Y-m-d', time()) < $task->due_date ? 'cpm-calender-todo cpm-task-running' : 'cpm-calender-todo cpm-expire-task');
                         } else {
                             $events[] = array('id' => $task->ID, 'img' => $task->assigned_to == -1 ? '' : $image, 'title' => $task->post_title, 'start' => $task->due_date, 'complete_status' => $task->completed == 1 ? 'yes' : 'no', 'url' => cpm_url_single_task($project_id, $task_list->ID, $task->ID), 'color' => 'transparent', 'textColor' => '#c86432', 'className' => date('Y-m-d', time()) < $task->due_date ? 'cpm-calender-todo cpm-task-running' : 'cpm-calender-todo cpm-expire-task');
                         }
                     }
                 }
             }
         }
     }
     return $events;
 }
Beispiel #2
0
 function get_tasks_by_access_role($list_id, $project_id = null)
 {
     if (cpm_user_can_access($project_id)) {
         //for manager lavel
         $tasks = $this->get_tasks($list_id);
     } else {
         if (cpm_user_can_access($project_id, 'todo_view_private')) {
             //for settings role true
             $tasks = $this->get_tasks($list_id, true);
         } else {
             //for settings role false
             $tasks = $this->get_tasks($list_id, false);
         }
     }
     return $tasks;
 }
 /**
  * Create a new todolist.
  *
  * @param int $project_id
  * @param array $data
  *
  *  - tasklist_name (string, required)
  *  - tasklist_detail (string)
  *  - tasklist_privacy (string)
  *  - tasklist_milestone (integer)
  *
  *  - Method: POST
  *  - URL: http://example.com/cpm-json/projects/project_id/lists
  *
  * @since 1.2
  * @return array $response
  */
 public function create_list($project_id, $data)
 {
     $project_id = (int) $project_id;
     $list_id = (int) $list_id;
     if (!$project_id) {
         return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404));
     }
     $manage_capability = cpm_manage_capability();
     if (!$manage_capability && !cpm_is_single_project_manager($project_id)) {
         if (!cpm_project_user_role_pre_chache($project_id)) {
             return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404));
         }
         if (!cpm_user_can_access($project_id, 'create_todolist')) {
             return new WP_Error('permission', __('Sorry! you do not have permission to create todo list', 'cpm'), array('status' => 404));
         }
     }
     if (empty($data['tasklist_name'])) {
         return new WP_Error('task_list_name', __('Task List Name Required', 'cpm'));
     }
     $data['tasklist_milestone'] = isset($data['tasklist_milestone']) ? $data['tasklist_milestone'] : '-1';
     $data['tasklist_privacy'] = isset($data['tasklist_privacy']) ? $data['tasklist_privacy'] : 'no';
     $list_id = cpm()->task->add_list($project_id, $data);
     $get_list = cpm()->task->get_task_list($list_id);
     $response = new WP_JSON_Response();
     $response->set_data($get_list);
     return $response;
 }
Beispiel #4
0
function cpm_check_milestone_privicy($_get_shorcode_attr, $activity)
{
    $message = true;
    foreach ($_get_shorcode_attr as $hook => $attr) {
        $post = get_post($attr['id']);
        if (isset($post->post_type) && $post->post_type == 'milestone') {
            $message_privacy = get_post_meta($post->ID, '_milestone_privacy', true);
            if ($message_privacy == 'yes' && !cpm_user_can_access($activity->comment_post_ID, 'milestone_view_private')) {
                $message = false;
            }
        }
    }
    return $message;
}
            }
        }
    }
} else {
    cpm_show_message(__('No Milestone Found!', 'cpm'));
}
?>

<div class="cpm-new-milestone-form">
    <h3><?php 
_e('Add new milestone', 'cpm');
?>
</h3>

    <?php 
if (cpm_user_can_access($project_id, 'create_milestone')) {
    echo cpm_milestone_form($project_id);
}
?>
</div>

<div class="cpm-milestones">
    <?php 
if ($late_milestones) {
    ?>

        <h3 class="title"><?php 
    _e('Late Milestones', 'cpm');
    ?>
</h3>
        <?php 
Beispiel #6
0
     $parent = get_post($parent_id);
 } else {
     $parent = get_post($attachment->post_parent);
 }
 $post_type_object = get_post_type_object($parent->post_type);
 if ($parent->post_type == 'task') {
     $is_private = get_post_meta($attachment->post_parent, '_task_privacy', true);
     if (!cpm_user_can_access($project_id, 'todo_view_private', $is_private)) {
         continue;
     }
     $task_list = get_post($parent->post_parent);
     $topic_url = cpm_url_single_task($project_id, $task_list->ID, $parent->ID);
 } else {
     if ($parent->post_type == 'task_list') {
         $is_private = get_post_meta($attachment->post_parent, '_tasklist_privacy', true);
         if (!cpm_user_can_access($project_id, 'tdolist_view_private', $is_private)) {
             continue;
         }
         $topic_url = cpm_url_single_tasklist($project_id, $parent->ID);
     } else {
         if ($parent->post_type == 'message') {
             $is_private = get_post_meta($attachment->post_parent, '_message_privacy', true);
             if (!cpm_user_can_access_file($project_id, 'msg_view_private', $is_private)) {
                 continue;
             }
             $topic_url = cpm_url_single_message($project_id, $parent->ID);
         }
     }
 }
 $file_url = sprintf('%s&file_id=%d&project_id=%d', $base_image_url, $file['id'], $project_id);
 if ($file['type'] == 'image') {
 /**
  * Create a new task.
  *
  * @param int $project_id
  * @param int $list_id
  * @param array $data
  *
  *  - task_text (string, required)
  *  - task_privacy (string)
  *  - task_assign (array)
  *  - task_due (date format)
  *  - task_start (date format)
  *
  *  - Method: POST
  *  - URL: http://example.com/cpm-json/projects/project_id/lists/list_id/tasks
  *
  * @since 1.2
  * @return array $response
  */
 public function create_task($project_id, $list_id, $data)
 {
     $project_id = (int) $project_id;
     $list_id = (int) $list_id;
     if (!$project_id) {
         return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404));
     }
     if (!$list_id) {
         return new WP_Error('json_post_invalid_id', __('Invalid todo list ID.'), array('status' => 404));
     }
     if (empty($data['task_text'])) {
         return new WP_Error('task_text', __('Task Name Required', 'cpm'));
     }
     $posts_list = cpm()->task->get_task_list($list_id);
     $manage_capability = cpm_manage_capability();
     if (!$manage_capability && !cpm_is_single_project_manager($project_id)) {
         if (!cpm_project_user_role_pre_chache($project_id)) {
             return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404));
         }
         if (!cpm_user_can_access($project_id, 'create_todolist')) {
             return new WP_Error('permission', __('Sorry! you do not have permission to create todo list', 'cpm'), array('status' => 404));
         }
         if (!cpm_user_can_access($project_id, 'create_todo')) {
             return new WP_Error('permission', __('Sorry! you do not have permission to create todo', 'cpm'), array('status' => 404));
         }
     }
     add_filter('cpm_new_task_notification', array($this, 'change_notification_status'));
     $task_id = cpm()->task->add_task($list_id, $data);
     $get_task = cpm()->task->get_task($task_id);
     $response = new WP_JSON_Response();
     $response->set_data($get_task);
     return $response;
 }
Beispiel #8
0
function cpm_user_can_access_file($project_id, $section, $is_private)
{
    if ($is_private == 'no') {
        return true;
    }
    return cpm_user_can_access($project_id, $section);
}
        printf('<span class="excerpt"> - %s</span>', cpm_excerpt($message->post_content, 70));
    }
    ?>
                </a>
            </td>
            <td class="date"><span><?php 
    echo date_i18n('j M, Y', strtotime($message->post_date));
    ?>
</span></td>
            <td class="comment-count"><span><?php 
    echo cpm_get_number($message->comment_count);
    ?>
</span></td>
            <td class="cpm-actions">
                <?php 
    if ($message->post_author == get_current_user_id() || cpm_user_can_access($project_id)) {
        ?>
                    <a href="#" class="delete-message cpm-icon-delete" title="<?php 
        esc_attr_e('Delete this message', 'cpm');
        ?>
" <?php 
        cpm_data_attr(array('msg_id' => $message->ID, 'project_id' => $project_id, 'confirm' => __('Are you sure to delete this message?', 'cpm')));
        ?>
>
                        <span><?php 
        _e('Delete', 'cpm');
        ?>
</span>
                    </a>
                    <span class="<?php 
        echo $private_class;
<?php

$task_obj = CPM_Task::getInstance();
$list = $task_obj->get_task_list($tasklist_id);
if ($list->private == 'yes' && !cpm_user_can_access($project_id, 'tdolist_view_private')) {
    echo '<h2>' . __('You do no have permission to access this page', 'cpm') . '</h2>';
    return;
}
cpm_get_header(__('To-do List', 'cpm'), $project_id);
?>
<h3 class="cpm-nav-title">
    <a href="<?php 
echo cpm_url_tasklist_index($project_id);
?>
"><?php 
_e('&larr; back', 'cpm');
?>
</a>
    <span class="sep">|</span>
    <?php 
_e('To-do List', 'cpm');
?>
 : <?php 
echo get_the_title($list->ID);
?>
</h3>

<ul class="cpm-todolists">
    <?php 
if ($list) {
    ?>
<?php

$task_obj = CPM_Task::getInstance();
if (cpm_user_can_access($project_id, 'tdolist_view_private')) {
    $lists = $task_obj->get_task_lists($project_id, true);
} else {
    $lists = $task_obj->get_task_lists($project_id);
}
cpm_get_header(__('To-do List', 'cpm'), $project_id);
?>

<h3 class="cpm-nav-title">
    <?php 
_e('To-do Lists', 'cpm');
if (cpm_user_can_access($project_id, 'create_todolist')) {
    ?>
 
        <a id="cpm-add-tasklist" href="#" class="add-new-h2"><?php 
    _e('Add New To-do List', 'cpm');
    ?>
</a>
    <?php 
}
?>
</h2>

<div class="cpm-new-todolist-form">
    <?php 
echo cpm_tasklist_form($project_id);
?>
</div>
<?php

$msg_obj = CPM_Message::getInstance();
$message = $msg_obj->get($message_id);
if (!$message) {
    echo '<h2>' . __('Error: Message not found', 'cpm') . '</h2>';
    return;
}
if ($message->private == 'yes' && !cpm_user_can_access($project_id, 'msg_view_private')) {
    echo '<h2>' . __('You do no have permission to access this page', 'cpm') . '</h2>';
    return;
}
cpm_get_header(__('Messages', 'cpm'), $project_id);
$private_class = $message->private == 'yes' ? 'cpm-lock' : 'cpm-unlock';
?>

<h3 class="cpm-nav-title">
    <a href="<?php 
echo cpm_url_message_index($project_id);
?>
"><?php 
_e('&larr; back', 'cpm');
?>
</a>
</h3>

<div class="cpm-single">

    <h3 class="cpm-entry-title"><?php 
echo get_the_title($message_id);
?>
<?php

$task_obj = CPM_Task::getInstance();
$list = $task_obj->get_task_list($tasklist_id);
$task = $task_obj->get_task($task_id);
if ($task->task_privacy == 'yes' && !cpm_user_can_access($project_id, 'todo_view_private')) {
    echo '<h2>' . __('You do no have permission to access this page', 'cpm') . '</h2>';
    return;
}
cpm_get_header(__('To-do List', 'cpm'), $project_id);
?>
<h3 class="cpm-nav-title">
    <?php 
_e('To-do List', 'cpm');
?>
 : 
    <a href="<?php 
echo cpm_url_single_tasklist($project_id, $list->ID);
?>
"><?php 
echo get_the_title($list->ID);
?>
</a>
</h3>

<div class="cpm-single-task">
    <?php 
echo cpm_task_html($task, $project_id, $list->ID, true);
?>
</div>
 /**
  * Delete project
  *
  * @param int $project_id
  * @param boolen $force
  *
  * - URL: http://example.com/cpm-json/projects/project_id/?force=1
  * - Method: DELETE
  *
  * @since 1.2
  * @return array
  */
 public function delete_project($project_id, $force = false)
 {
     $id = intval($project_id);
     if (!$id) {
         return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404));
     }
     $manage_capability = cpm_manage_capability();
     if (!$manage_capability && !cpm_project_user_role_pre_chache($id)) {
         return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404));
     }
     if (!cpm_user_can_access($id)) {
         return new WP_Error('project_edit_capability', __('You do not have permission to delete this project', 'cpm'));
     }
     $post = get_post($id, ARRAY_A);
     if (empty($post['ID'])) {
         return new WP_Error('json_post_invalid_id', __('Invalid post ID.'), array('status' => 404));
     }
     cpm()->project->delete($id, $force);
     if ($force) {
         return array('message' => __('Permanently deleted post'));
     } else {
         return array('message' => __('Deleted post'));
     }
 }
Beispiel #15
0
                        <div class="cpm-scroll">
                            <?php 
        if (count($project->users)) {
            foreach ($project->users as $id => $user_meta) {
                echo get_avatar($id, 48, '', $user_meta['name']);
            }
        }
        ?>
                        </div>
                    </footer>
                </a>

                <?php 
        $progress = $project_obj->get_progress_by_tasks($project->ID);
        echo cpm_task_completeness($progress['total'], $progress['completed']);
        if (cpm_user_can_access($project->ID)) {
            cpm_project_actions($project->ID);
        }
        ?>
            </article>

        <?php 
    }
    ?>

        <?php 
    cpm_pagination($total_projects, $limit, $pagenum);
    ?>

    <?php 
} else {
 /**
  * Check comment create permission
  *
  * @param int $project_id
  * @param int $post_id
  *
  * @since 1.2
  * @return boolen | array
  */
 function check_create_comment_permission($project_id, $post_id)
 {
     $post_id = intval($post_id);
     $project_id = intval($project_id);
     if (!$post_id) {
         return array('key' => 'json_post_invalid_id', 'message' => __('Invalid post ID.'));
     }
     if (!$project_id) {
         return array('key' => 'json_post_invalid_id', 'message' => __('Invalid project ID.'));
     }
     $post = get_post($post_id);
     $post_type = $post->post_type;
     switch ($post_type) {
         case 'message':
             $manage_capability = cpm_manage_capability();
             if ($manage_capability || cpm_is_single_project_manager($project_id)) {
                 return true;
             } else {
                 if (!cpm_project_user_role_pre_chache($project_id)) {
                     return array('key' => 'permission', 'message' => __('Sorry! you are not assigned in this project', 'cpm'));
                 } else {
                     if (!cpm_user_can_access($project_id, 'create_message')) {
                         return array('key' => 'permission', 'message' => __('Sorry! you do not have permission to view this comments', 'cpm'));
                     }
                 }
             }
             break;
         case 'task':
             $manage_capability = cpm_manage_capability();
             if ($manage_capability || cpm_is_single_project_manager($project_id)) {
                 $condition = true;
             } else {
                 if (!cpm_project_user_role_pre_chache($project_id)) {
                     return array('key' => 'permission', 'message' => __('Sorry! you are not assinged in this project', 'cpm'), array('status' => 404));
                 } else {
                     if (!cpm_user_can_access($project_id, 'tdolist_view_private')) {
                         return array('key' => 'permission', 'message' => __('Sorry! you do no have permission to view this comment', 'cpm'), array('status' => 404));
                     } else {
                         if (!cpm_user_can_access($project_id, 'create_todo')) {
                             return array('key' => 'permission', 'message' => __('Sorry! you do no have permission to view this comment', 'cpm'), array('status' => 404));
                         }
                     }
                 }
             }
             break;
         case 'task_list':
             $manage_capability = cpm_manage_capability();
             if ($manage_capability || cpm_is_single_project_manager($project_id)) {
                 return true;
             } else {
                 if (!cpm_project_user_role_pre_chache($project_id)) {
                     return array('key' => 'permission', 'message' => __('Sorry! you are not assinged in this project', 'cpm'), array('status' => 404));
                 } else {
                     if (!cpm_user_can_access($project_id, 'create_todolist')) {
                         return array('key' => 'permission', 'message' => __('Sorry! you do no have permission to view this comment', 'cpm'), array('status' => 404));
                     }
                 }
             }
             break;
     }
     return true;
 }
Beispiel #17
0
 /**
  * Generates navigational menu for a project
  *
  * @param int $project_id
  * @return array
  */
 function nav_links($project_id)
 {
     $links = array(__('Activity', 'cpm') => cpm_url_project_details($project_id), __('Messages', 'cpm') => cpm_url_message_index($project_id), __('To-do Lists', 'cpm') => cpm_url_tasklist_index($project_id), __('Milestones', 'cpm') => cpm_url_milestone_index($project_id), __('Files', 'cpm') => cpm_url_file_index($project_id));
     $links = apply_filters('cpm_project_nav_links', $links, $project_id);
     if (cpm_user_can_access($project_id)) {
         $links[__('Settings', 'cpm')] = cpm_url_settings_index($project_id);
     }
     return $links;
 }
 /**
  * Create a new milestone.
  *
  * @param int $project_id
  * @param array $data
  *
  *  - milestone_name (string, required)
  *  - milestone_due (date format)
  *  - milestone_detail (string)
  *  - milestone_privacy (string)
  *
  *  - Method: POST
  *  - URL: http://example.com/cpm-json/projects/project_id/milestones
  *
  * @since 1.2
  * @return array $response
  */
 public function create_milestone($project_id, $data)
 {
     $project_id = intval($project_id);
     if (!$project_id) {
         return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404));
     }
     if (isset($data['milestone_name']) && empty($data['milestone_name'])) {
         return new WP_Error('milestone_name', __('Milestone Name Required', 'cpm'));
     }
     $manage_capability = cpm_manage_capability();
     if (!$manage_capability && !cpm_is_single_project_manager($project_id)) {
         if (!cpm_project_user_role_pre_chache($project_id)) {
             return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404));
         }
         if (!cpm_user_can_access($project_id, 'create_milestone')) {
             return new WP_Error('permission', __('Sorry! you do not have permission to create milestone', 'cpm'), array('status' => 404));
         }
     }
     $milestone_id = cpm()->milestone->create($project_id, $data);
     $get_milestone = cpm()->milestone->get($milestone_id);
     $response = new WP_JSON_Response();
     $response->set_data($get_milestone);
     return $response;
 }
Beispiel #19
0
echo $project_id;
?>
" placeholder="<?php 
_e('Search...', 'cpm');
?>
" id="cpm-single-project-search"></div>
</div>

<h2 class="nav-tab-wrapper">
    <?php 
echo $pro_obj->nav_menu($project_id, $cpm_active_menu);
?>
</h2>

<?php 
if (cpm_user_can_access($project_id)) {
    ?>
    <script type="text/javascript">
        jQuery(function($) {
            $( "#cpm-create-user-wrap" ).dialog({
                autoOpen: false,
                modal: true,
                dialogClass: 'cpm-ui-dialog',
                width: 400,
                height: 353,
                position:['middle', 100]
            });
        })
    </script>
<?php 
}
Beispiel #20
0
    /**
     * List all projects
     *
     * @since 1.0
     */
    function list_projects()
    {
        $project_obj = CPM_Project::getInstance();
        $projects = $project_obj->get_projects();
        $status_class = isset($_GET['status']) ? $_GET['status'] : 'active';
        if (function_exists('cpm_project_count')) {
            $count = cpm_project_count();
        }
        ?>

        <div class="icon32" id="icon-themes"><br></div>
        <h2><?php 
        _e('Project Manager', 'cpm');
        ?>
</h2>

        <?php 
        if (function_exists('cpm_project_filters')) {
            cpm_project_filters();
        }
        ?>

        <div class="cpm-projects">

            <?php 
        if (function_exists('cpm_project_filters')) {
            ?>
                <ul class="list-inline order-statuses-filter">
                    <li<?php 
            echo $status_class == 'all' ? ' class="active"' : '';
            ?>
>
                        <a href="<?php 
            echo cpm_url_all();
            ?>
"><?php 
            _e('All', 'cpm');
            ?>
</a>
                    </li>
                    <li<?php 
            echo $status_class == 'active' ? ' class="active"' : '';
            ?>
>
                        <a class="cpm-active" href="<?php 
            echo cpm_url_active();
            ?>
"><?php 
            printf(__('Active (%d)', 'cpm'), $count['active']);
            ?>
</a>
                    </li>
                    <li<?php 
            echo $status_class == 'archive' ? ' class="active"' : '';
            ?>
>
                        <a class="cpm-archive-head" href="<?php 
            echo cpm_url_archive();
            ?>
"><?php 
            printf(__('Completed (%d)', 'cpm'), $count['archive']);
            ?>
</a>
                    </li>
                </ul>
            <?php 
        }
        ?>

            <?php 
        if (cpm_manage_capability('project_create_role')) {
            ?>
                <nav class="cpm-new-project">
                    <a href="#" id="cpm-create-project"><span><?php 
            _e('New Project', 'cpm');
            ?>
</span></a>
                </nav>
            <?php 
        }
        ?>

            <?php 
        foreach ($projects as $project) {
            if (!$project_obj->has_permission($project)) {
                continue;
            }
            ?>
                <article class="cpm-project">
                    <?php 
            if (cpm_is_project_archived($project->ID)) {
                ?>
                        <div class="cpm-completed-wrap"><div class="ribbon-green"><?php 
                _e('Completed', 'cpm');
                ?>
</div></div>
                    <?php 
            }
            ?>

                    <a href="<?php 
            echo cpm_url_project_details($project->ID);
            ?>
">
                        <h5><?php 
            echo get_the_title($project->ID);
            ?>
</h5>

                        <div class="cpm-project-detail"><?php 
            echo cpm_excerpt($project->post_content, 55);
            ?>
</div>
                        <div class="cpm-project-meta">
                            <?php 
            echo cpm_project_summary($project->info);
            ?>
                        </div>

                        <footer class="cpm-project-people">
                            <div class="cpm-scroll">
                            <?php 
            if (count($project->users)) {
                foreach ($project->users as $id => $user_meta) {
                    echo get_avatar($id, 48, '', $user_meta['name']);
                }
            }
            ?>
                            </div>
                        </footer>
                    </a>

                    <?php 
            $progress = $project_obj->get_progress_by_tasks($project->ID);
            echo cpm_task_completeness($progress['total'], $progress['completed']);
            if (cpm_user_can_access($project->ID)) {
                cpm_project_actions($project->ID);
            }
            ?>


                </article>

            <?php 
        }
        ?>

        </div>

        <div id="cpm-project-dialog" title="<?php 
        _e('Start a new project', 'cpm');
        ?>
" style="display: none;">
            <?php 
        if ($project_obj->has_admin_rights()) {
            ?>
                <?php 
            cpm_project_form();
            ?>
            <?php 
        }
        ?>
        </div>

        <div id="cpm-create-user-wrap">
            <?php 
        if ($project_obj->has_admin_rights()) {
            ?>
                <?php 
            cpm_user_create_form();
            ?>
            <?php 
        }
        ?>
        </div>


        <script type="text/javascript">
            jQuery(function($) {
                $( "#cpm-project-dialog, #cpm-create-user-wrap" ).dialog({
                    autoOpen: false,
                    modal: true,
                    dialogClass: 'cpm-ui-dialog',
                    width: 485,
                    height: 425,
                    position:['middle', 100]
                });
            });

            jQuery(function($) {
                $( "#cpm-create-user-wrap" ).dialog({
                    autoOpen: false,
                    modal: true,
                    dialogClass: 'cpm-ui-dialog',
                    width: 400,
                    height: 353,
                    position:['middle', 100]
                });
            });
        </script>
        <?php 
    }