Esempio n. 1
0
 /**
  * needs separate functions for translation fieldnames on runtime
  */
 public static function init()
 {
     #self::$type= ITEM_TASK;
     addProjectItemFields(self::$fields_static);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1, 'log_changes' => false)), new FieldString(array('name' => 'name', 'title' => __('Name'), 'view_in_forms' => true, 'required' => true)), new FieldString(array('name' => 'short', 'title' => __('Short'), 'view_in_forms' => true)), new FieldDate(array('name' => 'date_start', 'title' => __('Date start'), 'view_in_forms' => true, 'default' => FINIT_TODAY, 'log_changes' => false)), new FieldDate(array('name' => 'date_closed', 'title' => __('Date closed'), 'view_in_forms' => true, 'default' => FINIT_NEVER, 'log_changes' => false)), new FieldOption(array('name' => 'status', 'title' => __('Status'), 'view_in_forms' => true, 'default' => 2)), new FieldInt(array('name' => 'prio', 'title' => __('Priority'), 'view_in_forms' => true, 'default' => 3)), new FieldInt(array('name' => 'for_milestone', 'title' => __('For Milestone'), 'view_in_forms' => true, 'default' => 0)), new FieldInt(array('name' => 'resolved_version', 'title' => __('resolved in version'), 'view_in_forms' => true, 'default' => 0)), new FieldInt(array('name' => 'resolve_reason', 'title' => __('Resolve reason'), 'view_in_forms' => true, 'default' => RESOLVED_UNDEFINED)), new FieldText(array('name' => 'description', 'title' => __('Description'), 'view_in_forms' => true)), new FieldBool(array('name' => 'is_folder', 'title' => __('show as folder (may contain other tasks)'), 'view_in_forms' => true, 'default' => 0)), new FieldBool(array('name' => 'is_milestone', 'title' => __('is a milestone'), 'tooltip' => __('milestones are shown in a different list'), 'view_in_forms' => false, 'default' => 0)), new FieldInternal(array('name' => 'is_released', 'title' => __('released'), 'view_in_forms' => false, 'default' => RELEASED_UNDEFINED, 'log_changes' => true)), new FieldDatetime(array('name' => 'time_released', 'title' => __('release time'), 'view_in_forms' => true, 'default' => FINIT_NEVER)), new FieldPercentage(array('name' => 'completion', 'title' => __('Completion'), 'view_in_forms' => true, 'default' => 0)), new FieldInternal(array('name' => 'parent_task', 'view_in_forms' => true, 'log_changes' => true)), new FieldInt(array('name' => 'estimated', 'title' => __('Estimated time'), 'view_in_forms' => true)), new FieldInt(array('name' => 'estimated_max', 'title' => __('Estimated worst case'), 'view_in_forms' => true)), new FieldInternal(array('name' => 'issue_report', 'log_changes' => false)), new FieldOption(array('name' => 'label', 'title' => __('Label'), 'view_in_forms' => true, 'log_changes' => true)), new FieldDateTime(array('name' => 'planned_start', 'title' => __('Planned Start'), 'view_in_forms' => true, 'default' => FINIT_NEVER)), new FieldDateTime(array('name' => 'planned_end', 'title' => __('Planned End'), 'view_in_forms' => true, 'default' => FINIT_NEVER)), new FieldInternal(array('name' => 'view_collapsed', 'default' => 0, 'log_changes' => false)), new FieldInternal(array('name' => 'category', 'default' => TCATEGORY_TASK, 'log_changes' => true)), new FieldInt(array('name' => 'order_id', 'title' => __('Order Id'), 'default' => 0, 'log_changes' => true)), new FieldString(array('name' => 'calculation', 'title' => __('Calculation') . " " . __('in Euro'), 'default' => 0.0)), new FieldBool(array('name' => 'is_news', 'title' => __('Display in project news'), 'tooltip' => __('List title and description in project overview'), 'view_in_forms' => true, 'default' => 0, 'log_changes' => true)), new FieldBool(array('name' => 'show_folder_as_documentation', 'title' => __('Display folder as topic'), 'view_in_forms' => true, 'default' => 0, 'log_changes' => true))) as $f) {
         self::$fields_static[$f->name] = $f;
     }
 }
 /**
  * Init the objects fields
  */
 static function initFields()
 {
     global $projectperson_fields;
     $projectperson_fields = array();
     addProjectItemFields($projectperson_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'state', 'default' => 1, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'person')), new FieldInternal(array('name' => 'project', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldString(array('name' => 'name', 'default' => 'member', 'title' => __('job'))), new FieldInternal(array('name' => 'proj_rights')), new FieldInternal(array('name' => 'level_create', 'default' => PUB_LEVEL_OPEN)), new FieldInternal(array('name' => 'level_view', 'default' => PUB_LEVEL_OPEN)), new FieldInternal(array('name' => 'level_edit', 'default' => PUB_LEVEL_OPEN)), new FieldInternal(array('name' => 'level_reduce', 'default' => PUB_LEVEL_OPEN)), new FieldInternal(array('name' => 'level_delete', 'default' => PUB_LEVEL_OPEN)), new FieldInternal(array('name' => 'adjust_effort_style', 'default' => EFFORT_STYLE_DURATION)), new FieldInternal(array('name' => 'role', 'title' => __('role'), 'default' => PROFILE_USER)), new FieldString(array('name' => 'salary_per_hour', 'title' => __('Salary per hour') . " " . __('in Euro'), 'default' => 0.0, 'export' => false))) as $f) {
         $projectperson_fields[$f->name] = $f;
     }
 }
 static function initFields()
 {
     global $g_employment_fields;
     $g_employment_fields = array();
     addProjectItemFields($g_employment_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'person')), new FieldInternal(array('name' => 'company')), new FieldString(array('name' => 'comment'))) as $f) {
         $g_employment_fields[$f->name] = $f;
     }
 }
Esempio n. 4
0
 /**
  *  setup the database fields for file-object as global assoc-array
  */
 static function initFields()
 {
     global $g_file_fields;
     $g_file_fields = array();
     addProjectItemFields($g_file_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldString(array('name' => 'name', 'title' => __('Name'), 'view_in_forms' => true)), new FieldString(array('name' => 'org_filename', 'view_in_forms' => false)), new FieldString(array('name' => 'tmp_filename', 'view_in_forms' => false)), new FieldString(array('name' => 'tmp_dir', 'view_in_forms' => false)), new FieldString(array('name' => 'mimetype', 'view_in_forms' => false)), new FieldInternal(array('name' => 'status', 'view_in_forms' => false)), new FieldInt(array('name' => 'filesize', 'view_in_forms' => false)), new FieldInt(array('name' => 'version', 'view_in_forms' => false, 'default' => 1)), new FieldBool(array('name' => 'is_image', 'view_in_forms' => false, 'default' => 0)), new FieldBool(array('name' => 'is_latest', 'view_in_forms' => false, 'default' => 1)), new FieldString(array('name' => 'thumbnail', 'view_in_forms' => false)), new FieldInternal(array('name' => 'parent_item', 'view_in_forms' => false)), new FieldInternal(array('name' => 'org_file', 'view_in_forms' => false)), new FieldText(array('name' => 'description', 'title' => __('Description')))) as $f) {
         $g_file_fields[$f->name] = $f;
     }
 }
Esempio n. 5
0
 static function initFields()
 {
     global $g_project_fields;
     $g_project_fields = array();
     addProjectItemFields($g_project_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'state', 'default' => 1, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldString(array('name' => 'name', 'title' => __('Name'), 'required' => true)), new FieldString(array('name' => 'short', 'title' => __('Short'))), new FieldString(array('name' => 'status_summary', 'title' => __('Status summary'))), new FieldString(array('name' => 'color', 'title' => __('Color'))), new FieldDate(array('name' => 'date_start', 'title' => __('Date start'), 'default' => FINIT_TODAY)), new FieldDate(array('name' => 'date_closed', 'title' => __('Date closed'), 'default' => FINIT_NEVER)), new FieldOption(array('name' => 'status', 'title' => __('Status'), 'default' => 3)), new FieldString(array('name' => 'projectpage', 'title' => __('Project page'))), new FieldString(array('name' => 'wikipage', 'title' => __('Wiki page'))), new FieldInt(array('name' => 'prio', 'title' => __('Priority'), 'default' => 3)), new FieldText(array('name' => 'description', 'title' => __('Description'))), new FieldInt(array('name' => 'company', 'title' => __('Company'))), new FieldBool(array('name' => 'show_in_home', 'default' => 1, 'title' => __('show tasks in home'))), new FieldInternal(array('name' => 'settings', 'default' => confGet('PROJECT_DEFAULT_SETTINGS'), 'log_changes' => true)), new FieldHidden(array('name' => 'labels', 'default' => confGet("PROJECT_DEFAULT_LABELS"))), new FieldInternal(array('name' => 'default_pub_level', 'view_in_forms' => false, 'default' => PUB_LEVEL_OPEN))) as $f) {
         $g_project_fields[$f->name] = $f;
     }
 }
Esempio n. 6
0
 /**
  *  setup the database fields for effort-object as global assoc-array
  */
 static function initFields()
 {
     global $effort_fields;
     $effort_fields = array();
     addProjectItemFields($effort_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'project', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldString(array('name' => 'name', 'title' => __('Summary'), 'tooltip' => __('optional if tasks linked to this effort'))), new FieldInternal(array('name' => 'task')), new FieldInternal(array('name' => 'billing')), new FieldInternal(array('name' => 'productivity', 'default' => 3)), new FieldDatetime(array('name' => 'time_start', 'title' => __('Time Start'), 'default' => FINIT_NOW)), new FieldDatetime(array('name' => 'time_end', 'title' => __('Time End'), 'default' => FINIT_NOW)), new FieldInternal(array('name' => 'person')), new FieldText(array('name' => 'description', 'title' => __('Description'))), new FieldInternal(array('name' => 'as_duration', 'default' => 0)), new FieldOption(array('name' => 'status', 'title' => __('Status'), 'view_in_forms' => true, 'default' => 1))) as $f) {
         $effort_fields[$f->name] = $f;
     }
 }
 static function initFields()
 {
     global $g_task_person_fields;
     $g_task_person_fields = array();
     addProjectItemFields($g_task_person_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'task')), new FieldInternal(array('name' => 'person')), new FieldString(array('name' => 'comment')), new FieldInternal(array('name' => 'assigntype', 'default' => ASSIGNTYPE_INITIAL)), new FieldInternal(array('name' => 'forward', 'default' => 0)), new FieldString(array('name' => 'forward_comment'))) as $f) {
         $g_task_person_fields[$f->name] = $f;
     }
 }
Esempio n. 8
0
 /**
  * build translated fields for person class
  *
  * NOTE: This is called twice, because it might be translated AFTER a
  *       the current user has been created.
  */
 static function initFields()
 {
     global $g_person_fields;
     $g_person_fields = array();
     addProjectItemFields($g_person_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1, 'log_changes' => false)), new FieldInternal(array('name' => 'state', 'default' => 1, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldString(array('name' => 'name', 'title' => __('Full name'), 'tooltip' => __('Required. Full name like (e.g. Thomas Mann)'), 'required' => true)), new FieldString(array('name' => 'nickname', 'title' => __('Nickname'), 'tooltip' => __('only required if user can login (e.g. pixtur)'))), new FieldString(array('name' => 'tagline', 'title' => __('Tagline'), 'tooltip' => __('Optional: Additional tagline (eg. multimedia concepts)'))), new FieldString(array('name' => 'mobile_phone', 'title' => __('Mobile Phone'), 'tooltip' => __('Optional: Mobile phone (eg. +49-172-12345678)'))), new FieldString(array('name' => 'office_phone', 'title' => __('Office Phone'), 'tooltip' => __('Optional: Office Phone (eg. +49-30-12345678)'))), new FieldString(array('name' => 'office_fax', 'title' => __('Office Fax'), 'tooltip' => __('Optional: Office Fax (eg. +49-30-12345678)'))), new FieldString(array('name' => 'office_street', 'title' => __('Office Street'), 'tooltip' => __('Optional: Official Street and Number (eg. Poststreet 28)'))), new FieldString(array('name' => 'office_zipcode', 'title' => __('Office Zipcode'), 'tooltip' => __('Optional: Official Zip-Code and City (eg. 12345 Berlin)'))), new FieldString(array('name' => 'office_homepage', 'title' => __('Office Page'), 'tooltip' => __('Optional: (eg. www.pixtur.de)'))), new FieldString(array('name' => 'office_email', 'title' => __('Office E-Mail'), 'tooltip' => __('Optional: (eg. thomas@pixtur.de)'))), new FieldString(array('name' => 'personal_phone', 'title' => __('Personal Phone'), 'tooltip' => __('Optional: Private Phone (eg. +49-30-12345678)'))), new FieldString(array('name' => 'personal_fax', 'title' => __('Personal Fax'), 'tooltip' => __('Optional: Private Fax (eg. +49-30-12345678)'))), new FieldString(array('name' => 'personal_street', 'title' => __('Personal Street'), 'tooltip' => __('Optional:  Private (eg. Poststreet 28)'))), new FieldString(array('name' => 'personal_zipcode', 'title' => __('Personal Zipcode'), 'tooltip' => __('Optional: Private (eg. 12345 Berlin)'))), new FieldString(array('name' => 'personal_homepage', 'title' => __('Personal Page'), 'tooltip' => __('Optional: (eg. www.pixtur.de)'))), new FieldString(array('name' => 'personal_email', 'title' => __('Personal E-Mail'), 'tooltip' => __('Optional: (eg. thomas@pixtur.de)'))), new FieldDate(array('name' => 'birthdate', 'title' => __('Birthdate'), 'tooltip' => __('Optional'))), new FieldString(array('name' => 'color', 'title' => __('Color'), 'tooltip' => __('Optional: Color for graphical overviews (e.g. #FFFF00)'), 'view_in_forms' => false)), new FieldText(array('name' => 'description', 'title' => __('Comments'), 'tooltip' => 'Optional')), new FieldPassword(array('name' => 'password', 'view_in_forms' => false, 'title' => __('Password'), 'tooltip' => __('Only required if user can login', 'tooltip'), 'log_changes' => false)), new FieldInternal(array('name' => 'security_question', 'view_in_forms' => false, 'export' => false)), new FieldInternal(array('name' => 'security_answer', 'view_in_forms' => false, 'export' => false)), new FieldInternal(array('name' => 'profile', 'title' => __('Profile'), 'view_in_forms' => false, 'default' => 3, 'log_changes' => true)), new FieldInternal(array('name' => 'theme', 'title' => __('Theme', 'Formlabel'), 'view_in_forms' => false, 'default' => confGet('THEME_DEFAULT'), 'log_changes' => true, 'export' => false)), new FieldInternal(array('name' => 'language', 'view_in_forms' => false, 'default' => confGet('DEFAULT_LANGUAGE'), 'log_changes' => true)), new FieldInternal(array('name' => 'show_tasks_at_home', 'view_in_forms' => false, 'default' => confGet('SHOW_TASKS_AT_HOME_DEFAULT'))), new FieldDatetime(array('name' => 'date_highlight_changes', 'view_in_forms' => false, 'log_changes' => false, 'default' => FINIT_NOW)), new FieldInternal(array('name' => 'can_login', 'view_in_forms' => false, 'log_changes' => true)), new FieldDatetime(array('name' => 'last_login', 'view_in_forms' => false, 'log_changes' => false, 'default' => FINIT_NEVER)), new FieldDatetime(array('name' => 'last_logout', 'view_in_forms' => false, 'log_changes' => false, 'default' => FINIT_NOW)), new FieldInternal(array('name' => 'user_rights', 'tooltip' => 'Optional', 'log_changes' => true, 'export' => false)), new FieldInternal(array('name' => 'cookie_string', 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'ip_address', 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'identifier', 'default' => FINIT_RAND_MD5, 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'settings', 'default' => confGet('PERSON_DEFAULT_SETTINGS'), 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'notification_last', 'default' => FINIT_NEVER, 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'notification_period', 'default' => 0, 'log_changes' => false)), new FieldInternal(array('name' => 'time_zone', 'default' => TIME_OFFSET_AUTO, 'export' => false)), new FieldInternal(array('name' => 'time_offset', 'default' => 0, 'export' => false)), new FieldInternal(array('name' => 'user_level_create', 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'user_level_view', 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'user_level_edit', 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'user_level_reduce', 'log_changes' => false, 'export' => false)), new FieldInternal(array('name' => 'category', 'view_in_forms' => false, 'default' => 0, 'log_changes' => true)), new FieldString(array('name' => 'salary_per_hour', 'title' => __('Salary per hour') . " " . __('in Euro'), 'default' => 0.0, 'export' => false)), new FieldInternal(array('name' => 'ldap', 'view_in_forms' => false, 'log_changes' => false, 'default' => 0, 'export' => false))) as $f) {
         $g_person_fields[$f->name] = $f;
     }
 }
Esempio n. 9
0
 static function initFields()
 {
     global $g_issue_fields;
     $g_issue_fields = array();
     global $REPRODUCIBILITY_VALUES;
     global $SEVERITY_VALUES;
     addProjectItemFields($g_issue_fields);
     foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'task', 'default' => 0)), new FieldInt(array('name' => 'reproducibility', 'default' => REPRODUCIBILITY_HAVE_NOT_TRIED, 'view_in_forms' => false)), new FieldInt(array('name' => 'severity', 'default' => SEVERITY_MINOR, 'view_in_forms' => false)), new FieldString(array('name' => 'plattform')), new FieldString(array('name' => 'os', 'view_in_forms' => false)), new FieldString(array('name' => 'version')), new FieldString(array('name' => 'production_build', 'title' => __('Production build'), 'view_in_forms' => true)), new FieldText(array('name' => 'steps_to_reproduce', 'title' => __('Steps to reproduce'))), new FieldText(array('name' => 'expected_result', 'title' => __('Expected result'))), new FieldText(array('name' => 'suggested_solution', 'title' => __('Suggested Solution')))) as $f) {
         $g_issue_fields[$f->name] = $f;
     }
 }
Esempio n. 10
0
}
# streber - a php5 based project management system  (c) 2005-2007  / www.streber-pm.org
# Distributed under the terms and conditions of the GPL as stated in lang/license.html
/**
 * company object
 *
 * @includedby:     *
 *
 * @author         Thomas Mann
 * @uses:           DbProjectList
 * @usedby:
 *
 */
global $g_company_fields;
$g_company_fields = array();
addProjectItemFields($g_company_fields);
foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldInternal(array('name' => 'state', 'default' => 1, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldString(array('name' => 'name', 'title' => __('Name'), 'tooltip' => __('Required. (e.g. pixtur ag)'), 'log_changes' => true)), new FieldString(array('name' => 'short', 'title' => __('Short', 'form field for company'), 'tooltip' => __('Optional: Short name shown in lists (eg. pixtur)'), 'log_changes' => true)), new FieldString(array('name' => 'tagline', 'title' => __('Tag line', 'form field for company'), 'tooltip' => __('Optional: Additional tagline (eg. multimedia concepts)'), 'log_changes' => true)), new FieldString(array('name' => 'phone', 'title' => __('Phone', 'form field for company'), 'tooltip' => __('Optional: Phone (eg. +49-30-12345678)'), 'log_changes' => true)), new FieldString(array('name' => 'fax', 'title' => __('Fax', 'form field for company'), 'tooltip' => __('Optional: Fax (eg. +49-30-12345678)'), 'log_changes' => true)), new FieldString(array('name' => 'street', 'title' => __('Street'), 'tooltip' => __('Optional: (eg. Poststreet 28)'), 'log_changes' => true)), new FieldString(array('name' => 'zipcode', 'title' => __('Zipcode'), 'tooltip' => __('Optional: (eg. 12345 Berlin)'), 'log_changes' => true)), new FieldString(array('name' => 'homepage', 'title' => __('Website'), 'tooltip' => __('Optional: (eg. http://www.pixtur.de)'), 'log_changes' => true)), new FieldString(array('name' => 'intranet', 'title' => __('Intranet'), 'tooltip' => __('Optional: (eg. http://www.pixtur.de/login.php?name=someone)'), 'log_changes' => true)), new FieldString(array('name' => 'email', 'title' => __('E-Mail'), 'tooltip' => __('Optional: (eg. http://www.pixtur.de/login.php?name=someone)'), 'log_changes' => true)), new FieldText(array('name' => 'comments', 'title' => __('Comments', 'form label for company'), 'tooltip' => __('Optional'), 'log_changes' => true)), new FieldInternal(array('name' => 'category', 'view_in_forms' => false, 'default' => 0, 'log_changes' => true))) as $f) {
    $g_company_fields[$f->name] = $f;
}
class Company extends DbProjectItem
{
    //=== constructor ================================================
    function __construct($id_or_array = NULL)
    {
        global $g_company_fields;
        $this->fields =& $g_company_fields;
        parent::__construct($id_or_array);
        if (!$this->type) {
            $this->type = ITEM_COMPANY;
        }
    }
Esempio n. 11
0
 * comments object
 *
 * @includedby:     *
 *
 * @author         Thomas Mann
 * @uses:           DbProjectList
 * @usedby:
 *
 */
/**
*  setup the database fields for comment-object as global assoc-array
*/
global $comment_fields;
global $COMMENTTYPE_VALUES;
$comment_fields = array();
addProjectItemFields($comment_fields);
foreach (array(new FieldInternal(array('name' => 'id', 'default' => 0, 'in_db_object' => 1, 'in_db_item' => 1)), new FieldString(array('name' => 'name', 'title' => __('Summary'), 'log_changes' => true)), new FieldDatetime(array('name' => 'time', 'default' => FINIT_NOW, 'view_in_forms' => false)), new FieldHidden(array('name' => 'person', 'view_in_forms' => true)), new FieldHidden(array('name' => 'comment', 'view_in_forms' => true)), new FieldHidden(array('name' => 'task', 'view_in_forms' => true)), new FieldHidden(array('name' => 'effort')), new FieldInternal(array('name' => 'view_collapsed')), new FieldHidden(array('name' => 'file')), new FieldBool(array('name' => 'starts_discussion', 'title' => 'Starts Project Discussion', 'view_in_forms' => false)), new FieldText(array('name' => 'description', 'title' => __('Details'), 'log_changes' => true)), new FieldHidden(array('name' => 'occasion', 'default' => $COMMENTTYPE_VALUES['Comment'], 'view_in_forms' => true))) as $f) {
    $comment_fields[$f->name] = $f;
}
/**
* class for handling project - comments
*/
class Comment extends DbProjectItem
{
    public $level;
    # level if child of parent-tasks
    public $type;
    public $path;
    # used for hierarchical sorting of comments
    public $num_children;
    # displayed when viewed collapsed (folded)