8d33dcab6d542aff2759cbcbeda385c26fee2c32
[philo.git] / contrib / gilbert / media / gilbert / lib / models.js
1 Ext.ns('Gilbert.lib.models');
2
3
4 Gilbert.lib.models.Model = Ext.extend(Object, {
5         
6         constructor: function (config) {
7                 Ext.apply(this, config);
8                 this.drag_drop_group = 'Gilbert.lib.models.Model(' + this.app_label + ',' + this.name + ') ';
9         },
10         
11         create_reader: function (config) {
12                 return new Ext.data.JsonReader(Ext.applyIf(config||{}, {}));
13         },
14         
15         create_writer: function (config) {
16                 return new Ext.data.JsonWriter(Ext.applyIf(config||{}, {
17                         encode: false,
18                 }));
19         },
20         
21         create_proxy: function (config) {
22                 return new Ext.data.DirectProxy(Ext.applyIf(config||{},{
23                         paramsAsHash: true,
24                         api: {
25                                 read: this.api.data_read,
26                                 create: this.api.data_create,
27                                 update: this.api.data_update,
28                                 destroy: this.api.data_destroy,
29                         },
30                 }));
31         },
32         
33         create_store: function (config) {
34                 return new Ext.data.Store(Ext.applyIf(config||{},{
35                         proxy: this.create_proxy(),
36                         reader: this.create_reader(),
37                         writer: this.create_writer(),
38                         remoteSort: true,
39                 }));
40         },
41         
42 });
43
44
45 Gilbert.lib.models.ModelInstance = Ext.extend(Object, {
46         
47         constructor: function (model, pk) {
48                 this.model = model;
49                 this.pk = pk;
50         },
51         
52 });
53
54
55 Ext.data.Types.GILBERTMODELFOREIGNKEY = {
56         
57         convert: function (v, data) {
58                 if (v) {
59                         return new Gilbert.lib.models.ModelInstance(Gilbert.get_model(v.app_label, v.name), v.pk);
60                 } else {
61                         return null;
62                 }
63         },
64         
65         sortType: Ext.data.SortTypes.none,
66         
67         type: 'gilbertmodelforeignkey',
68         
69 }
70
71
72 Ext.data.Types.GILBERTMODELFILEFIELD = {
73         
74         convert: function (v, data) {
75                 if (v) {
76                         return v.url;
77                 } else {
78                         return null;
79                 }
80         },
81         
82         sortType: Ext.data.SortTypes.none,
83         
84         type: 'gilbertmodelfilefield',
85         
86 }