PageSourceSearch

https://shabirally.com/Template/Banner/BannerDataController.js

js shabirally.com collected 2026-09-25 01:48:19 UTC 26,185 bytes, 713 lines download raw bytes

1AskTheScholarApp.controller("BannerDataController", function ($rootScope, $location, $scope, $http, $window, BannerDataServices, AppConstant, AskTheScholarAPIStrings, Constants) {
2
3    //form load check whether the token is present in cache. if yes, allow the user to 
4    //go to dashboard.
5    var token = data = JSON.parse(window.sessionStorage.getItem('token'));
6    var expiresAt = JSON.parse(window.sessionStorage.getItem('expiresAt'));
7    var userName = JSON.parse(window.sessionStorage.getItem('UserName'));
8
9    if (token == null || token == undefined
10        || expiresAt == null || expiresAt == undefined
11        || userName == null || expiresAt == userName) {
12
13        $rootScope.LoginErrorMessage = Constants.loginTokenEmptyError;
14        $rootScope.MessageType = Constants.Error;
15
16        //redirect to login page.
17        $location.path('/login');
18    }
19    else {
20
21        //we have the token in cache. but check whether its still valid or not
22        //by checking the expiry datetime.
23        if (IsTokenValid(moment(expiresAt))) {
24
25            //store it in scope.
26            $scope.token = token;
27            $scope.expiresAt = expiresAt;
28            $scope.LoggedInUserName = userName;
29        }
30        else {
31            $rootScope.LoginErrorMessage = Constants.sessionExpiredError;
32            $rootScope.MessageType = Constants.Error;
33            //redirect to login page.
34            $location.path('/login');
35        }
36    }
37
38    //clear the querystring if any.
39    $location.url($location.path());
40
41    $rootScope.$emit("SetLoggedInUserDetailsMethodNew", {});
42
43    //hide error & success messages.
44    HideAlert('#SuccessMessageDiv');
45    HideAlert('#ErrorMessageDiv');
46    HideAlert('#ModalErrorMessageDiv');
47    HideAlert('#ModalErrorMessageDivForEdit');
48
49    $scope.mainTypesDDLList = [];
50
51    $scope.BannerData = {
52        BannerDataId: 0,
53        Title: '',
54        Url: '',
55        ImagePath: '',
56        PageId: 0
57    };
58
59    BindBannerGrid($scope.token);
60
61    function BindBannerGrid(token) {
62
63
64        var newOptions = {
65            BannerDataId: 0,
66            Title: '',
67            Url: '',
68            ImagePath: '',
69            PageId: 0
70        };
71
72        var RouteURL = AppConstant.BaseServiceURL;
73
74        var deleteAPI = RouteURL + AskTheScholarAPIStrings.DeleteBannerData + '/' + Constants.WebCustomerId;
75
76        var getBannerDataURL = RouteURL + AskTheScholarAPIStrings.GetBannerData + '/' + Constants.WebCustomerId,
77
78
79            dataSource = new kendo.data.DataSource({
80                transport: {
81                    read: {
82                        url: getBannerDataURL,
83                        contentType: "application/json",
84                        type: 'GET',
85                        beforeSend: function (req) {
86                            req.setRequestHeader('Authorization', 'Bearer ' + token);
87                        }
88                    },
89                    destroy: {
90                        url: deleteAPI,
91                        contentType: "application/json",
92                        type: 'GET',
93                        beforeSend: function (req) {
94                            req.setRequestHeader('Authorization', 'Bearer ' + token);
95                        }
96                    },
97                    parameterMap: function (options, operation) {
98
99                        if (operation !== "read" && options.models) {
100                            return { models: kendo.stringify(options.models) };
101                        }
102                    }
103                },
104                batch: true,
105                pageable: true,
106                pageSize: Constants.GridPageSize,
107                requestEnd: function (e) {
108
109                    if (e.type != 'read') {
110                        ReloadtheMainGrid();
111                    }
112
113                    var response = e.response;
114                    if (response != null || response != undefined) {
115                        if (response == 'Banner Deleted Successfully') {
116                            HideAlert('#ErrorMessageDiv');
117                            SetText('#SuccessMessageDiv', response);
118                            ShowAlertMessage('#SuccessMessageDiv');
119                        }
120                    }
121
122                },
123                schema: {
124
125                    data: "ReturnedResult.Data",
126                    total: "ReturnedResult.itemCount",
127                    model: {
128                        id: "BannerDataId",
129                        fields: {
130                            BannerDataId: { editable: false, nullable: false },
131                            PageId: { editable: false, nullable: false },
132                            Title: { editable: true, nullable: false },
133                            Url: { editable: true, nullable: false },
134                            PageName: { editable: true, nullable: false },
135                            ImagePath: { editable: true, nullable: false }
136                        }
137                    }
138                },
139
140            });
141
142        $("#grid").kendoGrid({
143            dataSource: dataSource,
144            //hide the pager control if number of records are less
145            dataBound: function (e) {
146
147                if (e.sender.dataSource.total() <= e.sender.dataSource.pageSize()) {
148                    e.sender.pager.element.hide();
149                } else {
150                    e.sender.pager.element.show();
151                }
152            },
153            noRecords: {
154                template: "No data available."
155            },
156            toolbar: [
157                { template: "<label><b>Banner Data</b></label>" }
158            ],
159            pageable: true,
160            //height: 450,
161            columns: [
162                //{ field: "ResourceId", title: "Resource Id", width: "30px" },
163                {
164                    field: "Title", title: "Banner Title", width: "10%",
165                    filterable: {
166                        cell: {
167                            operator: "contains",
168                            template: function (args) {
169                                args.element.css("width", "100%").addClass("k-textbox").keydown(function (e) {
170                                    setTimeout(function () {
171                                        $(e.target).trigger("change");
172                                    });
173                                });
174                            },
175                            showOperators: false
176                        }
177                    }
178                },
179                {
180                    title: "Banner Image",
181                    width: '10%',
182                    attributes: { style: "text-align:center;" },
183                    template: "<image src=\'#=ImagePath #\' style='width:300px; height:30px;' title='Choosed Image' />"
184                    , filterable: false
185                },
186                {
187                    field: "Url", title: "Banner URL", width: "10%",
188                    filterable: {
189                        cell: {
190                            operator: "contains",
191                            template: function (args) {
192                                args.element.css("width", "100%").addClass("k-textbox").keydown(function (e) {
193                                    setTimeout(function () {
194                                        $(e.target).trigger("change");
195                                    });
196                                });
197                            },
198                            showOperators: false
199                        }
200                    }
201                },
202                {
203                    field: "PageName", title: "Page Name", width: "10%",
204                    filterable: {
205                        cell: {
206                            operator: "contains",
207                            template: function (args) {
208                                args.element.css("width", "100%").addClass("k-textbox").keydown(function (e) {
209                                    setTimeout(function () {
210                                        $(e.target).trigger("change");
211                                    });
212                                });
213                            },
214                            showOperators: false
215                        }
216                    }
217                },
218                {
219                    title: "",
220                    width: "5%",
221                    attributes: { style: "text-align:center;" },
222                    template: "<button type='button' class='form-btn_ForGrid'  onclick=\"EditBannerData(\'#=BannerDataId #\',\'#=PageId #\',\'#=PageName #\',\'#=Title #\',\'#=Url #\',\'#=ImagePath #\')\">Edit</button> "
223                    , filterable: false
224                },
225                { command: [{ className: "form-btn_ForGrid", name: "destroy", text: "" }], width: "5%" }],
226            editable: "popup",
227            filterable: true
228        });
229
230    }
231
232
233    function ReloadtheMainGrid() {
234        var grid = $("#grid").data("kendoGrid");
235        if (grid != null) {
236
237            var currentPage = grid.dataSource.page();
238            var count = grid.dataSource.view().length;
239            grid.dataSource.read();
240            if (count <= 1)
241                grid.dataSource.page(currentPage - 1);
242        }
243    }
244
245    $scope.InsertNewBanner = function () {
246
247        $scope.BannerData.Title = '';
248        $scope.BannerData.Url = '';
249        var upload = $("#NewBannerImageUploader").data("kendoUpload");
250        upload.clearAllFiles();
251
252        bindDropdowns("#PageList", $scope.token);
253        $('#InsertBannerModal').modal(
254            {
255                show: true,
256                backdrop: 'static',
257                keyboard: false
258            });
259    };
260
261    $scope.EditBannerData = function (BannerId, pageId, pageName, title, url, imagePath) {
262
263        $scope.BannerData.BannerDataId = BannerId;
264        $scope.BannerData.Title = title;
265        $scope.BannerData.Url = url;
266        $scope.BannerData.ImagePath = imagePath;
267        $scope.BannerData.PageId = pageId;
268
269        bindDropdowns("#PageListForEdit", $scope.token);
270
271        $('#EditBannerModal').modal(
272            {
273                show: true,
274                backdrop: 'static',
275                keyboard: false
276            });
277    }
278
279    LoadNewBannerImageUploader();
280
281    function LoadNewBannerImageUploader() {
282        $("#NewBannerImageUploader").kendoUpload(
283            {
284                multiple: false,
285                validation: {
286                    allowedExtensions: [".gif", ".jpg", ".png", ".jpeg"],
287                    maxFileSize: 4194304
288                },
289                localization: {
290                    select: "Select File",
291                },
292                select: function (event) {
293                    var notAllowed = false;
294                    $.each(event.files, function (index, value) {
295
296                        if ((value.extension !== '.gif') && (value.extension !== '.jpg') && (value.extension !== '.png')
297                            && (value.extension !== '.jpeg')) {
298
299                            //HideAlert('#SuccessMessageDiv');
300                            //set error message
301                            SetText('#ModalErrorMessageDiv', 'File Type is not supported');
302                            //show error message.
303                            ShowAlertMessage('#ModalErrorMessageDiv');
304
305                            window.scrollTo(0, 0);
306
307                            notAllowed = true;
308                        }
309
310                    });
311                    var breakPoint = 0;
312                    if (notAllowed == true) event.preventDefault();
313                }
314            }
315        );
316    }
317
318    LoadEditBannerImageUploader();
319
320    function LoadEditBannerImageUploader() {
321        $("#EditBannerImageUploader").kendoUpload(
322            {
323                multiple: false,
324                localization: {
325                    select: "Select File",
326                },
327                validation: {
328                    allowedExtensions: [".gif", ".jpg", ".png"],
329                    maxFileSize: 4194304
330                }
331            }
332        );
333
334        $("#PageListForEdit").kendoDropDownList({
335            enable: false
336        });
337    }
338
339    function bindDropdowns(DropdownId, token) {
340
341
342
343        var jsonData = {};
344        var finalObj = [];
345        var actualData = {};
346        var s = '';
347        var promise = BannerDataServices.GetPageMasterData(token); //call service function to call API
348
349        promise.then(
350            function (response) {
351
352                $scope.mainTypesDDLList = [];
353
354                if (response != null) {
355
356                    pageList = response.data.ReturnedResult;
357                    if (pageList != null) {
358                        for (var i = 0; i < pageList.length; i++) {
359
360                            $scope.mainTypesDDLList.push(
361                                {
362                                    text: pageList[i].PageName,
363                                    value: pageList[i].PageId
364                                });
365                        }
366                    }
367
368                    var dropdownlist = $(DropdownId).data("kendoDropDownList");
369                    if (dropdownlist != null) {
370                        dropdownlist.value("");
371                    }
372
373                    // create DropDownList from input HTML element foe main Category
374                    $(DropdownId).kendoDropDownList({
375                        dataTextField: "text",
376                        dataValueField: "value",
377                        enable: true,
378                        dataSource: $scope.mainTypesDDLList,
379                        index: 0
380                        //change: onChange
381                    });
382                    if (DropdownId === "#PageListForEdit") {
383                        var EditDropdownList = $("#PageListForEdit").data("kendoDropDownList");
384                        if (EditDropdownList != null) {
385                            EditDropdownList.value($scope.BannerData.PageId);
386                        }
387                    }
388                }
389                else {
390                    //Error
391                    alert('No response');
392                }
393
394
395            })
396    }
397
398    var files;
399    $scope.SaveNewBanner = function () {
400
401        var isValid = true;
402        var message = "Please fix all the errors :" + '<br>';
403
404        var upload = $("#NewBannerImageUploader").data("kendoUpload");
405        if (upload.getFiles().length === 0) {
406            message = message + "Banner image is mandatory" + '<br>';
407            isValid = false;
408        }
409
410        if ($scope.BannerData.Title === '') {
411            message = message + " Title is Mandatory" + '<br>';
412            isValid = false;
413        }
414
415        if ($scope.BannerData.Url === '') {
416            message = message + "URL is Mandatory" + '<br>';
417            isValid = false;
418
419        }
420        if (isValidUrl($scope.BannerData.Url) == -1 && $scope.BannerData.Url !== '') {
421
422            message = message + "Navigation URL is invalid" + '<br>';
423            isValid = false;
424        }
425
426        if (isValid === false) {
427
428            HideAlert('#SuccessMessageDiv');
429            //set error message
430            SetHtml('#ModalErrorMessageDiv', message);
431
432            //show error message.
433            ShowAlertMessage('#ModalErrorMessageDiv');
434
435            isValid = false;
436            //editor.focus();
437
438            window.scrollTo(0, 0);
439
440            return;
441        }
442        if (isValid) {
443
444            $("#confirm").kendoConfirm({
445                title: 'Save Banner',
446                content: 'Are you sure to save the new banner?',
447                messages: {
448                    okText: 'Yes',
449                    cancel: 'No'
450                }
451            }).data("kendoConfirm").result.done(function () {
452                //kendo.confirm("Are you sure, to Save new Banner").then(function () {
453
454                //show loading animation
455                displayLoading(true);
456
457                //set the values to the model.
458                var PageNameDropdown = $("#PageList").data("kendoDropDownList");
459
460                if (PageNameDropdown != null) {
461
462                    var pageId = PageNameDropdown.value();
463                    $scope.BannerData.PageId = pageId;
464                }
465                else {
466                    $scope.BannerData.PageId = null;
467                }
468
469                //get the upload control and get the file names
470                var upload = $("#NewBannerImageUploader").data("kendoUpload");
471
472                if (upload != null) {
473
474                    var fileList = upload.getFiles();
475
476                    if (fileList != null) {
477                        files = fileList[0];
478                    }
479                }
480
481                //get the form object
482                var form = document.getElementById('NewBannerForm');
483
484                formData = new FormData(form);
485                var name = '';
486                if (files != null) {
487                    name = files.name;
488                }
489
490                //embedd the values
491                var encodedStr = name;
492                var parser = new DOMParser;
493                var dom = parser.parseFromString(
494                    '<!doctype html><body>' + encodedStr,
495                    'text/html');
496                var decodedString = dom.body.textContent;
497                formData.append("BannerDataObject", kendo.stringify($scope.BannerData));
498                formData.append("FileName", decodedString);
499
500                var promise = BannerDataServices.InsertBannerData(formData, $scope.token);
501
502                promise.then(
503                    function (response) {
504                        //hide the loading
505                        displayLoading(false);
506
507                        if (response.data.Status == 0) {
508
509                            var msg = response.data.ReturnedResult;
510
511                            if (msg.indexOf('data saved successfully') != -1) {
512
513                                HideAlert('#ErrorMessageDiv');
514
515                                SetText('#SuccessMessageDiv', response.data.ReturnedResult);
516                                ShowAlertMessage('#SuccessMessageDiv');
517                                $scope.BannerData.Title = '';
518                                $scope.BannerData.Url = '';
519                                var grid = $("#grid").data("kendoGrid");
520                                if (grid != null) {
521                                    grid.dataSource.read();
522                                }
523
524                                clearUploadControl("#NewBannerImageUploader");
525
526                                $('#InsertBannerModal').modal('toggle');
527
528                            }
529                        }
530                        else {
531
532                            if (response.data.ReturnedResult != null || response.data.ReturnedResult != undefined) {
533                                var msg = response.data.ReturnedResult;
534
535                                if (msg.indexOf('Record exists for the selected page') != -1) {
536
537                                    SetText('#ModalErrorMessageDiv', msg);
538                                    ShowAlertMessage('#ModalErrorMessageDiv');
539                                }
540                            }
541                            else {
542                                //show this error in modal pop's error div
543                                SetText('#ModalErrorMessageDiv', Constants.technicalError);
544                                ShowAlertMessage('#ModalErrorMessageDiv');
545                                //Constants.technicalError //this contains the technical error message
546                            }
547                        }
548                    })
549
550                $('body').append($('<div id="confirm">'));
551
552            }).fail(function () {
553                $('body').append($('<div id="confirm">'));
554            });
555        }
556    }
557
558    $scope.UpdateBanner = function () {
559
560        var isValid = true;
561        var message = "Please fix all the errors :" + '<br>';
562
563        //var upload = $("#EditBannerImageUploader").data("kendoUpload");
564        //if (upload.getFiles().length === 0) {
565        //    message = message + "Banner image is mandatory" + '<br>';
566        //    isValid = false;
567        //}
568
569        if ($scope.BannerData.Title === '') {
570            message = message + " Title is Mandatory" + '<br>';
571            isValid = false;
572        }
573
574        if ($scope.BannerData.Url === '') {
575            message = message + "URL is Mandatory" + '<br>';
576            isValid = false;
577
578        }
579        if (isValidUrl($scope.BannerData.Url) == -1 && $scope.BannerData.Url !== '') {
580
581            message = message + "Navigation URL is invalid" + '<br>';
582            isValid = false;
583        }
584
585        if (isValid === false) {
586
587            HideAlert('#SuccessMessageDiv');
588            //set error message
589            SetHtml('#ModalErrorMessageDivForEdit', message);
590
591            //show error message.
592            ShowAlertMessage('#ModalErrorMessageDivForEdit');
593
594            isValid = false;
595            //editor.focus();
596
597            window.scrollTo(0, 0);
598
599            return;
600        }
601        if (isValid) {
602
603
604            $("#confirm1").kendoConfirm({
605                title: 'Save Banner',
606                content: 'Are you sure, to Update existing Banner?',
607                messages: {
608                    okText: 'Yes',
609                    cancel: 'No'
610                }
611            }).data("kendoConfirm").result.done(function () {
612
613                //kendo.confirm("Are you sure, to Save new Banner").then(function () {
614
615                //show loading animation
616                displayLoading(true);
617
618                //set the values to the model.
619                var PageNameDropdown = $("#PageListForEdit").data("kendoDropDownList");
620
621                if (PageNameDropdown != null) {
622
623                    var pageId = PageNameDropdown.value();
624                    $scope.BannerData.PageId = pageId;
625                }
626                else {
627                    $scope.BannerData.PageId = null;
628                }
629
630                //get the upload control and get the file names
631                var upload = $("#EditBannerImageUploader").data("kendoUpload");
632
633                if (upload != null) {
634
635                    var fileList = upload.getFiles();
636
637                    if (fileList != null) {
638                        files = fileList[0];
639                    }
640                }
641
642                //get the form object
643                var form = document.getElementById('EditBannerForm');
644
645                formData = new FormData(form);
646                var name = '';
647                if (files != null) {
648                    name = files.name;
649                }
650
651                //embedd the values
652                var encodedStr = name;
653                var parser = new DOMParser;
654                var dom = parser.parseFromString(
655                    '<!doctype html><body>' + encodedStr,
656                    'text/html');
657                var decodedString = dom.body.textContent;
658                formData.append("BannerDataObject", kendo.stringify($scope.BannerData));
659                formData.append("FileName", decodedString);
660
661                var promise = BannerDataServices.UpdateBannerData(formData, $scope.token);
662
663                promise.then(
664                    function (response) {
665                        //hide the loading
666                        displayLoading(false);
667
668                        if (response.data.Status == 0) {
669
670                            //show this success message in base page's success div
671                            //response.data.ReturnedResult //this contains the success message
672
673                            HideAlert('#ErrorMessageDiv');
674
675                            SetText('#SuccessMessageDiv', response.data.ReturnedResult);
676                            ShowAlertMessage('#SuccessMessageDiv');
677                            $scope.BannerData.Title = '';
678                            $scope.BannerData.Url = '';
679                            var grid = $("#grid").data("kendoGrid");
680                            if (grid != null) {
681                                grid.dataSource.read();
682                            }
683
684                            clearUploadControl("#EditBannerImageUploader");
685
686                            $('#EditBannerModal').modal('toggle');
687                        }
688                        else {
689                            if (msg2.indexOf('Record is empty!!') != -1) {
690                                SetText('#ModalErrorMessageDivForEdit', 'Could not get related Record');
691                                ShowAlertMessage('#ModalErrorMessageDivForEdit');
692                            }
693                            else {
694                                SetText('#ModalErrorMessageDivForEdit', Constants.technicalError);
695                                ShowAlertMessage('#ModalErrorMessageDivForEdit');
696                                //Constants.technicalError //this contains the technical error message
697                            }
698                            //show this error in modal pop's error div
699
700                        }
701                    })
702
703
704                $('body').append($('<div id="confirm1">'));
705
706            }).fail(function () {
707                $('body').append($('<div id="confirm1">'));
708            });
709            //});
710        }
711    };
712
713});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.