Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 17013 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
17013 efrain 1
<?php
2
$acl            = $this->viewModel()->getRoot()->getVariable('acl');
3
$currentUser    = $this->currentUserHelper();
4
 
5
$roleName = $currentUser->getUserTypeId();
6
 
7
 
8
$routeAdd       = $this->url('habits/emojis/add');
9
$routeDatatable = $this->url('habits/emojis');
10
 
11
$allowAdd       = $acl->isAllowed($roleName, 'habits/emojis/add') ? 1 : 0;
12
$allowEdit      = $acl->isAllowed($roleName, 'habits/emojis/edit') ? 1 : 0;
13
$allowDelete    = $acl->isAllowed($roleName, 'habits/emojis/delete') ? 1 : 0;
14
 
15
 
16
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/nprogress/nprogress.css'));
17
$this->inlineScript()->appendFile($this->basePath('assets/vendors/nprogress/nprogress.js'));
18
 
19
 
20
 
21
 
22
 
23
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.css'));
24
 
25
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net/jquery.dataTables.js'));
26
$this->inlineScript()->appendFile($this->basePath('assets/vendors/datatables.net-bs5/dataTables.bootstrap5.js'));
27
 
28
 
29
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-fileinput/css/fileinput.min.css'));
30
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap-fileinput/themes/explorer-fas/theme.css'));
31
 
32
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/plugins/piexif.js'));
33
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/plugins/sortable.js'));
34
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/fileinput.js'));
35
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/js/locales/es.js'));
36
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/themes/fas/theme.js'));
37
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap-fileinput/themes/explorer-fas/theme.js'));
38
 
39
 
40
 
41
 
42
$this->headLink()->appendStylesheet($this->basePath('assets/vendors/bootstrap4-toggle/css/bootstrap4-toggle.min.css'));
43
$this->inlineScript()->appendFile($this->basePath('assets/vendors/bootstrap4-toggle/js/bootstrap4-toggle.min.js'));
44
 
45
 
46
 
47
 
48
 
49
$this->inlineScript()->appendFile($this->basePath('assets/vendors/jquery-input-number/input-number-format.jquery.js'));
50
 
51
$status_active = \LeadersLinked\Model\HabitEmoji::STATUS_ACTIVE;
52
 
53
$this->inlineScript()->captureStart();
54
echo <<<JS
55
    jQuery( document ).ready(function( $ ) {
56
 
57
 
58
 
59
 
60
 
61
 
62
        var allowEdit   = $allowEdit;
63
        var allowDelete = $allowDelete;
64
 
65
        var gridTable = $('#gridTable').dataTable( {
66
            'processing': true,
67
            'serverSide': true,
68
            'searching': true,
69
            'order': [[ 0, 'asc' ]],
70
            'ordering':  true,
71
            'ordenable' : true,
72
            'responsive': true,
73
            'select' : false,
74
        	'paging': true,
75
            'pagingType': 'simple_numbers',
76
    		'ajax': {
77
    			'url' : '$routeDatatable',
78
    			'type' : 'get',
79
                'beforeSend': function (request) {
80
                  NProgress.start();
81
                },
82
                'dataFilter': function(response) {
83
                    var response = jQuery.parseJSON( response );
84
 
85
                    var json                = {};
86
                    json.recordsTotal       = 0;
87
                    json.recordsFiltered    = 0;
88
                    json.data               = [];
89
 
90
 
91
                    if(response.success) {
92
                        json.recordsTotal       = response.data.total;
93
                        json.recordsFiltered    = response.data.total;
94
                        json.data               = response.data.items;
95
                    } else {
96
                        $.fn.showError(response.data)
97
                    }
98
 
99
                    return JSON.stringify( json );
100
                }
101
    		},
102
            'language' : {
103
                'sProcessing':     'LABEL_DATATABLE_SPROCESSING',
104
                'sLengthMenu':     'LABEL_DATATABLE_SLENGTHMENU',
105
                'sZeroRecords':    'LABEL_DATATABLE_SZERORECORDS',
106
                'sEmptyTable':     'LABEL_DATATABLE_SEMPTYTABLE',
107
                'sInfo':           'LABEL_DATATABLE_SINFO',
108
                'sInfoEmpty':      'LABEL_DATATABLE_SINFOEMPTY',
109
                'sInfoFiltered':   'LABEL_DATATABLE_SINFOFILTERED',
110
                'sInfoPostFix':    '',
111
                'sSearch':         'LABEL_DATATABLE_SSEARCH',
112
                'sUrl':            '',
113
                'sInfoThousands':  ',',
114
                'sLoadingRecords': 'LABEL_DATATABLE_SLOADINGRECORDS',
115
                'oPaginate': {
116
                    'sFirst':    'LABEL_DATATABLE_SFIRST',
117
                    'sLast':     'LABEL_DATATABLE_SLAST',
118
                    'sNext':     'LABEL_DATATABLE_SNEXT',
119
                    'sPrevious': 'LABEL_DATATABLE_SPREVIOUS'
120
                },
121
                'oAria': {
122
                    'sSortAscending':  ': LABEL_DATATABLE_SSORTASCENDING',
123
                    'sSortDescending': ':LABEL_DATATABLE_SSORTDESCENDING'
124
                },
125
            },
126
            'drawCallback': function( settings ) {
127
                NProgress.done();
128
 
129
            },
130
            'aoColumns': [
131
                { 'mDataProp': 'name' },
132
                { 'mDataProp': 'details' },
133
                { 'mDataProp': 'image' },
134
                { 'mDataProp': 'actions' },
135
    	    ],
136
            'columnDefs': [
137
                {
138
                    'targets': 0,
139
                    'className' : 'text-vertical-middle',
140
                },
141
                {
142
                    'targets': 1,
143
                    'orderable': false,
144
                    'render' : function ( data, type, row ) {
145
                        var s = '';
146
                        s += 'LABEL_STATUS: ' + data['status']  + '<br/>';
147
                        s += 'LABEL_ORDER: ' + data['order']  + '<br/>';
148
                        s += 'LABEL_CODE: ' + data['code']  + '<br/>';
149
 
150
 
151
                        return s;
152
                    }
153
                },
154
                {
155
                    'targets': -2,
156
                    'orderable': false,
157
                    'render' : function ( data, type, row ) {
158
                        s = '';
159
 
160
                        if( data )  {
161
                            s = '<img src="' + data + '" style="width:64px; height:auto">';
162
                        }
163
 
164
 
165
 
166
                        return s;
167
                    }
168
                },
169
                {
170
                    'targets': -1,
171
                    'orderable': false,
172
                    'render' : function ( data, type, row ) {
173
                        s = '';
174
 
175
                        if(allowEdit && data['link_edit']) {
176
                            s = s + '<button class="btn btn-primary btn-edit" data-href="' + data['link_edit']+ '" data-toggle="tooltip" title="LABEL_EDIT"><i class="fa fa-pen"></i> LABEL_EDIT </button>&nbsp;';
177
                        }
178
                        if(allowDelete && data['link_delete']) {
179
                            s = s + '<button class="btn btn-danger btn-delete" data-href="' + data['link_delete']+ '" data-toggle="tooltip" title="LABEL_DELETE"><i class="fa fa-trash"></i> LABEL_DELETE </button>&nbsp;';
180
                        }
181
                        return s;
182
                    }
183
                }
184
              ],
185
        });
186
 
187
 
188
        var validatorAdd = $('#form-add').validate({
189
            debug: true,
190
            onclick: false,
191
            onkeyup: false,
192
            ignore: [],
193
            rules: {
194
                'name': {
195
                    required: true,
196
                    maxlength: 100,
197
                },
198
                 'code': {
199
                    required: true,
200
                    maxlength: 10,
201
                },
202
                'order': {
203
                    required: true,
204
                    min: 0,
205
 
206
                },
207
                'status': {
208
                    required: false,
209
 
210
                },
211
                'image': {
212
                    required: true,
213
                    extension: 'jpg|jpeg|png',
214
                    accept: 'image/jpg,image/jpeg,image/png'
215
                }
216
            },
217
            submitHandler: function(form)
218
            {
219
                var formdata = false;
220
                if (window.FormData){
221
                    formdata = new FormData(form); //form[0]);
222
                }
223
 
224
 
225
                $.ajax({
226
                    'dataType'  : 'json',
227
                    'accept'    : 'application/json',
228
                    'method'    : 'post',
229
                    'url'       :  $('#form-add').attr('action'),
230
                    'data'      :  formdata ? formdata : $('#form-add').serialize(),
231
                    'processData': false,
232
                    'contentType': false,
233
                }).done(function(response) {
234
                    NProgress.start();
235
                    if(response['success']) {
236
                        $.fn.showSuccess(response['data']);
237
 
238
                        $('#modal-add').modal('hide');
239
 
240
 
241
                        gridTable.api().ajax.reload(null, false);
242
                    } else {
243
                        validatorAdd.resetForm();
244
                        if(jQuery.type(response['data']) == 'string') {
245
                            $.fn.showError(response['data']);
246
                        } else  {
247
                            $.each(response['data'], function( fieldname, errors ) {
248
                                $.fn.showFormErrorValidator('#form-add #' + fieldname, errors);
249
                            });
250
                        }
251
                    }
252
                }).fail(function( jqXHR, textStatus, errorThrown) {
253
                    $.fn.showError(textStatus);
254
                }).always(function() {
255
                    NProgress.done();
256
                });
257
                return false;
258
            },
259
            invalidHandler: function(form, validator) {
260
            }
261
        });
262
 
263
        var validatorEdit = $('#form-edit').validate({
264
            debug: true,
265
            onclick: false,
266
            onkeyup: false,
267
            ignore: [],
268
            rules: {
269
                'name': {
270
                    required: true,
271
                    maxlength: 100,
272
                },
273
                'code': {
274
                    required: true,
275
                    maxlength: 10,
276
                },
277
                'order': {
278
                    required: true,
279
                     min: 0,
280
 
281
                },
282
                'status': {
283
                    required: false,
284
 
285
                },
286
               'image': {
287
                    required: false,
288
                    extension: 'jpg|jpeg|png',
289
                    accept: 'image/jpg,image/jpeg,image/png'
290
                }
291
            },
292
            submitHandler: function(form)
293
            {
294
                var formdata = false;
295
                if (window.FormData){
296
                    formdata = new FormData(form); //form[0]);
297
                }
298
 
299
 
300
                $.ajax({
301
                    'dataType'  : 'json',
302
                    'accept'    : 'application/json',
303
                    'method'    : 'post',
304
                    'url'       :  $('#form-edit').attr('action'),
305
                    'data'      :  formdata ? formdata : $('#form-edit').serialize(),
306
                    'processData': false,
307
                    'contentType': false,
308
                }).done(function(response) {
309
                    NProgress.start();
310
                    if(response['success']) {
311
                        $.fn.showSuccess(response['data']);
312
 
313
                        $('#modal-edit').modal('hide');
314
 
315
 
316
                        gridTable.api().ajax.reload(null, false);
317
                    } else {
318
                        validatorEdit.resetForm();
319
                        if(jQuery.type(response['data']) == 'string') {
320
                            $.fn.showError(response['data']);
321
                        } else  {
322
                            $.each(response['data'], function( fieldname, errors ) {
323
                                $.fn.showFormErrorValidator('#form-edit #' + fieldname, errors);
324
                            });
325
                        }
326
                    }
327
                }).fail(function( jqXHR, textStatus, errorThrown) {
328
                    $.fn.showError(textStatus);
329
                }).always(function() {
330
                    NProgress.done();
331
                });
332
                return false;
333
            },
334
            invalidHandler: function(form, validator) {
335
            }
336
        });
337
 
338
        $('body').on('click', 'button.btn-add', function(e) {
339
            e.preventDefault();
340
 
341
 
342
            $('#form-add #status').bootstrapToggle('on')
343
            $('#form-add #code').val('');
344
            $('#form-add #order').val('0');
345
            $('#form-add #name').val('');
346
            $('#form-add #image').fileinput('reset');
347
            $('#form-add #image').val('');
348
 
349
            validatorAdd.resetForm();
350
            $('#modal-add').modal('show');
351
 
352
        });
353
 
354
        $('body').on('click', 'button.btn-edit', function(e) {
355
            e.preventDefault();
356
            NProgress.start();
357
            var action = $(this).data('href');
358
 
359
            $.ajax({
360
                'dataType'  : 'json',
361
                'method'    : 'get',
362
                'url'       :  action,
363
            }).done(function(response) {
364
                if(response['success']) {
365
 
366
                    $('#form-edit').attr('action', action);
367
                    $('#form-edit #status').bootstrapToggle(response['data']['status'] == '$status_active' ? 'on' : 'off')
368
                    $('#form-edit #code').val(response['data']['code']);
369
                    $('#form-edit #order').val(response['data']['order']);
370
                    $('#form-edit #name').val(response['data']['name']);
371
                    $('#form-edit #image').fileinput('reset');
372
                    $('#form-edit #image').val('');
373
 
374
                    validatorEdit.resetForm();
375
 
376
                    $('#modal-edit').modal('show');
377
                } else {
378
                    $.fn.showError(response['data']);
379
                }
380
            }).fail(function( jqXHR, textStatus, errorThrown) {
381
                $.fn.showError(textStatus);
382
            }).always(function() {
383
                NProgress.done();
384
            });
385
        });
386
 
387
        $('body').on('click', 'button.btn-refresh', function(e) {
388
            e.preventDefault();
389
            gridTable.api().ajax.reload(null, false);
390
        });
391
 
392
 
393
        $('body').on('click', 'button.btn-cancel', function(e) {
394
            e.preventDefault();
395
            $('#modal-add').modal('hide');
396
            $('#modal-edit').modal('hide');
397
        });
398
 
399
    $('body').on('click', 'button.btn-delete', function(e) {
400
        e.preventDefault();
401
        var action = $(this).data('href');
402
 
403
 
404
          swal.fire({
405
            title: 'LABEL_ARE_YOU_SURE',
406
            icon: 'question',
407
            cancelButtonText: 'LABEL_NO',
408
            showCancelButton: true,
409
            confirmButtonText: 'LABEL_YES'
410
          }).then((result) => {
411
            if (result.isConfirmed) {
412
 
413
                    NProgress.start();
414
                    $.ajax({
415
                        'dataType'  : 'json',
416
                        'accept'    : 'application/json',
417
                        'method'    : 'post',
418
                        'url'       :  action,
419
                    }).done(function(response) {
420
                        if(response['success']) {
421
                            $.fn.showSuccess(response['data']);
422
                            gridTable.api().ajax.reload(null, false);
423
                        } else {
424
                            $.fn.showError(response['data']);
425
                        }
426
                    }).fail(function( jqXHR, textStatus, errorThrown) {
427
                        $.fn.showError(textStatus);
428
                    }).always(function() {
429
                        NProgress.done();
430
                    });
431
                }
432
           });
433
 
434
        });
435
 
436
        $('#form-add #status').bootstrapToggle({'on' : 'LABEL_ACTIVE',  'off' : 'LABEL_INACTIVE', 'width' : '160px', 'height' : '40px'});
437
        $('#form-edit #status').bootstrapToggle({'on' : 'LABEL_ACTIVE',  'off' : 'LABEL_INACTIVE', 'width' : '160px', 'height' : '40px'});
438
 
439
        $('#form-add #order').inputNumberFormat({decimal: 0});
17014 efrain 440
        $('#form-edit #order').inputNumberFormat({decimal: 0});
17013 efrain 441
 
442
 
443
        $('#form-add #image').fileinput({
444
            theme: 'fa',
445
            language: 'es',
446
            showUpload: false,
447
            dropZoneEnabled: false,
448
            maxFileCount: 1,
449
            msgPlaceholder:  'LABEL_RECOMMENDED_SIZE $targetSize',
450
            allowedFileExtensions: ['jpeg', 'jpg', 'png'],
451
        });
452
 
453
        $('#form-edit #image').fileinput({
454
            theme: 'fa',
455
            language: 'es',
456
            showUpload: false,
457
            dropZoneEnabled: false,
458
            maxFileCount: 1,
459
            msgPlaceholder:  'LABEL_RECOMMENDED_SIZE $targetSize',
460
            allowedFileExtensions: ['jpeg', 'jpg', 'png'],
461
        });
462
 
463
 
464
    });
465
JS;
466
$this->inlineScript()->captureEnd();
467
?>
468
 
469
 
470
<div class="container">
471
	<div class="card">
472
		<div class="card-header">
473
   			<h6 class="card-title">LABEL_DAILY_PULSE_EMOJIS</h6>
474
   		</div>
475
		<div class="card-body">
476
          	<table id="gridTable" class="table  table-bordered">
477
         		<thead>
478
           			<tr>
479
                   		<th>LABEL_NAME</th>
480
                  		<th>LABEL_DETAILS</th>
481
                    	<th>LABEL_IMAGE</th>
482
                       	<th>LABEL_ACTIONS</th>
483
                    </tr>
484
          		</thead>
485
              	<tbody>
486
              	</tbody>
487
         	</table>
488
         </div>
489
    	 <div class="card-footer text-right">
490
			<button type="button" class="btn btn-info btn-refresh"><i class="fa fa-sync"></i> LABEL_REFRESH </button>
491
        	<?php if ($allowAdd) : ?>
492
            <button type="button" class="btn btn-primary btn-add"><i class="fa fa-plus"></i> LABEL_ADD </button>
493
      		<?php endif; ?>
494
		</div>
495
 	</div>
496
</div>
497
 
498
 
499
 
500
<!-- The Modal -->
501
<div class="modal" id="modal-add">
502
    <div class="modal-dialog  modal-xl">
503
        <div class="modal-content">
504
 
505
            <!-- Modal Header -->
506
            <div class="modal-header">
507
                <h6 class="modal-title">LABEL_ADD</h6>
508
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
509
            </div>
510
 
511
			<?php
512
                $form = $this->formAdd;
513
                $form->setAttributes([
514
                    'method'    => 'post',
515
                    'name'      => 'form-add',
516
                    'id'        => 'form-add',
517
                    'action'    => $routeAdd,
518
                ]);
519
 
520
                $form->prepare();
521
                echo $this->form()->openTag($form);
522
            ?>
523
            <div class="modal-body">
524
 
525
    	 		<div class="row">
526
    	 	         <div class="col-12 mt-3">
527
                        <?php
528
                        $element = $form->get('name');
529
                        $element->setOptions(['label' => 'LABEL_NAME']);
530
                        $element->setAttributes(['class' => 'form-control']);
531
 
532
                        echo $this->formLabel($element);
533
                        echo $this->formText($element);
534
                        ?>
535
                	</div>
536
                </div>
537
        		<div class="row">
538
	 	     		<div class="col-12 mt-3">
539
                        <?php
540
                        $element = $form->get('code');
541
                        $element->setOptions(['label' => 'LABEL_CODE']);
542
                        $element->setAttributes(['class' => 'form-control']);
543
 
544
                        echo $this->formLabel($element);
545
                        echo $this->formText($element);
546
                        ?>
547
                    </div>
548
                </div>
549
             	<div class="row">
550
	 	         	<div class="col-12 mt-3">
551
                        <?php
552
                        $element = $form->get('order');
553
                        $element->setOptions(['label' => 'LABEL_ORDER']);
554
                        $element->setAttributes(['class' => 'form-control']);
555
 
556
                        echo $this->formLabel($element);
557
                        echo $this->formNumber($element);
558
                        ?>
559
                    </div>
560
                </div>
561
                      	<div class="row">
562
	 	         	<div class="col-12 mt-3">
563
                        <?php
564
                        $element = $form->get('image');
565
                        $element->setOptions(['label' => 'LABEL_IMAGE']);
566
                        $element->setAttributes(['class' => 'form-control']);
567
 
568
                        echo $this->formLabel($element);
569
                        echo $this->formFile($element);
570
                        ?>
571
                    </div>
572
                </div>
573
            	<div class="row">
574
	 	         	<div class="col-12 mt-3">
575
                        <?php
576
 
577
                        $element = $form->get('status');
578
                        $element->setOptions(['label' => 'LABEL_STATUS']);
579
 
580
                        echo $this->formLabel($element);
581
                        echo '<br/>';
582
                        echo $this->formCheckbox($element);
583
                        ?>
584
                	</div>
585
                </div>
586
 
587
 
588
 
589
            </div>
590
            <div class="modal-footer text-right">
591
            	 <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
592
            	<button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
593
            </div>
594
             <?php echo $this->form()->closeTag($form); ?>
595
 
596
 
597
        </div>
598
    </div>
599
</div>
600
 
601
<!-- The Modal -->
602
<div class="modal" id="modal-edit">
603
    <div class="modal-dialog  modal-xl">
604
        <div class="modal-content">
605
 
606
            <!-- Modal Header -->
607
            <div class="modal-header">
608
                <h6 class="modal-title">LABEL_EDIT</h6>
609
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="btn-close"></button>
610
            </div>
611
 
612
                <?php
613
                $form = $this->formEdit;
614
                $form->setAttributes([
615
                    'method'    => 'post',
616
                    'name'      => 'form-edit',
617
                    'id'        => 'form-edit'
618
                ]);
619
 
620
                $form->prepare();
621
                echo $this->form()->openTag($form);
622
                ?>
623
            <div class="modal-body">
624
 
625
                <div class="row">
626
	 	         	<div class="col-12 mt-3">
627
                        <?php
628
                        $element = $form->get('name');
629
                        $element->setOptions(['label' => 'LABEL_NAME']);
630
                        $element->setAttributes(['class' => 'form-control']);
631
 
632
                        echo $this->formLabel($element);
633
                        echo $this->formText($element);
634
                        ?>
635
                    </div>
636
                </div>
637
              	<div class="row">
638
	 	         	<div class="col-12 mt-3">
639
                        <?php
640
                        $element = $form->get('code');
641
                        $element->setOptions(['label' => 'LABEL_CODE']);
642
                        $element->setAttributes(['class' => 'form-control']);
643
 
644
                        echo $this->formLabel($element);
645
                        echo $this->formText($element);
646
                        ?>
647
                    </div>
648
                </div>
649
				<div class="row">
650
	 	         	<div class="col-12 mt-3">
651
                        <?php
652
                        $element = $form->get('order');
653
                        $element->setOptions(['label' => 'LABEL_ORDER']);
654
                        $element->setAttributes(['class' => 'form-control']);
655
 
656
                        echo $this->formLabel($element);
657
                        echo $this->formNumber($element);
658
                        ?>
659
                    </div>
660
                </div>
661
                   <div class="row">
662
	 	         	<div class="col-12 mt-3">
663
                        <?php
664
                        $element = $form->get('image');
665
                        $element->setOptions(['label' => 'LABEL_IMAGE']);
666
                        $element->setAttributes(['class' => 'form-control']);
667
 
668
                        echo $this->formLabel($element);
669
                        echo $this->formFile($element);
670
                        ?>
671
                    </div>
672
                </div>
673
                <div class="row">
674
	 	         	<div class="col-12 mt-3">
675
                        <?php
676
 
677
                        $element = $form->get('status');
678
                        $element->setOptions(['label' => 'LABEL_STATUS']);
679
 
680
                        echo $this->formLabel($element);
681
                        echo '<br/>';
682
                        echo $this->formCheckbox($element);
683
                        ?>
684
                    </div>
685
                </div>
686
 
687
 
688
            </div>
689
            <div class="modal-footer text-right">
690
                    <button type="submit" class="btn btn-primary">LABEL_SAVE</button>
691
                    <button type="button" class="btn btn-light btn-cancel">LABEL_CANCEL</button>
692
         	</div>
693
        	<?php echo $this->form()->closeTag($form); ?>
694
 
695
 
696
        </div>
697
    </div>
698
</div>