Merge branch '2013.10' into 2014.11
[tine20] / tine20 / Projects / js / Model.js
1 /*
2  * Tine 2.0
3  * 
4  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
5  * @author      Philipp Schüle <p.schuele@metaways.de>
6  * @copyright   Copyright (c) 2011 Metaways Infosystems GmbH (http://www.metaways.de)
7  */
8 Ext.ns('Tine.Projects.Model');
9
10 /**
11  * @namespace   Tine.Projects.Model
12  * @class       Tine.Projects.Model.Project
13  * @extends     Tine.Tinebase.data.Record
14  * Example record definition
15  * 
16  * @author      Cornelius Weiss <c.weiss@metaways.de>
17  */
18 Tine.Projects.Model.Project = Tine.Tinebase.data.Record.create(Tine.Tinebase.Model.genericFields.concat([
19     { name: 'id' },
20     { name: 'title' },
21     { name: 'number' },
22     { name: 'description' },
23     { name: 'status' },
24     { name: 'relations' },
25     // tine 2.0 notes + tags
26     { name: 'notes'},
27     { name: 'tags' },
28     
29     {name: 'attachments', omitDuplicateResolving: true}
30 ]), {
31     appName: 'Projects',
32     modelName: 'Project',
33     idProperty: 'id',
34     titleProperty: 'title',
35     // ngettext('Project', 'Projects', n);
36     recordName: 'Project',
37     recordsName: 'Projects',
38     containerProperty: 'container_id',
39     // ngettext('Project list', 'Project lists', n);
40     containerName: 'Project list',
41     containersName: 'Project lists'
42     // _('Project lists')
43 });
44
45 /**
46  * @namespace Tine.Projects.Model
47  * 
48  * get default data for a new record
49  *  
50  * @return {Object} default data
51  * @static
52  */ 
53 Tine.Projects.Model.Project.getDefaultData = function() {
54     var app = Tine.Tinebase.appMgr.get('Projects');
55     var defaultsContainer = Tine.Projects.registry.get('defaultContainer');
56     
57     return {
58         container_id: app.getMainScreen().getWestPanel().getContainerTreePanel().getDefaultContainer(),
59         status: 'IN-PROCESS'
60     };
61 };
62
63 /**
64  * get filtermodel of projects
65  * 
66  * @namespace Tine.ExampleApplication.Model
67  * @static
68  * @return {Object} filterModel definition
69  */ 
70 Tine.Projects.Model.Project.getFilterModel = function() {
71     var app = Tine.Tinebase.appMgr.get('Projects');
72     
73     return [ 
74         {label: _('Quick Search'),    field: 'query',       operators: ['contains']},
75         {label: app.i18n._('Title'),    field: 'title'},
76         {label: app.i18n._('Number'),    field: 'number'},
77         {label: app.i18n._('Description'),    field: 'description'},
78         {
79             label: app.i18n._('Status'),
80             field: 'status',
81             filtertype: 'tine.widget.keyfield.filter', 
82             app: app, 
83             keyfieldName: 'projectStatus'
84         },
85         {filtertype: 'tinebase.tag', app: app},
86         {filtertype: 'tine.widget.container.filtermodel', app: app, recordClass: Tine.Projects.Model.Project},
87         {filtertype: 'tine.projects.attendee', app: app},
88         {label: _('Last Modified Time'),                                                field: 'last_modified_time', valueType: 'date'},
89         {label: _('Last Modified By'),                                                  field: 'last_modified_by',   valueType: 'user'},
90         {label: _('Creation Time'),                                                     field: 'creation_time',      valueType: 'date'},
91         {label: _('Created By'),                                                        field: 'created_by',         valueType: 'user'}
92     ];
93 };
94
95 /**
96  * default Project backend
97  */
98 Tine.Projects.recordBackend = new Tine.Tinebase.data.RecordProxy({
99     appName: 'Projects',
100     modelName: 'Project',
101     recordClass: Tine.Projects.Model.Project
102 });