initial commit
[namibia] / public / js / app / admin-workspace / newsletterview.js
1 ;(function(){
2
3         window._w.newsletterview = {
4
5                 itemId : null,
6                 itemData : null,
7                 formMeta : null,
8                 ti : null,
9                 newItem : false,
10
11                 onTemplateDestruct : function()
12                 {
13                         /*if (CKEDITOR && CKEDITOR.instances.content)
14                         {
15                                 CKEDITOR.instances.content.destroy();
16                         }*/
17                         //$('#content').remove();
18                 },
19
20                 onTemplateReady : function( template, event, eventData )
21                 {
22                         _w.newsletterview.ti = _t[template];
23
24                         _w.newsletterview.setNewsletterViewFormMeta();
25                         _w.newsletterview.ti.hydrate(_w.newsletterview.formMeta);
26
27                         // Retrieve initial view data.
28                         _w.newsletterview.itemId = App.Util.getUrlParam('id');
29                         if (0 == _w.newsletterview.itemId || null == _w.newsletterview.itemId)
30                         {
31                                 _w.newsletterview.newItem = true;
32                                 _w.newsletterview.itemData = {};
33                                 App.API.getTask(
34                                         'createNewsletter', 'Newsletter', 'Newsletter.Create',
35                                         null, {}, function(){}, _w.taskContractError
36                                 );
37
38                         }
39                         else
40                         {
41                                 _w.newsletterview.newItem = false;
42                                 App.API.getTask(
43                                         'updateNewsletter:' + _w.newsletterview.itemId, 'Newsletter', 'Newsletter.Update', _w.newsletterview.itemId,
44                                         {'id':_w.newsletterview.itemId}, $.proxy( _w.newsletterview._onNewsletterViewDataReceived, this ), _w.taskContractError
45                                 );
46                         }
47
48                 },
49
50                 onTemplatePublished : function( template, event, eventData )
51                 {
52                         if (_w.newsletterview.newItem)
53                         {
54                                 _w.newsletterview._setupValidation();
55                         }
56                         $('#btnDraft').click(function() {
57                                 if (!$('#frmNewsletterView').valid())
58                                 {
59                                         return;
60                                 }
61                                 $('#btnDraft').prop('disabled', true);
62                                 $('#btnTest').prop('disabled', true);
63                                 $('#btnUpdate').prop('disabled', true);
64                                 var data = _w.newsletterview._prepNewsletterUpdateData();
65                                 var options = {SaveDraft: true};
66                                 if (_w.newsletterview.newItem)
67                                 {
68                                         App.API.execTask(
69                                                         'createNewsletter', data, options,
70                                                         _w.newsletterview._onNewsletterUpdated, function() {}
71                                                 );
72                                 }
73                                 else
74                                 {
75                                         App.API.execTask(
76                                                         'updateNewsletter:' + _w.newsletterview.itemId, data, options,
77                                                         _w.newsletterview._onNewsletterUpdated, function() {}
78                                                 );
79                                 }
80                         });
81                         $('#btnTest').click(function() {
82                                 if (!$('#frmNewsletterView').valid())
83                                 {
84                                         return;
85                                 }
86                                 $('#btnDraft').prop('disabled', true);
87                                 $('#btnTest').prop('disabled', true);
88                                 $('#btnUpdate').prop('disabled', true);
89                                 var data = _w.newsletterview._prepNewsletterUpdateData();
90                                 var options = {TestDraft: true};
91                                 if (_w.newsletterview.newItem)
92                                 {
93                                         App.API.execTask(
94                                                         'createNewsletter', data, options,
95                                                         _w.newsletterview._onNewsletterUpdated, _w.taskExecError
96                                                 );
97                                 }
98                                 else
99                                 {
100                                         App.API.execTask(
101                                                         'updateNewsletter:' + _w.newsletterview.itemId, data, options,
102                                                         _w.newsletterview._onNewsletterUpdated, _w.taskExecError
103                                                 );
104                                 }
105                         });
106                         $('#btnUpdate').click(function() {
107                                 if (!$('#frmNewsletterView').valid())
108                                 {
109                                         return;
110                                 }
111                                 $('#btnDraft').prop('disabled', true);
112                                 $('#btnTest').prop('disabled', true);
113                                 $('#btnUpdate').prop('disabled', true);
114                                 var data = _w.newsletterview._prepNewsletterUpdateData();
115                                 var options = {Send: true};
116                                 if (_w.newsletterview.newItem)
117                                 {
118                                         App.API.execTask(
119                                                         'createNewsletter', data, options,
120                                                         _w.newsletterview._onNewsletterUpdated, _w.taskExecError
121                                                 );
122                                 }
123                                 else
124                                 {
125                                         App.API.execTask(
126                                                         'updateNewsletter:' + _w.newsletterview.itemId, data, options,
127                                                         _w.newsletterview._onNewsletterUpdated, _w.taskExecError
128                                                 );
129                                 }
130                         });
131                 },
132
133                 setNewsletterViewFormMeta : function( data )
134                 {
135                         if (!data)
136                         {
137                                 data = {};
138                         }
139                         console.log('------------------');
140                         console.log(data.attachment);
141                         _w.newsletterview.formMeta = {
142                                 'attachment' : {
143                                         type  : 'attachment',
144                                         id    : 'attachment',
145                                         title : 'Attachment',
146                                         value : data.attachment ? data.attachment : null
147                                 },
148                                 'subject' : {
149                                         type  : 'input',
150                                         id    : 'subject',
151                                         title : 'Subject',
152                                         value : data.subject ? data.subject : '',
153                                         maxlength : 100
154                                 },
155                                 'content' : {
156                                         type  : 'htmltext',
157                                         id    : 'content',
158                                         title : 'Content',
159                                         value : data.content ? data.content : ''
160                                 }
161                         };
162                 },
163
164                 _onNewsletterViewDataReceived : function( response )
165                 {
166                         _w.newsletterview.itemId = response.Data.id;
167                         _w.newsletterview.itemData = response.Data;
168                         _w.newsletterview.setNewsletterViewFormMeta(response.Data);
169                         _w.newsletterview.ti.hydrate(_w.newsletterview.formMeta);
170                         if (!_w.newsletterview.newItem)
171                         {
172                                 switch (response.Data.jobState)
173                                 {
174                                 case 'Sending':
175                                 case 'Archived':
176                                         $('#btnDraft').hide();
177                                         $('#btnTest').hide();
178                                         $('#btnUpdate').hide();
179                                         break;
180                                 }
181                         }
182                         _w.newsletterview._setupValidation();
183                 },
184
185                 _setupValidation : function ()
186                 {
187                         $('#frmNewsletterView').validate({
188                                 "rules": {
189                                         subject: "required",
190                                         content: "required"
191                                 },
192                                 submitHandler: function( form ) {
193                                         $('#btnDraft').prop('disabled', true);
194                                         $('#btnTest').prop('disabled', true);
195                                         $('#btnUpdate').prop('disabled', true);
196                                         var data = _w.newsletterview._prepNewsletterUpdateData();
197                                         if (_w.newsletterview.newItem)
198                                         {
199                                                 App.API.execTask(
200                                                                 'createNewsletter', data, {},
201                                                                 _w.newsletterview._onNewsletterUpdated, _w.taskExecError
202                                                         );
203                                         }
204                                         else
205                                         {
206                                                 App.API.execTask(
207                                                                 'updateNewsletter:' + _w.newsletterview.itemId, data, {},
208                                                                 _w.newsletterview._onNewsletterUpdated, _w.taskExecError
209                                                         );
210                                         }
211                                 }
212                         });
213                         $('#btnUpdate').prop('disabled', false);
214                 },
215
216                 _prepNewsletterUpdateData : function()
217                 {
218                         var data = {Newsletter:_w.newsletterview.ti.harvest()};
219                         if ('' == data.Newsletter.attachment)
220                         {
221                                 data.Newsletter.attachment = null;
222                         }
223                         return data;
224                 },
225
226                 _onNewsletterUpdated : function( response )
227                 {
228                         window.location.hash = '/newsletters';
229                 }
230
231         };
232
233 })();