~ubuntu-branches/ubuntu/vivid/php-horde-nag/vivid-proposed

« back to all changes in this revision

Viewing changes to nag-4.1.3/lib/Form/Task.php

  • Committer: Package Import Robot
  • Author(s): Mathieu Parent
  • Date: 2014-03-11 21:27:39 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20140311212739-m6rbihspu5zjpvaq
Tags: 4.1.4-1
New upstream version 4.1.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php
2
 
/**
3
 
 * This file contains all Horde_Form extensions required for editing tasks.
4
 
 *
5
 
 * See the enclosed file COPYING for license information (GPL). If you
6
 
 * did not receive this file, see http://www.horde.org/licenses/gpl.
7
 
 *
8
 
 * @package Nag
9
 
 */
10
 
 
11
 
/**
12
 
 * The Nag_Form_Task class provides the form for adding and editing a task.
13
 
 *
14
 
 * @author  Jan Schneider <jan@horde.org>
15
 
 * @package Nag
16
 
 */
17
 
class Nag_Form_Task extends Horde_Form
18
 
{
19
 
    /**
20
 
     * Const'r
21
 
     *
22
 
     * @param Horde_Form_Variables $vars  The form variables.
23
 
     * @param string $title               The form title.
24
 
     *
25
 
     * @return Nag_Form_Task
26
 
     */
27
 
    public function __construct($vars, $title = '')
28
 
    {
29
 
        parent::__construct($vars, $title);
30
 
 
31
 
        $tasklist_enums = array();
32
 
        foreach (Nag::listTasklists(false, Horde_Perms::EDIT) as $tl_id => $tl) {
33
 
            $tasklist_enums[$tl_id] = Nag::getLabel($tl);
34
 
        }
35
 
        $tasklist = $vars->get('tasklist_id');
36
 
        if (empty($tasklist)) {
37
 
            reset($tasklist_enums);
38
 
            $tasklist = key($tasklist_enums);
39
 
        }
40
 
 
41
 
        $priorities = array(
42
 
            1 => '1 ' . _("(highest)"),
43
 
            2 => 2,
44
 
            3 => 3,
45
 
            4 => 4,
46
 
            5 => '5 ' . _("(lowest)")
47
 
        );
48
 
        $this->addHidden('', 'mobile', 'boolean', false);
49
 
        $this->addHidden('', 'task_id', 'text', false);
50
 
        $this->addHidden('', 'old_tasklist', 'text', false);
51
 
        $this->addHidden('', 'url', 'text', false);
52
 
        $this->addVariable(_("Name"), 'name', 'text', true);
53
 
        $this->addHidden('', 'uid', 'text', false);
54
 
        $this->addHidden('', 'owner', 'text', false);
55
 
 
56
 
        if (!$GLOBALS['prefs']->isLocked('default_tasklist') &&
57
 
            count($tasklist_enums) > 1) {
58
 
            $v = $this->addVariable(
59
 
                _("Task List"), 'tasklist_id', 'enum', true, false, false,
60
 
                array($tasklist_enums));
61
 
            if (!$vars->get('mobile')) {
62
 
                $v->setAction(Horde_Form_Action::factory('reload'));
63
 
            }
64
 
        }
65
 
 
66
 
        if (!$vars->get('mobile')) {
67
 
            $tasks = Nag::listTasks(array(
68
 
                'tasklists' => array($tasklist),
69
 
                'complete' => Nag::VIEW_FUTURE_INCOMPLETE,
70
 
                'include_history' => false)
71
 
            );
72
 
            $task_enums = array('' => _("No parent task"));
73
 
            $tasks->reset();
74
 
            while ($task = $tasks->each()) {
75
 
                if ($vars->get('task_id') == $task->id) {
76
 
                    continue;
77
 
                }
78
 
                $task_enums[htmlspecialchars($task->id)] = str_repeat('&nbsp;', $task->indent * 4) . htmlspecialchars($task->name);
79
 
            }
80
 
 
81
 
            $v = $this->addVariable(
82
 
                _("Parent task"), 'parent', 'enum', false, false, false, array($task_enums));
83
 
            $v->setOption('htmlchars', true);
84
 
        }
85
 
 
86
 
        $this->addVariable(_("Tags"), 'tags', 'Nag:NagTags', false);
87
 
 
88
 
        // Only display the delete button if this is an existing task and the
89
 
        // user has HORDE_PERMS::DELETE
90
 
        $share = $GLOBALS['nag_shares']->getShare($tasklist);
91
 
        $delete = $share->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::DELETE) && $vars->get('task_id');
92
 
 
93
 
        if (!$vars->get('mobile')) {
94
 
            $users = array();
95
 
            $users = $share->listUsers(Horde_Perms::READ);
96
 
            $groups = $share->listGroups(Horde_Perms::READ);
97
 
            if (count($groups)) {
98
 
                $horde_group = $GLOBALS['injector']->getInstance('Horde_Group');
99
 
                foreach ($groups as $group) {
100
 
                    $users = array_merge($users,
101
 
                                         $horde_group->listUsers($group));
102
 
                }
103
 
            }
104
 
            $users = array_flip($users);
105
 
            if (count($users)) {
106
 
                foreach (array_keys($users) as $user) {
107
 
                    $identity = $GLOBALS['injector']->getInstance('Horde_Core_Factory_Identity')->create($user);
108
 
                    $fullname = $identity->getValue('fullname');
109
 
                    $users[$user] = strlen($fullname) ? $fullname : $user;
110
 
                }
111
 
            }
112
 
            $this->addVariable(_("Assignee"), 'assignee', 'enum', false, false,
113
 
                               null, array($users, _("None")));
114
 
        }
115
 
 
116
 
        $this->addVariable(_("Private?"), 'private', 'boolean', false);
117
 
        $this->addVariable(_("Due By"), 'due', 'Nag:NagDue', false);
118
 
        if (!$vars->get('mobile')) {
119
 
            $this->addVariable(_("Delay Start Until"), 'start', 'Nag:NagStart', false);
120
 
        }
121
 
        $this->addVariable(_("Alarm"), 'alarm', 'Nag:NagAlarm', false);
122
 
 
123
 
        if (!$vars->get('mobile')) {
124
 
            $v = $this->addVariable(_("Notification"), 'methods', 'Nag:NagMethod', false);
125
 
            $v->setAction(Horde_Form_Action::factory('reload'));
126
 
 
127
 
            $v = $this->addVariable(_("Priority"), 'priority', 'enum', false, false, false, array($priorities));
128
 
            $v->setDefault(3);
129
 
 
130
 
            $this->addVariable(_("Estimated Time"), 'estimate', 'number', false);
131
 
            $this->addVariable(_("Completed?"), 'completed', 'boolean', false);
132
 
        }
133
 
 
134
 
        try {
135
 
            $description = Horde::callHook('description_help', array(), 'nag');
136
 
        } catch (Horde_Exception_HookNotSet $e) {
137
 
            $description = '';
138
 
        }
139
 
        $this->addVariable(_("Description"), 'desc', 'longtext', false, false, $description);
140
 
 
141
 
        $buttons = array(array('value' => _("Save")));
142
 
        if ($delete) {
143
 
            $buttons[] = array('value' => _("Delete"), 'name' => 'deletebutton', 'class' => 'horde-delete');
144
 
        }
145
 
        if (!$vars->get('task_id')) {
146
 
            $buttons[] = array('value' => _("Save and New"), 'name' => 'savenewbutton', 'class' => 'horde-create');
147
 
        }
148
 
        $this->setButtons($buttons);
149
 
    }
150
 
 
151
 
    public function renderActive()
152
 
    {
153
 
        return parent::renderActive($this->getRenderer(array('varrenderer_driver' => array('nag', 'nag'))), $this->_vars, Horde::url('t/save'), 'post');
154
 
    }
155
 
 
156
 
}
 
 
b'\\ No newline at end of file'